12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012 |
- var hTe=Object.defineProperty;var uTe=(s,e,t)=>e in s?hTe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var or=(s,e,t)=>(uTe(s,typeof e!="symbol"?e+"":e,t),t);import{bm as Gr,o as mTe,_ as pTe,a as gTe,b as fTe,c as bTe,d as UTe,e as FTe,g as ATe,h as ZTe,i as STe,j as NTe,k as RTe,l as VTe,m as WTe,n as yTe,p as QTe,q as MTe,r as wTe,s as TTe,t as CTe,u as BTe,v as LTe,w as vTe,x as kTe,y as xTe,z as ITe,A as ETe,B as DTe,C as GTe,D as JTe,E as XTe,F as YTe,G as _Te,H as zTe,I as OTe,J as jTe,K as PTe,L as HTe,M as KTe,N as qTe,O as $Te,P as eCe,Q as tCe,R as iCe,S as nCe,T as sCe,U as oCe,V as rCe,W as lCe,X as aCe,Y as dCe,Z as cCe,$ as hCe,a0 as uCe,a1 as mCe,a2 as pCe,a3 as gCe,a4 as fCe,a5 as bCe,a6 as UCe,a7 as FCe,a8 as ACe,a9 as ZCe,aa as SCe,ab as NCe,ac as RCe,ad as VCe,ae as WCe,af as yCe,ag as QCe,ah as MCe,ai as wCe,aj as TCe,ak as CCe,al as BCe,am as LCe,an as vCe,ao as kCe,ap as xCe,aq as ICe,ar as ECe,as as DCe,at as GCe,au as JCe,av as XCe,aw as YCe,ax as _Ce,ay as zCe,az as OCe,aA as jCe,aB as PCe,aC as HCe,aD as KCe,aE as qCe,aF as $Ce,aG as e2e,aH as t2e,aI as i2e,aJ as n2e,aK as s2e,aL as o2e,aM as r2e,aN as l2e,aO as a2e,aP as d2e,aQ as c2e,aR as h2e,aS as u2e,aT as m2e,aU as p2e,aV as g2e,aW as f2e,aX as b2e,aY as U2e,aZ as F2e,a_ as A2e,a$ as Z2e,b0 as S2e,b1 as N2e,b2 as R2e,b3 as V2e,b4 as W2e,b5 as y2e,b6 as Q2e,b7 as M2e,b8 as w2e,b9 as T2e,ba as C2e,bb as B2e,bc as L2e,bd as v2e,be as k2e,bf as x2e,bg as I2e,bh as E2e,bi as D2e,bj as G2e,bk as J2e,bl as X2e,f as Y2e}from"./f41-b49fdff6.js";import{_ as gp,r as X,G as $F,i as ul,A as ll,o as he,b as $e,e as re,H as aUe,I as HE,D as It,w as B,J as wc,F as zt,d as M,K as HM,f as W,q as An,t as bs,M as Rd,j as vi,N as dUe,O as Ene,P as hy,a as At,s as es,k as Xt,Q as _2e,S as z2e,T as O2e,U as j2e,V as P2e,m as Is,n as gn,E as Ai,g as Qt,B as ln,l as Kt,W as Es,z as H2e,X as yJ,v as us,C as Ln,Y as K2e,Z as q2e,$ as uy,c as i3,a0 as Dne,p as n3,h as s3,a1 as ii,a2 as $2e,a3 as eBe,a4 as Fae,u as tBe}from"./index-604327a1.js";import{m as iBe}from"./header-80d858fb.js";import{r as Dn}from"./request-32eaa594.js";import{f as MO,a as nBe}from"./f22-deb38015.js";import{P as sBe,u as Gne,_ as cUe,a as EU,b as DU,M as Aae,c as oBe}from"./vue-flow-core-296bd702.js";import{_ as rBe}from"./vue-flow-background-8a37d19c.js";const hUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAKdJREFUOE9jZKAQMBKj//+1IHmG3wwzGN6982V0PPAHWQ9BA6CadzD8ZyxgNFi7E91CvAYQ0gwyDKcBxGjGaQCxmrEaQIpmDAP+73dgYRASuowrwLDFGEoY/N/vwMEgJHSagZkhg1Fn3VFiohgjEP+fD1BgYGLaTKwhWGOBFENwRyORLsGfkIgwhHBSJmAIQQNAMQENk+UM797ZkpyZYFEJSiPomkFyAM83WhGVK0eFAAAAAElFTkSuQmCC",uUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABCBJREFUaEPtWktoU1kY/pIxiwTagnFRsSnSYqUqNFlYbQULnVYQquITVLBToRBdKAR00w5WTDcthJnVBF2kXeiiPopOGaEvULDVbpqArZihQWykXZhFU0igj8T5zniusU2mtwnppHjP6j7OOf/3+M9/uA8dNnnTbXL8WEVgZ3Ov9SfAmovElgHvh3snvYnYviOw0/70lj6OtlwELzHF4mj7cPfEbXmuENh1tde6vKwfbz23F021pTnJwTM0BefDCcRiMZt0QiFQ2tz7S1yv90y5j+ckeAmq1P4MulisaereyS5e0whstF2aAxut+Mp4mgOaAxkqoKVQhgJmPFxzIGMJM5zgx3JgwDuLft+M0Oxg2TacrrIo+k0G5+AZCijnBUYDyi0FOFJRiDyTIUOdUw9flwM3u8fxeHRazHagbBseOKqVmV/7P+Oia2RVpCKzCe4r+1FeVJAVEusiYHX8hXyjATroEAxF4HUdVdRNJHDfUY1PoQh+73uPT6Eo8k0GvHTWZcUJ1QQkwHprIfKMBjwZnUbruX1oqi0RyiYSkM8Q4cgiDrcOYD6ypPQlsRvdXsxHFnGq2gKmJR+a9qTpkGoCMn0Imi7wPDGNkhEgMfsfYxjwzeJUlQWdjTbc6XmLruEAOhptCEcX4OyZwAPHIRwoM6eVYqoJ1LQMirT5s7UGRVtNsDmei4AyjVIRuNE9Ltwi2c5GKy64RhCOLgpCVJ1CSAJv/CF4hgPIN27B9Ybd2GE2geOPVGwHnV95fKaqGBdcr9Z+IksEx8BsA74ZkRpUktUoFQEGIDAC+PXsPpx3vcJ8dGkVgTzTFhxzvhDX3/g/i3XW11KD864RlFvycbm2BA3t/96XxySuioC0PZnHBOa2VyYlwHw/3DIohnU0WnG6qlioOOYP4UV7naho0oF+74xILa4fKQbFmZyew6BvFtcaduPx6Ee8C4bRcckGu3tM9FWVQjJ9uNjqK7YLQNwP2nsmlAozEZxTyiiV4b7QNRQQabfDbBRpwpKaisCj0Y8C6LjrqEKA5RdxnQDLNcI09AxPCQysbizjaxJ42V6nqEjVCIKNFUauA4KLI550HyB495VKpcokEpBKM98ry8xiPNPx3XQYc9EFQZoFg3FYilmenT1vRUrSEY5bkwBZPvq6ebGKJDbWeSrM3XaPpQC/9b1XbjMwr9VXFIrgsjENJoNhsR7YSIj3ec57/b5ZAZrgpFgyDuOzz2t/CE0/lwhR1iSgvRdKq7qrH6Q5oF6r7PTUHMiOrupn1RxQr1V2emoOZEdX9bNqDqjXKjs9NQeyo6v6WVM68O0z67c3D+qn3ZiefLjhS4Gkn1kJocT+tO2fJ5VbGwMnzShx3A7cPaF8jF/1q8Gu5l5rLEd/NdAD3r//61eDNDX5X4dt+r9VvgA4S3VeaoBRVAAAAABJRU5ErkJggg==",mUe=""+new URL("MathFunc-d72e169d.png",import.meta.url).href,pUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7lJREFUaEPtWk1IG1EQHlMVEjAe4kFRi0TU/oHrpVYLpqg5CFIRwYM9aA7S1EOFQHtJQIX04iHQk6KH1EM9WGywWgqNCh6qNT0kQi1tSkSqUg/mYIQItW7KjL7tRmO6zS4hwj6QZPfNzJvvm+/NI+5mwSUfWZc8fzgHoKzXw10B4DIR2DFAYHO8PSDOLQ5AmXVmQBODwUxMnuXEx2Bwc6xtiF0LACr6PNzxscbv6LwJlsbyjMTgXgiB89U68DxfwyohACjv9fTENBp3aPR+RibPkiq3voEsnreExttf4D0VQLrLpVYg3YyfXU+tgFoBmQyoEpJJoGx3tQKyKZQZQK2ATALJ/SB6BHm6nAtD4TyORDaSKrAdjsID13LSXHuajGBpNJKNc+ozeNd26fv1Uj2MWm+f88Wk3Isb9Bc5TfBGST5gnI66UrJfDYbh+dw3WA3u0bVelwPm6kLob62CYoOO7kkGYLLPJwXwuLWKAuNAWwSdp8uGg+hvCLha4tjbCUehy7VMNjhKDDrYP/xFtsUGLby134P3a7vwdMJ/ynw25GtzBXvxbxRJAMSZ46IMzHB3jcAWs/kY3KNqIfN6bQ6xiMAQIBtigFidO5UFNDW98gNqKwsIkHXER1VE1peczfSJa2M1OuquCrEUB4CsTa9skZyKC7TgnFqnpCZt9bQoA4jfh7u5uGTERD2Z8MPrlS26hZISy0ZspzgAxu6k7S7JgVULr2srDQSOSWPWYQLUfaKBbHe5PsBO+FCYRiIQDNsjkveAVAl5A7tgHfVRuWftJnJDOWEyTEZSAaAv+qGs0EcMBAGgfBUHwHSbiFEE5Xe1xEnI0XlL6FxJO8Sp9LByDAhrDIpJCFthje0d5WHmCiFPe9LXI4dHMB84aalMRg12LyWCoObsJqElItt6bS75Y6dyL2yApckozLP9hbEUByCWxtKzZuokBCB6BA0OL7VI3NjI+pftfdI33sOBtggUbRHUS1s9PBr5FNdmmaTwk8VJWULsUMN+bK4uoiSwa/iC4YQH18MRH3zdjlBbxY3LksFDyrv2UwCCmxyTM3NFlDw7xJhs8FzB+f7Wa4Li/ltC/9JqKvOM+Yt82UmN1Tk7MgJAKqCZjwpADntK+KoVUIJFOTHUCshhTwlftQJKsCgnhloBOewp4atWQAkW5cS4sAJ/H7NK/9UkJ5FUfN2LIfqnQcLHrBjQaJ0ZhBgMpBI8bT4xGNoYaxMexp971aCi18PxGfqqgQYg8D3ZqwZpY1HBhS792yp/AKlYS16p/QUbAAAAAElFTkSuQmCC",gUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAACBCAYAAADnoNlQAAAAAXNSR0IArs4c6QAACrhJREFUeF7tnUtslFUUx88AFZmkDymJD1ozaJBAfLSLYqsJFIWFplEj6gIxpSurGC0kuKFKiSUxkJRHBLrroMaFiDHa4KIg1ESgdTHVIEgJMrHFR9JiKUkrtNMxZ+Az02/u65s7c+fO1/Pt4LuPc//n951zXzABoGfGKxCY8QqQAEAQEAQEATEABAFBQBAQA0AQEARaEDSeDpGCFinQXhNN1xr11UFTpARu3NgAs2Y/DwC16XZI9bKoQDyOIJyEqdh28ACFGgRNkRBMxE4AxEO1iwvhhUdLoDg4J4ujoabTUaC7fxROXrwO0as3AeLQAgeqtqu0I4fgNgCh+QWhjtcWAUJAj90KtBz9A7Yf/QNgKrYJDlbvkVkrh2Bjbzg0f279iXeWQKh0rqw9em+JApuODMCeE38DxOOVcGB5n8gsMQRv9lZAIBAJrw9BffUCS4ZHZqgoMDIeg0Xv/wwjY5NhOLC8QQOCnpaSYMG2f3ZVqvRLZSxT4HY0GIH9VXelD8HG3nDt4qJEKqAn/xQI9wxDwyeXAWKTi0SrBXE6IAjyz/NJFndfvA61ey8QBHntRU3jCQJNAf1QnSDwgxc1x0AQaAroh+oEgR+8qDkGgkBTQD9UJwj84EXNMRAEmgL6oTpB4Acvao6BINAU0A/VCQI/eFFzDASBpoB+qE4Q+MGLmmMgCDQF9EN1gsAPXtQcA0GgKaAfqhMEfvCi5hgIAk0B/VCdIPCDFzXHQBBoCuiH6gSBH7yoOQaCQFNAP1QnCPzgRc0xEASaAvqhOkHgBy9qjoEg0BTQD9UJAj94UXMMBIGmgH6oThD4wYuaYyAINAX0Q3WCwA9e1BwDQaApoB+qEwR+8KLmGKyFYHB4TDi0stKg5tCpuqOAtRCs3HoMRCA0v/IwNDz1AHkyAwpYCcGZ/iF4te2UcHiPP7QAPtv8RAYkoCashODdQxE4cnpA6p2+tmegMFggLUcFxApYCYEsFThD2llfCWtrysnHmgpYB8H5gWtQt6NbaViUEpRkkhayDoIPPj8L4e9+m2b40vIiKJsfhK6f/pr290XBAvi+dTWlBKmb8ywd1LV2w/nBa9OsfrGmHJaVF0Hr57+kjOazzU/C4w+Vpi1DT/8wnBu8BucGbvVZPK8AFi4IwrKyYuV2r49NwLXxiRQb3MtYLPfFmYH/+8L3L9WUw0LJctdtI3a0rLzYk40igayKBFeGx2DF1mMp9u6sr0gMmJUmcJmIy0WvD048O47/lgJccjvopOaXH4Y1FfcIm99yKAJfuiayWLd7x+pEPXT+3s4L0OGKcPiu/Y0qWPPYvcz2992uMzqWCphTAft5u26J1tzIKgjQMbgycD/fNK9MQFCx+ShcH5tMSQmRtmeUGUDQthzqg57+IeU679QtSQjNe1gQYNlL7c8lAFjXdioRbViPM7bkd2gj1pFtmLmBxSWzLKqwbLAKgnVtPwCGvuQH877j5MaDvSnzAiyrmhLSEdexRQQCDwKMBK2Hz0JX3/S5jNNm8ticv8NUiACIvn4ejNgegrC0rFgZcCxoDQS8VIChuL1xeWJQHd9dYs4LVFOC6tKTpyAPNh4EuHwV7Xe4Vzc6kCanB68RwRoIeKkgeXuYt3xMzr88B+7t/BX2dfYzXxcG58Da6vsTky0MwUdO/w5XhsdTyvKWpDwIZJ+jG17ZJhmOc2HpvESUOD84ym3e69LZGghUQz1rXiBLCbwog/Xwa8XJH4ZS50GRMTWxhGbtUqpAgKCh09dU3JoEDg6NQXGwANBh+Ii2yrEuRsPq22WxfFffn7Dl40jKHMkZg2qKtCYdoOiVm79NIZuVM3mCi3I2LwrgV/X9jjXML4rnFNbBlQyCpWVFiXlLMmjuTkVRAFdHa2vuT7Gz4/glaD2cumzGgl6igRWRACdOje29KYNMng84L3nzAtGgWXsP2B5PXKcv1hwC9yx21U//mR8RBAgaAiA7+uZFOBGoaCevHusD4uUPKyDgfQUsJ2HORuewHpyNs8R+sPFrZnlc9omcg+t09zKNBZsIAhloaJhoq5z1ISQPRtQ3a/nJ1M2GXz7h0cxzKq88K1SLoJFN3FjvWZNQkSNwr0D28CIh1kNQMdXxHl5kxPKijajk9nIeCUQTIt5XOjo+wVxHs75SlbsJMiclv88GBLyVEfYruzwjqqt6yppzCGTLIi8OwrLu2XumIfCaDlQiwYyHQHcDxw2Jm/5MpwNWjqZ0gF5I8yfxvNwdUI0I7i+Vt/z0kjNlfetCINKBtRpJtkcUSVX3CnKaDlh3B2SCy96z7hjwog1uFGHk0H10IUBQVzR3MTd+ZEs9USRVSUU49pxCwFu/r664R3qTGE8BedvA7i9ABFtn80rPBy5uaHQhwPZYh2dOP7wvWjSXyIvNItFWrsrSRhTm3SFUtgIRHbjgUTDeA8AtX96l1kxA4NVG2WGTyv6EA1nOIoFofat6i5gXClkh9PX2XjjGOdJFMXBPH28o4b0FBGzw6lhiP7+3fzjx53SOkrFd1ZAsiwaOjYXz5iQOt0T3IWS7jO5IljMIeOHPSxgThXl3CEVH1u04yTwdVJkTiO4zZiISoA24kkEb3RdnVOxzyuBhU+fWWuk2dc43i0SpQPVuAA5CtNPGagdv9yB86Yrc8PQDiRPHbMwJnDbxGPvdQ31e/D6trJc0kNN0IJrQqC5rcACieQHvjgF+bQgC676ATHkeoJmKBE7/eEz8weGznmxkHTfLxpNTCHh3B7zmUFkeFQGFx8sIowwG58IJbhIln+cnC5xpCJzUgJdT3RdY3Y5F+/Ci6nuuOxGqAGC5nMwJcMLFejDv4sTMy4NXxfEsgfVgW6IzfKyDtmBawYkgrgTwwVUA/jsHnCii42VtiGzggaM6RoxcOAk8NzA67WY0XijFa/h4I0pmn6yvnEAgM4rem1WAIDCrt5W9EQRWusWsUQSBWb2t7I0gsNItZo0iCMzqbWVvBIGVbjFrFEFgVm8reyMIrHSLWaMIArN6W9kbQWClW8waRRCY1dvK3ggCK91i1iiCwKzeVvZGEFjpFrNGEQRm9bayN4LASreYNYogMKu3lb0RBFa6xaxRBIFZva3sjSCw0i1mjSIIzOptZW8EgZVuMWsUQWBWbyt7IwisdItZowgCs3pb2RtBYKVbzBpFEJjV28reCAIr3WLWKILArN5W9kYQWOkWs0YRBGb1trI3gsBKt5g1iiAwq7eVvREEVrrFrFEZgyBUemf95e2PmLWeesuIAntP/A1NRwYACubcBXsqR3iNBoS9vXGmCWbN3v3PrkoomTc7I4ZRI+YUaPg0CuEzQ32wv0r4v32LIWiKlMDE5OWmVXeX7F5bbs566klbgejVm7Do/Z8BpmKb4GD1HlGDYgiw5ps9LRCYtS28PgT11bd+648euxUYGY9B5YfnIDr0bxSmYqugvSaqBwHW3tgbBgjUtzx7XwKE0Pw77FZhBluHk8ENn0YhOnxjBGKTlTIAUCp5JHAEfevHFojDNvxj7eLCGSyzvUPvuzIOI/jr8/F4N0zFNqgA4A0CLN0UCcHNiVqA+AsAgRJ75ZiJlsVHAAJRmBX4Cj6qOulFAfVI4KVVKptXChAEeeWu7BhLEGRH17xqlSDIK3dlx1iCIDu65lWrBEFeuSs7xhIE2dE1r1r9D64pOQmEJl5AAAAAAElFTkSuQmCC",fUe=""+new URL("catia-3b70cd85.png",import.meta.url).href,bUe=""+new URL("csh-8ce19601.png",import.meta.url).href,UUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABndJREFUaEPtmmtMW+cZx3/H+G6Db1wNFFNCIWENJNUoLBkhoVW0LWmldm3TJs2I2n1I1WqJpn6a1JCqn7ax0WzKokVtsyhVNxZN6pRqVasAQZ0iUqUlI8taugAFzN3GBtvHl2OfyUgoZKXDl6XQjfPVep73/3v+7/v4eXWOwNf8Eb7m+vkiwA//WoNKVbMmwSKRXk5v612q7TYAx0t9x4405rRUF+nXpP4hV4jj74y1DL1SfXxR4C2A567UnHm69OMf1GWvSfGLol7tnOTI+eEtnKxdcGIpQHPnkco3Gssz1zTApc/maWz75BAna8+sA6yGVesOrEbVl6657sD/mQMyw++fJKu8HrNj63+F/SvfQp//pZWpK+0U7j6KvW5f2hAJA4iRCDqVKu0FJdHL9V89ihTwkvutgxQ/eBgxEOHau93UP7o76fwJAYy43TS/8TpHm5rYU10DQnpD69Cls3i6TyKGZQZ9W+gf1GEuMfNC608IBUWiYhDfvBdJgPm5OSyCkoLNm5eFSwhARuaFt96iZ3CAF3c18XhdfdKVWhoQCAQ5d/wYnwfuRfJOoBjsRmtxElWAEJIJe0KEy8opqaiixO6gccdOTBs2pA4Qj7zhdPLsubNI4TBHdzbx5PbtKUFc//swb/7uKgaDHb1Bh/jJ+6hjH7CpYReWAgfW7HwcVd9Ao9EiJOB0Qg4sKv1Dz2VaL3YQC0s8v7OR5h0Nt81//4nIHwhy4tV38E8qyS65B2U0gl8S+Mff2vnpywfI3VCRUkGSAohvpRfb2+nq70cOR3imYTuHmx5csVJ91wf5/evdGHNqMJvMqNQKPNNTOKdu8tguPfV7v4ewzF0qEaKkAOIJJzyzPP3aaTw+kagUZl/t/fx4z14yvsTuCxcu09nhwp5Xgt6oh+A8UZWJ/n9e5YmnHNhtJkrLyxPRmt4ZWBr90cAAz795jrAUJRaVuDc/n7bmZizGW3eHuTkfZ35zgSGnimLHJjKkEDqzjemZaUZHbrKnUUfD3h1oM9QoNZqvFiC+2unODk51dSHEosQkiRyjkYMNjTy1/dtMTLj55SvnMdgqsGTnowi4kfUW5rwiQ8NXefiRcqoqi3E4HAiCImXx8cCkt9DiajJw7I/tXOjtBTkGsRjIMht8mZQKd5NVUIFBiKDUGAmjYGx8DCk6wuH9Ndgry9HEQJ2VlZb4tADiwX5RZN+JNsY8XoRojKJpPZWZmzDnl6CTAoRUemKomZwYRY7McuCZLRQXWMm12xM6tMFgkJA/gD8s4g+FGXWOMelykTk+xq7Hn0BnsaTuwGLpnK4Znm39NdaJAqrKarFZbYT800RQ4nLN4B6/yaDnQ2Yz3AuHOMeWjTkzixydBlNGBn69nkBQJN5m9dMuRgWZSa8XX0hEnp3DEhaZseWQZ7WxuaycsiI7u+8upbSubqGFp7yFFgHefvsylzomuctRhdFoJBoN4/f5GRnuY9D9EQMxJ5ISBGXGQruVFRno3V5iGhVRUxaCLKNSKcmZcmG5pxKDQUdJcRF6pRqHKoOq+7ZSmJePTqNZ0q5vjTIpA8S7zG9P/JnZQAFFhWWAhFKpwjvnY2y4j/HcQURlDJ1ai1oB+VYrSiBbFDEU2rHnF6CJxci3WMkxmzBr1GhMpiX/BonNWykAyAwNTnDq1GWs5lJ0RgOyFEKtNTEzM8On/R8iyPPUbVTx8KHHsFosaLXa2wbAxKQtd77jrSP+pOHA+PgMrT/vonJjPZmZOoLBEC7XLFOTU8z7brDvyVryrJkU2XPRmy1pd5mVEiTlgN/r4We/uEjFxgZMJi0RScHI0CQ3rnWzaYuWA/u/gyRFsNlsK44XKwlb/vc0Hei4eAX3rBFHoY2xKT0DA2N82t/DA9uMPPBQE8hgMplS05ZiVFIO/Ol8D1u/WU1Xxyh9fZ+h00+x/+A2NEQpLHGgSWMkSFF/cm30vfPv4vSZGR64zn33l9LQUItCUGAwGlKcJVOVfSsuKQe8Hg8+vx9CIcx5eQudRa/Xr5r4pEcJ9/g46iwjnqlpsu2FaNWapR0t/XKmkCEpB1LIf8dD1gHueIlXWGDdgXUH0qzA//QWqmn7/l0f/2hnXpo1urPhZ3pcHDo7sMxrVsDx0rWWlu8WHnNY1XdWRYrZe50ibZ0Tx4derm5ZTPHFu8ZzV+KfGazNTw2gd/EF95cDpFid1QpL/ba3Wor/bd1/AeGmpF4S5tr2AAAAAElFTkSuQmCC",FUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAAAXNSR0IArs4c6QAABCpJREFUaEPtmUtoE0EYx7+ZVPvQ6BYPPkBsQVoQxGRTELyYnrz0oSehB2sv7U0UikeTipcqhSqCtCBWkRZPGtqLekh68AHNbLcoQkFstJK0oBjb2EbN7thvSULS3TxqmzJFB0I2yc7u/zffN99jQ2CLDyKSfofDUUMp9SiK0lGsLqEAZFmeIYTUaJpWq6pqqBgIYQBkWfYQQrwomnPeoyiKcVxoCAHgcDjcNpvNnyE2mrRCdNMBUAyl9DQh5BDn3AEAEiFESgnhnIcIIegeUc75lK7rAUrpPXSdTLHFWiHLAkkzZl2o0Aqkftc0rYdS6l4Rfq/YOQXOK8oKaQCXy3UaAB43Nzev+f7BYBAikQjOCwAArrqPc67iSlNKQzabzXAFTdMkznnq5aCUtiatZHnPYqyQBpBl+TyuHor5mzE6OgqDg4MQDofRPXATDuW7TjJk+le7zqo5Ba2wYQB443A4bECMjY3hR1XTtDO5wqHT6RyilLYXWqxCVthQgJQYBOnq6jLcasVl+nVdv5kJkrJ2IfHJ3/NaoSQAKWH53MrtdkvxeFxKJBJG0NB1Hd+N46RbGXsFvyOEXGSMPbECLimAlVuhaxW58lmnYZSzcseSA2S61cjICMRisTXrT0a5IcaYqUbaNIA1q86Y4PV6MTD8B1jPIq5r7r9pAcaYkZhEGJgYGWOBlQr1PkYxHCldlpsYhbe0tIBeni4iReAwNNCfUaypqlVVNeorS4BAIADd3d3wreGKMMJRSNliCOzTDxAg3bFZAmC8vnH7Lnw/ekEogG3Radj5/hG6U1q3JUBfXx88GHsFsfpzQgGUz7+GqtlnUcZYdd49gO7zXI1A7PBZoQAqwuNQGR5XGWPOvABYSb74XAbLB08JBVA144PtX9RxRVHceQGwK/tA6iB+4KRQAPbp+1C2+DGrpLDcAw0NDfCjthV+7TkmFMCud4NAf0SyHrmYAPx+PzQ2NsJifTsk7IeEApAmewES8Y7MdtUEMDw8DG1tbbBwpBO0qn3CABAtDtLkdWx2GoPBID48MIYJYGBgwGgHo87LwG0VwgDYlubAcCFKnRMTE7lLCY/HA95rvQaASCMjC6fLCEsLdHZ2wp2HPlg40iWSftj+dQp2zPiysrAlQFNTEzwefytcFrZKYpYALpcLXoYSsFTbKpQFKmefQvnc66wkZglQV1cHU7H9oiYxH2MMH4GmhykK2e12mJdOwM+9x4WygFUSs7QAfilwErukKEp/XguIClAdvIrSzqx+QmdyITxLtCSGbeTuN7dMWTinC22FVjJnKYGN/FZoJXMC/LbXCJfEsJWs/PQ0pChK7erQaNoDWMD9kuqFCqFly/PYB5iSWNYewA8rjYyXc/5Xf/KVmphS2p9ZhZpcqNQCSnV9If7oXg/cf4D1rN5GzN3yFvgDeHmLUMPmZkgAAAAASUVORK5CYII=",AUe=""+new URL("flight-80532c16.png",import.meta.url).href,ZUe=""+new URL("fsi-99d432b4.png",import.meta.url).href,SUe=""+new URL("fsibackg-210e093c.png",import.meta.url).href,NUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABvpJREFUaEPtWT9sG1Uc/p5baDefO5QFGjcSE4rqbEgFxREbUNVhrFTZ2VCXOBJKAovtpSQpUpyhMNYdKGOdodlQbVE2pDiULQNOO8FydgdoqeqHv/fuOXfJ/U2CUKU86eTk3fn8fb/v+/3e794JvOZDvOb4cULg/1bwRAGPAmXbwmnkkEIOElmkUunR+cGgD4EuBujgm0zruJQ7HgW+sPM4JSoAcgAsDzgpdyHE2AHAEk1IuYFbmcZRyByNwIJdgBBrALIAepBye0iiidNo4S90Uc/0POC+snMYKHUKgJhyyHYxkLXDEjkcgSU7CynuAMgr4EKu4znqBwCHhZZ2O4sCpFKOAehCyGksZ7pJFElOQNvlvoqekLXEwP3QLdlVRUSiB8gaVjP1uCSSEVh4VoQY0LNdnJIzuJnpxP2hyOu0qg+VGlJUsZquRX4HSLCQucEfQuo4YFC1LfytSOQg5XwcJeIpoKPz+yF8WnASNX6lcZPQgQotufEILPYInp6fjJlkTO5KuVzO93o9NBoNJuYMgHiW0wHbUgXihZwMKw7RBBb6FQhZhZCzWI6s2awmd/L5fH5ubg65XA4kwOPu3bskQiXo7ehKs2SXVKWLsFI4AWMdKdtYzTCqQYOL11w+n69evXoVhUJBge52Nc7hPDqdjpqbn5/nfDwiiz1bqbZiTQf9cDiBBbsBIYoQ8mKAdRTw8fHx8vXr161SqQTLstBqtdRnNptVoNvtNsbGxhSxZrOJ3d1d3L59u7uzs7M+tGZwyVywqxCCDgj6/YgqRO+zFfCPfuHcuXNrV65cyZbLZQWW4Aic1uEnbWOAUwH+X6lU1DleS6Kbm5skQlsdTPQlO69Ka4iNghXQbcL9AO9XmaT1eh30OsEQoFGAQDl4jjbidW6SnKMaJE1L8bxDYBZcod0tiLKRaGIlPXugcaxnesEEFu06IOYC5GvgTLqIF30VzWq1OiKyvb2tokzrrK+v49KlSwoso82Df1MhknbyweBqYMHeVb8p5TRuOYvkYm8LEsCqNTkiYArLQE6GEOg9hITl+eJeCBr4/NcinjwCfvwSJMJEXVtbU+AInMSKxaJShjlAIryGhYjnOc/B63ioxF6ya9oysEYkFu3mcG4Kq1ZGfcGAl+gQWxgBGwPZHkaCi9H+oQmkL0CR4PHz8qjikAhBbWxseHKAEacKZpDg5OSkmms2m8yBWZiWwpAQKKtCsmIJD/h/5DSt5k9Ar4Y2pGqs6PeDBC4vFTFxzTtPNXYeqDnmg9tKtAxtZcoqz9u2jZmZGWVBZ43QPneTAFoQqv1uALI0bMU7cMDzUn8Ce/U/mAAV4PjzMXAmDVz4AOg/0YQe3ACePhqVUTdw2oh2otU4aCVaqtVqaQXMcDd3Zm4f+KMR+Oz7Is5P6FvTQrSTOUjElR+sNkxeLnJGAdqG1cjkjEcBPxI+4IMJGAsN5DpuZcq+FqICBMqD0Sf4x/f03xz8/4dPFRHaZWpqSn2yStE6ruRV1ajT6XgVcJN4hTJeourXE4UnsV/91Tdu4ONvdQ6QAH3/7id7PDlHAps3FAFWHqpA4BxUg9bhEaqAT+T2T4URYDdoYcW6GKgAbfLWhM4BjqePgHccBUiCST3MESZpOp1WixnbiK0t3hqjZq9Wq+1VoRig3ZdEL2QvZMZHugZmf9I5QBLP+5oIh7EV1XEsZBQgCbMK85OViQq4OlXvahuDTDCB8D6kgYlrRRVtowBJPHuirWSS+JfvPAowB/r9vrISCdBWrEC6ywYbO798C6URTEAnMh9kgtrZEjLjFbz9flYRMflgbEV1HAVoIZZPNnZclZnQjm24NnBxmPdt5o6kAL+8186GPdpVcTZTxPn3svjoayhb/fFYtRcmB5xmTQEnARJygJt22rt/FAO4uST8eSBaBXMfPolVcTZdxOUlTYLl9M6HIwuxbNIqTg9E4FzhDw08HgG3CvF2CTSR9AVN5Ld7KsnpdefprM0uI9Yjpd74sqKewaOfibUKbGktpBI91HPnjoQ4CJwRj7epa9qIgdwOaCZHJosmwEu5p/lK7ddwGzHJ9h+jTZs0Y9uakX9TPIRQe0MzWM2EfjceAf662SU45B5mLAJu8Ny2XPbthD23ik/gvybh7j5jgiekZAR0Uu9tqSfYwwxVQD9l6UVMyPkY+08Jc2D/r6tocTtEsD/W+/un0IqqGJ7bKLugBCHm9IaubCOFUqJ7HEoBNwqdF2Z/HzBvXbh6v9z3goOA31BVKYdUagqQZt+UhSFR1N0QklvIzwu0FUBrURHvKya9jcg597x+m5MaLn4Rm7dRyX88BLyq5J3XSFkIF2i+vOBLvhQ6eI5Oorc5ISyOn0BUyI75/AmBYw5o4tudKJA4ZMf8hX8BYYbS8rulJLAAAAAASUVORK5CYII=",RUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwlJREFUaEPtmL1uGkEQx/8nFECyC9yBEumSMhQJKVCODj+ByRMkFlRuAg1OF6cLFXbjChTeIPAEuVSAKCApQnuNObojUiwFLEQ8Fjh8HOwuB5c7hW2Q0Nzs/GZmZ2ZXgsuX5HL78f8BKIoSB/B6G5GTJKlSrVbLIrqFIxCLxZrBYDASDAZF9mHKdrtd6Lqu1Wq1J0zhKQFhAEVRtGQyKadSKZF9mLKFQgHFYnEHwPSUUyPwGAAdzlVLu5VRnQrwBsAnBsBXgnQywHsAzAqwA1gSZqtViFJoFwFmCVshYFsEJp04FApZsXfhW13X0el0WvV6/YWI4kkn5k6haDQa8Xg8CZFNeGWHw2G50Wi0eOVJThhARLkdsusBpA1qfJtf5wfULIWWOMDpzzwwSgvtwi+sIhc45BdfnkKBcWfOAJj1StbQjsJeOfHUK7IPU7bcHqDSvtGQCzCb6bSyVRFoAiAQ8shfiKyhnSh++eSln2mUiMBl/Tcu6/2NApDxXxYgXARADlyEcDBAHsCFSdgJ4u04jQ6RNVQbUojuxc8ZKUjnszw5A9SYVlUWUkYgx8gaZzYA0N1kVakmZxNAiedOTEPe2W3T+3D364wUoqJCNjEBZo2nmLoIYNF4FwFQvhv3aTN9mrKGlgj75KPwA5Eyz5St/LhBuT3g7QPcKbS48WmPegPrAYBpsLnA6AK5A54xxQIA7fxuS8PcR+5hziLAmv7d4GfrA4zy8QiArVxo7hpTRuW50FgAOI834d2LwLe/QYcC6P8CBtctKa2aXSnJYdOv1hYA8nENj57JeMjq9IJ8V9+Aq++alFbnx2l6cCMA+r831uoagInxNNJPp5YrAJYZT0FwPAAZTy8lr+Y8P8lLlXcWWkjk0fbPAE2ZnzlO0DHPMPcvAKgKUbenck1GLnupoDPR4xmnZyBsiABVG/PrrElYnApgfp11GcA8BKXWpA/co6wXAf++DN8exzkTEOlfUzc268SUTtTISmba1gEgZduahUpSRqUSyb2EAbg12yS4A7DJ0Uu3+QMH7MBAibiTPwAAAABJRU5ErkJggg==",VUe=""+new URL("gc3-c7873d2e.png",import.meta.url).href,WUe=""+new URL("mob-90497040.png",import.meta.url).href,yUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA4CAYAAABHRFAgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAkDSURBVHgB7VpLbJRVFD53Cp228pgxuhBMGHCh6MISRU2IMqjoBtMiuNAEaTcuWNiSSMuChCFB0sKiZYOJm05DogtA2shGJRQwLggqZQHiho6JhYUkM6VAX3Su57v3///53zNTZzKY8CWdx33999xz7jnfOVOix3iM/w0ElYvObIwWU6vPSjmK0Cj1xDP0iKF8IbtyV3hWc0BvhmbkOuqP5+gRwqKyRn+RTZoCJtfUObpGb+UpNy0ThpbT9AghXMi92QTledOSTXGOhtgcLQFHPlviGNp+4gGlf5vDx2Zl0vWUVJ8jLHCNTThYSAgoBUwzpow6Sn38mos1cEOj18rRrhARLTx2J5rU9zx10J7sJjoSH6UaIRLYk6cUv8aw+URcDcOmE2yS1PriYs/wjWus80o45uGQIqKPagh/x7Mn28YbG8DHKx1LqPmZOjbFWRq+Nkd9HzSqzV+9Pc/3cF4Nx3cImcnm6egvM5SIRWjnq/WUm5K0undSrynlbjoc76cawF/I7twYvybaXqmngY8aHV0QbPeZaTp/86GjHYKe/rRJHYgdB85OU+rsDKl7PStX18Lzes0VWuQ9Y9P73406uqCpTV/ftwkor7KGLph9647e8wjfsSGq7yvMtp46qQbwCinUnUI48HRBQKM9Q4K10htvZhNMqs+sZHRsPf7AOZflSzxpPEZEVlEN4BVyEYcKlhH3CUINXVdhgS6whqAtBSE3OcICPjdymzEPd9ecA+2ad5dEfpBqAK+Qh9jVC2YtrC0Itfv7adVsmSHM0y/upfiuSTmsx2qhOnmucTAZ42DOUw3gH0KmKWfeNQ9EZIyCAP5qgxVPJZvyND1CcRIkoF6MkBAI6NT6ko5/q+LGUClbg5djIsBoXqHHbjSpn2DWFGVigbVrAK+Q86T4KTxi3wcN1LdFhxAQAMtLdk94g3vXxH7SRIBaDLKQerdBhSCDTCR47Zp4Vy+tE5qOwSN2biiEEJje/s1R447KTo6lzGklHEmOtc4alEmMQ9hJxAtnh1g7fM3mtNwAzzUpoD9y/zW2esmAyVn5wf2syY4NzliZ4uB+AMHdBxAQ2rMDTKn9xJTxNA41dqfVle3kA4IFhAmZ4f2k6fDyA7RA+DOermwKD4f2xrqXKjNF7ENIgCma9A2hQXFU1jrak0ztQPeWF/iuonVai7zR3uXt1jP2ZDlDUYdZ4k4X7p39s5Am6qcp2skxLwHzjPG1TP86pwSFIH1bCnfVhJsNwUxxAIUQkndqQujqwgtP1dHJT5ZQENpP3afL4w+RMCDNO08VExIxb2+2nc1kBOZmB4QY/H2WPahTyEEeZ6d0jnlCHvDEViP5Xv9sHYVhxTI2tnGMj7xMC0RwqgXTELJdx0sO8jAXZBJEvk5k9Pa8ufs0j9tqOKVRRcwlh6PuiQFVWbAglmshgrcAvPC0cQhSFkouWAfrdedG1NXSzisQ4ZWBnnia7KWMPeyUhGY0gy4No/yhN5O/ynwW1HDIqAdhA0kwAqoTbbyxDGmem1RCPBWuyZXmIUDzXbnT/I55MbWeahdJTtI38qdNQWuUV8hK8YlNiTEK84amB7XlpN1vNdCNf+Zp+I85x9D1K+vo4OamgiA+mJyR9PkZ3Mt5q21pVKi5z7OWv7pkePo8W90RpRTvlqhcqBDDjkm6BAWlE9wOM9dhaIRbE7tei9KuN3RYGb+bp8t/P2RhZ2nX6w18H0uvow1dn6VzN+fUnNa19UpQoPfiFB0fnQ3NV8sXshR0ZdOghbhvpz5eYm2oGG5N5tVBQLMrlkZKmgNNv5eeVO8sTj+Hqd3uMZUXUmtRkfiDmxvVqYfhFgt1fHSGhtiU9UY1IOj6lYtY49Gizun4lRnq/VlnSx7CQWHedaGQ4jTe4FCKCQjhtn17T5mbXUAAGh1is9b9M6Hr7FgXVQdiPH/A3V9ZIXWIUK7+6Jam0KHH2GH0XpzWwiEVQ7iakXHqjQn1ju8crdCPccUEhcYNJBWbsqG8CnoxRLQzwh1cFnIPYaLHLlnmNchllDbHAO080urPuN84lHfWLA40XcRTPFcdWp3TKVZWk02KduXwoO1sZhDGD5aAoHs9LgHdOKz6R7Fmz8Vp3yEIT9u/uWeafMadoFdWSF0CUWaGOwWv5zYzbGTIjJfaJItDaKYFDuu+u1gfBzo+qQ40R3XMtlxhpPKOB2xHqKJWBl9xn3DSJm7cMT4jrpWaVehxykLGbdYBoXtN7YJ+ojZ1yPtzRGXvZGFTGX5dzRTOU9ccnzArflReIizlBN/NmFuTFlAaDUDlNWnCr0TCWNZgFbdiVA6EJvSB0OUXX1ReSJABEHOUSBg7musd3NSKZyDuLlcfCD1OHYqVlZCOxS1rjR+fhEyp5/oUy6pBBkaQMcCdd7/ZwOS80UHrNLk2BI1EOkpaU+gCGEi5e60vmeCDHxvjmg3O7EA1yEACDx/48AnFRPxQCNyyLczMFNBvlEd3NAesxwnAD21LzQNIuC2kskLa3FhY+oRMAmasADNDAuw2MyTCuNfoZ0Bbbz+3OHBNiGc5JRcZqCxB1/kmilMJnDryyDBYaZIJRe+U100Yfwo4EJh9GPb99MCMvxmmhqvtfdXIQpLmvYDJFssZkSeCst2a9LIj3EEcVpgGAcV4mBAogGD0OJPn6uSTqL0wUYaDGdj2RElTsFH8QVjkkvCidk8ahvcHJg3G4yp7GqgOGVAFMDEGRgLaZXcYaEN1AGmYnWwXE8rMO1terHfUhYbZEsZNK3CXPc3tULVgFKiVp2VtQrBzN7WAABzT25xVwNMWqxzAnCGg6VhwGLinOKR9P05pIXXZM+U3v3pC2pyQTy+ci/KAJ7k8EqZBaB4FZvc8F0L/E6x6tA4Zia7VXrA2iNPWiXGc2/9C45935kOXscg91sE8lDd0TTdjteM5IT8KVedOmtBEPenbJ1TOtwpCtKwNXsLKSaVB6PWabVQGqqfJ4sjgZfyuDB10446VtSz4l+rqajIMgivskjpQS23/7r7vEDgaWy66YCGr53hKQXe2n7dQAkmXR7kOtOBfqWsrJLBXk/qQEZla/dfIYzxGDfAvraT+5THxLC8AAAAASUVORK5CYII=",QUe=""+new URL("surromdao-66a16cb6.png",import.meta.url).href,MUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7JJREFUaEPtWk1WGkEQ/rp5Lkw2eoMB41o9QcgFMswN9D0FkhWeQDyBZKdj3tOcoIdcQHMC3cfA3CBkkZ/NVCU90IgwDAOMMOY5G5/YU3xfVXXV19UKPPFHPHH8GCFgHajtHLCdRWIBcOufO7eD2B4QsKrNI8moZxG8wUSMuu/ax+b3PoHN92o7COQNWBy23LeNLJIovPtcA/EJEe2YSPQJbByoXZbyonVmZ3pfFCpNFkR7386dS+3kZwKLTrW5ImDV1Bp+wgJjLVXgAp3h6jLO/swEdHmVQl5BpAzeIGX26AXv+Q2nE+ecmQkUKs02AIuZPqXqfb0RhXytbYPpuOU6sWV8JgJWVVmSZZsJzfa5XUqbwDT25yIA8GXrrLT3WAQE48s31y6mnkLGQ88ExrjWOGihEbDKqiaF2AL4B62irqtHoeJdTJNeJPjYP3X8pRDYqDQ9BmwNmATlVyTWQi01xUNMju863lIIhE3tT7cnaC/qn4OfJeHRf69X5RaaQkkAJl2zlAgkBZdknY6c/CXbEOxNKtOZ7AMm/SbJCL0uswSSRCpzBKx9VZQSxVAgMjpEuPY/OtcL6cRddYoSMXy/dzoq7KsaZLRaJYnLwWolfgslIEZkAzEavmsfpiqno6TEgz5AtLOyAsT2gQGlWSh7CkJoUfiBBDU0sVdVVQxYngg9EYlRpantAU0qF6AocvDvTrth3yir0rjDTvASnt6kVlUVJcurKF3Vr0YAWq69HhWF1Agk3XTD6wplVYeQRzKgN3cR+Z6veFc6tXR3Nyk3aGPpBKyyKuVY7gY5qkUB7BNYpfWosrp0AnGR6x9sAL99ZuczmULjCPTAX2lJRYL2/NPu3GckBWeZCy3oQBOCB+O45dpjz8WppZCpQoEeibiOF8qBfVXMCVhxaRLkcD2c+2ZgEOd5YzM1AvlK8yas2fo8kKQP9BAMDwbMSHOS51MnoKuJ7BLotFwnHAZvVNUuU3wE/kmHa9M39DuTymbm90C+rC6FkFutM3snSW9JLYWSfNljrMkcAb0HAn0s7QnCSaRnIhDq8HLze1f2sgeB2PllPIj7Kca9LgLAdGj2UupyOiyRWj5LqcJaPedjdND9URJrZkIxyfTMETCGteyd9CVxfxcBOl8HLup0P9Hro3RRap14HsBpvzt3BNIGNK29/5eAuWYlpkO/11mn9c5jr+/OY2X0NWtYKqvNOhhHjw1kLvtDanXkTnjzQG1TRv/VQAK3gxVMOyLTl9pJIvXkCfwFZEdAbW+zlMwAAAAASUVORK5CYII=",wUe=""+new URL("w1-4cddb641.png",import.meta.url).href,TUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACnBJREFUaEPVmk1sXNUVx//33vcxH554HDt2TBJwiCF8tRhaQkVF5Vaoi67cqlRIlSBUQiogUbrourCv1CJVdNEN3VdN1qWIdFHRQqWkEgVVVIwDIQab+Gs88+a9dz+qcz/G4yZCmUkQYcTLnRm/ee/8zvmfc++5D4Yv+Yt9ye3H5QBP/W0BcbxwQ4KV5Tn8/pvnBm3bC/DsW89DK0CIPSfdMDDazAEYx8snXgo27QI88yZ5fQEvn3jlhjH4SoY8/ffnwfgZvHzCOnkQ4CQ4W8ZvHzhzQwP89I1FcDEXHH1VAObsYrMoxn7GpFmCRBPSAKUBcn8UBuga8J4GesYeOtcw0sBo5UalQb8zmt4bQAEwGtqQuww4Z2CCgyUCvBYti/3RGVnBH6o/P7O8x6HDAuyc/d5CrKPXoYw1nEk44+kggwmCxgxgASDTMIW2RmvpDfcQzngHAvrPuJG0wAQDTzjEWALRTGD2sWXE4vvJs6/u5uQwANnZpTnOzFlo06SbQgIsGB8ArMe1jQDLCMR9JsNNOOhcgrHXGIiCh3AEBMHAUo6okUDsT8EmBEyNbypZ3ld92kdiGID87aVXoM0T1ngKOUUgAJBsrOcNkGmwjhvpMAGg9BA0euM1SYnek5QGo2DtZ2ARg2gkiKcrYFMRTF0AQr+U/OS15y3kUADvLG1AoQlNMvAApH8ynqTjDSYItqMBC6Gs/rVUVmam3JWRlZNyMM54AqEUMEFFgCAJxUgO1sBnYpgGByK2nDz56tGhAExrqVn0sGFvQDcjw33yMut9D9D18mlrYIe8r6z+delHMro0PhcGjCenKJ8D2o8UBc4g6hGSm+oQhyow4wKIgOTJV13BudoIZO8uzXHBWn35UNhJPlKD5fC6J687w9m2G3VOESDjffXxMAQf5GMrEhlPjukflAnGyagqkB4eQ3S0BuyPADEKQGtpjisCgNNsACgNWKg83nhsOQDTkdAUAYIg3VvjtZURJTTBW/nY6/m8IO8HOYVqFAukR+pIbt8HHCQAhuSJPw8ZAQIwrGUl5CsQSicHC0D6J91va7BNDWwpaAIg7/cUNEUgSGlQRqGM2mqkaSqAMsYr1VUjwRlqs3VU72kCc6ktscnjowAw7gDIQ1Y+IYE1WNcAbWUNZ+sa2JBQXRcBe+SUxD4SPgq2hEpXTrUx9nJkvILxEG5OYGCYmKiicd8k2PHqiAArS3NcBgBXgSyEL5+MkndLAesK7JKCWS+hMglNEFSJbA74Cc3LiaSjtIa0xrvDAdDlXRQoBjQeqCY48LUD4PfW7Sw3fAQIQIuWu6KbxCxE7mq9jcCGBNYU2KqE3iygOi4KpiehaSa2hjspKekMLo1GGQCsOo29tJMRRcYBjMcRjt0/jejBcUs1AsBjc4yVLRZc4ieifv2nynNJAh/TUUJt5lA7lAcldE+6pQTNB6WGVBqFN5yML+Hk4yJAvtmNhKsZBmORwMJXZ5A8PGHzYjQAIVv216TLMBeEBG5r63n2YQF9sYDcyKG2CmiSUea8LqVG6Y3PvactgJeOW1Y5CbnRRwlAnTN86+5ZVL6z30Xg5LDzwMZjc0x7AA9Bd2KFm7iwrcA+KsD+W0Be6EF+2oPaKWwlkj2FQmnkhg5n8KDng4RKr32KgP3OAxTGYFwIfPeOWdQXJ+0aKXlqFADmAcKi25ZUwCbwhgJr5cDbPRTnO5BrGeR2iTyX6GqSjOkbb7XvZRNAdiF8QnsIgqaI3BwleOT4QYydmLQTWfzca0POAxQBoVrgvu0ZhMgNGFWfdzLoN3aQv7eN7loX7VJZ4/tet9qmnNfYkBrp5DTSRh0dkSBu7ENjfB+iOLXLaCYEFDi0URBGYyKN0DycYoVJJPUUD/7410MCZCQhAmCQmqGnBLqloMkUFaExLnNE/+igOLWKj/6zjmXFoWePIJmbR2XuGGrTs6jddASYmMTMkVvQaDQghBi52WO0xhhqLUQARrcKMHSKCBtZjE+7MVa749jMZzCR5Hjog39h5Z+z4CceweGvLKA+dQBpmtr1zPV+jQSgoFtZGWGzF2G1k+DD7XGcb9+P99fncfGixtGdf+NXzz2OOI6vt72XXW8kgEKh1S4irPcirLRTfNC+Be9vncCFS01cOJ/jowtbePgOgR/cm+Khu44jiRuo1WjmvP6vkQAyyVrbPQKIcbGd4kLnVixv34+VzXFsbyj0Mo2JKYF7Dr2Hrzf+gtun6si3G+BmFnE8i1KNI6lMwfAmpqamUalUPjMPyrJEp9PB6up5pFEGo1aRZ2sANnDHvb8YPgd2Ct7aJv13I6x0UnzcvRkrnTtxcecQsp7dVMBYTeP2/efwwMxbuOtAB1UjbbdmV6x+7aRyjW67xNoaNRJjqCY1cBP1ewFjNLqdLXCWYXo6RX0shiFzY+aOiCG98/TwAO2CWwltZhHWujE+6U5ivTePS71DaJdjtsLur6zhcOMc7p78EPMTXdS4tN3ant459NG+q7N/s0tRv84KO1TcGUsdmLGjBxDXALBTRGjnApeoCmUptopZdMopFLoODoWx5BMcrJ3HseYODu/LUaV9F1qxUt9QhFUs9RG0XnCdmN0c6O8N+W0VgrAAgBkAQUQ9MZAeHyECnZK3OqVAuxBo9yJs5vQ+QSb3QZkEnBUYi7cwU8sxuy/HTLVAzJQHGNiCCUtx1wC4lS2NYY3lc95Q+aWwCmZnXxsB+54hPX5qeAlREvdKgU7JsVNG6BQ0mXHkikEZhpgbjCUKzYrEVK1EMy0hqFm3kgFY2AiwAD4aoT21O3N+7RyKFplIBodxACS9bQSAUqPVk24GziRDJgUKyVFqZu9NANVYo5FINKslapFy0rAaHwDwsrHfhxbVR8B+HgQg4/tR2I3ISAAaxgIUkqEnyfPcLivI+/SKuEEl0qjFCo1EISJrQt9gZeIhwndhgyBA9HfmPAFdNsiI8iCAcCCdHyECBqZFBpPhpT2c8XRfuhcBJMKgEiu7PmJ+r6evcz0AEKLQN95LiBomv7NoL7oHwie2ANJjQwKQT7LsR0aDQZLx5HntFnZ294MKBgFYCAVBrVtoevyyux8B+v4y7w8YPggQSqqVkk9mjs301lOuNbvajS06t5c9+roGX7RdpWZO+/1HCgYxp5zT4MzAtZ6+ytj67iUUkjZAhaY3yCcYP7j6CMbbZLa5/tfK/KnFoQGy7IeLDPx11xY73fvtfBsBW7oJycrAJ2jwdgDofw7PBMJ5/mJhe31PIvtK5HsRrcW3q7f90T14GSYCXkYvMOCXwXiKQEDpL5qDN4O++xsBvpcOe0t29JEK5wTD/a5cPxChkQJ7MT32pxf63w8L4CAePcnACIIesu2+gudDIobSeCWAILEAETw/mMQD+mcM54wxL6bzp0/vuecoAOECWfYYATgIKpPun93X4Ee7j3SFv+357v9+H06PsFw9enrvo6Xwt2sB2GvtF/TpMwAWYPQifveN33xBpl3dbZ958ySAc5c/ZqWf04NuYzah1ZXDd3W3+PzOYsz9HwQDTr68+w4PvD8/M67lyn3Ph4tc/+2DazFvhN9+6QH+B7HwialpMFP5AAAAAElFTkSuQmCC",CUe=""+new URL("xkfx-17960ee6.png",import.meta.url).href,BUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABsNJREFUaEPtWntMU1cY/24LFCqllwDxKjA6H5DMx7rMaEQ3yx4OGSD4hzINAovAfDAKOlwyHA9ZpkOHsmW86ijZQqRjK6JRZ+LAZIGxZabGSAJuS5WW8ShwKaXFQu/dznW3VAUK5RFYOP+0997znfP9vt93zvd9514MFnjDFrj+8AwAUaJSzAUQz0dgFgCVuixaZavbEwBWJNVKASzA4cATneYLGBpAZKE5QnXJzvOsTlYAqw8pxcMUiNXF0fL5ovBYeqxIUkopGupZJqwAViYq4zEa1H/IouvnMwDRe0oJ1wKiP8seG3oRwFyztcjAXFv86fkWGVjQDGzw9pa+ZTZnmTCM/JbHS+vq6qphAfn6+oq3mUzl681mUZ2rq/xHnS5tNsA67EIEQUhkfX11Gx49YvQq9PAgy3i8EC6XS6LrvSZTXUZ/vwj9b+dyIczHJ6Gjo2PGg6LDAHx9fePr29vLBTTNAKjl8+G7LVvAw8ODuV5/4wYkDwxYjf46QdT3AFRYLBZVd3e3iiCI+ODh4Z2DHM6DpuHhbJIkGeBTbVMGQBCECMOwcqFQKNlnMECiRgMDGAby2FjIq6iwzp+fkgJvFBXBcosFStzdIUgmg+bmZrh37x40NjaSOSSJRxiNMMDhQLqnZ/3lnp6Qp5VHcw0NDSFs44KzC0BXnaBa5eKSutlsFlW7ufV7enrGpaWl4QcOHIC2tjaoKi0Ff39/2BETY7U+q4hCoYCHd+9C8I4dEBwcbNXvzIkTEJuXZ70uEQigRCCQUxRV0dHRwaQuW3186vYPDkr+5nLhKz4/rbOz89xY7NgFEHApKb5Yp4tDrlLn6gq4UgmhoaFTZfqJ/ggYsW8fBI2MMPdPSiTw6sGDgO43NDSoMQxTXensjELsoSYXCMgPBwY8HQIQW7W/ztaXb54+DXszMqYFAAmX5ueDrrYWMByH2KIi8PPzY8ZErJ49exaOFBYCu74q3d0h18nJcyxXssvAlu/fzTrd1ydhd5P7lZWwe/fuaQOYaAC9Xg9fbN0KYc3NgFwoWygk27jctLF2MbsATNeOiIL4/PIQHg9WpaRATFLSrCrPDo6YQAse7WpojSFWFAqFGgDOL6UokROGkRoAuWtUkWjCdNp49XB8QUFB3GxbfTJWaWxsBHlYGOT+tyl9hOPqmzHlCeMCoDHAH/2cn3osO1+0+cVA0BsfLzoPvhNoekzwgr8HNLfprb9+Xm5MH71pGNB/1MfPiw+aHiNzPZ78aN9ReXZsW/mGWz/By4dGF3+9qytkvHn8nDMhvjNmQQMYJ3649co2p6Bw2LXZH35t7WEAbAz0gh8a25h76Pf98CAovNICmwK9AYCGptYe6zO2z0TybB9beXZMW/lfflPBLnkK7B0cZPSoXLIECiPP1nPdl1aMW5EZrx4uaGpqErO7xGSons0+UqkUhioqYDlFPSgVCLKdI75UL5g1IJPJICsrS83hcBI0Gg0T8Ca1C0lcXMo3mM3gFh8PyTYRdDYtjSJ8a14e4AEBEJiZCWVlZSgFqTEajQm28cAugO3VCQUfkyRzsIWyyt+LiwGlEbPZrl+/DvyICGukzsJxuMznR7e3t1vTdXZ+uwD2KOKUKXo9zgp8k5kJx06enE39GWuHJCfPTCReeSkp6tPe3lSUl6BVv72pCdasWTMjAFCgQkGKTcFRBEZ+XlVVBW//G4WTDQYm00308rpUr9NFOZQLoYMtlPuvHxoS3+Hxdh49elSUnp4+LQAoyp6KjIRXWloYt/QoKACk/IULF5B711AUlYMmIGhayrNY1C0jI/LxUmq7LmR7MsfWAqGhoZLc3FygaZpJp59bt47JUFlLsuiQK/Q/fAgxycnWZA09Q2nBa8ePM7UCameEQsRujtFoPDfVwmZKAFjFECM0TWd9gGGid7RaxorV4eHwSc3oGivJzISNp04xShYLBLBJoWCsjNzm2sWLcLm11criZ0Kh+vP+/ucdodUhAGiisUpK2dq1IBQKGSaeLilDli1T6zmcWwCA9m/VHoNBGTU4KEIV2Qkcz7nd1ZU9pwCYor63tw7FB9SQFb/GsJdwHGd2rDCSVNpuvxEEkaDVaq1FPXJHZ2dnMUVRaq1W6/DxvcMMICUjvb2z15nNqSYM669yd4+yVQQdq8QaDHIuTQfc5vEqrnV3Sx2xsD2ZaQGwN/hcPF8EMBdWnmiORQYWGZimBf6/LoRes1pGQPJXafSYR3rTNNyMiaO3qbYvvJ950U3RFhJoQOcx865x0BcEHABbIz/zqcHqRKWYmqefGnAAVPcn+tRg3pl8Egot+K9V/gGSrV1tfcL86gAAAABJRU5ErkJggg==",LUe=""+new URL("xuek0-6ac9648e.png",import.meta.url).href,vUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACGBJREFUaEPtmnlUVNcdxz/vDQzMgDgouEQTVDCSuoELmooLKlGJrSh1XzAR3KNWExNNNXGPia2kp2o11ooCKnh0NKKi4uAWgyuEUFzYJK6oICKLs7zXM8ORaNUoDDR4Tu5/M+/c976f+/293/3de5/AK96EV1w/TwOEnvDC1tarRoIZDEl80yXpcW1PAkw5PaOJs41mYf/XveyVoqYmQeQ/MGZvOX07OyGjKJ/VPl8/0vYzwORTXj3cHQJ1M38XDDSpSeIf05LddF5SeHaeQctqH4sTjwOMXTeiWffQLnXH1lDxFlkRp+5qR4dn7mK1z8anAKJDPMYO9nbuXpMBtp/PTxi8Pj38NwCLS5IJuaAAyaBHVCoRHJ3AxqZaDawSB0zREcgxm+FMIoqiQpBkEAUkB0fw9YPg8Sh6B1QLSNUAZGdgKshHNOhRlJQgFd6HnGzQHURxYB+Syg6i9yL69qxyiCoBeJ4qWZah45sIWenI66MQBg5/tQCkrHSEjp7g6oJ8MBGxsdsrBCDLSIG9EI/pkD75DHH251Uu3nzD6gkhoxFpzgeIG9ZiGjMO8Yt/INjZvRoAskGPtPxzxLAvkCdPh3lfItraVov4KndALryP/Omf4XAcfPV3hL4DEQQBufQe8k8nkAuyEUwGZLtaCM7uCPW9EexrWwVXZSEkXctB+vgDhHYdECfNRFA5gPEhkm4+wtk1CPoHYKNCVjohi0pMCiWyrQpFny9RuPetNESVAMgPSzGlpaBo1hycNOUVoZy2A2FbENjaIwdugje6gMoZRFsQxPLa0exSZVuFAcy5/e6dIq5dLeB27gMKHxhQKAQ0GjVuTTQ0fr02CoVZHMg5xxA2dAOFAmn4HkSPyo/08wArBGAWHzxyO2dO5VBcpEcyyegNMkaDCUGQzTpp7unKx3O6039AyzKI8HcQsg4iOzZADvkeUVO1c0GFAJBl7twtxqA3C8b8E71e4saN+1y8cJe1qxK5lHYLe5XI6ZTpNGzohJyfAf/qhlB0HVOjTohjDiEoHSsbMU/1qxjAY913a1Nxc6tLW+8G5f8eO5pFUEAkEia+Pz8Fj+YuZS5cTUSIGgAltzC1GYkicDOWEaiCVimA+IOXmD1zP7v2Blti/lGLijjPjImxtG1XnzhdCKLiZ5HyD5EIO8aCaETqvw6xXWgVyK/ETJybW0jXTutYvMyfwcPalIsouFdCn+4buHqtgG82BdEvoMVTAqUjixB185HVdZBG7kXRqJPVEBV2YHKolpTkm+hOjMfGtizbmNuU8VqiI1OYNL0zC5f6P1OYLJkgMgAh8wDSW0GIQVGgUFoFUSGA745nMah/FNHaEXTr0dTy4OJiA3/5ZD+R4cmETPBh/qKe2Nk9fxUmJ29C0AaDY33kSSkIatf/D0BpiYHBgVHY29kQvWuk5R28fr2AuR/GsS82nQ/n+DJrti/C7dSy0kEygKmobAYuuQcPriPkZUD6AYTiPOSWgyFoC4JlQqt8e2kHtkYmMW3Ct8TGj8W7/WusXHGcTf8+h0ptx6q1f6SjTyPLzGrKPIRwdi3cSYfiW1CSh2AylqVdpRO4vgXtQ8BzIIK99XtlLwWQl1fMwIBNpP6Yy/CRLTl0KJt69WsRMqkjo0Z5WQq2p5uMbF7nSzICkiVtmkdbeMbuZeXH/yWzUNhfT7DkMx32alv8+3kwZqw3b//+jV+MdWtEVaTvSzkQHp6Ei4sDfn5NUKufXdvn5xdz/OgV0lJzKSrS41JPzejgdmg0KoueS5duE38wnRYtXOnZ24MLabno4jNAMPtUNq2bvWrYqDb9+r1JVEQSbm4aevl7lPOkpt7kaEIWrds0xLdr2W7nSwG8aEQOH0pn7kdxqBzs6N3HHbWDkhs3Clm4uLflpc+5ks/QwCgy0u/i3aEhcbpQdIcziT+QwYW0WyTEZ9I3oAVuzZwJGtISk1GiX8+NhK3uz6gx3pbHm8uVQe9GkJ2Zh987TYncNsISulYDnDt7lWGDttKvfwuWLO+Do+OTeb2goJRxo2MQRRH9QyOpqbe4nDO7fEymTtCyR3uRc/+ZRp26ZW5Nn7KbWO0FzqdNp5aTHcXFeoL+EIG9SolapSAz4y7xx8ejViutB3h/VAyHD2WQfHEGtWvbP2GWwWBicuhOThzLZuuOEcRs+ZF/rkokLXMGLq61MBol2nqG0bJVfaK1Iy19S0uNtPZYSecubmzeNsQiftb0WI4czmRn7BhitqSwbs0pTp6bSKPGGusBevuu5+at+5w8M5la/wOwdGE8K5d/h1NdFXXrqRg6pA3LFiSwc+8IunZ3J/7gZYYN3MqKrwMIHtfeAqDdmUro6B2sWR/In4a1ZtliHX9bdhyNi4o69dWEvN+BubPiiDvyHu06NLYeIOyr4yxZkECntxvSpVsT9AYJv97uZGfkW96LTxf0YvzEjpZFT+LJn3jXfzPLVvgTOtGHqRN3sT/2Emd+mIrGuSx83hsVQ+LJq5xKmkJkxHmWLtAxbWYXZn7ka4l5s9tDB2xl7cYBDBrcynoASZI4djSHlOQbFJcYea2xI8OGteHb3ZcsGX/AQM/yeaLgXil7dl+2VKutWtVjt/YCDg629PJ3t4g3L5h2bk+jtrMdfj2bEhOdRi0nJQEBzctDMze3iAP7MunQqQGenq7WA7woQ1X3dauzUHULfNH9fwN40QhV9/VfdGDTmKaBozu5DKhuEdbcf92J3PAJUVcSnnVG5tWkjm1g1iKvGn3M6hd2ITzhcuEzjlnNwzLl9IweHo6aET513ZxVNjXqrLjUIN2bF3stOft2yT3WdA575OLThf3kU+bPDGrmpwaQ9OiA+/kA1gTor9C3anabfgXhjx75XxxgmW3tVgRIAAAAAElFTkSuQmCC",kUe=""+new URL("xuek10-9e62a0b5.png",import.meta.url).href,xUe=""+new URL("xuek11-ece0cea6.png",import.meta.url).href,IUe=""+new URL("xuek12-1e6dae67.png",import.meta.url).href,EUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA6BJREFUaEPtWk1u01AQ/uaFSggh0RvUCeq6ZkGFxCa9AIlPQLvoLwvSE5DeoJVQadNKhBO45QINCwQqi5o9Tc0NskACqfgNGidund86TZO+VLxdlGf7+2bmm5k3NmHMF405frQTWPxsY2LCNpLY+bmHvedeHFszgVffCtABkEo1bTKGjGYLwCNsz25FmC4JrB2L1W1sz5aNAdwJyOrXAkhVsD0bGjlOYB6KfLx9WjGawMqXLFTKigz9n8DIvTUqD1gFdxK/YCvRlcKkVvD9HWdwfQ2DgLXiWqkAWVawwTQFIkkIkjEuFjE+nZZy2YE9NggBAQoNW2lYSNEMAzYxWSBMXgXs1ghYS26eiF4Tk50EaFcijBqID64ievF/wN/1Q5T9TafWdE2/HsgsuUWQepP4wV02MuAT6w9J78OkckrrrdO9Ft3cFoF+Qyi95JYJ8Kslp2iMB5TWGwImSIUZqfJ40Z2PgwsINb/khGHWIOBVS86mEQSaQ4fL1d38Qmb5kFtCyq/u5tIRAcWoGBNC40OA+SeIplrFKhoIlK6HzH3UJLuEabnVBTuOP3wPMB0Qgg9SYZnV+7ArjBWqzPLhWWshkyzUrwaGFkLM7J2V8k8EeGbpwBeLa9IL0iqIMFnVSXVfBmhAB3rO33cqmRW3yKxenjXE18n67UQMIMCgytnuizlp2tRvFKu7TqGX9c3SQMOkkReEhIiyl/XjlVgDnuT7q+rA0DRwGRL1UJDfyWI/utKAEAqhMDaqpVxY6qfXXDsI1EmyXscAAhISTHrO33F8a9G1/T3HSy9/PCJwx57fPA00rF8PHdgiYmvFzSpWR5280EkDYafbvGpR7yO90NA0ELd+evnwhBiWfqDTIuReXmjVzu31Qg3rN1mc9bpYr5cXjCEgNYCgfQbZJIf2UM/wmPUGNGoqFVbigc7EQw2hZJmmpf+MnciiOnBrGrgOgeu00wSM94HGqCPl2J+Jr0NgaHVgAA2Ep61EizGptHZ+7DvN0/J+xyrWqptPBarAwMxAgy3AU6TXE4EH8Bfh5KKdcL8E4g+UtvneH9hay0hRySxUcv1MElD9hlDXew5CoNtNpxddWxOscFYKlWWCHOoHKmQjJdDpYXFvAYaP15OE0I3tGUYI3Ri4JDe6ywRssM7i3bPmYWoSq4xyz9qxTPe89tesAkJedDPXoIPkBWeU4OuvrhA3cvunBtEL71ECS/6sC8tHl9zBjz2SW8OInf8AQ/y5Xgs9wNUAAAAASUVORK5CYII=",DUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADX5JREFUaEPVmVtsXNd1hr+99zlnbpwZUqJoUTcqsmJJbqPIkiwHtgMbrRMnTXp7K4qgaIA2iCUU9WvRpz7kKX1obNh98ItQIH4JjBQJ4qJt0ERIXdtREl9k2dGNou6iKA7JIWfmzLnsXax9SJmyXFG3NMkhBsMh55y9/r3+9a/LVvyWX+q33H5uBPDXr+0iDHf9RgJL07d56bG3l9t2PYADh5/F5mDMdV/6jQFj3WagyYv7vrVk04cA9v9Udn2Xe+FheW/endEWcg2kdO0M2kDoGhhVBvmzvyyQL/5uWPaPmy09q/a/eQalf8yL+/wmLwfwl2g14Z7fexAYu2MAzuIA5xzWTvPmB98mqI2y+xN/REAFpZT/n/IrCwj5tnwQECteE+qZN76KNpt5cZ/Y+asAkIv1ZMScu/pdXj/+Mlfmm/zJ43/HxoEdaMJrAAoQS2bckp78fwCwOJtxbu4nvD/+EtPpDCevJmwe3MeX9nydofJ6D8DoyHvjNq97CUDcL68AXI5zGqUhd5bYnuO1o9+kl5xgIYFTMzEqb/Lw2Jd5cuefUaJScF5usLqg061huXcAHCkOg3YKnPUGZC4jttMcPf8dzk29ShCmdLqa8VafzFWo0eAP9z3DtpHHUJ77JRDgyrEYFCs55F4CyAoAOKE8kGFVyonJH3D0zLdxQQuNotcPGJ/OyJTGuJyx+m6+sOdrjNTuR7mS3A3aosSTK1/3EoCoTYZyxtPHqT6t3nv895HnSPVplBaeG+K+4uSUxRqD1hlhUmH72kf54u6/oaQH/SagLFrotPJ1rwHkPgwkEhI7zc9OvMT5mUMEQQ7KEQR2EYDDmRIG6wGXKfH5XX/FttHPoV0FbdSH6eHmIO4lAO98sBmWHkfOvMKxS/+KM3MY2VXTJzCKuB9wcirH6TIRCqtydGAZDjfy+V1fZ/3gHpQKMbcWxXcCYCnRLM+gErcapx0uz5jpHufH73yDvppEBSmBUmjTx+iQXhxx8mqKMxGRUziTgbGU8ypbhvby1J79VM1qtAp8LClPJfGpvH90bW4XgOyyPKzIkiIWUh74jbcGpyzd7BKHPzjI5fahIhhNhjGKUOWgNZ3UcHIqQ6tKscumh9GKMA+pqDqf/Z2vsH3D72NcCeXXUSgtyhYsLbhcY+8SgFjuMnAK60THM947/wrvjr+MMx3CQLbQoY31AJTWzKeGU1MZRlXQoks6wWipjRzy9eHqDp7Y9VXW1neiVIByOUot1kY+N1yXIO4EQOFG5T1ReNXJJ5sz3TnBD9/5Bj13EWNyAmWJtBRsKaG+HoBWZQJ5jsoItCPUDq1SAldnbM0j/N7OvyVyQx68rPZhXrgrAJ4siy9JPc7nLEdOP2/xs+Pf4diVV1CRxqjcGx240BsRiAeMZr5vOD0tRoUYL5eWQEOghGE5RkWUVZMnP32AzcNPYGzgJVg2Tehb0OradbsekB2XLCsFWoCVKNMW53qcmPwv/ufoy+TBJMo4jDIE2mK8UUUMCICFRBKZ3B8uGuy88aEA8MGufdCvrX6KJ3ftpxmN+YAWAFboeK8AOBt6D1hSUtvi+69/k1byPkovYAKF0QFGa4xOC4pQAOikAadERl24CFR5+kQUyUsCXmtL2Q3wuxv+gL2f/HM0VRwBVmL+7mIArJOFxBESuEKeBd4b/wGvj/8LlDt+gQBDqDShCdBGvJQSqoBAG7qJ4dxlRWrK5LqHNjmGHE1GZOQeoVKGCTKqaoSnH/p7VlV2YXSGbJrW12Xo26WQ7HjmTXQuI3OO6c4v+bfX/pGensSYkHJYpRxUaVRWUy01CXWJSrlEOWoQhUOgQuI4oJt06eYzxGmXftwjTedJ0jmSdBbn+uRqAW1zto48xSMP/gWBavq4uWsAS8kkt6nft6OnfsJ09wj3rVpHozxCs76G0FR90hJOi2ZY2yenR2oz4jTG2RKhqWFMQDmowKJcOpeS2Q5J3mWqfYE4vkpnLmHrpscYbm5GU/5olXprHnDOjS01G85ZlLJYV9Aps4mXTG+qgzTv009m6fQv0YkvM9+7TKc/S5q1SbN55rptJltgSkM0Kw2GasPUa6tYVR9lsDpCo7qGKJRWs1wop1drg5YAdvI3KbevSekdAMiL5JRLAKs5bJ7Q7s5wuf0BrfnztNpnSPNpMlqgYpTuF5KqIpS2LCSOs5Oavgk9z421GAMREaWgRr20mmZ1Neubn2SosYHBxgYGoo2EquolVDbqtgFca+qdxeYZSodMx2cZn3yDc1PvMTt/liSb9fIaBEVi0iYkCmpUgipVExCaEjqI6Du4Ogu9TCTRkqY9ctfD0iV3/WJiIc/JHWFYY6C6mpHBbawf+jRrh3ZSMqsX6yNhk1rZA/b5vQcVbkwqK5H9zEHCDK++/gIXZ9+hXC1TLQ+yqjZCozxEozbqaVANmpTCOlFQ9aole+w7Rml0rNSnGiUUlE1xOd2kTZzN0UvmWOhcpRtfJE5b9OIrpHkblVbYsfmLbN/0Zd+5FQ2PmtD7V5hKZM/vPagFgBWeOxKd0mqf5cTpwzQHG6wZ2kStvBYj9b3Ipu+JpXZMyPOe532czNDNO+T5LLOdOeZ7hqGBUSrRIJVKjWo0QDms+YRlZEqhfEdBliUkaZtucpG59iRZv8KD9z/l++6iYzATev+bNx+r5Nc8INnTkkoJalOMkgrI4ZTxXVTqOnR7V2n3zjI9d4H5hUvE2RRJNoV181jfJiZ00pAzV1NyFRGpiGoYUStXGIgaNMtrWT/8AIP1ERoDo5SDIV8bKZWiycky45NkAUDe9coA3PO7Dzqnx5YmZ0nRtZLZLt3+FFfax7k0/Utm2qeJ+zMk2Qxasm+QY0Iw2nqu60C47ZjvRUy0UlLJ0k4TSK+jUiLJstLI2JBSGDFQGaRRXc/o6u2sro/RrIxRDe7z2R2vRr4euhUADx101oxZpOftMb1wjrNXjnHi8mFaC+OktFAuQYfKUyAyIYFyRSbWVcqm4Xc5iMqUTUiS1bjUyellfVzeJ0tinyes6oKJga4fMQa+DHFEoQCvUg3XMzy4mS1rdjNY20E5XLsYAz9dYTL33EMHrdVjVve4MP0+33vjBeJshlz1KJVCKuEg9cowQ7V1DJQHGarfR60knK5TCuRV88GLKnkPSC2YqBBF7g0Xd1rrWIhnSeyCz8Tt3jTd3ixx3CLOzpLlItcxTvWoqiqrBh5iz/b9hGbNRHDg8EoA9hx0jrHYTvGjN77L+fgE64Y3sHnNdpqlYQYH1hFIbS9qI/TSaaHTvslJwMW+7JiPeyT9Ft18gYVUebADYZVGdRCjSmhKPnvb3IKRPCPqlJHnM+S2x3ynRad3iVb7CL14im2bvsLoqn0Tev/Pbw7APicA3Jg8bKHTxlVyBoImJpchlsWZ1Je5vbxHYtssdM/T6bVY6M7Sja/QTc+Ruxm/28qmzCRweirGBEKpCo1qg5pusqa+nnplladJtTJEtTLgPRhSLoYCXnalbRVl6+NsRCmqrgwg/9bua9Np2dlM6nprvCL1s1kmpt7iyvwprs5N0E8uk9rLvk2TPteYBB0kvkwOF3uD+bTE+FTi1Ut+pPYPTU4kdZMrY2RaYSrUpdQYWMVIYytrGjtY09hKaESRhI6FBjkJ4mdW8ICM18UDi92jMMPfKRo/1Z7gFyf+nQvtX5ByiSC0vpYX1QlN5EEEJkWEtui6cmbTiImrqa9KxQxfcitp8qVPDtGBlIgJNcnceYlGtJUtI4/ywKYnqJRW+wRmbdHOKiUyulIMfOR8QG6VDCrTM+F2yjxT7dO8M/FDLrTeBaYxoei2DLIU2kmNr3x5EWCZSyuMT/VBh/45QSTGFy1jaDTaSfMTMVzazP0bH2Xr6OPUo7U+Tvze+dnpYjvubklGrz/gKPrSpYOIosMUMD03z5X2MY6Of4/p9hFUIHIIUSQpP/Fdl8jrXFZm/EoCulT0xDr3pUaoNYFTNMNNbBl9mB2bHqdRlhK67mlWGH3XcyG/BV5hiupZfmQupHHWedWwzHFx9i0+mHiV2e4pdNRBGZlKCIVc4YFFAJJUpTQPlYwXm9x/3x72bf0SjfJGwqDhJx1aL5UNsuCyqfViIruDE5pFAIuTrSIvCwDxhMyI5JxL0csmOXP5EKcu/iddLqBKie+L20nJz4U0A/5zWZVZW9/Cvm1/yrqhT1ENa4tUkSGvP5wqFEiSiXdA0XcstsYrV6O3ekZWjNRliCtzlmIsaN0cM52jHL9wiLPzbxIFLTqiQlcylNXUg9U8suOP2TH6WZrhKFoGWGKnTCeWjXeLM7SPPfG4dwCKAZegEA/ISYAmzy1K5+RujmOT/8HFyR8x1bnIxGTOJ9Z9hr0PPM2mVQ8SUkHb0BspBYvY+nEGfwyQmwLYhbNPuhcfefaWTymXgZBTFu8VJ2JpyFWHOBvnreOHsGqInQ88Tc0MEfgmYWlgpXBCQ1/phjcM1j8WwIHD/wC8feMxq9x+4PCzX3tseNe6ZjRxw9Nu+MPSBHn59G6ppy1GIZakeFkZsUQy6wW7/CTGLjseXvmA4+dnO5u//27rbf75M/+0ZM6NRFs88F4ZwK/lG9d2/v8G8Gux684XvbXDzTt//q/8zv8Frng7mv8Nz88AAAAASUVORK5CYII=",GUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAclJREFUaEPtWk1OwkAU/qYNGzdeATlBNxITN3gDewNM1Cgu7A3EG0BiilEW3gC8ARujwU3dG9IjsCedMcVU+YuvMFMs5HXbeTPve+/7pm/6RmDDH7Hh/mMewNmLg0LBySWw0SjA42Ew6ds0gKt3DzICbHtqUG7ASFUEsAu/3Ex8+gVQ68dRd+CXn3Lj8CJHLt88CKsHvzwO8iSAKiwR4m6/l2sAF68VWHYxCTQDWHu2TGSgdNrxYFvXRp2PZHPQdhvknEYAnHfqENYNudgyA5S8HTy4ddKEAQAocQYWECUvFBISz1LIIcnlmQHKRjdsuV3SLmsNWJE8+my72X0MGQAhYs4AJQKmEFOI4gjxPmsKKaUCCCz1HVBCnYT3bpgKWtYAUjkxM0gKuccAUOunPlKaLuY4A2NKmsvAh1DLiTjakcdhw00n/KxFzKUEtY1xBriUoDjyz6UEi5hKEIuYRUxxhEVMNzj+qkY3ZRfyAOEtSrYlVTX3P7Y0WaxnbmIb1fNA03qbAThQsoLWAd3m0Qyilnl88AKC+TZrPGvc6FZqCBml+8Wh5ckKxkJ83yCYCPL8VYOk4b3C/Gsw+Yl8stYWXvZYQxhNLvEFFhUhTxlKYYAAAAAASUVORK5CYII=",JUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADDdJREFUaEPdmX1sHOWdx7+/Z2Z2195d79jEeSvEQwipSkvZ8BLRUtCmrXgRpyZGp0qthGLfXSUud706NLz1H8xJbUPbXEypKDqqwyf+6LW0Z1PuRF/E2YjS0BTkNe+5QDIh5MXxy856vd7ZnZnnd31mX2xjdGcnjgQ3srW7M888z+/ze39mCB/xgz7i8mMxwNdeSMMw0h9KMM/L4rHrsvNlWwjwd3/qgQwATVsw6EMDI9kCkMIjWx+qyzQHsOug0noaj2zt/9AI/EGC/O2LPSAxjEe2hkqeD9AFQTZ+dM3whxrgjgMZCM2qK3rlAb5+OIqHLy3j56zhERCGyUfvmQR6V8+gl3X0/vn3uRznDWDXmQRSlSi+e+EkenImAteA7s8gZiYwmXDQXloNw8nBbY5ir5nD1zmKh6m8bJYVB9hzOg4SSciYj30tE/jWzBqQ0GHM5FEOmhDoLpoFoamNccrREOUWPNj2Lu7NWdjbamP38Sbsv6i0ZJAVA1Cukki0IIi3QZQ87F1zBPdMbYAUBr5vvoN7nY2gmTyC1iiMEmG8ksOq2CaUWg+DSqvQ4kyigHYkMQ6vtR3fbjq2JIgVAbh7fD2iTRdAlh24RgkyX4TeciHI0yG0EhH9BkAEQDPAswgqwOxUM8+MzWJ2Eoiv3o/Hr/8h7sql8f3WLO6bvh5BOYvvtRf+T4hzAthzejUQWQ0NBC1C+E7iFdxXaAfPJoFICkBOCHEQ4PZQEJZgt8AoTRDPjAOlKcBzQVrkZb50++1A4j1oMxfhu8k3cM/0Z/Fgyx/OH8Dd40kguh6GTMJLHcL3qIC7nCuh+SbIKCIaGRNe8BLAF4RCqIJYKYDdPODmwUrzxXFFzhBE3LFtOx7a8Ct8K5fGrOsAMQdRdODB1tH/FeKsLHDPlNJuKgw+dXyzcBmIUyBfh6DpcNH7K/ugGXeCq9WFCMxc/RoaQ7lR9qcgIcAk1KAHsPGmEfxg1VO4e2IHgsoI9q0/hm+O7QCC6vcPOs4awHdN6MkOSH8aFFgQ7MD3gR+sG8ae8QyZFwywIDMUPJR4rkg2is2h3wGFcQXAIMpjVccWLf6xdLBvw2Ds3lOW7/vq30bfxbZxz9gV3oNrFltj2QAqpzfhCvjFPDzN1DQ2AyFteJ4DwNH1RFomIhmOt9xfU37dCHOfdavkx8BvDgHKAiQgYsk++cTNu407j3Zp0h12+z5hGz1H04TAkqTldMG2u2/jQkssF0DfczzTaJyIHARg758uHDXuei/tAdDZM4PV6/fDiKRDzX/AoSwQXiMwXh0mFCYBCCbNGI2u2bQbgB2D67hIpAU8U/qB4/7o8mGzZ8R0+rYoRc0dywEwe46aRXgWg0wCO17f5qw65wFWGSp4dfY3WMdg4GhD3bUGaz5M3YXCcyfeZjryGjGps0JFyedjazfZQsorpJR5+L7tPrrFTvS8milXfCcegb0AYjkA88GV4C78dKhF9imAdLy+T2bph5UhjhiZ0OPnS330EHDRJSBdb5wOh/ge8MdnGb5PIMEkjOfirat6GXCKD185avaMWF7FM0mQqSsBdN92+j5jN2RZDkCs582MmkTFaiClo0UqJoIYawic4sOfGtX2HN4uL9kwyBFVs8J0Uw1dBviPB4g6LPDaddVr6lxtEI78N8h+GyAtvMFoSmzxHrsua+46mPZlYEKH+qsurALt0evnOuRlAfz9SCYgIxdlr5UlHAQVNpoiKqhM34dV3mRt99rMngVRq4QdU8H6FvSNHQ8EHdb9dRM0DOR7oKH/AoRKpwK6rvXHI7F/hSZTCCqjCLgDcRp1+rYt9H9Fs1QAZUpUPNMXZCLwWI+WwwmVljzPg6E0s+2zAwDULqmq5WruJ3r5dYbj2CmD/yp/zVUDaGoyF8XEwZeBKQdMGoOEk4jJ23TfhfOTW0Jtm18bSuuqSEKHH0O2AbN0gCETXiQFo5KvCv5CGmHaCSwwOYWtV6aCRPPgoqTjloHnszBE8FCKZged9FXfCNpadywCyDmMA6OKWsUCmPQuM3n6Kd1NpAVrOSldE0zk664NF3D6O6txsFSAUAt3HLAQSBN6kAJ8aBKmkP6x8cduzGpPzA7JeFOGa6W2IeBrNnB8wjGR79bI5yDRQvnPfWbg/QDh7xdeAeUKIAhogm3TczpZr4TBGxAcjWHCB2JA1u7vrLrTUgHMrmcsGFpHmAg4ICLN8bzAcfpvsZN739pe+OTHB1UmVLEZxq1yHfU5/Ca0YnG4LTizm1ma5PuO84VtQ56ZMudbKxz7zimm1+zQAoDGzTxzZzIYHwEH6nKocdIiXAqm805/9/IA1t7xjAUfFnzX9nVYEz/pHFbnVLl3bsrc7ycTmfdlTqbT04Q/vYtmL7c7KSezgmFK8p3Cp69Mz27euL9hhXpl9nzgmVeYfaUg5UZaPx7d0q0EX9v1UytWI7b7v7L8NGp2DZgRwR1n/uW2sB9Z+zcDGZXWNOjOydt3DDDXgnfegxk6eILpZC6/uvBWZ3VtX6mQNfbyJ27/6hCUS7wv4PHGSdDrp+sZyWmvHO5uljIHLSBdBbgWkB9zs3bfMi0QxkDXgBnT/bTmsxMgMDVozqnbbsrIVMv+hiCh94BQ9IDf2GxwefeawqtZXSPyfR+6IRywME/femNXubVtp7ovjJsqOPNMhejpNxv9UZMo92+OvfuQrukmBcJhrWK+tLfz7OrA2q4nwkKmQzgwjJT92JefE78u5mSyOew668oM20+7AHppHO18tLPNz4X+qutAXiZTY9NaOvWxhD1+67Vzz5xqd4cgvzsCnCnVIZzMund3VEFJbR+c4btvnHvQttQgVhNc1jOQFvBNH7rtwnGmt9ywM/eJjX3zu87qOiB++iT0kju4RT/UxxyoDgJTpUjHkQnq8wOY0KO92HWDagwzCj2Mn1oQ0ZlZ4LfHlbxhQEuhZ7D/4ueUDDv2D5mDu+cVtOUA1N0kfddAGkYEh26+Yb+bSKi+JyxY1eoFYKwMPDsBKzrZuyl+Jlz4jTHdPDkZPA4ikzQDEAZw8QU233ppo/DVKnioD3rSZhT9MJjjUbZvsk51kxSO19xsD3bP60iXC5D59n+mIXVr8hILr16+eaCeeeouFIIcmAbeKdl/sfZwtx4RTtZr+Qf7mks78fqpFL14kljoCCE0A/zXlwFRAcjazk3FgUrB2Rww4oQ1QVnhsrVez9UXTY/2f2XLwieFywXY8eMDliGl+eTGT/WQ1bIzNHvooDUBZgLwLx20N7l9X1h3/Knf5syduW0bd3IyEkYJvXgCfHCKSdOJhcHYuopwtVnbZ841sFSRoH87CS6rmzRuT8mnvnr5RHdf5znsB+YXHuMtP+frWpgGG5sTpf23K8Dzs7j6QmfbmBZ8473rrB2IabV9ZXUGGpkC/95RGxhCU4zR3a6a04YHVn0IjOcdotdmG8EsK5GL0dd69huaBsBR7gLh8bDyVjVf74yJf1YEpv3h1rRrOtesuaKeXGrhUdvXAzRRAZ4pgIoC/KUkeH3YMDcsGY4/UQEGpkBCq/vXA3Jve+98RS65lZh/E70TjCAm5l561ANhUgK/dIFPV4BrzQX7mfr9ocfVwGlaggaL4KQAd8YX7IEasfXveeBEoKygsts/yu+0niPAk+MZ3LBqqNro1FJf/bn8sx5gVsBXxRcoqZ6c5rtJQ9l5CfqPWci/jAPRajPVONQax32IX8wo6AcWCa8GLjeIRY57mdE15wtAHJwqligfLwSp4motr4SIE1LhmHmtxQwjnySkCkBera3GlBh56TJoSoLXabWCACQEUkWJvOIR/zzdL+9LLdR8nXK5AItUWzvx+KmSBbiIaIYpiE3SIykB6ai6rWtk+oE8JjRheYGXjcV0K6br/i0G/X6gUkkjIDMa089wBVo0gpNfJFKPKZZ2rBSAWm0gxyYMz9I0I8E6mHyf2AvGI5EopIYNUscLwsNmMnCiRT1grMAKIqGWc2Vg9stEwa+Z224mmlqa9GfhQkuZ+OfMCR2IakBUByTnUX4phfzngPYvEo09zdycAOQ2Irc+Xy+z3ktn8bZmJS2wFLgVH/P/GSANlhn8+Nq+FdfaSk6462DXn5vU7OLXrGoR9aKb2YEM5rZwK7n4uc5FVC2m85S88E29ulh/4X2ui52f+xuar0+/GOD8LHzeZv3IA/wPBSBoi2AJ4GoAAAAASUVORK5CYII=",XUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACkVJREFUaEPVmnmQVNUVh7973+vpnu7p6Z5mVnEWERDBJCMuGDWRVBKtqJWksmg2jVNmK0kiJkajJhKs8p9oXGLAiMFCJWYxEpBoMEiEIAKuLIog27DMzmw90+t77574GnApREYCMrlVt/qPrn7v951z7rnnntuK//Oh/s/1cyDAd1c0Egg0Dkswx1nD/eeseae2dwNMeWFqQ5kdP6Mu0jwcAboyUr90U38fM8+8e7++twGuet63eqPMOKMBmDYcAXxNZ9+24e6Vzak5zDyz4Il3AlyBVs1yz+mThzPAJfdvbnp0TR/MPHPOMQXI5nLkMxmi8RjqPZbiwSLgmAMIsK07yQ0/vZ5zFj3E566/iTFTb0CpoSXEYw7Qn0rTdP9j6Ft/xM/rBwl2Kyp/M5fKL106JD8cc4DfLnqWB++6i0+vXsCNdxehF7vsfK2Gk5auJVAaO2TuOKYAW1tauWzWY6gZt3B5qI9vLirBWuvRcmOa0NTpjLzmpkN64ZgBuJ6h6fZ72PDyBur+MYcrRxnOe7IUq9Uj9YMB2pxqxq3aSFFJ9H29cEwA/IU7d+kK7lr4DPLYHCZ17+SKRhj/aAk6BeqqQbav9yi/YzZVX7ti+AFs2tVK031/Iteyi5K/zuJcO8dlZ9scP7vkzS1HCN6QZseSPPnGj3PyguUoSx8U4kP3QHcyyeUzHqZ1MIs88WdGbV7HpKDLNyZbJG6PIGFN+LYsrfMzdGcsRi9dS2Ts+OEBMJhK8f2Zc3itI4mdSqLm/o5GyTAxLHzlUzbRm8KYhCL0QJbev+Zo7RESV/+SkddPP9YAwu62dqbMmE1zMos4Oay1r1C2ZgUTbYePRoXPnxcg8r0A1GisBR7peVladgn5hrFMWLYebdvvCXFUQ8gY4bnVq3li1fP8e0cnmWwG09OBFYnD/D9yUj7FONvj1Ljis+faFH+1CBmpUMs93H/maHndY9DT1C9aTexjp324AOmcwy1PreKpF9cg2RRe5w7o2AWeoDMOkZeWc4p2OCEgTCxXfGKSTej8ADJSw3oPljq0rXPpzSriU66n9qZbPzyAjOPws4WrWLVxK07rZrzWN1DtrZAaRNWPR694mpHZJCdpj9qgMLECzjqtiMDZVgFAbfdgtUv3Sw5dg2/m3NETGPv0i9hFwQMgjngIGWP41X2zmb/8OaS3C3p7IJmEbBYVCqNiCYJrnudky+V4bagNwanV0PhRm8BEG6lSqD2CWuuRfDFPe7eQEc2ox1dQevqkowsgIsyaPZsZt92O8TxwXJTrguuiPEEaJ6FffpaabIrR2qXKhtpiobEGTh4fIHCKBeUaNSCYTR65l3K0tykGPCH+3aupm37HAVXqEfFA3nV5rrmFxa9u5IVVq+h8Yh6mpQ3e9Abi77sCiXJIJAhuWMcY7XKcZai0hYYwfKQGTjypiMBYCyoUpAzSLDjrcnTsEJKOwquo4ZRVm7GKi9/lhcMHEKEtnWHx5haWbd1Nb38vks2gMv1ku9poe2Ih7o6dKC9fAJBzz0evXEKV63Cidij3tQagocQwvlpTP8bCPsFGEoADqgW813N0bzP0pCAnitqHH2fEZy46fAA/RBxjWNvazdPN7Wzo6CfnOhg3j8mnED/Os368D+Ak++hctozM+vWoE8YgTpbQzu2M0g41yviRQkVI0RAVxtUojmuwsepsJC5gFHQJssUh+YbHnn5/HSiCF1/C2PseeVcYDckDAtM6BzMsb+7gPzs66EpnC1bwF6wxHuLu3ZxMJo3KDkJ+AMmmIZuia91rJF0LvWIJVRhOsDwSSkjYQqUPEBNGV2kq6zR6pA1xUKKQHoGdHtlNeTq6YNAovEiU8S82UxSLv+WFQwI4dzZOnrtu27SlzZ0F6xciWqQgXmQfQD6NcR3wRef3QkjO/0yxu72P7JPziQ4OMEq7VGhDXCvKAkJ1GOpjioYqxYiRFro6AKXiEyADQJvBeSNPV5swmFNkRKi550Gqv3LZ0AG8uydO7k1npj2wtpmXW/cUxO+fBQgvh7j5ggfIZdD5DJJLYXIZ+pMD7Fn8L4LbNlOHodpyKVOKuDbEQoqRYeH4ONRVWpRWWSh/+uW/VpA2SJfB25Kndzf0pSAjYJ81mZMfW4xWeyvUQ3qg0FYRpgnCwte387fXd5N1nL0e8Bzw8ns/HQeVy2CcNCqfYaC3j/ZX1mKvXEaVeNRqh5gSYpYiZgsVQUVNxFATVxxXaRGu0OhyG6KgtEZyBnoMptlhcIehu89nEnK6iAnPbyZ0XO0HANjX2PItv6N/kDuWr6G1P1UQbzw/z/sAOZTjr4UM2WSS1k1bkafmU+7kOF57lClDqRZKfYAAVBUL1VFFVQwqyjWhhIUaYb0N4Bikz0CLR267S1e3kMpDFsWIn0yj9tqbC8fNoXngHZ05P61nXYe5L29k0YbNiOsWpi8eN89Adw972toxj/+ZRHqgID6hDCUaokqIBqA8KFSEFRVRRWUMyhKaQJkFsX0AlkZ8gKQgnR7eNoeeLmEg44eRgtoTmbB8PVZR8IMD7F89YgzPbt3JAytfoS+ZRAoxn6K3swu1YC6Jvh6qtcsIDCWWUKIUJbZQFvTTp5CIKMpLFImYpiSusOIWlGqIgGgbM/Zi5Iwp6LIGpLON1MN/YM+cWeQ8IS9Q/7cllJ0z+fAB9oN09PfzzMZtnFFXQ7y0lKcX/J1Hrv4xZZkkcQWRgvUVURtiRUIiJIwIK8oi/oRoTBOMKpRv/YjGJOLIRb/FGv9F1L6FWkjZIgwufpKOa68kvaeL4gu+xOjZf+Frs7ce2daiv05emv93Hvn2JZQoKPHjPqCIB4REsRAPq70zApGIIhjRWFENYQuTSCCX/xGr/tz37syJkNmykV1fv5BUTxfjVr7Btx5PNc070r1RMcLCH17J9r88SGkRlIcgEYZ4GEqLNSVhCBUrAiGFFdEQUkhxGK/pYexxFxSy0MGGnw2zu3ey7dILKf3yN5gavqRp3vqj0NxNtu3mmU+Oo7woS2UpxCOK4rAiEFBYtkIFBBUECWiUpfC++mus86agh9AT9SFynR3suub7XDfh2qb5LaEj3532s9WeO68m+OzvKY4rdFAVhO7byt/q5IsH5sLrsD9/87ti/lA9RT9UvVyaSx/Y1jTvteyRB/AFeO2b4L7TUH67xwJcQeVB/Gozr5AMeI1fx/rWvWj93of2Q4F84H3gUA985/fGr5We+TKqb0mh5+/ndpUFldpb65jyT6IuexSrKPJBHnv45fThvMXpWYa97gv+iQAMmJyg+gUJX4A+fxY65B8ADn8cVQ/4ssS4mFcmY6VfLYS/kQAy4jvocdPRVtHhK9/3y6MO4L/HbX8IveUaJDoJ6n+Bip31VjX5vxJ8KADGTSFOFypYV9ighnp9NBS49wNoRMxkmTnJv770byqH5RgzfV3fls7c0gOvWX25U16YikgfxhuWF90otfcfBPeeddd+6x54NbjvwntYmh/W7Lf8wQGGqfKDyRra5ewwhvovpcUzi0Uc9PIAAAAASUVORK5CYII=",YUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAqxJREFUaEPtmkuOElEUhv97sQc6sV2BPOIcBxITB8IGBFYgPeAhDoQViCsQEoMNmMgOqnEDjQOjaQcy10C5Ahn1pFPnmKJFaahbQAhwqmNNqwr+73x1X3VLIeCHCnh+LALkP8VxcBAXCXZxMUDn0WA221WA518rIAcIha5cJAaGOAzgNpqJxjTTP4DymVv1OJqJrpjAXkGefalA6T6aiUmRZwFy0MrGmwd90QClz0noUHha6P8AO7e1iYFY3sqxVo+NoZl/DtvZmh9UOG/FtVYvTNcQ8Ue7kzW3w00AIgWrq5R+6heQHErZ77LGdhQuWUnN+tT8G9wdtjJHxvPbBmCo/qj1JGUKIB7ADe5nIRAAfhYCAeBnITAAJguBATBZCBSAl4VAAXhZkAvAGEPhcL7/n7dwr2zFHUd/kzeQMVWh9GuvYLPjQrhkhTXrkTgARXTELsASC2IB4BrQOATrl8ssRIs9FmcAoAbdRE2f69EyC9FC75fXNZdQe5rMMaE36qQz0aJVB7TndHnaFqKFExtK3fW2sC8A5sGonbnv301SY9jKVmLF3gkDaVEAYIyH7fQdN1Sk+OFUgZMLARljukURdY66eV2xJwNu2GErPVlj+1pgegW4Y4Z3l7u3NjAZdRVF7OOsvcyCYqqy1u9lPUJzAL4WHKoiJNzAMgviulE3sHYo9WNmQb984ub1EO2xEc8D+FowDsXCANa3IAxgfQsCAdazIBBgPQtCAVa3IBRgdQuCAVazsEWAWMnKEWFxlvmnT7/BqH/vZH3316KFXo1B7l6X58Eafft4S6/XzcvAHZ7Z5PX6DmOa/+o6A8TBlMTbh3URlTaFKJ/lAAwWt1ndG9yNbuYxyJksSsQdSl1+QTBT5MVPDaYb3uLSTwL9rfw03jX82ENm5Y2pfgNjgSpezjfRPQAAAABJRU5ErkJggg==",_Ue="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABIJJREFUaEPdmr1uG0cQx/+zjACnCvUGRxmpeVdECJCGegKSUgKkE1nIopUi5BNIfILIQCA7dBELLiPpKL+A6CJI4BSkkdYQ7w1yTZxC4U6wdzySJ37t8ktStiJws7f/3+7O7MweCQ+80QPXj2GAvV9trK3Z9xLs5qaFl1+1BrXFAb77owzZARKJmNG9gZFsAfgMJ5vPIk19gIN3atZtnGy+ujeCRwl5+nsZJBo42QwmeRCgAEEefvyiMQ+AVXItdJAEIxl7zyfw8Ai+d5z353k/Sr9lIBJWNNFzA1hlN4mP4nsizhCTDbol/LZahs/ELZZ86r3Mm6/2IgGsPdcWJK6mih4z5ZJx7NWyFaMVWSTAxv5lG4AFhg+BZ5DSB8ShERDL6nUtf6QNsSgAtXXEP+KvYOABERtPXOVkP2gLYvjXtey6tv3CAEquJVioFVAAleta/lj9fLznFliIn7UFAZAkU96LvKfVZzkA8CXLSkKxCHEYbCuDdvcABmJHmd4NQNlNJv5Gbpp2ne20MoDgkDJsPT+Z0E8BtPdP1QEXHH7k1Mf7wyw+YD1xy8I0PBqAhgCvMxDUdX72IFEl52L4oDMFsEqXh4KhH6cNhEemwwDREz6m9EX8oDMBCGbeJKbPIF51GQ+gHnKFnIsgRAdNF0Dtd8HiyjQkzsIwEQDwITspcuphEqgLMMuBNIv4YAU+levt3de5vg/cepNk5Q/hNtYFSO1fNknVB0tuDHjtn7Ipbu68gsDuyOEYDbLPt7QBYnnOkgGkkHnveb7O73fCxHBck531YBvprMDnB67d6YjmMrWrmU+QLH54kW/wn9uHkDQ50knhkPNLSwvAKrmZrgNPZSDGW4asE+CRgFa19S/gRcmblvgwVG2Rc9ZYLACjel3LBjPHzZxafoOTWtggyoKQmTpLpgBaW6grnps7OQioEzReA2upMjAy2kKDxcqIMfqRY1tdBBjl/gaS46YmTqx6pvbfXBF49PJ2K7CpkWNmtUMdW5Q+d7TDqDLcKLlH4KA4GWokZfHDwWkDIhFWZMtukou9xE4njCo9wVnwUbRHFeirBVCZqdzqpdi6AMEqPH1ThuShAn21AFSh9Jl5Mhftio3S5REYsa20MgBJVXLO4gecyQpEEI9LboFDfwji/AoAfICqsZmPxMwCEPXtlZSP4Ld3T5NaTiw7KVMfX3hJOUpAcPLqRCHJxekAst7L96cZz7MCg+/WBpgmSD0PC5bVXmzNCNCC7OSBtSSEdHu504MBiDLKIPnbLkNQGKLvAkCNy+93VM2gX7UNlIb9Cow9Sl/oO/qifCAAaH5jQ0hV+Otnoox6YB+l0YNpgo6/LBIghPjWgriZ5fbCh0SRnHMFpN8WDRCNzM2vMxBcALMqVNJjFKmK7S0k16GquOiqRF++/q2EyTtv23IzlwTWLIC7W4t84MbXDpWTBp+wAjZYZvD8y37iNA/FsvoevCsAaA1/ZlUDqg/dzOomTO9QWZbIce8lCiPewCQP/9Ug+uC9anF64/VmPjL/H/7ZQ28m7o3Vf2YfA17QVu2hAAAAAElFTkSuQmCC",zUe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAACb1JREFUWEftmdtvXEcdx78zcy57tdeX2HGTtE7jJukFkgZIpUpFAVU88GQQRZGQekHiASEVeOCZ9h0J8R/AOyJ5JlQJTwiBlCCVIlTUdZo0bu3Gt72cPefMBf3mslnHJl5QIlSpq4xn9+zu7Od85zu/+f0mDJ+xB/uM8eJz4Ec9Yw9U2Fy/0CqKxo+ZNMuQaEEaoDRA7lthgL4BH2hgYGzTuYaRBkYr1ysN+p7R9NwACoDR0IZuzYBzBiY4WCLAa9GKmI6uyQp+U/3ptZX9bv4/Anevf/NsrKOrUMaCMgkHS40ACZr6DGABONMwhbaQWnpQD+1gHTjon3E9mZIJBp5wiEYC0UpgJtgKYvGt5EdXbtwPvS9wdn15kTNzHdq06EcgARZgA7BVVFuFWUbg7jWBmtDoswRvxxhR2UM7YoJmYClH1EwgplOwKQFT41tKls9Xf7hb6X2B83eXfw1tXrOwNIWkcAAmG1hlDZBpsJ7rqZkAXHpo6j2sJmvQc7LGqMqWl4FFDKKZIJ6rgM1GMHUBCP2r5Pvv/GRU5f2B31vehEILmqbVA5N/CZas4AEJmnU1YKGV9a+WytrGlPdsYe2hHLyDJXCysAmuAARZIkZyuAY+H8M0ORCxleSNK8cfCGzay61igE07IA1OoH6xMauuB+57O3Q00CV1lfWvLn1PkKXxXh6BJRGU97D2PanMGUQ9QvJYHeJIBWZSABGQvHFll6h7FM7+sbzIBWsP7UDTSHaQGiyH9y2p6kDZjut1TgoTrI8OHp5uNtjBRgyCJSGGjZxsnC2qAunRBqLjNWA6AsQ4wO3lRa4IGM5zAbg0YCEyeFhsO2DTk9CkMEGTby2stragBUg3a+1gx/O+JnWDPUK0iAXSY3UkJyeAwwTMkLz2+wMUJmDD2tYSPkKgdNNrgcm/5NsdDbalgW0FTcCk7kBBk8LBGqO2CGHNRgtNoRjKGO88Fy0EZ6gt1FF9rgUspjbkJa+OA8y4AyYFrB3CgtNgfQN0lAVlGxrYlFB9p7BtOS06r7RX2YY06cKbNsYOR7AKxkO7mMzAMDVVRfP5GbBT1TGBV5cXuQzALkJYaB/OGC22bQVsKLC7CmajhMokNEFTpLAe9huItwdZQWkNaWFdc8A0vFOZNKb+UDXBoS8dAj9Tt7vKwQoTsBZtN4LbNCx07mKtVXhTAusKbE1CbxVQPaeyGUho2uksqLOGkg6wNBplALZuM3ZoZwtS3gFPxhFOnJtD9MKkvYsxgC8uMla2WbhlH/iH8Zciw10JfEythNrKobrk4xJ6IN3WTPG41JBKo/CgBFvC2cEpTFrcU9qtcYNGJHD2i/NIXpqyvh4PWMi2/TT5KsTisOA62irLbhXQdwrIzRxqu4AmW2ROVSk1Sg+beyUtsLeCS0ucJVzvZwFAnTN89dkFVL4+7RR+/aA4vHlxkWkP7KFpZFa4jQI7CuyjAuxfBeTtAeSnA6huYSOFHCgUSiM31BzgqLLBEqX3Lilsr3ngwhhMCoFvnF5A/cKMzTGSH4wDzDxwiIA2xAF2wW0qsHYOvDtAcbMHuZ5B7pTIc4m+JguYIaz1rrdBAL8H7Regh6abJMUfjxK8fOowGudn7MYRv/nOAXGYFBaqDe5Sv2FNQtC5AaPo8F4G/acu8vd30F/vo1MqCztU1XqT1qjGptRIZ+aQNuvoiQRxcwLNyQlEcWrTSiYEFDi0URBGYyqN0DqaYpVJJPUUL3zvlwcAZ2QJAmaQmmGgBPqloM0KFaExKXNEf+6huLSGj/65gRXFoReOIVlcQmXxBGpzC6g9dgyYmsH8sSfQbDYhhPifCxFGe/bIY28uQcBGtwsw9IoIm1mMT/sx1vqT2MrnMZXkePHDv2H1rwvg51/G0S+cRX32ENI0tfnAw36MBayg21kZYWsQYa2X4NbOJG52zuGDjSXcuaNxvPt3/OLNVxHH8cPm2zPeWMCFQrtTRNgYRFjtpPiw8wQ+2D6P23dbuH0zx0e3t/HSaYFvn0nx4jOnkMRN1Gq0Mz38x1jAmWTtnQEBx7jTSXG79yRWds5hdWsSO5sKg0xjalbguSPv48vNP+DkbB35ThPcLCCOF1CqSSSVWRjewuzsHCqVygN9XJYler0e1tZuIo0yGLWGPFsHsInTZ352sIe7BW/vkH/7EVZ7KT7uP47V3tO40z2CbGCLXjRqGienb+Ar83/BM4d6qBrpoghtMD73ULlGv1NifZ0S6QaqSQ3cRMNc2BiNfm8bnGWYm0tRb8QwhBcz1yKG9OnLBwN3Cm4tsZVFWO/H+KQ/g43BEu4OjqBTNmzEm66s42jzBp6duYWlqT5qXNpqZFftF+pAX7XY92yq5vMUW4ACFJEIjioMY3sPLP4L4G4RoZML3KUokaXYLhbQK2dR6Do4FBrJJzhcu4kTrS6OTuSo0jkAZXSUNxchy6M8mvZfV2nYYnZ4NuHLfIK2wIAZAUdENR2QnhpD4V7J271SoFMIdAYRtnJ6niCTE1AmAWcFGvE25ms5FiZyzFcLxEx54JEjgZCaugTYZX7UhxzFr1FD4ZCmTTC7u1mF7XOG9NSlgy1Bi25QCvRKjm4ZoVfQ5sGRKwZlGGJu0EgUWhWJ2VqJVlpCUHFpLQCwULhaYK92KLfsyY/PJUNQISQCDP0IePrUGMClRnsg3Q6XSYZMChSSo9TM/hYBV2ONZiLRqpaoRcpNtfXoCLC3gb0eSi6vsH09Cmy9HFS+p/hYwBrGAheSYSBJWW63aVKXHhE3qEQatVihmShE9Oshb7bT7qHDtVDQBujhyY8ntjmLhyQfB3AOpEtjKGxg2gRIoKVtDpZ+h8Ym4EQYVGJl8wvmzxqGPtUjwEHlIay3BBUI/qRqmGQNof1CFEB64gBguucs+67RYJAES8pqlwjZapwWNAFbaAVBpUlI8n0aOlSYru9RdwR0FDiEuBDmaPFxbKVPXnKlx8hk7NlPB9krVzX4BVslaea8O8wzDWJOa0SDMwNXSvkoYOOrt0RYZOEmQtEW7BBg76chS9jFZ9fmHytLly4cCJxl37nAwK+6ss751h/nWoVt6KRbsNPqF1RQMwAPX4cz4fA5P1g4bt218Dysz8W1Fl+rPvXbawcCe1u8xYCfB1hSOKAPA2NQK/hzWLj6WjCcbdjez0T4TKDwpz5DqFA4gL2dnvjdW/dP/wMT2Cx75XUGRtCLu74YlA0LJ4Sq/YCDZQJ0UHZ00Y34lzHcMMa8nS5dvrzHqyMF0H7vDa9l2UUCdtAUttyfe4/Rl/YcY5/3dl277/vh4xFWqscv7/tfBQ9cdA+k/z+/+fBrmkd8Q58DP2KB8W8FtFSWApzM+gAAAABJRU5ErkJggg==",OUe=""+new URL("xueks1-75c367fa.png",import.meta.url).href,jUe=""+new URL("xueks2-f93a074a.png",import.meta.url).href,PUe=""+new URL("xueks3-fefa2f69.png",import.meta.url).href,HUe=""+new URL("xueks4-e0fd8b31.png",import.meta.url).href,KUe=""+new URL("xueks5-679e1a29.png",import.meta.url).href,qUe=""+new URL("xueks6-f9095453.png",import.meta.url).href,$Ue=""+new URL("xueks7-235509e2.png",import.meta.url).href,eFe=""+new URL("xueks8-0acbc94c.png",import.meta.url).href,tFe=""+new URL("xueks9-f87a6135.png",import.meta.url).href,iFe=""+new URL("youhq-bad7cbb1.png",import.meta.url).href,nFe=""+new URL("youhwt-d3acff5c.png",import.meta.url).href,sFe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAA8ZJREFUSEu1lW1IW2cUx3/Pza1mVeuVBitbRjNwLIXK7Ohmv4xOWvCFlUbqaJF2y5hjdMypZDGKjjnwg6YtCJHR2S8VHGysRaQOWxzYDW1dh1sG8cOGIx2Is2411zVdg01yt3uNL4lapdAH7od7n/P8f+ec55xzBU94iSesz9YArw3L7H/Rjsm0G4RMLDZPFD+dOepmDj4a4Jq2IG93AY7/Hz9ok2gijMAC2gEQUZA66djRvxFoY0Cjeow4LYbArfEvuF4cXSPScNcKpmYE+Wixt/HunEq1WR/gnq9FaKWEF97gs9zwZmmgQT0EWifEy1IhawHueweRYi3cCR3h4nORVeJKUVGRKxwOZ05MTHwMJIOb7h0kHm3jB3/x6miTAc6gmdycm2gLZZzJnUmIy3a7/Z3y8vL2iooKxWw2MzAwMOPz+drn5uY+B1acaAz50KSrdGR/s+RYMqDhn7cgnodX6dANsrKyjlZWVp6tqqrKVxSFaDRqPJFIBP29q6srMDQ01DI9Pb14ye5QIRIuOnJObQBQB5G007Tn3AZK859/YbD2ww8oLCw0hJeWHoX+PjMzQ319PVPynjqOX5o0PG9Qf8SrvIzrwW7kh4UpESQ2F5UcVN/q4/s2Dj17n+rqaqxWq7Ghqiqtra1MTU1RUFDAt6O/nKDmt5No4iKCFmLpDkyRAeJS9Qrg/dlMstKu0KEUJzx1cHKoD0mGWARunOX4KxYjPaOjo5SUlOB0OvH7/bjdbgfO4DVyla9BHECgEpecnNkxmgzI3DaIN+fVZcCbw308vA/p2ZCRCz9dwPbnJXw+HzabzYhkZGSEpqYmvRH70Ytkl3KBuOm8Lq7rpKboZ7zKvqQIdAuTGeR0+LWf0oxxPB6Pcck6IBAIUFNTswhYZ6UAQldYoIZO45IdHPuyj6d2gmxePPr7VQPQ3NyMxWIx7qC3t5eenp7XgeXSXM1Zp0w1G97sTw2j7buO8sz+dl56126A/rjOYdN3BmBsbIzu7u7JYDDYAny1tVnUOizz776bEKtY1fJmtqW/x54TjWRb8+x/XSYjI0MdHx/XhfVGW6lfvVBSRsvaUeGZL0HT6pgNVaSOCuCTxIg4p1drktf6iBGxRrxK2cYpWtrxzNeiaaXrQNbPxNKwkziSaNJlu83GdSNCauPO3Wsp0SwK1IVspAkPgjziC6dXza8tAIzZMpuHlOZC4zBCCwC3E01kRWh7DRXBedqVy1u75I2s9O8fze1FYEMImTgq2oMA557++1FH1jbaZtaPsb+1n/5jCC8d+Q8662t8FY6VlwAAAABJRU5ErkJggg==",oFe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAfdJREFUSEvF1U9IFFEcwPHvQwkPhhtUmxdJMBI81K0dSJK1YxAdh72YIgU5S9DFi4blTUHd3Q5RtEUt20GRbgW2eLHm0jEIEhIvuriwU7sHicVp3+bKuPmct7XSuw3z5n3e+/15IzjiIVTrh0KhS67rntHxhRA527ZXDpqrBEzT3IpEIid1gFQq5aTT6RN1AZZl5WOxWEAHiEajTjweVwJngZmaheYsy1psFHARuALMeZFGnuD/AOFwOBkMBmX4fEc2m13LZDI3VUk+8AQMfGshEGjxXV1OcJxtnndu+wGPgAvAJznx9IPvX42O5i4d4MN6aXNrvK3dD5BJfgm8At4ZiUL+yY1WrTIdXiw6H0eOK8tUhmgIWACagSlg1EgUXtcJ9AL9NadIyU6W3XrN8+IOMG8kCqN1Ap2AtygiQAXwjvu7DxMNCNFdYNkLyPBI9cXvJP/YMDqatC47e720mh1vO1ez2T+A/e//vUwPB9xYf5JjrVqNxs/imoi+rzaazGmu3B0+wDMzT/dVrTLly5IjBivX9flyJU4CZhkZqc3BvhC59QMhYBYYBorAbeCt8ofzF8DT3XK3PTsdayRwCkhWb4IqogYeX8/T3qOXg43POXHrjQRkqT8ExoCSRNTAdN9lmipd7j922BT3lr2h2ftGCfivqjfjF4O0xpkfneTiAAAAAElFTkSuQmCC",rFe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAABNdJREFUSEu1lXtQVFUcxz8XFpYFdhHlsYo8fICpaNqTSseY1HyNVO5oD1F8MKVZM86EaYpgYpqRMtWkFQgxUCYqAakzpjyySJghGhUX0BBCXUKGJfbB7nJ3b7PLaGiCTk2/mfvHOffc3+d3fud7v0fgfw7BmT87OzsiJiZmube393/GmUwmMSUlJaugoKDNmcwFaGhoSLHZbKlBQUE4n/5x+Trkl8KPdXC1A2Tu8MBIePYR0EyDIb7/rKm4uDg+Li4u7xagpaUlpaamJjUyMpLo6GjXF8YeeHtfO4dK2/GLiiY4BHyUYLeDoQtam8DSCTtXwmvzb4cUFBSsWLx4cc5tAIvFkhoVFeVa2aaHWRvBdPljwodpUa9Own34CQTfKyDJcOgfxK6bi17nx08nYc1s+CDxb8igANEOszZBU+sFRonvE7pTjeeYPMYLZtTYEYEreNBiCaH3fBqmxucoLYGtGnhL0wcZFLD/GCTt0/F4+GGUsfvRF3qxdm0zMx/tRGYCyQ16lXDRzZN8VBh/TUdfu5zyb+HcPhg74h6AyGVdBDqyGBLhj+9jO1AeU7DjzQbURhGkvgodHmAYC/V+HnxuD8Z8+geqjo/ihYmQnjgIoF1vJyG5jIcTV3Pj+CKWaaoxXZDz+oxWODUCKtQgt8OiFqToLjqnwlcyJVWNG9Cd3sL1X0D7xSCAjIwMfu6KIcBPhywsl2cCDVQVDWPJBD2TK9Q4hT0aGKkQ4d1ajJEOKtVy8m7MxVxWSNGX0FMMhUcHUFFlSxRbjkC0cg9DlmbwXrgOzxp3fKuHUlcURq4gMEuScJ3l1lrMk2xUh3qS3fUU1rJSvvkM9Ifh+xMDAJq6o1j6EcxcZEWxMIJ3hHbCLjmQN3jBrkkguvUdQogZks67zqE0QMGRtucxlOVz6hAYCgdpkSogiogEmPcy+Ma+yJzgEuaZzPjVgdCoguoAUNghVocYYqMucDR7zmlobpqP6doTKHpknEkXBpdp7AYw+kHk9CqU0+N4Q+ggtNuOz+8gM/bJ1OwvY3dVGoWVrxIe6El3j8Qfegm5ByTO9STYUjTwn1x+DuZshdkaUD20B9WEnSzEwBSsyBx97rX363Qamtawe5UXeqNEgJ9AXbOdpCwrdgfIMGTUZY5YP6BVbDwAmRUwfQ54R5xENjENH9VFArFj0I3h9PZySlK9KT4r0qZ3UFgpsm2pnDa9xCclNmdeURDFyPoc/2aXmzrNrr8XOe1i/X7ILoepT0JIBAgqLYJPM+0X1CiujiP5JTmHz/RSXOU0Dxgf6kaSRs7KvT2usSRJiY1Zqsy7Am7a1sEK2JYHrV0QNBy8leAwWgmSi+RvUDB7s9nVEmc8PVmGZpqMdZ9a+gCQ2pip3DYo4CbIeRec1cK1Dmjr6qX2N6ur/3aHRO6pXoL9BdeOKrV2knOtfXbikFZcOqDKcQHq6+s3h4WFpWm12tuN/S6jP20q1mWrXRfPkhkexE6SuVTU0S3xSqwHqXlWDlb0WqyiMKo5x7fNBUhISIiIj49fYLVaZfckANuPTZzSaR26/M61TokqFfDhUeumxkzVrlsqup+kd64Zt8qwBYHNgFe/dxZBkpLrs1TpN+dcO/i3MSHBqBbdHQsQhBAk6ZrN7vadsy398/0nwP0U9he3Amg3HqbCNAAAAABJRU5ErkJggg==",lBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPTSURBVHgB7VpBctowFP2Su2m6SG4Qh073zQlKLxDCDZKZhmQXcoLACUpWJUxnoCcw5AIlJ2i6z1D1Bu0qm6Lf/9WYGGKDDZbBHb8ZxpaQQM/6+v99WQAFChQoYBEiTiP3g1eWDhxS822kImQAGpjSGm/BgaFqVxUsibkE3ZpXlyAvqdUOrBEaoQVbuqla1V+QEDLqC/dscCmF/LhucgwpoC4eHA+WQCjB1yfekURowAZBAJZdGhckRPgMSnkIGwgByccVSlADbsMGQoYsF7Y28hWRxCPXYB6wVxv0UMou+QqvVPMaYW1yTRAE7k5uQZbDmuSbYAz89wRfwKpAoOCLv6fqhNhN1kds24q3qxOkgekxVtXn6tCvKp0OWnQ5j+qipd4Pyq/S6U2XCB+BBaRiolJKzz3zXL+sX+oGXVRoY4RmkBwrJlvkzNggDdAsCpRffZKsGbXQx7PNSKirUafS8MtG61pWTKk5GVLtrkCn65dploYUmS/8MpNDod/7ZZJdb43WtYxUvajRi7XBZNCjTwctQNHneyI3MU2eaTZryACphwlW/mx6fllvjY+J3QWR63HZrXs7kswZMsorrcRBNj02Qb7n9TjqHLQmXz5QfpkROTMWsATBnpVmK1hXqt1QAg11yBD2CKK4m83AtRz3/wX57GCFIHtMs/Ye4c8kOxkNz8OHTaRO0A8H/uzxWgxuN6hOtU/utgkZIXWCDgX42XDwLHy0Kw1E+AIZIF2CJMPu20+aVGqHSbnmnsMHbT9Omm7pOs32HVhGmgSvpmQYa0yBU1sJQc3KJkymXIUozZoSUiHIMzG6rkzcv9koDtOYRrNOyTkVplnTxMoEH51K1S+bdefIblT72fXImtUmydXyQYppiLpJV5dmzeUqWnfnZJruvG5mPZ5436mfMhV/6CE5YsjkIWWsRpBMjmTZzGxhrK60HpfqlxTFplPeURDMO3JFEAX+gISI7UUFwi3Fu7us053A/6vxK+gn7LaYIAdyFtD3108aM09YSFCgvsorOUYMgs9MkjXnO/qs49U2p1i9JB2SKhkmZX0vcw7K9OF1GNsPJPWi/MPWc7g5uAVI5uQWOxkp2Bx7gap9yHDbbwYqWBAg3EUdwgki/qRXYP7P0DvwgVKdSjPqj9YBk1Dj04OOipGhB4HMewMpvwXrOFxQOjMUfPpojaC9nB1KrSo0e+VgPeWUe2EnoiJPOlHiekRb7JGJ60aBXg1M7Z4HMP8oF2XnjpY9FCYsbBwmIqQdHadjHcZ7QyY7FnAYdZIhU/AugtSKdgX684gVKFCgQCb4C6Y1bO4otCN4AAAAAElFTkSuQmCC",Zae="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAAAp5JREFUSEvF1ltIFGEUB/D/mdnVlOhBIliDckcJujxkNyss6qGHFNxdhKULFFbOrhUS9VjBPNR7kEa7mtFDhBi6oyBBD12giMikQsPYXbUkFUHpzu7OzIndUFYz28+FmqeBOXN+nO9835wh/IOL0o2iOv2obMGTrcvgV0sc8cv9mjeezDWDrPKF1tlAfWBMAPw9K4hoNbHliQQ9oVlI8YmOzSxLLwh8IBJwty4WKfa3r2CWxwE6FA1U3fn/SKHatTxHMpaKVDR03TMkVImihlpAVCOAjEUDLocg0l5Okq0kU8Ri6+tgwH1XCMk0+dw4IUTxdR4EuCxTjIEvgwHXRUEk1AjgcGoLWqixy9y7EMhxKT7Q4voohGRaQVbLNR+yR3tgez/2+QJZeBSZij1Gm9fMCknfwpJJO8LNVc+gaZIyWmqC8RqEDQCemmx4h4PVo9OY0HKV+DpdFnFp8mXJMJrDzdUjyXunTw8xW9223NxbHEvUM+Ecybw1cs39IflcCPlTT4pOdmyUDKk1Wti7FppmFauheiY6b9pp+3BD1aAQ4vTp+4hpfaqShO12+GbFxDSsqPpzgF9Gp+Knkn1R/HodGBoglRMlPmX8gZy3J2nlKar+BIS3UccyP7S9htOv1xLjEoBKMJWD5e5oU+W7Bb/ChWpXfk6+kZMMspm5P8JXK2Jzl9Cp6g8BDBVgrLYn6EsoaqgTRLtg593RBveb6fiZobXYeaKo+n0QxmGhDxKdBXEjmM/Asm/7ayUih1FR9W4Q9puETRLjCsCjeY74kd/Gr1LbvgaSPJAav4RvIgiRWWZZchMR7WTwvbzJ2PH+tl/zfVZPUmfAr9dKjEoRIBkbM2LHRm54J51+/XSBtTLQE9ySSM8x629FNHmm8T8B/QHSKPa1fQIAAAAASUVORK5CYII=",aBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAABAxJREFUSEu9lX9M1HUYx9/3iwNODhA4QrFAOTwIBWx4ZtKJsgHmISlLCpHlXBbkhFwWWGgcpRLLXBskW2tNxWlzyUb+oAYEDDhuYXcTbMAUApsYECd4cPfl7trnQ/fVi+/F1VqfP7/f5/m8Ps/zvJ/n4eF/ODwHY/2713asiwzM+a+YMxarqb5rpKK/Or2LQiL2XxEXpsnH89IivLkgdjtw48449HcmMDnNwA5gyWIvJEQEIEwmcfmuojM/1R3fHa92QKTvpEca9yavcHKw2uw43zKIz6/1ISxYgtgwfwRJxdTm9sgUdP1jkHgIcUCtQGJ00DzYsUvd14szY1JdQowmBq9VaiHz9URx5tMI8ffifHHLrd9QUqNHYpQMJTtXQShgK4C/hUw8tCD7kzZkJT6FnI3hbpXp4JddEPJ5OJYTBz5/DjQPciB1hVHbOwqlPBDdQ0bIl/jgrXSFWwCH0c6KVmxbG4pXng/jhpCaNN0cQfvPo9RALOJjgyII1flKt0GjD8xI0zTi6vtJCJSKudPlL/HAoa9u0Et9vEQ4W/gsYp70YyFEVXs+60Bz9328nRGF11Pl8x6Qd1qHlPgQGhFnTVTRMqSWNsJPIsKZgvWIXuZLLzEMTmBqmkGCPACK/Dr24r5KNZt/x8cGwwi+bv8FVfsSuCGvblqOLZomnNr7DBRLpdSPpEB56Dp4POCHsmScaxnAt7pfsX9rJJXvc1FBkHqLWLDJYsVWTRMaNJtdq+uBiXFyIkpTHf4eM4wVjZpk2oSOY5m14e6YCeHBi5zSVnLegNKXV3NDdqxbhoraW/gwO9bJ6feHFhgGJhDs58lG6DB4oawJtUUqp/4wM1aIRQJuSFp8CHI+baehPn7IKIkrvAoBn4feSjX9ZWFsyKvW4eSeNVQkjlOrHcaPt8ddR5KbFE7zrz2RApGQzzqaGRtyT7XBQ8hHUWYMVeAX+UqUXryJ47vjsMhTSG0vtQ+h+KweUi8hOspTUP5ND/dYIZ2bGC1DhjKUsz++09/DG1Wd0JanIODPOUYML7QOgtRi1kqEDtQdVuFy5zA3pKN3FCU1BtQf3eR2E943zmBfVSd6hows5EjWKiIKbojNZqe5Jk345pZIt0HEcPuJZmyIkmFqhqF+IgHf9RQmsn3p41bkJi1HtmpuDi10SJqJMD7aFQuhYK6eC456oqhdJ9sQGihBgXol5CE+nBxd3xjeqzFgrTwAR/7JqHfcRpZWTfMAquv76T4hFy1d7A3zrBV3x6fRYLgHX4kIhXRpyeY94q+RiPOTwycL0hWPBP+Yi81up0Ul63ds0uz2+j16QX/5g6y4F9k1tubglezNq5/YZrXaPBbKvzv/bXaY6jqHy/pPZ/Q82pXueP5Lmz8A9lDiKOb3VdsAAAAASUVORK5CYII=",dBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAAAmxJREFUSEvllktoE1EUhv8zk9Z0oSCKxYLSSWyNIAVRXBUKioKvJK01oAvFtsxEStGlKxV0485XtR1aHwtdWEwzneLCjYibbrpRKSgm01BLi0RprZuknTk6iQlNCU2cQja9u8twzjf3P/859xIqsKgCDBRAGmV96xKsbhA2O4fTjFDtevT1/vFfuRx5iK87siVtimNg7HIOyEYyMGb8TDVjKGTa+zzEe2nkGFv8GuCr8f7gbacgj6I9ANAN5qa4GvxYAPGER06CWSfGoZgaeOsUIinDPQThHpnWgdhA6/h6gNT53zVMR5vsowqmEPv8OLCQk69e1n1VvOROszifGPAbK2X1hiN7LRZvpV1m53Rv249V5fLK2gUmPGVQXKx27bMtKSnaEQLeADxvsrknoZ6esZNIitYP5g+GGuwtVsu8u4oV3iNHz4HoOYApk/iyyBQBMOdioeGLeiqZBUSHCNTOjJuGGrj235BsEr2dYA39C05aNVbD5J3Wucy3sPaSGGcALDBwlwiZvshIlOLB2JPgVFnukpRoO4GKQjyKNgugttjfW0zKpOpXS0LqlZGzAviFLddfma4AeLVcLknWjxKxBvCiSWght5U3Qu60q0IkJXqeQM9KFd6j6IcBUyem0ZgaCJVdkx11m95/m51rtgPEtDC+3MKNsu7jFRb2do3utzZQ0ug9kZDCwweJ6TqRdTHW1/a9pFxORss6GSu5Uc+EHqMvYI9rR8sja4MgdBQd9bs7tI2LVfgEYKej7MuC7EurZnuqZeJGKF1Q+EwHd2m1EKiTiLetAWS4xdTgxMPQ73z3ryFZ2aEVea38AZD9kSi0dD5YAAAAAElFTkSuQmCC",cBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAABF1JREFUSEu9VW2IVFUYft4zM3q3ZtKlaF0oJUSpCLHYLCFpxAqWuefOrOxQFPnDCMMfghnUbpCy9UMMJAr6oVhBWtnF/bjvnV2VwklMk7LvH0kfmApZFJRONbPNnLc5yx2ZdcbFX55/97znnud9n+d530O4CouuAgauCMR13UVE1CMiC5RSjjHmnIgcKRQK39okPc9LicgxY8zeQqHw4qWJzwSitNaPicjTRLQUgAD4C0AFwI0AfmDmxRbAGPMZES0GUALQxcz/NAO1BdFa3wCAiWiZiOwHsMdxnILv+xZkam3ZskUdP348GY/HvwAwRyn1pDFmWETWdnR07PF9f7JxtgWkt7f3png8fhRAkogeDYLAgrRdWusRADlLYxiGpz3POywiK0TEJvNOGIbr7Y/TQDKZTKdS6jCAzlqt1jM+Pn6u+XYbTyQSc0ZHR0/Z/Ww222+M8Rsgdk9r/QyAlwHsY+b+FhDXdTcT0XNEdE8QBF/bA+l0Op5MJtcT0SYA8+2ezbRUKs0rFotlrfXfAHaLyLvGmO5YLPYGgDHHcdY0KLtYSV9f3/XVavU0gF3MvCHK6hoAAYCVAN40xnyglCrbzHt6el47ceLEsC0IgAW6diprot2zZ89+oq0m2Wx2jTFmZ6VSufngwYO/RSAv1N00ICK9YRgWG9Sl02knlUodAnAvgH5m3pfL5ZYaY24tl8sci8U6JyYmzrYIr7XeCWA5M99hg1FlvxPRtiAInm38kMvl5tZqte8BpIholYj8AeB0w7au6w5Zah3Huc73/do0TbTWH9WDF4IgcG3Add27lFKfApgbBMGFBojW+hiAWxKJxJ3Dw8O/eJ53xhjzdhiGg/ZMJpNZq5TaFY/Hu0ZGRqYYuaiJ1tpeeJaZ+yKQZUqpI0EQzLrUv/l8vsP3/X8jSq3TDjDzuui/h4noPaXU/LGxsTPTQFzX3U9EDjOnI7oWV6vVk/Xx8UAYhh/O0CvnAWxg5rciUEvtVqvL6Ojon5dWYkVez8zzIutacX8EUGbmhe1AMpnMdqXUxuastdbWjbcx86IW4TOZzArbiCLySBiGe+0Bz/OWiMhXAMaVUk81yrfuSiaTg0T0PBENBEGwLUosmUqlfjbGvNI8KC9qks/nY5VK5XMRSTDz7U1CPwTAt26qJ/AdgPNEtARAB4Ahx3GGGi7SWm+vD9GNdSMsLBQKP7VUEom2nIiOisj2MAxth0+tfD4/q1wuPw7gbvutlDo1OTnpT0xMWDqnluu6y4joYyIaCoJg2rhvGZCe520SEVv+S8y8+XKCN+97nrfSGDNCRF92d3c/uGPHjv+a4y0glrZyuWyH3Nb66LJdPsDMn7QDiyb2AIB1InJIKbW6uafa0tV8keu6q+qP0+v2MRKRbwAcAXCSiEhEuojIUnc/gJqIDJZKpVeLxWK1XTIzPr+RGVYbY7JEdF99SC6ILvm1Pnms6/bFYrH3G/1wOWqv6I2/El1mOnNVQP4HeDjyKAodu7YAAAAASUVORK5CYII=",hBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAAAi1JREFUSEvtlE9o03AUx9/7NTVBGIoiFGQIIrIJPfXiWZGS0KRlkMMEEWQUPAleveTmGILIboWhBz2MHsJ+v7RF6MCLoFh6EPyDNwVnETw4kKSY5tlIAtq1TVP0thzz+773Sd73/b4IU55qtZrt9Xoq55xP0yWd4TSBYRgLRPRNCHEkqdG080NIqumNHZemaWcymcwzAGAAsAgAH4lowBhb4Zy/TkUAgIme6Lp+FQCeRA0DRLzNOX+QFhDqk4y/T0S3EPEO5/zuPIBESKVSOT4YDN76vr/UarX2/znENM1jnuftRp70XdfNt9vt76MgwzA2fd/fbDabHyZ9xNhxFYvFE7Ist4novaIo1/r9/gYRrbquuzwKMgzjERGtBEFgNhqNp+NAByCmaWY8z+sCwCchhB4WWZbFut3uOhHdQMTHI40uEVE+ercmhNgaBU2CvAzjxHGcYgzpdDrriHgAEgSBiojnfxuMuJXL5W7WarWff4KmjWuXiN6F43Jdd4MxtirL8nK9Xv/Ll2hc1wFgrVAoPLQsK0j8k1gQG09E54Z3ZF9RlPwoINTqun4PALaFEK9SGR+LVVU9JUnS3nB7Tv6XFQ5Bh1E/k/GapuUYY0sAcBQRd4joSliYzWb3bNueeLNTGR9l1nMAuBAXIuKXcSs8S55NTOFyubw4jIo3ALAAAD8kSTpr2/bXWZrONK5YpOv6RQAIQ/KyEOLFPIDEqA8FpVLptOM4n+cFhHW/AGQgDyhHORyqAAAAAElFTkSuQmCC",uBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHZSURBVHgB1VRdasJAEN6s0QcRmiPoDfQG8U1EbW7Q3qD2BLUnqJ6g3iApCvqWeIPcwD3CiuCDqOk3kg1LmkhJq+AHw+5M1m/+ZezeYehKr9ezcTiGYTywAoiiaHM4HMbL5VL8cNDtdp9LpdIn+zvEdrttBUEgSTGVFeRPOCTOhud5khUAVQDZ+9Vq1YE6JRtPvZFFyQmmaYq0jbMr4+oOzCyjbdsWge4omUjb9/u9tdvthGqkBtJXlUolUIbMDIj7dDq5x+Nxjca9KfJareaTjXPuKPJ+vz+EuHEwcjab2XpQmQ7oIUjamIgQMiInRI57E7P+Pp/PR/RuMBiQ8w/Y6ywHyR4gCh9HHRE0lM1xHAuZ+CBtkq6TwyktpBvbJ3F5zkCW4WKx8OhusguQUjJEzkCkTFESmRY17i/67zCuX1QIuudOkap5XJaJXi76joWcQhcqM1pQJaiCo3j4L8ipLMN0T7Q+CQjpQonOlTdFNKKviKalaq4I4bANdRXbhGY79wzOXfyvNZNyZTmIoxAZdmpkcOGthWyoPNSDMDeD/8RNHWwgVqfTqbOCwPzbZ1LOk51IeoBG0dg9lsvlNZaOFQVNFYYjTHT9I20nDhtisWKQWLJxelTvG9+HAeL1Q0xgqAAAAABJRU5ErkJggg==",mBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMnSURBVHgB3VVBUhpREO3+Y6WM2XADB03WkhMAFwhwArEqYsxGcgLhBOIqQlIFnmDAC4gnCNkbnZwgZKOpivM7rz/MMFBoWNsL/dP87tev/+v/iZ6L8Sqb/A+B70VUECbfOSyN7Rr1w7NKGP9uxFxaa5vhl0pvMX7tyeTvgwJ7fMzCBTFwCI3x5zd5vMkAhaccA+h2Nt4u/vdoFSZ+PciYO69LLGUWukLprWiDhmGrMk7voT+UUQBxieyAyBzZyBbDr5XhkyAO4N58Q9UZ69m98HOlT4/Y9sGgL0J5a+xbWqexi0MKgIYi9jTsVFq6zywGKgOtTAMXAbQAbU/8jURDtwCAsrxpl7KIHaBy35DJLGWyvR9UxZiuZTA4mx2gXwvqhs2RLl1yVHqLhFPWv+Dp2UjOac3kjVADG5o3nVJjKcjWweAWAcObdnlv5rvowldlS+i57bNH4YOCrVM/PjcnCKZJ5QsAaom60IYCNvhGK0p8g2P0pOqYpaSpLeN7VZT4hm3xul0Zvka8WMqoQPT3WN5zIMZSTnldp5QB6lVtxVzrppJ15ya2aKPJWV23JnHZWtAj9jaxLCZ5aNY4X0RG8eebj0FOc6aZqXliWgogYAB2I5zVpbnTYqZpmMYMhumYBARSzNASe2Aap79/tEtleQnlJe3AcFIqVub3z4GgUyEzJ5v/viCXxLCb7DmLh9LJmXnTGgppliiDjoyXg4jb6LtJniYS4qFAurFv0diahsoZy+GMiMmjZaOlINEr6itV9LeeBHC0B/CMKik9hG4oDwYnSLaLe+00fVGiIznLcjVXTPojWxv04CjZDZtNWrIf5IwxAbnrYiIMJJ4CMmbiXSsdj4x5HdSlTFzlxjac8947iX2qIL0uGLMC1VxBId8h3qYWkgbQW0GZQXVNWmzrogOUq5iDrhVqhZ3SJ1rB/MPBLuash+UpCqr/F0Rt6/Cijkk7cbdphGlfuLqT5DgbvjMtx0Do/LZTqi7b9+jLmH6MFMy9F5HKnMZ4wHJQ3g4TFyZzMX82K4PEtl0LypZMGcn1BthxTpGfOPwR+j+0G9RLP2bP2/4B45WcET0BU4UAAAAASUVORK5CYII=",pBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGkSURBVHgB1ZVBTsJQEIb/N7gwbtQbPDyBxrjHE2BXxhXdKLgSTwCegLJTNFGXrkq9ALg3ga0bqCewF/CN8wgYA20JFWL8kqbtm3nzz0v/TIEUdMXX+tTfxS+g1KCBS6QusCqBZfD/BVTcoq4ENWK4YGyNsyJmvAxbRRcLEn+CddNkIJLCW/aSZ/CGqSIDKilgLUpMnVFxZQ7DaydEBnJJgej1KdrcP1YEfhveOG1kJPEj6/OgRIoaUFTTZ0EtNqfiF5JiqQKj4p/wjDF7Rpk8KbhJhSRWTxOZ+QZ2NBBRzxYPb53+uFNNhnpQ3Abz+ySXQVoplOyzYXhhq3g5/wS5sTUXRIQKtpGZ9bhkSXSl44ZhcyiCkXWTtPs4aBXrU3mFkdMkZm0cek40XWstTkAs+SCbIZt7MLCbmtPFv2FcDZNi89gp+17+NMhsUUv6LGJEivgDKxNYAn80Te1vUiYp5VTJ3o3hpl0P75wuFiTWRWLNXXHQ/aQFETqybpG3LhYkdtjJoOtvH5zY0xVGC1J8kNWKaeTLz52dcuBhVeiqn2ls/OQLhTacA80bXHwAAAAASUVORK5CYII=",lFe=""+new URL("xuek10-9e62a0b5.png",import.meta.url).href,aFe=""+new URL("xuek11-ece0cea6.png",import.meta.url).href,dFe=""+new URL("xuek12-1e6dae67.png",import.meta.url).href;const gBe={style:{width:"100%",height:"100%"}},fBe={class:"echartitem",style:{width:"100%",height:"100%"}},bBe={__name:"process-monitor1",props:{echartdata:{type:String},curvedata:{type:String}},emits:[""],setup(s,{expose:e,emit:t}){let i=X([]),n=X([]),o=X([]),r=X([]),l=X(),a;X();let d=X(null),c=X([]),h=X("");$F({instance:null}),ul(()=>{a=ll(l.value),g(),a.resize(),window.addEventListener("resize",()=>{a.resize()})});const u=()=>{c.value=[],o.value=[],r.value=[]},m=f=>{console.log("曲线数据1:",f),h.value=f;let b=h.value;i=b[0].vars.split(" "),n=b[0].vals.split(" "),console.log("vars:",i),console.log("vals:",n),r.value.push(parseFloat(n[0]));let U=o.value.find(S=>S.name===i[1]);U?U.data.push([parseFloat(n[0]),parseFloat(n[1])]):o.value.push({name:i[1],type:"line",showSymbol:!1,data:[[parseFloat(n[0]),parseFloat(n[1])]]}),a.setOption({legend:{data:[]},xAxis:{type:"value",min:0,max:1},yAxis:{type:"value"},series:o.value}),console.log("更新后的 xdata1:",r.value),console.log("更新后的 series1:",o.value)},p=f=>{h.value=f,c.value=[],o.value=[],r.value=[];let b=JSON.parse(h.value);i=b[0].vars.split(" ");for(let U=0;U<b.length;U++){let S=b[U].vals.split(" "),Z=o.value.find(R=>R.name===i[1]);Z?Z.data.push([parseFloat(S[0]),parseFloat(S[1])]):o.value.push({name:i[1],type:"line",showSymbol:!1,data:[[parseFloat(S[0]),parseFloat(S[1])]]})}console.log("vars:",i),console.log("vals:",n),a.setOption({legend:{data:[]},xAxis:{type:"value",min:0,max:1},yAxis:{type:"value"},series:o.value}),console.log("初始化后的 xdata1:",r.value),console.log("初始化后的 series1:",o.value)},g=()=>{d.value={title:{text:"几何外形",left:"12%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Microsoft YaHei"}},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#333333"}},legend:{data:i.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"10%",right:"5%",bottom:"10%",containLabel:!0},xAxis:{type:"value",boundaryGap:!1,name:"x/c",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",data:r.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}},yAxis:{type:"value",name:"y/c",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},axisTick:{show:!0}},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"slider",xAxisIndex:[0],show:!1}],series:o.value},d.value&&a.setOption(d.value),window.onresize=function(){a.resize()}};return e({linechart:g,getshuju:p,getsockechart:m,echatinit:u}),(f,b)=>(he(),$e("div",gBe,[re("div",fBe,[re("div",{id:"line-left",ref_key:"chartContainer",ref:l,style:{width:"100%",height:"100%"}},null,512)])]))}},UBe=gp(bBe,[["__scopeId","data-v-02ad40d0"]]);const FBe={style:{width:"100%",height:"100%"}},ABe={class:"echartitem",style:{width:"100%",height:"100%"}},ZBe={__name:"process-monitor2",props:{echartdata:{type:String},curvedata:{type:String}},emits:[""],setup(s,{expose:e,emit:t}){let i=X([]),n=X([]),o=X([]),r=X([]),l=X(),a;X();let d=X(null),c=X([]),h=X("");$F({instance:null}),ul(()=>{a=ll(l.value),g(),a.resize(),window.addEventListener("resize",()=>{a.resize()})});const u=()=>{c.value=[],o.value=[],r.value=[]},m=f=>{console.log("曲线数据2:",f),h.value=f;let b=h.value;i=b[0].vars.split(" "),n=b[0].vals.split(" "),console.log("vars:",i),console.log("vals:",n),r.value.push(parseFloat(n[0]));let U=o.value.find(S=>S.name===i[1]);U?U.data.push([parseFloat(n[0]),-1*parseFloat(n[1])]):o.value.push({name:i[1],type:"line",showSymbol:!1,data:[[parseFloat(n[0]),-1*parseFloat(n[1])]]}),a.setOption({legend:{data:[]},xAxis:{type:"value",min:0,max:1,name:"x/c"},yAxis:{type:"value"},series:o.value}),console.log("更新后的 xdata2:",r.value),console.log("更新后的 series2:",o.value)},p=f=>{h.value=f,c.value=[],o.value=[],r.value=[];let b=JSON.parse(h.value);i=b[0].vars.split(" ");for(let U=0;U<b.length;U++){let S=b[U].vals.split(" "),Z=o.value.find(R=>R.name===i[1]);Z?Z.data.push([parseFloat(S[0]),-1*parseFloat(S[1])]):o.value.push({name:i[1],type:"line",showSymbol:!1,data:[[parseFloat(S[0]),-1*parseFloat(S[1])]]})}console.log("vars:",i),console.log("vals:",n),a.setOption({legend:{data:[]},xAxis:{type:"value",min:0,max:1},yAxis:{type:"value"},series:o.value}),console.log("初始化后的 xdata2:",r.value),console.log("初始化后的 series2:",o.value)},g=()=>{d.value={title:{text:"压力分布",left:"7.5%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Microsoft YaHei"}},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#333333"}},legend:{data:i.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"5%",right:"10%",bottom:"10%",containLabel:!0},xAxis:{type:"value",boundaryGap:!1,name:"x/c",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",data:r.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}},yAxis:{type:"value",name:"cp",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},axisTick:{show:!0}},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"slider",xAxisIndex:[0],show:!1}],series:o.value},d.value&&a.setOption(d.value),window.onresize=function(){a.resize()}};return e({linechart:g,getshuju:p,getsockechart:m,echatinit:u}),(f,b)=>(he(),$e("div",FBe,[re("div",ABe,[re("div",{id:"line-right",ref_key:"chartContainer",ref:l,style:{width:"100%",height:"100%"}},null,512)])]))}},SBe=gp(ZBe,[["__scopeId","data-v-24a198b0"]]),NBe={name:"ControlButton",compatConfig:{MODE:3}},RBe=(s,e)=>{const t=s.__vccOpts||s;for(const[i,n]of e)t[i]=n;return t},VBe={class:"vue-flow__controls-button"};function WBe(s,e,t,i,n,o){return he(),$e("button",VBe,[wc(s.$slots,"default")])}const cg=RBe(NBe,[["render",WBe]]),yBe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},QBe=re("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"},null,-1),MBe=[QBe];function wBe(s,e){return he(),$e("svg",yBe,MBe)}const TBe={render:wBe},CBe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},BBe=re("path",{d:"M0 0h32v4.2H0z"},null,-1),LBe=[BBe];function vBe(s,e){return he(),$e("svg",CBe,LBe)}const kBe={render:vBe},xBe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},IBe=re("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0 0 27.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94a.919.919 0 0 1-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"},null,-1),EBe=[IBe];function DBe(s,e){return he(),$e("svg",xBe,EBe)}const GBe={render:DBe},JBe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},XBe=re("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"},null,-1),YBe=[XBe];function _Be(s,e){return he(),$e("svg",JBe,YBe)}const zBe={render:_Be},OBe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},jBe=re("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z"},null,-1),PBe=[jBe];function HBe(s,e){return he(),$e("svg",OBe,PBe)}const KBe={render:HBe},qBe={name:"Controls",compatConfig:{MODE:3}},$Be=aUe({...qBe,props:{showZoom:{type:Boolean,default:!0},showFitView:{type:Boolean,default:!0},showInteractive:{type:Boolean,default:!0},fitViewParams:{},position:{default:()=>sBe.BottomLeft}},emits:["zoomIn","zoomOut","fitView","interactionChange"],setup(s,{emit:e}){const{nodesDraggable:t,nodesConnectable:i,elementsSelectable:n,setInteractive:o,zoomIn:r,zoomOut:l,fitView:a,viewport:d,minZoom:c,maxZoom:h}=Gne(),u=HE(()=>t.value||i.value||n.value),m=HE(()=>d.value.zoom<=c.value),p=HE(()=>d.value.zoom>=h.value);function g(){r(),e("zoomIn")}function f(){l(),e("zoomOut")}function b(){a(s.fitViewParams),e("fitView")}function U(){o(!u.value),e("interactionChange",!u.value)}return(S,Z)=>(he(),It(W(cUe),{class:"vue-flow__controls",position:S.position},{default:B(()=>[wc(S.$slots,"top"),S.showZoom?(he(),$e(zt,{key:0},[wc(S.$slots,"control-zoom-in",{},()=>[M(cg,{class:"vue-flow__controls-zoomin",disabled:p.value,onClick:g},{default:B(()=>[wc(S.$slots,"icon-zoom-in",{},()=>[(he(),It(HM(W(TBe))))])]),_:3},8,["disabled"])]),wc(S.$slots,"control-zoom-out",{},()=>[M(cg,{class:"vue-flow__controls-zoomout",disabled:m.value,onClick:f},{default:B(()=>[wc(S.$slots,"icon-zoom-out",{},()=>[(he(),It(HM(W(kBe))))])]),_:3},8,["disabled"])])],64)):An("",!0),S.showFitView?wc(S.$slots,"control-fit-view",{key:1},()=>[M(cg,{class:"vue-flow__controls-fitview",onClick:b},{default:B(()=>[wc(S.$slots,"icon-fit-view",{},()=>[(he(),It(HM(W(GBe))))])]),_:3})]):An("",!0),S.showInteractive?wc(S.$slots,"control-interactive",{key:2},()=>[S.showInteractive?(he(),It(cg,{key:0,class:"vue-flow__controls-interactive",onClick:U},{default:B(()=>[u.value?wc(S.$slots,"icon-unlock",{key:0},()=>[(he(),It(HM(W(KBe))))]):An("",!0),u.value?An("",!0):wc(S.$slots,"icon-lock",{key:1},()=>[(he(),It(HM(W(zBe))))])]),_:3})):An("",!0)]):An("",!0),wc(S.$slots,"default")]),_:3},8,["position"]))}});const eLe={key:0},tLe=["id"],iLe=["src"],nLe={__name:"eltree",props:{node:{type:Object,required:!0},sourcePosition:{type:String},targetPosition:{type:String}},setup(s){const e=s;return ul(()=>{}),(t,i)=>e.node.data!=null?(he(),$e("div",eLe,[re("div",{class:"custom-node icons",id:`node-${s.node.id}`},[e.node.data.label!="模块化"?(he(),$e("img",{key:0,src:e.node.data.image},null,8,iLe)):An("",!0),re("span",null,bs(e.node.data.label),1)],8,tLe),e.node.data.label!="模块化"?(he(),It(W(DU),{key:0,type:"source",id:"target-a",position:W(EU).Right},null,8,["position"])):An("",!0),M(W(DU),{id:"target-c",type:"source",position:W(EU).Top},null,8,["position"]),e.node.data.label!="模块化"?(he(),It(W(DU),{key:1,id:"target-b",type:"source",position:W(EU).Left},null,8,["position"])):An("",!0),M(W(DU),{id:"target-d",type:"source",position:W(EU).Bottom},null,8,["position"])])):An("",!0)}},sLe=gp(nLe,[["__scopeId","data-v-eda73f8f"]]);const oLe={key:0,style:{height:"100%"}},rLe=["id"],lLe=["src"],aLe={__name:"eltreeGroup",props:{node:{type:Object,required:!0},sourcePosition:{type:String},targetPosition:{type:String}},setup(s){const e=s;return ul(()=>{}),(t,i)=>e.node.data!=null?(he(),$e("div",oLe,[re("div",{class:"custom-node icons",id:`node-${s.node.id}`},[e.node.data.label!="模块化"?(he(),$e("img",{key:0,src:e.node.data.backgroud},null,8,lLe)):An("",!0)],8,rLe),e.node.data.label!="模块化"?(he(),It(W(DU),{key:0,type:"source",id:"target-a",position:W(EU).Right},null,8,["position"])):An("",!0),M(W(DU),{id:"target-c",type:"source",position:W(EU).Top},null,8,["position"]),e.node.data.label!="模块化"?(he(),It(W(DU),{key:1,id:"target-b",type:"source",position:W(EU).Left},null,8,["position"])):An("",!0),M(W(DU),{id:"target-d",type:"source",position:W(EU).Bottom},null,8,["position"])])):An("",!0)}},dLe=gp(aLe,[["__scopeId","data-v-75e60373"]]);const cLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7JJREFUaEPtWk1WGkEQ/rp5Lkw2eoMB41o9QcgFMswN9D0FkhWeQDyBZKdj3tOcoIdcQHMC3cfA3CBkkZ/NVCU90IgwDAOMMOY5G5/YU3xfVXXV19UKPPFHPHH8GCFgHajtHLCdRWIBcOufO7eD2B4QsKrNI8moZxG8wUSMuu/ax+b3PoHN92o7COQNWBy23LeNLJIovPtcA/EJEe2YSPQJbByoXZbyonVmZ3pfFCpNFkR7386dS+3kZwKLTrW5ImDV1Bp+wgJjLVXgAp3h6jLO/swEdHmVQl5BpAzeIGX26AXv+Q2nE+ecmQkUKs02AIuZPqXqfb0RhXytbYPpuOU6sWV8JgJWVVmSZZsJzfa5XUqbwDT25yIA8GXrrLT3WAQE48s31y6mnkLGQ88ExrjWOGihEbDKqiaF2AL4B62irqtHoeJdTJNeJPjYP3X8pRDYqDQ9BmwNmATlVyTWQi01xUNMju863lIIhE3tT7cnaC/qn4OfJeHRf69X5RaaQkkAJl2zlAgkBZdknY6c/CXbEOxNKtOZ7AMm/SbJCL0uswSSRCpzBKx9VZQSxVAgMjpEuPY/OtcL6cRddYoSMXy/dzoq7KsaZLRaJYnLwWolfgslIEZkAzEavmsfpiqno6TEgz5AtLOyAsT2gQGlWSh7CkJoUfiBBDU0sVdVVQxYngg9EYlRpantAU0qF6AocvDvTrth3yir0rjDTvASnt6kVlUVJcurKF3Vr0YAWq69HhWF1Agk3XTD6wplVYeQRzKgN3cR+Z6veFc6tXR3Nyk3aGPpBKyyKuVY7gY5qkUB7BNYpfWosrp0AnGR6x9sAL99ZuczmULjCPTAX2lJRYL2/NPu3GckBWeZCy3oQBOCB+O45dpjz8WppZCpQoEeibiOF8qBfVXMCVhxaRLkcD2c+2ZgEOd5YzM1AvlK8yas2fo8kKQP9BAMDwbMSHOS51MnoKuJ7BLotFwnHAZvVNUuU3wE/kmHa9M39DuTymbm90C+rC6FkFutM3snSW9JLYWSfNljrMkcAb0HAn0s7QnCSaRnIhDq8HLze1f2sgeB2PllPIj7Kca9LgLAdGj2UupyOiyRWj5LqcJaPedjdND9URJrZkIxyfTMETCGteyd9CVxfxcBOl8HLup0P9Hro3RRap14HsBpvzt3BNIGNK29/5eAuWYlpkO/11mn9c5jr+/OY2X0NWtYKqvNOhhHjw1kLvtDanXkTnjzQG1TRv/VQAK3gxVMOyLTl9pJIvXkCfwFZEdAbW+zlMwAAAAASUVORK5CYII=",hLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACGBJREFUaEPtmnlUVNcdxz/vDQzMgDgouEQTVDCSuoELmooLKlGJrSh1XzAR3KNWExNNNXGPia2kp2o11ooCKnh0NKKi4uAWgyuEUFzYJK6oICKLs7zXM8ORaNUoDDR4Tu5/M+/c976f+/293/3de5/AK96EV1w/TwOEnvDC1tarRoIZDEl80yXpcW1PAkw5PaOJs41mYf/XveyVoqYmQeQ/MGZvOX07OyGjKJ/VPl8/0vYzwORTXj3cHQJ1M38XDDSpSeIf05LddF5SeHaeQctqH4sTjwOMXTeiWffQLnXH1lDxFlkRp+5qR4dn7mK1z8anAKJDPMYO9nbuXpMBtp/PTxi8Pj38NwCLS5IJuaAAyaBHVCoRHJ3AxqZaDawSB0zREcgxm+FMIoqiQpBkEAUkB0fw9YPg8Sh6B1QLSNUAZGdgKshHNOhRlJQgFd6HnGzQHURxYB+Syg6i9yL69qxyiCoBeJ4qWZah45sIWenI66MQBg5/tQCkrHSEjp7g6oJ8MBGxsdsrBCDLSIG9EI/pkD75DHH251Uu3nzD6gkhoxFpzgeIG9ZiGjMO8Yt/INjZvRoAskGPtPxzxLAvkCdPh3lfItraVov4KndALryP/Omf4XAcfPV3hL4DEQQBufQe8k8nkAuyEUwGZLtaCM7uCPW9EexrWwVXZSEkXctB+vgDhHYdECfNRFA5gPEhkm4+wtk1CPoHYKNCVjohi0pMCiWyrQpFny9RuPetNESVAMgPSzGlpaBo1hycNOUVoZy2A2FbENjaIwdugje6gMoZRFsQxPLa0exSZVuFAcy5/e6dIq5dLeB27gMKHxhQKAQ0GjVuTTQ0fr02CoVZHMg5xxA2dAOFAmn4HkSPyo/08wArBGAWHzxyO2dO5VBcpEcyyegNMkaDCUGQzTpp7unKx3O6039AyzKI8HcQsg4iOzZADvkeUVO1c0GFAJBl7twtxqA3C8b8E71e4saN+1y8cJe1qxK5lHYLe5XI6ZTpNGzohJyfAf/qhlB0HVOjTohjDiEoHSsbMU/1qxjAY913a1Nxc6tLW+8G5f8eO5pFUEAkEia+Pz8Fj+YuZS5cTUSIGgAltzC1GYkicDOWEaiCVimA+IOXmD1zP7v2Blti/lGLijjPjImxtG1XnzhdCKLiZ5HyD5EIO8aCaETqvw6xXWgVyK/ETJybW0jXTutYvMyfwcPalIsouFdCn+4buHqtgG82BdEvoMVTAqUjixB185HVdZBG7kXRqJPVEBV2YHKolpTkm+hOjMfGtizbmNuU8VqiI1OYNL0zC5f6P1OYLJkgMgAh8wDSW0GIQVGgUFoFUSGA745nMah/FNHaEXTr0dTy4OJiA3/5ZD+R4cmETPBh/qKe2Nk9fxUmJ29C0AaDY33kSSkIatf/D0BpiYHBgVHY29kQvWuk5R28fr2AuR/GsS82nQ/n+DJrti/C7dSy0kEygKmobAYuuQcPriPkZUD6AYTiPOSWgyFoC4JlQqt8e2kHtkYmMW3Ct8TGj8W7/WusXHGcTf8+h0ptx6q1f6SjTyPLzGrKPIRwdi3cSYfiW1CSh2AylqVdpRO4vgXtQ8BzIIK99XtlLwWQl1fMwIBNpP6Yy/CRLTl0KJt69WsRMqkjo0Z5WQq2p5uMbF7nSzICkiVtmkdbeMbuZeXH/yWzUNhfT7DkMx32alv8+3kwZqw3b//+jV+MdWtEVaTvSzkQHp6Ei4sDfn5NUKufXdvn5xdz/OgV0lJzKSrS41JPzejgdmg0KoueS5duE38wnRYtXOnZ24MLabno4jNAMPtUNq2bvWrYqDb9+r1JVEQSbm4aevl7lPOkpt7kaEIWrds0xLdr2W7nSwG8aEQOH0pn7kdxqBzs6N3HHbWDkhs3Clm4uLflpc+5ks/QwCgy0u/i3aEhcbpQdIcziT+QwYW0WyTEZ9I3oAVuzZwJGtISk1GiX8+NhK3uz6gx3pbHm8uVQe9GkJ2Zh987TYncNsISulYDnDt7lWGDttKvfwuWLO+Do+OTeb2goJRxo2MQRRH9QyOpqbe4nDO7fEymTtCyR3uRc/+ZRp26ZW5Nn7KbWO0FzqdNp5aTHcXFeoL+EIG9SolapSAz4y7xx8ejViutB3h/VAyHD2WQfHEGtWvbP2GWwWBicuhOThzLZuuOEcRs+ZF/rkokLXMGLq61MBol2nqG0bJVfaK1Iy19S0uNtPZYSecubmzeNsQiftb0WI4czmRn7BhitqSwbs0pTp6bSKPGGusBevuu5+at+5w8M5la/wOwdGE8K5d/h1NdFXXrqRg6pA3LFiSwc+8IunZ3J/7gZYYN3MqKrwMIHtfeAqDdmUro6B2sWR/In4a1ZtliHX9bdhyNi4o69dWEvN+BubPiiDvyHu06NLYeIOyr4yxZkECntxvSpVsT9AYJv97uZGfkW96LTxf0YvzEjpZFT+LJn3jXfzPLVvgTOtGHqRN3sT/2Emd+mIrGuSx83hsVQ+LJq5xKmkJkxHmWLtAxbWYXZn7ka4l5s9tDB2xl7cYBDBrcynoASZI4djSHlOQbFJcYea2xI8OGteHb3ZcsGX/AQM/yeaLgXil7dl+2VKutWtVjt/YCDg629PJ3t4g3L5h2bk+jtrMdfj2bEhOdRi0nJQEBzctDMze3iAP7MunQqQGenq7WA7woQ1X3dauzUHULfNH9fwN40QhV9/VfdGDTmKaBozu5DKhuEdbcf92J3PAJUVcSnnVG5tWkjm1g1iKvGn3M6hd2ITzhcuEzjlnNwzLl9IweHo6aET513ZxVNjXqrLjUIN2bF3stOft2yT3WdA575OLThf3kU+bPDGrmpwaQ9OiA+/kA1gTor9C3anabfgXhjx75XxxgmW3tVgRIAAAAAElFTkSuQmCC",uLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABsNJREFUaEPtWntMU1cY/24LFCqllwDxKjA6H5DMx7rMaEQ3yx4OGSD4hzINAovAfDAKOlwyHA9ZpkOHsmW86ijZQqRjK6JRZ+LAZIGxZabGSAJuS5WW8ShwKaXFQu/dznW3VAUK5RFYOP+0997znfP9vt93zvd9514MFnjDFrj+8AwAUaJSzAUQz0dgFgCVuixaZavbEwBWJNVKASzA4cATneYLGBpAZKE5QnXJzvOsTlYAqw8pxcMUiNXF0fL5ovBYeqxIUkopGupZJqwAViYq4zEa1H/IouvnMwDRe0oJ1wKiP8seG3oRwFyztcjAXFv86fkWGVjQDGzw9pa+ZTZnmTCM/JbHS+vq6qphAfn6+oq3mUzl681mUZ2rq/xHnS5tNsA67EIEQUhkfX11Gx49YvQq9PAgy3i8EC6XS6LrvSZTXUZ/vwj9b+dyIczHJ6Gjo2PGg6LDAHx9fePr29vLBTTNAKjl8+G7LVvAw8ODuV5/4wYkDwxYjf46QdT3AFRYLBZVd3e3iiCI+ODh4Z2DHM6DpuHhbJIkGeBTbVMGQBCECMOwcqFQKNlnMECiRgMDGAby2FjIq6iwzp+fkgJvFBXBcosFStzdIUgmg+bmZrh37x40NjaSOSSJRxiNMMDhQLqnZ/3lnp6Qp5VHcw0NDSFs44KzC0BXnaBa5eKSutlsFlW7ufV7enrGpaWl4QcOHIC2tjaoKi0Ff39/2BETY7U+q4hCoYCHd+9C8I4dEBwcbNXvzIkTEJuXZ70uEQigRCCQUxRV0dHRwaQuW3186vYPDkr+5nLhKz4/rbOz89xY7NgFEHApKb5Yp4tDrlLn6gq4UgmhoaFTZfqJ/ggYsW8fBI2MMPdPSiTw6sGDgO43NDSoMQxTXensjELsoSYXCMgPBwY8HQIQW7W/ztaXb54+DXszMqYFAAmX5ueDrrYWMByH2KIi8PPzY8ZErJ49exaOFBYCu74q3d0h18nJcyxXssvAlu/fzTrd1ydhd5P7lZWwe/fuaQOYaAC9Xg9fbN0KYc3NgFwoWygk27jctLF2MbsATNeOiIL4/PIQHg9WpaRATFLSrCrPDo6YQAse7WpojSFWFAqFGgDOL6UokROGkRoAuWtUkWjCdNp49XB8QUFB3GxbfTJWaWxsBHlYGOT+tyl9hOPqmzHlCeMCoDHAH/2cn3osO1+0+cVA0BsfLzoPvhNoekzwgr8HNLfprb9+Xm5MH71pGNB/1MfPiw+aHiNzPZ78aN9ReXZsW/mGWz/By4dGF3+9qytkvHn8nDMhvjNmQQMYJ3649co2p6Bw2LXZH35t7WEAbAz0gh8a25h76Pf98CAovNICmwK9AYCGptYe6zO2z0TybB9beXZMW/lfflPBLnkK7B0cZPSoXLIECiPP1nPdl1aMW5EZrx4uaGpqErO7xGSons0+UqkUhioqYDlFPSgVCLKdI75UL5g1IJPJICsrS83hcBI0Gg0T8Ca1C0lcXMo3mM3gFh8PyTYRdDYtjSJ8a14e4AEBEJiZCWVlZSgFqTEajQm28cAugO3VCQUfkyRzsIWyyt+LiwGlEbPZrl+/DvyICGukzsJxuMznR7e3t1vTdXZ+uwD2KOKUKXo9zgp8k5kJx06enE39GWuHJCfPTCReeSkp6tPe3lSUl6BVv72pCdasWTMjAFCgQkGKTcFRBEZ+XlVVBW//G4WTDQYm00308rpUr9NFOZQLoYMtlPuvHxoS3+Hxdh49elSUnp4+LQAoyp6KjIRXWloYt/QoKACk/IULF5B711AUlYMmIGhayrNY1C0jI/LxUmq7LmR7MsfWAqGhoZLc3FygaZpJp59bt47JUFlLsuiQK/Q/fAgxycnWZA09Q2nBa8ePM7UCameEQsRujtFoPDfVwmZKAFjFECM0TWd9gGGid7RaxorV4eHwSc3oGivJzISNp04xShYLBLBJoWCsjNzm2sWLcLm11criZ0Kh+vP+/ucdodUhAGiisUpK2dq1IBQKGSaeLilDli1T6zmcWwCA9m/VHoNBGTU4KEIV2Qkcz7nd1ZU9pwCYor63tw7FB9SQFb/GsJdwHGd2rDCSVNpuvxEEkaDVaq1FPXJHZ2dnMUVRaq1W6/DxvcMMICUjvb2z15nNqSYM669yd4+yVQQdq8QaDHIuTQfc5vEqrnV3Sx2xsD2ZaQGwN/hcPF8EMBdWnmiORQYWGZimBf6/LoRes1pGQPJXafSYR3rTNNyMiaO3qbYvvJ950U3RFhJoQOcx865x0BcEHABbIz/zqcHqRKWYmqefGnAAVPcn+tRg3pl8Egot+K9V/gGSrV1tfcL86gAAAABJRU5ErkJggg==",mLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA6BJREFUaEPtWk1u01AQ/uaFSggh0RvUCeq6ZkGFxCa9AIlPQLvoLwvSE5DeoJVQadNKhBO45QINCwQqi5o9Tc0NskACqfgNGidund86TZO+VLxdlGf7+2bmm5k3NmHMF405frQTWPxsY2LCNpLY+bmHvedeHFszgVffCtABkEo1bTKGjGYLwCNsz25FmC4JrB2L1W1sz5aNAdwJyOrXAkhVsD0bGjlOYB6KfLx9WjGawMqXLFTKigz9n8DIvTUqD1gFdxK/YCvRlcKkVvD9HWdwfQ2DgLXiWqkAWVawwTQFIkkIkjEuFjE+nZZy2YE9NggBAQoNW2lYSNEMAzYxWSBMXgXs1ghYS26eiF4Tk50EaFcijBqID64ievF/wN/1Q5T9TafWdE2/HsgsuUWQepP4wV02MuAT6w9J78OkckrrrdO9Ft3cFoF+Qyi95JYJ8Kslp2iMB5TWGwImSIUZqfJ40Z2PgwsINb/khGHWIOBVS86mEQSaQ4fL1d38Qmb5kFtCyq/u5tIRAcWoGBNC40OA+SeIplrFKhoIlK6HzH3UJLuEabnVBTuOP3wPMB0Qgg9SYZnV+7ArjBWqzPLhWWshkyzUrwaGFkLM7J2V8k8EeGbpwBeLa9IL0iqIMFnVSXVfBmhAB3rO33cqmRW3yKxenjXE18n67UQMIMCgytnuizlp2tRvFKu7TqGX9c3SQMOkkReEhIiyl/XjlVgDnuT7q+rA0DRwGRL1UJDfyWI/utKAEAqhMDaqpVxY6qfXXDsI1EmyXscAAhISTHrO33F8a9G1/T3HSy9/PCJwx57fPA00rF8PHdgiYmvFzSpWR5280EkDYafbvGpR7yO90NA0ELd+evnwhBiWfqDTIuReXmjVzu31Qg3rN1mc9bpYr5cXjCEgNYCgfQbZJIf2UM/wmPUGNGoqFVbigc7EQw2hZJmmpf+MnciiOnBrGrgOgeu00wSM94HGqCPl2J+Jr0NgaHVgAA2Ep61EizGptHZ+7DvN0/J+xyrWqptPBarAwMxAgy3AU6TXE4EH8Bfh5KKdcL8E4g+UtvneH9hay0hRySxUcv1MElD9hlDXew5CoNtNpxddWxOscFYKlWWCHOoHKmQjJdDpYXFvAYaP15OE0I3tGUYI3Ri4JDe6ywRssM7i3bPmYWoSq4xyz9qxTPe89tesAkJedDPXoIPkBWeU4OuvrhA3cvunBtEL71ECS/6sC8tHl9zBjz2SW8OInf8AQ/y5Xgs9wNUAAAAASUVORK5CYII=",pLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADX5JREFUaEPVmVtsXNd1hr+99zlnbpwZUqJoUTcqsmJJbqPIkiwHtgMbrRMnTXp7K4qgaIA2iCUU9WvRpz7kKX1obNh98ItQIH4JjBQJ4qJt0ERIXdtREl9k2dGNou6iKA7JIWfmzLnsXax9SJmyXFG3NMkhBsMh55y9/r3+9a/LVvyWX+q33H5uBPDXr+0iDHf9RgJL07d56bG3l9t2PYADh5/F5mDMdV/6jQFj3WagyYv7vrVk04cA9v9Udn2Xe+FheW/endEWcg2kdO0M2kDoGhhVBvmzvyyQL/5uWPaPmy09q/a/eQalf8yL+/wmLwfwl2g14Z7fexAYu2MAzuIA5xzWTvPmB98mqI2y+xN/REAFpZT/n/IrCwj5tnwQECteE+qZN76KNpt5cZ/Y+asAkIv1ZMScu/pdXj/+Mlfmm/zJ43/HxoEdaMJrAAoQS2bckp78fwCwOJtxbu4nvD/+EtPpDCevJmwe3MeX9nydofJ6D8DoyHvjNq97CUDcL68AXI5zGqUhd5bYnuO1o9+kl5xgIYFTMzEqb/Lw2Jd5cuefUaJScF5usLqg061huXcAHCkOg3YKnPUGZC4jttMcPf8dzk29ShCmdLqa8VafzFWo0eAP9z3DtpHHUJ77JRDgyrEYFCs55F4CyAoAOKE8kGFVyonJH3D0zLdxQQuNotcPGJ/OyJTGuJyx+m6+sOdrjNTuR7mS3A3aosSTK1/3EoCoTYZyxtPHqT6t3nv895HnSPVplBaeG+K+4uSUxRqD1hlhUmH72kf54u6/oaQH/SagLFrotPJ1rwHkPgwkEhI7zc9OvMT5mUMEQQ7KEQR2EYDDmRIG6wGXKfH5XX/FttHPoV0FbdSH6eHmIO4lAO98sBmWHkfOvMKxS/+KM3MY2VXTJzCKuB9wcirH6TIRCqtydGAZDjfy+V1fZ/3gHpQKMbcWxXcCYCnRLM+gErcapx0uz5jpHufH73yDvppEBSmBUmjTx+iQXhxx8mqKMxGRUziTgbGU8ypbhvby1J79VM1qtAp8LClPJfGpvH90bW4XgOyyPKzIkiIWUh74jbcGpyzd7BKHPzjI5fahIhhNhjGKUOWgNZ3UcHIqQ6tKscumh9GKMA+pqDqf/Z2vsH3D72NcCeXXUSgtyhYsLbhcY+8SgFjuMnAK60THM947/wrvjr+MMx3CQLbQoY31AJTWzKeGU1MZRlXQoks6wWipjRzy9eHqDp7Y9VXW1neiVIByOUot1kY+N1yXIO4EQOFG5T1ReNXJJ5sz3TnBD9/5Bj13EWNyAmWJtBRsKaG+HoBWZQJ5jsoItCPUDq1SAldnbM0j/N7OvyVyQx68rPZhXrgrAJ4siy9JPc7nLEdOP2/xs+Pf4diVV1CRxqjcGx240BsRiAeMZr5vOD0tRoUYL5eWQEOghGE5RkWUVZMnP32AzcNPYGzgJVg2Tehb0OradbsekB2XLCsFWoCVKNMW53qcmPwv/ufoy+TBJMo4jDIE2mK8UUUMCICFRBKZ3B8uGuy88aEA8MGufdCvrX6KJ3ftpxmN+YAWAFboeK8AOBt6D1hSUtvi+69/k1byPkovYAKF0QFGa4xOC4pQAOikAadERl24CFR5+kQUyUsCXmtL2Q3wuxv+gL2f/HM0VRwBVmL+7mIArJOFxBESuEKeBd4b/wGvj/8LlDt+gQBDqDShCdBGvJQSqoBAG7qJ4dxlRWrK5LqHNjmGHE1GZOQeoVKGCTKqaoSnH/p7VlV2YXSGbJrW12Xo26WQ7HjmTXQuI3OO6c4v+bfX/pGensSYkHJYpRxUaVRWUy01CXWJSrlEOWoQhUOgQuI4oJt06eYzxGmXftwjTedJ0jmSdBbn+uRqAW1zto48xSMP/gWBavq4uWsAS8kkt6nft6OnfsJ09wj3rVpHozxCs76G0FR90hJOi2ZY2yenR2oz4jTG2RKhqWFMQDmowKJcOpeS2Q5J3mWqfYE4vkpnLmHrpscYbm5GU/5olXprHnDOjS01G85ZlLJYV9Aps4mXTG+qgzTv009m6fQv0YkvM9+7TKc/S5q1SbN55rptJltgSkM0Kw2GasPUa6tYVR9lsDpCo7qGKJRWs1wop1drg5YAdvI3KbevSekdAMiL5JRLAKs5bJ7Q7s5wuf0BrfnztNpnSPNpMlqgYpTuF5KqIpS2LCSOs5Oavgk9z421GAMREaWgRr20mmZ1Neubn2SosYHBxgYGoo2EquolVDbqtgFca+qdxeYZSodMx2cZn3yDc1PvMTt/liSb9fIaBEVi0iYkCmpUgipVExCaEjqI6Du4Ogu9TCTRkqY9ctfD0iV3/WJiIc/JHWFYY6C6mpHBbawf+jRrh3ZSMqsX6yNhk1rZA/b5vQcVbkwqK5H9zEHCDK++/gIXZ9+hXC1TLQ+yqjZCozxEozbqaVANmpTCOlFQ9aole+w7Rml0rNSnGiUUlE1xOd2kTZzN0UvmWOhcpRtfJE5b9OIrpHkblVbYsfmLbN/0Zd+5FQ2PmtD7V5hKZM/vPagFgBWeOxKd0mqf5cTpwzQHG6wZ2kStvBYj9b3Ipu+JpXZMyPOe532czNDNO+T5LLOdOeZ7hqGBUSrRIJVKjWo0QDms+YRlZEqhfEdBliUkaZtucpG59iRZv8KD9z/l++6iYzATev+bNx+r5Nc8INnTkkoJalOMkgrI4ZTxXVTqOnR7V2n3zjI9d4H5hUvE2RRJNoV181jfJiZ00pAzV1NyFRGpiGoYUStXGIgaNMtrWT/8AIP1ERoDo5SDIV8bKZWiycky45NkAUDe9coA3PO7Dzqnx5YmZ0nRtZLZLt3+FFfax7k0/Utm2qeJ+zMk2Qxasm+QY0Iw2nqu60C47ZjvRUy0UlLJ0k4TSK+jUiLJstLI2JBSGDFQGaRRXc/o6u2sro/RrIxRDe7z2R2vRr4euhUADx101oxZpOftMb1wjrNXjnHi8mFaC+OktFAuQYfKUyAyIYFyRSbWVcqm4Xc5iMqUTUiS1bjUyellfVzeJ0tinyes6oKJga4fMQa+DHFEoQCvUg3XMzy4mS1rdjNY20E5XLsYAz9dYTL33EMHrdVjVve4MP0+33vjBeJshlz1KJVCKuEg9cowQ7V1DJQHGarfR60knK5TCuRV88GLKnkPSC2YqBBF7g0Xd1rrWIhnSeyCz8Tt3jTd3ixx3CLOzpLlItcxTvWoqiqrBh5iz/b9hGbNRHDg8EoA9hx0jrHYTvGjN77L+fgE64Y3sHnNdpqlYQYH1hFIbS9qI/TSaaHTvslJwMW+7JiPeyT9Ft18gYVUebADYZVGdRCjSmhKPnvb3IKRPCPqlJHnM+S2x3ynRad3iVb7CL14im2bvsLoqn0Tev/Pbw7APicA3Jg8bKHTxlVyBoImJpchlsWZ1Je5vbxHYtssdM/T6bVY6M7Sja/QTc+Ruxm/28qmzCRweirGBEKpCo1qg5pusqa+nnplladJtTJEtTLgPRhSLoYCXnalbRVl6+NsRCmqrgwg/9bua9Np2dlM6nprvCL1s1kmpt7iyvwprs5N0E8uk9rLvk2TPteYBB0kvkwOF3uD+bTE+FTi1Ut+pPYPTU4kdZMrY2RaYSrUpdQYWMVIYytrGjtY09hKaESRhI6FBjkJ4mdW8ICM18UDi92jMMPfKRo/1Z7gFyf+nQvtX5ByiSC0vpYX1QlN5EEEJkWEtui6cmbTiImrqa9KxQxfcitp8qVPDtGBlIgJNcnceYlGtJUtI4/ywKYnqJRW+wRmbdHOKiUyulIMfOR8QG6VDCrTM+F2yjxT7dO8M/FDLrTeBaYxoei2DLIU2kmNr3x5EWCZSyuMT/VBh/45QSTGFy1jaDTaSfMTMVzazP0bH2Xr6OPUo7U+Tvze+dnpYjvubklGrz/gKPrSpYOIosMUMD03z5X2MY6Of4/p9hFUIHIIUSQpP/Fdl8jrXFZm/EoCulT0xDr3pUaoNYFTNMNNbBl9mB2bHqdRlhK67mlWGH3XcyG/BV5hiupZfmQupHHWedWwzHFx9i0+mHiV2e4pdNRBGZlKCIVc4YFFAJJUpTQPlYwXm9x/3x72bf0SjfJGwqDhJx1aL5UNsuCyqfViIruDE5pFAIuTrSIvCwDxhMyI5JxL0csmOXP5EKcu/iddLqBKie+L20nJz4U0A/5zWZVZW9/Cvm1/yrqhT1ENa4tUkSGvP5wqFEiSiXdA0XcstsYrV6O3ekZWjNRliCtzlmIsaN0cM52jHL9wiLPzbxIFLTqiQlcylNXUg9U8suOP2TH6WZrhKFoGWGKnTCeWjXeLM7SPPfG4dwCKAZegEA/ISYAmzy1K5+RujmOT/8HFyR8x1bnIxGTOJ9Z9hr0PPM2mVQ8SUkHb0BspBYvY+nEGfwyQmwLYhbNPuhcfefaWTymXgZBTFu8VJ2JpyFWHOBvnreOHsGqInQ88Tc0MEfgmYWlgpXBCQ1/phjcM1j8WwIHD/wC8feMxq9x+4PCzX3tseNe6ZjRxw9Nu+MPSBHn59G6ppy1GIZakeFkZsUQy6wW7/CTGLjseXvmA4+dnO5u//27rbf75M/+0ZM6NRFs88F4ZwK/lG9d2/v8G8Gux684XvbXDzTt//q/8zv8Frng7mv8Nz88AAAAASUVORK5CYII=",gLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAclJREFUaEPtWk1OwkAU/qYNGzdeATlBNxITN3gDewNM1Cgu7A3EG0BiilEW3gC8ARujwU3dG9IjsCedMcVU+YuvMFMs5HXbeTPve+/7pm/6RmDDH7Hh/mMewNmLg0LBySWw0SjA42Ew6ds0gKt3DzICbHtqUG7ASFUEsAu/3Ex8+gVQ68dRd+CXn3Lj8CJHLt88CKsHvzwO8iSAKiwR4m6/l2sAF68VWHYxCTQDWHu2TGSgdNrxYFvXRp2PZHPQdhvknEYAnHfqENYNudgyA5S8HTy4ddKEAQAocQYWECUvFBISz1LIIcnlmQHKRjdsuV3SLmsNWJE8+my72X0MGQAhYs4AJQKmEFOI4gjxPmsKKaUCCCz1HVBCnYT3bpgKWtYAUjkxM0gKuccAUOunPlKaLuY4A2NKmsvAh1DLiTjakcdhw00n/KxFzKUEtY1xBriUoDjyz6UEi5hKEIuYRUxxhEVMNzj+qkY3ZRfyAOEtSrYlVTX3P7Y0WaxnbmIb1fNA03qbAThQsoLWAd3m0Qyilnl88AKC+TZrPGvc6FZqCBml+8Wh5ckKxkJ83yCYCPL8VYOk4b3C/Gsw+Yl8stYWXvZYQxhNLvEFFhUhTxlKYYAAAAAASUVORK5CYII=",fLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADDdJREFUaEPdmX1sHOWdx7+/Z2Z2195d79jEeSvEQwipSkvZ8BLRUtCmrXgRpyZGp0qthGLfXSUud706NLz1H8xJbUPbXEypKDqqwyf+6LW0Z1PuRF/E2YjS0BTkNe+5QDIh5MXxy856vd7ZnZnnd31mX2xjdGcnjgQ3srW7M888z+/ze39mCB/xgz7i8mMxwNdeSMMw0h9KMM/L4rHrsvNlWwjwd3/qgQwATVsw6EMDI9kCkMIjWx+qyzQHsOug0noaj2zt/9AI/EGC/O2LPSAxjEe2hkqeD9AFQTZ+dM3whxrgjgMZCM2qK3rlAb5+OIqHLy3j56zhERCGyUfvmQR6V8+gl3X0/vn3uRznDWDXmQRSlSi+e+EkenImAteA7s8gZiYwmXDQXloNw8nBbY5ir5nD1zmKh6m8bJYVB9hzOg4SSciYj30tE/jWzBqQ0GHM5FEOmhDoLpoFoamNccrREOUWPNj2Lu7NWdjbamP38Sbsv6i0ZJAVA1Cukki0IIi3QZQ87F1zBPdMbYAUBr5vvoN7nY2gmTyC1iiMEmG8ksOq2CaUWg+DSqvQ4kyigHYkMQ6vtR3fbjq2JIgVAbh7fD2iTRdAlh24RgkyX4TeciHI0yG0EhH9BkAEQDPAswgqwOxUM8+MzWJ2Eoiv3o/Hr/8h7sql8f3WLO6bvh5BOYvvtRf+T4hzAthzejUQWQ0NBC1C+E7iFdxXaAfPJoFICkBOCHEQ4PZQEJZgt8AoTRDPjAOlKcBzQVrkZb50++1A4j1oMxfhu8k3cM/0Z/Fgyx/OH8Dd40kguh6GTMJLHcL3qIC7nCuh+SbIKCIaGRNe8BLAF4RCqIJYKYDdPODmwUrzxXFFzhBE3LFtOx7a8Ct8K5fGrOsAMQdRdODB1tH/FeKsLHDPlNJuKgw+dXyzcBmIUyBfh6DpcNH7K/ugGXeCq9WFCMxc/RoaQ7lR9qcgIcAk1KAHsPGmEfxg1VO4e2IHgsoI9q0/hm+O7QCC6vcPOs4awHdN6MkOSH8aFFgQ7MD3gR+sG8ae8QyZFwywIDMUPJR4rkg2is2h3wGFcQXAIMpjVccWLf6xdLBvw2Ds3lOW7/vq30bfxbZxz9gV3oNrFltj2QAqpzfhCvjFPDzN1DQ2AyFteJ4DwNH1RFomIhmOt9xfU37dCHOfdavkx8BvDgHKAiQgYsk++cTNu407j3Zp0h12+z5hGz1H04TAkqTldMG2u2/jQkssF0DfczzTaJyIHARg758uHDXuei/tAdDZM4PV6/fDiKRDzX/AoSwQXiMwXh0mFCYBCCbNGI2u2bQbgB2D67hIpAU8U/qB4/7o8mGzZ8R0+rYoRc0dywEwe46aRXgWg0wCO17f5qw65wFWGSp4dfY3WMdg4GhD3bUGaz5M3YXCcyfeZjryGjGps0JFyedjazfZQsorpJR5+L7tPrrFTvS8milXfCcegb0AYjkA88GV4C78dKhF9imAdLy+T2bph5UhjhiZ0OPnS330EHDRJSBdb5wOh/ge8MdnGb5PIMEkjOfirat6GXCKD185avaMWF7FM0mQqSsBdN92+j5jN2RZDkCs582MmkTFaiClo0UqJoIYawic4sOfGtX2HN4uL9kwyBFVs8J0Uw1dBviPB4g6LPDaddVr6lxtEI78N8h+GyAtvMFoSmzxHrsua+46mPZlYEKH+qsurALt0evnOuRlAfz9SCYgIxdlr5UlHAQVNpoiKqhM34dV3mRt99rMngVRq4QdU8H6FvSNHQ8EHdb9dRM0DOR7oKH/AoRKpwK6rvXHI7F/hSZTCCqjCLgDcRp1+rYt9H9Fs1QAZUpUPNMXZCLwWI+WwwmVljzPg6E0s+2zAwDULqmq5WruJ3r5dYbj2CmD/yp/zVUDaGoyF8XEwZeBKQdMGoOEk4jJ23TfhfOTW0Jtm18bSuuqSEKHH0O2AbN0gCETXiQFo5KvCv5CGmHaCSwwOYWtV6aCRPPgoqTjloHnszBE8FCKZged9FXfCNpadywCyDmMA6OKWsUCmPQuM3n6Kd1NpAVrOSldE0zk664NF3D6O6txsFSAUAt3HLAQSBN6kAJ8aBKmkP6x8cduzGpPzA7JeFOGa6W2IeBrNnB8wjGR79bI5yDRQvnPfWbg/QDh7xdeAeUKIAhogm3TczpZr4TBGxAcjWHCB2JA1u7vrLrTUgHMrmcsGFpHmAg4ICLN8bzAcfpvsZN739pe+OTHB1UmVLEZxq1yHfU5/Ca0YnG4LTizm1ma5PuO84VtQ56ZMudbKxz7zimm1+zQAoDGzTxzZzIYHwEH6nKocdIiXAqm805/9/IA1t7xjAUfFnzX9nVYEz/pHFbnVLl3bsrc7ycTmfdlTqbT04Q/vYtmL7c7KSezgmFK8p3Cp69Mz27euL9hhXpl9nzgmVeYfaUg5UZaPx7d0q0EX9v1UytWI7b7v7L8NGp2DZgRwR1n/uW2sB9Z+zcDGZXWNOjOydt3DDDXgnfegxk6eILpZC6/uvBWZ3VtX6mQNfbyJ27/6hCUS7wv4PHGSdDrp+sZyWmvHO5uljIHLSBdBbgWkB9zs3bfMi0QxkDXgBnT/bTmsxMgMDVozqnbbsrIVMv+hiCh94BQ9IDf2GxwefeawqtZXSPyfR+6IRywME/femNXubVtp7ovjJsqOPNMhejpNxv9UZMo92+OvfuQrukmBcJhrWK+tLfz7OrA2q4nwkKmQzgwjJT92JefE78u5mSyOew668oM20+7AHppHO18tLPNz4X+qutAXiZTY9NaOvWxhD1+67Vzz5xqd4cgvzsCnCnVIZzMund3VEFJbR+c4btvnHvQttQgVhNc1jOQFvBNH7rtwnGmt9ywM/eJjX3zu87qOiB++iT0kju4RT/UxxyoDgJTpUjHkQnq8wOY0KO92HWDagwzCj2Mn1oQ0ZlZ4LfHlbxhQEuhZ7D/4ueUDDv2D5mDu+cVtOUA1N0kfddAGkYEh26+Yb+bSKi+JyxY1eoFYKwMPDsBKzrZuyl+Jlz4jTHdPDkZPA4ikzQDEAZw8QU233ppo/DVKnioD3rSZhT9MJjjUbZvsk51kxSO19xsD3bP60iXC5D59n+mIXVr8hILr16+eaCeeeouFIIcmAbeKdl/sfZwtx4RTtZr+Qf7mks78fqpFL14kljoCCE0A/zXlwFRAcjazk3FgUrB2Rww4oQ1QVnhsrVez9UXTY/2f2XLwieFywXY8eMDliGl+eTGT/WQ1bIzNHvooDUBZgLwLx20N7l9X1h3/Knf5syduW0bd3IyEkYJvXgCfHCKSdOJhcHYuopwtVnbZ841sFSRoH87CS6rmzRuT8mnvnr5RHdf5znsB+YXHuMtP+frWpgGG5sTpf23K8Dzs7j6QmfbmBZ8473rrB2IabV9ZXUGGpkC/95RGxhCU4zR3a6a04YHVn0IjOcdotdmG8EsK5GL0dd69huaBsBR7gLh8bDyVjVf74yJf1YEpv3h1rRrOtesuaKeXGrhUdvXAzRRAZ4pgIoC/KUkeH3YMDcsGY4/UQEGpkBCq/vXA3Jve+98RS65lZh/E70TjCAm5l561ANhUgK/dIFPV4BrzQX7mfr9ocfVwGlaggaL4KQAd8YX7IEasfXveeBEoKygsts/yu+0niPAk+MZ3LBqqNro1FJf/bn8sx5gVsBXxRcoqZ6c5rtJQ9l5CfqPWci/jAPRajPVONQax32IX8wo6AcWCa8GLjeIRY57mdE15wtAHJwqligfLwSp4motr4SIE1LhmHmtxQwjnySkCkBera3GlBh56TJoSoLXabWCACQEUkWJvOIR/zzdL+9LLdR8nXK5AItUWzvx+KmSBbiIaIYpiE3SIykB6ai6rWtk+oE8JjRheYGXjcV0K6br/i0G/X6gUkkjIDMa089wBVo0gpNfJFKPKZZ2rBSAWm0gxyYMz9I0I8E6mHyf2AvGI5EopIYNUscLwsNmMnCiRT1grMAKIqGWc2Vg9stEwa+Z224mmlqa9GfhQkuZ+OfMCR2IakBUByTnUX4phfzngPYvEo09zdycAOQ2Irc+Xy+z3ktn8bZmJS2wFLgVH/P/GSANlhn8+Nq+FdfaSk6462DXn5vU7OLXrGoR9aKb2YEM5rZwK7n4uc5FVC2m85S88E29ulh/4X2ui52f+xuar0+/GOD8LHzeZv3IA/wPBSBoi2AJ4GoAAAAASUVORK5CYII=",bLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACkVJREFUaEPVmnmQVNUVh7973+vpnu7p6Z5mVnEWERDBJCMuGDWRVBKtqJWksmg2jVNmK0kiJkajJhKs8p9oXGLAiMFCJWYxEpBoMEiEIAKuLIog27DMzmw90+t77574GnApREYCMrlVt/qPrn7v951z7rnnntuK//Oh/s/1cyDAd1c0Egg0Dkswx1nD/eeseae2dwNMeWFqQ5kdP6Mu0jwcAboyUr90U38fM8+8e7++twGuet63eqPMOKMBmDYcAXxNZ9+24e6Vzak5zDyz4Il3AlyBVs1yz+mThzPAJfdvbnp0TR/MPHPOMQXI5nLkMxmi8RjqPZbiwSLgmAMIsK07yQ0/vZ5zFj3E566/iTFTb0CpoSXEYw7Qn0rTdP9j6Ft/xM/rBwl2Kyp/M5fKL106JD8cc4DfLnqWB++6i0+vXsCNdxehF7vsfK2Gk5auJVAaO2TuOKYAW1tauWzWY6gZt3B5qI9vLirBWuvRcmOa0NTpjLzmpkN64ZgBuJ6h6fZ72PDyBur+MYcrRxnOe7IUq9Uj9YMB2pxqxq3aSFFJ9H29cEwA/IU7d+kK7lr4DPLYHCZ17+SKRhj/aAk6BeqqQbav9yi/YzZVX7ti+AFs2tVK031/Iteyi5K/zuJcO8dlZ9scP7vkzS1HCN6QZseSPPnGj3PyguUoSx8U4kP3QHcyyeUzHqZ1MIs88WdGbV7HpKDLNyZbJG6PIGFN+LYsrfMzdGcsRi9dS2Ts+OEBMJhK8f2Zc3itI4mdSqLm/o5GyTAxLHzlUzbRm8KYhCL0QJbev+Zo7RESV/+SkddPP9YAwu62dqbMmE1zMos4Oay1r1C2ZgUTbYePRoXPnxcg8r0A1GisBR7peVladgn5hrFMWLYebdvvCXFUQ8gY4bnVq3li1fP8e0cnmWwG09OBFYnD/D9yUj7FONvj1Ljis+faFH+1CBmpUMs93H/maHndY9DT1C9aTexjp324AOmcwy1PreKpF9cg2RRe5w7o2AWeoDMOkZeWc4p2OCEgTCxXfGKSTej8ADJSw3oPljq0rXPpzSriU66n9qZbPzyAjOPws4WrWLVxK07rZrzWN1DtrZAaRNWPR694mpHZJCdpj9qgMLECzjqtiMDZVgFAbfdgtUv3Sw5dg2/m3NETGPv0i9hFwQMgjngIGWP41X2zmb/8OaS3C3p7IJmEbBYVCqNiCYJrnudky+V4bagNwanV0PhRm8BEG6lSqD2CWuuRfDFPe7eQEc2ox1dQevqkowsgIsyaPZsZt92O8TxwXJTrguuiPEEaJ6FffpaabIrR2qXKhtpiobEGTh4fIHCKBeUaNSCYTR65l3K0tykGPCH+3aupm37HAVXqEfFA3nV5rrmFxa9u5IVVq+h8Yh6mpQ3e9Abi77sCiXJIJAhuWMcY7XKcZai0hYYwfKQGTjypiMBYCyoUpAzSLDjrcnTsEJKOwquo4ZRVm7GKi9/lhcMHEKEtnWHx5haWbd1Nb38vks2gMv1ku9poe2Ih7o6dKC9fAJBzz0evXEKV63Cidij3tQagocQwvlpTP8bCPsFGEoADqgW813N0bzP0pCAnitqHH2fEZy46fAA/RBxjWNvazdPN7Wzo6CfnOhg3j8mnED/Os368D+Ak++hctozM+vWoE8YgTpbQzu2M0g41yviRQkVI0RAVxtUojmuwsepsJC5gFHQJssUh+YbHnn5/HSiCF1/C2PseeVcYDckDAtM6BzMsb+7gPzs66EpnC1bwF6wxHuLu3ZxMJo3KDkJ+AMmmIZuia91rJF0LvWIJVRhOsDwSSkjYQqUPEBNGV2kq6zR6pA1xUKKQHoGdHtlNeTq6YNAovEiU8S82UxSLv+WFQwI4dzZOnrtu27SlzZ0F6xciWqQgXmQfQD6NcR3wRef3QkjO/0yxu72P7JPziQ4OMEq7VGhDXCvKAkJ1GOpjioYqxYiRFro6AKXiEyADQJvBeSNPV5swmFNkRKi550Gqv3LZ0AG8uydO7k1npj2wtpmXW/cUxO+fBQgvh7j5ggfIZdD5DJJLYXIZ+pMD7Fn8L4LbNlOHodpyKVOKuDbEQoqRYeH4ONRVWpRWWSh/+uW/VpA2SJfB25Kndzf0pSAjYJ81mZMfW4xWeyvUQ3qg0FYRpgnCwte387fXd5N1nL0e8Bzw8ns/HQeVy2CcNCqfYaC3j/ZX1mKvXEaVeNRqh5gSYpYiZgsVQUVNxFATVxxXaRGu0OhyG6KgtEZyBnoMptlhcIehu89nEnK6iAnPbyZ0XO0HANjX2PItv6N/kDuWr6G1P1UQbzw/z/sAOZTjr4UM2WSS1k1bkafmU+7kOF57lClDqRZKfYAAVBUL1VFFVQwqyjWhhIUaYb0N4Bikz0CLR267S1e3kMpDFsWIn0yj9tqbC8fNoXngHZ05P61nXYe5L29k0YbNiOsWpi8eN89Adw972toxj/+ZRHqgID6hDCUaokqIBqA8KFSEFRVRRWUMyhKaQJkFsX0AlkZ8gKQgnR7eNoeeLmEg44eRgtoTmbB8PVZR8IMD7F89YgzPbt3JAytfoS+ZRAoxn6K3swu1YC6Jvh6qtcsIDCWWUKIUJbZQFvTTp5CIKMpLFImYpiSusOIWlGqIgGgbM/Zi5Iwp6LIGpLON1MN/YM+cWeQ8IS9Q/7cllJ0z+fAB9oN09PfzzMZtnFFXQ7y0lKcX/J1Hrv4xZZkkcQWRgvUVURtiRUIiJIwIK8oi/oRoTBOMKpRv/YjGJOLIRb/FGv9F1L6FWkjZIgwufpKOa68kvaeL4gu+xOjZf+Frs7ce2daiv05emv93Hvn2JZQoKPHjPqCIB4REsRAPq70zApGIIhjRWFENYQuTSCCX/xGr/tz37syJkNmykV1fv5BUTxfjVr7Btx5PNc070r1RMcLCH17J9r88SGkRlIcgEYZ4GEqLNSVhCBUrAiGFFdEQUkhxGK/pYexxFxSy0MGGnw2zu3ey7dILKf3yN5gavqRp3vqj0NxNtu3mmU+Oo7woS2UpxCOK4rAiEFBYtkIFBBUECWiUpfC++mus86agh9AT9SFynR3suub7XDfh2qb5LaEj3532s9WeO68m+OzvKY4rdFAVhO7byt/q5IsH5sLrsD9/87ti/lA9RT9UvVyaSx/Y1jTvteyRB/AFeO2b4L7TUH67xwJcQeVB/Gozr5AMeI1fx/rWvWj93of2Q4F84H3gUA985/fGr5We+TKqb0mh5+/ndpUFldpb65jyT6IuexSrKPJBHnv45fThvMXpWYa97gv+iQAMmJyg+gUJX4A+fxY65B8ADn8cVQ/4ssS4mFcmY6VfLYS/kQAy4jvocdPRVtHhK9/3y6MO4L/HbX8IveUaJDoJ6n+Bip31VjX5vxJ8KADGTSFOFypYV9ighnp9NBS49wNoRMxkmTnJv770byqH5RgzfV3fls7c0gOvWX25U16YikgfxhuWF90otfcfBPeeddd+6x54NbjvwntYmh/W7Lf8wQGGqfKDyRra5ewwhvovpcUzi0Uc9PIAAAAASUVORK5CYII=",ULe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAqxJREFUaEPtmkuOElEUhv97sQc6sV2BPOIcBxITB8IGBFYgPeAhDoQViCsQEoMNmMgOqnEDjQOjaQcy10C5Ahn1pFPnmKJFaahbQAhwqmNNqwr+73x1X3VLIeCHCnh+LALkP8VxcBAXCXZxMUDn0WA221WA518rIAcIha5cJAaGOAzgNpqJxjTTP4DymVv1OJqJrpjAXkGefalA6T6aiUmRZwFy0MrGmwd90QClz0noUHha6P8AO7e1iYFY3sqxVo+NoZl/DtvZmh9UOG/FtVYvTNcQ8Ue7kzW3w00AIgWrq5R+6heQHErZ77LGdhQuWUnN+tT8G9wdtjJHxvPbBmCo/qj1JGUKIB7ADe5nIRAAfhYCAeBnITAAJguBATBZCBSAl4VAAXhZkAvAGEPhcL7/n7dwr2zFHUd/kzeQMVWh9GuvYLPjQrhkhTXrkTgARXTELsASC2IB4BrQOATrl8ssRIs9FmcAoAbdRE2f69EyC9FC75fXNZdQe5rMMaE36qQz0aJVB7TndHnaFqKFExtK3fW2sC8A5sGonbnv301SY9jKVmLF3gkDaVEAYIyH7fQdN1Sk+OFUgZMLARljukURdY66eV2xJwNu2GErPVlj+1pgegW4Y4Z3l7u3NjAZdRVF7OOsvcyCYqqy1u9lPUJzAL4WHKoiJNzAMgviulE3sHYo9WNmQb984ub1EO2xEc8D+FowDsXCANa3IAxgfQsCAdazIBBgPQtCAVa3IBRgdQuCAVazsEWAWMnKEWFxlvmnT7/BqH/vZH3316KFXo1B7l6X58Eafft4S6/XzcvAHZ7Z5PX6DmOa/+o6A8TBlMTbh3URlTaFKJ/lAAwWt1ndG9yNbuYxyJksSsQdSl1+QTBT5MVPDaYb3uLSTwL9rfw03jX82ENm5Y2pfgNjgSpezjfRPQAAAABJRU5ErkJggg==",FLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABIJJREFUaEPdmr1uG0cQx/+zjACnCvUGRxmpeVdECJCGegKSUgKkE1nIopUi5BNIfILIQCA7dBELLiPpKL+A6CJI4BSkkdYQ7w1yTZxC4U6wdzySJ37t8ktStiJws7f/3+7O7MweCQ+80QPXj2GAvV9trK3Z9xLs5qaFl1+1BrXFAb77owzZARKJmNG9gZFsAfgMJ5vPIk19gIN3atZtnGy+ujeCRwl5+nsZJBo42QwmeRCgAEEefvyiMQ+AVXItdJAEIxl7zyfw8Ai+d5z353k/Sr9lIBJWNNFzA1hlN4mP4nsizhCTDbol/LZahs/ELZZ86r3Mm6/2IgGsPdcWJK6mih4z5ZJx7NWyFaMVWSTAxv5lG4AFhg+BZ5DSB8ShERDL6nUtf6QNsSgAtXXEP+KvYOABERtPXOVkP2gLYvjXtey6tv3CAEquJVioFVAAleta/lj9fLznFliIn7UFAZAkU96LvKfVZzkA8CXLSkKxCHEYbCuDdvcABmJHmd4NQNlNJv5Gbpp2ne20MoDgkDJsPT+Z0E8BtPdP1QEXHH7k1Mf7wyw+YD1xy8I0PBqAhgCvMxDUdX72IFEl52L4oDMFsEqXh4KhH6cNhEemwwDREz6m9EX8oDMBCGbeJKbPIF51GQ+gHnKFnIsgRAdNF0Dtd8HiyjQkzsIwEQDwITspcuphEqgLMMuBNIv4YAU+levt3de5vg/cepNk5Q/hNtYFSO1fNknVB0tuDHjtn7Ipbu68gsDuyOEYDbLPt7QBYnnOkgGkkHnveb7O73fCxHBck531YBvprMDnB67d6YjmMrWrmU+QLH54kW/wn9uHkDQ50knhkPNLSwvAKrmZrgNPZSDGW4asE+CRgFa19S/gRcmblvgwVG2Rc9ZYLACjel3LBjPHzZxafoOTWtggyoKQmTpLpgBaW6grnps7OQioEzReA2upMjAy2kKDxcqIMfqRY1tdBBjl/gaS46YmTqx6pvbfXBF49PJ2K7CpkWNmtUMdW5Q+d7TDqDLcKLlH4KA4GWokZfHDwWkDIhFWZMtukou9xE4njCo9wVnwUbRHFeirBVCZqdzqpdi6AMEqPH1ThuShAn21AFSh9Jl5Mhftio3S5REYsa20MgBJVXLO4gecyQpEEI9LboFDfwji/AoAfICqsZmPxMwCEPXtlZSP4Ld3T5NaTiw7KVMfX3hJOUpAcPLqRCHJxekAst7L96cZz7MCg+/WBpgmSD0PC5bVXmzNCNCC7OSBtSSEdHu504MBiDLKIPnbLkNQGKLvAkCNy+93VM2gX7UNlIb9Cow9Sl/oO/qifCAAaH5jQ0hV+Otnoox6YB+l0YNpgo6/LBIghPjWgriZ5fbCh0SRnHMFpN8WDRCNzM2vMxBcALMqVNJjFKmK7S0k16GquOiqRF++/q2EyTtv23IzlwTWLIC7W4t84MbXDpWTBp+wAjZYZvD8y37iNA/FsvoevCsAaA1/ZlUDqg/dzOomTO9QWZbIce8lCiPewCQP/9Ug+uC9anF64/VmPjL/H/7ZQ28m7o3Vf2YfA17QVu2hAAAAAElFTkSuQmCC",ALe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAACb1JREFUWEftmdtvXEcdx78zcy57tdeX2HGTtE7jJukFkgZIpUpFAVU88GQQRZGQekHiASEVeOCZ9h0J8R/AOyJ5JlQJTwiBlCCVIlTUdZo0bu3Gt72cPefMBf3mslnHJl5QIlSpq4xn9+zu7Od85zu/+f0mDJ+xB/uM8eJz4Ec9Yw9U2Fy/0CqKxo+ZNMuQaEEaoDRA7lthgL4BH2hgYGzTuYaRBkYr1ysN+p7R9NwACoDR0IZuzYBzBiY4WCLAa9GKmI6uyQp+U/3ptZX9bv4/Anevf/NsrKOrUMaCMgkHS40ACZr6DGABONMwhbaQWnpQD+1gHTjon3E9mZIJBp5wiEYC0UpgJtgKYvGt5EdXbtwPvS9wdn15kTNzHdq06EcgARZgA7BVVFuFWUbg7jWBmtDoswRvxxhR2UM7YoJmYClH1EwgplOwKQFT41tKls9Xf7hb6X2B83eXfw1tXrOwNIWkcAAmG1hlDZBpsJ7rqZkAXHpo6j2sJmvQc7LGqMqWl4FFDKKZIJ6rgM1GMHUBCP2r5Pvv/GRU5f2B31vehEILmqbVA5N/CZas4AEJmnU1YKGV9a+WytrGlPdsYe2hHLyDJXCysAmuAARZIkZyuAY+H8M0ORCxleSNK8cfCGzay61igE07IA1OoH6xMauuB+57O3Q00CV1lfWvLn1PkKXxXh6BJRGU97D2PanMGUQ9QvJYHeJIBWZSABGQvHFll6h7FM7+sbzIBWsP7UDTSHaQGiyH9y2p6kDZjut1TgoTrI8OHp5uNtjBRgyCJSGGjZxsnC2qAunRBqLjNWA6AsQ4wO3lRa4IGM5zAbg0YCEyeFhsO2DTk9CkMEGTby2stragBUg3a+1gx/O+JnWDPUK0iAXSY3UkJyeAwwTMkLz2+wMUJmDD2tYSPkKgdNNrgcm/5NsdDbalgW0FTcCk7kBBk8LBGqO2CGHNRgtNoRjKGO88Fy0EZ6gt1FF9rgUspjbkJa+OA8y4AyYFrB3CgtNgfQN0lAVlGxrYlFB9p7BtOS06r7RX2YY06cKbNsYOR7AKxkO7mMzAMDVVRfP5GbBT1TGBV5cXuQzALkJYaB/OGC22bQVsKLC7CmajhMokNEFTpLAe9huItwdZQWkNaWFdc8A0vFOZNKb+UDXBoS8dAj9Tt7vKwQoTsBZtN4LbNCx07mKtVXhTAusKbE1CbxVQPaeyGUho2uksqLOGkg6wNBplALZuM3ZoZwtS3gFPxhFOnJtD9MKkvYsxgC8uMla2WbhlH/iH8Zciw10JfEythNrKobrk4xJ6IN3WTPG41JBKo/CgBFvC2cEpTFrcU9qtcYNGJHD2i/NIXpqyvh4PWMi2/TT5KsTisOA62irLbhXQdwrIzRxqu4AmW2ROVSk1Sg+beyUtsLeCS0ucJVzvZwFAnTN89dkFVL4+7RR+/aA4vHlxkWkP7KFpZFa4jQI7CuyjAuxfBeTtAeSnA6huYSOFHCgUSiM31BzgqLLBEqX3Lilsr3ngwhhMCoFvnF5A/cKMzTGSH4wDzDxwiIA2xAF2wW0qsHYOvDtAcbMHuZ5B7pTIc4m+JguYIaz1rrdBAL8H7Regh6abJMUfjxK8fOowGudn7MYRv/nOAXGYFBaqDe5Sv2FNQtC5AaPo8F4G/acu8vd30F/vo1MqCztU1XqT1qjGptRIZ+aQNuvoiQRxcwLNyQlEcWrTSiYEFDi0URBGYyqN0DqaYpVJJPUUL3zvlwcAZ2QJAmaQmmGgBPqloM0KFaExKXNEf+6huLSGj/65gRXFoReOIVlcQmXxBGpzC6g9dgyYmsH8sSfQbDYhhPifCxFGe/bIY28uQcBGtwsw9IoIm1mMT/sx1vqT2MrnMZXkePHDv2H1rwvg51/G0S+cRX32ENI0tfnAw36MBayg21kZYWsQYa2X4NbOJG52zuGDjSXcuaNxvPt3/OLNVxHH8cPm2zPeWMCFQrtTRNgYRFjtpPiw8wQ+2D6P23dbuH0zx0e3t/HSaYFvn0nx4jOnkMRN1Gq0Mz38x1jAmWTtnQEBx7jTSXG79yRWds5hdWsSO5sKg0xjalbguSPv48vNP+DkbB35ThPcLCCOF1CqSSSVWRjewuzsHCqVygN9XJYler0e1tZuIo0yGLWGPFsHsInTZ352sIe7BW/vkH/7EVZ7KT7uP47V3tO40z2CbGCLXjRqGienb+Ar83/BM4d6qBrpoghtMD73ULlGv1NifZ0S6QaqSQ3cRMNc2BiNfm8bnGWYm0tRb8QwhBcz1yKG9OnLBwN3Cm4tsZVFWO/H+KQ/g43BEu4OjqBTNmzEm66s42jzBp6duYWlqT5qXNpqZFftF+pAX7XY92yq5vMUW4ACFJEIjioMY3sPLP4L4G4RoZML3KUokaXYLhbQK2dR6Do4FBrJJzhcu4kTrS6OTuSo0jkAZXSUNxchy6M8mvZfV2nYYnZ4NuHLfIK2wIAZAUdENR2QnhpD4V7J271SoFMIdAYRtnJ6niCTE1AmAWcFGvE25ms5FiZyzFcLxEx54JEjgZCaugTYZX7UhxzFr1FD4ZCmTTC7u1mF7XOG9NSlgy1Bi25QCvRKjm4ZoVfQ5sGRKwZlGGJu0EgUWhWJ2VqJVlpCUHFpLQCwULhaYK92KLfsyY/PJUNQISQCDP0IePrUGMClRnsg3Q6XSYZMChSSo9TM/hYBV2ONZiLRqpaoRcpNtfXoCLC3gb0eSi6vsH09Cmy9HFS+p/hYwBrGAheSYSBJWW63aVKXHhE3qEQatVihmShE9Oshb7bT7qHDtVDQBujhyY8ntjmLhyQfB3AOpEtjKGxg2gRIoKVtDpZ+h8Ym4EQYVGJl8wvmzxqGPtUjwEHlIay3BBUI/qRqmGQNof1CFEB64gBguucs+67RYJAES8pqlwjZapwWNAFbaAVBpUlI8n0aOlSYru9RdwR0FDiEuBDmaPFxbKVPXnKlx8hk7NlPB9krVzX4BVslaea8O8wzDWJOa0SDMwNXSvkoYOOrt0RYZOEmQtEW7BBg76chS9jFZ9fmHytLly4cCJxl37nAwK+6ss751h/nWoVt6KRbsNPqF1RQMwAPX4cz4fA5P1g4bt218Dysz8W1Fl+rPvXbawcCe1u8xYCfB1hSOKAPA2NQK/hzWLj6WjCcbdjez0T4TKDwpz5DqFA4gL2dnvjdW/dP/wMT2Cx75XUGRtCLu74YlA0LJ4Sq/YCDZQJ0UHZ00Y34lzHcMMa8nS5dvrzHqyMF0H7vDa9l2UUCdtAUttyfe4/Rl/YcY5/3dl277/vh4xFWqscv7/tfBQ9cdA+k/z+/+fBrmkd8Q58DP2KB8W8FtFSWApzM+gAAAABJRU5ErkJggg==",ZLe=""+new URL("mob-90497040.png",import.meta.url).href,SLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAACBCAYAAADnoNlQAAAAAXNSR0IArs4c6QAACrhJREFUeF7tnUtslFUUx88AFZmkDymJD1ozaJBAfLSLYqsJFIWFplEj6gIxpSurGC0kuKFKiSUxkJRHBLrroMaFiDHa4KIg1ESgdTHVIEgJMrHFR9JiKUkrtNMxZ+Az02/u65s7c+fO1/Pt4LuPc//n951zXzABoGfGKxCY8QqQAEAQEAQEATEABAFBQBAQA0AQEARaEDSeDpGCFinQXhNN1xr11UFTpARu3NgAs2Y/DwC16XZI9bKoQDyOIJyEqdh28ACFGgRNkRBMxE4AxEO1iwvhhUdLoDg4J4ujoabTUaC7fxROXrwO0as3AeLQAgeqtqu0I4fgNgCh+QWhjtcWAUJAj90KtBz9A7Yf/QNgKrYJDlbvkVkrh2Bjbzg0f279iXeWQKh0rqw9em+JApuODMCeE38DxOOVcGB5n8gsMQRv9lZAIBAJrw9BffUCS4ZHZqgoMDIeg0Xv/wwjY5NhOLC8QQOCnpaSYMG2f3ZVqvRLZSxT4HY0GIH9VXelD8HG3nDt4qJEKqAn/xQI9wxDwyeXAWKTi0SrBXE6IAjyz/NJFndfvA61ey8QBHntRU3jCQJNAf1QnSDwgxc1x0AQaAroh+oEgR+8qDkGgkBTQD9UJwj84EXNMRAEmgL6oTpB4Acvao6BINAU0A/VCQI/eFFzDASBpoB+qE4Q+MGLmmMgCDQF9EN1gsAPXtQcA0GgKaAfqhMEfvCi5hgIAk0B/VCdIPCDFzXHQBBoCuiH6gSBH7yoOQaCQFNAP1QnCPzgRc0xEASaAvqhOkHgBy9qjoEg0BTQD9UJAj94UXMMBIGmgH6oThD4wYuaYyAINAX0Q3WCwA9e1BwDQaApoB+qEwR+8KLmGKyFYHB4TDi0stKg5tCpuqOAtRCs3HoMRCA0v/IwNDz1AHkyAwpYCcGZ/iF4te2UcHiPP7QAPtv8RAYkoCashODdQxE4cnpA6p2+tmegMFggLUcFxApYCYEsFThD2llfCWtrysnHmgpYB8H5gWtQt6NbaViUEpRkkhayDoIPPj8L4e9+m2b40vIiKJsfhK6f/pr290XBAvi+dTWlBKmb8ywd1LV2w/nBa9OsfrGmHJaVF0Hr57+kjOazzU/C4w+Vpi1DT/8wnBu8BucGbvVZPK8AFi4IwrKyYuV2r49NwLXxiRQb3MtYLPfFmYH/+8L3L9WUw0LJctdtI3a0rLzYk40igayKBFeGx2DF1mMp9u6sr0gMmJUmcJmIy0WvD048O47/lgJccjvopOaXH4Y1FfcIm99yKAJfuiayWLd7x+pEPXT+3s4L0OGKcPiu/Y0qWPPYvcz2992uMzqWCphTAft5u26J1tzIKgjQMbgycD/fNK9MQFCx+ShcH5tMSQmRtmeUGUDQthzqg57+IeU679QtSQjNe1gQYNlL7c8lAFjXdioRbViPM7bkd2gj1pFtmLmBxSWzLKqwbLAKgnVtPwCGvuQH877j5MaDvSnzAiyrmhLSEdexRQQCDwKMBK2Hz0JX3/S5jNNm8ticv8NUiACIvn4ejNgegrC0rFgZcCxoDQS8VIChuL1xeWJQHd9dYs4LVFOC6tKTpyAPNh4EuHwV7Xe4Vzc6kCanB68RwRoIeKkgeXuYt3xMzr88B+7t/BX2dfYzXxcG58Da6vsTky0MwUdO/w5XhsdTyvKWpDwIZJ+jG17ZJhmOc2HpvESUOD84ym3e69LZGghUQz1rXiBLCbwog/Xwa8XJH4ZS50GRMTWxhGbtUqpAgKCh09dU3JoEDg6NQXGwANBh+Ii2yrEuRsPq22WxfFffn7Dl40jKHMkZg2qKtCYdoOiVm79NIZuVM3mCi3I2LwrgV/X9jjXML4rnFNbBlQyCpWVFiXlLMmjuTkVRAFdHa2vuT7Gz4/glaD2cumzGgl6igRWRACdOje29KYNMng84L3nzAtGgWXsP2B5PXKcv1hwC9yx21U//mR8RBAgaAiA7+uZFOBGoaCevHusD4uUPKyDgfQUsJ2HORuewHpyNs8R+sPFrZnlc9omcg+t09zKNBZsIAhloaJhoq5z1ISQPRtQ3a/nJ1M2GXz7h0cxzKq88K1SLoJFN3FjvWZNQkSNwr0D28CIh1kNQMdXxHl5kxPKijajk9nIeCUQTIt5XOjo+wVxHs75SlbsJMiclv88GBLyVEfYruzwjqqt6yppzCGTLIi8OwrLu2XumIfCaDlQiwYyHQHcDxw2Jm/5MpwNWjqZ0gF5I8yfxvNwdUI0I7i+Vt/z0kjNlfetCINKBtRpJtkcUSVX3CnKaDlh3B2SCy96z7hjwog1uFGHk0H10IUBQVzR3MTd+ZEs9USRVSUU49pxCwFu/r664R3qTGE8BedvA7i9ABFtn80rPBy5uaHQhwPZYh2dOP7wvWjSXyIvNItFWrsrSRhTm3SFUtgIRHbjgUTDeA8AtX96l1kxA4NVG2WGTyv6EA1nOIoFofat6i5gXClkh9PX2XjjGOdJFMXBPH28o4b0FBGzw6lhiP7+3fzjx53SOkrFd1ZAsiwaOjYXz5iQOt0T3IWS7jO5IljMIeOHPSxgThXl3CEVH1u04yTwdVJkTiO4zZiISoA24kkEb3RdnVOxzyuBhU+fWWuk2dc43i0SpQPVuAA5CtNPGagdv9yB86Yrc8PQDiRPHbMwJnDbxGPvdQ31e/D6trJc0kNN0IJrQqC5rcACieQHvjgF+bQgC676ATHkeoJmKBE7/eEz8weGznmxkHTfLxpNTCHh3B7zmUFkeFQGFx8sIowwG58IJbhIln+cnC5xpCJzUgJdT3RdY3Y5F+/Ci6nuuOxGqAGC5nMwJcMLFejDv4sTMy4NXxfEsgfVgW6IzfKyDtmBawYkgrgTwwVUA/jsHnCii42VtiGzggaM6RoxcOAk8NzA67WY0XijFa/h4I0pmn6yvnEAgM4rem1WAIDCrt5W9EQRWusWsUQSBWb2t7I0gsNItZo0iCMzqbWVvBIGVbjFrFEFgVm8reyMIrHSLWaMIArN6W9kbQWClW8waRRCY1dvK3ggCK91i1iiCwKzeVvZGEFjpFrNGEQRm9bayN4LASreYNYogMKu3lb0RBFa6xaxRBIFZva3sjSCw0i1mjSIIzOptZW8EgZVuMWsUQWBWbyt7IwisdItZowgCs3pb2RtBYKVbzBpFEJjV28reCAIr3WLWKILArN5W9kYQWOkWs0YRBGb1trI3gsBKt5g1iiAwq7eVvREEVrrFrFEZgyBUemf95e2PmLWeesuIAntP/A1NRwYACubcBXsqR3iNBoS9vXGmCWbN3v3PrkoomTc7I4ZRI+YUaPg0CuEzQ32wv0r4v32LIWiKlMDE5OWmVXeX7F5bbs566klbgejVm7Do/Z8BpmKb4GD1HlGDYgiw5ps9LRCYtS28PgT11bd+648euxUYGY9B5YfnIDr0bxSmYqugvSaqBwHW3tgbBgjUtzx7XwKE0Pw77FZhBluHk8ENn0YhOnxjBGKTlTIAUCp5JHAEfevHFojDNvxj7eLCGSyzvUPvuzIOI/jr8/F4N0zFNqgA4A0CLN0UCcHNiVqA+AsAgRJ75ZiJlsVHAAJRmBX4Cj6qOulFAfVI4KVVKptXChAEeeWu7BhLEGRH17xqlSDIK3dlx1iCIDu65lWrBEFeuSs7xhIE2dE1r1r9D64pOQmEJl5AAAAAAElFTkSuQmCC",NLe=""+new URL("csh-8ce19601.png",import.meta.url).href,RLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABndJREFUaEPtmmtMW+cZx3/H+G6Db1wNFFNCIWENJNUoLBkhoVW0LWmldm3TJs2I2n1I1WqJpn6a1JCqn7ax0WzKokVtsyhVNxZN6pRqVasAQZ0iUqUlI8taugAFzN3GBtvHl2OfyUgoZKXDl6XQjfPVep73/3v+7/v4eXWOwNf8Eb7m+vkiwA//WoNKVbMmwSKRXk5v612q7TYAx0t9x4405rRUF+nXpP4hV4jj74y1DL1SfXxR4C2A567UnHm69OMf1GWvSfGLol7tnOTI+eEtnKxdcGIpQHPnkco3Gssz1zTApc/maWz75BAna8+sA6yGVesOrEbVl6657sD/mQMyw++fJKu8HrNj63+F/SvfQp//pZWpK+0U7j6KvW5f2hAJA4iRCDqVKu0FJdHL9V89ihTwkvutgxQ/eBgxEOHau93UP7o76fwJAYy43TS/8TpHm5rYU10DQnpD69Cls3i6TyKGZQZ9W+gf1GEuMfNC608IBUWiYhDfvBdJgPm5OSyCkoLNm5eFSwhARuaFt96iZ3CAF3c18XhdfdKVWhoQCAQ5d/wYnwfuRfJOoBjsRmtxElWAEJIJe0KEy8opqaiixO6gccdOTBs2pA4Qj7zhdPLsubNI4TBHdzbx5PbtKUFc//swb/7uKgaDHb1Bh/jJ+6hjH7CpYReWAgfW7HwcVd9Ao9EiJOB0Qg4sKv1Dz2VaL3YQC0s8v7OR5h0Nt81//4nIHwhy4tV38E8qyS65B2U0gl8S+Mff2vnpywfI3VCRUkGSAohvpRfb2+nq70cOR3imYTuHmx5csVJ91wf5/evdGHNqMJvMqNQKPNNTOKdu8tguPfV7v4ewzF0qEaKkAOIJJzyzPP3aaTw+kagUZl/t/fx4z14yvsTuCxcu09nhwp5Xgt6oh+A8UZWJ/n9e5YmnHNhtJkrLyxPRmt4ZWBr90cAAz795jrAUJRaVuDc/n7bmZizGW3eHuTkfZ35zgSGnimLHJjKkEDqzjemZaUZHbrKnUUfD3h1oM9QoNZqvFiC+2unODk51dSHEosQkiRyjkYMNjTy1/dtMTLj55SvnMdgqsGTnowi4kfUW5rwiQ8NXefiRcqoqi3E4HAiCImXx8cCkt9DiajJw7I/tXOjtBTkGsRjIMht8mZQKd5NVUIFBiKDUGAmjYGx8DCk6wuH9Ndgry9HEQJ2VlZb4tADiwX5RZN+JNsY8XoRojKJpPZWZmzDnl6CTAoRUemKomZwYRY7McuCZLRQXWMm12xM6tMFgkJA/gD8s4g+FGXWOMelykTk+xq7Hn0BnsaTuwGLpnK4Znm39NdaJAqrKarFZbYT800RQ4nLN4B6/yaDnQ2Yz3AuHOMeWjTkzixydBlNGBn69nkBQJN5m9dMuRgWZSa8XX0hEnp3DEhaZseWQZ7WxuaycsiI7u+8upbSubqGFp7yFFgHefvsylzomuctRhdFoJBoN4/f5GRnuY9D9EQMxJ5ISBGXGQruVFRno3V5iGhVRUxaCLKNSKcmZcmG5pxKDQUdJcRF6pRqHKoOq+7ZSmJePTqNZ0q5vjTIpA8S7zG9P/JnZQAFFhWWAhFKpwjvnY2y4j/HcQURlDJ1ai1oB+VYrSiBbFDEU2rHnF6CJxci3WMkxmzBr1GhMpiX/BonNWykAyAwNTnDq1GWs5lJ0RgOyFEKtNTEzM8On/R8iyPPUbVTx8KHHsFosaLXa2wbAxKQtd77jrSP+pOHA+PgMrT/vonJjPZmZOoLBEC7XLFOTU8z7brDvyVryrJkU2XPRmy1pd5mVEiTlgN/r4We/uEjFxgZMJi0RScHI0CQ3rnWzaYuWA/u/gyRFsNlsK44XKwlb/vc0Hei4eAX3rBFHoY2xKT0DA2N82t/DA9uMPPBQE8hgMplS05ZiVFIO/Ol8D1u/WU1Xxyh9fZ+h00+x/+A2NEQpLHGgSWMkSFF/cm30vfPv4vSZGR64zn33l9LQUItCUGAwGlKcJVOVfSsuKQe8Hg8+vx9CIcx5eQudRa/Xr5r4pEcJ9/g46iwjnqlpsu2FaNWapR0t/XKmkCEpB1LIf8dD1gHueIlXWGDdgXUH0qzA//QWqmn7/l0f/2hnXpo1urPhZ3pcHDo7sMxrVsDx0rWWlu8WHnNY1XdWRYrZe50ibZ0Tx4derm5ZTPHFu8ZzV+KfGazNTw2gd/EF95cDpFid1QpL/ba3Wor/bd1/AeGmpF4S5tr2AAAAAElFTkSuQmCC",VLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABCBJREFUaEPtWktoU1kY/pIxiwTagnFRsSnSYqUqNFlYbQULnVYQquITVLBToRBdKAR00w5WTDcthJnVBF2kXeiiPopOGaEvULDVbpqArZihQWykXZhFU0igj8T5zniusU2mtwnppHjP6j7OOf/3+M9/uA8dNnnTbXL8WEVgZ3Ov9SfAmovElgHvh3snvYnYviOw0/70lj6OtlwELzHF4mj7cPfEbXmuENh1tde6vKwfbz23F021pTnJwTM0BefDCcRiMZt0QiFQ2tz7S1yv90y5j+ckeAmq1P4MulisaereyS5e0whstF2aAxut+Mp4mgOaAxkqoKVQhgJmPFxzIGMJM5zgx3JgwDuLft+M0Oxg2TacrrIo+k0G5+AZCijnBUYDyi0FOFJRiDyTIUOdUw9flwM3u8fxeHRazHagbBseOKqVmV/7P+Oia2RVpCKzCe4r+1FeVJAVEusiYHX8hXyjATroEAxF4HUdVdRNJHDfUY1PoQh+73uPT6Eo8k0GvHTWZcUJ1QQkwHprIfKMBjwZnUbruX1oqi0RyiYSkM8Q4cgiDrcOYD6ypPQlsRvdXsxHFnGq2gKmJR+a9qTpkGoCMn0Imi7wPDGNkhEgMfsfYxjwzeJUlQWdjTbc6XmLruEAOhptCEcX4OyZwAPHIRwoM6eVYqoJ1LQMirT5s7UGRVtNsDmei4AyjVIRuNE9Ltwi2c5GKy64RhCOLgpCVJ1CSAJv/CF4hgPIN27B9Ybd2GE2geOPVGwHnV95fKaqGBdcr9Z+IksEx8BsA74ZkRpUktUoFQEGIDAC+PXsPpx3vcJ8dGkVgTzTFhxzvhDX3/g/i3XW11KD864RlFvycbm2BA3t/96XxySuioC0PZnHBOa2VyYlwHw/3DIohnU0WnG6qlioOOYP4UV7naho0oF+74xILa4fKQbFmZyew6BvFtcaduPx6Ee8C4bRcckGu3tM9FWVQjJ9uNjqK7YLQNwP2nsmlAozEZxTyiiV4b7QNRQQabfDbBRpwpKaisCj0Y8C6LjrqEKA5RdxnQDLNcI09AxPCQysbizjaxJ42V6nqEjVCIKNFUauA4KLI550HyB495VKpcokEpBKM98ry8xiPNPx3XQYc9EFQZoFg3FYilmenT1vRUrSEY5bkwBZPvq6ebGKJDbWeSrM3XaPpQC/9b1XbjMwr9VXFIrgsjENJoNhsR7YSIj3ec57/b5ZAZrgpFgyDuOzz2t/CE0/lwhR1iSgvRdKq7qrH6Q5oF6r7PTUHMiOrupn1RxQr1V2emoOZEdX9bNqDqjXKjs9NQeyo6v6WVM68O0z67c3D+qn3ZiefLjhS4Gkn1kJocT+tO2fJ5VbGwMnzShx3A7cPaF8jF/1q8Gu5l5rLEd/NdAD3r//61eDNDX5X4dt+r9VvgA4S3VeaoBRVAAAAABJRU5ErkJggg==",WLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7lJREFUaEPtWk1IG1EQHlMVEjAe4kFRi0TU/oHrpVYLpqg5CFIRwYM9aA7S1EOFQHtJQIX04iHQk6KH1EM9WGywWgqNCh6qNT0kQi1tSkSqUg/mYIQItW7KjL7tRmO6zS4hwj6QZPfNzJvvm+/NI+5mwSUfWZc8fzgHoKzXw10B4DIR2DFAYHO8PSDOLQ5AmXVmQBODwUxMnuXEx2Bwc6xtiF0LACr6PNzxscbv6LwJlsbyjMTgXgiB89U68DxfwyohACjv9fTENBp3aPR+RibPkiq3voEsnreExttf4D0VQLrLpVYg3YyfXU+tgFoBmQyoEpJJoGx3tQKyKZQZQK2ATALJ/SB6BHm6nAtD4TyORDaSKrAdjsID13LSXHuajGBpNJKNc+ozeNd26fv1Uj2MWm+f88Wk3Isb9Bc5TfBGST5gnI66UrJfDYbh+dw3WA3u0bVelwPm6kLob62CYoOO7kkGYLLPJwXwuLWKAuNAWwSdp8uGg+hvCLha4tjbCUehy7VMNjhKDDrYP/xFtsUGLby134P3a7vwdMJ/ynw25GtzBXvxbxRJAMSZ46IMzHB3jcAWs/kY3KNqIfN6bQ6xiMAQIBtigFidO5UFNDW98gNqKwsIkHXER1VE1peczfSJa2M1OuquCrEUB4CsTa9skZyKC7TgnFqnpCZt9bQoA4jfh7u5uGTERD2Z8MPrlS26hZISy0ZspzgAxu6k7S7JgVULr2srDQSOSWPWYQLUfaKBbHe5PsBO+FCYRiIQDNsjkveAVAl5A7tgHfVRuWftJnJDOWEyTEZSAaAv+qGs0EcMBAGgfBUHwHSbiFEE5Xe1xEnI0XlL6FxJO8Sp9LByDAhrDIpJCFthje0d5WHmCiFPe9LXI4dHMB84aalMRg12LyWCoObsJqElItt6bS75Y6dyL2yApckozLP9hbEUByCWxtKzZuokBCB6BA0OL7VI3NjI+pftfdI33sOBtggUbRHUS1s9PBr5FNdmmaTwk8VJWULsUMN+bK4uoiSwa/iC4YQH18MRH3zdjlBbxY3LksFDyrv2UwCCmxyTM3NFlDw7xJhs8FzB+f7Wa4Li/ltC/9JqKvOM+Yt82UmN1Tk7MgJAKqCZjwpADntK+KoVUIJFOTHUCshhTwlftQJKsCgnhloBOewp4atWQAkW5cS4sAJ/H7NK/9UkJ5FUfN2LIfqnQcLHrBjQaJ0ZhBgMpBI8bT4xGNoYaxMexp971aCi18PxGfqqgQYg8D3ZqwZpY1HBhS792yp/AKlYS16p/QUbAAAAAElFTkSuQmCC",yLe=""+new URL("fsi-99d432b4.png",import.meta.url).href,QLe=""+new URL("fsibackg-210e093c.png",import.meta.url).href,MLe=""+new URL("MathFunc-d72e169d.png",import.meta.url).href,wLe=""+new URL("flight-80532c16.png",import.meta.url).href;let Co=0,TLe=0,Sae=X([]);function CLe(){return`${Co}${TLe++}`}function BLe(){return console.log(Co),Co=="2-1"?{label:"优化问题",image:cLe,name:"Project"}:Co=="3-1"?{label:"CATIA",image:hLe,name:"CATIA"}:Co=="3-0"?{label:"CST",image:uLe,name:"CST"}:Co=="3-10"?{label:"FFD",image:RLe,name:"FFD"}:Co=="3-11"?{label:"ADflow",image:VLe,name:"ADflow"}:Co=="3-12"?{label:"TACS",image:WLe,name:"TACS"}:Co=="3-13"?{label:"FUM to FEM",image:yLe,backgroud:QLe,name:"FSI"}:Co=="3-14"?{label:"MathFunc",image:MLe,name:"MathFunc"}:Co=="3-15"?{label:"Flight",image:wLe,name:"Flight"}:Co=="3-2"?{label:"Excel",image:mLe,name:"Excel"}:Co=="3-3"?{label:"Feko",image:pLe,name:"Feko"}:Co=="3-4"?{label:"Fluent",image:gLe,name:"Fluent"}:Co=="3-5"?{label:"HCFD",image:fLe,name:"HCFD"}:Co=="3-6"?{label:"Matlab",image:bLe,name:"Matlab"}:Co=="3-7"?{label:"Nastran",image:ULe,name:"Nastran"}:Co=="3-8"?{label:"Python",image:FLe,name:"Python"}:Co=="3-9"?{label:"Xfoil",image:ALe,name:"Xfoil"}:Co=="4-1"?{label:"进化优化器",image:lFe,name:"optimizer1"}:Co=="4-2"?{label:"代理优化器",image:aFe,name:"optimizer3"}:Co=="4-3"?{label:"梯度优化器",image:dFe,name:"optimizer2"}:Co=="3-01"?{label:"优化器",image:ZLe,name:"optimizer"}:Co=="3-02"?{label:"参数化",image:NLe,name:"参数化"}:Co=="3-03"?{label:"气动分析",image:SLe,name:"气动分析"}:null}const LLe={draggedType:X(null),isDragOver:X(!1),isDragging:X(!1)},vLe=async(s,e,t,i,n,o)=>{const r={transCode:"MDO0058",pid:s||"",wid:e||"",uid:t||"",type:i||"",fromuid:n||"",touid:o||""};try{return(await Dn(r)).wid}catch(l){vi.error(l.returnMsg)}},Jk={};function cFe(){const{draggedType:s,isDragOver:e,isDragging:t}=LLe,{addNodes:i,addEdges:n,screenToFlowCoordinate:o,onNodesInitialized:r,updateNode:l}=Gne();Rd(t,p=>{document.body.style.userSelect=p?"none":""});function a(p,g,f){p.dataTransfer&&(Co=f,p.dataTransfer.setData("application/vueflow",g),p.dataTransfer.effectAllowed="move"),s.value=g,t.value=!0,document.addEventListener("drop",u)}function d(p){p.preventDefault(),s.value&&(e.value=!0,p.dataTransfer&&(p.dataTransfer.dropEffect="move"))}function c(p){}function h(p){e.value=!1}function u(){t.value=!1,e.value=!1,s.value=null,Co="",document.removeEventListener("drop",u)}async function m(p){const g=o({x:p.clientX,y:p.clientY}),b=JSON.parse(sessionStorage.getItem("objlist")).pid,U="",S=CLe(),Z=BLe(),R=Z.name;Jk[R]||(Jk[R]=0),Jk[R]++;const y=`${R}${Jk[R]}`;let N=X([]);if(X([]),Co!="4"){Co=="3-13"&&(s.value="group");const Q={id:S,type:s.value,position:g,data:{...Z,uid:y}};N.value.push(Q),vLe(b,U,y,"com","","").then(C=>{Q.data.wid=C,r(()=>{l(S,v=>({...v,data:{...v.data,wid:Q.data.wid}}))})}).catch(C=>{console.error("保存流程失败:",C.message),vi.error("保存流程失败")})}const{off:w}=r(()=>{l(S,Q=>({position:{x:Q.position.x-Q.dimensions.width/2,y:Q.position.y-Q.dimensions.height/2},dimensions:{height:58,width:60}})),w()});i(N.value),Sae.value=N.value}return{treeobj:Sae,draggedType:s,isDragOver:e,isDragging:t,onDragStart:a,onDragLeave:h,onDragOver:d,onDrop:m,handleNodeDrop:c}}/*!
- * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
- * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
- * Released under MIT License
- *//*! *****************************************************************************
- Copyright (c) Microsoft Corporation.
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */var I4=function(s,e){return I4=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])},I4(s,e)};function fp(s,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");I4(s,e);function t(){this.constructor=s}s.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var E4=function(){return E4=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++){t=arguments[i];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},E4.apply(this,arguments)};function Hd(s,e,t,i){function n(o){return o instanceof t?o:new t(function(r){r(o)})}return new(t||(t=Promise))(function(o,r){function l(c){try{d(i.next(c))}catch(h){r(h)}}function a(c){try{d(i.throw(c))}catch(h){r(h)}}function d(c){c.done?o(c.value):n(c.value).then(l,a)}d((i=i.apply(s,e||[])).next())})}function dd(s,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,n,o,r;return r={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function l(d){return function(c){return a([d,c])}}function a(d){if(i)throw new TypeError("Generator is already executing.");for(;t;)try{if(i=1,n&&(o=d[0]&2?n.return:d[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,d[1])).done)return o;switch(n=0,o&&(d=[d[0]&2,o.value]),d[0]){case 0:case 1:o=d;break;case 4:return t.label++,{value:d[1],done:!1};case 5:t.label++,n=d[1],d=[0];continue;case 7:d=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(d[0]===6||d[0]===2)){t=0;continue}if(d[0]===3&&(!o||d[1]>o[0]&&d[1]<o[3])){t.label=d[1];break}if(d[0]===6&&t.label<o[1]){t.label=o[1],o=d;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(d);break}o[2]&&t.ops.pop(),t.trys.pop();continue}d=e.call(s,t)}catch(c){d=[6,c],n=0}finally{i=o=0}if(d[0]&5)throw d[1];return{value:d[0]?d[1]:void 0,done:!0}}}function Xk(s,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,o;i<n;i++)(o||!(i in e))&&(o||(o=Array.prototype.slice.call(e,0,i)),o[i]=e[i]);return s.concat(o||e)}var Xf=function(){function s(e,t,i,n){this.left=e,this.top=t,this.width=i,this.height=n}return s.prototype.add=function(e,t,i,n){return new s(this.left+e,this.top+t,this.width+i,this.height+n)},s.fromClientRect=function(e,t){return new s(t.left+e.windowBounds.left,t.top+e.windowBounds.top,t.width,t.height)},s.fromDOMRectList=function(e,t){var i=Array.from(t).find(function(n){return n.width!==0});return i?new s(i.left+e.windowBounds.left,i.top+e.windowBounds.top,i.width,i.height):s.EMPTY},s.EMPTY=new s(0,0,0,0),s}(),o3=function(s,e){return Xf.fromClientRect(s,e.getBoundingClientRect())},kLe=function(s){var e=s.body,t=s.documentElement;if(!e||!t)throw new Error("Unable to get document size");var i=Math.max(Math.max(e.scrollWidth,t.scrollWidth),Math.max(e.offsetWidth,t.offsetWidth),Math.max(e.clientWidth,t.clientWidth)),n=Math.max(Math.max(e.scrollHeight,t.scrollHeight),Math.max(e.offsetHeight,t.offsetHeight),Math.max(e.clientHeight,t.clientHeight));return new Xf(0,0,i,n)},r3=function(s){for(var e=[],t=0,i=s.length;t<i;){var n=s.charCodeAt(t++);if(n>=55296&&n<=56319&&t<i){var o=s.charCodeAt(t++);(o&64512)===56320?e.push(((n&1023)<<10)+(o&1023)+65536):(e.push(n),t--)}else e.push(n)}return e},il=function(){for(var s=[],e=0;e<arguments.length;e++)s[e]=arguments[e];if(String.fromCodePoint)return String.fromCodePoint.apply(String,s);var t=s.length;if(!t)return"";for(var i=[],n=-1,o="";++n<t;){var r=s[n];r<=65535?i.push(r):(r-=65536,i.push((r>>10)+55296,r%1024+56320)),(n+1===t||i.length>16384)&&(o+=String.fromCharCode.apply(String,i),i.length=0)}return o},Nae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xLe=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var Yk=0;Yk<Nae.length;Yk++)xLe[Nae.charCodeAt(Yk)]=Yk;var Rae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fT=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var _k=0;_k<Rae.length;_k++)fT[Rae.charCodeAt(_k)]=_k;var ILe=function(s){var e=s.length*.75,t=s.length,i,n=0,o,r,l,a;s[s.length-1]==="="&&(e--,s[s.length-2]==="="&&e--);var d=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(e):new Array(e),c=Array.isArray(d)?d:new Uint8Array(d);for(i=0;i<t;i+=4)o=fT[s.charCodeAt(i)],r=fT[s.charCodeAt(i+1)],l=fT[s.charCodeAt(i+2)],a=fT[s.charCodeAt(i+3)],c[n++]=o<<2|r>>4,c[n++]=(r&15)<<4|l>>2,c[n++]=(l&3)<<6|a&63;return d},ELe=function(s){for(var e=s.length,t=[],i=0;i<e;i+=2)t.push(s[i+1]<<8|s[i]);return t},DLe=function(s){for(var e=s.length,t=[],i=0;i<e;i+=4)t.push(s[i+3]<<24|s[i+2]<<16|s[i+1]<<8|s[i]);return t},BS=5,Jne=6+5,wO=2,GLe=Jne-BS,hFe=65536>>BS,JLe=1<<BS,TO=JLe-1,XLe=1024>>BS,YLe=hFe+XLe,_Le=YLe,zLe=32,OLe=_Le+zLe,jLe=65536>>Jne,PLe=1<<GLe,HLe=PLe-1,Vae=function(s,e,t){return s.slice?s.slice(e,t):new Uint16Array(Array.prototype.slice.call(s,e,t))},KLe=function(s,e,t){return s.slice?s.slice(e,t):new Uint32Array(Array.prototype.slice.call(s,e,t))},qLe=function(s,e){var t=ILe(s),i=Array.isArray(t)?DLe(t):new Uint32Array(t),n=Array.isArray(t)?ELe(t):new Uint16Array(t),o=24,r=Vae(n,o/2,i[4]/2),l=i[5]===2?Vae(n,(o+i[4])/2):KLe(i,Math.ceil((o+i[4])/4));return new $Le(i[0],i[1],i[2],i[3],r,l)},$Le=function(){function s(e,t,i,n,o,r){this.initialValue=e,this.errorValue=t,this.highStart=i,this.highValueIndex=n,this.index=o,this.data=r}return s.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=this.index[e>>BS],t=(t<<wO)+(e&TO),this.data[t];if(e<=65535)return t=this.index[hFe+(e-55296>>BS)],t=(t<<wO)+(e&TO),this.data[t];if(e<this.highStart)return t=OLe-jLe+(e>>Jne),t=this.index[t],t+=e>>BS&HLe,t=this.index[t],t=(t<<wO)+(e&TO),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},s}(),Wae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",eve=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var zk=0;zk<Wae.length;zk++)eve[Wae.charCodeAt(zk)]=zk;var tve="KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==",yae=50,ive=1,uFe=2,mFe=3,nve=4,sve=5,Qae=7,pFe=8,Mae=9,GU=10,D4=11,wae=12,G4=13,ove=14,bT=15,J4=16,Ok=17,KM=18,rve=19,Tae=20,X4=21,qM=22,CO=23,pR=24,Nh=25,UT=26,FT=27,gR=28,lve=29,GZ=30,ave=31,jk=32,Pk=33,Y4=34,_4=35,z4=36,TB=37,O4=38,KE=39,qE=40,BO=41,gFe=42,dve=43,cve=[9001,65288],fFe="!",Ls="×",Hk="÷",j4=qLe(tve),l0=[GZ,z4],P4=[ive,uFe,mFe,sve],bFe=[GU,pFe],Cae=[FT,UT],hve=P4.concat(bFe),Bae=[O4,KE,qE,Y4,_4],uve=[bT,G4],mve=function(s,e){e===void 0&&(e="strict");var t=[],i=[],n=[];return s.forEach(function(o,r){var l=j4.get(o);if(l>yae?(n.push(!0),l-=yae):n.push(!1),["normal","auto","loose"].indexOf(e)!==-1&&[8208,8211,12316,12448].indexOf(o)!==-1)return i.push(r),t.push(J4);if(l===nve||l===D4){if(r===0)return i.push(r),t.push(GZ);var a=t[r-1];return hve.indexOf(a)===-1?(i.push(i[r-1]),t.push(a)):(i.push(r),t.push(GZ))}if(i.push(r),l===ave)return t.push(e==="strict"?X4:TB);if(l===gFe||l===lve)return t.push(GZ);if(l===dve)return o>=131072&&o<=196605||o>=196608&&o<=262141?t.push(TB):t.push(GZ);t.push(l)}),[i,t,n]},LO=function(s,e,t,i){var n=i[t];if(Array.isArray(s)?s.indexOf(n)!==-1:s===n)for(var o=t;o<=i.length;){o++;var r=i[o];if(r===e)return!0;if(r!==GU)break}if(n===GU)for(var o=t;o>0;){o--;var l=i[o];if(Array.isArray(s)?s.indexOf(l)!==-1:s===l)for(var a=t;a<=i.length;){a++;var r=i[a];if(r===e)return!0;if(r!==GU)break}if(l!==GU)break}return!1},Lae=function(s,e){for(var t=s;t>=0;){var i=e[t];if(i===GU)t--;else return i}return 0},pve=function(s,e,t,i,n){if(t[i]===0)return Ls;var o=i-1;if(Array.isArray(n)&&n[o]===!0)return Ls;var r=o-1,l=o+1,a=e[o],d=r>=0?e[r]:0,c=e[l];if(a===uFe&&c===mFe)return Ls;if(P4.indexOf(a)!==-1)return fFe;if(P4.indexOf(c)!==-1||bFe.indexOf(c)!==-1)return Ls;if(Lae(o,e)===pFe)return Hk;if(j4.get(s[o])===D4||(a===jk||a===Pk)&&j4.get(s[l])===D4||a===Qae||c===Qae||a===Mae||[GU,G4,bT].indexOf(a)===-1&&c===Mae||[Ok,KM,rve,pR,gR].indexOf(c)!==-1||Lae(o,e)===qM||LO(CO,qM,o,e)||LO([Ok,KM],X4,o,e)||LO(wae,wae,o,e))return Ls;if(a===GU)return Hk;if(a===CO||c===CO)return Ls;if(c===J4||a===J4)return Hk;if([G4,bT,X4].indexOf(c)!==-1||a===ove||d===z4&&uve.indexOf(a)!==-1||a===gR&&c===z4||c===Tae||l0.indexOf(c)!==-1&&a===Nh||l0.indexOf(a)!==-1&&c===Nh||a===FT&&[TB,jk,Pk].indexOf(c)!==-1||[TB,jk,Pk].indexOf(a)!==-1&&c===UT||l0.indexOf(a)!==-1&&Cae.indexOf(c)!==-1||Cae.indexOf(a)!==-1&&l0.indexOf(c)!==-1||[FT,UT].indexOf(a)!==-1&&(c===Nh||[qM,bT].indexOf(c)!==-1&&e[l+1]===Nh)||[qM,bT].indexOf(a)!==-1&&c===Nh||a===Nh&&[Nh,gR,pR].indexOf(c)!==-1)return Ls;if([Nh,gR,pR,Ok,KM].indexOf(c)!==-1)for(var h=o;h>=0;){var u=e[h];if(u===Nh)return Ls;if([gR,pR].indexOf(u)!==-1)h--;else break}if([FT,UT].indexOf(c)!==-1)for(var h=[Ok,KM].indexOf(a)!==-1?r:o;h>=0;){var u=e[h];if(u===Nh)return Ls;if([gR,pR].indexOf(u)!==-1)h--;else break}if(O4===a&&[O4,KE,Y4,_4].indexOf(c)!==-1||[KE,Y4].indexOf(a)!==-1&&[KE,qE].indexOf(c)!==-1||[qE,_4].indexOf(a)!==-1&&c===qE||Bae.indexOf(a)!==-1&&[Tae,UT].indexOf(c)!==-1||Bae.indexOf(c)!==-1&&a===FT||l0.indexOf(a)!==-1&&l0.indexOf(c)!==-1||a===pR&&l0.indexOf(c)!==-1||l0.concat(Nh).indexOf(a)!==-1&&c===qM&&cve.indexOf(s[l])===-1||l0.concat(Nh).indexOf(c)!==-1&&a===KM)return Ls;if(a===BO&&c===BO){for(var m=t[o],p=1;m>0&&(m--,e[m]===BO);)p++;if(p%2!==0)return Ls}return a===jk&&c===Pk?Ls:Hk},gve=function(s,e){e||(e={lineBreak:"normal",wordBreak:"normal"});var t=mve(s,e.lineBreak),i=t[0],n=t[1],o=t[2];(e.wordBreak==="break-all"||e.wordBreak==="break-word")&&(n=n.map(function(l){return[Nh,GZ,gFe].indexOf(l)!==-1?TB:l}));var r=e.wordBreak==="keep-all"?o.map(function(l,a){return l&&s[a]>=19968&&s[a]<=40959}):void 0;return[i,n,r]},fve=function(){function s(e,t,i,n){this.codePoints=e,this.required=t===fFe,this.start=i,this.end=n}return s.prototype.slice=function(){return il.apply(void 0,this.codePoints.slice(this.start,this.end))},s}(),bve=function(s,e){var t=r3(s),i=gve(t,e),n=i[0],o=i[1],r=i[2],l=t.length,a=0,d=0;return{next:function(){if(d>=l)return{done:!0,value:null};for(var c=Ls;d<l&&(c=pve(t,o,n,++d,r))===Ls;);if(c!==Ls||d===l){var h=new fve(t,c,a,d);return a=d,{value:h,done:!1}}return{done:!0,value:null}}}},Uve=1,Fve=2,vv=4,vae=8,QJ=10,kae=47,EC=92,Ave=9,Zve=32,Kk=34,$M=61,Sve=35,Nve=36,Rve=37,qk=39,$k=40,ew=41,Vve=95,Ec=45,Wve=33,yve=60,Qve=62,Mve=64,wve=91,Tve=93,Cve=61,Bve=123,ex=63,Lve=125,xae=124,vve=126,kve=128,Iae=65533,vO=42,gS=43,xve=44,Ive=58,Eve=59,CB=46,Dve=0,Gve=8,Jve=11,Xve=14,Yve=31,_ve=127,Rp=-1,UFe=48,FFe=97,AFe=101,zve=102,Ove=117,jve=122,ZFe=65,SFe=69,NFe=70,Pve=85,Hve=90,gd=function(s){return s>=UFe&&s<=57},Kve=function(s){return s>=55296&&s<=57343},fR=function(s){return gd(s)||s>=ZFe&&s<=NFe||s>=FFe&&s<=zve},qve=function(s){return s>=FFe&&s<=jve},$ve=function(s){return s>=ZFe&&s<=Hve},eke=function(s){return qve(s)||$ve(s)},tke=function(s){return s>=kve},tx=function(s){return s===QJ||s===Ave||s===Zve},MJ=function(s){return eke(s)||tke(s)||s===Vve},Eae=function(s){return MJ(s)||gd(s)||s===Ec},ike=function(s){return s>=Dve&&s<=Gve||s===Jve||s>=Xve&&s<=Yve||s===_ve},tU=function(s,e){return s!==EC?!1:e!==QJ},ix=function(s,e,t){return s===Ec?MJ(e)||tU(e,t):MJ(s)?!0:!!(s===EC&&tU(s,e))},kO=function(s,e,t){return s===gS||s===Ec?gd(e)?!0:e===CB&&gd(t):gd(s===CB?e:s)},nke=function(s){var e=0,t=1;(s[e]===gS||s[e]===Ec)&&(s[e]===Ec&&(t=-1),e++);for(var i=[];gd(s[e]);)i.push(s[e++]);var n=i.length?parseInt(il.apply(void 0,i),10):0;s[e]===CB&&e++;for(var o=[];gd(s[e]);)o.push(s[e++]);var r=o.length,l=r?parseInt(il.apply(void 0,o),10):0;(s[e]===SFe||s[e]===AFe)&&e++;var a=1;(s[e]===gS||s[e]===Ec)&&(s[e]===Ec&&(a=-1),e++);for(var d=[];gd(s[e]);)d.push(s[e++]);var c=d.length?parseInt(il.apply(void 0,d),10):0;return t*(n+l*Math.pow(10,-r))*Math.pow(10,a*c)},ske={type:2},oke={type:3},rke={type:4},lke={type:13},ake={type:8},dke={type:21},cke={type:9},hke={type:10},uke={type:11},mke={type:12},pke={type:14},nx={type:23},gke={type:1},fke={type:25},bke={type:24},Uke={type:26},Fke={type:27},Ake={type:28},Zke={type:29},Ske={type:31},H4={type:32},RFe=function(){function s(){this._value=[]}return s.prototype.write=function(e){this._value=this._value.concat(r3(e))},s.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==H4;)e.push(t),t=this.consumeToken();return e},s.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case Kk:return this.consumeStringToken(Kk);case Sve:var t=this.peekCodePoint(0),i=this.peekCodePoint(1),n=this.peekCodePoint(2);if(Eae(t)||tU(i,n)){var o=ix(t,i,n)?Fve:Uve,r=this.consumeName();return{type:5,value:r,flags:o}}break;case Nve:if(this.peekCodePoint(0)===$M)return this.consumeCodePoint(),lke;break;case qk:return this.consumeStringToken(qk);case $k:return ske;case ew:return oke;case vO:if(this.peekCodePoint(0)===$M)return this.consumeCodePoint(),pke;break;case gS:if(kO(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case xve:return rke;case Ec:var l=e,a=this.peekCodePoint(0),d=this.peekCodePoint(1);if(kO(l,a,d))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(ix(l,a,d))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(a===Ec&&d===Qve)return this.consumeCodePoint(),this.consumeCodePoint(),bke;break;case CB:if(kO(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case kae:if(this.peekCodePoint(0)===vO)for(this.consumeCodePoint();;){var c=this.consumeCodePoint();if(c===vO&&(c=this.consumeCodePoint(),c===kae))return this.consumeToken();if(c===Rp)return this.consumeToken()}break;case Ive:return Uke;case Eve:return Fke;case yve:if(this.peekCodePoint(0)===Wve&&this.peekCodePoint(1)===Ec&&this.peekCodePoint(2)===Ec)return this.consumeCodePoint(),this.consumeCodePoint(),fke;break;case Mve:var h=this.peekCodePoint(0),u=this.peekCodePoint(1),m=this.peekCodePoint(2);if(ix(h,u,m)){var r=this.consumeName();return{type:7,value:r}}break;case wve:return Ake;case EC:if(tU(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case Tve:return Zke;case Cve:if(this.peekCodePoint(0)===$M)return this.consumeCodePoint(),ake;break;case Bve:return uke;case Lve:return mke;case Ove:case Pve:var p=this.peekCodePoint(0),g=this.peekCodePoint(1);return p===gS&&(fR(g)||g===ex)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case xae:if(this.peekCodePoint(0)===$M)return this.consumeCodePoint(),cke;if(this.peekCodePoint(0)===xae)return this.consumeCodePoint(),dke;break;case vve:if(this.peekCodePoint(0)===$M)return this.consumeCodePoint(),hke;break;case Rp:return H4}return tx(e)?(this.consumeWhiteSpace(),Ske):gd(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):MJ(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:il(e)}},s.prototype.consumeCodePoint=function(){var e=this._value.shift();return typeof e>"u"?-1:e},s.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},s.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},s.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();fR(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var i=!1;t===ex&&e.length<6;)e.push(t),t=this.consumeCodePoint(),i=!0;if(i){var n=parseInt(il.apply(void 0,e.map(function(a){return a===ex?UFe:a})),16),o=parseInt(il.apply(void 0,e.map(function(a){return a===ex?NFe:a})),16);return{type:30,start:n,end:o}}var r=parseInt(il.apply(void 0,e),16);if(this.peekCodePoint(0)===Ec&&fR(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var l=[];fR(t)&&l.length<6;)l.push(t),t=this.consumeCodePoint();var o=parseInt(il.apply(void 0,l),16);return{type:30,start:r,end:o}}else return{type:30,start:r,end:r}},s.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return e.toLowerCase()==="url"&&this.peekCodePoint(0)===$k?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===$k?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},s.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===Rp)return{type:22,value:""};var t=this.peekCodePoint(0);if(t===qk||t===Kk){var i=this.consumeStringToken(this.consumeCodePoint());return i.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===Rp||this.peekCodePoint(0)===ew)?(this.consumeCodePoint(),{type:22,value:i.value}):(this.consumeBadUrlRemnants(),nx)}for(;;){var n=this.consumeCodePoint();if(n===Rp||n===ew)return{type:22,value:il.apply(void 0,e)};if(tx(n))return this.consumeWhiteSpace(),this.peekCodePoint(0)===Rp||this.peekCodePoint(0)===ew?(this.consumeCodePoint(),{type:22,value:il.apply(void 0,e)}):(this.consumeBadUrlRemnants(),nx);if(n===Kk||n===qk||n===$k||ike(n))return this.consumeBadUrlRemnants(),nx;if(n===EC)if(tU(n,this.peekCodePoint(0)))e.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),nx;else e.push(n)}},s.prototype.consumeWhiteSpace=function(){for(;tx(this.peekCodePoint(0));)this.consumeCodePoint()},s.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(e===ew||e===Rp)return;tU(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},s.prototype.consumeStringSlice=function(e){for(var t=5e4,i="";e>0;){var n=Math.min(t,e);i+=il.apply(void 0,this._value.splice(0,n)),e-=n}return this._value.shift(),i},s.prototype.consumeStringToken=function(e){var t="",i=0;do{var n=this._value[i];if(n===Rp||n===void 0||n===e)return t+=this.consumeStringSlice(i),{type:0,value:t};if(n===QJ)return this._value.splice(0,i),gke;if(n===EC){var o=this._value[i+1];o!==Rp&&o!==void 0&&(o===QJ?(t+=this.consumeStringSlice(i),i=-1,this._value.shift()):tU(n,o)&&(t+=this.consumeStringSlice(i),t+=il(this.consumeEscapedCodePoint()),i=-1))}i++}while(!0)},s.prototype.consumeNumber=function(){var e=[],t=vv,i=this.peekCodePoint(0);for((i===gS||i===Ec)&&e.push(this.consumeCodePoint());gd(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0);var n=this.peekCodePoint(1);if(i===CB&&gd(n))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=vae;gd(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0),n=this.peekCodePoint(1);var o=this.peekCodePoint(2);if((i===SFe||i===AFe)&&((n===gS||n===Ec)&&gd(o)||gd(n)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=vae;gd(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[nke(e),t]},s.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],i=e[1],n=this.peekCodePoint(0),o=this.peekCodePoint(1),r=this.peekCodePoint(2);if(ix(n,o,r)){var l=this.consumeName();return{type:15,number:t,flags:i,unit:l}}return n===Rve?(this.consumeCodePoint(),{type:16,number:t,flags:i}):{type:17,number:t,flags:i}},s.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(fR(e)){for(var t=il(e);fR(this.peekCodePoint(0))&&t.length<6;)t+=il(this.consumeCodePoint());tx(this.peekCodePoint(0))&&this.consumeCodePoint();var i=parseInt(t,16);return i===0||Kve(i)||i>1114111?Iae:i}return e===Rp?Iae:e},s.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(Eae(t))e+=il(t);else if(tU(t,this.peekCodePoint(0)))e+=il(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(t),e}},s}(),VFe=function(){function s(e){this._tokens=e}return s.create=function(e){var t=new RFe;return t.write(e),new s(t.read())},s.parseValue=function(e){return s.create(e).parseComponentValue()},s.parseValues=function(e){return s.create(e).parseComponentValues()},s.prototype.parseComponentValue=function(){for(var e=this.consumeToken();e.type===31;)e=this.consumeToken();if(e.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do e=this.consumeToken();while(e.type===31);if(e.type===32)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},s.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(t.type===32)return e;e.push(t),e.push()}},s.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},s.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},i=this.consumeToken();;){if(i.type===32||Rke(i,e))return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue()),i=this.consumeToken()}},s.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var i=this.consumeToken();if(i.type===32||i.type===3)return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue())}},s.prototype.consumeToken=function(){var e=this._tokens.shift();return typeof e>"u"?H4:e},s.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},s}(),kv=function(s){return s.type===15},rM=function(s){return s.type===17},Oo=function(s){return s.type===20},Nke=function(s){return s.type===0},K4=function(s,e){return Oo(s)&&s.value===e},WFe=function(s){return s.type!==31},my=function(s){return s.type!==31&&s.type!==4},Pg=function(s){var e=[],t=[];return s.forEach(function(i){if(i.type===4){if(t.length===0)throw new Error("Error parsing function args, zero tokens for arg");e.push(t),t=[];return}i.type!==31&&t.push(i)}),t.length&&e.push(t),e},Rke=function(s,e){return e===11&&s.type===12||e===28&&s.type===29?!0:e===2&&s.type===3},yF=function(s){return s.type===17||s.type===15},Rl=function(s){return s.type===16||yF(s)},yFe=function(s){return s.length>1?[s[0],s[1]]:[s[0]]},xa={type:17,number:0,flags:vv},Xne={type:16,number:50,flags:vv},JU={type:16,number:100,flags:vv},AT=function(s,e,t){var i=s[0],n=s[1];return[lr(i,e),lr(typeof n<"u"?n:i,t)]},lr=function(s,e){if(s.type===16)return s.number/100*e;if(kv(s))switch(s.unit){case"rem":case"em":return 16*s.number;case"px":default:return s.number}return s.number},QFe="deg",MFe="grad",wFe="rad",TFe="turn",l3={name:"angle",parse:function(s,e){if(e.type===15)switch(e.unit){case QFe:return Math.PI*e.number/180;case MFe:return Math.PI/200*e.number;case wFe:return e.number;case TFe:return Math.PI*2*e.number}throw new Error("Unsupported angle type")}},CFe=function(s){return s.type===15&&(s.unit===QFe||s.unit===MFe||s.unit===wFe||s.unit===TFe)},BFe=function(s){var e=s.filter(Oo).map(function(t){return t.value}).join(" ");switch(e){case"to bottom right":case"to right bottom":case"left top":case"top left":return[xa,xa];case"to top":case"bottom":return Xu(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[xa,JU];case"to right":case"left":return Xu(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[JU,JU];case"to bottom":case"top":return Xu(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[JU,xa];case"to left":case"right":return Xu(270)}return 0},Xu=function(s){return Math.PI*s/180},gF={name:"color",parse:function(s,e){if(e.type===18){var t=Vke[e.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported color function "'+e.name+'"');return t(s,e.values)}if(e.type===5){if(e.value.length===3){var i=e.value.substring(0,1),n=e.value.substring(1,2),o=e.value.substring(2,3);return XU(parseInt(i+i,16),parseInt(n+n,16),parseInt(o+o,16),1)}if(e.value.length===4){var i=e.value.substring(0,1),n=e.value.substring(1,2),o=e.value.substring(2,3),r=e.value.substring(3,4);return XU(parseInt(i+i,16),parseInt(n+n,16),parseInt(o+o,16),parseInt(r+r,16)/255)}if(e.value.length===6){var i=e.value.substring(0,2),n=e.value.substring(2,4),o=e.value.substring(4,6);return XU(parseInt(i,16),parseInt(n,16),parseInt(o,16),1)}if(e.value.length===8){var i=e.value.substring(0,2),n=e.value.substring(2,4),o=e.value.substring(4,6),r=e.value.substring(6,8);return XU(parseInt(i,16),parseInt(n,16),parseInt(o,16),parseInt(r,16)/255)}}if(e.type===20){var l=Bf[e.value.toUpperCase()];if(typeof l<"u")return l}return Bf.TRANSPARENT}},fF=function(s){return(255&s)===0},ra=function(s){var e=255&s,t=255&s>>8,i=255&s>>16,n=255&s>>24;return e<255?"rgba("+n+","+i+","+t+","+e/255+")":"rgb("+n+","+i+","+t+")"},XU=function(s,e,t,i){return(s<<24|e<<16|t<<8|Math.round(i*255)<<0)>>>0},Dae=function(s,e){if(s.type===17)return s.number;if(s.type===16){var t=e===3?1:255;return e===3?s.number/100*t:Math.round(s.number/100*t)}return 0},Gae=function(s,e){var t=e.filter(my);if(t.length===3){var i=t.map(Dae),n=i[0],o=i[1],r=i[2];return XU(n,o,r,1)}if(t.length===4){var l=t.map(Dae),n=l[0],o=l[1],r=l[2],a=l[3];return XU(n,o,r,a)}return 0};function xO(s,e,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(e-s)*t*6+s:t<1/2?e:t<2/3?(e-s)*6*(2/3-t)+s:s}var Jae=function(s,e){var t=e.filter(my),i=t[0],n=t[1],o=t[2],r=t[3],l=(i.type===17?Xu(i.number):l3.parse(s,i))/(Math.PI*2),a=Rl(n)?n.number/100:0,d=Rl(o)?o.number/100:0,c=typeof r<"u"&&Rl(r)?lr(r,1):1;if(a===0)return XU(d*255,d*255,d*255,1);var h=d<=.5?d*(a+1):d+a-d*a,u=d*2-h,m=xO(u,h,l+1/3),p=xO(u,h,l),g=xO(u,h,l-1/3);return XU(m*255,p*255,g*255,c)},Vke={hsl:Jae,hsla:Jae,rgb:Gae,rgba:Gae},DC=function(s,e){return gF.parse(s,VFe.create(e).parseComponentValue())},Bf={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Wke={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(s,e){return e.map(function(t){if(Oo(t))switch(t.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},yke={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},a3=function(s,e){var t=gF.parse(s,e[0]),i=e[1];return i&&Rl(i)?{color:t,stop:i}:{color:t,stop:null}},Xae=function(s,e){var t=s[0],i=s[s.length-1];t.stop===null&&(t.stop=xa),i.stop===null&&(i.stop=JU);for(var n=[],o=0,r=0;r<s.length;r++){var l=s[r].stop;if(l!==null){var a=lr(l,e);a>o?n.push(a):n.push(o),o=a}else n.push(null)}for(var d=null,r=0;r<n.length;r++){var c=n[r];if(c===null)d===null&&(d=r);else if(d!==null){for(var h=r-d,u=n[d-1],m=(c-u)/(h+1),p=1;p<=h;p++)n[d+p-1]=m*p;d=null}}return s.map(function(g,f){var b=g.color;return{color:b,stop:Math.max(Math.min(1,n[f]/e),0)}})},Qke=function(s,e,t){var i=e/2,n=t/2,o=lr(s[0],e)-i,r=n-lr(s[1],t);return(Math.atan2(r,o)+Math.PI*2)%(Math.PI*2)},Mke=function(s,e,t){var i=typeof s=="number"?s:Qke(s,e,t),n=Math.abs(e*Math.sin(i))+Math.abs(t*Math.cos(i)),o=e/2,r=t/2,l=n/2,a=Math.sin(i-Math.PI/2)*l,d=Math.cos(i-Math.PI/2)*l;return[n,o-d,o+d,r-a,r+a]},Nm=function(s,e){return Math.sqrt(s*s+e*e)},Yae=function(s,e,t,i,n){var o=[[0,0],[0,e],[s,0],[s,e]];return o.reduce(function(r,l){var a=l[0],d=l[1],c=Nm(t-a,i-d);return(n?c<r.optimumDistance:c>r.optimumDistance)?{optimumCorner:l,optimumDistance:c}:r},{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},wke=function(s,e,t,i,n){var o=0,r=0;switch(s.size){case 0:s.shape===0?o=r=Math.min(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):s.shape===1&&(o=Math.min(Math.abs(e),Math.abs(e-i)),r=Math.min(Math.abs(t),Math.abs(t-n)));break;case 2:if(s.shape===0)o=r=Math.min(Nm(e,t),Nm(e,t-n),Nm(e-i,t),Nm(e-i,t-n));else if(s.shape===1){var l=Math.min(Math.abs(t),Math.abs(t-n))/Math.min(Math.abs(e),Math.abs(e-i)),a=Yae(i,n,e,t,!0),d=a[0],c=a[1];o=Nm(d-e,(c-t)/l),r=l*o}break;case 1:s.shape===0?o=r=Math.max(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):s.shape===1&&(o=Math.max(Math.abs(e),Math.abs(e-i)),r=Math.max(Math.abs(t),Math.abs(t-n)));break;case 3:if(s.shape===0)o=r=Math.max(Nm(e,t),Nm(e,t-n),Nm(e-i,t),Nm(e-i,t-n));else if(s.shape===1){var l=Math.max(Math.abs(t),Math.abs(t-n))/Math.max(Math.abs(e),Math.abs(e-i)),h=Yae(i,n,e,t,!1),d=h[0],c=h[1];o=Nm(d-e,(c-t)/l),r=l*o}break}return Array.isArray(s.size)&&(o=lr(s.size[0],i),r=s.size.length===2?lr(s.size[1],n):o),[o,r]},Tke=function(s,e){var t=Xu(180),i=[];return Pg(e).forEach(function(n,o){if(o===0){var r=n[0];if(r.type===20&&r.value==="to"){t=BFe(n);return}else if(CFe(r)){t=l3.parse(s,r);return}}var l=a3(s,n);i.push(l)}),{angle:t,stops:i,type:1}},sx=function(s,e){var t=Xu(180),i=[];return Pg(e).forEach(function(n,o){if(o===0){var r=n[0];if(r.type===20&&["top","left","right","bottom"].indexOf(r.value)!==-1){t=BFe(n);return}else if(CFe(r)){t=(l3.parse(s,r)+Xu(270))%Xu(360);return}}var l=a3(s,n);i.push(l)}),{angle:t,stops:i,type:1}},Cke=function(s,e){var t=Xu(180),i=[],n=1,o=0,r=3,l=[];return Pg(e).forEach(function(a,d){var c=a[0];if(d===0){if(Oo(c)&&c.value==="linear"){n=1;return}else if(Oo(c)&&c.value==="radial"){n=2;return}}if(c.type===18){if(c.name==="from"){var h=gF.parse(s,c.values[0]);i.push({stop:xa,color:h})}else if(c.name==="to"){var h=gF.parse(s,c.values[0]);i.push({stop:JU,color:h})}else if(c.name==="color-stop"){var u=c.values.filter(my);if(u.length===2){var h=gF.parse(s,u[1]),m=u[0];rM(m)&&i.push({stop:{type:16,number:m.number*100,flags:m.flags},color:h})}}}}),n===1?{angle:(t+Xu(180))%Xu(360),stops:i,type:n}:{size:r,shape:o,stops:i,position:l,type:n}},LFe="closest-side",vFe="farthest-side",kFe="closest-corner",xFe="farthest-corner",IFe="circle",EFe="ellipse",DFe="cover",GFe="contain",Bke=function(s,e){var t=0,i=3,n=[],o=[];return Pg(e).forEach(function(r,l){var a=!0;if(l===0){var d=!1;a=r.reduce(function(h,u){if(d)if(Oo(u))switch(u.value){case"center":return o.push(Xne),h;case"top":case"left":return o.push(xa),h;case"right":case"bottom":return o.push(JU),h}else(Rl(u)||yF(u))&&o.push(u);else if(Oo(u))switch(u.value){case IFe:return t=0,!1;case EFe:return t=1,!1;case"at":return d=!0,!1;case LFe:return i=0,!1;case DFe:case vFe:return i=1,!1;case GFe:case kFe:return i=2,!1;case xFe:return i=3,!1}else if(yF(u)||Rl(u))return Array.isArray(i)||(i=[]),i.push(u),!1;return h},a)}if(a){var c=a3(s,r);n.push(c)}}),{size:i,shape:t,stops:n,position:o,type:2}},ox=function(s,e){var t=0,i=3,n=[],o=[];return Pg(e).forEach(function(r,l){var a=!0;if(l===0?a=r.reduce(function(c,h){if(Oo(h))switch(h.value){case"center":return o.push(Xne),!1;case"top":case"left":return o.push(xa),!1;case"right":case"bottom":return o.push(JU),!1}else if(Rl(h)||yF(h))return o.push(h),!1;return c},a):l===1&&(a=r.reduce(function(c,h){if(Oo(h))switch(h.value){case IFe:return t=0,!1;case EFe:return t=1,!1;case GFe:case LFe:return i=0,!1;case vFe:return i=1,!1;case kFe:return i=2,!1;case DFe:case xFe:return i=3,!1}else if(yF(h)||Rl(h))return Array.isArray(i)||(i=[]),i.push(h),!1;return c},a)),a){var d=a3(s,r);n.push(d)}}),{size:i,shape:t,stops:n,position:o,type:2}},Lke=function(s){return s.type===1},vke=function(s){return s.type===2},Yne={name:"image",parse:function(s,e){if(e.type===22){var t={url:e.value,type:0};return s.cache.addImage(e.value),t}if(e.type===18){var i=JFe[e.name];if(typeof i>"u")throw new Error('Attempting to parse an unsupported image function "'+e.name+'"');return i(s,e.values)}throw new Error("Unsupported image type "+e.type)}};function kke(s){return!(s.type===20&&s.value==="none")&&(s.type!==18||!!JFe[s.name])}var JFe={"linear-gradient":Tke,"-moz-linear-gradient":sx,"-ms-linear-gradient":sx,"-o-linear-gradient":sx,"-webkit-linear-gradient":sx,"radial-gradient":Bke,"-moz-radial-gradient":ox,"-ms-radial-gradient":ox,"-o-radial-gradient":ox,"-webkit-radial-gradient":ox,"-webkit-gradient":Cke},xke={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(s,e){if(e.length===0)return[];var t=e[0];return t.type===20&&t.value==="none"?[]:e.filter(function(i){return my(i)&&kke(i)}).map(function(i){return Yne.parse(s,i)})}},Ike={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(s,e){return e.map(function(t){if(Oo(t))switch(t.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Eke={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(s,e){return Pg(e).map(function(t){return t.filter(Rl)}).map(yFe)}},Dke={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(s,e){return Pg(e).map(function(t){return t.filter(Oo).map(function(i){return i.value}).join(" ")}).map(Gke)}},Gke=function(s){switch(s){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},S1;(function(s){s.AUTO="auto",s.CONTAIN="contain",s.COVER="cover"})(S1||(S1={}));var Jke={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(s,e){return Pg(e).map(function(t){return t.filter(Xke)})}},Xke=function(s){return Oo(s)||Rl(s)},d3=function(s){return{name:"border-"+s+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Yke=d3("top"),_ke=d3("right"),zke=d3("bottom"),Oke=d3("left"),c3=function(s){return{name:"border-radius-"+s,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return yFe(t.filter(Rl))}}},jke=c3("top-left"),Pke=c3("top-right"),Hke=c3("bottom-right"),Kke=c3("bottom-left"),h3=function(s){return{name:"border-"+s+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},qke=h3("top"),$ke=h3("right"),exe=h3("bottom"),txe=h3("left"),u3=function(s){return{name:"border-"+s+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return kv(t)?t.number:0}}},ixe=u3("top"),nxe=u3("right"),sxe=u3("bottom"),oxe=u3("left"),rxe={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},lxe={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(s,e){switch(e){case"rtl":return 1;case"ltr":default:return 0}}},axe={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(s,e){return e.filter(Oo).reduce(function(t,i){return t|dxe(i.value)},0)}},dxe=function(s){switch(s){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},cxe={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},hxe={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(s,e){return e.type===20&&e.value==="normal"?0:e.type===17||e.type===15?e.number:0}},wJ;(function(s){s.NORMAL="normal",s.STRICT="strict"})(wJ||(wJ={}));var uxe={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"strict":return wJ.STRICT;case"normal":default:return wJ.NORMAL}}},mxe={name:"line-height",initialValue:"normal",prefix:!1,type:4},_ae=function(s,e){return Oo(s)&&s.value==="normal"?1.2*e:s.type===17?e*s.number:Rl(s)?lr(s,e):e},pxe={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(s,e){return e.type===20&&e.value==="none"?null:Yne.parse(s,e)}},gxe={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(s,e){switch(e){case"inside":return 0;case"outside":default:return 1}}},q4={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},m3=function(s){return{name:"margin-"+s,initialValue:"0",prefix:!1,type:4}},fxe=m3("top"),bxe=m3("right"),Uxe=m3("bottom"),Fxe=m3("left"),Axe={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(s,e){return e.filter(Oo).map(function(t){switch(t.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},Zxe={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"break-word":return"break-word";case"normal":default:return"normal"}}},p3=function(s){return{name:"padding-"+s,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Sxe=p3("top"),Nxe=p3("right"),Rxe=p3("bottom"),Vxe=p3("left"),Wxe={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(s,e){switch(e){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},yxe={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(s,e){switch(e){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Qxe={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(s,e){return e.length===1&&K4(e[0],"none")?[]:Pg(e).map(function(t){for(var i={color:Bf.TRANSPARENT,offsetX:xa,offsetY:xa,blur:xa},n=0,o=0;o<t.length;o++){var r=t[o];yF(r)?(n===0?i.offsetX=r:n===1?i.offsetY=r:i.blur=r,n++):i.color=gF.parse(s,r)}return i})}},Mxe={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},wxe={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(s,e){if(e.type===20&&e.value==="none")return null;if(e.type===18){var t=Bxe[e.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported transform function "'+e.name+'"');return t(e.values)}return null}},Txe=function(s){var e=s.filter(function(t){return t.type===17}).map(function(t){return t.number});return e.length===6?e:null},Cxe=function(s){var e=s.filter(function(a){return a.type===17}).map(function(a){return a.number}),t=e[0],i=e[1];e[2],e[3];var n=e[4],o=e[5];e[6],e[7],e[8],e[9],e[10],e[11];var r=e[12],l=e[13];return e[14],e[15],e.length===16?[t,i,n,o,r,l]:null},Bxe={matrix:Txe,matrix3d:Cxe},zae={type:16,number:50,flags:vv},Lxe=[zae,zae],vxe={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(s,e){var t=e.filter(Rl);return t.length!==2?Lxe:[t[0],t[1]]}},kxe={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},GC;(function(s){s.NORMAL="normal",s.BREAK_ALL="break-all",s.KEEP_ALL="keep-all"})(GC||(GC={}));var xxe={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"break-all":return GC.BREAK_ALL;case"keep-all":return GC.KEEP_ALL;case"normal":default:return GC.NORMAL}}},Ixe={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(s,e){if(e.type===20)return{auto:!0,order:0};if(rM(e))return{auto:!1,order:e.number};throw new Error("Invalid z-index number parsed")}},XFe={name:"time",parse:function(s,e){if(e.type===15)switch(e.unit.toLowerCase()){case"s":return 1e3*e.number;case"ms":return e.number}throw new Error("Unsupported time type")}},Exe={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(s,e){return rM(e)?e.number:1}},Dxe={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Gxe={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(s,e){return e.filter(Oo).map(function(t){switch(t.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(t){return t!==0})}},Jxe={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(s,e){var t=[],i=[];return e.forEach(function(n){switch(n.type){case 20:case 0:t.push(n.value);break;case 17:t.push(n.number.toString());break;case 4:i.push(t.join(" ")),t.length=0;break}}),t.length&&i.push(t.join(" ")),i.map(function(n){return n.indexOf(" ")===-1?n:"'"+n+"'"})}},Xxe={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},Yxe={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(s,e){if(rM(e))return e.number;if(Oo(e))switch(e.value){case"bold":return 700;case"normal":default:return 400}return 400}},_xe={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(s,e){return e.filter(Oo).map(function(t){return t.value})}},zxe={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},Xl=function(s,e){return(s&e)!==0},Oxe={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(s,e){if(e.length===0)return[];var t=e[0];return t.type===20&&t.value==="none"?[]:e}},jxe={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(s,e){if(e.length===0)return null;var t=e[0];if(t.type===20&&t.value==="none")return null;for(var i=[],n=e.filter(WFe),o=0;o<n.length;o++){var r=n[o],l=n[o+1];if(r.type===20){var a=l&&rM(l)?l.number:1;i.push({counter:r.value,increment:a})}}return i}},Pxe={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(s,e){if(e.length===0)return[];for(var t=[],i=e.filter(WFe),n=0;n<i.length;n++){var o=i[n],r=i[n+1];if(Oo(o)&&o.value!=="none"){var l=r&&rM(r)?r.number:0;t.push({counter:o.value,reset:l})}}return t}},Hxe={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(s,e){return e.filter(kv).map(function(t){return XFe.parse(s,t)})}},Kxe={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(s,e){if(e.length===0)return null;var t=e[0];if(t.type===20&&t.value==="none")return null;var i=[],n=e.filter(Nke);if(n.length%2!==0)return null;for(var o=0;o<n.length;o+=2){var r=n[o].value,l=n[o+1].value;i.push({open:r,close:l})}return i}},Oae=function(s,e,t){if(!s)return"";var i=s[Math.min(e,s.length-1)];return i?t?i.open:i.close:""},qxe={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(s,e){return e.length===1&&K4(e[0],"none")?[]:Pg(e).map(function(t){for(var i={color:255,offsetX:xa,offsetY:xa,blur:xa,spread:xa,inset:!1},n=0,o=0;o<t.length;o++){var r=t[o];K4(r,"inset")?i.inset=!0:yF(r)?(n===0?i.offsetX=r:n===1?i.offsetY=r:n===2?i.blur=r:i.spread=r,n++):i.color=gF.parse(s,r)}return i})}},$xe={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(s,e){var t=[0,1,2],i=[];return e.filter(Oo).forEach(function(n){switch(n.value){case"stroke":i.push(1);break;case"fill":i.push(0);break;case"markers":i.push(2);break}}),t.forEach(function(n){i.indexOf(n)===-1&&i.push(n)}),i}},eIe={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},tIe={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(s,e){return kv(e)?e.number:0}},iIe=function(){function s(e,t){var i,n;this.animationDuration=Li(e,Hxe,t.animationDuration),this.backgroundClip=Li(e,Wke,t.backgroundClip),this.backgroundColor=Li(e,yke,t.backgroundColor),this.backgroundImage=Li(e,xke,t.backgroundImage),this.backgroundOrigin=Li(e,Ike,t.backgroundOrigin),this.backgroundPosition=Li(e,Eke,t.backgroundPosition),this.backgroundRepeat=Li(e,Dke,t.backgroundRepeat),this.backgroundSize=Li(e,Jke,t.backgroundSize),this.borderTopColor=Li(e,Yke,t.borderTopColor),this.borderRightColor=Li(e,_ke,t.borderRightColor),this.borderBottomColor=Li(e,zke,t.borderBottomColor),this.borderLeftColor=Li(e,Oke,t.borderLeftColor),this.borderTopLeftRadius=Li(e,jke,t.borderTopLeftRadius),this.borderTopRightRadius=Li(e,Pke,t.borderTopRightRadius),this.borderBottomRightRadius=Li(e,Hke,t.borderBottomRightRadius),this.borderBottomLeftRadius=Li(e,Kke,t.borderBottomLeftRadius),this.borderTopStyle=Li(e,qke,t.borderTopStyle),this.borderRightStyle=Li(e,$ke,t.borderRightStyle),this.borderBottomStyle=Li(e,exe,t.borderBottomStyle),this.borderLeftStyle=Li(e,txe,t.borderLeftStyle),this.borderTopWidth=Li(e,ixe,t.borderTopWidth),this.borderRightWidth=Li(e,nxe,t.borderRightWidth),this.borderBottomWidth=Li(e,sxe,t.borderBottomWidth),this.borderLeftWidth=Li(e,oxe,t.borderLeftWidth),this.boxShadow=Li(e,qxe,t.boxShadow),this.color=Li(e,rxe,t.color),this.direction=Li(e,lxe,t.direction),this.display=Li(e,axe,t.display),this.float=Li(e,cxe,t.cssFloat),this.fontFamily=Li(e,Jxe,t.fontFamily),this.fontSize=Li(e,Xxe,t.fontSize),this.fontStyle=Li(e,zxe,t.fontStyle),this.fontVariant=Li(e,_xe,t.fontVariant),this.fontWeight=Li(e,Yxe,t.fontWeight),this.letterSpacing=Li(e,hxe,t.letterSpacing),this.lineBreak=Li(e,uxe,t.lineBreak),this.lineHeight=Li(e,mxe,t.lineHeight),this.listStyleImage=Li(e,pxe,t.listStyleImage),this.listStylePosition=Li(e,gxe,t.listStylePosition),this.listStyleType=Li(e,q4,t.listStyleType),this.marginTop=Li(e,fxe,t.marginTop),this.marginRight=Li(e,bxe,t.marginRight),this.marginBottom=Li(e,Uxe,t.marginBottom),this.marginLeft=Li(e,Fxe,t.marginLeft),this.opacity=Li(e,Exe,t.opacity);var o=Li(e,Axe,t.overflow);this.overflowX=o[0],this.overflowY=o[o.length>1?1:0],this.overflowWrap=Li(e,Zxe,t.overflowWrap),this.paddingTop=Li(e,Sxe,t.paddingTop),this.paddingRight=Li(e,Nxe,t.paddingRight),this.paddingBottom=Li(e,Rxe,t.paddingBottom),this.paddingLeft=Li(e,Vxe,t.paddingLeft),this.paintOrder=Li(e,$xe,t.paintOrder),this.position=Li(e,yxe,t.position),this.textAlign=Li(e,Wxe,t.textAlign),this.textDecorationColor=Li(e,Dxe,(i=t.textDecorationColor)!==null&&i!==void 0?i:t.color),this.textDecorationLine=Li(e,Gxe,(n=t.textDecorationLine)!==null&&n!==void 0?n:t.textDecoration),this.textShadow=Li(e,Qxe,t.textShadow),this.textTransform=Li(e,Mxe,t.textTransform),this.transform=Li(e,wxe,t.transform),this.transformOrigin=Li(e,vxe,t.transformOrigin),this.visibility=Li(e,kxe,t.visibility),this.webkitTextStrokeColor=Li(e,eIe,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=Li(e,tIe,t.webkitTextStrokeWidth),this.wordBreak=Li(e,xxe,t.wordBreak),this.zIndex=Li(e,Ixe,t.zIndex)}return s.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},s.prototype.isTransparent=function(){return fF(this.backgroundColor)},s.prototype.isTransformed=function(){return this.transform!==null},s.prototype.isPositioned=function(){return this.position!==0},s.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},s.prototype.isFloating=function(){return this.float!==0},s.prototype.isInlineLevel=function(){return Xl(this.display,4)||Xl(this.display,33554432)||Xl(this.display,268435456)||Xl(this.display,536870912)||Xl(this.display,67108864)||Xl(this.display,134217728)},s}(),nIe=function(){function s(e,t){this.content=Li(e,Oxe,t.content),this.quotes=Li(e,Kxe,t.quotes)}return s}(),jae=function(){function s(e,t){this.counterIncrement=Li(e,jxe,t.counterIncrement),this.counterReset=Li(e,Pxe,t.counterReset)}return s}(),Li=function(s,e,t){var i=new RFe,n=t!==null&&typeof t<"u"?t.toString():e.initialValue;i.write(n);var o=new VFe(i.read());switch(e.type){case 2:var r=o.parseComponentValue();return e.parse(s,Oo(r)?r.value:e.initialValue);case 0:return e.parse(s,o.parseComponentValue());case 1:return e.parse(s,o.parseComponentValues());case 4:return o.parseComponentValue();case 3:switch(e.format){case"angle":return l3.parse(s,o.parseComponentValue());case"color":return gF.parse(s,o.parseComponentValue());case"image":return Yne.parse(s,o.parseComponentValue());case"length":var l=o.parseComponentValue();return yF(l)?l:xa;case"length-percentage":var a=o.parseComponentValue();return Rl(a)?a:xa;case"time":return XFe.parse(s,o.parseComponentValue())}break}},sIe="data-html2canvas-debug",oIe=function(s){var e=s.getAttribute(sIe);switch(e){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},$4=function(s,e){var t=oIe(s);return t===1||e===t},Hg=function(){function s(e,t){if(this.context=e,this.textNodes=[],this.elements=[],this.flags=0,$4(t,3))debugger;this.styles=new iIe(e,window.getComputedStyle(t,null)),iK(t)&&(this.styles.animationDuration.some(function(i){return i>0})&&(t.style.animationDuration="0s"),this.styles.transform!==null&&(t.style.transform="none")),this.bounds=o3(this.context,t),$4(t,4)&&(this.flags|=16)}return s}(),rIe="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",Pae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ZT=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var rx=0;rx<Pae.length;rx++)ZT[Pae.charCodeAt(rx)]=rx;var lIe=function(s){var e=s.length*.75,t=s.length,i,n=0,o,r,l,a;s[s.length-1]==="="&&(e--,s[s.length-2]==="="&&e--);var d=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(e):new Array(e),c=Array.isArray(d)?d:new Uint8Array(d);for(i=0;i<t;i+=4)o=ZT[s.charCodeAt(i)],r=ZT[s.charCodeAt(i+1)],l=ZT[s.charCodeAt(i+2)],a=ZT[s.charCodeAt(i+3)],c[n++]=o<<2|r>>4,c[n++]=(r&15)<<4|l>>2,c[n++]=(l&3)<<6|a&63;return d},aIe=function(s){for(var e=s.length,t=[],i=0;i<e;i+=2)t.push(s[i+1]<<8|s[i]);return t},dIe=function(s){for(var e=s.length,t=[],i=0;i<e;i+=4)t.push(s[i+3]<<24|s[i+2]<<16|s[i+1]<<8|s[i]);return t},LS=5,_ne=6+5,IO=2,cIe=_ne-LS,YFe=65536>>LS,hIe=1<<LS,EO=hIe-1,uIe=1024>>LS,mIe=YFe+uIe,pIe=mIe,gIe=32,fIe=pIe+gIe,bIe=65536>>_ne,UIe=1<<cIe,FIe=UIe-1,Hae=function(s,e,t){return s.slice?s.slice(e,t):new Uint16Array(Array.prototype.slice.call(s,e,t))},AIe=function(s,e,t){return s.slice?s.slice(e,t):new Uint32Array(Array.prototype.slice.call(s,e,t))},ZIe=function(s,e){var t=lIe(s),i=Array.isArray(t)?dIe(t):new Uint32Array(t),n=Array.isArray(t)?aIe(t):new Uint16Array(t),o=24,r=Hae(n,o/2,i[4]/2),l=i[5]===2?Hae(n,(o+i[4])/2):AIe(i,Math.ceil((o+i[4])/4));return new SIe(i[0],i[1],i[2],i[3],r,l)},SIe=function(){function s(e,t,i,n,o,r){this.initialValue=e,this.errorValue=t,this.highStart=i,this.highValueIndex=n,this.index=o,this.data=r}return s.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=this.index[e>>LS],t=(t<<IO)+(e&EO),this.data[t];if(e<=65535)return t=this.index[YFe+(e-55296>>LS)],t=(t<<IO)+(e&EO),this.data[t];if(e<this.highStart)return t=fIe-bIe+(e>>_ne),t=this.index[t],t+=e>>LS&FIe,t=this.index[t],t=(t<<IO)+(e&EO),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},s}(),Kae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",NIe=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var lx=0;lx<Kae.length;lx++)NIe[Kae.charCodeAt(lx)]=lx;var RIe=1,DO=2,GO=3,qae=4,$ae=5,VIe=7,ede=8,JO=9,XO=10,tde=11,ide=12,nde=13,sde=14,YO=15,WIe=function(s){for(var e=[],t=0,i=s.length;t<i;){var n=s.charCodeAt(t++);if(n>=55296&&n<=56319&&t<i){var o=s.charCodeAt(t++);(o&64512)===56320?e.push(((n&1023)<<10)+(o&1023)+65536):(e.push(n),t--)}else e.push(n)}return e},yIe=function(){for(var s=[],e=0;e<arguments.length;e++)s[e]=arguments[e];if(String.fromCodePoint)return String.fromCodePoint.apply(String,s);var t=s.length;if(!t)return"";for(var i=[],n=-1,o="";++n<t;){var r=s[n];r<=65535?i.push(r):(r-=65536,i.push((r>>10)+55296,r%1024+56320)),(n+1===t||i.length>16384)&&(o+=String.fromCharCode.apply(String,i),i.length=0)}return o},QIe=ZIe(rIe),Vu="×",_O="÷",MIe=function(s){return QIe.get(s)},wIe=function(s,e,t){var i=t-2,n=e[i],o=e[t-1],r=e[t];if(o===DO&&r===GO)return Vu;if(o===DO||o===GO||o===qae||r===DO||r===GO||r===qae)return _O;if(o===ede&&[ede,JO,tde,ide].indexOf(r)!==-1||(o===tde||o===JO)&&(r===JO||r===XO)||(o===ide||o===XO)&&r===XO||r===nde||r===$ae||r===VIe||o===RIe)return Vu;if(o===nde&&r===sde){for(;n===$ae;)n=e[--i];if(n===sde)return Vu}if(o===YO&&r===YO){for(var l=0;n===YO;)l++,n=e[--i];if(l%2===0)return Vu}return _O},TIe=function(s){var e=WIe(s),t=e.length,i=0,n=0,o=e.map(MIe);return{next:function(){if(i>=t)return{done:!0,value:null};for(var r=Vu;i<t&&(r=wIe(e,o,++i))===Vu;);if(r!==Vu||i===t){var l=yIe.apply(null,e.slice(n,i));return n=i,{value:l,done:!1}}return{done:!0,value:null}}}},CIe=function(s){for(var e=TIe(s),t=[],i;!(i=e.next()).done;)i.value&&t.push(i.value.slice());return t},BIe=function(s){var e=123;if(s.createRange){var t=s.createRange();if(t.getBoundingClientRect){var i=s.createElement("boundtest");i.style.height=e+"px",i.style.display="block",s.body.appendChild(i),t.selectNode(i);var n=t.getBoundingClientRect(),o=Math.round(n.height);if(s.body.removeChild(i),o===e)return!0}}return!1},LIe=function(s){var e=s.createElement("boundtest");e.style.width="50px",e.style.display="block",e.style.fontSize="12px",e.style.letterSpacing="0px",e.style.wordSpacing="0px",s.body.appendChild(e);var t=s.createRange();e.innerHTML=typeof"".repeat=="function"?"👨".repeat(10):"";var i=e.firstChild,n=r3(i.data).map(function(a){return il(a)}),o=0,r={},l=n.every(function(a,d){t.setStart(i,o),t.setEnd(i,o+a.length);var c=t.getBoundingClientRect();o+=a.length;var h=c.x>r.x||c.y>r.y;return r=c,d===0?!0:h});return s.body.removeChild(e),l},vIe=function(){return typeof new Image().crossOrigin<"u"},kIe=function(){return typeof new XMLHttpRequest().responseType=="string"},xIe=function(s){var e=new Image,t=s.createElement("canvas"),i=t.getContext("2d");if(!i)return!1;e.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{i.drawImage(e,0,0),t.toDataURL()}catch{return!1}return!0},ode=function(s){return s[0]===0&&s[1]===255&&s[2]===0&&s[3]===255},IIe=function(s){var e=s.createElement("canvas"),t=100;e.width=t,e.height=t;var i=e.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,t,t);var n=new Image,o=e.toDataURL();n.src=o;var r=eK(t,t,0,0,n);return i.fillStyle="red",i.fillRect(0,0,t,t),rde(r).then(function(l){i.drawImage(l,0,0);var a=i.getImageData(0,0,t,t).data;i.fillStyle="red",i.fillRect(0,0,t,t);var d=s.createElement("div");return d.style.backgroundImage="url("+o+")",d.style.height=t+"px",ode(a)?rde(eK(t,t,0,0,d)):Promise.reject(!1)}).then(function(l){return i.drawImage(l,0,0),ode(i.getImageData(0,0,t,t).data)}).catch(function(){return!1})},eK=function(s,e,t,i,n){var o="http://www.w3.org/2000/svg",r=document.createElementNS(o,"svg"),l=document.createElementNS(o,"foreignObject");return r.setAttributeNS(null,"width",s.toString()),r.setAttributeNS(null,"height",e.toString()),l.setAttributeNS(null,"width","100%"),l.setAttributeNS(null,"height","100%"),l.setAttributeNS(null,"x",t.toString()),l.setAttributeNS(null,"y",i.toString()),l.setAttributeNS(null,"externalResourcesRequired","true"),r.appendChild(l),l.appendChild(n),r},rde=function(s){return new Promise(function(e,t){var i=new Image;i.onload=function(){return e(i)},i.onerror=t,i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(s))})},Ta={get SUPPORT_RANGE_BOUNDS(){var s=BIe(document);return Object.defineProperty(Ta,"SUPPORT_RANGE_BOUNDS",{value:s}),s},get SUPPORT_WORD_BREAKING(){var s=Ta.SUPPORT_RANGE_BOUNDS&&LIe(document);return Object.defineProperty(Ta,"SUPPORT_WORD_BREAKING",{value:s}),s},get SUPPORT_SVG_DRAWING(){var s=xIe(document);return Object.defineProperty(Ta,"SUPPORT_SVG_DRAWING",{value:s}),s},get SUPPORT_FOREIGNOBJECT_DRAWING(){var s=typeof Array.from=="function"&&typeof window.fetch=="function"?IIe(document):Promise.resolve(!1);return Object.defineProperty(Ta,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:s}),s},get SUPPORT_CORS_IMAGES(){var s=vIe();return Object.defineProperty(Ta,"SUPPORT_CORS_IMAGES",{value:s}),s},get SUPPORT_RESPONSE_TYPE(){var s=kIe();return Object.defineProperty(Ta,"SUPPORT_RESPONSE_TYPE",{value:s}),s},get SUPPORT_CORS_XHR(){var s="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Ta,"SUPPORT_CORS_XHR",{value:s}),s},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var s=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(Ta,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:s}),s}},JC=function(){function s(e,t){this.text=e,this.bounds=t}return s}(),EIe=function(s,e,t,i){var n=JIe(e,t),o=[],r=0;return n.forEach(function(l){if(t.textDecorationLine.length||l.trim().length>0)if(Ta.SUPPORT_RANGE_BOUNDS){var a=lde(i,r,l.length).getClientRects();if(a.length>1){var d=zne(l),c=0;d.forEach(function(u){o.push(new JC(u,Xf.fromDOMRectList(s,lde(i,c+r,u.length).getClientRects()))),c+=u.length})}else o.push(new JC(l,Xf.fromDOMRectList(s,a)))}else{var h=i.splitText(l.length);o.push(new JC(l,DIe(s,i))),i=h}else Ta.SUPPORT_RANGE_BOUNDS||(i=i.splitText(l.length));r+=l.length}),o},DIe=function(s,e){var t=e.ownerDocument;if(t){var i=t.createElement("html2canvaswrapper");i.appendChild(e.cloneNode(!0));var n=e.parentNode;if(n){n.replaceChild(i,e);var o=o3(s,i);return i.firstChild&&n.replaceChild(i.firstChild,i),o}}return Xf.EMPTY},lde=function(s,e,t){var i=s.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(s,e),n.setEnd(s,e+t),n},zne=function(s){if(Ta.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(e.segment(s)).map(function(t){return t.segment})}return CIe(s)},GIe=function(s,e){if(Ta.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(s)).map(function(i){return i.segment})}return YIe(s,e)},JIe=function(s,e){return e.letterSpacing!==0?zne(s):GIe(s,e)},XIe=[32,160,4961,65792,65793,4153,4241],YIe=function(s,e){for(var t=bve(s,{lineBreak:e.lineBreak,wordBreak:e.overflowWrap==="break-word"?"break-word":e.wordBreak}),i=[],n,o=function(){if(n.value){var r=n.value.slice(),l=r3(r),a="";l.forEach(function(d){XIe.indexOf(d)===-1?a+=il(d):(a.length&&i.push(a),i.push(il(d)),a="")}),a.length&&i.push(a)}};!(n=t.next()).done;)o();return i},_Ie=function(){function s(e,t,i){this.text=zIe(t.data,i.textTransform),this.textBounds=EIe(e,this.text,i,t)}return s}(),zIe=function(s,e){switch(e){case 1:return s.toLowerCase();case 3:return s.replace(OIe,jIe);case 2:return s.toUpperCase();default:return s}},OIe=/(^|\s|:|-|\(|\))([a-z])/g,jIe=function(s,e,t){return s.length>0?e+t.toUpperCase():s},_Fe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.src=i.currentSrc||i.src,n.intrinsicWidth=i.naturalWidth,n.intrinsicHeight=i.naturalHeight,n.context.cache.addImage(n.src),n}return e}(Hg),zFe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.canvas=i,n.intrinsicWidth=i.width,n.intrinsicHeight=i.height,n}return e}(Hg),OFe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this,o=new XMLSerializer,r=o3(t,i);return i.setAttribute("width",r.width+"px"),i.setAttribute("height",r.height+"px"),n.svg="data:image/svg+xml,"+encodeURIComponent(o.serializeToString(i)),n.intrinsicWidth=i.width.baseVal.value,n.intrinsicHeight=i.height.baseVal.value,n.context.cache.addImage(n.svg),n}return e}(Hg),jFe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.value=i.value,n}return e}(Hg),tK=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.start=i.start,n.reversed=typeof i.reversed=="boolean"&&i.reversed===!0,n}return e}(Hg),PIe=[{type:15,flags:0,unit:"px",number:3}],HIe=[{type:16,flags:0,number:50}],KIe=function(s){return s.width>s.height?new Xf(s.left+(s.width-s.height)/2,s.top,s.height,s.height):s.width<s.height?new Xf(s.left,s.top+(s.height-s.width)/2,s.width,s.width):s},qIe=function(s){var e=s.type===$Ie?new Array(s.value.length+1).join("•"):s.value;return e.length===0?s.placeholder||"":e},TJ="checkbox",CJ="radio",$Ie="password",ade=707406591,One=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;switch(n.type=i.type.toLowerCase(),n.checked=i.checked,n.value=qIe(i),(n.type===TJ||n.type===CJ)&&(n.styles.backgroundColor=3739148031,n.styles.borderTopColor=n.styles.borderRightColor=n.styles.borderBottomColor=n.styles.borderLeftColor=2779096575,n.styles.borderTopWidth=n.styles.borderRightWidth=n.styles.borderBottomWidth=n.styles.borderLeftWidth=1,n.styles.borderTopStyle=n.styles.borderRightStyle=n.styles.borderBottomStyle=n.styles.borderLeftStyle=1,n.styles.backgroundClip=[0],n.styles.backgroundOrigin=[0],n.bounds=KIe(n.bounds)),n.type){case TJ:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=PIe;break;case CJ:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=HIe;break}return n}return e}(Hg),PFe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this,o=i.options[i.selectedIndex||0];return n.value=o&&o.text||"",n}return e}(Hg),HFe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.value=i.value,n}return e}(Hg),KFe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;n.src=i.src,n.width=parseInt(i.width,10)||0,n.height=parseInt(i.height,10)||0,n.backgroundColor=n.styles.backgroundColor;try{if(i.contentWindow&&i.contentWindow.document&&i.contentWindow.document.documentElement){n.tree=$Fe(t,i.contentWindow.document.documentElement);var o=i.contentWindow.document.documentElement?DC(t,getComputedStyle(i.contentWindow.document.documentElement).backgroundColor):Bf.TRANSPARENT,r=i.contentWindow.document.body?DC(t,getComputedStyle(i.contentWindow.document.body).backgroundColor):Bf.TRANSPARENT;n.backgroundColor=fF(o)?fF(r)?n.styles.backgroundColor:r:o}}catch{}return n}return e}(Hg),eEe=["OL","UL","MENU"],$E=function(s,e,t,i){for(var n=e.firstChild,o=void 0;n;n=o)if(o=n.nextSibling,eAe(n)&&n.data.trim().length>0)t.textNodes.push(new _Ie(s,n,t.styles));else if(mW(n))if(sAe(n)&&n.assignedNodes)n.assignedNodes().forEach(function(l){return $E(s,l,t,i)});else{var r=qFe(s,n);r.styles.isVisible()&&(tEe(n,r,i)?r.flags|=4:iEe(r.styles)&&(r.flags|=2),eEe.indexOf(n.tagName)!==-1&&(r.flags|=8),t.elements.push(r),n.slot,n.shadowRoot?$E(s,n.shadowRoot,r,i):!BJ(n)&&!tAe(n)&&!LJ(n)&&$E(s,n,r,i))}},qFe=function(s,e){return nK(e)?new _Fe(s,e):iAe(e)?new zFe(s,e):tAe(e)?new OFe(s,e):nEe(e)?new jFe(s,e):sEe(e)?new tK(s,e):oEe(e)?new One(s,e):LJ(e)?new PFe(s,e):BJ(e)?new HFe(s,e):nAe(e)?new KFe(s,e):new Hg(s,e)},$Fe=function(s,e){var t=qFe(s,e);return t.flags|=4,$E(s,e,t,t),t},tEe=function(s,e,t){return e.styles.isPositionedWithZIndex()||e.styles.opacity<1||e.styles.isTransformed()||jne(s)&&t.styles.isTransparent()},iEe=function(s){return s.isPositioned()||s.isFloating()},eAe=function(s){return s.nodeType===Node.TEXT_NODE},mW=function(s){return s.nodeType===Node.ELEMENT_NODE},iK=function(s){return mW(s)&&typeof s.style<"u"&&!eD(s)},eD=function(s){return typeof s.className=="object"},nEe=function(s){return s.tagName==="LI"},sEe=function(s){return s.tagName==="OL"},oEe=function(s){return s.tagName==="INPUT"},rEe=function(s){return s.tagName==="HTML"},tAe=function(s){return s.tagName==="svg"},jne=function(s){return s.tagName==="BODY"},iAe=function(s){return s.tagName==="CANVAS"},dde=function(s){return s.tagName==="VIDEO"},nK=function(s){return s.tagName==="IMG"},nAe=function(s){return s.tagName==="IFRAME"},cde=function(s){return s.tagName==="STYLE"},lEe=function(s){return s.tagName==="SCRIPT"},BJ=function(s){return s.tagName==="TEXTAREA"},LJ=function(s){return s.tagName==="SELECT"},sAe=function(s){return s.tagName==="SLOT"},hde=function(s){return s.tagName.indexOf("-")>0},aEe=function(){function s(){this.counters={}}return s.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},s.prototype.getCounterValues=function(e){var t=this.counters[e];return t||[]},s.prototype.pop=function(e){var t=this;e.forEach(function(i){return t.counters[i].pop()})},s.prototype.parse=function(e){var t=this,i=e.counterIncrement,n=e.counterReset,o=!0;i!==null&&i.forEach(function(l){var a=t.counters[l.counter];a&&l.increment!==0&&(o=!1,a.length||a.push(1),a[Math.max(0,a.length-1)]+=l.increment)});var r=[];return o&&n.forEach(function(l){var a=t.counters[l.counter];r.push(l.counter),a||(a=t.counters[l.counter]=[]),a.push(l.reset)}),r},s}(),ude={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},mde={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},dEe={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},cEe={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},bR=function(s,e,t,i,n,o){return s<e||s>t?BB(s,n,o.length>0):i.integers.reduce(function(r,l,a){for(;s>=l;)s-=l,r+=i.values[a];return r},"")+o},oAe=function(s,e,t,i){var n="";do t||s--,n=i(s)+n,s/=e;while(s*e>=e);return n},Kr=function(s,e,t,i,n){var o=t-e+1;return(s<0?"-":"")+(oAe(Math.abs(s),o,i,function(r){return il(Math.floor(r%o)+e)})+n)},fA=function(s,e,t){t===void 0&&(t=". ");var i=e.length;return oAe(Math.abs(s),i,!1,function(n){return e[Math.floor(n%i)]})+t},WV=1,Ib=2,Eb=4,ST=8,a0=function(s,e,t,i,n,o){if(s<-9999||s>9999)return BB(s,4,n.length>0);var r=Math.abs(s),l=n;if(r===0)return e[0]+l;for(var a=0;r>0&&a<=4;a++){var d=r%10;d===0&&Xl(o,WV)&&l!==""?l=e[d]+l:d>1||d===1&&a===0||d===1&&a===1&&Xl(o,Ib)||d===1&&a===1&&Xl(o,Eb)&&s>100||d===1&&a>1&&Xl(o,ST)?l=e[d]+(a>0?t[a-1]:"")+l:d===1&&a>0&&(l=t[a-1]+l),r=Math.floor(r/10)}return(s<0?i:"")+l},pde="十百千萬",gde="拾佰仟萬",fde="マイナス",zO="마이너스",BB=function(s,e,t){var i=t?". ":"",n=t?"、":"",o=t?", ":"",r=t?" ":"";switch(e){case 0:return"•"+r;case 1:return"◦"+r;case 2:return"◾"+r;case 5:var l=Kr(s,48,57,!0,i);return l.length<4?"0"+l:l;case 4:return fA(s,"〇一二三四五六七八九",n);case 6:return bR(s,1,3999,ude,3,i).toLowerCase();case 7:return bR(s,1,3999,ude,3,i);case 8:return Kr(s,945,969,!1,i);case 9:return Kr(s,97,122,!1,i);case 10:return Kr(s,65,90,!1,i);case 11:return Kr(s,1632,1641,!0,i);case 12:case 49:return bR(s,1,9999,mde,3,i);case 35:return bR(s,1,9999,mde,3,i).toLowerCase();case 13:return Kr(s,2534,2543,!0,i);case 14:case 30:return Kr(s,6112,6121,!0,i);case 15:return fA(s,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return fA(s,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return a0(s,"零一二三四五六七八九",pde,"負",n,Ib|Eb|ST);case 47:return a0(s,"零壹貳參肆伍陸柒捌玖",gde,"負",n,WV|Ib|Eb|ST);case 42:return a0(s,"零一二三四五六七八九",pde,"负",n,Ib|Eb|ST);case 41:return a0(s,"零壹贰叁肆伍陆柒捌玖",gde,"负",n,WV|Ib|Eb|ST);case 26:return a0(s,"〇一二三四五六七八九","十百千万",fde,n,0);case 25:return a0(s,"零壱弐参四伍六七八九","拾百千万",fde,n,WV|Ib|Eb);case 31:return a0(s,"영일이삼사오육칠팔구","십백천만",zO,o,WV|Ib|Eb);case 33:return a0(s,"零一二三四五六七八九","十百千萬",zO,o,0);case 32:return a0(s,"零壹貳參四五六七八九","拾百千",zO,o,WV|Ib|Eb);case 18:return Kr(s,2406,2415,!0,i);case 20:return bR(s,1,19999,cEe,3,i);case 21:return Kr(s,2790,2799,!0,i);case 22:return Kr(s,2662,2671,!0,i);case 22:return bR(s,1,10999,dEe,3,i);case 23:return fA(s,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return fA(s,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return Kr(s,3302,3311,!0,i);case 28:return fA(s,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return fA(s,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return Kr(s,3792,3801,!0,i);case 37:return Kr(s,6160,6169,!0,i);case 38:return Kr(s,4160,4169,!0,i);case 39:return Kr(s,2918,2927,!0,i);case 40:return Kr(s,1776,1785,!0,i);case 43:return Kr(s,3046,3055,!0,i);case 44:return Kr(s,3174,3183,!0,i);case 45:return Kr(s,3664,3673,!0,i);case 46:return Kr(s,3872,3881,!0,i);case 3:default:return Kr(s,48,57,!0,i)}},rAe="data-html2canvas-ignore",bde=function(){function s(e,t,i){if(this.context=e,this.options=i,this.scrolledElements=[],this.referenceElement=t,this.counters=new aEe,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return s.prototype.toIFrame=function(e,t){var i=this,n=hEe(e,t);if(!n.contentWindow)return Promise.reject("Unable to find iframe window");var o=e.defaultView.pageXOffset,r=e.defaultView.pageYOffset,l=n.contentWindow,a=l.document,d=pEe(n).then(function(){return Hd(i,void 0,void 0,function(){var c,h;return dd(this,function(u){switch(u.label){case 0:return this.scrolledElements.forEach(UEe),l&&(l.scrollTo(t.left,t.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(l.scrollY!==t.top||l.scrollX!==t.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(l.scrollX-t.left,l.scrollY-t.top,0,0))),c=this.options.onclone,h=this.clonedReferenceElement,typeof h>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:u.sent(),u.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,mEe(a)]:[3,4];case 3:u.sent(),u.label=4;case 4:return typeof c=="function"?[2,Promise.resolve().then(function(){return c(a,h)}).then(function(){return n})]:[2,n]}})})});return a.open(),a.write(fEe(document.doctype)+"<html></html>"),bEe(this.referenceElement.ownerDocument,o,r),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),d},s.prototype.createElementClone=function(e){if($4(e,2))debugger;if(iAe(e))return this.createCanvasClone(e);if(dde(e))return this.createVideoClone(e);if(cde(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return nK(t)&&(nK(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),t.loading==="lazy"&&(t.loading="eager")),hde(t)?this.createCustomElementClone(t):t},s.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return OO(e.style,t),t},s.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var i=[].slice.call(t.cssRules,0).reduce(function(o,r){return r&&typeof r.cssText=="string"?o+r.cssText:o},""),n=e.cloneNode(!1);return n.textContent=i,n}}catch(o){if(this.context.logger.error("Unable to access cssRules property",o),o.name!=="SecurityError")throw o}return e.cloneNode(!1)},s.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var i=e.ownerDocument.createElement("img");try{return i.src=e.toDataURL(),i}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var n=e.cloneNode(!1);try{n.width=e.width,n.height=e.height;var o=e.getContext("2d"),r=n.getContext("2d");if(r)if(!this.options.allowTaint&&o)r.putImageData(o.getImageData(0,0,e.width,e.height),0,0);else{var l=(t=e.getContext("webgl2"))!==null&&t!==void 0?t:e.getContext("webgl");if(l){var a=l.getContextAttributes();(a==null?void 0:a.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}r.drawImage(e,0,0)}return n}catch{this.context.logger.info("Unable to clone canvas as it is tainted",e)}return n},s.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var i=t.getContext("2d");try{return i&&(i.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||i.getImageData(0,0,t.width,t.height)),t}catch{this.context.logger.info("Unable to clone video as it is tainted",e)}var n=e.ownerDocument.createElement("canvas");return n.width=e.offsetWidth,n.height=e.offsetHeight,n},s.prototype.appendChildNode=function(e,t,i){(!mW(t)||!lEe(t)&&!t.hasAttribute(rAe)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(t)))&&(!this.options.copyStyles||!mW(t)||!cde(t))&&e.appendChild(this.cloneNode(t,i))},s.prototype.cloneChildNodes=function(e,t,i){for(var n=this,o=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;o;o=o.nextSibling)if(mW(o)&&sAe(o)&&typeof o.assignedNodes=="function"){var r=o.assignedNodes();r.length&&r.forEach(function(l){return n.appendChildNode(t,l,i)})}else this.appendChildNode(t,o,i)},s.prototype.cloneNode=function(e,t){if(eAe(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var i=e.ownerDocument.defaultView;if(i&&mW(e)&&(iK(e)||eD(e))){var n=this.createElementClone(e);n.style.transitionProperty="none";var o=i.getComputedStyle(e),r=i.getComputedStyle(e,":before"),l=i.getComputedStyle(e,":after");this.referenceElement===e&&iK(n)&&(this.clonedReferenceElement=n),jne(n)&&ZEe(n);var a=this.counters.parse(new jae(this.context,o)),d=this.resolvePseudoContent(e,n,r,XC.BEFORE);hde(e)&&(t=!0),dde(e)||this.cloneChildNodes(e,n,t),d&&n.insertBefore(d,n.firstChild);var c=this.resolvePseudoContent(e,n,l,XC.AFTER);return c&&n.appendChild(c),this.counters.pop(a),(o&&(this.options.copyStyles||eD(e))&&!nAe(e)||t)&&OO(o,n),(e.scrollTop!==0||e.scrollLeft!==0)&&this.scrolledElements.push([n,e.scrollLeft,e.scrollTop]),(BJ(e)||LJ(e))&&(BJ(n)||LJ(n))&&(n.value=e.value),n}return e.cloneNode(!1)},s.prototype.resolvePseudoContent=function(e,t,i,n){var o=this;if(i){var r=i.content,l=t.ownerDocument;if(!(!l||!r||r==="none"||r==="-moz-alt-content"||i.display==="none")){this.counters.parse(new jae(this.context,i));var a=new nIe(this.context,i),d=l.createElement("html2canvaspseudoelement");OO(i,d),a.content.forEach(function(h){if(h.type===0)d.appendChild(l.createTextNode(h.value));else if(h.type===22){var u=l.createElement("img");u.src=h.value,u.style.opacity="1",d.appendChild(u)}else if(h.type===18){if(h.name==="attr"){var m=h.values.filter(Oo);m.length&&d.appendChild(l.createTextNode(e.getAttribute(m[0].value)||""))}else if(h.name==="counter"){var p=h.values.filter(my),g=p[0],f=p[1];if(g&&Oo(g)){var b=o.counters.getCounterValue(g.value),U=f&&Oo(f)?q4.parse(o.context,f.value):3;d.appendChild(l.createTextNode(BB(b,U,!1)))}}else if(h.name==="counters"){var S=h.values.filter(my),g=S[0],Z=S[1],f=S[2];if(g&&Oo(g)){var R=o.counters.getCounterValues(g.value),y=f&&Oo(f)?q4.parse(o.context,f.value):3,N=Z&&Z.type===0?Z.value:"",w=R.map(function(v){return BB(v,y,!1)}).join(N);d.appendChild(l.createTextNode(w))}}}else if(h.type===20)switch(h.value){case"open-quote":d.appendChild(l.createTextNode(Oae(a.quotes,o.quoteDepth++,!0)));break;case"close-quote":d.appendChild(l.createTextNode(Oae(a.quotes,--o.quoteDepth,!1)));break;default:d.appendChild(l.createTextNode(h.value))}}),d.className=sK+" "+oK;var c=n===XC.BEFORE?" "+sK:" "+oK;return eD(t)?t.className.baseValue+=c:t.className+=c,d}}},s.destroy=function(e){return e.parentNode?(e.parentNode.removeChild(e),!0):!1},s}(),XC;(function(s){s[s.BEFORE=0]="BEFORE",s[s.AFTER=1]="AFTER"})(XC||(XC={}));var hEe=function(s,e){var t=s.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=e.width.toString(),t.height=e.height.toString(),t.scrolling="no",t.setAttribute(rAe,"true"),s.body.appendChild(t),t},uEe=function(s){return new Promise(function(e){if(s.complete){e();return}if(!s.src){e();return}s.onload=e,s.onerror=e})},mEe=function(s){return Promise.all([].slice.call(s.images,0).map(uEe))},pEe=function(s){return new Promise(function(e,t){var i=s.contentWindow;if(!i)return t("No window assigned for iframe");var n=i.document;i.onload=s.onload=function(){i.onload=s.onload=null;var o=setInterval(function(){n.body.childNodes.length>0&&n.readyState==="complete"&&(clearInterval(o),e(s))},50)}})},gEe=["all","d","content"],OO=function(s,e){for(var t=s.length-1;t>=0;t--){var i=s.item(t);gEe.indexOf(i)===-1&&e.style.setProperty(i,s.getPropertyValue(i))}return e},fEe=function(s){var e="";return s&&(e+="<!DOCTYPE ",s.name&&(e+=s.name),s.internalSubset&&(e+=s.internalSubset),s.publicId&&(e+='"'+s.publicId+'"'),s.systemId&&(e+='"'+s.systemId+'"'),e+=">"),e},bEe=function(s,e,t){s&&s.defaultView&&(e!==s.defaultView.pageXOffset||t!==s.defaultView.pageYOffset)&&s.defaultView.scrollTo(e,t)},UEe=function(s){var e=s[0],t=s[1],i=s[2];e.scrollLeft=t,e.scrollTop=i},FEe=":before",AEe=":after",sK="___html2canvas___pseudoelement_before",oK="___html2canvas___pseudoelement_after",Ude=`{
- content: "" !important;
- display: none !important;
- }`,ZEe=function(s){SEe(s,"."+sK+FEe+Ude+`
- .`+oK+AEe+Ude)},SEe=function(s,e){var t=s.ownerDocument;if(t){var i=t.createElement("style");i.textContent=e,s.appendChild(i)}},lAe=function(){function s(){}return s.getOrigin=function(e){var t=s._link;return t?(t.href=e,t.href=t.href,t.protocol+t.hostname+t.port):"about:blank"},s.isSameOrigin=function(e){return s.getOrigin(e)===s._origin},s.setContext=function(e){s._link=e.document.createElement("a"),s._origin=s.getOrigin(e.location.href)},s._origin="about:blank",s}(),NEe=function(){function s(e,t){this.context=e,this._options=t,this._cache={}}return s.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)||(PO(e)||yEe(e))&&(this._cache[e]=this.loadImage(e)).catch(function(){}),t},s.prototype.match=function(e){return this._cache[e]},s.prototype.loadImage=function(e){return Hd(this,void 0,void 0,function(){var t,i,n,o,r=this;return dd(this,function(l){switch(l.label){case 0:return t=lAe.isSameOrigin(e),i=!jO(e)&&this._options.useCORS===!0&&Ta.SUPPORT_CORS_IMAGES&&!t,n=!jO(e)&&!t&&!PO(e)&&typeof this._options.proxy=="string"&&Ta.SUPPORT_CORS_XHR&&!i,!t&&this._options.allowTaint===!1&&!jO(e)&&!PO(e)&&!n&&!i?[2]:(o=e,n?[4,this.proxy(o)]:[3,2]);case 1:o=l.sent(),l.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise(function(a,d){var c=new Image;c.onload=function(){return a(c)},c.onerror=d,(QEe(o)||i)&&(c.crossOrigin="anonymous"),c.src=o,c.complete===!0&&setTimeout(function(){return a(c)},500),r._options.imageTimeout>0&&setTimeout(function(){return d("Timed out ("+r._options.imageTimeout+"ms) loading image")},r._options.imageTimeout)})];case 3:return[2,l.sent()]}})})},s.prototype.has=function(e){return typeof this._cache[e]<"u"},s.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},s.prototype.proxy=function(e){var t=this,i=this._options.proxy;if(!i)throw new Error("No proxy defined");var n=e.substring(0,256);return new Promise(function(o,r){var l=Ta.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(a.status===200)if(l==="text")o(a.response);else{var h=new FileReader;h.addEventListener("load",function(){return o(h.result)},!1),h.addEventListener("error",function(u){return r(u)},!1),h.readAsDataURL(a.response)}else r("Failed to proxy resource "+n+" with status code "+a.status)},a.onerror=r;var d=i.indexOf("?")>-1?"&":"?";if(a.open("GET",""+i+d+"url="+encodeURIComponent(e)+"&responseType="+l),l!=="text"&&a instanceof XMLHttpRequest&&(a.responseType=l),t._options.imageTimeout){var c=t._options.imageTimeout;a.timeout=c,a.ontimeout=function(){return r("Timed out ("+c+"ms) proxying "+n)}}a.send()})},s}(),REe=/^data:image\/svg\+xml/i,VEe=/^data:image\/.*;base64,/i,WEe=/^data:image\/.*/i,yEe=function(s){return Ta.SUPPORT_SVG_DRAWING||!MEe(s)},jO=function(s){return WEe.test(s)},QEe=function(s){return VEe.test(s)},PO=function(s){return s.substr(0,4)==="blob"},MEe=function(s){return s.substr(-3).toLowerCase()==="svg"||REe.test(s)},Mi=function(){function s(e,t){this.type=0,this.x=e,this.y=t}return s.prototype.add=function(e,t){return new s(this.x+e,this.y+t)},s}(),UR=function(s,e,t){return new Mi(s.x+(e.x-s.x)*t,s.y+(e.y-s.y)*t)},ax=function(){function s(e,t,i,n){this.type=1,this.start=e,this.startControl=t,this.endControl=i,this.end=n}return s.prototype.subdivide=function(e,t){var i=UR(this.start,this.startControl,e),n=UR(this.startControl,this.endControl,e),o=UR(this.endControl,this.end,e),r=UR(i,n,e),l=UR(n,o,e),a=UR(r,l,e);return t?new s(this.start,i,r,a):new s(a,l,o,this.end)},s.prototype.add=function(e,t){return new s(this.start.add(e,t),this.startControl.add(e,t),this.endControl.add(e,t),this.end.add(e,t))},s.prototype.reverse=function(){return new s(this.end,this.endControl,this.startControl,this.start)},s}(),xu=function(s){return s.type===1},wEe=function(){function s(e){var t=e.styles,i=e.bounds,n=AT(t.borderTopLeftRadius,i.width,i.height),o=n[0],r=n[1],l=AT(t.borderTopRightRadius,i.width,i.height),a=l[0],d=l[1],c=AT(t.borderBottomRightRadius,i.width,i.height),h=c[0],u=c[1],m=AT(t.borderBottomLeftRadius,i.width,i.height),p=m[0],g=m[1],f=[];f.push((o+a)/i.width),f.push((p+h)/i.width),f.push((r+g)/i.height),f.push((d+u)/i.height);var b=Math.max.apply(Math,f);b>1&&(o/=b,r/=b,a/=b,d/=b,h/=b,u/=b,p/=b,g/=b);var U=i.width-a,S=i.height-u,Z=i.width-h,R=i.height-g,y=t.borderTopWidth,N=t.borderRightWidth,w=t.borderBottomWidth,Q=t.borderLeftWidth,C=lr(t.paddingTop,e.bounds.width),v=lr(t.paddingRight,e.bounds.width),Y=lr(t.paddingBottom,e.bounds.width),J=lr(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=o>0||r>0?fr(i.left+Q/3,i.top+y/3,o-Q/3,r-y/3,Zo.TOP_LEFT):new Mi(i.left+Q/3,i.top+y/3),this.topRightBorderDoubleOuterBox=o>0||r>0?fr(i.left+U,i.top+y/3,a-N/3,d-y/3,Zo.TOP_RIGHT):new Mi(i.left+i.width-N/3,i.top+y/3),this.bottomRightBorderDoubleOuterBox=h>0||u>0?fr(i.left+Z,i.top+S,h-N/3,u-w/3,Zo.BOTTOM_RIGHT):new Mi(i.left+i.width-N/3,i.top+i.height-w/3),this.bottomLeftBorderDoubleOuterBox=p>0||g>0?fr(i.left+Q/3,i.top+R,p-Q/3,g-w/3,Zo.BOTTOM_LEFT):new Mi(i.left+Q/3,i.top+i.height-w/3),this.topLeftBorderDoubleInnerBox=o>0||r>0?fr(i.left+Q*2/3,i.top+y*2/3,o-Q*2/3,r-y*2/3,Zo.TOP_LEFT):new Mi(i.left+Q*2/3,i.top+y*2/3),this.topRightBorderDoubleInnerBox=o>0||r>0?fr(i.left+U,i.top+y*2/3,a-N*2/3,d-y*2/3,Zo.TOP_RIGHT):new Mi(i.left+i.width-N*2/3,i.top+y*2/3),this.bottomRightBorderDoubleInnerBox=h>0||u>0?fr(i.left+Z,i.top+S,h-N*2/3,u-w*2/3,Zo.BOTTOM_RIGHT):new Mi(i.left+i.width-N*2/3,i.top+i.height-w*2/3),this.bottomLeftBorderDoubleInnerBox=p>0||g>0?fr(i.left+Q*2/3,i.top+R,p-Q*2/3,g-w*2/3,Zo.BOTTOM_LEFT):new Mi(i.left+Q*2/3,i.top+i.height-w*2/3),this.topLeftBorderStroke=o>0||r>0?fr(i.left+Q/2,i.top+y/2,o-Q/2,r-y/2,Zo.TOP_LEFT):new Mi(i.left+Q/2,i.top+y/2),this.topRightBorderStroke=o>0||r>0?fr(i.left+U,i.top+y/2,a-N/2,d-y/2,Zo.TOP_RIGHT):new Mi(i.left+i.width-N/2,i.top+y/2),this.bottomRightBorderStroke=h>0||u>0?fr(i.left+Z,i.top+S,h-N/2,u-w/2,Zo.BOTTOM_RIGHT):new Mi(i.left+i.width-N/2,i.top+i.height-w/2),this.bottomLeftBorderStroke=p>0||g>0?fr(i.left+Q/2,i.top+R,p-Q/2,g-w/2,Zo.BOTTOM_LEFT):new Mi(i.left+Q/2,i.top+i.height-w/2),this.topLeftBorderBox=o>0||r>0?fr(i.left,i.top,o,r,Zo.TOP_LEFT):new Mi(i.left,i.top),this.topRightBorderBox=a>0||d>0?fr(i.left+U,i.top,a,d,Zo.TOP_RIGHT):new Mi(i.left+i.width,i.top),this.bottomRightBorderBox=h>0||u>0?fr(i.left+Z,i.top+S,h,u,Zo.BOTTOM_RIGHT):new Mi(i.left+i.width,i.top+i.height),this.bottomLeftBorderBox=p>0||g>0?fr(i.left,i.top+R,p,g,Zo.BOTTOM_LEFT):new Mi(i.left,i.top+i.height),this.topLeftPaddingBox=o>0||r>0?fr(i.left+Q,i.top+y,Math.max(0,o-Q),Math.max(0,r-y),Zo.TOP_LEFT):new Mi(i.left+Q,i.top+y),this.topRightPaddingBox=a>0||d>0?fr(i.left+Math.min(U,i.width-N),i.top+y,U>i.width+N?0:Math.max(0,a-N),Math.max(0,d-y),Zo.TOP_RIGHT):new Mi(i.left+i.width-N,i.top+y),this.bottomRightPaddingBox=h>0||u>0?fr(i.left+Math.min(Z,i.width-Q),i.top+Math.min(S,i.height-w),Math.max(0,h-N),Math.max(0,u-w),Zo.BOTTOM_RIGHT):new Mi(i.left+i.width-N,i.top+i.height-w),this.bottomLeftPaddingBox=p>0||g>0?fr(i.left+Q,i.top+Math.min(R,i.height-w),Math.max(0,p-Q),Math.max(0,g-w),Zo.BOTTOM_LEFT):new Mi(i.left+Q,i.top+i.height-w),this.topLeftContentBox=o>0||r>0?fr(i.left+Q+J,i.top+y+C,Math.max(0,o-(Q+J)),Math.max(0,r-(y+C)),Zo.TOP_LEFT):new Mi(i.left+Q+J,i.top+y+C),this.topRightContentBox=a>0||d>0?fr(i.left+Math.min(U,i.width+Q+J),i.top+y+C,U>i.width+Q+J?0:a-Q+J,d-(y+C),Zo.TOP_RIGHT):new Mi(i.left+i.width-(N+v),i.top+y+C),this.bottomRightContentBox=h>0||u>0?fr(i.left+Math.min(Z,i.width-(Q+J)),i.top+Math.min(S,i.height+y+C),Math.max(0,h-(N+v)),u-(w+Y),Zo.BOTTOM_RIGHT):new Mi(i.left+i.width-(N+v),i.top+i.height-(w+Y)),this.bottomLeftContentBox=p>0||g>0?fr(i.left+Q+J,i.top+R,Math.max(0,p-(Q+J)),g-(w+Y),Zo.BOTTOM_LEFT):new Mi(i.left+Q+J,i.top+i.height-(w+Y))}return s}(),Zo;(function(s){s[s.TOP_LEFT=0]="TOP_LEFT",s[s.TOP_RIGHT=1]="TOP_RIGHT",s[s.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",s[s.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(Zo||(Zo={}));var fr=function(s,e,t,i,n){var o=4*((Math.sqrt(2)-1)/3),r=t*o,l=i*o,a=s+t,d=e+i;switch(n){case Zo.TOP_LEFT:return new ax(new Mi(s,d),new Mi(s,d-l),new Mi(a-r,e),new Mi(a,e));case Zo.TOP_RIGHT:return new ax(new Mi(s,e),new Mi(s+r,e),new Mi(a,d-l),new Mi(a,d));case Zo.BOTTOM_RIGHT:return new ax(new Mi(a,e),new Mi(a,e+l),new Mi(s+r,d),new Mi(s,d));case Zo.BOTTOM_LEFT:default:return new ax(new Mi(a,d),new Mi(a-r,d),new Mi(s,e+l),new Mi(s,e))}},vJ=function(s){return[s.topLeftBorderBox,s.topRightBorderBox,s.bottomRightBorderBox,s.bottomLeftBorderBox]},TEe=function(s){return[s.topLeftContentBox,s.topRightContentBox,s.bottomRightContentBox,s.bottomLeftContentBox]},kJ=function(s){return[s.topLeftPaddingBox,s.topRightPaddingBox,s.bottomRightPaddingBox,s.bottomLeftPaddingBox]},CEe=function(){function s(e,t,i){this.offsetX=e,this.offsetY=t,this.matrix=i,this.type=0,this.target=6}return s}(),dx=function(){function s(e,t){this.path=e,this.target=t,this.type=1}return s}(),BEe=function(){function s(e){this.opacity=e,this.type=2,this.target=6}return s}(),LEe=function(s){return s.type===0},aAe=function(s){return s.type===1},vEe=function(s){return s.type===2},Fde=function(s,e){return s.length===e.length?s.some(function(t,i){return t===e[i]}):!1},kEe=function(s,e,t,i,n){return s.map(function(o,r){switch(r){case 0:return o.add(e,t);case 1:return o.add(e+i,t);case 2:return o.add(e+i,t+n);case 3:return o.add(e,t+n)}return o})},dAe=function(){function s(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return s}(),cAe=function(){function s(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new wEe(this.container),this.container.styles.opacity<1&&this.effects.push(new BEe(this.container.styles.opacity)),this.container.styles.transform!==null){var i=this.container.bounds.left+this.container.styles.transformOrigin[0].number,n=this.container.bounds.top+this.container.styles.transformOrigin[1].number,o=this.container.styles.transform;this.effects.push(new CEe(i,n,o))}if(this.container.styles.overflowX!==0){var r=vJ(this.curves),l=kJ(this.curves);Fde(r,l)?this.effects.push(new dx(r,6)):(this.effects.push(new dx(r,2)),this.effects.push(new dx(l,4)))}}return s.prototype.getEffects=function(e){for(var t=[2,3].indexOf(this.container.styles.position)===-1,i=this.parent,n=this.effects.slice(0);i;){var o=i.effects.filter(function(a){return!aAe(a)});if(t||i.container.styles.position!==0||!i.parent){if(n.unshift.apply(n,o),t=[2,3].indexOf(i.container.styles.position)===-1,i.container.styles.overflowX!==0){var r=vJ(i.curves),l=kJ(i.curves);Fde(r,l)||n.unshift(new dx(l,6))}}else n.unshift.apply(n,o);i=i.parent}return n.filter(function(a){return Xl(a.target,e)})},s}(),rK=function(s,e,t,i){s.container.elements.forEach(function(n){var o=Xl(n.flags,4),r=Xl(n.flags,2),l=new cAe(n,s);Xl(n.styles.display,2048)&&i.push(l);var a=Xl(n.flags,8)?[]:i;if(o||r){var d=o||n.styles.isPositioned()?t:e,c=new dAe(l);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var h=n.styles.zIndex.order;if(h<0){var u=0;d.negativeZIndex.some(function(p,g){return h>p.element.container.styles.zIndex.order?(u=g,!1):u>0}),d.negativeZIndex.splice(u,0,c)}else if(h>0){var m=0;d.positiveZIndex.some(function(p,g){return h>=p.element.container.styles.zIndex.order?(m=g+1,!1):m>0}),d.positiveZIndex.splice(m,0,c)}else d.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?d.nonPositionedFloats.push(c):d.nonPositionedInlineLevel.push(c);rK(l,c,o?c:t,a)}else n.styles.isInlineLevel()?e.inlineLevel.push(l):e.nonInlineLevel.push(l),rK(l,e,t,a);Xl(n.flags,8)&&hAe(n,a)})},hAe=function(s,e){for(var t=s instanceof tK?s.start:1,i=s instanceof tK?s.reversed:!1,n=0;n<e.length;n++){var o=e[n];o.container instanceof jFe&&typeof o.container.value=="number"&&o.container.value!==0&&(t=o.container.value),o.listValue=BB(t,o.container.styles.listStyleType,!0),t+=i?-1:1}},xEe=function(s){var e=new cAe(s,null),t=new dAe(e),i=[];return rK(e,t,t,i),hAe(e.container,i),t},Ade=function(s,e){switch(e){case 0:return Yu(s.topLeftBorderBox,s.topLeftPaddingBox,s.topRightBorderBox,s.topRightPaddingBox);case 1:return Yu(s.topRightBorderBox,s.topRightPaddingBox,s.bottomRightBorderBox,s.bottomRightPaddingBox);case 2:return Yu(s.bottomRightBorderBox,s.bottomRightPaddingBox,s.bottomLeftBorderBox,s.bottomLeftPaddingBox);case 3:default:return Yu(s.bottomLeftBorderBox,s.bottomLeftPaddingBox,s.topLeftBorderBox,s.topLeftPaddingBox)}},IEe=function(s,e){switch(e){case 0:return Yu(s.topLeftBorderBox,s.topLeftBorderDoubleOuterBox,s.topRightBorderBox,s.topRightBorderDoubleOuterBox);case 1:return Yu(s.topRightBorderBox,s.topRightBorderDoubleOuterBox,s.bottomRightBorderBox,s.bottomRightBorderDoubleOuterBox);case 2:return Yu(s.bottomRightBorderBox,s.bottomRightBorderDoubleOuterBox,s.bottomLeftBorderBox,s.bottomLeftBorderDoubleOuterBox);case 3:default:return Yu(s.bottomLeftBorderBox,s.bottomLeftBorderDoubleOuterBox,s.topLeftBorderBox,s.topLeftBorderDoubleOuterBox)}},EEe=function(s,e){switch(e){case 0:return Yu(s.topLeftBorderDoubleInnerBox,s.topLeftPaddingBox,s.topRightBorderDoubleInnerBox,s.topRightPaddingBox);case 1:return Yu(s.topRightBorderDoubleInnerBox,s.topRightPaddingBox,s.bottomRightBorderDoubleInnerBox,s.bottomRightPaddingBox);case 2:return Yu(s.bottomRightBorderDoubleInnerBox,s.bottomRightPaddingBox,s.bottomLeftBorderDoubleInnerBox,s.bottomLeftPaddingBox);case 3:default:return Yu(s.bottomLeftBorderDoubleInnerBox,s.bottomLeftPaddingBox,s.topLeftBorderDoubleInnerBox,s.topLeftPaddingBox)}},DEe=function(s,e){switch(e){case 0:return cx(s.topLeftBorderStroke,s.topRightBorderStroke);case 1:return cx(s.topRightBorderStroke,s.bottomRightBorderStroke);case 2:return cx(s.bottomRightBorderStroke,s.bottomLeftBorderStroke);case 3:default:return cx(s.bottomLeftBorderStroke,s.topLeftBorderStroke)}},cx=function(s,e){var t=[];return xu(s)?t.push(s.subdivide(.5,!1)):t.push(s),xu(e)?t.push(e.subdivide(.5,!0)):t.push(e),t},Yu=function(s,e,t,i){var n=[];return xu(s)?n.push(s.subdivide(.5,!1)):n.push(s),xu(t)?n.push(t.subdivide(.5,!0)):n.push(t),xu(i)?n.push(i.subdivide(.5,!0).reverse()):n.push(i),xu(e)?n.push(e.subdivide(.5,!1).reverse()):n.push(e),n},uAe=function(s){var e=s.bounds,t=s.styles;return e.add(t.borderLeftWidth,t.borderTopWidth,-(t.borderRightWidth+t.borderLeftWidth),-(t.borderTopWidth+t.borderBottomWidth))},xJ=function(s){var e=s.styles,t=s.bounds,i=lr(e.paddingLeft,t.width),n=lr(e.paddingRight,t.width),o=lr(e.paddingTop,t.width),r=lr(e.paddingBottom,t.width);return t.add(i+e.borderLeftWidth,o+e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth+i+n),-(e.borderTopWidth+e.borderBottomWidth+o+r))},GEe=function(s,e){return s===0?e.bounds:s===2?xJ(e):uAe(e)},JEe=function(s,e){return s===0?e.bounds:s===2?xJ(e):uAe(e)},HO=function(s,e,t){var i=GEe(yV(s.styles.backgroundOrigin,e),s),n=JEe(yV(s.styles.backgroundClip,e),s),o=XEe(yV(s.styles.backgroundSize,e),t,i),r=o[0],l=o[1],a=AT(yV(s.styles.backgroundPosition,e),i.width-r,i.height-l),d=YEe(yV(s.styles.backgroundRepeat,e),a,o,i,n),c=Math.round(i.left+a[0]),h=Math.round(i.top+a[1]);return[d,c,h,r,l]},FR=function(s){return Oo(s)&&s.value===S1.AUTO},hx=function(s){return typeof s=="number"},XEe=function(s,e,t){var i=e[0],n=e[1],o=e[2],r=s[0],l=s[1];if(!r)return[0,0];if(Rl(r)&&l&&Rl(l))return[lr(r,t.width),lr(l,t.height)];var a=hx(o);if(Oo(r)&&(r.value===S1.CONTAIN||r.value===S1.COVER)){if(hx(o)){var d=t.width/t.height;return d<o!=(r.value===S1.COVER)?[t.width,t.width/o]:[t.height*o,t.height]}return[t.width,t.height]}var c=hx(i),h=hx(n),u=c||h;if(FR(r)&&(!l||FR(l))){if(c&&h)return[i,n];if(!a&&!u)return[t.width,t.height];if(u&&a){var m=c?i:n*o,p=h?n:i/o;return[m,p]}var g=c?i:t.width,f=h?n:t.height;return[g,f]}if(a){var b=0,U=0;return Rl(r)?b=lr(r,t.width):Rl(l)&&(U=lr(l,t.height)),FR(r)?b=U*o:(!l||FR(l))&&(U=b/o),[b,U]}var S=null,Z=null;if(Rl(r)?S=lr(r,t.width):l&&Rl(l)&&(Z=lr(l,t.height)),S!==null&&(!l||FR(l))&&(Z=c&&h?S/i*n:t.height),Z!==null&&FR(r)&&(S=c&&h?Z/n*i:t.width),S!==null&&Z!==null)return[S,Z];throw new Error("Unable to calculate background-size for element")},yV=function(s,e){var t=s[e];return typeof t>"u"?s[0]:t},YEe=function(s,e,t,i,n){var o=e[0],r=e[1],l=t[0],a=t[1];switch(s){case 2:return[new Mi(Math.round(i.left),Math.round(i.top+r)),new Mi(Math.round(i.left+i.width),Math.round(i.top+r)),new Mi(Math.round(i.left+i.width),Math.round(a+i.top+r)),new Mi(Math.round(i.left),Math.round(a+i.top+r))];case 3:return[new Mi(Math.round(i.left+o),Math.round(i.top)),new Mi(Math.round(i.left+o+l),Math.round(i.top)),new Mi(Math.round(i.left+o+l),Math.round(i.height+i.top)),new Mi(Math.round(i.left+o),Math.round(i.height+i.top))];case 1:return[new Mi(Math.round(i.left+o),Math.round(i.top+r)),new Mi(Math.round(i.left+o+l),Math.round(i.top+r)),new Mi(Math.round(i.left+o+l),Math.round(i.top+r+a)),new Mi(Math.round(i.left+o),Math.round(i.top+r+a))];default:return[new Mi(Math.round(n.left),Math.round(n.top)),new Mi(Math.round(n.left+n.width),Math.round(n.top)),new Mi(Math.round(n.left+n.width),Math.round(n.height+n.top)),new Mi(Math.round(n.left),Math.round(n.height+n.top))]}},_Ee="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",Zde="Hidden Text",zEe=function(){function s(e){this._data={},this._document=e}return s.prototype.parseMetrics=function(e,t){var i=this._document.createElement("div"),n=this._document.createElement("img"),o=this._document.createElement("span"),r=this._document.body;i.style.visibility="hidden",i.style.fontFamily=e,i.style.fontSize=t,i.style.margin="0",i.style.padding="0",i.style.whiteSpace="nowrap",r.appendChild(i),n.src=_Ee,n.width=1,n.height=1,n.style.margin="0",n.style.padding="0",n.style.verticalAlign="baseline",o.style.fontFamily=e,o.style.fontSize=t,o.style.margin="0",o.style.padding="0",o.appendChild(this._document.createTextNode(Zde)),i.appendChild(o),i.appendChild(n);var l=n.offsetTop-o.offsetTop+2;i.removeChild(o),i.appendChild(this._document.createTextNode(Zde)),i.style.lineHeight="normal",n.style.verticalAlign="super";var a=n.offsetTop-i.offsetTop+2;return r.removeChild(i),{baseline:l,middle:a}},s.prototype.getMetrics=function(e,t){var i=e+" "+t;return typeof this._data[i]>"u"&&(this._data[i]=this.parseMetrics(e,t)),this._data[i]},s}(),mAe=function(){function s(e,t){this.context=e,this.options=t}return s}(),OEe=1e4,jEe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n._activeEffects=[],n.canvas=i.canvas?i.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),i.canvas||(n.canvas.width=Math.floor(i.width*i.scale),n.canvas.height=Math.floor(i.height*i.scale),n.canvas.style.width=i.width+"px",n.canvas.style.height=i.height+"px"),n.fontMetrics=new zEe(document),n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-i.x,-i.y),n.ctx.textBaseline="bottom",n._activeEffects=[],n.context.logger.debug("Canvas renderer initialized ("+i.width+"x"+i.height+") with scale "+i.scale),n}return e.prototype.applyEffects=function(t){for(var i=this;this._activeEffects.length;)this.popEffect();t.forEach(function(n){return i.applyEffect(n)})},e.prototype.applyEffect=function(t){this.ctx.save(),vEe(t)&&(this.ctx.globalAlpha=t.opacity),LEe(t)&&(this.ctx.translate(t.offsetX,t.offsetY),this.ctx.transform(t.matrix[0],t.matrix[1],t.matrix[2],t.matrix[3],t.matrix[4],t.matrix[5]),this.ctx.translate(-t.offsetX,-t.offsetY)),aAe(t)&&(this.path(t.path),this.ctx.clip()),this._activeEffects.push(t)},e.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},e.prototype.renderStack=function(t){return Hd(this,void 0,void 0,function(){var i;return dd(this,function(n){switch(n.label){case 0:return i=t.element.container.styles,i.isVisible()?[4,this.renderStackContent(t)]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}})})},e.prototype.renderNode=function(t){return Hd(this,void 0,void 0,function(){return dd(this,function(i){switch(i.label){case 0:if(Xl(t.container.flags,16))debugger;return t.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(t)]:[3,3];case 1:return i.sent(),[4,this.renderNodeContent(t)];case 2:i.sent(),i.label=3;case 3:return[2]}})})},e.prototype.renderTextWithLetterSpacing=function(t,i,n){var o=this;if(i===0)this.ctx.fillText(t.text,t.bounds.left,t.bounds.top+n);else{var r=zne(t.text);r.reduce(function(l,a){return o.ctx.fillText(a,l,t.bounds.top+n),l+o.ctx.measureText(a).width},t.bounds.left)}},e.prototype.createFontStyle=function(t){var i=t.fontVariant.filter(function(r){return r==="normal"||r==="small-caps"}).join(""),n=$Ee(t.fontFamily).join(", "),o=kv(t.fontSize)?""+t.fontSize.number+t.fontSize.unit:t.fontSize.number+"px";return[[t.fontStyle,i,t.fontWeight,o,n].join(" "),n,o]},e.prototype.renderTextNode=function(t,i){return Hd(this,void 0,void 0,function(){var n,o,r,l,a,d,c,h,u=this;return dd(this,function(m){return n=this.createFontStyle(i),o=n[0],r=n[1],l=n[2],this.ctx.font=o,this.ctx.direction=i.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",a=this.fontMetrics.getMetrics(r,l),d=a.baseline,c=a.middle,h=i.paintOrder,t.textBounds.forEach(function(p){h.forEach(function(g){switch(g){case 0:u.ctx.fillStyle=ra(i.color),u.renderTextWithLetterSpacing(p,i.letterSpacing,d);var f=i.textShadow;f.length&&p.text.trim().length&&(f.slice(0).reverse().forEach(function(b){u.ctx.shadowColor=ra(b.color),u.ctx.shadowOffsetX=b.offsetX.number*u.options.scale,u.ctx.shadowOffsetY=b.offsetY.number*u.options.scale,u.ctx.shadowBlur=b.blur.number,u.renderTextWithLetterSpacing(p,i.letterSpacing,d)}),u.ctx.shadowColor="",u.ctx.shadowOffsetX=0,u.ctx.shadowOffsetY=0,u.ctx.shadowBlur=0),i.textDecorationLine.length&&(u.ctx.fillStyle=ra(i.textDecorationColor||i.color),i.textDecorationLine.forEach(function(b){switch(b){case 1:u.ctx.fillRect(p.bounds.left,Math.round(p.bounds.top+d),p.bounds.width,1);break;case 2:u.ctx.fillRect(p.bounds.left,Math.round(p.bounds.top),p.bounds.width,1);break;case 3:u.ctx.fillRect(p.bounds.left,Math.ceil(p.bounds.top+c),p.bounds.width,1);break}}));break;case 1:i.webkitTextStrokeWidth&&p.text.trim().length&&(u.ctx.strokeStyle=ra(i.webkitTextStrokeColor),u.ctx.lineWidth=i.webkitTextStrokeWidth,u.ctx.lineJoin=window.chrome?"miter":"round",u.ctx.strokeText(p.text,p.bounds.left,p.bounds.top+d)),u.ctx.strokeStyle="",u.ctx.lineWidth=0,u.ctx.lineJoin="miter";break}})}),[2]})})},e.prototype.renderReplacedElement=function(t,i,n){if(n&&t.intrinsicWidth>0&&t.intrinsicHeight>0){var o=xJ(t),r=kJ(i);this.path(r),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(n,0,0,t.intrinsicWidth,t.intrinsicHeight,o.left,o.top,o.width,o.height),this.ctx.restore()}},e.prototype.renderNodeContent=function(t){return Hd(this,void 0,void 0,function(){var i,n,o,r,l,a,U,U,d,c,h,u,Z,m,p,R,g,f,b,U,S,Z,R;return dd(this,function(y){switch(y.label){case 0:this.applyEffects(t.getEffects(4)),i=t.container,n=t.curves,o=i.styles,r=0,l=i.textNodes,y.label=1;case 1:return r<l.length?(a=l[r],[4,this.renderTextNode(a,o)]):[3,4];case 2:y.sent(),y.label=3;case 3:return r++,[3,1];case 4:if(!(i instanceof _Fe))return[3,8];y.label=5;case 5:return y.trys.push([5,7,,8]),[4,this.context.cache.match(i.src)];case 6:return U=y.sent(),this.renderReplacedElement(i,n,U),[3,8];case 7:return y.sent(),this.context.logger.error("Error loading image "+i.src),[3,8];case 8:if(i instanceof zFe&&this.renderReplacedElement(i,n,i.canvas),!(i instanceof OFe))return[3,12];y.label=9;case 9:return y.trys.push([9,11,,12]),[4,this.context.cache.match(i.svg)];case 10:return U=y.sent(),this.renderReplacedElement(i,n,U),[3,12];case 11:return y.sent(),this.context.logger.error("Error loading svg "+i.svg.substring(0,255)),[3,12];case 12:return i instanceof KFe&&i.tree?(d=new e(this.context,{scale:this.options.scale,backgroundColor:i.backgroundColor,x:0,y:0,width:i.width,height:i.height}),[4,d.render(i.tree)]):[3,14];case 13:c=y.sent(),i.width&&i.height&&this.ctx.drawImage(c,0,0,i.width,i.height,i.bounds.left,i.bounds.top,i.bounds.width,i.bounds.height),y.label=14;case 14:if(i instanceof One&&(h=Math.min(i.bounds.width,i.bounds.height),i.type===TJ?i.checked&&(this.ctx.save(),this.path([new Mi(i.bounds.left+h*.39363,i.bounds.top+h*.79),new Mi(i.bounds.left+h*.16,i.bounds.top+h*.5549),new Mi(i.bounds.left+h*.27347,i.bounds.top+h*.44071),new Mi(i.bounds.left+h*.39694,i.bounds.top+h*.5649),new Mi(i.bounds.left+h*.72983,i.bounds.top+h*.23),new Mi(i.bounds.left+h*.84,i.bounds.top+h*.34085),new Mi(i.bounds.left+h*.39363,i.bounds.top+h*.79)]),this.ctx.fillStyle=ra(ade),this.ctx.fill(),this.ctx.restore()):i.type===CJ&&i.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(i.bounds.left+h/2,i.bounds.top+h/2,h/4,0,Math.PI*2,!0),this.ctx.fillStyle=ra(ade),this.ctx.fill(),this.ctx.restore())),PEe(i)&&i.value.length){switch(u=this.createFontStyle(o),Z=u[0],m=u[1],p=this.fontMetrics.getMetrics(Z,m).baseline,this.ctx.font=Z,this.ctx.fillStyle=ra(o.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=KEe(i.styles.textAlign),R=xJ(i),g=0,i.styles.textAlign){case 1:g+=R.width/2;break;case 2:g+=R.width;break}f=R.add(g,0,0,-R.height/2+1),this.ctx.save(),this.path([new Mi(R.left,R.top),new Mi(R.left+R.width,R.top),new Mi(R.left+R.width,R.top+R.height),new Mi(R.left,R.top+R.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new JC(i.value,f),o.letterSpacing,p),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!Xl(i.styles.display,2048))return[3,20];if(i.styles.listStyleImage===null)return[3,19];if(b=i.styles.listStyleImage,b.type!==0)return[3,18];U=void 0,S=b.url,y.label=15;case 15:return y.trys.push([15,17,,18]),[4,this.context.cache.match(S)];case 16:return U=y.sent(),this.ctx.drawImage(U,i.bounds.left-(U.width+10),i.bounds.top),[3,18];case 17:return y.sent(),this.context.logger.error("Error loading list-style-image "+S),[3,18];case 18:return[3,20];case 19:t.listValue&&i.styles.listStyleType!==-1&&(Z=this.createFontStyle(o)[0],this.ctx.font=Z,this.ctx.fillStyle=ra(o.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",R=new Xf(i.bounds.left,i.bounds.top+lr(i.styles.paddingTop,i.bounds.width),i.bounds.width,_ae(o.lineHeight,o.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new JC(t.listValue,R),o.letterSpacing,_ae(o.lineHeight,o.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),y.label=20;case 20:return[2]}})})},e.prototype.renderStackContent=function(t){return Hd(this,void 0,void 0,function(){var i,n,b,o,r,b,l,a,b,d,c,b,h,u,b,m,p,b,g,f,b;return dd(this,function(U){switch(U.label){case 0:if(Xl(t.element.container.flags,16))debugger;return[4,this.renderNodeBackgroundAndBorders(t.element)];case 1:U.sent(),i=0,n=t.negativeZIndex,U.label=2;case 2:return i<n.length?(b=n[i],[4,this.renderStack(b)]):[3,5];case 3:U.sent(),U.label=4;case 4:return i++,[3,2];case 5:return[4,this.renderNodeContent(t.element)];case 6:U.sent(),o=0,r=t.nonInlineLevel,U.label=7;case 7:return o<r.length?(b=r[o],[4,this.renderNode(b)]):[3,10];case 8:U.sent(),U.label=9;case 9:return o++,[3,7];case 10:l=0,a=t.nonPositionedFloats,U.label=11;case 11:return l<a.length?(b=a[l],[4,this.renderStack(b)]):[3,14];case 12:U.sent(),U.label=13;case 13:return l++,[3,11];case 14:d=0,c=t.nonPositionedInlineLevel,U.label=15;case 15:return d<c.length?(b=c[d],[4,this.renderStack(b)]):[3,18];case 16:U.sent(),U.label=17;case 17:return d++,[3,15];case 18:h=0,u=t.inlineLevel,U.label=19;case 19:return h<u.length?(b=u[h],[4,this.renderNode(b)]):[3,22];case 20:U.sent(),U.label=21;case 21:return h++,[3,19];case 22:m=0,p=t.zeroOrAutoZIndexOrTransformedOrOpacity,U.label=23;case 23:return m<p.length?(b=p[m],[4,this.renderStack(b)]):[3,26];case 24:U.sent(),U.label=25;case 25:return m++,[3,23];case 26:g=0,f=t.positiveZIndex,U.label=27;case 27:return g<f.length?(b=f[g],[4,this.renderStack(b)]):[3,30];case 28:U.sent(),U.label=29;case 29:return g++,[3,27];case 30:return[2]}})})},e.prototype.mask=function(t){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(t.slice(0).reverse()),this.ctx.closePath()},e.prototype.path=function(t){this.ctx.beginPath(),this.formatPath(t),this.ctx.closePath()},e.prototype.formatPath=function(t){var i=this;t.forEach(function(n,o){var r=xu(n)?n.start:n;o===0?i.ctx.moveTo(r.x,r.y):i.ctx.lineTo(r.x,r.y),xu(n)&&i.ctx.bezierCurveTo(n.startControl.x,n.startControl.y,n.endControl.x,n.endControl.y,n.end.x,n.end.y)})},e.prototype.renderRepeat=function(t,i,n,o){this.path(t),this.ctx.fillStyle=i,this.ctx.translate(n,o),this.ctx.fill(),this.ctx.translate(-n,-o)},e.prototype.resizeImage=function(t,i,n){var o;if(t.width===i&&t.height===n)return t;var r=(o=this.canvas.ownerDocument)!==null&&o!==void 0?o:document,l=r.createElement("canvas");l.width=Math.max(1,i),l.height=Math.max(1,n);var a=l.getContext("2d");return a.drawImage(t,0,0,t.width,t.height,0,0,i,n),l},e.prototype.renderBackgroundImage=function(t){return Hd(this,void 0,void 0,function(){var i,n,o,r,l,a;return dd(this,function(d){switch(d.label){case 0:i=t.styles.backgroundImage.length-1,n=function(c){var h,u,m,C,K,de,J,k,w,p,C,K,de,J,k,g,f,b,U,S,Z,R,y,N,w,Q,C,v,Y,J,k,E,K,de,ee,le,Fe,Ue,ze,Oe,Ie,at;return dd(this,function(je){switch(je.label){case 0:if(c.type!==0)return[3,5];h=void 0,u=c.url,je.label=1;case 1:return je.trys.push([1,3,,4]),[4,o.context.cache.match(u)];case 2:return h=je.sent(),[3,4];case 3:return je.sent(),o.context.logger.error("Error loading background-image "+u),[3,4];case 4:return h&&(m=HO(t,i,[h.width,h.height,h.width/h.height]),C=m[0],K=m[1],de=m[2],J=m[3],k=m[4],w=o.ctx.createPattern(o.resizeImage(h,J,k),"repeat"),o.renderRepeat(C,w,K,de)),[3,6];case 5:Lke(c)?(p=HO(t,i,[null,null,null]),C=p[0],K=p[1],de=p[2],J=p[3],k=p[4],g=Mke(c.angle,J,k),f=g[0],b=g[1],U=g[2],S=g[3],Z=g[4],R=document.createElement("canvas"),R.width=J,R.height=k,y=R.getContext("2d"),N=y.createLinearGradient(b,S,U,Z),Xae(c.stops,f).forEach(function(Se){return N.addColorStop(Se.stop,ra(Se.color))}),y.fillStyle=N,y.fillRect(0,0,J,k),J>0&&k>0&&(w=o.ctx.createPattern(R,"repeat"),o.renderRepeat(C,w,K,de))):vke(c)&&(Q=HO(t,i,[null,null,null]),C=Q[0],v=Q[1],Y=Q[2],J=Q[3],k=Q[4],E=c.position.length===0?[Xne]:c.position,K=lr(E[0],J),de=lr(E[E.length-1],k),ee=wke(c,K,de,J,k),le=ee[0],Fe=ee[1],le>0&&Fe>0&&(Ue=o.ctx.createRadialGradient(v+K,Y+de,0,v+K,Y+de,le),Xae(c.stops,le*2).forEach(function(Se){return Ue.addColorStop(Se.stop,ra(Se.color))}),o.path(C),o.ctx.fillStyle=Ue,le!==Fe?(ze=t.bounds.left+.5*t.bounds.width,Oe=t.bounds.top+.5*t.bounds.height,Ie=Fe/le,at=1/Ie,o.ctx.save(),o.ctx.translate(ze,Oe),o.ctx.transform(1,0,0,Ie,0,0),o.ctx.translate(-ze,-Oe),o.ctx.fillRect(v,at*(Y-Oe)+Oe,J,k*at),o.ctx.restore()):o.ctx.fill())),je.label=6;case 6:return i--,[2]}})},o=this,r=0,l=t.styles.backgroundImage.slice(0).reverse(),d.label=1;case 1:return r<l.length?(a=l[r],[5,n(a)]):[3,4];case 2:d.sent(),d.label=3;case 3:return r++,[3,1];case 4:return[2]}})})},e.prototype.renderSolidBorder=function(t,i,n){return Hd(this,void 0,void 0,function(){return dd(this,function(o){return this.path(Ade(n,i)),this.ctx.fillStyle=ra(t),this.ctx.fill(),[2]})})},e.prototype.renderDoubleBorder=function(t,i,n,o){return Hd(this,void 0,void 0,function(){var r,l;return dd(this,function(a){switch(a.label){case 0:return i<3?[4,this.renderSolidBorder(t,n,o)]:[3,2];case 1:return a.sent(),[2];case 2:return r=IEe(o,n),this.path(r),this.ctx.fillStyle=ra(t),this.ctx.fill(),l=EEe(o,n),this.path(l),this.ctx.fill(),[2]}})})},e.prototype.renderNodeBackgroundAndBorders=function(t){return Hd(this,void 0,void 0,function(){var i,n,o,r,l,a,d,c,h=this;return dd(this,function(u){switch(u.label){case 0:return this.applyEffects(t.getEffects(2)),i=t.container.styles,n=!fF(i.backgroundColor)||i.backgroundImage.length,o=[{style:i.borderTopStyle,color:i.borderTopColor,width:i.borderTopWidth},{style:i.borderRightStyle,color:i.borderRightColor,width:i.borderRightWidth},{style:i.borderBottomStyle,color:i.borderBottomColor,width:i.borderBottomWidth},{style:i.borderLeftStyle,color:i.borderLeftColor,width:i.borderLeftWidth}],r=HEe(yV(i.backgroundClip,0),t.curves),n||i.boxShadow.length?(this.ctx.save(),this.path(r),this.ctx.clip(),fF(i.backgroundColor)||(this.ctx.fillStyle=ra(i.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(t.container)]):[3,2];case 1:u.sent(),this.ctx.restore(),i.boxShadow.slice(0).reverse().forEach(function(m){h.ctx.save();var p=vJ(t.curves),g=m.inset?0:OEe,f=kEe(p,-g+(m.inset?1:-1)*m.spread.number,(m.inset?1:-1)*m.spread.number,m.spread.number*(m.inset?-2:2),m.spread.number*(m.inset?-2:2));m.inset?(h.path(p),h.ctx.clip(),h.mask(f)):(h.mask(p),h.ctx.clip(),h.path(f)),h.ctx.shadowOffsetX=m.offsetX.number+g,h.ctx.shadowOffsetY=m.offsetY.number,h.ctx.shadowColor=ra(m.color),h.ctx.shadowBlur=m.blur.number,h.ctx.fillStyle=m.inset?ra(m.color):"rgba(0,0,0,1)",h.ctx.fill(),h.ctx.restore()}),u.label=2;case 2:l=0,a=0,d=o,u.label=3;case 3:return a<d.length?(c=d[a],c.style!==0&&!fF(c.color)&&c.width>0?c.style!==2?[3,5]:[4,this.renderDashedDottedBorder(c.color,c.width,l,t.curves,2)]:[3,11]):[3,13];case 4:return u.sent(),[3,11];case 5:return c.style!==3?[3,7]:[4,this.renderDashedDottedBorder(c.color,c.width,l,t.curves,3)];case 6:return u.sent(),[3,11];case 7:return c.style!==4?[3,9]:[4,this.renderDoubleBorder(c.color,c.width,l,t.curves)];case 8:return u.sent(),[3,11];case 9:return[4,this.renderSolidBorder(c.color,l,t.curves)];case 10:u.sent(),u.label=11;case 11:l++,u.label=12;case 12:return a++,[3,3];case 13:return[2]}})})},e.prototype.renderDashedDottedBorder=function(t,i,n,o,r){return Hd(this,void 0,void 0,function(){var l,a,d,c,h,u,m,p,g,f,b,U,S,Z,R,y,R,y;return dd(this,function(N){return this.ctx.save(),l=DEe(o,n),a=Ade(o,n),r===2&&(this.path(a),this.ctx.clip()),xu(a[0])?(d=a[0].start.x,c=a[0].start.y):(d=a[0].x,c=a[0].y),xu(a[1])?(h=a[1].end.x,u=a[1].end.y):(h=a[1].x,u=a[1].y),n===0||n===2?m=Math.abs(d-h):m=Math.abs(c-u),this.ctx.beginPath(),r===3?this.formatPath(l):this.formatPath(a.slice(0,2)),p=i<3?i*3:i*2,g=i<3?i*2:i,r===3&&(p=i,g=i),f=!0,m<=p*2?f=!1:m<=p*2+g?(b=m/(2*p+g),p*=b,g*=b):(U=Math.floor((m+g)/(p+g)),S=(m-U*p)/(U-1),Z=(m-(U+1)*p)/U,g=Z<=0||Math.abs(g-S)<Math.abs(g-Z)?S:Z),f&&(r===3?this.ctx.setLineDash([0,p+g]):this.ctx.setLineDash([p,g])),r===3?(this.ctx.lineCap="round",this.ctx.lineWidth=i):this.ctx.lineWidth=i*2+1.1,this.ctx.strokeStyle=ra(t),this.ctx.stroke(),this.ctx.setLineDash([]),r===2&&(xu(a[0])&&(R=a[3],y=a[0],this.ctx.beginPath(),this.formatPath([new Mi(R.end.x,R.end.y),new Mi(y.start.x,y.start.y)]),this.ctx.stroke()),xu(a[1])&&(R=a[1],y=a[2],this.ctx.beginPath(),this.formatPath([new Mi(R.end.x,R.end.y),new Mi(y.start.x,y.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]})})},e.prototype.render=function(t){return Hd(this,void 0,void 0,function(){var i;return dd(this,function(n){switch(n.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=ra(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),i=xEe(t),[4,this.renderStack(i)];case 1:return n.sent(),this.applyEffects([]),[2,this.canvas]}})})},e}(mAe),PEe=function(s){return s instanceof HFe||s instanceof PFe?!0:s instanceof One&&s.type!==CJ&&s.type!==TJ},HEe=function(s,e){switch(s){case 0:return vJ(e);case 2:return TEe(e);case 1:default:return kJ(e)}},KEe=function(s){switch(s){case 1:return"center";case 2:return"right";case 0:default:return"left"}},qEe=["-apple-system","system-ui"],$Ee=function(s){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?s.filter(function(e){return qEe.indexOf(e)===-1}):s},eDe=function(s){fp(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.canvas=i.canvas?i.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),n.options=i,n.canvas.width=Math.floor(i.width*i.scale),n.canvas.height=Math.floor(i.height*i.scale),n.canvas.style.width=i.width+"px",n.canvas.style.height=i.height+"px",n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-i.x,-i.y),n.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+i.width+"x"+i.height+" at "+i.x+","+i.y+") with scale "+i.scale),n}return e.prototype.render=function(t){return Hd(this,void 0,void 0,function(){var i,n;return dd(this,function(o){switch(o.label){case 0:return i=eK(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,t),[4,tDe(i)];case 1:return n=o.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=ra(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(n,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}})})},e}(mAe),tDe=function(s){return new Promise(function(e,t){var i=new Image;i.onload=function(){e(i)},i.onerror=t,i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(s))})},iDe=function(){function s(e){var t=e.id,i=e.enabled;this.id=t,this.enabled=i,this.start=Date.now()}return s.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&(typeof window<"u"&&window.console&&typeof console.debug=="function"?console.debug.apply(console,Xk([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},s.prototype.getTime=function(){return Date.now()-this.start},s.prototype.info=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&typeof window<"u"&&window.console&&typeof console.info=="function"&&console.info.apply(console,Xk([this.id,this.getTime()+"ms"],e))},s.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&(typeof window<"u"&&window.console&&typeof console.warn=="function"?console.warn.apply(console,Xk([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},s.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&(typeof window<"u"&&window.console&&typeof console.error=="function"?console.error.apply(console,Xk([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},s.instances={},s}(),nDe=function(){function s(e,t){var i;this.windowBounds=t,this.instanceName="#"+s.instanceCount++,this.logger=new iDe({id:this.instanceName,enabled:e.logging}),this.cache=(i=e.cache)!==null&&i!==void 0?i:new NEe(this,e)}return s.instanceCount=1,s}(),sDe=function(s,e){return e===void 0&&(e={}),oDe(s,e)};typeof window<"u"&&lAe.setContext(window);var oDe=function(s,e){return Hd(void 0,void 0,void 0,function(){var t,i,n,o,r,l,a,d,c,h,u,m,p,g,f,b,U,S,Z,R,N,y,N,w,Q,C,v,Y,J,k,E,K,de,ee,le,Fe,Ue,ze,Oe,Ie;return dd(this,function(at){switch(at.label){case 0:if(!s||typeof s!="object")return[2,Promise.reject("Invalid element provided as first argument")];if(t=s.ownerDocument,!t)throw new Error("Element is not attached to a Document");if(i=t.defaultView,!i)throw new Error("Document is not attached to a Window");return n={allowTaint:(w=e.allowTaint)!==null&&w!==void 0?w:!1,imageTimeout:(Q=e.imageTimeout)!==null&&Q!==void 0?Q:15e3,proxy:e.proxy,useCORS:(C=e.useCORS)!==null&&C!==void 0?C:!1},o=E4({logging:(v=e.logging)!==null&&v!==void 0?v:!0,cache:e.cache},n),r={windowWidth:(Y=e.windowWidth)!==null&&Y!==void 0?Y:i.innerWidth,windowHeight:(J=e.windowHeight)!==null&&J!==void 0?J:i.innerHeight,scrollX:(k=e.scrollX)!==null&&k!==void 0?k:i.pageXOffset,scrollY:(E=e.scrollY)!==null&&E!==void 0?E:i.pageYOffset},l=new Xf(r.scrollX,r.scrollY,r.windowWidth,r.windowHeight),a=new nDe(o,l),d=(K=e.foreignObjectRendering)!==null&&K!==void 0?K:!1,c={allowTaint:(de=e.allowTaint)!==null&&de!==void 0?de:!1,onclone:e.onclone,ignoreElements:e.ignoreElements,inlineImages:d,copyStyles:d},a.logger.debug("Starting document clone with size "+l.width+"x"+l.height+" scrolled to "+-l.left+","+-l.top),h=new bde(a,s,c),u=h.clonedReferenceElement,u?[4,h.toIFrame(t,l)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return m=at.sent(),p=jne(u)||rEe(u)?kLe(u.ownerDocument):o3(a,u),g=p.width,f=p.height,b=p.left,U=p.top,S=rDe(a,u,e.backgroundColor),Z={canvas:e.canvas,backgroundColor:S,scale:(le=(ee=e.scale)!==null&&ee!==void 0?ee:i.devicePixelRatio)!==null&&le!==void 0?le:1,x:((Fe=e.x)!==null&&Fe!==void 0?Fe:0)+b,y:((Ue=e.y)!==null&&Ue!==void 0?Ue:0)+U,width:(ze=e.width)!==null&&ze!==void 0?ze:Math.ceil(g),height:(Oe=e.height)!==null&&Oe!==void 0?Oe:Math.ceil(f)},d?(a.logger.debug("Document cloned, using foreign object rendering"),N=new eDe(a,Z),[4,N.render(u)]):[3,3];case 2:return R=at.sent(),[3,5];case 3:return a.logger.debug("Document cloned, element located at "+b+","+U+" with size "+g+"x"+f+" using computed rendering"),a.logger.debug("Starting DOM parsing"),y=$Fe(a,u),S===y.styles.backgroundColor&&(y.styles.backgroundColor=Bf.TRANSPARENT),a.logger.debug("Starting renderer for element at "+Z.x+","+Z.y+" with size "+Z.width+"x"+Z.height),N=new jEe(a,Z),[4,N.render(y)];case 4:R=at.sent(),at.label=5;case 5:return(!((Ie=e.removeContainer)!==null&&Ie!==void 0)||Ie)&&(bde.destroy(m)||a.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),a.logger.debug("Finished rendering"),[2,R]}})})},rDe=function(s,e,t){var i=e.ownerDocument,n=i.documentElement?DC(s,getComputedStyle(i.documentElement).backgroundColor):Bf.TRANSPARENT,o=i.body?DC(s,getComputedStyle(i.body).backgroundColor):Bf.TRANSPARENT,r=typeof t=="string"?DC(s,t):t===null?Bf.TRANSPARENT:4294967295;return e===i.documentElement?fF(n)?fF(o)?r:o:n:r};const lDe={key:0,width:"16",height:"16",viewBox:"0 0 32 32"},aDe=re("path",{d:"M18 28A12 12 0 1 0 6 16v6.2l-3.6-3.6L1 20l6 6l6-6l-1.4-1.4L8 22.2V16a10 10 0 1 1 10 10Z"},null,-1),dDe=[aDe],cDe={key:1,width:"16",height:"16",viewBox:"0 0 24 24"},hDe=re("path",{d:"M14 20v-2h2.6l-3.2-3.2l1.425-1.425L18 16.55V14h2v6Zm-8.6 0L4 18.6L16.6 6H14V4h6v6h-2V7.4Zm3.775-9.425L4 5.4L5.4 4l5.175 5.175Z"},null,-1),uDe=[hDe],mDe={key:2,width:"16",height:"16",viewBox:"0 0 24 24"},pDe=re("path",{d:"M12 17q-2.075 0-3.537-1.463Q7 14.075 7 12t1.463-3.538Q9.925 7 12 7t3.538 1.462Q17 9.925 17 12q0 2.075-1.462 3.537Q14.075 17 12 17ZM2 13q-.425 0-.712-.288Q1 12.425 1 12t.288-.713Q1.575 11 2 11h2q.425 0 .713.287Q5 11.575 5 12t-.287.712Q4.425 13 4 13Zm18 0q-.425 0-.712-.288Q19 12.425 19 12t.288-.713Q19.575 11 20 11h2q.425 0 .712.287q.288.288.288.713t-.288.712Q22.425 13 22 13Zm-8-8q-.425 0-.712-.288Q11 4.425 11 4V2q0-.425.288-.713Q11.575 1 12 1t.713.287Q13 1.575 13 2v2q0 .425-.287.712Q12.425 5 12 5Zm0 18q-.425 0-.712-.288Q11 22.425 11 22v-2q0-.425.288-.712Q11.575 19 12 19t.713.288Q13 19.575 13 20v2q0 .425-.287.712Q12.425 23 12 23ZM5.65 7.05L4.575 6q-.3-.275-.288-.7q.013-.425.288-.725q.3-.3.725-.3t.7.3L7.05 5.65q.275.3.275.7q0 .4-.275.7q-.275.3-.687.287q-.413-.012-.713-.287ZM18 19.425l-1.05-1.075q-.275-.3-.275-.712q0-.413.275-.688q.275-.3.688-.287q.412.012.712.287L19.425 18q.3.275.288.7q-.013.425-.288.725q-.3.3-.725.3t-.7-.3ZM16.95 7.05q-.3-.275-.287-.688q.012-.412.287-.712L18 4.575q.275-.3.7-.288q.425.013.725.288q.3.3.3.725t-.3.7L18.35 7.05q-.3.275-.7.275q-.4 0-.7-.275ZM4.575 19.425q-.3-.3-.3-.725t.3-.7l1.075-1.05q.3-.275.713-.275q.412 0 .687.275q.3.275.288.688q-.013.412-.288.712L6 19.425q-.275.3-.7.287q-.425-.012-.725-.287Z"},null,-1),gDe=[pDe],fDe={key:3,width:"16",height:"16",viewBox:"0 0 24 24"},bDe=re("path",{d:"M12 21q-3.75 0-6.375-2.625T3 12q0-3.75 2.625-6.375T12 3q.35 0 .688.025q.337.025.662.075q-1.025.725-1.637 1.887Q11.1 6.15 11.1 7.5q0 2.25 1.575 3.825Q14.25 12.9 16.5 12.9q1.375 0 2.525-.613q1.15-.612 1.875-1.637q.05.325.075.662Q21 11.65 21 12q0 3.75-2.625 6.375T12 21Z"},null,-1),UDe=[bDe],FDe={key:4,width:"20",height:"20",viewBox:"0 0 24 24"},ADe=re("path",{d:"m12 17l4-4l-1.4-1.4l-1.6 1.55V9h-2v4.15L9.4 11.6L8 13zm-6 5q-.825 0-1.412-.587T4 20V8l6-6h8q.825 0 1.413.588T20 4v16q0 .825-.587 1.413T18 22zm0-2h12V4h-7.15L6 8.85zm0 0h12z"},null,-1),ZDe=[ADe],KO={__name:"Icon",props:{name:{type:String,required:!0}},setup(s){return(e,t)=>(he(),$e(zt,null,[s.name==="reset"?(he(),$e("svg",lDe,dDe)):An("",!0),s.name==="update"?(he(),$e("svg",cDe,uDe)):An("",!0),s.name==="sun"?(he(),$e("svg",mDe,gDe)):An("",!0),s.name==="moon"?(he(),$e("svg",fDe,UDe)):An("",!0),s.name==="log"?(he(),$e("svg",FDe,ZDe)):An("",!0)],64))}};const SDe={class:"field"},NDe=re("label",{for:"label"},"Label:",-1),RDe={class:"my-header"},VDe=["id"],WDe={style:{"margin-top":"20px",padding:"20px"}},yDe={class:"dialog-footer"},QDe={class:"my-header"},MDe=["id"],wDe={style:{"margin-top":"5px",padding:"10px 35px"}},TDe={key:0},CDe={class:"eldesign classtable"},BDe={key:1},LDe={class:"eldesign classtable"},vDe={key:2},kDe={class:"eldesign classtable"},xDe={key:3},IDe={class:"eldesign classtable"},EDe={key:4},DDe={class:"eldesign classtable"},GDe={key:5},JDe={class:"eldesign classtable"},XDe={key:6},YDe={class:"eldesign classtable"},_De={key:7},zDe={class:"eldesign classtable"},ODe={class:"dialog-footer"},jDe=re("div",{class:"dnd-flow"},null,-1),PDe={__name:"index",props:{optimizer:{type:Boolean},jboptimizer:{type:Boolean},Xfoil:{type:Boolean}},emits:["optimizerfalse"],setup(s,{expose:e,emit:t}){const i=X(!1);let n=X();dUe();const{onInit:o,onNodeDragStop:r,onNodeContextMenu:l,onConnect:a,addEdges:d,setViewport:c,toObject:h,addNodes:u,updateEdgeData:m,onConnectStart:p}=Gne();let g=X(),f=X(),b=X(),U=X("#000"),S=X({name:"",description:""}),Z=X([]),R=X(1),y=X(),N=X("#2267B1"),w=X("");X();let Q=X("");X(!1);let C=X([]),v=X(),Y=X(null),J=X(!1);X(),X({position:{x:0,y:0},target:"kong"});let k=X([]),E=X([]),K=X(0);const{onDragOver:de,onDrop:ee,onDragLeave:le,isDragOver:Fe}=cFe(),Ue=X([]),ze=X([]),Oe=X(!1),Ie=X({name:""});let at=[...ze.value],je=[...Ue.value];Rd(ze,He=>{const xe=at.filter(me=>!He.some(Zt=>Zt.id===me.id));xe.length>0&&console.log("Deleted Nodes:",xe),at=[...He]},{deep:!0}),Rd(Ue,He=>{const xe=je.filter(me=>!He.some(Zt=>Zt.id===me.id));xe.length>0&&console.log("Deleted Edges:",xe),je=[...He]},{deep:!0}),l(He=>{C.value=He.node,Ie.value.name=He.node.data.label,Oe.value=!0}),p(()=>{Gn()});let Se=X("process"),dt=X(0);a(He=>{console.log("线连接",He);const xe=`${Se.value}-${He.source}-${He.sourceHandle}-${He.target}-${He.targetHandle}`;He.id=xe,He.type="smoothstep",He.zIndex=Se.value==="process"?10:5,He.interactionWidth=Se.value==="process"?5:20,Se.value==="process"?He.markerEnd=Aae.ArrowClosed:Se.value==="data"&&(He.markerEnd={type:Aae.ArrowClosed,width:6,height:6,color:N.value}),He.color=N.value,He.style={strokeWidth:R.value,stroke:N.value};const me=Ue.value.find(Qe=>Qe.id===xe);me&&Le(me.data.wid),d(He),Y.value=null,dt.value++;const Zt=`Seg${dt.value}`,q=g.value.getNode(He.source),We=g.value.getNode(He.target);Be(w.value,"",Zt,Se.value,q.data.uid,We.data.uid).then(Qe=>{const ke={wid:Qe,uid:Zt,type:Se.value,fromuid:q.data.uid,touid:We.data.uid};m(He.id,ke)}).catch(Qe=>{console.error("保存流程失败:",Qe)})});const Yt=()=>{C.value&&C.value.data?(C.value.data.label=Ie.value.name,console.log(C.value.data.label)):console.error("noid.value 或 noid.value.data 未定义"),Oe.value=!1};Gr.on("child2Data",He=>{n.value=He,console.log("datatree的值:",n.value)});function Ye(He){C.value=He.node,Ie.value.name=He.node.data.label,console.log("shuju:",He.node.data),console.log("noid.value:",C.value),console.log("changeName.value:",Ie.value.name),J.value=!J.value}const mt=He=>{y.value=He,C.value.style!=null&&(console.log(C.value.style),C.value.style.backgroundColor=He)};function Wt(){let He=[],xe=[];for(let Qe=0;Qe<k.value.length;Qe++)He.push(k.value[Qe].position.x),xe.push(k.value[Qe].position.y);let me=Math.min(...He),Zt=Math.max(...xe);console.log(He),K.value++;let q="模块"+K.value,We={id:K.value.toString(),data:{label:q},position:{x:me,y:Zt},style:{backgroundColor:y.value,width:"200px",height:"200px"}};if(k.value.length!=0){E.value=[];for(let Qe=0;Qe<k.value.length;Qe++)E.value.push(k.value[Qe]);console.log(E.value),Z.value=E.value.map(Qe=>(Qe.parentNode==null&&(Qe.isParent=!1,Qe.parentNode=We.id,console.log(Qe.parentNode),Qe.position.x=Qe.position.x/2,Qe.position.y=Qe.position.y/2,Qe.expandParent=!0),Qe))}ze.value.push(We);for(let Qe=0;Qe<Z.value.length;Qe++)console.log(Z.value[Qe]),ze.value.push(Z.value[Qe]);console.log(ze.value)}function Jt(He){C.value=He.node;const xe=He.node.data.wid;console.log(He.node.data.name),He.node.data.name=="optimizer"?t("optimizerfalse",{name:"优化器",wid:xe}):He.node.data.name=="optimizer1"?t("optimizerfalse",{name:"进化优化器",wid:xe}):He.node.data.name=="optimizer3"?t("optimizerfalse",{name:"代理优化器",wid:xe}):He.node.data.name=="Xfoil"?t("optimizerfalse",{name:"Xfoil",wid:xe}):He.node.data.name=="optimizer2"?t("optimizerfalse",{name:"梯度优化器",wid:xe}):He.node.data.name=="CST"?t("optimizerfalse",{name:"CST",wid:xe}):He.node.data.name=="ADflow"||He.node.data.name=="RAE2822"?t("optimizerfalse",{name:"ADflow",wid:xe}):He.node.data.name=="FFD"?t("optimizerfalse",{name:"FFD",wid:xe}):He.node.data.name=="TACS"?t("optimizerfalse",{name:"TACS",wid:xe}):He.node.data.name=="参数化"?t("optimizerfalse",{name:"参数化",wid:xe}):He.node.data.name=="气动分析"?t("optimizerfalse",{name:"气动分析",wid:xe}):Ae.value.some(me=>He.node.data.name.includes(me))?t("optimizerfalse",{name:He.node.data.name,wid:xe}):He.node.data.name=="CATIA"?t("optimizerfalse",{name:"CATIA",wid:xe}):He.node.data.name=="FSI"?t("optimizerfalse",{name:"FSI",wid:xe}):He.node.data.name=="Flight"?t("optimizerfalse",{name:"Flight",wid:xe}):He.node.data.name=="MathFunc"&&t("optimizerfalse",{name:"MathFunc",wid:xe})}let Ae=X(["Python","Branin","Rosenbrock","Rastrigin","G9","Forrester"]),Yi=null;function ci(He){console.log("Edge Click",He.edge),console.log("所有线段:",Ue.value),Y.value&&Yi&&(Yi.style={...Yi.style,stroke:Yi.originalColor,strokeWidth:Yi.originalWidth}),v.value=He.edge.id,Y.value=He.edge,Y.value.originalColor=Y.value.style.stroke,Y.value.originalWidth=Y.value.style.strokeWidth;const xe=He.edge.data.type==="process";Y.value.style={...Y.value.style,stroke:xe?"#2267B1":"rgba(255, 255, 0, 0.3)",strokeWidth:xe?2:6},Yi=Y.value}let we=X(!1),si=X([{name:"FFD参数(sample)",steamflag:1}]),yn=X([{name:"上表面CST参数(upper)",steamflag:1},{name:"下表面CST参数(lower)",steamflag:1}]),bi=X([{name:"TACS参数",steamflag:1}]),pe=X([{label:"约束条件",value:1},{label:"优化目标",value:2}]),ie=X([{code:"cl",name:"升力系数Cl",comtype:2,steamflag:1,steamtype:1},{code:"cd",name:"阻力系数Cd",comtype:2,steamflag:1,steamtype:1},{code:"cm",name:"力矩系数Cm",comtype:2,steamflag:1,steamtype:1}]),it=X([]),Ft=X([]),Pe=X([]),Re=X([]),vt=X(!1),Ke=X(!1);const ot={1:si,2:yn,3:ie,4:Re,5:it,6:Ft,7:bi,8:Pe},Et=()=>{const He=ot[st.value];if(!He)return;let xe=He.value.filter(me=>!!me.steamflag).length;vt.value=xe===He.value.length,Ke.value=xe>0&&xe<He.value.length},St=He=>{const xe=ot[st.value];xe&&(xe.value.forEach(me=>me.steamflag=He?1:0),Ke.value=!1)},Ht=()=>{let xe=ot[st.value].value.filter(me=>me.steamflag).map(me=>me.name);console.log("xuanzhongshuju:",xe),console.log("seledge:",Y.value),Y.value.label=xe.join(`
- `),Ui(),we.value=!1},Fi=X(""),Dt=X(""),Ot=X(""),nn=X(""),xi=He=>{Fi.value=He.value,C.value.data.xfid=Fi.value},Zi=He=>{Dt.value=He.value,C.value.data.adid=Dt.value},Me=He=>{Ot.value=He.value,C.value.data.mfcid=Ot.value},ri=He=>{nn.value=He.value,C.value.data.tacsid=nn.value};let st=X("");function Ve(He){if(console.log("Edge Double Click",He),He.edge.data.type==="process"){console.log("逻辑流不打开弹窗");return}Y.value=He.edge,console.log("qidian:",He.edge.sourceNode.data.name),console.log("zhongdian:",He.edge.targetNode.data.name);let xe=He.edge.sourceNode.data.name,me=He.edge.targetNode.data.name,Zt=["optimizer","optimizer3","optimizer1","optimizer2"];Zt.includes(xe)&&me==="FFD"?(st.value="1",we.value=!0):Zt.includes(xe)&&me==="CST"?(st.value="2",we.value=!0):xe==="ADflow"&&Zt.includes(me)?(st.value="3",Dt.value=He.edge.sourceNode.data.adid,Dt.value?(Nt(Dt),we.value=!0):vi.error("ADflow未初始化!")):xe==="Xfoil"&&Zt.includes(me)?(st.value="4",Fi.value=He.edge.sourceNode.data.xfid,Fi.value?(Nt(Fi),we.value=!0):vi.error("Xfoil未初始化!")):xe==="ADflow"&&me==="MathFunc"?(st.value="5",Dt.value=He.edge.sourceNode.data.adid,Dt.value?(Nt(Dt),we.value=!0):vi.error("ADflow未初始化!")):xe==="TACS"&&me==="MathFunc"?(st.value="6",nn.value=He.edge.sourceNode.data.tacsid,nn.value?(Nt(nn),we.value=!0):vi.error("TACS未初始化!")):Zt.includes(xe)&&me==="TACS"?(st.value="7",we.value=!0):xe==="MathFunc"&&Zt.includes(me)&&(st.value="8",Ot.value=He.edge.sourceNode.data.mfcid,Ot.value?(Nt(Ot),we.value=!0):vi.error("MathFunc未初始化!")),console.log("leixing:",st.value),Es(()=>{Et()})}const Nt=He=>{const xe={transCode:"MDO0052",pid:w.value,comid:He.value};Dn(xe).then(me=>{st.value==="3"&&(ie.value=me.params,Et()),st.value==="4"&&(Re.value=me.params,Et()),st.value==="5"&&(it.value=me.params,Et()),st.value==="6"&&(Ft.value=me.params,Et()),st.value==="8"&&(Pe.value=me.params,Et())}).catch(me=>{vi.error(me.returnMsg)})},Ui=()=>{let He="";if(st.value==="3")He=Ci([],ie.value);else if(st.value==="4")He=Ci([],Re.value);else if(st.value==="5")He=Ci([],it.value);else if(st.value==="6")He=Ci([],Ft.value);else if(st.value==="8")He=Ci([],Pe.value);else return;Dn({transCode:"MDO0053",paramstr:He}).then(me=>{vi({message:"数据流保存成功",type:"success"})}).catch(me=>{vi.error("数据流保存失败")})},Ci=(He,xe)=>(console.log("Data:",xe),Array.isArray(xe)?(He=xe.map(me=>{const Zt=me.paramid??" ",q=me.steamflag??"",We=me.steamtype??" ";return`${Zt},${q},${We}`}).join(";"),He):(console.error("Data should be an array"),He));o(He=>{He.fitView()}),r(({event:He,nodes:xe,node:me})=>{console.log(xe),k.value=xe,console.log("Node Drag Stop",{event:He,nodes:xe,node:me})});function Mn(He){if(!Y.value)return;He=v.value;const xe=Y.value.data.wid;g.value.removeEdges(He),Le(xe),Y.value=null,console.log("msg:",n.value)}const Si=He=>{ee(He),Gr.emit("doSomethingEvent")};function oe(He){He=C.value.id;const xe=C.value.data.wid;if(console.log("removeNodewid:",xe),n.value==null){if(ze.value.length>0){for(let me=0;me<ze.value.length;me++)He==ze.value[me].id&&(console.log(44444),console.log(ze.value[me]),ze.value.splice(me,1),Le(xe));console.log(ze.value)}}else{if(ze.value.length>0)for(let me=0;me<ze.value.length;me++)He==ze.value[me].id&&(console.log(ze.value[me]),ze.value.splice(me,1));for(let me=0;me<n.value[0].children.length;me++)if(He.includes(n.value[0].children[me].Text))for(let Zt=0;Zt<n.value[0].children[me].children.length;Zt++)He==n.value[0].children[me].children[Zt].id&&(n.value[0].children[me].children.splice(Zt,1),Le(xe),g.value.removeNodes(He),ae(He))}}function ae(He){Ue.value.filter(me=>me.source===He||me.target===He).forEach(me=>{me.data&&me.data.wid&&Le(me.data.wid)})}const ce=()=>{H2e.confirm("确定要删除全部吗?删除后不可恢复!","删除确认",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{Ne()}).catch(()=>{vi({type:"info",message:"已取消删除"})})};function Ne(){var He,xe,me;try{const Zt=ze.value,q=Ue.value;for(let We=0;We<Zt.length;We++)Zt[We].data.wid&&Le(Zt[We].data.wid);for(let We=0;We<q.length;We++)q[We].data.wid&&Le(q[We].data.wid);if(ze.value=[],Ue.value=[],E.value=[],k.value=[],!n.value||n.value.length===0||!((He=n.value[0])!=null&&He.children)){console.warn("datatree 数据为空或未定义"),vi({type:"warning",message:"没有数据可以删除"});return}for(let We=0;We<n.value[0].children.length;We++)(me=(xe=n.value[0])==null?void 0:xe.children[We])!=null&&me.children&&(n.value[0].children[We].children=[])}catch(Zt){console.error("删除失败:",Zt),vi({type:"error",message:"删除过程中出错"})}}const Be=async(He,xe,me,Zt,q,We)=>{const Qe={transCode:"MDO0058",pid:He||"",wid:xe||"",uid:me||"",type:Zt||"",fromuid:q||"",touid:We||""};try{return(await Dn(Qe)).wid}catch(ke){vi.error(ke.returnMsg||"保存流程失败")}},Le=He=>{Dn({transCode:"MDO0059",wid:He}).then(me=>{console.log(me)}).catch(me=>{vi.error("删除流程失败")})};async function pt(){let He={nodes:h().nodes,edges:h().edges};f.value=JSON.stringify(He);try{const xe=g.value.$el,Zt=(await sDe(xe)).toDataURL("image/png");Q.value=Zt,Q.value!=""&&(console.log("进入了"),jt())}catch(xe){console.error("转换出错:",xe)}}const jt=()=>{const He=JSON.parse(sessionStorage.getItem("objlist")),xe=He?He.stype:"",me={pid:w.value,name:S.value.name,remark:S.value.description,image:Q.value,isshare:"1",flow:f.value,stype:xe};sessionStorage.setItem("objlist",JSON.stringify(me)),console.log("打印stypeValue:",xe);const Zt={transCode:"MDO0002",pid:w.value,name:S.value.name,remark:S.value.description,image:Q.value,isshare:"1",flow:f.value,stype:xe};console.log(Zt),Dn(Zt).then(q=>{console.log(q),vi({message:"工程保存成功",type:"success"})}).catch(q=>{vi.error(q.returnMsg)})};function mi(){c({x:0,y:0,zoom:1})}function Ji(){i.value=!i.value,i.value?U.value="#fff":U.value="#000"}const xn=He=>{He.preventDefault()};ul(()=>{setTimeout(function(){Fs()},1500),g.value&&g.value.$el.addEventListener("click",He=>{Y.value&&!He.target.closest(".vue-flow__edge")&&Gn()}),document.addEventListener("contextmenu",xn),Gr.on("xfidFromxfoil",xi),Gr.on("adidFromadflow",Zi),Gr.on("mfcidFromMathFunc",Me),Gr.on("tacsidFromTACS",ri)});const Gn=()=>{Y.value&&(Y.value.style={...Y.value.style,stroke:Y.value.originalColor,strokeWidth:(Yi==null?void 0:Yi.originalWidth)||1},Y.value=null,v.value=null,Yi=null)};Ene(()=>{document.removeEventListener("contextmenu",xn)}),hy(()=>{Gr.off("child2Data"),Gr.off("xfidFromxfoil",xi),Gr.off("adidFromadflow",Zi),Gr.off("mfcidFromMathFunc",Me),Gr.off("tacsidFromTACS",ri)});const Fs=()=>{let He=JSON.parse(sessionStorage.getItem("objlist"));if(He.flow!=""){let xe=JSON.parse(He.flow);ze.value=xe.nodes,Ue.value=xe.edges}S.value.name=He.name,S.value.description=He.remark,w.value=He.pid},As=He=>{He=="process"?(R.value=1,N.value="#2267B1",Se.value="process"):He=="data"&&(R.value=6,N.value="rgba(150, 150, 150, 0.2)",Se.value="data")},Vr=He=>{if(console.log("yanse:",He),N.value=He,Y.value){let xe=N.value;Y.value.data.type==="data"&&(xe=ir(N.value,.2));const me={...Y.value,style:{...Y.value.style,stroke:xe}},Zt=Ue.value.map(q=>q.id===Y.value.id?me:q);Ue.value=Zt}},ir=(He,xe)=>{if(He.startsWith("#")){const me=parseInt(He.substring(1,3),16),Zt=parseInt(He.substring(3,5),16),q=parseInt(He.substring(5,7),16);return`rgba(${me}, ${Zt}, ${q}, ${xe})`}else if(He.startsWith("rgb"))return He.replace(/rgb(a?)\(([^)]+)\)/,`rgba($2, ${xe})`);return He};return Rd(()=>Y.value,(He,xe)=>{Y.value!=null}),e({changeAllEdgesColor:Vr,linestrokeWidth:As,getroter:Fs,onSelection:Wt,bgcolorfunc:mt,logToObject1:pt}),(He,xe)=>{const me=At("el-icon"),Zt=At("el-input"),q=At("el-form-item"),We=At("el-form"),Qe=At("el-checkbox"),ke=At("el-table-column"),ve=At("el-table"),Lt=At("el-card"),li=At("el-option");return he(),$e(zt,null,[M(W(oBe),{ref_key:"vueFlowRef",ref:g,nodes:ze.value,"onUpdate:nodes":xe[18]||(xe[18]=tt=>ze.value=tt),edges:Ue.value,"onUpdate:edges":xe[19]||(xe[19]=tt=>Ue.value=tt),class:gn([{dark:i.value},"basic-flow"]),style:{"background-image":"url('src/assets/flowimg/surromdao.png')","background-position":"center","background-repeat":"no-repeat"},"default-viewport":{zoom:1.5},"min-zoom":.2,"max-zoom":2.5,onDrop:Si,onNodeContextmenu:W(l),onDragover:W(de),onDragleave:W(le),onEdgeClick:ci,onNodeDoubleClick:Jt,onNodeClick:Ye,onEdgeDoubleClick:Ve},{"node-default":B(tt=>[M(sLe,{node:tt},null,8,["node"])]),"node-group":B(tt=>[M(dLe,{node:tt},null,8,["node"])]),default:B(()=>[M(W(rBe),{"pattern-color":"#aaa",gap:16}),M(W(cUe),{position:"right",style:{display:"none"}},{default:B(()=>[re("div",SDe,[re("div",null,[NDe,es(re("input",{id:"label","onUpdate:modelValue":xe[0]||(xe[0]=tt=>Xt(b)?b.value=tt:b=tt)},null,512),[[_2e,W(b),void 0,{lazy:!0}]])]),re("button",{onClick:Yt,class:"lableaniu"},"确定")])]),_:1}),M(W($Be),{position:"top-left"},{default:B(()=>[M(W(cg),{title:"重置",onClick:mi},{default:B(()=>[M(KO,{name:"reset"})]),_:1}),M(W(cg),{title:"背景切换",onClick:Ji},{default:B(()=>[i.value?(he(),It(KO,{key:0,name:"sun"})):(he(),It(KO,{key:1,name:"moon"}))]),_:1}),M(W(cg),{title:"保存",onClick:pt},{default:B(()=>[M(me,{color:W(U)},{default:B(()=>[M(W(z2e))]),_:1},8,["color"])]),_:1}),M(W(cg),{title:"删除节点",onClick:xe[1]||(xe[1]=tt=>oe())},{default:B(()=>[M(me,{color:W(U)},{default:B(()=>[M(W(O2e))]),_:1},8,["color"])]),_:1}),M(W(cg),{title:"删除线",onClick:xe[2]||(xe[2]=tt=>Mn())},{default:B(()=>[M(me,{color:W(U)},{default:B(()=>[M(W(j2e))]),_:1},8,["color"])]),_:1}),M(W(cg),{title:"清空全部",onClick:xe[3]||(xe[3]=tt=>ce())},{default:B(()=>[M(me,{color:W(U)},{default:B(()=>[M(W(P2e))]),_:1},8,["color"])]),_:1})]),_:1}),M(W(Is),{modelValue:Oe.value,"onUpdate:modelValue":xe[6]||(xe[6]=tt=>Oe.value=tt),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",width:"400",class:"dialog_class bgcolor colortext tianjia sel"},{header:B(({titleId:tt,titleClass:Ct})=>[re("div",RDe,[re("h4",{id:tt,class:gn(Ct)},"修改名称",10,VDe)])]),footer:B(()=>[re("div",yDe,[M(W(Ai),{onClick:xe[5]||(xe[5]=tt=>Oe.value=!1)},{default:B(()=>[Qt("取 消")]),_:1}),M(W(Ai),{type:"primary",onClick:Yt},{default:B(()=>[Qt("确 定")]),_:1})])]),default:B(()=>[re("div",WDe,[M(We,{model:Ie.value,"label-width":"100px",class:"demo-ruleForm"},{default:B(()=>[M(q,{label:"新名称:",prop:"name"},{default:B(()=>[M(Zt,{modelValue:Ie.value.name,"onUpdate:modelValue":xe[4]||(xe[4]=tt=>Ie.value.name=tt),placeholder:"请输入名称",maxlength:"20"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(we),"onUpdate:modelValue":xe[17]||(xe[17]=tt=>Xt(we)?we.value=tt:we=tt),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",width:"500",class:"bgcolor colortext tianjia sel"},{header:B(({titleId:tt,titleClass:Ct})=>[re("div",QDe,[re("h4",{id:tt,class:gn(Ct)},"数据流",10,MDe)])]),footer:B(()=>[re("div",ODe,[M(W(Ai),{onClick:xe[15]||(xe[15]=tt=>Xt(we)?we.value=!1:we=!1)},{default:B(()=>[Qt("取 消")]),_:1}),M(W(Ai),{type:"primary",onClick:xe[16]||(xe[16]=tt=>{Ht(),Xt(we)?we.value=!1:we=!1})},{default:B(()=>[Qt("确 定")]),_:1})])]),default:B(()=>[re("div",wDe,[W(st)==="1"?(he(),$e("div",TDe,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[7]||(xe[7]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",CDe,[M(ve,{data:W(si),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:""})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0),W(st)==="2"?(he(),$e("div",BDe,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[8]||(xe[8]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",LDe,[M(ve,{data:W(yn),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:""})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0),W(st)==="3"?(he(),$e("div",vDe,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[9]||(xe[9]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",kDe,[M(ve,{data:W(ie),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:"","show-overflow-tooltip":""}),M(ke,{prop:"steamtype"},{default:B(({row:tt})=>[M(W(ln),{modelValue:tt.steamtype,"onUpdate:modelValue":Ct=>tt.steamtype=Ct},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(pe),Ct=>(he(),It(li,{key:Ct.value,label:Ct.label,value:Ct.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0),W(st)==="4"?(he(),$e("div",xDe,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[10]||(xe[10]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",IDe,[M(ve,{data:W(Re),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:"","show-overflow-tooltip":""}),M(ke,{prop:"steamtype"},{default:B(({row:tt})=>[M(W(ln),{modelValue:tt.steamtype,"onUpdate:modelValue":Ct=>tt.steamtype=Ct},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(pe),Ct=>(he(),It(li,{key:Ct.value,label:Ct.label,value:Ct.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0),W(st)==="5"?(he(),$e("div",EDe,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[11]||(xe[11]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",DDe,[M(ve,{data:W(it),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:"","show-overflow-tooltip":""}),M(ke,{prop:"steamtype"},{default:B(({row:tt})=>[M(W(ln),{modelValue:tt.steamtype,"onUpdate:modelValue":Ct=>tt.steamtype=Ct},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(pe),Ct=>(he(),It(li,{key:Ct.value,label:Ct.label,value:Ct.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0),W(st)==="6"?(he(),$e("div",GDe,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[12]||(xe[12]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",JDe,[M(ve,{data:W(Ft),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:"","show-overflow-tooltip":""}),M(ke,{prop:"steamtype"},{default:B(({row:tt})=>[M(W(ln),{modelValue:tt.steamtype,"onUpdate:modelValue":Ct=>tt.steamtype=Ct},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(pe),Ct=>(he(),It(li,{key:Ct.value,label:Ct.label,value:Ct.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0),W(st)==="7"?(he(),$e("div",XDe,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[13]||(xe[13]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",YDe,[M(ve,{data:W(bi),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:""})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0),W(st)==="8"?(he(),$e("div",_De,[M(Lt,{shadow:He.none,style:{"min-height":"240px","max-height":"480px"}},{default:B(()=>[M(Qe,{modelValue:W(vt),"onUpdate:modelValue":xe[14]||(xe[14]=tt=>Xt(vt)?vt.value=tt:vt=tt),indeterminate:W(Ke),onChange:St},{default:B(()=>[Qt("全选")]),_:1},8,["modelValue","indeterminate"]),re("div",zDe,[M(ve,{data:W(Pe),border:"","show-header":!1},{default:B(()=>[M(ke,{type:"index",label:""}),M(ke,{prop:"steamflag",width:"55"},{default:B(({row:tt})=>[M(Qe,{"false-label":0,"true-label":1,modelValue:tt.steamflag,"onUpdate:modelValue":Ct=>tt.steamflag=Ct,onChange:Et},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ke,{prop:"name",label:"","show-overflow-tooltip":""}),M(ke,{prop:"steamtype"},{default:B(({row:tt})=>[M(W(ln),{modelValue:tt.steamtype,"onUpdate:modelValue":Ct=>tt.steamtype=Ct},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(pe),Ct=>(he(),It(li,{key:Ct.value,label:Ct.label,value:Ct.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])]),_:1},8,["shadow"])])):An("",!0)])]),_:1},8,["modelValue"])]),_:1},8,["nodes","edges","class","onNodeContextmenu","onDragover","onDragleave"]),jDe],64)}}},HDe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA8BJREFUaEPtmdFR20AQhj/JMJMHHkgFcSoIHcTpIFQAVBCoALsCnApwKggdABXEHcTpwI+ZgK14rRNzOu/Jd7rLAzPRm23J3n///ff+XRe88qt45fHzH4DC4HEJX4DzAobyeQVzYL6Gyeb9RU7WszIwgM8V3BZw7AlyWcFkDdNcIHIBGA7gFhg5gS3N6xagChZr+JSDjWQAJVwDl07WFwVcPMODAHgDwz/wvYATG2AFU1NWDdBoYlIAjEq4cYJaFvD1GcZaJAM430hCAG+1YfQhYCcrmEVHD726kIj0uoBL5wcfD+H89x6RChtPNcAzh41ZH5FHMeARqdB/FZtB+S7gxmZjU4rRIg8FoIpUyuUIxkvoXcMHMK7qsnq5YkS+F0CISPvUrv1Misi7AESLNBVIH5FrAJJEmgoiVuQugGEJ940FMMH0EmkqEE3koo0BnD7V1mR7tQCUMCus9pZDpKlAFJE/rOpTXAUgh8o789lFbGtMDdb3/CGcrOFH8/nKSnyLgQHcN35G6Eo5ITOCkWYiBrE5vRcreK8ycACjqgZhX3cruMphvCJBSTOZ2iWtVcZOFzJdQEC8+BV5sIKxOeoj44i/vaxtitgV28W2DKLKgP1THSfkqQwn8WEFPRF94neexLE9OShE/abtFLcJxnWxj/JeY8u1R10AowGcbVTeGv36nJARYFyRyqPLEiZP7clN2BHP9Gh3R/cc+GnNsa2a97EB9BW5T6Q7ttzVxAreCsidg8xuo0a4O6NfDpFHiFTThL+NStAe8e50oJ4iDxapBlJzBqqItSxrHj1C5DEiVbNuz9i2vjq7UCgbHpHLfCztVqaskdPTNZESmvVgAHJjKhtKN9Jm56isRwFobg5lwwCWDcNHJ3i1p/fJuheAWZNc+vY1oWw0zD0bO3IAC2VbEZV1a7Sde+305qDYWJ76EtGW1nIqwGYEe6XIrJ8YN/qyFDNudLtjbYnYUybq9iyGDQt8dNZdeyEW316cBbnRHGykZl3svNZKvW00BxvAN0OzCNpe/KrByL1m69cydV2jbYgbbc0GsWy4bbQjmJ1a92U9uo2msmF+MFvWowF0HWi+TmUGcZnqxEbM7VWIFUCvrPcCsOdAi97zx9a6b77YuxvVHvS1UB8bznckZz2JgYADzctGrqxnA9CljaL+z+DO/Ji2KPaK2lcu2vu9Skj7Ik+nkrFPbHVrRZNzZZkNgI8NB2yWrGctIY0NGXCq+p/LD8YY/pLF8RFMU/7N+aclFFO3Oe/NWkI5Awv9rlcP4C9pDvFAOSYhnAAAAABJRU5ErkJggg==";const KDe={class:"left_main"},qDe={style:{display:"flex","align-items":"center"}},$De=["src"],eGe={class:"custom-text",style:{height:"100%"}},tGe=["onDragstart"],iGe=["src"],nGe={class:"custom-text",style:{height:"100%"}},sGe={__name:"Sidebar",setup(s,{expose:e}){const{onDragStart:t,onDragLeave:i,treeobj:n,onDrop:o}=cFe(),r=X([{id:1,label:"工程管理",img:HDe,children:[{id:"1-1",label:"优化问题",img:sFe,Text:"2-",children:[]},{id:"1-3",label:"学科分析",img:oFe,Text:"3-",children:[]},{id:"1-2",label:"优化器",img:rFe,Text:"4-",children:[]}]}]),l=X([{id:2,label:"优化问题组件",img:"youhwt.png",children:[{id:"2-1",label:"优化问题",img:"wen.png",name:"Project"}]},{id:3,label:"学科分析组件",img:"xkfx.png",children:[{id:"3-01",label:"优化器",img:"mob.png",name:"optimizer"},{id:"3-02",label:"参数化",img:"csh.png",name:"参数化"},{id:"3-03",label:"气动分析",img:"aero.png",name:"气动分析"},{id:"3-0",label:"CST",img:"xuek0.png",name:"CST"},{id:"3-10",label:"FFD",img:"ffd.png",name:"FFD"},{id:"3-11",label:"ADflow",img:"ADflow.png",name:"ADflow"},{id:"3-12",label:"TACS",img:"TACS.png",name:"TACS"},{id:"3-14",label:"MathFunc",img:"MathFunc.png",name:"MathFunc"},{id:"3-1",label:"CATIA",img:"xuek1.png",name:"CATIA"},{id:"3-8",label:"Python",img:"xuek8.png",name:"Python"},{id:"3-9",label:"Xfoil",img:"xuek9.png",name:"Xfoil"},{id:"3-2",label:"Excel",img:"xuek2.png",name:"Excel"},{id:"3-3",label:"Feko",img:"xuek3.png",name:"Feko"},{id:"3-4",label:"Fluent",img:"xuek4.png",name:"Fluent"},{id:"3-5",label:"HCFD",img:"xuek5.png",name:"HCFD"},{id:"3-6",label:"Matlab",img:"xuek6.png",name:"Matlab"},{id:"3-7",label:"Nastran",img:"xuek7.png",name:"Nastran"},{id:"3-13",label:"FUM to FEM",img:"fsi.png",name:"FSI"},{id:"3-15",label:"Flight",img:"flight.png",name:"Flight"}]},{id:4,label:"优化器组件",img:"youhq.png",children:[{id:"4-1",label:"进化优化器",img:"xuek10.png",name:"进化优化器"},{id:"4-2",label:"代理优化器",img:"xuek11.png",name:"代理优化器"},{id:"4-3",label:"梯度优化器",img:"xuek12.png",name:"梯度优化器"}]}]);let a=X();ul(()=>{d(),m(),Gr.on("doSomethingEvent",p)});const d=()=>{let v=JSON.parse(sessionStorage.getItem("objlist"));if(v.flow!=""){let Y=JSON.parse(v.flow).nodes;for(let J=0;J<Y.length;J++)for(let k=0;k<r.value[0].children.length;k++)if(Y[J].id.includes(r.value[0].children[k].Text)){let E={id:Y[J].id,label:Y[J].data.label,img:Y[J].data.image};r.value[0].children[k].children.push(E)}}},c=v=>new URL(Object.assign({"../../assets/flowimg/111.png":hUe,"../../assets/flowimg/ADflow.png":uUe,"../../assets/flowimg/MathFunc.png":mUe,"../../assets/flowimg/TACS.png":pUe,"../../assets/flowimg/aero.png":gUe,"../../assets/flowimg/catia.png":fUe,"../../assets/flowimg/csh.png":bUe,"../../assets/flowimg/ffd.png":UUe,"../../assets/flowimg/ffdFileSave.png":FUe,"../../assets/flowimg/flight.png":AUe,"../../assets/flowimg/fsi.png":ZUe,"../../assets/flowimg/fsibackg.png":SUe,"../../assets/flowimg/gc1.png":NUe,"../../assets/flowimg/gc2.png":RUe,"../../assets/flowimg/gc3.png":VUe,"../../assets/flowimg/mob.png":WUe,"../../assets/flowimg/r2.png":yUe,"../../assets/flowimg/surromdao.png":QUe,"../../assets/flowimg/wen.png":MUe,"../../assets/flowimg/wens.png":wUe,"../../assets/flowimg/x@2x.png":TUe,"../../assets/flowimg/xkfx.png":CUe,"../../assets/flowimg/xuek0.png":BUe,"../../assets/flowimg/xuek01.png":LUe,"../../assets/flowimg/xuek1.png":vUe,"../../assets/flowimg/xuek10.png":kUe,"../../assets/flowimg/xuek11.png":xUe,"../../assets/flowimg/xuek12.png":IUe,"../../assets/flowimg/xuek2.png":EUe,"../../assets/flowimg/xuek3.png":DUe,"../../assets/flowimg/xuek4.png":GUe,"../../assets/flowimg/xuek5.png":JUe,"../../assets/flowimg/xuek6.png":XUe,"../../assets/flowimg/xuek7.png":YUe,"../../assets/flowimg/xuek8.png":_Ue,"../../assets/flowimg/xuek9.png":zUe,"../../assets/flowimg/xueks1.png":OUe,"../../assets/flowimg/xueks2.png":jUe,"../../assets/flowimg/xueks3.png":PUe,"../../assets/flowimg/xueks4.png":HUe,"../../assets/flowimg/xueks5.png":KUe,"../../assets/flowimg/xueks6.png":qUe,"../../assets/flowimg/xueks7.png":$Ue,"../../assets/flowimg/xueks8.png":eFe,"../../assets/flowimg/xueks9.png":tFe,"../../assets/flowimg/youhq.png":iFe,"../../assets/flowimg/youhwt.png":nFe})[`../../assets/flowimg/${v}`],self.location).href,h={children:"children",label:"label"},u=v=>{},m=()=>{Gr.emit("child2Data",r.value)};hy(()=>{Gr.off("doSomethingEvent",p)});const p=()=>{m();for(let v=0;v<r.value[0].children.length;v++)if(n.value[0].id.includes(r.value[0].children[v].Text)){let Y={id:n.value[0].id,label:n.value[0].data.label,img:n.value[0].data.image};r.value[0].children[v].children.push(Y)}};e({datatree:r,getnode:p});const g=X(null),f=X(0),b=X(0),U=X(0),S=()=>{g.value&&(f.value=g.value.clientHeight,b.value=f.value*.2,U.value=f.value*.8)};ul(()=>{Es(()=>{S(),window.addEventListener("resize",S)})}),hy(()=>{window.removeEventListener("resize",S)});const Z=X(!1),R=X(0),y=X(!1),N=v=>{const Y=v.currentTarget.getBoundingClientRect(),J=5;y.value=Math.abs(v.clientY-(Y.top+Y.height))<J,v.currentTarget.style.cursor=y.value?"row-resize":"default"},w=v=>{y.value&&(Z.value=!0,R.value=v.clientY,document.addEventListener("mousemove",Q),document.addEventListener("mouseup",C))},Q=v=>{if(!Z.value)return;const Y=v.clientY-R.value,J=b.value+Y,k=U.value-Y;J>50&&k>50&&(b.value=J,U.value=k),R.value=v.clientY},C=()=>{Z.value=!1,document.removeEventListener("mousemove",Q),document.removeEventListener("mouseup",C)};return(v,Y)=>{const J=At("el-tree");return he(),$e("div",KDe,[re("div",{class:"left_main_content el-treeicon",ref_key:"containerRef",ref:g},[re("div",{class:"tree-box top-tree",style:yJ({height:b.value+"px"}),onMousemove:N,onMousedown:w},[M(J,{data:r.value,class:"custom-tree",ref_key:"cgtree",ref:a,"default-expand-all":"",props:h,onNodeClick:u},{default:B(({node:k,data:E})=>[re("div",qDe,[re("img",{src:E.img,class:"custom-image"},null,8,$De),re("span",eGe,bs(k.label),1)])]),_:1},8,["data"])],36),re("div",{class:"tree-box bottom-tree",style:yJ({height:U.value+"px"}),onMousemove:N,onMousedown:w},[M(J,{data:l.value,class:"custom-tree1","default-expand-all":"",props:h,onNodeClick:u},{default:B(({node:k,data:E})=>[re("div",{style:{display:"flex","align-items":"center"},onDragstart:K=>W(t)(K,"default",E.id),draggable:!0},[re("img",{src:c(E.img),class:"custom-image"},null,8,iGe),re("span",nGe,bs(k.label),1)],40,tGe)]),_:1},8,["data"])],36)],512)])}}},oGe=gp(sGe,[["__scopeId","data-v-2a0d031c"]]),rGe={class:"classtable",style:{width:"100%",height:"100%",overflow:"auto"}},lGe={__name:"tablelist",props:{tabledataliebiao:{type:Array,default:[]},tableHeaders:{type:Array,default:[]},tablelistshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s,i=X([]);let n=X(!1);return e({selectshuju:r=>{!r||r.length===0?n.value=!1:(i.value=t.tableHeaders.filter(l=>r.includes(l.prop)),n.value=!0)}}),(r,l)=>{const a=At("el-table-column"),d=At("el-table");return he(),$e("div",rGe,[es(re("div",null,[M(d,{data:s.tabledataliebiao,border:"",style:{overflow:"auto",height:"100%"}},{default:B(()=>[M(a,{type:"index",label:"编号",width:"100"}),(he(!0),$e(zt,null,Kt(i.value,(c,h)=>(he(),It(a,{key:h,prop:c.prop,"show-overflow-tooltip":"",label:c.label,"min-width":"200"},null,8,["prop","label"]))),128))]),_:1},8,["data"])],512),[[us,W(n)]])])}}},aGe={style:{width:"100%",height:"100%"}},dGe={class:"echartitem",style:{width:"100%",height:"100%"}},cGe={__name:"area",props:{areashow:{type:Boolean,default:!1}},emits:[""],setup(s,{expose:e,emit:t}){const i=s;let n,o=X([]);X([]);let r=X([]),l=X([]),a=X(null);X();let d=X(null),c=X([]),h=X("");$F({instance:null}),ul(()=>{Es(()=>{console.log("onMounted called");const g=document.getElementById("area");console.log("chartDom:",g),g&&(n=ll(g),n.resize(),p())})}),Rd(()=>i.areashow,g=>{g&&Es(()=>{const f=a.value;f&&(n=ll(f),n.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],r.value=[],l.value=[]},m=g=>{h.value=g,c.value=[],r.value=[],l.value=[];let f=JSON.parse(h.value);if(!f.length)return;let b=f[0].vars.split(",");o.value=b,f.forEach((U,S)=>{l.value.push(S+1),c.value.push(U.vals.split(" ").map(Number))}),r.value=b.map((U,S)=>({name:U,type:"line",stack:"Total",symbol:"none",areaStyle:{},emphasis:{focus:"series"},data:c.value.map(Z=>Z[S])})),n.setOption({legend:{data:o.value},xAxis:{data:l.value},series:r.value})},p=()=>{d.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Microsoft YaHei"}},tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}}},legend:{data:o.value,orient:"vertical",right:"4%",top:"2%"},grid:{left:"5%",right:"4%",bottom:"10%",containLabel:!0},xAxis:[{type:"category",boundaryGap:!1,name:"cd",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",data:l.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],yAxis:[{type:"value",name:"-cl",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],series:r.value},d.value&&n.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,f)=>(he(),$e("div",aGe,[re("div",dGe,[re("div",{id:"area",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},hGe={style:{width:"100%",height:"100%"}},uGe={class:"echartitem",style:{width:"100%",height:"100%"}},mGe={__name:"bargraph",props:{bargraphshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=X([]),o=X([]),r=X([]),l=X([]),a=X(null);X();let d=X(null),c=X([]),h=X("");$F({instance:null}),ul(()=>{var g=document.getElementById("bargraph");i=ll(g),p()}),Rd(()=>t.bargraphshow,g=>{g&&Es(()=>{const f=a.value;f&&(i=ll(f),i.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],r.value=[],l.value=[]},m=g=>{h.value=g,c.value=[],r.value=[],l.value=[];let f=JSON.parse(h.value),b=0;for(let U=0;U<f.length;U++){b+=1,n.value=f[U].vars.split(","),o.value=f[U].vals.split(" ");let S=o.value.map(Z=>Number(Z));c.value.push(S),l.value.push(b)}console.log(c.value);for(let U=0;U<n.value.length;U++){let S=c.value.map(R=>R[U]),Z={name:n.value[U],type:"bar",data:S};r.value.push(Z)}i.setOption({legend:{data:n.value},xAxis:{data:l.value},series:r.value})},p=()=>{d.value={title:{text:"柱状图"},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},legend:{data:n.value},toolbox:{feature:{saveAsImage:{}}},xAxis:{type:"category",data:l.value},yAxis:{type:"value"},series:r.value},d.value&&i.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,f)=>(he(),$e("div",hGe,[re("div",uGe,[re("div",{id:"bargraph",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}};const pGe={style:{width:"100%",height:"100%"}},gGe={class:"echartitem",style:{width:"100%",height:"100%"}},fGe={__name:"echartLine",props:{echartdata:{type:String},curvedata:{type:String},echartLineshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i=X([]),n=X([]),o=X([]),r=X([]),l=X(null),a;X();let d=X(null),c=X([]),h=X("");$F({instance:null}),ul(()=>{a=ll(l.value),f(),a.resize()}),Rd(()=>t.echartLineshow,b=>{b&&Es(()=>{const U=l.value;U&&(a=ll(U),a.resize(),f())})},{immediate:!0});const u=()=>{c.value=[],o.value=[],r.value=[]},m=b=>{h.value=b,c.value=[],o.value=[],r.value=[];let U=JSON.parse(h.value);if(!U.length)return;let S=U[0].vars.split(",");i.value=S,U.forEach((Z,R)=>{r.value.push(R+1),c.value.push(Z.vals.split(" ").map(Number))}),o.value=S.map((Z,R)=>({name:Z,type:"line",stack:"Total",symbol:"none",data:c.value.map(y=>y[R])})),a.setOption({legend:{data:i.value},xAxis:{type:"category",data:r.value},yAxis:{type:"value"},series:o.value})},p=(b,U)=>{console.log("散点图曲线数据1:",U),h.value=U,o.value=[],r.value=[],i.value=b,n.value=U;for(let Z=0;Z<n.value.length;Z++)r.value.push(Z);for(let Z=0;Z<i.value.length;Z++){const R=i.value[Z].prop,y=i.value[Z].label;let N=[];for(let w=0;w<n.value.length;w++){let Q=n.value[w][R];N.push([r.value[w],Q])}o.value.push({name:y,type:"line",data:N})}ll(l.value).setOption({legend:{data:i.value.map(Z=>Z.label)},xAxis:{type:"category",data:r.value},yAxis:{type:"value"},series:o.value}),console.log("初始化后的 series:",o.value)},g=(b,U,S,Z)=>{console.log("图曲线数据1:",Z),h.value=Z,o.value=[],r.value=[];const R=X([]);i.value=S,n.value=Z,console.log("listcbval",b),console.log("listcbval2",U);const y=b,N=U;if(console.log("xColumns",y),console.log("yColumns",N),y.length===0||N.length===0){console.error("请先选择 X 轴和 Y 轴的变量");return}for(let Q=0;Q<n.value.length;Q++){let C=[],v=[];for(let Y of y){let J=n.value[Q][Y];C.push(J)}for(let Y of N){let J=n.value[Q][Y];v.push(J)}r.value.push(C),R.value.push(v)}for(let Q=0;Q<N.length;Q++){const C=N[Q];let v=[];for(let Y=0;Y<n.value.length;Y++){let J=r.value[Y],k=R.value[Y][Q];for(let E of J)v.push([E,k])}o.value.push({name:C,type:"line",data:v})}ll(l.value).setOption({legend:{data:N},xAxis:{type:"value",data:r.value,scale:!0},yAxis:{type:"value",scale:!0},series:o.value}),console.log("初始化后的 series:",o.value)},f=()=>{d.value={title:{text:" ",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Microsoft YaHei"}},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#FFF"}},legend:{data:i.value,orient:"vertical",right:"0%",top:"2%",itemWidth:30,pageButtonItemGap:10,pageButtonPosition:"end",type:"scroll"},grid:{show:!1,left:"5%",right:"14%",bottom:"10%",containLabel:!0},xAxis:{type:"value",boundaryGap:!1,name:"",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",data:r.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}},yAxis:{type:"value",name:"",nameGap:30,nameTextStyle:{fontsize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",axisTick:{show:!0},splitLine:{show:!0},axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}}},series:o.value},d.value&&a.setOption(d.value),window.onresize=function(){a.resize()}};return e({linechart:f,getsockechart:m,echatinit:u,getshuju:p,selectshuju:g}),(b,U)=>(he(),$e("div",pGe,[re("div",gGe,[re("div",{id:"line2",ref_key:"chartContainer",ref:l,style:{width:"100%",height:"100%"}},null,512)])]))}},bGe=gp(fGe,[["__scopeId","data-v-70f26ab7"]]),UGe={style:{width:"100%",height:"100%"}},FGe={class:"echartitem",style:{width:"100%",height:"100%"}},AGe={__name:"BarChart",props:{BarChartshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=X([]),o=X([]),r=X([]),l=X([]),a=X(null);X();let d=X(null),c=X([]),h=X("");$F({instance:null}),ul(()=>{}),Rd(()=>t.BarChartshow,g=>{g&&Es(()=>{const f=a.value;f&&(i=ll(f),i.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],r.value=[],l.value=[]},m=g=>{h.value=g,c.value=[],r.value=[],l.value=[];let f=JSON.parse(h.value),b=0;for(let U=0;U<f.length;U++){b+=1,n.value=f[U].vars.split(","),o.value=f[U].vals.split(" ");let S=o.value.map(Z=>Number(Z));c.value.push(S),l.value.push(b)}console.log(c.value);for(let U=0;U<n.value.length;U++){let S=c.value.map(R=>R[U]),Z={name:n.value[U],type:"bar",data:S};r.value.push(Z)}i.setOption({legend:{data:n.value},xAxis:{data:l.value},series:r.value})},p=()=>{d.value={title:{text:"横条图"},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},legend:{data:n.value},toolbox:{feature:{saveAsImage:{}}},xAxis:{type:"value"},yAxis:{type:"category",data:l.value},series:r.value},d.value&&i.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,f)=>(he(),$e("div",UGe,[re("div",FGe,[re("div",{id:"bargraphbar",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},ZGe={style:{width:"100%",height:"100%"}},SGe={class:"echartitem",style:{width:"100%",height:"100%"}},NGe={__name:"scatter",props:{scattershow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s,i=X({});let n,o=X([]),r=X([]),l=X([]),a=X([]),d=X(null);X();let c=X([]),h=X("");ul(()=>{Es(()=>{console.log("onMounted called");const b=document.getElementById("linesan");console.log("chartDom:",b),b&&(n=ll(b),n.resize(),f())})}),Rd(()=>t.scattershow,b=>{b&&Es(()=>{const U=d.value;U&&(n=ll(U),n.resize(),f())})},{immediate:!0});const u=()=>{c.value=[],l.value=[],a.value=[]},m=b=>{h.value=b,c.value=[],l.value=[],a.value=[];let U=JSON.parse(h.value),S=0,Z={};for(let R=0;R<U.length;R++){S+=1;let y=U[R].vars.split(","),N=U[R].vals.split(" ").map(w=>Number(w));a.value.push(S);for(let w=0;w<y.length;w++){let Q=y[w],C=N[w];Z[Q]||(Z[Q]=[]),Z[Q].push([S,C])}}console.log(Z);for(let R in Z)l.value.push({name:R,type:"scatter",data:Z[R],itemStyle:{}});n.setOption({legend:{data:Object.keys(Z)},xAxis:{data:a.value},series:l.value})},p=(b,U)=>{console.log("散点图曲线数据1:",U),h.value=U,l.value=[],a.value=[],o.value=b,r.value=U;for(let Z=0;Z<r.value.length;Z++)a.value.push(Z);for(let Z=0;Z<o.value.length;Z++){const R=o.value[Z].prop,y=o.value[Z].label;let N=[];for(let w=0;w<r.value.length;w++){let Q=r.value[w][R];N.push([a.value[w],Q])}l.value.push({name:y,type:"scatter",data:N})}ll(d.value).setOption({legend:{data:o.value.map(Z=>Z.label)},xAxis:{type:"category",data:a.value},yAxis:{type:"value"},series:l.value}),console.log("初始化后的 series:",l.value)},g=(b,U,S,Z)=>{console.log("散点图曲线数据1:",Z),h.value=Z,l.value=[],a.value=[];const R=X([]);o.value=S,r.value=Z,console.log("listcbval",b),console.log("listcbval2",U);const y=b,N=U;if(console.log("xColumns",y),console.log("yColumns",N),y.length===0||N.length===0){console.error("请先选择 X 轴和 Y 轴的变量");return}for(let Q=0;Q<r.value.length;Q++){let C=[],v=[];for(let Y of y){let J=r.value[Q][Y];C.push(J)}for(let Y of N){let J=r.value[Q][Y];v.push(J)}a.value.push(C),R.value.push(v)}for(let Q=0;Q<N.length;Q++){const C=N[Q];let v=[];for(let Y=0;Y<r.value.length;Y++){let J=a.value[Y],k=R.value[Y][Q];for(let E of J)v.push([E,k])}l.value.push({name:C,type:"scatter",data:v})}ll(d.value).setOption({legend:{data:N},xAxis:{type:"value",data:a.value,scale:!0},yAxis:{type:"value"},series:l.value}),console.log("初始化后的 series:",l.value)},f=async()=>{i.value={title:{text:"",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Microsoft YaHei"}},legend:{show:!0,data:o.value,orient:"vertical",right:"0%",top:"2%",itemWidth:30,pageButtonItemGap:10,pageButtonPosition:"end",type:"scroll"},grid:{show:!1,left:"5%",right:"14%",bottom:"15%",containLabel:!0},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#FFF"}},xAxis:[{type:"value",boundaryGap:!1,name:"",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",data:a.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],yAxis:{type:"value",name:" ",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",axisTick:{show:!0},splitLine:{show:!0},axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}}},series:l.value},i.value&&n.setOption(i.value),window.onresize=function(){n.resize()}};return e({getsockechart:m,getshuju:p,echatinit:u,selectshuju:g}),(b,U)=>(he(),$e("div",ZGe,[re("div",SGe,[re("div",{id:"linesan",ref_key:"chartContainer",ref:d,style:{width:"100%",height:"100%"}},null,512)])]))}},RGe={style:{width:"100%",height:"100%"}},VGe={class:"echartitem",style:{width:"100%",height:"100%"}},WGe={__name:"radar",props:{radarshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=X([]),o=X([]),r=X([]),l=X([]),a=X(null);X();let d=X(null),c=X([]),h=X(""),u;X([]);let m=X([]);$F({instance:null}),ul(()=>{var b=document.getElementById("radar");i=ll(b),f()}),Rd(()=>t.radarshow,b=>{b&&Es(()=>{const U=a.value;U&&(i=ll(U),i.resize(),f())})},{immediate:!0});const p=()=>{c.value=[],r.value=[],l.value=[],m.value=[]},g=b=>{h.value=b,c.value=[],r.value=[],l.value=[];let U=JSON.parse(h.value),S=0;for(let Z=0;Z<U.length;Z++){S+=1,n.value=U[Z].vars.split(","),o.value=U[Z].vals.split(" ");let R=o.value.map(y=>Number(y));c.value.push(R),l.value.push(S)}console.log(c.value);for(let Z=0;Z<n.value.length;Z++){let R=c.value.map(N=>N[Z]),y={name:n.value[Z],type:"radar",areaStyle:{},data:[{value:R,name:n.value[Z]}]};r.value.push(y)}for(let Z=0;Z<l.value.length;Z++){let R={name:Z,max:u};m.value.push(R)}i.setOption({legend:{left:"center",data:n.value},radar:{indicator:m.value},series:r.value})},f=()=>{d.value={title:{text:"雷达图"},tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}}},radar:{indicator:m.value},series:r.value},d.value&&i.setOption(d.value)};return e({getsockechart:g,echatinit:p}),(b,U)=>(he(),$e("div",RGe,[re("div",VGe,[re("div",{id:"radar",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},yGe={style:{width:"100%",height:"100%"}},QGe={class:"echartitem",style:{width:"100%",height:"100%"}},MGe={__name:"pie",props:{pieshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=X([]),o=X([]),r=X([]),l=X([]),a=X(null);X();let d=X(null),c=X([]),h=X("");$F({instance:null}),ul(()=>{Es(()=>{console.log("onMounted called");const g=document.getElementById("pie");console.log("chartDom:",g),g&&(i=ll(g),i.resize(),p())})}),Rd(()=>t.pieshow,g=>{g&&Es(()=>{const f=a.value;f&&(i=ll(f),i.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],r.value=[],l.value=[]},m=g=>{h.value=g,c.value=[],r.value=[],l.value=[];let f=JSON.parse(h.value),b=0;for(let Z=0;Z<f.length;Z++){b+=1,n.value=f[Z].vars.split(","),o.value=f[Z].vals.split(" ");let R=o.value.map(y=>Number(y));c.value.push(R),l.value.push(b)}let U=[],S=[];for(let Z=0;Z<n.value.length;Z++){let y=c.value.map(N=>N[Z]).reduce((N,w)=>N+w,0);U.push({name:n.value[Z],type:"pie",radius:"50%",data:[{value:y,name:n.value[Z]}]}),S.push(n.value[Z])}i.setOption({legend:{data:S},series:U})},p=()=>{d.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Microsoft YaHei"}},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:"5%",right:"4%",bottom:"10%",containLabel:!0},legend:{data:n.value,orient:"vertical",right:"4%",top:"2%"},xAxis:{type:"category",data:l.value,axisLine:{show:!1},axisLabel:{show:!1},axisTick:{show:!1},splitLine:{show:!1}},yAxis:{type:"value"},series:r.value},d.value&&i.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,f)=>(he(),$e("div",yGe,[re("div",QGe,[re("div",{id:"pie",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},wGe={style:{width:"100%",height:"100%"}},TGe={class:"echartitem",style:{width:"100%",height:"100%"}},CGe={__name:"pareto",props:{paretoshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s,i=X({});let n,o=X(["变量1","变量2"]);X([]);let r=X([{name:"变量1",type:"scatter",data:[10,20,30,40]},{name:"变量2",type:"scatter",data:[20,10,40,30]}]),l=X(["-0.25","0.00","0.25","0.50","0.75","1.00"]),a=X(null);X();let d=X([]),c=X("");ul(()=>{Es(()=>{console.log("onMounted called");const p=document.getElementById("pareto");console.log("chartDom:",p),p&&(n=ll(p),n.resize(),m())})}),Rd(()=>t.paretoshow,p=>{p&&Es(()=>{const g=a.value;g&&(n=ll(g),n.resize(),m())})},{immediate:!0});const h=()=>{d.value=[],r.value=[],l.value=[]},u=p=>{c.value=p,d.value=[],r.value=[],l.value=[];let g=JSON.parse(c.value),f=0,b={};for(let U=0;U<g.length;U++){f+=1;let S=g[U].vars.split(","),Z=g[U].vals.split(" ").map(R=>Number(R));l.value.push(f);for(let R=0;R<S.length;R++){let y=S[R],N=Z[R];b[y]||(b[y]=[]),b[y].push([f,N])}}console.log(b);for(let U in b)r.value.push({name:U,type:"scatter",data:b[U],itemStyle:{}});n.setOption({legend:{data:Object.keys(b)},xAxis:{data:l.value},series:r.value})},m=async()=>{i.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Microsoft YaHei"}},legend:{show:!0,data:o.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"5%",right:"4%",bottom:"15%",containLabel:!0},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#FFF"}},xAxis:[{type:"category",boundaryGap:!1,name:"cd",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",data:l.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],yAxis:{type:"value",name:"-cl",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Microsoft YaHei"},nameLocation:"middle",axisTick:{show:!0},splitLine:{show:!0},axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}}},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"slider",xAxisIndex:[0]}],series:r.value},i.value&&n.setOption(i.value),window.onresize=function(){n.resize()}};return e({getsockechart:u,echatinit:h}),(p,g)=>(he(),$e("div",wGe,[re("div",TGe,[re("div",{id:"pareto",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},BGe={class:"XFpdding"},LGe={class:"numberinput lefttext dlheight"},vGe={style:{display:"flex"}},kGe=re("span",{style:{"margin-right":"8px"}},"初始",-1),xGe=re("span",{style:{"margin-right":"8px"}},"最大",-1),Sde={__name:"Doptimize",setup(s,{expose:e}){X(100);let t=X(180),i=X({algorithm:"SurroOpt",iout:19,proscount:"1",irestart:"0",ndoe:"0",ns:10,nsmax:100,nslf:20,nsmaxlf:200,nsmk:10,nsmaxmk:100,xtol:1e-8,feasibilitytolreal:-1e-6,feasibilitytolsurro:-1e-6,surromod:"Kriging",corr:"0",consttheta:"1",porder:"0",dcmp:"0",paraopt:"1",regular:"0",infill:"11",nparallel:1,iopt:"0",icstr:"0",ipopsize:50,maxgen:100,pc:.9,pm:.05}),n=X(),o=X(),r=X();X("");let l=X([{label:"SurroOpt",value:"SurroOpt"}]),a=X([{label:"是",value:"1"},{label:"否",value:"0"}]),d=X([{label:"拉丁超立方LHS",value:"0"},{label:"均匀设计UD",value:"1"},{label:"蒙特卡洛MCD",value:"2"}]),c=X("310"),h=X("1"),u=X([{label:"Kriging",value:"Kriging"},{label:"GEK",value:"GEK"},{label:"Co-Kriging",value:"Co-Kriging"},{label:"HK",value:"HK"},{label:"MHK",value:"MHK"}]),m=X([{label:"各向异性高斯指数函数",value:"0"},{label:"各向同性高斯指数函数",value:"1"},{label:"三次样条函数",value:"2"}]),p=X([{label:"不优化",value:"1"},{label:"随机初值优化",value:"0"},{label:"上一轮建模数据作为初值优化",value:"-1"}]),g=X([{label:"普通Kriging",value:"0"},{label:"泛Kriging",value:"1"}]),f=X([{label:"LU分解",value:"0"},{label:"Cholesky分解",value:"2"},{label:"第三方库并行分解",value:"3"}]),b=X([{label:"HookeJeeves",value:"1"},{label:"BFGS",value:"2"},{label:"单纯形搜索方法",value:"3"}]),U=X([{label:"不进行正则化",value:"0"},{label:"常数正则化",value:"1"},{label:"优化正则化",value:"2"}]),S=X([{label:"EI+MSP",value:"11"},{label:"局部EI",value:"-1"},{label:"EI",value:"1"},{label:"MSP",value:"2"},{label:"LCB",value:"3"},{label:"PI",value:"4"},{label:"MSE",value:"5"},{label:"MSP+MSE",value:"12"}]),Z=X([{label:"当前最优+局部优化",value:"0"},{label:"当前最优+局部优化+GA",value:"1"}]),R=X([{label:"概率相乘法",value:"0"}]);const y=C=>{C==="Kriging"?(c.value="310",h.value="1"):C==="GEK"?(c.value="310",h.value="2"):C==="Co-Kriging"?(c.value="410",h.value="1"):(C==="HK"||C==="MHK")&&(c.value="4",h.value="12")},N=(C,v)=>{n.value=C,o.value=v;const Y={transCode:"MDO0031",pid:n.value,wid:o.value};Dn(Y).then(J=>{console.log("chushihua"),J.hasOwnProperty("suid")&&w(J)}).catch(J=>{vi.error(J.returnMsg)})},w=C=>{n.value=C.pid,r.value=C.suid,i.value.algorithm=C.algorithm,i.value.iout=C.iout,i.value.irestart=C.irestart,i.value.ndoe=C.ndoe,i.value.ns=C.ns,i.value.nsmax=C.nsmax,i.value.nslf=C.nslf,i.value.nsmaxlf=C.nsmaxlf,i.value.nsmk=C.nsmk,i.value.nsmaxmk=C.nsmaxmk,i.value.xtol=C.xtol,i.value.feasibilitytolreal=C.feasibilitytolreal,i.value.feasibilitytolsurro=C.feasibilitytolsurro,i.value.surromod=C.surromod,i.value.corr=C.corr,i.value.consttheta=C.consttheta,i.value.porder=C.porder,i.value.dcmp=C.dcmp,i.value.paraopt=C.paraopt,i.value.regular=C.regular,i.value.infill=C.infill,i.value.nparallel=C.nparallel,i.value.iopt=C.iopt,i.value.icstr=C.icstr,i.value.ipopsize=C.ipopsize,i.value.maxgen=C.maxgen,i.value.pc=C.pc,i.value.pm=C.pm};return e({getDoptimize:N,getDoptimizeAssign:w,getaddDsave:(C,v)=>{v&&(o.value=v),n.value=C;const Y={transCode:"MDO0032",pid:n.value,wid:o.value,suid:r.value,nsurro:c.value,nkriging:h.value,algorithm:i.value.algorithm,iout:i.value.iout,irestart:i.value.irestart,ndoe:i.value.ndoe,ns:i.value.ns,nsmax:i.value.nsmax,nslf:i.value.nslf,nsmaxlf:i.value.nsmaxlf,nsmk:i.value.nsmk,nsmaxmk:i.value.nsmaxmk,xtol:i.value.xtol,feasibilitytolreal:i.value.feasibilitytolreal,feasibilitytolsurro:i.value.feasibilitytolsurro,surromod:i.value.surromod,corr:i.value.corr,consttheta:i.value.consttheta,porder:i.value.porder,dcmp:i.value.dcmp,paraopt:i.value.paraopt,regular:i.value.regular,infill:i.value.infill,nparallel:i.value.nparallel,iopt:i.value.iopt,icstr:i.value.icstr,ipopsize:i.value.ipopsize,maxgen:i.value.maxgen,pc:i.value.pc,pm:i.value.pm,checked:1};Dn(Y).then(J=>{vi({message:"保存成功",type:"success"})}).catch(J=>{vi.error("保存失败")})}}),(C,v)=>{const Y=At("el-option"),J=At("el-form-item"),k=At("el-input");return he(),$e("div",BGe,[re("div",LGe,[M(J,{label:"优化算法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).algorithm,"onUpdate:modelValue":v[0]||(v[0]=E=>W(i).algorithm=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(l),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"续算开关:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).irestart,"onUpdate:modelValue":v[1]||(v[1]=E=>W(i).irestart=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(a),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"试验设计方法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).ndoe,"onUpdate:modelValue":v[2]||(v[2]=E=>W(i).ndoe=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(d),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"选择代理模型:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).surromod,"onUpdate:modelValue":v[3]||(v[3]=E=>W(i).surromod=E),"suffix-icon":W(Ln),placeholder:"请选择",onChange:y},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(u),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"样本点数:","label-width":W(t)},{default:B(()=>[re("div",vGe,[M(k,{type:"text",style:{"margin-right":"10px"},modelValue:W(i).ns,"onUpdate:modelValue":v[4]||(v[4]=E=>W(i).ns=E)},{prefix:B(()=>[kGe]),_:1},8,["modelValue"]),M(k,{type:"text",style:{"margin-right":"10px"},modelValue:W(i).nsmax,"onUpdate:modelValue":v[5]||(v[5]=E=>W(i).nsmax=E)},{prefix:B(()=>[xGe]),_:1},8,["modelValue"])])]),_:1},8,["label-width"]),M(J,{label:"优化进程数:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).proscount,"onUpdate:modelValue":v[6]||(v[6]=E=>W(i).proscount=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"最优解收敛性容差:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).xtol,"onUpdate:modelValue":v[7]||(v[7]=E=>W(i).xtol=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"真实函数约束容差:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).feasibilitytolreal,"onUpdate:modelValue":v[8]||(v[8]=E=>W(i).feasibilitytolreal=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"代理模型约束容差:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).feasibilitytolsurro,"onUpdate:modelValue":v[9]||(v[9]=E=>W(i).feasibilitytolsurro=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"相关函数:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).corr,"onUpdate:modelValue":v[10]||(v[10]=E=>W(i).corr=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(m),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"是否优化超参数:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).consttheta,"onUpdate:modelValue":v[11]||(v[11]=E=>W(i).consttheta=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(p),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"Kriging模型阶数:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).porder,"onUpdate:modelValue":v[12]||(v[12]=E=>W(i).porder=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(g),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"相关矩阵分解法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).dcmp,"onUpdate:modelValue":v[13]||(v[13]=E=>W(i).dcmp=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(f),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"超参数优化算法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).paraopt,"onUpdate:modelValue":v[14]||(v[14]=E=>W(i).paraopt=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(b),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"正则化方法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).regular,"onUpdate:modelValue":v[15]||(v[15]=E=>W(i).regular=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(U),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"加点准则:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).infill,"onUpdate:modelValue":v[16]||(v[16]=E=>W(i).infill=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(S),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"KB加点数量:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).nparallel,"onUpdate:modelValue":v[17]||(v[17]=E=>W(i).nparallel=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"子优化方法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).iopt,"onUpdate:modelValue":v[18]||(v[18]=E=>W(i).iopt=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Z),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"约束处理方法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).icstr,"onUpdate:modelValue":v[19]||(v[19]=E=>W(i).icstr=E),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(R),E=>(he(),It(Y,{key:E.value,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"种群规模:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).ipopsize,"onUpdate:modelValue":v[20]||(v[20]=E=>W(i).ipopsize=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"最大进化代数:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).maxgen,"onUpdate:modelValue":v[21]||(v[21]=E=>W(i).maxgen=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"交叉概率:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).pc,"onUpdate:modelValue":v[22]||(v[22]=E=>W(i).pc=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"变异概率:","label-width":W(t)},{default:B(()=>[M(k,{modelValue:W(i).pm,"onUpdate:modelValue":v[23]||(v[23]=E=>W(i).pm=E),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])])])}}},IGe={class:"XFpdding"},EGe={class:"numberinput lefttext"},Nde={__name:"Joptimize",setup(s,{expose:e}){X(100);let t=X(170);X(200);let i=X({algorithm:"nsga2",popsize:100,epoch:100,probcrossover:.1,probmut:.1,proboperator:"SBX交叉",probscale:1,strategy:"最佳保留优选策略",operator:"倒立变异",gpu:"NO"}),n=X(),o=X(),r=X();X("");let l=X([{label:"nsga2",value:"nsga2"},{label:"GA",value:"GA"},{label:"PSO",value:"PSO"}]),a=X([{label:"SBX交叉",value:"SBX交叉"}]);X("GA");let d=X([{label:"最佳保留优选策略",value:"最佳保留优选策略"}]),c=X([{label:"倒立变异",value:"倒立变异"}]);X([{label:"1e-7",value:"1e-7"}]);let h=X([{label:"YES",value:"YES"},{label:"NO",value:"NO"}]);const u=(g,f)=>{n.value=g,o.value=f;const b={transCode:"MDO0018",pid:n.value,wid:o.value};Dn(b).then(U=>{U.hasOwnProperty("eid")&&m(U)}).catch(U=>{vi.error(U.returnMsg)})},m=g=>{n.value=g.pid,r.value=g.eid,i.value.algorithm=g.algorithm,i.value.popsize=Number(g.popsize),i.value.epoch=Number(g.epoch),i.value.probcrossover=Number(g.probcrossover),i.value.probmut=Number(g.probmut),i.value.probscale=Number(g.probscale),i.value.proboperator=g.proboperator,i.value.strategy=g.strategy,i.value.operator=g.operator,i.value.gpu=g.gpu};return e({getoptimize:u,getoptimizeAssign:m,getaddsave:(g,f)=>{f&&(o.value=f),n.value=g;const b={transCode:"MDO0019",pid:n.value,wid:o.value,eid:r.value,algorithm:i.value.algorithm,popsize:i.value.popsize,epoch:i.value.epoch,probcrossover:i.value.probcrossover,probmut:i.value.probmut,proboperator:i.value.proboperator,probscale:i.value.probscale,strategy:i.value.strategy,operator:i.value.operator,gpu:i.value.gpu,checked:1};Dn(b).then(U=>{vi({message:"保存成功",type:"success"})}).catch(U=>{vi.error("保存失败")})}}),(g,f)=>{const b=At("el-option"),U=At("el-form-item"),S=At("el-input-number"),Z=At("el-form");return he(),$e("div",IGe,[re("div",EGe,[M(Z,null,{default:B(()=>[M(U,{label:"优化算法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).algorithm,"onUpdate:modelValue":f[0]||(f[0]=R=>W(i).algorithm=R),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(l),R=>(he(),It(b,{key:R.value,label:R.label,value:R.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(U,{label:"种群规模:","label-width":W(t)},{default:B(()=>[M(S,{modelValue:W(i).popsize,"onUpdate:modelValue":f[1]||(f[1]=R=>W(i).popsize=R),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(U,{label:"最大进化次数:","label-width":W(t)},{default:B(()=>[M(S,{modelValue:W(i).epoch,"onUpdate:modelValue":f[2]||(f[2]=R=>W(i).epoch=R),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(U,{label:"交叉概率:","label-width":W(t)},{default:B(()=>[M(S,{modelValue:W(i).probcrossover,"onUpdate:modelValue":f[3]||(f[3]=R=>W(i).probcrossover=R),step:.1,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(U,{label:"变异概率:","label-width":W(t)},{default:B(()=>[M(S,{modelValue:W(i).probmut,"onUpdate:modelValue":f[4]||(f[4]=R=>W(i).probmut=R),step:.1,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(U,{label:"交叉算子:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).proboperator,"onUpdate:modelValue":f[5]||(f[5]=R=>W(i).proboperator=R),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(a),R=>(he(),It(b,{key:R.value,label:R.label,value:R.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(U,{label:"竞赛规模:","label-width":W(t)},{default:B(()=>[M(S,{modelValue:W(i).probscale,"onUpdate:modelValue":f[6]||(f[6]=R=>W(i).probscale=R),min:0,max:100,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(U,{label:"保留优选策略:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).strategy,"onUpdate:modelValue":f[7]||(f[7]=R=>W(i).strategy=R),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(d),R=>(he(),It(b,{key:R.value,label:R.label,value:R.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(U,{label:"变异算子选择:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).operator,"onUpdate:modelValue":f[8]||(f[8]=R=>W(i).operator=R),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(c),R=>(he(),It(b,{key:R.value,label:R.label,value:R.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(U,{label:"GPU加速:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).gpu,"onUpdate:modelValue":f[9]||(f[9]=R=>W(i).gpu=R),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(h),R=>(he(),It(b,{key:R.value,label:R.label,value:R.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])])}}},DGe={class:"XFpdding"},GGe={class:"numberinput lefttext"},Rde={__name:"Toptimize",setup(s,{expose:e}){X(100);let t=X(170);X(200);let i=X({algorithm:"SQP",majoriterationslimit:100,majorprintlevel:10,linearfeasibilitytolerance:1e-6,nonlinearfeasibilitytolerance:1e-6,optimalitytolerance:1e-4,verifylevel:"-1"}),n=X(),o=X(),r=X();X("");let l=X([{label:"SQP",value:"SQP"}]),a=X([{label:"不验证",value:"-1"},{label:"简单验证",value:"0"},{label:"目标详细验证",value:"1"},{label:"约束详细验证",value:"2"},{label:"目标+约束详细验证",value:"3"}]);const d=(u,m)=>{n.value=u,o.value=m;const p={transCode:"MDO0033",pid:n.value,wid:o.value};Dn(p).then(g=>{g.hasOwnProperty("grid")&&c(g)}).catch(g=>{vi.error(g.returnMsg)})},c=u=>{r.value=u.grid,i.value.algorithm=u.algorithm,i.value.majoriterationslimit=u.majoriterationslimit,i.value.majorprintlevel=u.majorprintlevel,i.value.linearfeasibilitytolerance=u.linearfeasibilitytolerance,i.value.nonlinearfeasibilitytolerance=u.nonlinearfeasibilitytolerance,i.value.optimalitytolerance=u.optimalitytolerance,i.value.verifylevel=u.verifylevel};return e({getToptimize:d,getToptimizeAssign:c,getaddTsave:(u,m)=>{m&&(o.value=m),n.value=u;const p={transCode:"MDO0034",pid:n.value,wid:o.value,grid:r.value,algorithm:i.value.algorithm,majoriterationslimit:i.value.majoriterationslimit,majorprintlevel:i.value.majorprintlevel,linearfeasibilitytolerance:i.value.linearfeasibilitytolerance,nonlinearfeasibilitytolerance:i.value.nonlinearfeasibilitytolerance,optimalitytolerance:i.value.optimalitytolerance,verifylevel:i.value.verifylevel,checked:1};Dn(p).then(g=>{n.value=g.pid,vi({message:"保存成功",type:"success"})}).catch(g=>{vi.error("保存失败")})}}),(u,m)=>{const p=At("el-option"),g=At("el-form-item"),f=At("el-input"),b=At("el-form");return he(),$e("div",DGe,[re("div",GGe,[M(b,null,{default:B(()=>[M(g,{label:"优化算法:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).algorithm,"onUpdate:modelValue":m[0]||(m[0]=U=>W(i).algorithm=U),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(l),U=>(he(),It(p,{key:U.value,label:U.label,value:U.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(g,{label:"最大外迭代步数:","label-width":W(t)},{default:B(()=>[M(f,{modelValue:W(i).majoriterationslimit,"onUpdate:modelValue":m[1]||(m[1]=U=>W(i).majoriterationslimit=U),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(g,{label:"输出精度等级:","label-width":W(t)},{default:B(()=>[M(f,{modelValue:W(i).majorprintlevel,"onUpdate:modelValue":m[2]||(m[2]=U=>W(i).majorprintlevel=U),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(g,{label:"线性约束容差:","label-width":W(t)},{default:B(()=>[M(f,{modelValue:W(i).linearfeasibilitytolerance,"onUpdate:modelValue":m[3]||(m[3]=U=>W(i).linearfeasibilitytolerance=U),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(g,{label:"非线性约束容差:","label-width":W(t)},{default:B(()=>[M(f,{modelValue:W(i).nonlinearfeasibilitytolerance,"onUpdate:modelValue":m[4]||(m[4]=U=>W(i).nonlinearfeasibilitytolerance=U),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(g,{label:"最优性度量容差:","label-width":W(t)},{default:B(()=>[M(f,{modelValue:W(i).optimalitytolerance,"onUpdate:modelValue":m[5]||(m[5]=U=>W(i).optimalitytolerance=U),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(g,{label:"梯度验证级别:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(i).verifylevel,"onUpdate:modelValue":m[6]||(m[6]=U=>W(i).verifylevel=U),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(a),U=>(he(),It(p,{key:U.value,label:U.label,value:U.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])])}}};var pAe={exports:{}};/*!
- * jQuery JavaScript Library v3.7.1
- * https://jquery.com/
- *
- * Copyright OpenJS Foundation and other contributors
- * Released under the MIT license
- * https://jquery.org/license
- *
- * Date: 2023-08-28T13:37Z
- */(function(s){(function(e,t){s.exports=e.document?t(e,!0):function(i){if(!i.document)throw new Error("jQuery requires a window with a document");return t(i)}})(typeof window<"u"?window:K2e,function(e,t){var i=[],n=Object.getPrototypeOf,o=i.slice,r=i.flat?function(V){return i.flat.call(V)}:function(V){return i.concat.apply([],V)},l=i.push,a=i.indexOf,d={},c=d.toString,h=d.hasOwnProperty,u=h.toString,m=u.call(Object),p={},g=function(T){return typeof T=="function"&&typeof T.nodeType!="number"&&typeof T.item!="function"},f=function(T){return T!=null&&T===T.window},b=e.document,U={type:!0,src:!0,nonce:!0,noModule:!0};function S(V,T,L){L=L||b;var G,P,H=L.createElement("script");if(H.text=V,T)for(G in U)P=T[G]||T.getAttribute&&T.getAttribute(G),P&&H.setAttribute(G,P);L.head.appendChild(H).parentNode.removeChild(H)}function Z(V){return V==null?V+"":typeof V=="object"||typeof V=="function"?d[c.call(V)]||"object":typeof V}var R="3.7.1",y=/HTML$/i,N=function(V,T){return new N.fn.init(V,T)};N.fn=N.prototype={jquery:R,constructor:N,length:0,toArray:function(){return o.call(this)},get:function(V){return V==null?o.call(this):V<0?this[V+this.length]:this[V]},pushStack:function(V){var T=N.merge(this.constructor(),V);return T.prevObject=this,T},each:function(V){return N.each(this,V)},map:function(V){return this.pushStack(N.map(this,function(T,L){return V.call(T,L,T)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(N.grep(this,function(V,T){return(T+1)%2}))},odd:function(){return this.pushStack(N.grep(this,function(V,T){return T%2}))},eq:function(V){var T=this.length,L=+V+(V<0?T:0);return this.pushStack(L>=0&&L<T?[this[L]]:[])},end:function(){return this.prevObject||this.constructor()},push:l,sort:i.sort,splice:i.splice},N.extend=N.fn.extend=function(){var V,T,L,G,P,H,se=arguments[0]||{},ye=1,Ze=arguments.length,_e=!1;for(typeof se=="boolean"&&(_e=se,se=arguments[ye]||{},ye++),typeof se!="object"&&!g(se)&&(se={}),ye===Ze&&(se=this,ye--);ye<Ze;ye++)if((V=arguments[ye])!=null)for(T in V)G=V[T],!(T==="__proto__"||se===G)&&(_e&&G&&(N.isPlainObject(G)||(P=Array.isArray(G)))?(L=se[T],P&&!Array.isArray(L)?H=[]:!P&&!N.isPlainObject(L)?H={}:H=L,P=!1,se[T]=N.extend(_e,H,G)):G!==void 0&&(se[T]=G));return se},N.extend({expando:"jQuery"+(R+Math.random()).replace(/\D/g,""),isReady:!0,error:function(V){throw new Error(V)},noop:function(){},isPlainObject:function(V){var T,L;return!V||c.call(V)!=="[object Object]"?!1:(T=n(V),T?(L=h.call(T,"constructor")&&T.constructor,typeof L=="function"&&u.call(L)===m):!0)},isEmptyObject:function(V){var T;for(T in V)return!1;return!0},globalEval:function(V,T,L){S(V,{nonce:T&&T.nonce},L)},each:function(V,T){var L,G=0;if(w(V))for(L=V.length;G<L&&T.call(V[G],G,V[G])!==!1;G++);else for(G in V)if(T.call(V[G],G,V[G])===!1)break;return V},text:function(V){var T,L="",G=0,P=V.nodeType;if(!P)for(;T=V[G++];)L+=N.text(T);return P===1||P===11?V.textContent:P===9?V.documentElement.textContent:P===3||P===4?V.nodeValue:L},makeArray:function(V,T){var L=T||[];return V!=null&&(w(Object(V))?N.merge(L,typeof V=="string"?[V]:V):l.call(L,V)),L},inArray:function(V,T,L){return T==null?-1:a.call(T,V,L)},isXMLDoc:function(V){var T=V&&V.namespaceURI,L=V&&(V.ownerDocument||V).documentElement;return!y.test(T||L&&L.nodeName||"HTML")},merge:function(V,T){for(var L=+T.length,G=0,P=V.length;G<L;G++)V[P++]=T[G];return V.length=P,V},grep:function(V,T,L){for(var G,P=[],H=0,se=V.length,ye=!L;H<se;H++)G=!T(V[H],H),G!==ye&&P.push(V[H]);return P},map:function(V,T,L){var G,P,H=0,se=[];if(w(V))for(G=V.length;H<G;H++)P=T(V[H],H,L),P!=null&&se.push(P);else for(H in V)P=T(V[H],H,L),P!=null&&se.push(P);return r(se)},guid:1,support:p}),typeof Symbol=="function"&&(N.fn[Symbol.iterator]=i[Symbol.iterator]),N.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(V,T){d["[object "+T+"]"]=T.toLowerCase()});function w(V){var T=!!V&&"length"in V&&V.length,L=Z(V);return g(V)||f(V)?!1:L==="array"||T===0||typeof T=="number"&&T>0&&T-1 in V}function Q(V,T){return V.nodeName&&V.nodeName.toLowerCase()===T.toLowerCase()}var C=i.pop,v=i.sort,Y=i.splice,J="[\\x20\\t\\r\\n\\f]",k=new RegExp("^"+J+"+|((?:^|[^\\\\])(?:\\\\.)*)"+J+"+$","g");N.contains=function(V,T){var L=T&&T.parentNode;return V===L||!!(L&&L.nodeType===1&&(V.contains?V.contains(L):V.compareDocumentPosition&&V.compareDocumentPosition(L)&16))};var E=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function K(V,T){return T?V==="\0"?"�":V.slice(0,-1)+"\\"+V.charCodeAt(V.length-1).toString(16)+" ":"\\"+V}N.escapeSelector=function(V){return(V+"").replace(E,K)};var de=b,ee=l;(function(){var V,T,L,G,P,H=ee,se,ye,Ze,_e,Rt,Bt=N.expando,ht=0,qt=0,Jn=pA(),Bs=pA(),ss=pA(),pl=pA(),Hr=function(ue,Ce){return ue===Ce&&(P=!0),0},ou="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ph="(?:\\\\[\\da-fA-F]{1,6}"+J+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",Ss="\\["+J+"*("+ph+")(?:"+J+"*([*^$|!~]?=)"+J+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+ph+"))|)"+J+"*\\]",r0=":("+ph+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Ss+")*)|.*)\\)|)",xs=new RegExp(J+"+","g"),gr=new RegExp("^"+J+"*,"+J+"*"),gb=new RegExp("^"+J+"*([>+~]|"+J+")"+J+"*"),jM=new RegExp(J+"|>"),gh=new RegExp(r0),mA=new RegExp("^"+ph+"$"),ru={ID:new RegExp("^#("+ph+")"),CLASS:new RegExp("^\\.("+ph+")"),TAG:new RegExp("^("+ph+"|[*])"),ATTR:new RegExp("^"+Ss),PSEUDO:new RegExp("^"+r0),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+J+"*(even|odd|(([+-]|)(\\d*)n|)"+J+"*(?:([+-]|)"+J+"*(\\d+)|))"+J+"*\\)|)","i"),bool:new RegExp("^(?:"+ou+")$","i"),needsContext:new RegExp("^"+J+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+J+"*((?:-\\d)?\\d*)"+J+"*\\)|)(?=[^-]|$)","i")},hm=/^(?:input|select|textarea|button)$/i,um=/^h\d$/i,xd=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,PM=/[+~]/,mm=new RegExp("\\\\[\\da-fA-F]{1,6}"+J+"?|\\\\([^\\r\\n\\f])","g"),lu=function(ue,Ce){var Xe="0x"+ue.slice(1)-65536;return Ce||(Xe<0?String.fromCharCode(Xe+65536):String.fromCharCode(Xe>>10|55296,Xe&1023|56320))},Ek=function(){Ed()},VO=j(function(ue){return ue.disabled===!0&&Q(ue,"fieldset")},{dir:"parentNode",next:"legend"});function WO(){try{return se.activeElement}catch{}}try{H.apply(i=o.call(de.childNodes),de.childNodes),i[de.childNodes.length].nodeType}catch{H={apply:function(Ce,Xe){ee.apply(Ce,o.call(Xe))},call:function(Ce){ee.apply(Ce,o.call(arguments,1))}}}function co(ue,Ce,Xe,ft){var wt,hi,Wi,Xi,Qi,gs,wn,Yn=Ce&&Ce.ownerDocument,fs=Ce?Ce.nodeType:9;if(Xe=Xe||[],typeof ue!="string"||!ue||fs!==1&&fs!==9&&fs!==11)return Xe;if(!ft&&(Ed(Ce),Ce=Ce||se,Ze)){if(fs!==11&&(Qi=xd.exec(ue)))if(wt=Qi[1]){if(fs===9)if(Wi=Ce.getElementById(wt)){if(Wi.id===wt)return H.call(Xe,Wi),Xe}else return Xe;else if(Yn&&(Wi=Yn.getElementById(wt))&&co.contains(Ce,Wi)&&Wi.id===wt)return H.call(Xe,Wi),Xe}else{if(Qi[2])return H.apply(Xe,Ce.getElementsByTagName(ue)),Xe;if((wt=Qi[3])&&Ce.getElementsByClassName)return H.apply(Xe,Ce.getElementsByClassName(wt)),Xe}if(!pl[ue+" "]&&(!_e||!_e.test(ue))){if(wn=ue,Yn=Ce,fs===1&&(jM.test(ue)||gb.test(ue))){for(Yn=PM.test(ue)&&Id(Ce.parentNode)||Ce,(Yn!=Ce||!p.scope)&&((Xi=Ce.getAttribute("id"))?Xi=N.escapeSelector(Xi):Ce.setAttribute("id",Xi=Bt)),gs=gA(ue),hi=gs.length;hi--;)gs[hi]=(Xi?"#"+Xi:":scope")+" "+rt(gs[hi]);wn=gs.join(",")}try{return H.apply(Xe,Yn.querySelectorAll(wn)),Xe}catch{pl(ue,!0)}finally{Xi===Bt&&Ce.removeAttribute("id")}}}return on(ue.replace(k,"$1"),Ce,Xe,ft)}function pA(){var ue=[];function Ce(Xe,ft){return ue.push(Xe+" ")>T.cacheLength&&delete Ce[ue.shift()],Ce[Xe+" "]=ft}return Ce}function fh(ue){return ue[Bt]=!0,ue}function fb(ue){var Ce=se.createElement("fieldset");try{return!!ue(Ce)}catch{return!1}finally{Ce.parentNode&&Ce.parentNode.removeChild(Ce),Ce=null}}function yO(ue){return function(Ce){return Q(Ce,"input")&&Ce.type===ue}}function QO(ue){return function(Ce){return(Q(Ce,"input")||Q(Ce,"button"))&&Ce.type===ue}}function Dk(ue){return function(Ce){return"form"in Ce?Ce.parentNode&&Ce.disabled===!1?"label"in Ce?"label"in Ce.parentNode?Ce.parentNode.disabled===ue:Ce.disabled===ue:Ce.isDisabled===ue||Ce.isDisabled!==!ue&&VO(Ce)===ue:Ce.disabled===ue:"label"in Ce?Ce.disabled===ue:!1}}function Ll(ue){return fh(function(Ce){return Ce=+Ce,fh(function(Xe,ft){for(var wt,hi=ue([],Xe.length,Ce),Wi=hi.length;Wi--;)Xe[wt=hi[Wi]]&&(Xe[wt]=!(ft[wt]=Xe[wt]))})})}function Id(ue){return ue&&typeof ue.getElementsByTagName<"u"&&ue}function Ed(ue){var Ce,Xe=ue?ue.ownerDocument||ue:de;return Xe==se||Xe.nodeType!==9||!Xe.documentElement||(se=Xe,ye=se.documentElement,Ze=!N.isXMLDoc(se),Rt=ye.matches||ye.webkitMatchesSelector||ye.msMatchesSelector,ye.msMatchesSelector&&de!=se&&(Ce=se.defaultView)&&Ce.top!==Ce&&Ce.addEventListener("unload",Ek),p.getById=fb(function(ft){return ye.appendChild(ft).id=N.expando,!se.getElementsByName||!se.getElementsByName(N.expando).length}),p.disconnectedMatch=fb(function(ft){return Rt.call(ft,"*")}),p.scope=fb(function(){return se.querySelectorAll(":scope")}),p.cssHas=fb(function(){try{return se.querySelector(":has(*,:jqfake)"),!1}catch{return!0}}),p.getById?(T.filter.ID=function(ft){var wt=ft.replace(mm,lu);return function(hi){return hi.getAttribute("id")===wt}},T.find.ID=function(ft,wt){if(typeof wt.getElementById<"u"&&Ze){var hi=wt.getElementById(ft);return hi?[hi]:[]}}):(T.filter.ID=function(ft){var wt=ft.replace(mm,lu);return function(hi){var Wi=typeof hi.getAttributeNode<"u"&&hi.getAttributeNode("id");return Wi&&Wi.value===wt}},T.find.ID=function(ft,wt){if(typeof wt.getElementById<"u"&&Ze){var hi,Wi,Xi,Qi=wt.getElementById(ft);if(Qi){if(hi=Qi.getAttributeNode("id"),hi&&hi.value===ft)return[Qi];for(Xi=wt.getElementsByName(ft),Wi=0;Qi=Xi[Wi++];)if(hi=Qi.getAttributeNode("id"),hi&&hi.value===ft)return[Qi]}return[]}}),T.find.TAG=function(ft,wt){return typeof wt.getElementsByTagName<"u"?wt.getElementsByTagName(ft):wt.querySelectorAll(ft)},T.find.CLASS=function(ft,wt){if(typeof wt.getElementsByClassName<"u"&&Ze)return wt.getElementsByClassName(ft)},_e=[],fb(function(ft){var wt;ye.appendChild(ft).innerHTML="<a id='"+Bt+"' href='' disabled='disabled'></a><select id='"+Bt+"-\r\\' disabled='disabled'><option selected=''></option></select>",ft.querySelectorAll("[selected]").length||_e.push("\\["+J+"*(?:value|"+ou+")"),ft.querySelectorAll("[id~="+Bt+"-]").length||_e.push("~="),ft.querySelectorAll("a#"+Bt+"+*").length||_e.push(".#.+[+~]"),ft.querySelectorAll(":checked").length||_e.push(":checked"),wt=se.createElement("input"),wt.setAttribute("type","hidden"),ft.appendChild(wt).setAttribute("name","D"),ye.appendChild(ft).disabled=!0,ft.querySelectorAll(":disabled").length!==2&&_e.push(":enabled",":disabled"),wt=se.createElement("input"),wt.setAttribute("name",""),ft.appendChild(wt),ft.querySelectorAll("[name='']").length||_e.push("\\["+J+"*name"+J+"*="+J+`*(?:''|"")`)}),p.cssHas||_e.push(":has"),_e=_e.length&&new RegExp(_e.join("|")),Hr=function(ft,wt){if(ft===wt)return P=!0,0;var hi=!ft.compareDocumentPosition-!wt.compareDocumentPosition;return hi||(hi=(ft.ownerDocument||ft)==(wt.ownerDocument||wt)?ft.compareDocumentPosition(wt):1,hi&1||!p.sortDetached&&wt.compareDocumentPosition(ft)===hi?ft===se||ft.ownerDocument==de&&co.contains(de,ft)?-1:wt===se||wt.ownerDocument==de&&co.contains(de,wt)?1:G?a.call(G,ft)-a.call(G,wt):0:hi&4?-1:1)}),se}co.matches=function(ue,Ce){return co(ue,null,null,Ce)},co.matchesSelector=function(ue,Ce){if(Ed(ue),Ze&&!pl[Ce+" "]&&(!_e||!_e.test(Ce)))try{var Xe=Rt.call(ue,Ce);if(Xe||p.disconnectedMatch||ue.document&&ue.document.nodeType!==11)return Xe}catch{pl(Ce,!0)}return co(Ce,se,null,[ue]).length>0},co.contains=function(ue,Ce){return(ue.ownerDocument||ue)!=se&&Ed(ue),N.contains(ue,Ce)},co.attr=function(ue,Ce){(ue.ownerDocument||ue)!=se&&Ed(ue);var Xe=T.attrHandle[Ce.toLowerCase()],ft=Xe&&h.call(T.attrHandle,Ce.toLowerCase())?Xe(ue,Ce,!Ze):void 0;return ft!==void 0?ft:ue.getAttribute(Ce)},co.error=function(ue){throw new Error("Syntax error, unrecognized expression: "+ue)},N.uniqueSort=function(ue){var Ce,Xe=[],ft=0,wt=0;if(P=!p.sortStable,G=!p.sortStable&&o.call(ue,0),v.call(ue,Hr),P){for(;Ce=ue[wt++];)Ce===ue[wt]&&(ft=Xe.push(wt));for(;ft--;)Y.call(ue,Xe[ft],1)}return G=null,ue},N.fn.uniqueSort=function(){return this.pushStack(N.uniqueSort(o.apply(this)))},T=N.expr={cacheLength:50,createPseudo:fh,match:ru,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(ue){return ue[1]=ue[1].replace(mm,lu),ue[3]=(ue[3]||ue[4]||ue[5]||"").replace(mm,lu),ue[2]==="~="&&(ue[3]=" "+ue[3]+" "),ue.slice(0,4)},CHILD:function(ue){return ue[1]=ue[1].toLowerCase(),ue[1].slice(0,3)==="nth"?(ue[3]||co.error(ue[0]),ue[4]=+(ue[4]?ue[5]+(ue[6]||1):2*(ue[3]==="even"||ue[3]==="odd")),ue[5]=+(ue[7]+ue[8]||ue[3]==="odd")):ue[3]&&co.error(ue[0]),ue},PSEUDO:function(ue){var Ce,Xe=!ue[6]&&ue[2];return ru.CHILD.test(ue[0])?null:(ue[3]?ue[2]=ue[4]||ue[5]||"":Xe&&gh.test(Xe)&&(Ce=gA(Xe,!0))&&(Ce=Xe.indexOf(")",Xe.length-Ce)-Xe.length)&&(ue[0]=ue[0].slice(0,Ce),ue[2]=Xe.slice(0,Ce)),ue.slice(0,3))}},filter:{TAG:function(ue){var Ce=ue.replace(mm,lu).toLowerCase();return ue==="*"?function(){return!0}:function(Xe){return Q(Xe,Ce)}},CLASS:function(ue){var Ce=Jn[ue+" "];return Ce||(Ce=new RegExp("(^|"+J+")"+ue+"("+J+"|$)"))&&Jn(ue,function(Xe){return Ce.test(typeof Xe.className=="string"&&Xe.className||typeof Xe.getAttribute<"u"&&Xe.getAttribute("class")||"")})},ATTR:function(ue,Ce,Xe){return function(ft){var wt=co.attr(ft,ue);return wt==null?Ce==="!=":Ce?(wt+="",Ce==="="?wt===Xe:Ce==="!="?wt!==Xe:Ce==="^="?Xe&&wt.indexOf(Xe)===0:Ce==="*="?Xe&&wt.indexOf(Xe)>-1:Ce==="$="?Xe&&wt.slice(-Xe.length)===Xe:Ce==="~="?(" "+wt.replace(xs," ")+" ").indexOf(Xe)>-1:Ce==="|="?wt===Xe||wt.slice(0,Xe.length+1)===Xe+"-":!1):!0}},CHILD:function(ue,Ce,Xe,ft,wt){var hi=ue.slice(0,3)!=="nth",Wi=ue.slice(-4)!=="last",Xi=Ce==="of-type";return ft===1&&wt===0?function(Qi){return!!Qi.parentNode}:function(Qi,gs,wn){var Yn,fs,bn,x,qe,jn=hi!==Wi?"nextSibling":"previousSibling",au=Qi.parentNode,Np=Xi&&Qi.nodeName.toLowerCase(),mR=!wn&&!Xi,Dd=!1;if(au){if(hi){for(;jn;){for(bn=Qi;bn=bn[jn];)if(Xi?Q(bn,Np):bn.nodeType===1)return!1;qe=jn=ue==="only"&&!qe&&"nextSibling"}return!0}if(qe=[Wi?au.firstChild:au.lastChild],Wi&&mR){for(fs=au[Bt]||(au[Bt]={}),Yn=fs[ue]||[],x=Yn[0]===ht&&Yn[1],Dd=x&&Yn[2],bn=x&&au.childNodes[x];bn=++x&&bn&&bn[jn]||(Dd=x=0)||qe.pop();)if(bn.nodeType===1&&++Dd&&bn===Qi){fs[ue]=[ht,x,Dd];break}}else if(mR&&(fs=Qi[Bt]||(Qi[Bt]={}),Yn=fs[ue]||[],x=Yn[0]===ht&&Yn[1],Dd=x),Dd===!1)for(;(bn=++x&&bn&&bn[jn]||(Dd=x=0)||qe.pop())&&!((Xi?Q(bn,Np):bn.nodeType===1)&&++Dd&&(mR&&(fs=bn[Bt]||(bn[Bt]={}),fs[ue]=[ht,Dd]),bn===Qi)););return Dd-=wt,Dd===ft||Dd%ft===0&&Dd/ft>=0}}},PSEUDO:function(ue,Ce){var Xe,ft=T.pseudos[ue]||T.setFilters[ue.toLowerCase()]||co.error("unsupported pseudo: "+ue);return ft[Bt]?ft(Ce):ft.length>1?(Xe=[ue,ue,"",Ce],T.setFilters.hasOwnProperty(ue.toLowerCase())?fh(function(wt,hi){for(var Wi,Xi=ft(wt,Ce),Qi=Xi.length;Qi--;)Wi=a.call(wt,Xi[Qi]),wt[Wi]=!(hi[Wi]=Xi[Qi])}):function(wt){return ft(wt,0,Xe)}):ft}},pseudos:{not:fh(function(ue){var Ce=[],Xe=[],ft=Xn(ue.replace(k,"$1"));return ft[Bt]?fh(function(wt,hi,Wi,Xi){for(var Qi,gs=ft(wt,null,Xi,[]),wn=wt.length;wn--;)(Qi=gs[wn])&&(wt[wn]=!(hi[wn]=Qi))}):function(wt,hi,Wi){return Ce[0]=wt,ft(Ce,null,Wi,Xe),Ce[0]=null,!Xe.pop()}}),has:fh(function(ue){return function(Ce){return co(ue,Ce).length>0}}),contains:fh(function(ue){return ue=ue.replace(mm,lu),function(Ce){return(Ce.textContent||N.text(Ce)).indexOf(ue)>-1}}),lang:fh(function(ue){return mA.test(ue||"")||co.error("unsupported lang: "+ue),ue=ue.replace(mm,lu).toLowerCase(),function(Ce){var Xe;do if(Xe=Ze?Ce.lang:Ce.getAttribute("xml:lang")||Ce.getAttribute("lang"))return Xe=Xe.toLowerCase(),Xe===ue||Xe.indexOf(ue+"-")===0;while((Ce=Ce.parentNode)&&Ce.nodeType===1);return!1}}),target:function(ue){var Ce=e.location&&e.location.hash;return Ce&&Ce.slice(1)===ue.id},root:function(ue){return ue===ye},focus:function(ue){return ue===WO()&&se.hasFocus()&&!!(ue.type||ue.href||~ue.tabIndex)},enabled:Dk(!1),disabled:Dk(!0),checked:function(ue){return Q(ue,"input")&&!!ue.checked||Q(ue,"option")&&!!ue.selected},selected:function(ue){return ue.parentNode&&ue.parentNode.selectedIndex,ue.selected===!0},empty:function(ue){for(ue=ue.firstChild;ue;ue=ue.nextSibling)if(ue.nodeType<6)return!1;return!0},parent:function(ue){return!T.pseudos.empty(ue)},header:function(ue){return um.test(ue.nodeName)},input:function(ue){return hm.test(ue.nodeName)},button:function(ue){return Q(ue,"input")&&ue.type==="button"||Q(ue,"button")},text:function(ue){var Ce;return Q(ue,"input")&&ue.type==="text"&&((Ce=ue.getAttribute("type"))==null||Ce.toLowerCase()==="text")},first:Ll(function(){return[0]}),last:Ll(function(ue,Ce){return[Ce-1]}),eq:Ll(function(ue,Ce,Xe){return[Xe<0?Xe+Ce:Xe]}),even:Ll(function(ue,Ce){for(var Xe=0;Xe<Ce;Xe+=2)ue.push(Xe);return ue}),odd:Ll(function(ue,Ce){for(var Xe=1;Xe<Ce;Xe+=2)ue.push(Xe);return ue}),lt:Ll(function(ue,Ce,Xe){var ft;for(Xe<0?ft=Xe+Ce:Xe>Ce?ft=Ce:ft=Xe;--ft>=0;)ue.push(ft);return ue}),gt:Ll(function(ue,Ce,Xe){for(var ft=Xe<0?Xe+Ce:Xe;++ft<Ce;)ue.push(ft);return ue})}},T.pseudos.nth=T.pseudos.eq;for(V in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[V]=yO(V);for(V in{submit:!0,reset:!0})T.pseudos[V]=QO(V);function Gk(){}Gk.prototype=T.filters=T.pseudos,T.setFilters=new Gk;function gA(ue,Ce){var Xe,ft,wt,hi,Wi,Xi,Qi,gs=Bs[ue+" "];if(gs)return Ce?0:gs.slice(0);for(Wi=ue,Xi=[],Qi=T.preFilter;Wi;){(!Xe||(ft=gr.exec(Wi)))&&(ft&&(Wi=Wi.slice(ft[0].length)||Wi),Xi.push(wt=[])),Xe=!1,(ft=gb.exec(Wi))&&(Xe=ft.shift(),wt.push({value:Xe,type:ft[0].replace(k," ")}),Wi=Wi.slice(Xe.length));for(hi in T.filter)(ft=ru[hi].exec(Wi))&&(!Qi[hi]||(ft=Qi[hi](ft)))&&(Xe=ft.shift(),wt.push({value:Xe,type:hi,matches:ft}),Wi=Wi.slice(Xe.length));if(!Xe)break}return Ce?Wi.length:Wi?co.error(ue):Bs(ue,Xi).slice(0)}function rt(ue){for(var Ce=0,Xe=ue.length,ft="";Ce<Xe;Ce++)ft+=ue[Ce].value;return ft}function j(ue,Ce,Xe){var ft=Ce.dir,wt=Ce.next,hi=wt||ft,Wi=Xe&&hi==="parentNode",Xi=qt++;return Ce.first?function(Qi,gs,wn){for(;Qi=Qi[ft];)if(Qi.nodeType===1||Wi)return ue(Qi,gs,wn);return!1}:function(Qi,gs,wn){var Yn,fs,bn=[ht,Xi];if(wn){for(;Qi=Qi[ft];)if((Qi.nodeType===1||Wi)&&ue(Qi,gs,wn))return!0}else for(;Qi=Qi[ft];)if(Qi.nodeType===1||Wi)if(fs=Qi[Bt]||(Qi[Bt]={}),wt&&Q(Qi,wt))Qi=Qi[ft]||Qi;else{if((Yn=fs[hi])&&Yn[0]===ht&&Yn[1]===Xi)return bn[2]=Yn[2];if(fs[hi]=bn,bn[2]=ue(Qi,gs,wn))return!0}return!1}}function oi(ue){return ue.length>1?function(Ce,Xe,ft){for(var wt=ue.length;wt--;)if(!ue[wt](Ce,Xe,ft))return!1;return!0}:ue[0]}function Bi(ue,Ce,Xe){for(var ft=0,wt=Ce.length;ft<wt;ft++)co(ue,Ce[ft],Xe);return Xe}function pi(ue,Ce,Xe,ft,wt){for(var hi,Wi=[],Xi=0,Qi=ue.length,gs=Ce!=null;Xi<Qi;Xi++)(hi=ue[Xi])&&(!Xe||Xe(hi,ft,wt))&&(Wi.push(hi),gs&&Ce.push(Xi));return Wi}function _i(ue,Ce,Xe,ft,wt,hi){return ft&&!ft[Bt]&&(ft=_i(ft)),wt&&!wt[Bt]&&(wt=_i(wt,hi)),fh(function(Wi,Xi,Qi,gs){var wn,Yn,fs,bn,x=[],qe=[],jn=Xi.length,au=Wi||Bi(Ce||"*",Qi.nodeType?[Qi]:Qi,[]),Np=ue&&(Wi||!Ce)?pi(au,x,ue,Qi,gs):au;if(Xe?(bn=wt||(Wi?ue:jn||ft)?[]:Xi,Xe(Np,bn,Qi,gs)):bn=Np,ft)for(wn=pi(bn,qe),ft(wn,[],Qi,gs),Yn=wn.length;Yn--;)(fs=wn[Yn])&&(bn[qe[Yn]]=!(Np[qe[Yn]]=fs));if(Wi){if(wt||ue){if(wt){for(wn=[],Yn=bn.length;Yn--;)(fs=bn[Yn])&&wn.push(Np[Yn]=fs);wt(null,bn=[],wn,gs)}for(Yn=bn.length;Yn--;)(fs=bn[Yn])&&(wn=wt?a.call(Wi,fs):x[Yn])>-1&&(Wi[wn]=!(Xi[wn]=fs))}}else bn=pi(bn===Xi?bn.splice(jn,bn.length):bn),wt?wt(null,Xi,bn,gs):H.apply(Xi,bn)})}function gi(ue){for(var Ce,Xe,ft,wt=ue.length,hi=T.relative[ue[0].type],Wi=hi||T.relative[" "],Xi=hi?1:0,Qi=j(function(Yn){return Yn===Ce},Wi,!0),gs=j(function(Yn){return a.call(Ce,Yn)>-1},Wi,!0),wn=[function(Yn,fs,bn){var x=!hi&&(bn||fs!=L)||((Ce=fs).nodeType?Qi(Yn,fs,bn):gs(Yn,fs,bn));return Ce=null,x}];Xi<wt;Xi++)if(Xe=T.relative[ue[Xi].type])wn=[j(oi(wn),Xe)];else{if(Xe=T.filter[ue[Xi].type].apply(null,ue[Xi].matches),Xe[Bt]){for(ft=++Xi;ft<wt&&!T.relative[ue[ft].type];ft++);return _i(Xi>1&&oi(wn),Xi>1&&rt(ue.slice(0,Xi-1).concat({value:ue[Xi-2].type===" "?"*":""})).replace(k,"$1"),Xe,Xi<ft&&gi(ue.slice(Xi,ft)),ft<wt&&gi(ue=ue.slice(ft)),ft<wt&&rt(ue))}wn.push(Xe)}return oi(wn)}function Io(ue,Ce){var Xe=Ce.length>0,ft=ue.length>0,wt=function(hi,Wi,Xi,Qi,gs){var wn,Yn,fs,bn=0,x="0",qe=hi&&[],jn=[],au=L,Np=hi||ft&&T.find.TAG("*",gs),mR=ht+=au==null?1:Math.random()||.1,Dd=Np.length;for(gs&&(L=Wi==se||Wi||gs);x!==Dd&&(wn=Np[x])!=null;x++){if(ft&&wn){for(Yn=0,!Wi&&wn.ownerDocument!=se&&(Ed(wn),Xi=!Ze);fs=ue[Yn++];)if(fs(wn,Wi||se,Xi)){H.call(Qi,wn);break}gs&&(ht=mR)}Xe&&((wn=!fs&&wn)&&bn--,hi&&qe.push(wn))}if(bn+=x,Xe&&x!==bn){for(Yn=0;fs=Ce[Yn++];)fs(qe,jn,Wi,Xi);if(hi){if(bn>0)for(;x--;)qe[x]||jn[x]||(jn[x]=C.call(Qi));jn=pi(jn)}H.apply(Qi,jn),gs&&!hi&&jn.length>0&&bn+Ce.length>1&&N.uniqueSort(Qi)}return gs&&(ht=mR,L=au),qe};return Xe?fh(wt):wt}function Xn(ue,Ce){var Xe,ft=[],wt=[],hi=ss[ue+" "];if(!hi){for(Ce||(Ce=gA(ue)),Xe=Ce.length;Xe--;)hi=gi(Ce[Xe]),hi[Bt]?ft.push(hi):wt.push(hi);hi=ss(ue,Io(wt,ft)),hi.selector=ue}return hi}function on(ue,Ce,Xe,ft){var wt,hi,Wi,Xi,Qi,gs=typeof ue=="function"&&ue,wn=!ft&&gA(ue=gs.selector||ue);if(Xe=Xe||[],wn.length===1){if(hi=wn[0]=wn[0].slice(0),hi.length>2&&(Wi=hi[0]).type==="ID"&&Ce.nodeType===9&&Ze&&T.relative[hi[1].type]){if(Ce=(T.find.ID(Wi.matches[0].replace(mm,lu),Ce)||[])[0],Ce)gs&&(Ce=Ce.parentNode);else return Xe;ue=ue.slice(hi.shift().value.length)}for(wt=ru.needsContext.test(ue)?0:hi.length;wt--&&(Wi=hi[wt],!T.relative[Xi=Wi.type]);)if((Qi=T.find[Xi])&&(ft=Qi(Wi.matches[0].replace(mm,lu),PM.test(hi[0].type)&&Id(Ce.parentNode)||Ce))){if(hi.splice(wt,1),ue=ft.length&&rt(hi),!ue)return H.apply(Xe,ft),Xe;break}}return(gs||Xn(ue,wn))(ft,Ce,!Ze,Xe,!Ce||PM.test(ue)&&Id(Ce.parentNode)||Ce),Xe}p.sortStable=Bt.split("").sort(Hr).join("")===Bt,Ed(),p.sortDetached=fb(function(ue){return ue.compareDocumentPosition(se.createElement("fieldset"))&1}),N.find=co,N.expr[":"]=N.expr.pseudos,N.unique=N.uniqueSort,co.compile=Xn,co.select=on,co.setDocument=Ed,co.tokenize=gA,co.escape=N.escapeSelector,co.getText=N.text,co.isXML=N.isXMLDoc,co.selectors=N.expr,co.support=N.support,co.uniqueSort=N.uniqueSort})();var le=function(V,T,L){for(var G=[],P=L!==void 0;(V=V[T])&&V.nodeType!==9;)if(V.nodeType===1){if(P&&N(V).is(L))break;G.push(V)}return G},Fe=function(V,T){for(var L=[];V;V=V.nextSibling)V.nodeType===1&&V!==T&&L.push(V);return L},Ue=N.expr.match.needsContext,ze=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Oe(V,T,L){return g(T)?N.grep(V,function(G,P){return!!T.call(G,P,G)!==L}):T.nodeType?N.grep(V,function(G){return G===T!==L}):typeof T!="string"?N.grep(V,function(G){return a.call(T,G)>-1!==L}):N.filter(T,V,L)}N.filter=function(V,T,L){var G=T[0];return L&&(V=":not("+V+")"),T.length===1&&G.nodeType===1?N.find.matchesSelector(G,V)?[G]:[]:N.find.matches(V,N.grep(T,function(P){return P.nodeType===1}))},N.fn.extend({find:function(V){var T,L,G=this.length,P=this;if(typeof V!="string")return this.pushStack(N(V).filter(function(){for(T=0;T<G;T++)if(N.contains(P[T],this))return!0}));for(L=this.pushStack([]),T=0;T<G;T++)N.find(V,P[T],L);return G>1?N.uniqueSort(L):L},filter:function(V){return this.pushStack(Oe(this,V||[],!1))},not:function(V){return this.pushStack(Oe(this,V||[],!0))},is:function(V){return!!Oe(this,typeof V=="string"&&Ue.test(V)?N(V):V||[],!1).length}});var Ie,at=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,je=N.fn.init=function(V,T,L){var G,P;if(!V)return this;if(L=L||Ie,typeof V=="string")if(V[0]==="<"&&V[V.length-1]===">"&&V.length>=3?G=[null,V,null]:G=at.exec(V),G&&(G[1]||!T))if(G[1]){if(T=T instanceof N?T[0]:T,N.merge(this,N.parseHTML(G[1],T&&T.nodeType?T.ownerDocument||T:b,!0)),ze.test(G[1])&&N.isPlainObject(T))for(G in T)g(this[G])?this[G](T[G]):this.attr(G,T[G]);return this}else return P=b.getElementById(G[2]),P&&(this[0]=P,this.length=1),this;else return!T||T.jquery?(T||L).find(V):this.constructor(T).find(V);else{if(V.nodeType)return this[0]=V,this.length=1,this;if(g(V))return L.ready!==void 0?L.ready(V):V(N)}return N.makeArray(V,this)};je.prototype=N.fn,Ie=N(b);var Se=/^(?:parents|prev(?:Until|All))/,dt={children:!0,contents:!0,next:!0,prev:!0};N.fn.extend({has:function(V){var T=N(V,this),L=T.length;return this.filter(function(){for(var G=0;G<L;G++)if(N.contains(this,T[G]))return!0})},closest:function(V,T){var L,G=0,P=this.length,H=[],se=typeof V!="string"&&N(V);if(!Ue.test(V)){for(;G<P;G++)for(L=this[G];L&&L!==T;L=L.parentNode)if(L.nodeType<11&&(se?se.index(L)>-1:L.nodeType===1&&N.find.matchesSelector(L,V))){H.push(L);break}}return this.pushStack(H.length>1?N.uniqueSort(H):H)},index:function(V){return V?typeof V=="string"?a.call(N(V),this[0]):a.call(this,V.jquery?V[0]:V):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(V,T){return this.pushStack(N.uniqueSort(N.merge(this.get(),N(V,T))))},addBack:function(V){return this.add(V==null?this.prevObject:this.prevObject.filter(V))}});function Yt(V,T){for(;(V=V[T])&&V.nodeType!==1;);return V}N.each({parent:function(V){var T=V.parentNode;return T&&T.nodeType!==11?T:null},parents:function(V){return le(V,"parentNode")},parentsUntil:function(V,T,L){return le(V,"parentNode",L)},next:function(V){return Yt(V,"nextSibling")},prev:function(V){return Yt(V,"previousSibling")},nextAll:function(V){return le(V,"nextSibling")},prevAll:function(V){return le(V,"previousSibling")},nextUntil:function(V,T,L){return le(V,"nextSibling",L)},prevUntil:function(V,T,L){return le(V,"previousSibling",L)},siblings:function(V){return Fe((V.parentNode||{}).firstChild,V)},children:function(V){return Fe(V.firstChild)},contents:function(V){return V.contentDocument!=null&&n(V.contentDocument)?V.contentDocument:(Q(V,"template")&&(V=V.content||V),N.merge([],V.childNodes))}},function(V,T){N.fn[V]=function(L,G){var P=N.map(this,T,L);return V.slice(-5)!=="Until"&&(G=L),G&&typeof G=="string"&&(P=N.filter(G,P)),this.length>1&&(dt[V]||N.uniqueSort(P),Se.test(V)&&P.reverse()),this.pushStack(P)}});var Ye=/[^\x20\t\r\n\f]+/g;function mt(V){var T={};return N.each(V.match(Ye)||[],function(L,G){T[G]=!0}),T}N.Callbacks=function(V){V=typeof V=="string"?mt(V):N.extend({},V);var T,L,G,P,H=[],se=[],ye=-1,Ze=function(){for(P=P||V.once,G=T=!0;se.length;ye=-1)for(L=se.shift();++ye<H.length;)H[ye].apply(L[0],L[1])===!1&&V.stopOnFalse&&(ye=H.length,L=!1);V.memory||(L=!1),T=!1,P&&(L?H=[]:H="")},_e={add:function(){return H&&(L&&!T&&(ye=H.length-1,se.push(L)),function Rt(Bt){N.each(Bt,function(ht,qt){g(qt)?(!V.unique||!_e.has(qt))&&H.push(qt):qt&&qt.length&&Z(qt)!=="string"&&Rt(qt)})}(arguments),L&&!T&&Ze()),this},remove:function(){return N.each(arguments,function(Rt,Bt){for(var ht;(ht=N.inArray(Bt,H,ht))>-1;)H.splice(ht,1),ht<=ye&&ye--}),this},has:function(Rt){return Rt?N.inArray(Rt,H)>-1:H.length>0},empty:function(){return H&&(H=[]),this},disable:function(){return P=se=[],H=L="",this},disabled:function(){return!H},lock:function(){return P=se=[],!L&&!T&&(H=L=""),this},locked:function(){return!!P},fireWith:function(Rt,Bt){return P||(Bt=Bt||[],Bt=[Rt,Bt.slice?Bt.slice():Bt],se.push(Bt),T||Ze()),this},fire:function(){return _e.fireWith(this,arguments),this},fired:function(){return!!G}};return _e};function Wt(V){return V}function Jt(V){throw V}function Ae(V,T,L,G){var P;try{V&&g(P=V.promise)?P.call(V).done(T).fail(L):V&&g(P=V.then)?P.call(V,T,L):T.apply(void 0,[V].slice(G))}catch(H){L.apply(void 0,[H])}}N.extend({Deferred:function(V){var T=[["notify","progress",N.Callbacks("memory"),N.Callbacks("memory"),2],["resolve","done",N.Callbacks("once memory"),N.Callbacks("once memory"),0,"resolved"],["reject","fail",N.Callbacks("once memory"),N.Callbacks("once memory"),1,"rejected"]],L="pending",G={state:function(){return L},always:function(){return P.done(arguments).fail(arguments),this},catch:function(H){return G.then(null,H)},pipe:function(){var H=arguments;return N.Deferred(function(se){N.each(T,function(ye,Ze){var _e=g(H[Ze[4]])&&H[Ze[4]];P[Ze[1]](function(){var Rt=_e&&_e.apply(this,arguments);Rt&&g(Rt.promise)?Rt.promise().progress(se.notify).done(se.resolve).fail(se.reject):se[Ze[0]+"With"](this,_e?[Rt]:arguments)})}),H=null}).promise()},then:function(H,se,ye){var Ze=0;function _e(Rt,Bt,ht,qt){return function(){var Jn=this,Bs=arguments,ss=function(){var Hr,ou;if(!(Rt<Ze)){if(Hr=ht.apply(Jn,Bs),Hr===Bt.promise())throw new TypeError("Thenable self-resolution");ou=Hr&&(typeof Hr=="object"||typeof Hr=="function")&&Hr.then,g(ou)?qt?ou.call(Hr,_e(Ze,Bt,Wt,qt),_e(Ze,Bt,Jt,qt)):(Ze++,ou.call(Hr,_e(Ze,Bt,Wt,qt),_e(Ze,Bt,Jt,qt),_e(Ze,Bt,Wt,Bt.notifyWith))):(ht!==Wt&&(Jn=void 0,Bs=[Hr]),(qt||Bt.resolveWith)(Jn,Bs))}},pl=qt?ss:function(){try{ss()}catch(Hr){N.Deferred.exceptionHook&&N.Deferred.exceptionHook(Hr,pl.error),Rt+1>=Ze&&(ht!==Jt&&(Jn=void 0,Bs=[Hr]),Bt.rejectWith(Jn,Bs))}};Rt?pl():(N.Deferred.getErrorHook?pl.error=N.Deferred.getErrorHook():N.Deferred.getStackHook&&(pl.error=N.Deferred.getStackHook()),e.setTimeout(pl))}}return N.Deferred(function(Rt){T[0][3].add(_e(0,Rt,g(ye)?ye:Wt,Rt.notifyWith)),T[1][3].add(_e(0,Rt,g(H)?H:Wt)),T[2][3].add(_e(0,Rt,g(se)?se:Jt))}).promise()},promise:function(H){return H!=null?N.extend(H,G):G}},P={};return N.each(T,function(H,se){var ye=se[2],Ze=se[5];G[se[1]]=ye.add,Ze&&ye.add(function(){L=Ze},T[3-H][2].disable,T[3-H][3].disable,T[0][2].lock,T[0][3].lock),ye.add(se[3].fire),P[se[0]]=function(){return P[se[0]+"With"](this===P?void 0:this,arguments),this},P[se[0]+"With"]=ye.fireWith}),G.promise(P),V&&V.call(P,P),P},when:function(V){var T=arguments.length,L=T,G=Array(L),P=o.call(arguments),H=N.Deferred(),se=function(ye){return function(Ze){G[ye]=this,P[ye]=arguments.length>1?o.call(arguments):Ze,--T||H.resolveWith(G,P)}};if(T<=1&&(Ae(V,H.done(se(L)).resolve,H.reject,!T),H.state()==="pending"||g(P[L]&&P[L].then)))return H.then();for(;L--;)Ae(P[L],se(L),H.reject);return H.promise()}});var Yi=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;N.Deferred.exceptionHook=function(V,T){e.console&&e.console.warn&&V&&Yi.test(V.name)&&e.console.warn("jQuery.Deferred exception: "+V.message,V.stack,T)},N.readyException=function(V){e.setTimeout(function(){throw V})};var ci=N.Deferred();N.fn.ready=function(V){return ci.then(V).catch(function(T){N.readyException(T)}),this},N.extend({isReady:!1,readyWait:1,ready:function(V){(V===!0?--N.readyWait:N.isReady)||(N.isReady=!0,!(V!==!0&&--N.readyWait>0)&&ci.resolveWith(b,[N]))}}),N.ready.then=ci.then;function we(){b.removeEventListener("DOMContentLoaded",we),e.removeEventListener("load",we),N.ready()}b.readyState==="complete"||b.readyState!=="loading"&&!b.documentElement.doScroll?e.setTimeout(N.ready):(b.addEventListener("DOMContentLoaded",we),e.addEventListener("load",we));var si=function(V,T,L,G,P,H,se){var ye=0,Ze=V.length,_e=L==null;if(Z(L)==="object"){P=!0;for(ye in L)si(V,T,ye,L[ye],!0,H,se)}else if(G!==void 0&&(P=!0,g(G)||(se=!0),_e&&(se?(T.call(V,G),T=null):(_e=T,T=function(Rt,Bt,ht){return _e.call(N(Rt),ht)})),T))for(;ye<Ze;ye++)T(V[ye],L,se?G:G.call(V[ye],ye,T(V[ye],L)));return P?V:_e?T.call(V):Ze?T(V[0],L):H},yn=/^-ms-/,bi=/-([a-z])/g;function pe(V,T){return T.toUpperCase()}function ie(V){return V.replace(yn,"ms-").replace(bi,pe)}var it=function(V){return V.nodeType===1||V.nodeType===9||!+V.nodeType};function Ft(){this.expando=N.expando+Ft.uid++}Ft.uid=1,Ft.prototype={cache:function(V){var T=V[this.expando];return T||(T={},it(V)&&(V.nodeType?V[this.expando]=T:Object.defineProperty(V,this.expando,{value:T,configurable:!0}))),T},set:function(V,T,L){var G,P=this.cache(V);if(typeof T=="string")P[ie(T)]=L;else for(G in T)P[ie(G)]=T[G];return P},get:function(V,T){return T===void 0?this.cache(V):V[this.expando]&&V[this.expando][ie(T)]},access:function(V,T,L){return T===void 0||T&&typeof T=="string"&&L===void 0?this.get(V,T):(this.set(V,T,L),L!==void 0?L:T)},remove:function(V,T){var L,G=V[this.expando];if(G!==void 0){if(T!==void 0)for(Array.isArray(T)?T=T.map(ie):(T=ie(T),T=T in G?[T]:T.match(Ye)||[]),L=T.length;L--;)delete G[T[L]];(T===void 0||N.isEmptyObject(G))&&(V.nodeType?V[this.expando]=void 0:delete V[this.expando])}},hasData:function(V){var T=V[this.expando];return T!==void 0&&!N.isEmptyObject(T)}};var Pe=new Ft,Re=new Ft,vt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ke=/[A-Z]/g;function ot(V){return V==="true"?!0:V==="false"?!1:V==="null"?null:V===+V+""?+V:vt.test(V)?JSON.parse(V):V}function Et(V,T,L){var G;if(L===void 0&&V.nodeType===1)if(G="data-"+T.replace(Ke,"-$&").toLowerCase(),L=V.getAttribute(G),typeof L=="string"){try{L=ot(L)}catch{}Re.set(V,T,L)}else L=void 0;return L}N.extend({hasData:function(V){return Re.hasData(V)||Pe.hasData(V)},data:function(V,T,L){return Re.access(V,T,L)},removeData:function(V,T){Re.remove(V,T)},_data:function(V,T,L){return Pe.access(V,T,L)},_removeData:function(V,T){Pe.remove(V,T)}}),N.fn.extend({data:function(V,T){var L,G,P,H=this[0],se=H&&H.attributes;if(V===void 0){if(this.length&&(P=Re.get(H),H.nodeType===1&&!Pe.get(H,"hasDataAttrs"))){for(L=se.length;L--;)se[L]&&(G=se[L].name,G.indexOf("data-")===0&&(G=ie(G.slice(5)),Et(H,G,P[G])));Pe.set(H,"hasDataAttrs",!0)}return P}return typeof V=="object"?this.each(function(){Re.set(this,V)}):si(this,function(ye){var Ze;if(H&&ye===void 0)return Ze=Re.get(H,V),Ze!==void 0||(Ze=Et(H,V),Ze!==void 0)?Ze:void 0;this.each(function(){Re.set(this,V,ye)})},null,T,arguments.length>1,null,!0)},removeData:function(V){return this.each(function(){Re.remove(this,V)})}}),N.extend({queue:function(V,T,L){var G;if(V)return T=(T||"fx")+"queue",G=Pe.get(V,T),L&&(!G||Array.isArray(L)?G=Pe.access(V,T,N.makeArray(L)):G.push(L)),G||[]},dequeue:function(V,T){T=T||"fx";var L=N.queue(V,T),G=L.length,P=L.shift(),H=N._queueHooks(V,T),se=function(){N.dequeue(V,T)};P==="inprogress"&&(P=L.shift(),G--),P&&(T==="fx"&&L.unshift("inprogress"),delete H.stop,P.call(V,se,H)),!G&&H&&H.empty.fire()},_queueHooks:function(V,T){var L=T+"queueHooks";return Pe.get(V,L)||Pe.access(V,L,{empty:N.Callbacks("once memory").add(function(){Pe.remove(V,[T+"queue",L])})})}}),N.fn.extend({queue:function(V,T){var L=2;return typeof V!="string"&&(T=V,V="fx",L--),arguments.length<L?N.queue(this[0],V):T===void 0?this:this.each(function(){var G=N.queue(this,V,T);N._queueHooks(this,V),V==="fx"&&G[0]!=="inprogress"&&N.dequeue(this,V)})},dequeue:function(V){return this.each(function(){N.dequeue(this,V)})},clearQueue:function(V){return this.queue(V||"fx",[])},promise:function(V,T){var L,G=1,P=N.Deferred(),H=this,se=this.length,ye=function(){--G||P.resolveWith(H,[H])};for(typeof V!="string"&&(T=V,V=void 0),V=V||"fx";se--;)L=Pe.get(H[se],V+"queueHooks"),L&&L.empty&&(G++,L.empty.add(ye));return ye(),P.promise(T)}});var St=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Ht=new RegExp("^(?:([+-])=|)("+St+")([a-z%]*)$","i"),Fi=["Top","Right","Bottom","Left"],Dt=b.documentElement,Ot=function(V){return N.contains(V.ownerDocument,V)},nn={composed:!0};Dt.getRootNode&&(Ot=function(V){return N.contains(V.ownerDocument,V)||V.getRootNode(nn)===V.ownerDocument});var xi=function(V,T){return V=T||V,V.style.display==="none"||V.style.display===""&&Ot(V)&&N.css(V,"display")==="none"};function Zi(V,T,L,G){var P,H,se=20,ye=G?function(){return G.cur()}:function(){return N.css(V,T,"")},Ze=ye(),_e=L&&L[3]||(N.cssNumber[T]?"":"px"),Rt=V.nodeType&&(N.cssNumber[T]||_e!=="px"&&+Ze)&&Ht.exec(N.css(V,T));if(Rt&&Rt[3]!==_e){for(Ze=Ze/2,_e=_e||Rt[3],Rt=+Ze||1;se--;)N.style(V,T,Rt+_e),(1-H)*(1-(H=ye()/Ze||.5))<=0&&(se=0),Rt=Rt/H;Rt=Rt*2,N.style(V,T,Rt+_e),L=L||[]}return L&&(Rt=+Rt||+Ze||0,P=L[1]?Rt+(L[1]+1)*L[2]:+L[2],G&&(G.unit=_e,G.start=Rt,G.end=P)),P}var Me={};function ri(V){var T,L=V.ownerDocument,G=V.nodeName,P=Me[G];return P||(T=L.body.appendChild(L.createElement(G)),P=N.css(T,"display"),T.parentNode.removeChild(T),P==="none"&&(P="block"),Me[G]=P,P)}function st(V,T){for(var L,G,P=[],H=0,se=V.length;H<se;H++)G=V[H],G.style&&(L=G.style.display,T?(L==="none"&&(P[H]=Pe.get(G,"display")||null,P[H]||(G.style.display="")),G.style.display===""&&xi(G)&&(P[H]=ri(G))):L!=="none"&&(P[H]="none",Pe.set(G,"display",L)));for(H=0;H<se;H++)P[H]!=null&&(V[H].style.display=P[H]);return V}N.fn.extend({show:function(){return st(this,!0)},hide:function(){return st(this)},toggle:function(V){return typeof V=="boolean"?V?this.show():this.hide():this.each(function(){xi(this)?N(this).show():N(this).hide()})}});var Ve=/^(?:checkbox|radio)$/i,Nt=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ui=/^$|^module$|\/(?:java|ecma)script/i;(function(){var V=b.createDocumentFragment(),T=V.appendChild(b.createElement("div")),L=b.createElement("input");L.setAttribute("type","radio"),L.setAttribute("checked","checked"),L.setAttribute("name","t"),T.appendChild(L),p.checkClone=T.cloneNode(!0).cloneNode(!0).lastChild.checked,T.innerHTML="<textarea>x</textarea>",p.noCloneChecked=!!T.cloneNode(!0).lastChild.defaultValue,T.innerHTML="<option></option>",p.option=!!T.lastChild})();var Ci={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Ci.tbody=Ci.tfoot=Ci.colgroup=Ci.caption=Ci.thead,Ci.th=Ci.td,p.option||(Ci.optgroup=Ci.option=[1,"<select multiple='multiple'>","</select>"]);function Mn(V,T){var L;return typeof V.getElementsByTagName<"u"?L=V.getElementsByTagName(T||"*"):typeof V.querySelectorAll<"u"?L=V.querySelectorAll(T||"*"):L=[],T===void 0||T&&Q(V,T)?N.merge([V],L):L}function Si(V,T){for(var L=0,G=V.length;L<G;L++)Pe.set(V[L],"globalEval",!T||Pe.get(T[L],"globalEval"))}var oe=/<|&#?\w+;/;function ae(V,T,L,G,P){for(var H,se,ye,Ze,_e,Rt,Bt=T.createDocumentFragment(),ht=[],qt=0,Jn=V.length;qt<Jn;qt++)if(H=V[qt],H||H===0)if(Z(H)==="object")N.merge(ht,H.nodeType?[H]:H);else if(!oe.test(H))ht.push(T.createTextNode(H));else{for(se=se||Bt.appendChild(T.createElement("div")),ye=(Nt.exec(H)||["",""])[1].toLowerCase(),Ze=Ci[ye]||Ci._default,se.innerHTML=Ze[1]+N.htmlPrefilter(H)+Ze[2],Rt=Ze[0];Rt--;)se=se.lastChild;N.merge(ht,se.childNodes),se=Bt.firstChild,se.textContent=""}for(Bt.textContent="",qt=0;H=ht[qt++];){if(G&&N.inArray(H,G)>-1){P&&P.push(H);continue}if(_e=Ot(H),se=Mn(Bt.appendChild(H),"script"),_e&&Si(se),L)for(Rt=0;H=se[Rt++];)Ui.test(H.type||"")&&L.push(H)}return Bt}var ce=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function Be(){return!1}function Le(V,T,L,G,P,H){var se,ye;if(typeof T=="object"){typeof L!="string"&&(G=G||L,L=void 0);for(ye in T)Le(V,ye,L,G,T[ye],H);return V}if(G==null&&P==null?(P=L,G=L=void 0):P==null&&(typeof L=="string"?(P=G,G=void 0):(P=G,G=L,L=void 0)),P===!1)P=Be;else if(!P)return V;return H===1&&(se=P,P=function(Ze){return N().off(Ze),se.apply(this,arguments)},P.guid=se.guid||(se.guid=N.guid++)),V.each(function(){N.event.add(this,T,P,G,L)})}N.event={global:{},add:function(V,T,L,G,P){var H,se,ye,Ze,_e,Rt,Bt,ht,qt,Jn,Bs,ss=Pe.get(V);if(it(V))for(L.handler&&(H=L,L=H.handler,P=H.selector),P&&N.find.matchesSelector(Dt,P),L.guid||(L.guid=N.guid++),(Ze=ss.events)||(Ze=ss.events=Object.create(null)),(se=ss.handle)||(se=ss.handle=function(pl){return typeof N<"u"&&N.event.triggered!==pl.type?N.event.dispatch.apply(V,arguments):void 0}),T=(T||"").match(Ye)||[""],_e=T.length;_e--;)ye=ce.exec(T[_e])||[],qt=Bs=ye[1],Jn=(ye[2]||"").split(".").sort(),qt&&(Bt=N.event.special[qt]||{},qt=(P?Bt.delegateType:Bt.bindType)||qt,Bt=N.event.special[qt]||{},Rt=N.extend({type:qt,origType:Bs,data:G,handler:L,guid:L.guid,selector:P,needsContext:P&&N.expr.match.needsContext.test(P),namespace:Jn.join(".")},H),(ht=Ze[qt])||(ht=Ze[qt]=[],ht.delegateCount=0,(!Bt.setup||Bt.setup.call(V,G,Jn,se)===!1)&&V.addEventListener&&V.addEventListener(qt,se)),Bt.add&&(Bt.add.call(V,Rt),Rt.handler.guid||(Rt.handler.guid=L.guid)),P?ht.splice(ht.delegateCount++,0,Rt):ht.push(Rt),N.event.global[qt]=!0)},remove:function(V,T,L,G,P){var H,se,ye,Ze,_e,Rt,Bt,ht,qt,Jn,Bs,ss=Pe.hasData(V)&&Pe.get(V);if(!(!ss||!(Ze=ss.events))){for(T=(T||"").match(Ye)||[""],_e=T.length;_e--;){if(ye=ce.exec(T[_e])||[],qt=Bs=ye[1],Jn=(ye[2]||"").split(".").sort(),!qt){for(qt in Ze)N.event.remove(V,qt+T[_e],L,G,!0);continue}for(Bt=N.event.special[qt]||{},qt=(G?Bt.delegateType:Bt.bindType)||qt,ht=Ze[qt]||[],ye=ye[2]&&new RegExp("(^|\\.)"+Jn.join("\\.(?:.*\\.|)")+"(\\.|$)"),se=H=ht.length;H--;)Rt=ht[H],(P||Bs===Rt.origType)&&(!L||L.guid===Rt.guid)&&(!ye||ye.test(Rt.namespace))&&(!G||G===Rt.selector||G==="**"&&Rt.selector)&&(ht.splice(H,1),Rt.selector&&ht.delegateCount--,Bt.remove&&Bt.remove.call(V,Rt));se&&!ht.length&&((!Bt.teardown||Bt.teardown.call(V,Jn,ss.handle)===!1)&&N.removeEvent(V,qt,ss.handle),delete Ze[qt])}N.isEmptyObject(Ze)&&Pe.remove(V,"handle events")}},dispatch:function(V){var T,L,G,P,H,se,ye=new Array(arguments.length),Ze=N.event.fix(V),_e=(Pe.get(this,"events")||Object.create(null))[Ze.type]||[],Rt=N.event.special[Ze.type]||{};for(ye[0]=Ze,T=1;T<arguments.length;T++)ye[T]=arguments[T];if(Ze.delegateTarget=this,!(Rt.preDispatch&&Rt.preDispatch.call(this,Ze)===!1)){for(se=N.event.handlers.call(this,Ze,_e),T=0;(P=se[T++])&&!Ze.isPropagationStopped();)for(Ze.currentTarget=P.elem,L=0;(H=P.handlers[L++])&&!Ze.isImmediatePropagationStopped();)(!Ze.rnamespace||H.namespace===!1||Ze.rnamespace.test(H.namespace))&&(Ze.handleObj=H,Ze.data=H.data,G=((N.event.special[H.origType]||{}).handle||H.handler).apply(P.elem,ye),G!==void 0&&(Ze.result=G)===!1&&(Ze.preventDefault(),Ze.stopPropagation()));return Rt.postDispatch&&Rt.postDispatch.call(this,Ze),Ze.result}},handlers:function(V,T){var L,G,P,H,se,ye=[],Ze=T.delegateCount,_e=V.target;if(Ze&&_e.nodeType&&!(V.type==="click"&&V.button>=1)){for(;_e!==this;_e=_e.parentNode||this)if(_e.nodeType===1&&!(V.type==="click"&&_e.disabled===!0)){for(H=[],se={},L=0;L<Ze;L++)G=T[L],P=G.selector+" ",se[P]===void 0&&(se[P]=G.needsContext?N(P,this).index(_e)>-1:N.find(P,this,null,[_e]).length),se[P]&&H.push(G);H.length&&ye.push({elem:_e,handlers:H})}}return _e=this,Ze<T.length&&ye.push({elem:_e,handlers:T.slice(Ze)}),ye},addProp:function(V,T){Object.defineProperty(N.Event.prototype,V,{enumerable:!0,configurable:!0,get:g(T)?function(){if(this.originalEvent)return T(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[V]},set:function(L){Object.defineProperty(this,V,{enumerable:!0,configurable:!0,writable:!0,value:L})}})},fix:function(V){return V[N.expando]?V:new N.Event(V)},special:{load:{noBubble:!0},click:{setup:function(V){var T=this||V;return Ve.test(T.type)&&T.click&&Q(T,"input")&&pt(T,"click",!0),!1},trigger:function(V){var T=this||V;return Ve.test(T.type)&&T.click&&Q(T,"input")&&pt(T,"click"),!0},_default:function(V){var T=V.target;return Ve.test(T.type)&&T.click&&Q(T,"input")&&Pe.get(T,"click")||Q(T,"a")}},beforeunload:{postDispatch:function(V){V.result!==void 0&&V.originalEvent&&(V.originalEvent.returnValue=V.result)}}}};function pt(V,T,L){if(!L){Pe.get(V,T)===void 0&&N.event.add(V,T,Ne);return}Pe.set(V,T,!1),N.event.add(V,T,{namespace:!1,handler:function(G){var P,H=Pe.get(this,T);if(G.isTrigger&1&&this[T]){if(H)(N.event.special[T]||{}).delegateType&&G.stopPropagation();else if(H=o.call(arguments),Pe.set(this,T,H),this[T](),P=Pe.get(this,T),Pe.set(this,T,!1),H!==P)return G.stopImmediatePropagation(),G.preventDefault(),P}else H&&(Pe.set(this,T,N.event.trigger(H[0],H.slice(1),this)),G.stopPropagation(),G.isImmediatePropagationStopped=Ne)}})}N.removeEvent=function(V,T,L){V.removeEventListener&&V.removeEventListener(T,L)},N.Event=function(V,T){if(!(this instanceof N.Event))return new N.Event(V,T);V&&V.type?(this.originalEvent=V,this.type=V.type,this.isDefaultPrevented=V.defaultPrevented||V.defaultPrevented===void 0&&V.returnValue===!1?Ne:Be,this.target=V.target&&V.target.nodeType===3?V.target.parentNode:V.target,this.currentTarget=V.currentTarget,this.relatedTarget=V.relatedTarget):this.type=V,T&&N.extend(this,T),this.timeStamp=V&&V.timeStamp||Date.now(),this[N.expando]=!0},N.Event.prototype={constructor:N.Event,isDefaultPrevented:Be,isPropagationStopped:Be,isImmediatePropagationStopped:Be,isSimulated:!1,preventDefault:function(){var V=this.originalEvent;this.isDefaultPrevented=Ne,V&&!this.isSimulated&&V.preventDefault()},stopPropagation:function(){var V=this.originalEvent;this.isPropagationStopped=Ne,V&&!this.isSimulated&&V.stopPropagation()},stopImmediatePropagation:function(){var V=this.originalEvent;this.isImmediatePropagationStopped=Ne,V&&!this.isSimulated&&V.stopImmediatePropagation(),this.stopPropagation()}},N.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},N.event.addProp),N.each({focus:"focusin",blur:"focusout"},function(V,T){function L(G){if(b.documentMode){var P=Pe.get(this,"handle"),H=N.event.fix(G);H.type=G.type==="focusin"?"focus":"blur",H.isSimulated=!0,P(G),H.target===H.currentTarget&&P(H)}else N.event.simulate(T,G.target,N.event.fix(G))}N.event.special[V]={setup:function(){var G;if(pt(this,V,!0),b.documentMode)G=Pe.get(this,T),G||this.addEventListener(T,L),Pe.set(this,T,(G||0)+1);else return!1},trigger:function(){return pt(this,V),!0},teardown:function(){var G;if(b.documentMode)G=Pe.get(this,T)-1,G?Pe.set(this,T,G):(this.removeEventListener(T,L),Pe.remove(this,T));else return!1},_default:function(G){return Pe.get(G.target,V)},delegateType:T},N.event.special[T]={setup:function(){var G=this.ownerDocument||this.document||this,P=b.documentMode?this:G,H=Pe.get(P,T);H||(b.documentMode?this.addEventListener(T,L):G.addEventListener(V,L,!0)),Pe.set(P,T,(H||0)+1)},teardown:function(){var G=this.ownerDocument||this.document||this,P=b.documentMode?this:G,H=Pe.get(P,T)-1;H?Pe.set(P,T,H):(b.documentMode?this.removeEventListener(T,L):G.removeEventListener(V,L,!0),Pe.remove(P,T))}}}),N.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(V,T){N.event.special[V]={delegateType:T,bindType:T,handle:function(L){var G,P=this,H=L.relatedTarget,se=L.handleObj;return(!H||H!==P&&!N.contains(P,H))&&(L.type=se.origType,G=se.handler.apply(this,arguments),L.type=T),G}}}),N.fn.extend({on:function(V,T,L,G){return Le(this,V,T,L,G)},one:function(V,T,L,G){return Le(this,V,T,L,G,1)},off:function(V,T,L){var G,P;if(V&&V.preventDefault&&V.handleObj)return G=V.handleObj,N(V.delegateTarget).off(G.namespace?G.origType+"."+G.namespace:G.origType,G.selector,G.handler),this;if(typeof V=="object"){for(P in V)this.off(P,T,V[P]);return this}return(T===!1||typeof T=="function")&&(L=T,T=void 0),L===!1&&(L=Be),this.each(function(){N.event.remove(this,V,L,T)})}});var jt=/<script|<style|<link/i,mi=/checked\s*(?:[^=]|=\s*.checked.)/i,Ji=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function xn(V,T){return Q(V,"table")&&Q(T.nodeType!==11?T:T.firstChild,"tr")&&N(V).children("tbody")[0]||V}function Gn(V){return V.type=(V.getAttribute("type")!==null)+"/"+V.type,V}function Fs(V){return(V.type||"").slice(0,5)==="true/"?V.type=V.type.slice(5):V.removeAttribute("type"),V}function As(V,T){var L,G,P,H,se,ye,Ze;if(T.nodeType===1){if(Pe.hasData(V)&&(H=Pe.get(V),Ze=H.events,Ze)){Pe.remove(T,"handle events");for(P in Ze)for(L=0,G=Ze[P].length;L<G;L++)N.event.add(T,P,Ze[P][L])}Re.hasData(V)&&(se=Re.access(V),ye=N.extend({},se),Re.set(T,ye))}}function Vr(V,T){var L=T.nodeName.toLowerCase();L==="input"&&Ve.test(V.type)?T.checked=V.checked:(L==="input"||L==="textarea")&&(T.defaultValue=V.defaultValue)}function ir(V,T,L,G){T=r(T);var P,H,se,ye,Ze,_e,Rt=0,Bt=V.length,ht=Bt-1,qt=T[0],Jn=g(qt);if(Jn||Bt>1&&typeof qt=="string"&&!p.checkClone&&mi.test(qt))return V.each(function(Bs){var ss=V.eq(Bs);Jn&&(T[0]=qt.call(this,Bs,ss.html())),ir(ss,T,L,G)});if(Bt&&(P=ae(T,V[0].ownerDocument,!1,V,G),H=P.firstChild,P.childNodes.length===1&&(P=H),H||G)){for(se=N.map(Mn(P,"script"),Gn),ye=se.length;Rt<Bt;Rt++)Ze=P,Rt!==ht&&(Ze=N.clone(Ze,!0,!0),ye&&N.merge(se,Mn(Ze,"script"))),L.call(V[Rt],Ze,Rt);if(ye)for(_e=se[se.length-1].ownerDocument,N.map(se,Fs),Rt=0;Rt<ye;Rt++)Ze=se[Rt],Ui.test(Ze.type||"")&&!Pe.access(Ze,"globalEval")&&N.contains(_e,Ze)&&(Ze.src&&(Ze.type||"").toLowerCase()!=="module"?N._evalUrl&&!Ze.noModule&&N._evalUrl(Ze.src,{nonce:Ze.nonce||Ze.getAttribute("nonce")},_e):S(Ze.textContent.replace(Ji,""),Ze,_e))}return V}function He(V,T,L){for(var G,P=T?N.filter(T,V):V,H=0;(G=P[H])!=null;H++)!L&&G.nodeType===1&&N.cleanData(Mn(G)),G.parentNode&&(L&&Ot(G)&&Si(Mn(G,"script")),G.parentNode.removeChild(G));return V}N.extend({htmlPrefilter:function(V){return V},clone:function(V,T,L){var G,P,H,se,ye=V.cloneNode(!0),Ze=Ot(V);if(!p.noCloneChecked&&(V.nodeType===1||V.nodeType===11)&&!N.isXMLDoc(V))for(se=Mn(ye),H=Mn(V),G=0,P=H.length;G<P;G++)Vr(H[G],se[G]);if(T)if(L)for(H=H||Mn(V),se=se||Mn(ye),G=0,P=H.length;G<P;G++)As(H[G],se[G]);else As(V,ye);return se=Mn(ye,"script"),se.length>0&&Si(se,!Ze&&Mn(V,"script")),ye},cleanData:function(V){for(var T,L,G,P=N.event.special,H=0;(L=V[H])!==void 0;H++)if(it(L)){if(T=L[Pe.expando]){if(T.events)for(G in T.events)P[G]?N.event.remove(L,G):N.removeEvent(L,G,T.handle);L[Pe.expando]=void 0}L[Re.expando]&&(L[Re.expando]=void 0)}}}),N.fn.extend({detach:function(V){return He(this,V,!0)},remove:function(V){return He(this,V)},text:function(V){return si(this,function(T){return T===void 0?N.text(this):this.empty().each(function(){(this.nodeType===1||this.nodeType===11||this.nodeType===9)&&(this.textContent=T)})},null,V,arguments.length)},append:function(){return ir(this,arguments,function(V){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var T=xn(this,V);T.appendChild(V)}})},prepend:function(){return ir(this,arguments,function(V){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var T=xn(this,V);T.insertBefore(V,T.firstChild)}})},before:function(){return ir(this,arguments,function(V){this.parentNode&&this.parentNode.insertBefore(V,this)})},after:function(){return ir(this,arguments,function(V){this.parentNode&&this.parentNode.insertBefore(V,this.nextSibling)})},empty:function(){for(var V,T=0;(V=this[T])!=null;T++)V.nodeType===1&&(N.cleanData(Mn(V,!1)),V.textContent="");return this},clone:function(V,T){return V=V??!1,T=T??V,this.map(function(){return N.clone(this,V,T)})},html:function(V){return si(this,function(T){var L=this[0]||{},G=0,P=this.length;if(T===void 0&&L.nodeType===1)return L.innerHTML;if(typeof T=="string"&&!jt.test(T)&&!Ci[(Nt.exec(T)||["",""])[1].toLowerCase()]){T=N.htmlPrefilter(T);try{for(;G<P;G++)L=this[G]||{},L.nodeType===1&&(N.cleanData(Mn(L,!1)),L.innerHTML=T);L=0}catch{}}L&&this.empty().append(T)},null,V,arguments.length)},replaceWith:function(){var V=[];return ir(this,arguments,function(T){var L=this.parentNode;N.inArray(this,V)<0&&(N.cleanData(Mn(this)),L&&L.replaceChild(T,this))},V)}}),N.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(V,T){N.fn[V]=function(L){for(var G,P=[],H=N(L),se=H.length-1,ye=0;ye<=se;ye++)G=ye===se?this:this.clone(!0),N(H[ye])[T](G),l.apply(P,G.get());return this.pushStack(P)}});var xe=new RegExp("^("+St+")(?!px)[a-z%]+$","i"),me=/^--/,Zt=function(V){var T=V.ownerDocument.defaultView;return(!T||!T.opener)&&(T=e),T.getComputedStyle(V)},q=function(V,T,L){var G,P,H={};for(P in T)H[P]=V.style[P],V.style[P]=T[P];G=L.call(V);for(P in T)V.style[P]=H[P];return G},We=new RegExp(Fi.join("|"),"i");(function(){function V(){if(_e){Ze.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",_e.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",Dt.appendChild(Ze).appendChild(_e);var Rt=e.getComputedStyle(_e);L=Rt.top!=="1%",ye=T(Rt.marginLeft)===12,_e.style.right="60%",H=T(Rt.right)===36,G=T(Rt.width)===36,_e.style.position="absolute",P=T(_e.offsetWidth/3)===12,Dt.removeChild(Ze),_e=null}}function T(Rt){return Math.round(parseFloat(Rt))}var L,G,P,H,se,ye,Ze=b.createElement("div"),_e=b.createElement("div");_e.style&&(_e.style.backgroundClip="content-box",_e.cloneNode(!0).style.backgroundClip="",p.clearCloneStyle=_e.style.backgroundClip==="content-box",N.extend(p,{boxSizingReliable:function(){return V(),G},pixelBoxStyles:function(){return V(),H},pixelPosition:function(){return V(),L},reliableMarginLeft:function(){return V(),ye},scrollboxSize:function(){return V(),P},reliableTrDimensions:function(){var Rt,Bt,ht,qt;return se==null&&(Rt=b.createElement("table"),Bt=b.createElement("tr"),ht=b.createElement("div"),Rt.style.cssText="position:absolute;left:-11111px;border-collapse:separate",Bt.style.cssText="box-sizing:content-box;border:1px solid",Bt.style.height="1px",ht.style.height="9px",ht.style.display="block",Dt.appendChild(Rt).appendChild(Bt).appendChild(ht),qt=e.getComputedStyle(Bt),se=parseInt(qt.height,10)+parseInt(qt.borderTopWidth,10)+parseInt(qt.borderBottomWidth,10)===Bt.offsetHeight,Dt.removeChild(Rt)),se}}))})();function Qe(V,T,L){var G,P,H,se,ye=me.test(T),Ze=V.style;return L=L||Zt(V),L&&(se=L.getPropertyValue(T)||L[T],ye&&se&&(se=se.replace(k,"$1")||void 0),se===""&&!Ot(V)&&(se=N.style(V,T)),!p.pixelBoxStyles()&&xe.test(se)&&We.test(T)&&(G=Ze.width,P=Ze.minWidth,H=Ze.maxWidth,Ze.minWidth=Ze.maxWidth=Ze.width=se,se=L.width,Ze.width=G,Ze.minWidth=P,Ze.maxWidth=H)),se!==void 0?se+"":se}function ke(V,T){return{get:function(){if(V()){delete this.get;return}return(this.get=T).apply(this,arguments)}}}var ve=["Webkit","Moz","ms"],Lt=b.createElement("div").style,li={};function tt(V){for(var T=V[0].toUpperCase()+V.slice(1),L=ve.length;L--;)if(V=ve[L]+T,V in Lt)return V}function Ct(V){var T=N.cssProps[V]||li[V];return T||(V in Lt?V:li[V]=tt(V)||V)}var tn=/^(none|table(?!-c[ea]).+)/,In={position:"absolute",visibility:"hidden",display:"block"},Ki={letterSpacing:"0",fontWeight:"400"};function Zs(V,T,L){var G=Ht.exec(T);return G?Math.max(0,G[2]-(L||0))+(G[3]||"px"):T}function ms(V,T,L,G,P,H){var se=T==="width"?1:0,ye=0,Ze=0,_e=0;if(L===(G?"border":"content"))return 0;for(;se<4;se+=2)L==="margin"&&(_e+=N.css(V,L+Fi[se],!0,P)),G?(L==="content"&&(Ze-=N.css(V,"padding"+Fi[se],!0,P)),L!=="margin"&&(Ze-=N.css(V,"border"+Fi[se]+"Width",!0,P))):(Ze+=N.css(V,"padding"+Fi[se],!0,P),L!=="padding"?Ze+=N.css(V,"border"+Fi[se]+"Width",!0,P):ye+=N.css(V,"border"+Fi[se]+"Width",!0,P));return!G&&H>=0&&(Ze+=Math.max(0,Math.ceil(V["offset"+T[0].toUpperCase()+T.slice(1)]-H-Ze-ye-.5))||0),Ze+_e}function ko(V,T,L){var G=Zt(V),P=!p.boxSizingReliable()||L,H=P&&N.css(V,"boxSizing",!1,G)==="border-box",se=H,ye=Qe(V,T,G),Ze="offset"+T[0].toUpperCase()+T.slice(1);if(xe.test(ye)){if(!L)return ye;ye="auto"}return(!p.boxSizingReliable()&&H||!p.reliableTrDimensions()&&Q(V,"tr")||ye==="auto"||!parseFloat(ye)&&N.css(V,"display",!1,G)==="inline")&&V.getClientRects().length&&(H=N.css(V,"boxSizing",!1,G)==="border-box",se=Ze in V,se&&(ye=V[Ze])),ye=parseFloat(ye)||0,ye+ms(V,T,L||(H?"border":"content"),se,G,ye)+"px"}N.extend({cssHooks:{opacity:{get:function(V,T){if(T){var L=Qe(V,"opacity");return L===""?"1":L}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(V,T,L,G){if(!(!V||V.nodeType===3||V.nodeType===8||!V.style)){var P,H,se,ye=ie(T),Ze=me.test(T),_e=V.style;if(Ze||(T=Ct(ye)),se=N.cssHooks[T]||N.cssHooks[ye],L!==void 0){if(H=typeof L,H==="string"&&(P=Ht.exec(L))&&P[1]&&(L=Zi(V,T,P),H="number"),L==null||L!==L)return;H==="number"&&!Ze&&(L+=P&&P[3]||(N.cssNumber[ye]?"":"px")),!p.clearCloneStyle&&L===""&&T.indexOf("background")===0&&(_e[T]="inherit"),(!se||!("set"in se)||(L=se.set(V,L,G))!==void 0)&&(Ze?_e.setProperty(T,L):_e[T]=L)}else return se&&"get"in se&&(P=se.get(V,!1,G))!==void 0?P:_e[T]}},css:function(V,T,L,G){var P,H,se,ye=ie(T),Ze=me.test(T);return Ze||(T=Ct(ye)),se=N.cssHooks[T]||N.cssHooks[ye],se&&"get"in se&&(P=se.get(V,!0,L)),P===void 0&&(P=Qe(V,T,G)),P==="normal"&&T in Ki&&(P=Ki[T]),L===""||L?(H=parseFloat(P),L===!0||isFinite(H)?H||0:P):P}}),N.each(["height","width"],function(V,T){N.cssHooks[T]={get:function(L,G,P){if(G)return tn.test(N.css(L,"display"))&&(!L.getClientRects().length||!L.getBoundingClientRect().width)?q(L,In,function(){return ko(L,T,P)}):ko(L,T,P)},set:function(L,G,P){var H,se=Zt(L),ye=!p.scrollboxSize()&&se.position==="absolute",Ze=ye||P,_e=Ze&&N.css(L,"boxSizing",!1,se)==="border-box",Rt=P?ms(L,T,P,_e,se):0;return _e&&ye&&(Rt-=Math.ceil(L["offset"+T[0].toUpperCase()+T.slice(1)]-parseFloat(se[T])-ms(L,T,"border",!1,se)-.5)),Rt&&(H=Ht.exec(G))&&(H[3]||"px")!=="px"&&(L.style[T]=G,G=N.css(L,T)),Zs(L,G,Rt)}}}),N.cssHooks.marginLeft=ke(p.reliableMarginLeft,function(V,T){if(T)return(parseFloat(Qe(V,"marginLeft"))||V.getBoundingClientRect().left-q(V,{marginLeft:0},function(){return V.getBoundingClientRect().left}))+"px"}),N.each({margin:"",padding:"",border:"Width"},function(V,T){N.cssHooks[V+T]={expand:function(L){for(var G=0,P={},H=typeof L=="string"?L.split(" "):[L];G<4;G++)P[V+Fi[G]+T]=H[G]||H[G-2]||H[0];return P}},V!=="margin"&&(N.cssHooks[V+T].set=Zs)}),N.fn.extend({css:function(V,T){return si(this,function(L,G,P){var H,se,ye={},Ze=0;if(Array.isArray(G)){for(H=Zt(L),se=G.length;Ze<se;Ze++)ye[G[Ze]]=N.css(L,G[Ze],!1,H);return ye}return P!==void 0?N.style(L,G,P):N.css(L,G)},V,T,arguments.length>1)}});function ps(V,T,L,G,P){return new ps.prototype.init(V,T,L,G,P)}N.Tween=ps,ps.prototype={constructor:ps,init:function(V,T,L,G,P,H){this.elem=V,this.prop=L,this.easing=P||N.easing._default,this.options=T,this.start=this.now=this.cur(),this.end=G,this.unit=H||(N.cssNumber[L]?"":"px")},cur:function(){var V=ps.propHooks[this.prop];return V&&V.get?V.get(this):ps.propHooks._default.get(this)},run:function(V){var T,L=ps.propHooks[this.prop];return this.options.duration?this.pos=T=N.easing[this.easing](V,this.options.duration*V,0,1,this.options.duration):this.pos=T=V,this.now=(this.end-this.start)*T+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),L&&L.set?L.set(this):ps.propHooks._default.set(this),this}},ps.prototype.init.prototype=ps.prototype,ps.propHooks={_default:{get:function(V){var T;return V.elem.nodeType!==1||V.elem[V.prop]!=null&&V.elem.style[V.prop]==null?V.elem[V.prop]:(T=N.css(V.elem,V.prop,""),!T||T==="auto"?0:T)},set:function(V){N.fx.step[V.prop]?N.fx.step[V.prop](V):V.elem.nodeType===1&&(N.cssHooks[V.prop]||V.elem.style[Ct(V.prop)]!=null)?N.style(V.elem,V.prop,V.now+V.unit):V.elem[V.prop]=V.now}}},ps.propHooks.scrollTop=ps.propHooks.scrollLeft={set:function(V){V.elem.nodeType&&V.elem.parentNode&&(V.elem[V.prop]=V.now)}},N.easing={linear:function(V){return V},swing:function(V){return .5-Math.cos(V*Math.PI)/2},_default:"swing"},N.fx=ps.prototype.init,N.fx.step={};var $n,sn,mr=/^(?:toggle|show|hide)$/,js=/queueHooks$/;function ml(){sn&&(b.hidden===!1&&e.requestAnimationFrame?e.requestAnimationFrame(ml):e.setTimeout(ml,N.fx.interval),N.fx.tick())}function am(){return e.setTimeout(function(){$n=void 0}),$n=Date.now()}function Ho(V,T){var L,G=0,P={height:V};for(T=T?1:0;G<4;G+=2-T)L=Fi[G],P["margin"+L]=P["padding"+L]=V;return T&&(P.opacity=P.width=V),P}function dm(V,T,L){for(var G,P=(nr.tweeners[T]||[]).concat(nr.tweeners["*"]),H=0,se=P.length;H<se;H++)if(G=P[H].call(L,T,V))return G}function xo(V,T,L){var G,P,H,se,ye,Ze,_e,Rt,Bt="width"in T||"height"in T,ht=this,qt={},Jn=V.style,Bs=V.nodeType&&xi(V),ss=Pe.get(V,"fxshow");L.queue||(se=N._queueHooks(V,"fx"),se.unqueued==null&&(se.unqueued=0,ye=se.empty.fire,se.empty.fire=function(){se.unqueued||ye()}),se.unqueued++,ht.always(function(){ht.always(function(){se.unqueued--,N.queue(V,"fx").length||se.empty.fire()})}));for(G in T)if(P=T[G],mr.test(P)){if(delete T[G],H=H||P==="toggle",P===(Bs?"hide":"show"))if(P==="show"&&ss&&ss[G]!==void 0)Bs=!0;else continue;qt[G]=ss&&ss[G]||N.style(V,G)}if(Ze=!N.isEmptyObject(T),!(!Ze&&N.isEmptyObject(qt))){Bt&&V.nodeType===1&&(L.overflow=[Jn.overflow,Jn.overflowX,Jn.overflowY],_e=ss&&ss.display,_e==null&&(_e=Pe.get(V,"display")),Rt=N.css(V,"display"),Rt==="none"&&(_e?Rt=_e:(st([V],!0),_e=V.style.display||_e,Rt=N.css(V,"display"),st([V]))),(Rt==="inline"||Rt==="inline-block"&&_e!=null)&&N.css(V,"float")==="none"&&(Ze||(ht.done(function(){Jn.display=_e}),_e==null&&(Rt=Jn.display,_e=Rt==="none"?"":Rt)),Jn.display="inline-block")),L.overflow&&(Jn.overflow="hidden",ht.always(function(){Jn.overflow=L.overflow[0],Jn.overflowX=L.overflow[1],Jn.overflowY=L.overflow[2]})),Ze=!1;for(G in qt)Ze||(ss?"hidden"in ss&&(Bs=ss.hidden):ss=Pe.access(V,"fxshow",{display:_e}),H&&(ss.hidden=!Bs),Bs&&st([V],!0),ht.done(function(){Bs||st([V]),Pe.remove(V,"fxshow");for(G in qt)N.style(V,G,qt[G])})),Ze=dm(Bs?ss[G]:0,G,ht),G in ss||(ss[G]=Ze.start,Bs&&(Ze.end=Ze.start,Ze.start=0))}}function Ee(V,T){var L,G,P,H,se;for(L in V)if(G=ie(L),P=T[G],H=V[L],Array.isArray(H)&&(P=H[1],H=V[L]=H[0]),L!==G&&(V[G]=H,delete V[L]),se=N.cssHooks[G],se&&"expand"in se){H=se.expand(H),delete V[G];for(L in H)L in V||(V[L]=H[L],T[L]=P)}else T[G]=P}function nr(V,T,L){var G,P,H=0,se=nr.prefilters.length,ye=N.Deferred().always(function(){delete Ze.elem}),Ze=function(){if(P)return!1;for(var Bt=$n||am(),ht=Math.max(0,_e.startTime+_e.duration-Bt),qt=ht/_e.duration||0,Jn=1-qt,Bs=0,ss=_e.tweens.length;Bs<ss;Bs++)_e.tweens[Bs].run(Jn);return ye.notifyWith(V,[_e,Jn,ht]),Jn<1&&ss?ht:(ss||ye.notifyWith(V,[_e,1,0]),ye.resolveWith(V,[_e]),!1)},_e=ye.promise({elem:V,props:N.extend({},T),opts:N.extend(!0,{specialEasing:{},easing:N.easing._default},L),originalProperties:T,originalOptions:L,startTime:$n||am(),duration:L.duration,tweens:[],createTween:function(Bt,ht){var qt=N.Tween(V,_e.opts,Bt,ht,_e.opts.specialEasing[Bt]||_e.opts.easing);return _e.tweens.push(qt),qt},stop:function(Bt){var ht=0,qt=Bt?_e.tweens.length:0;if(P)return this;for(P=!0;ht<qt;ht++)_e.tweens[ht].run(1);return Bt?(ye.notifyWith(V,[_e,1,0]),ye.resolveWith(V,[_e,Bt])):ye.rejectWith(V,[_e,Bt]),this}}),Rt=_e.props;for(Ee(Rt,_e.opts.specialEasing);H<se;H++)if(G=nr.prefilters[H].call(_e,V,Rt,_e.opts),G)return g(G.stop)&&(N._queueHooks(_e.elem,_e.opts.queue).stop=G.stop.bind(G)),G;return N.map(Rt,dm,_e),g(_e.opts.start)&&_e.opts.start.call(V,_e),_e.progress(_e.opts.progress).done(_e.opts.done,_e.opts.complete).fail(_e.opts.fail).always(_e.opts.always),N.fx.timer(N.extend(Ze,{elem:V,anim:_e,queue:_e.opts.queue})),_e}N.Animation=N.extend(nr,{tweeners:{"*":[function(V,T){var L=this.createTween(V,T);return Zi(L.elem,V,Ht.exec(T),L),L}]},tweener:function(V,T){g(V)?(T=V,V=["*"]):V=V.match(Ye);for(var L,G=0,P=V.length;G<P;G++)L=V[G],nr.tweeners[L]=nr.tweeners[L]||[],nr.tweeners[L].unshift(T)},prefilters:[xo],prefilter:function(V,T){T?nr.prefilters.unshift(V):nr.prefilters.push(V)}}),N.speed=function(V,T,L){var G=V&&typeof V=="object"?N.extend({},V):{complete:L||!L&&T||g(V)&&V,duration:V,easing:L&&T||T&&!g(T)&&T};return N.fx.off?G.duration=0:typeof G.duration!="number"&&(G.duration in N.fx.speeds?G.duration=N.fx.speeds[G.duration]:G.duration=N.fx.speeds._default),(G.queue==null||G.queue===!0)&&(G.queue="fx"),G.old=G.complete,G.complete=function(){g(G.old)&&G.old.call(this),G.queue&&N.dequeue(this,G.queue)},G},N.fn.extend({fadeTo:function(V,T,L,G){return this.filter(xi).css("opacity",0).show().end().animate({opacity:T},V,L,G)},animate:function(V,T,L,G){var P=N.isEmptyObject(V),H=N.speed(T,L,G),se=function(){var ye=nr(this,N.extend({},V),H);(P||Pe.get(this,"finish"))&&ye.stop(!0)};return se.finish=se,P||H.queue===!1?this.each(se):this.queue(H.queue,se)},stop:function(V,T,L){var G=function(P){var H=P.stop;delete P.stop,H(L)};return typeof V!="string"&&(L=T,T=V,V=void 0),T&&this.queue(V||"fx",[]),this.each(function(){var P=!0,H=V!=null&&V+"queueHooks",se=N.timers,ye=Pe.get(this);if(H)ye[H]&&ye[H].stop&&G(ye[H]);else for(H in ye)ye[H]&&ye[H].stop&&js.test(H)&&G(ye[H]);for(H=se.length;H--;)se[H].elem===this&&(V==null||se[H].queue===V)&&(se[H].anim.stop(L),P=!1,se.splice(H,1));(P||!L)&&N.dequeue(this,V)})},finish:function(V){return V!==!1&&(V=V||"fx"),this.each(function(){var T,L=Pe.get(this),G=L[V+"queue"],P=L[V+"queueHooks"],H=N.timers,se=G?G.length:0;for(L.finish=!0,N.queue(this,V,[]),P&&P.stop&&P.stop.call(this,!0),T=H.length;T--;)H[T].elem===this&&H[T].queue===V&&(H[T].anim.stop(!0),H.splice(T,1));for(T=0;T<se;T++)G[T]&&G[T].finish&&G[T].finish.call(this);delete L.finish})}}),N.each(["toggle","show","hide"],function(V,T){var L=N.fn[T];N.fn[T]=function(G,P,H){return G==null||typeof G=="boolean"?L.apply(this,arguments):this.animate(Ho(T,!0),G,P,H)}}),N.each({slideDown:Ho("show"),slideUp:Ho("hide"),slideToggle:Ho("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(V,T){N.fn[V]=function(L,G,P){return this.animate(T,L,G,P)}}),N.timers=[],N.fx.tick=function(){var V,T=0,L=N.timers;for($n=Date.now();T<L.length;T++)V=L[T],!V()&&L[T]===V&&L.splice(T--,1);L.length||N.fx.stop(),$n=void 0},N.fx.timer=function(V){N.timers.push(V),N.fx.start()},N.fx.interval=13,N.fx.start=function(){sn||(sn=!0,ml())},N.fx.stop=function(){sn=null},N.fx.speeds={slow:600,fast:200,_default:400},N.fn.delay=function(V,T){return V=N.fx&&N.fx.speeds[V]||V,T=T||"fx",this.queue(T,function(L,G){var P=e.setTimeout(L,V);G.stop=function(){e.clearTimeout(P)}})},function(){var V=b.createElement("input"),T=b.createElement("select"),L=T.appendChild(b.createElement("option"));V.type="checkbox",p.checkOn=V.value!=="",p.optSelected=L.selected,V=b.createElement("input"),V.value="t",V.type="radio",p.radioValue=V.value==="t"}();var pr,sr=N.expr.attrHandle;N.fn.extend({attr:function(V,T){return si(this,N.attr,V,T,arguments.length>1)},removeAttr:function(V){return this.each(function(){N.removeAttr(this,V)})}}),N.extend({attr:function(V,T,L){var G,P,H=V.nodeType;if(!(H===3||H===8||H===2)){if(typeof V.getAttribute>"u")return N.prop(V,T,L);if((H!==1||!N.isXMLDoc(V))&&(P=N.attrHooks[T.toLowerCase()]||(N.expr.match.bool.test(T)?pr:void 0)),L!==void 0){if(L===null){N.removeAttr(V,T);return}return P&&"set"in P&&(G=P.set(V,L,T))!==void 0?G:(V.setAttribute(T,L+""),L)}return P&&"get"in P&&(G=P.get(V,T))!==null?G:(G=N.find.attr(V,T),G??void 0)}},attrHooks:{type:{set:function(V,T){if(!p.radioValue&&T==="radio"&&Q(V,"input")){var L=V.value;return V.setAttribute("type",T),L&&(V.value=L),T}}}},removeAttr:function(V,T){var L,G=0,P=T&&T.match(Ye);if(P&&V.nodeType===1)for(;L=P[G++];)V.removeAttribute(L)}}),pr={set:function(V,T,L){return T===!1?N.removeAttr(V,L):V.setAttribute(L,L),L}},N.each(N.expr.match.bool.source.match(/\w+/g),function(V,T){var L=sr[T]||N.find.attr;sr[T]=function(G,P,H){var se,ye,Ze=P.toLowerCase();return H||(ye=sr[Ze],sr[Ze]=se,se=L(G,P,H)!=null?Ze:null,sr[Ze]=ye),se}});var cm=/^(?:input|select|textarea|button)$/i,nu=/^(?:a|area)$/i;N.fn.extend({prop:function(V,T){return si(this,N.prop,V,T,arguments.length>1)},removeProp:function(V){return this.each(function(){delete this[N.propFix[V]||V]})}}),N.extend({prop:function(V,T,L){var G,P,H=V.nodeType;if(!(H===3||H===8||H===2))return(H!==1||!N.isXMLDoc(V))&&(T=N.propFix[T]||T,P=N.propHooks[T]),L!==void 0?P&&"set"in P&&(G=P.set(V,L,T))!==void 0?G:V[T]=L:P&&"get"in P&&(G=P.get(V,T))!==null?G:V[T]},propHooks:{tabIndex:{get:function(V){var T=N.find.attr(V,"tabindex");return T?parseInt(T,10):cm.test(V.nodeName)||nu.test(V.nodeName)&&V.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),p.optSelected||(N.propHooks.selected={get:function(V){var T=V.parentNode;return T&&T.parentNode&&T.parentNode.selectedIndex,null},set:function(V){var T=V.parentNode;T&&(T.selectedIndex,T.parentNode&&T.parentNode.selectedIndex)}}),N.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){N.propFix[this.toLowerCase()]=this});function o0(V){var T=V.match(Ye)||[];return T.join(" ")}function Nn(V){return V.getAttribute&&V.getAttribute("class")||""}function qi(V){return Array.isArray(V)?V:typeof V=="string"?V.match(Ye)||[]:[]}N.fn.extend({addClass:function(V){var T,L,G,P,H,se;return g(V)?this.each(function(ye){N(this).addClass(V.call(this,ye,Nn(this)))}):(T=qi(V),T.length?this.each(function(){if(G=Nn(this),L=this.nodeType===1&&" "+o0(G)+" ",L){for(H=0;H<T.length;H++)P=T[H],L.indexOf(" "+P+" ")<0&&(L+=P+" ");se=o0(L),G!==se&&this.setAttribute("class",se)}}):this)},removeClass:function(V){var T,L,G,P,H,se;return g(V)?this.each(function(ye){N(this).removeClass(V.call(this,ye,Nn(this)))}):arguments.length?(T=qi(V),T.length?this.each(function(){if(G=Nn(this),L=this.nodeType===1&&" "+o0(G)+" ",L){for(H=0;H<T.length;H++)for(P=T[H];L.indexOf(" "+P+" ")>-1;)L=L.replace(" "+P+" "," ");se=o0(L),G!==se&&this.setAttribute("class",se)}}):this):this.attr("class","")},toggleClass:function(V,T){var L,G,P,H,se=typeof V,ye=se==="string"||Array.isArray(V);return g(V)?this.each(function(Ze){N(this).toggleClass(V.call(this,Ze,Nn(this),T),T)}):typeof T=="boolean"&&ye?T?this.addClass(V):this.removeClass(V):(L=qi(V),this.each(function(){if(ye)for(H=N(this),P=0;P<L.length;P++)G=L[P],H.hasClass(G)?H.removeClass(G):H.addClass(G);else(V===void 0||se==="boolean")&&(G=Nn(this),G&&Pe.set(this,"__className__",G),this.setAttribute&&this.setAttribute("class",G||V===!1?"":Pe.get(this,"__className__")||""))}))},hasClass:function(V){var T,L,G=0;for(T=" "+V+" ";L=this[G++];)if(L.nodeType===1&&(" "+o0(Nn(L))+" ").indexOf(T)>-1)return!0;return!1}});var Qo=/\r/g;N.fn.extend({val:function(V){var T,L,G,P=this[0];return arguments.length?(G=g(V),this.each(function(H){var se;this.nodeType===1&&(G?se=V.call(this,H,N(this).val()):se=V,se==null?se="":typeof se=="number"?se+="":Array.isArray(se)&&(se=N.map(se,function(ye){return ye==null?"":ye+""})),T=N.valHooks[this.type]||N.valHooks[this.nodeName.toLowerCase()],(!T||!("set"in T)||T.set(this,se,"value")===void 0)&&(this.value=se))})):P?(T=N.valHooks[P.type]||N.valHooks[P.nodeName.toLowerCase()],T&&"get"in T&&(L=T.get(P,"value"))!==void 0?L:(L=P.value,typeof L=="string"?L.replace(Qo,""):L??"")):void 0}}),N.extend({valHooks:{option:{get:function(V){var T=N.find.attr(V,"value");return T??o0(N.text(V))}},select:{get:function(V){var T,L,G,P=V.options,H=V.selectedIndex,se=V.type==="select-one",ye=se?null:[],Ze=se?H+1:P.length;for(H<0?G=Ze:G=se?H:0;G<Ze;G++)if(L=P[G],(L.selected||G===H)&&!L.disabled&&(!L.parentNode.disabled||!Q(L.parentNode,"optgroup"))){if(T=N(L).val(),se)return T;ye.push(T)}return ye},set:function(V,T){for(var L,G,P=V.options,H=N.makeArray(T),se=P.length;se--;)G=P[se],(G.selected=N.inArray(N.valHooks.option.get(G),H)>-1)&&(L=!0);return L||(V.selectedIndex=-1),H}}}}),N.each(["radio","checkbox"],function(){N.valHooks[this]={set:function(V,T){if(Array.isArray(T))return V.checked=N.inArray(N(V).val(),T)>-1}},p.checkOn||(N.valHooks[this].get=function(V){return V.getAttribute("value")===null?"on":V.value})});var mb=e.location,Bk={guid:Date.now()},IM=/\?/;N.parseXML=function(V){var T,L;if(!V||typeof V!="string")return null;try{T=new e.DOMParser().parseFromString(V,"text/xml")}catch{}return L=T&&T.getElementsByTagName("parsererror")[0],(!T||L)&&N.error("Invalid XML: "+(L?N.map(L.childNodes,function(G){return G.textContent}).join(`
- `):V)),T};var vd=/^(?:focusinfocus|focusoutblur)$/,Lk=function(V){V.stopPropagation()};N.extend(N.event,{trigger:function(V,T,L,G){var P,H,se,ye,Ze,_e,Rt,Bt,ht=[L||b],qt=h.call(V,"type")?V.type:V,Jn=h.call(V,"namespace")?V.namespace.split("."):[];if(H=Bt=se=L=L||b,!(L.nodeType===3||L.nodeType===8)&&!vd.test(qt+N.event.triggered)&&(qt.indexOf(".")>-1&&(Jn=qt.split("."),qt=Jn.shift(),Jn.sort()),Ze=qt.indexOf(":")<0&&"on"+qt,V=V[N.expando]?V:new N.Event(qt,typeof V=="object"&&V),V.isTrigger=G?2:3,V.namespace=Jn.join("."),V.rnamespace=V.namespace?new RegExp("(^|\\.)"+Jn.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,V.result=void 0,V.target||(V.target=L),T=T==null?[V]:N.makeArray(T,[V]),Rt=N.event.special[qt]||{},!(!G&&Rt.trigger&&Rt.trigger.apply(L,T)===!1))){if(!G&&!Rt.noBubble&&!f(L)){for(ye=Rt.delegateType||qt,vd.test(ye+qt)||(H=H.parentNode);H;H=H.parentNode)ht.push(H),se=H;se===(L.ownerDocument||b)&&ht.push(se.defaultView||se.parentWindow||e)}for(P=0;(H=ht[P++])&&!V.isPropagationStopped();)Bt=H,V.type=P>1?ye:Rt.bindType||qt,_e=(Pe.get(H,"events")||Object.create(null))[V.type]&&Pe.get(H,"handle"),_e&&_e.apply(H,T),_e=Ze&&H[Ze],_e&&_e.apply&&it(H)&&(V.result=_e.apply(H,T),V.result===!1&&V.preventDefault());return V.type=qt,!G&&!V.isDefaultPrevented()&&(!Rt._default||Rt._default.apply(ht.pop(),T)===!1)&&it(L)&&Ze&&g(L[qt])&&!f(L)&&(se=L[Ze],se&&(L[Ze]=null),N.event.triggered=qt,V.isPropagationStopped()&&Bt.addEventListener(qt,Lk),L[qt](),V.isPropagationStopped()&&Bt.removeEventListener(qt,Lk),N.event.triggered=void 0,se&&(L[Ze]=se)),V.result}},simulate:function(V,T,L){var G=N.extend(new N.Event,L,{type:V,isSimulated:!0});N.event.trigger(G,null,T)}}),N.fn.extend({trigger:function(V,T){return this.each(function(){N.event.trigger(V,T,this)})},triggerHandler:function(V,T){var L=this[0];if(L)return N.event.trigger(V,T,L,!0)}});var bO=/\[\]$/,vk=/\r?\n/g,UO=/^(?:submit|button|image|reset|file)$/i,FO=/^(?:input|select|textarea|keygen)/i;function EM(V,T,L,G){var P;if(Array.isArray(T))N.each(T,function(H,se){L||bO.test(V)?G(V,se):EM(V+"["+(typeof se=="object"&&se!=null?H:"")+"]",se,L,G)});else if(!L&&Z(T)==="object")for(P in T)EM(V+"["+P+"]",T[P],L,G);else G(V,T)}N.param=function(V,T){var L,G=[],P=function(H,se){var ye=g(se)?se():se;G[G.length]=encodeURIComponent(H)+"="+encodeURIComponent(ye??"")};if(V==null)return"";if(Array.isArray(V)||V.jquery&&!N.isPlainObject(V))N.each(V,function(){P(this.name,this.value)});else for(L in V)EM(L,V[L],T,P);return G.join("&")},N.fn.extend({serialize:function(){return N.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var V=N.prop(this,"elements");return V?N.makeArray(V):this}).filter(function(){var V=this.type;return this.name&&!N(this).is(":disabled")&&FO.test(this.nodeName)&&!UO.test(V)&&(this.checked||!Ve.test(V))}).map(function(V,T){var L=N(this).val();return L==null?null:Array.isArray(L)?N.map(L,function(G){return{name:T.name,value:G.replace(vk,`\r
- `)}}):{name:T.name,value:L.replace(vk,`\r
- `)}}).get()}});var AO=/%20/g,ZO=/#.*$/,DM=/([?&])_=[^&]*/,SO=/^(.*?):[ \t]*([^\r\n]*)$/mg,kd=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,NO=/^(?:GET|HEAD)$/,su=/^\/\//,hA={},GM={},JM="*/".concat("*"),XM=b.createElement("a");XM.href=mb.href;function kk(V){return function(T,L){typeof T!="string"&&(L=T,T="*");var G,P=0,H=T.toLowerCase().match(Ye)||[];if(g(L))for(;G=H[P++];)G[0]==="+"?(G=G.slice(1)||"*",(V[G]=V[G]||[]).unshift(L)):(V[G]=V[G]||[]).push(L)}}function xk(V,T,L,G){var P={},H=V===GM;function se(ye){var Ze;return P[ye]=!0,N.each(V[ye]||[],function(_e,Rt){var Bt=Rt(T,L,G);if(typeof Bt=="string"&&!H&&!P[Bt])return T.dataTypes.unshift(Bt),se(Bt),!1;if(H)return!(Ze=Bt)}),Ze}return se(T.dataTypes[0])||!P["*"]&&se("*")}function YM(V,T){var L,G,P=N.ajaxSettings.flatOptions||{};for(L in T)T[L]!==void 0&&((P[L]?V:G||(G={}))[L]=T[L]);return G&&N.extend(!0,V,G),V}function RO(V,T,L){for(var G,P,H,se,ye=V.contents,Ze=V.dataTypes;Ze[0]==="*";)Ze.shift(),G===void 0&&(G=V.mimeType||T.getResponseHeader("Content-Type"));if(G){for(P in ye)if(ye[P]&&ye[P].test(G)){Ze.unshift(P);break}}if(Ze[0]in L)H=Ze[0];else{for(P in L){if(!Ze[0]||V.converters[P+" "+Ze[0]]){H=P;break}se||(se=P)}H=H||se}if(H)return H!==Ze[0]&&Ze.unshift(H),L[H]}function _M(V,T,L,G){var P,H,se,ye,Ze,_e={},Rt=V.dataTypes.slice();if(Rt[1])for(se in V.converters)_e[se.toLowerCase()]=V.converters[se];for(H=Rt.shift();H;)if(V.responseFields[H]&&(L[V.responseFields[H]]=T),!Ze&&G&&V.dataFilter&&(T=V.dataFilter(T,V.dataType)),Ze=H,H=Rt.shift(),H){if(H==="*")H=Ze;else if(Ze!=="*"&&Ze!==H){if(se=_e[Ze+" "+H]||_e["* "+H],!se){for(P in _e)if(ye=P.split(" "),ye[1]===H&&(se=_e[Ze+" "+ye[0]]||_e["* "+ye[0]],se)){se===!0?se=_e[P]:_e[P]!==!0&&(H=ye[0],Rt.unshift(ye[1]));break}}if(se!==!0)if(se&&V.throws)T=se(T);else try{T=se(T)}catch(Bt){return{state:"parsererror",error:se?Bt:"No conversion from "+Ze+" to "+H}}}}return{state:"success",data:T}}N.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:mb.href,type:"GET",isLocal:kd.test(mb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":JM,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":N.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(V,T){return T?YM(YM(V,N.ajaxSettings),T):YM(N.ajaxSettings,V)},ajaxPrefilter:kk(hA),ajaxTransport:kk(GM),ajax:function(V,T){typeof V=="object"&&(T=V,V=void 0),T=T||{};var L,G,P,H,se,ye,Ze,_e,Rt,Bt,ht=N.ajaxSetup({},T),qt=ht.context||ht,Jn=ht.context&&(qt.nodeType||qt.jquery)?N(qt):N.event,Bs=N.Deferred(),ss=N.Callbacks("once memory"),pl=ht.statusCode||{},Hr={},ou={},ph="canceled",Ss={readyState:0,getResponseHeader:function(xs){var gr;if(Ze){if(!H)for(H={};gr=SO.exec(P);)H[gr[1].toLowerCase()+" "]=(H[gr[1].toLowerCase()+" "]||[]).concat(gr[2]);gr=H[xs.toLowerCase()+" "]}return gr==null?null:gr.join(", ")},getAllResponseHeaders:function(){return Ze?P:null},setRequestHeader:function(xs,gr){return Ze==null&&(xs=ou[xs.toLowerCase()]=ou[xs.toLowerCase()]||xs,Hr[xs]=gr),this},overrideMimeType:function(xs){return Ze==null&&(ht.mimeType=xs),this},statusCode:function(xs){var gr;if(xs)if(Ze)Ss.always(xs[Ss.status]);else for(gr in xs)pl[gr]=[pl[gr],xs[gr]];return this},abort:function(xs){var gr=xs||ph;return L&&L.abort(gr),r0(0,gr),this}};if(Bs.promise(Ss),ht.url=((V||ht.url||mb.href)+"").replace(su,mb.protocol+"//"),ht.type=T.method||T.type||ht.method||ht.type,ht.dataTypes=(ht.dataType||"*").toLowerCase().match(Ye)||[""],ht.crossDomain==null){ye=b.createElement("a");try{ye.href=ht.url,ye.href=ye.href,ht.crossDomain=XM.protocol+"//"+XM.host!=ye.protocol+"//"+ye.host}catch{ht.crossDomain=!0}}if(ht.data&&ht.processData&&typeof ht.data!="string"&&(ht.data=N.param(ht.data,ht.traditional)),xk(hA,ht,T,Ss),Ze)return Ss;_e=N.event&&ht.global,_e&&N.active++===0&&N.event.trigger("ajaxStart"),ht.type=ht.type.toUpperCase(),ht.hasContent=!NO.test(ht.type),G=ht.url.replace(ZO,""),ht.hasContent?ht.data&&ht.processData&&(ht.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(ht.data=ht.data.replace(AO,"+")):(Bt=ht.url.slice(G.length),ht.data&&(ht.processData||typeof ht.data=="string")&&(G+=(IM.test(G)?"&":"?")+ht.data,delete ht.data),ht.cache===!1&&(G=G.replace(DM,"$1"),Bt=(IM.test(G)?"&":"?")+"_="+Bk.guid+++Bt),ht.url=G+Bt),ht.ifModified&&(N.lastModified[G]&&Ss.setRequestHeader("If-Modified-Since",N.lastModified[G]),N.etag[G]&&Ss.setRequestHeader("If-None-Match",N.etag[G])),(ht.data&&ht.hasContent&&ht.contentType!==!1||T.contentType)&&Ss.setRequestHeader("Content-Type",ht.contentType),Ss.setRequestHeader("Accept",ht.dataTypes[0]&&ht.accepts[ht.dataTypes[0]]?ht.accepts[ht.dataTypes[0]]+(ht.dataTypes[0]!=="*"?", "+JM+"; q=0.01":""):ht.accepts["*"]);for(Rt in ht.headers)Ss.setRequestHeader(Rt,ht.headers[Rt]);if(ht.beforeSend&&(ht.beforeSend.call(qt,Ss,ht)===!1||Ze))return Ss.abort();if(ph="abort",ss.add(ht.complete),Ss.done(ht.success),Ss.fail(ht.error),L=xk(GM,ht,T,Ss),!L)r0(-1,"No Transport");else{if(Ss.readyState=1,_e&&Jn.trigger("ajaxSend",[Ss,ht]),Ze)return Ss;ht.async&&ht.timeout>0&&(se=e.setTimeout(function(){Ss.abort("timeout")},ht.timeout));try{Ze=!1,L.send(Hr,r0)}catch(xs){if(Ze)throw xs;r0(-1,xs)}}function r0(xs,gr,gb,jM){var gh,mA,ru,hm,um,xd=gr;Ze||(Ze=!0,se&&e.clearTimeout(se),L=void 0,P=jM||"",Ss.readyState=xs>0?4:0,gh=xs>=200&&xs<300||xs===304,gb&&(hm=RO(ht,Ss,gb)),!gh&&N.inArray("script",ht.dataTypes)>-1&&N.inArray("json",ht.dataTypes)<0&&(ht.converters["text script"]=function(){}),hm=_M(ht,hm,Ss,gh),gh?(ht.ifModified&&(um=Ss.getResponseHeader("Last-Modified"),um&&(N.lastModified[G]=um),um=Ss.getResponseHeader("etag"),um&&(N.etag[G]=um)),xs===204||ht.type==="HEAD"?xd="nocontent":xs===304?xd="notmodified":(xd=hm.state,mA=hm.data,ru=hm.error,gh=!ru)):(ru=xd,(xs||!xd)&&(xd="error",xs<0&&(xs=0))),Ss.status=xs,Ss.statusText=(gr||xd)+"",gh?Bs.resolveWith(qt,[mA,xd,Ss]):Bs.rejectWith(qt,[Ss,xd,ru]),Ss.statusCode(pl),pl=void 0,_e&&Jn.trigger(gh?"ajaxSuccess":"ajaxError",[Ss,ht,gh?mA:ru]),ss.fireWith(qt,[Ss,xd]),_e&&(Jn.trigger("ajaxComplete",[Ss,ht]),--N.active||N.event.trigger("ajaxStop")))}return Ss},getJSON:function(V,T,L){return N.get(V,T,L,"json")},getScript:function(V,T){return N.get(V,void 0,T,"script")}}),N.each(["get","post"],function(V,T){N[T]=function(L,G,P,H){return g(G)&&(H=H||P,P=G,G=void 0),N.ajax(N.extend({url:L,type:T,dataType:H,data:G,success:P},N.isPlainObject(L)&&L))}}),N.ajaxPrefilter(function(V){var T;for(T in V.headers)T.toLowerCase()==="content-type"&&(V.contentType=V.headers[T]||"")}),N._evalUrl=function(V,T,L){return N.ajax({url:V,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(G){N.globalEval(G,T,L)}})},N.fn.extend({wrapAll:function(V){var T;return this[0]&&(g(V)&&(V=V.call(this[0])),T=N(V,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&T.insertBefore(this[0]),T.map(function(){for(var L=this;L.firstElementChild;)L=L.firstElementChild;return L}).append(this)),this},wrapInner:function(V){return g(V)?this.each(function(T){N(this).wrapInner(V.call(this,T))}):this.each(function(){var T=N(this),L=T.contents();L.length?L.wrapAll(V):T.append(V)})},wrap:function(V){var T=g(V);return this.each(function(L){N(this).wrapAll(T?V.call(this,L):V)})},unwrap:function(V){return this.parent(V).not("body").each(function(){N(this).replaceWith(this.childNodes)}),this}}),N.expr.pseudos.hidden=function(V){return!N.expr.pseudos.visible(V)},N.expr.pseudos.visible=function(V){return!!(V.offsetWidth||V.offsetHeight||V.getClientRects().length)},N.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch{}};var ed={0:200,1223:204},mh=N.ajaxSettings.xhr();p.cors=!!mh&&"withCredentials"in mh,p.ajax=mh=!!mh,N.ajaxTransport(function(V){var T,L;if(p.cors||mh&&!V.crossDomain)return{send:function(G,P){var H,se=V.xhr();if(se.open(V.type,V.url,V.async,V.username,V.password),V.xhrFields)for(H in V.xhrFields)se[H]=V.xhrFields[H];V.mimeType&&se.overrideMimeType&&se.overrideMimeType(V.mimeType),!V.crossDomain&&!G["X-Requested-With"]&&(G["X-Requested-With"]="XMLHttpRequest");for(H in G)se.setRequestHeader(H,G[H]);T=function(ye){return function(){T&&(T=L=se.onload=se.onerror=se.onabort=se.ontimeout=se.onreadystatechange=null,ye==="abort"?se.abort():ye==="error"?typeof se.status!="number"?P(0,"error"):P(se.status,se.statusText):P(ed[se.status]||se.status,se.statusText,(se.responseType||"text")!=="text"||typeof se.responseText!="string"?{binary:se.response}:{text:se.responseText},se.getAllResponseHeaders()))}},se.onload=T(),L=se.onerror=se.ontimeout=T("error"),se.onabort!==void 0?se.onabort=L:se.onreadystatechange=function(){se.readyState===4&&e.setTimeout(function(){T&&L()})},T=T("abort");try{se.send(V.hasContent&&V.data||null)}catch(ye){if(T)throw ye}},abort:function(){T&&T()}}}),N.ajaxPrefilter(function(V){V.crossDomain&&(V.contents.script=!1)}),N.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(V){return N.globalEval(V),V}}}),N.ajaxPrefilter("script",function(V){V.cache===void 0&&(V.cache=!1),V.crossDomain&&(V.type="GET")}),N.ajaxTransport("script",function(V){if(V.crossDomain||V.scriptAttrs){var T,L;return{send:function(G,P){T=N("<script>").attr(V.scriptAttrs||{}).prop({charset:V.scriptCharset,src:V.url}).on("load error",L=function(H){T.remove(),L=null,H&&P(H.type==="error"?404:200,H.type)}),b.head.appendChild(T[0])},abort:function(){L&&L()}}}});var Ik=[],pb=/(=)\?(?=&|$)|\?\?/;N.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var V=Ik.pop()||N.expando+"_"+Bk.guid++;return this[V]=!0,V}}),N.ajaxPrefilter("json jsonp",function(V,T,L){var G,P,H,se=V.jsonp!==!1&&(pb.test(V.url)?"url":typeof V.data=="string"&&(V.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&pb.test(V.data)&&"data");if(se||V.dataTypes[0]==="jsonp")return G=V.jsonpCallback=g(V.jsonpCallback)?V.jsonpCallback():V.jsonpCallback,se?V[se]=V[se].replace(pb,"$1"+G):V.jsonp!==!1&&(V.url+=(IM.test(V.url)?"&":"?")+V.jsonp+"="+G),V.converters["script json"]=function(){return H||N.error(G+" was not called"),H[0]},V.dataTypes[0]="json",P=e[G],e[G]=function(){H=arguments},L.always(function(){P===void 0?N(e).removeProp(G):e[G]=P,V[G]&&(V.jsonpCallback=T.jsonpCallback,Ik.push(G)),H&&g(P)&&P(H[0]),H=P=void 0}),"script"}),p.createHTMLDocument=function(){var V=b.implementation.createHTMLDocument("").body;return V.innerHTML="<form></form><form></form>",V.childNodes.length===2}(),N.parseHTML=function(V,T,L){if(typeof V!="string")return[];typeof T=="boolean"&&(L=T,T=!1);var G,P,H;return T||(p.createHTMLDocument?(T=b.implementation.createHTMLDocument(""),G=T.createElement("base"),G.href=b.location.href,T.head.appendChild(G)):T=b),P=ze.exec(V),H=!L&&[],P?[T.createElement(P[1])]:(P=ae([V],T,H),H&&H.length&&N(H).remove(),N.merge([],P.childNodes))},N.fn.load=function(V,T,L){var G,P,H,se=this,ye=V.indexOf(" ");return ye>-1&&(G=o0(V.slice(ye)),V=V.slice(0,ye)),g(T)?(L=T,T=void 0):T&&typeof T=="object"&&(P="POST"),se.length>0&&N.ajax({url:V,type:P||"GET",dataType:"html",data:T}).done(function(Ze){H=arguments,se.html(G?N("<div>").append(N.parseHTML(Ze)).find(G):Ze)}).always(L&&function(Ze,_e){se.each(function(){L.apply(this,H||[Ze.responseText,_e,Ze])})}),this},N.expr.pseudos.animated=function(V){return N.grep(N.timers,function(T){return V===T.elem}).length},N.offset={setOffset:function(V,T,L){var G,P,H,se,ye,Ze,_e,Rt=N.css(V,"position"),Bt=N(V),ht={};Rt==="static"&&(V.style.position="relative"),ye=Bt.offset(),H=N.css(V,"top"),Ze=N.css(V,"left"),_e=(Rt==="absolute"||Rt==="fixed")&&(H+Ze).indexOf("auto")>-1,_e?(G=Bt.position(),se=G.top,P=G.left):(se=parseFloat(H)||0,P=parseFloat(Ze)||0),g(T)&&(T=T.call(V,L,N.extend({},ye))),T.top!=null&&(ht.top=T.top-ye.top+se),T.left!=null&&(ht.left=T.left-ye.left+P),"using"in T?T.using.call(V,ht):Bt.css(ht)}},N.fn.extend({offset:function(V){if(arguments.length)return V===void 0?this:this.each(function(P){N.offset.setOffset(this,V,P)});var T,L,G=this[0];if(G)return G.getClientRects().length?(T=G.getBoundingClientRect(),L=G.ownerDocument.defaultView,{top:T.top+L.pageYOffset,left:T.left+L.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var V,T,L,G=this[0],P={top:0,left:0};if(N.css(G,"position")==="fixed")T=G.getBoundingClientRect();else{for(T=this.offset(),L=G.ownerDocument,V=G.offsetParent||L.documentElement;V&&(V===L.body||V===L.documentElement)&&N.css(V,"position")==="static";)V=V.parentNode;V&&V!==G&&V.nodeType===1&&(P=N(V).offset(),P.top+=N.css(V,"borderTopWidth",!0),P.left+=N.css(V,"borderLeftWidth",!0))}return{top:T.top-P.top-N.css(G,"marginTop",!0),left:T.left-P.left-N.css(G,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var V=this.offsetParent;V&&N.css(V,"position")==="static";)V=V.offsetParent;return V||Dt})}}),N.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(V,T){var L=T==="pageYOffset";N.fn[V]=function(G){return si(this,function(P,H,se){var ye;if(f(P)?ye=P:P.nodeType===9&&(ye=P.defaultView),se===void 0)return ye?ye[T]:P[H];ye?ye.scrollTo(L?ye.pageXOffset:se,L?se:ye.pageYOffset):P[H]=se},V,G,arguments.length)}}),N.each(["top","left"],function(V,T){N.cssHooks[T]=ke(p.pixelPosition,function(L,G){if(G)return G=Qe(L,T),xe.test(G)?N(L).position()[T]+"px":G})}),N.each({Height:"height",Width:"width"},function(V,T){N.each({padding:"inner"+V,content:T,"":"outer"+V},function(L,G){N.fn[G]=function(P,H){var se=arguments.length&&(L||typeof P!="boolean"),ye=L||(P===!0||H===!0?"margin":"border");return si(this,function(Ze,_e,Rt){var Bt;return f(Ze)?G.indexOf("outer")===0?Ze["inner"+V]:Ze.document.documentElement["client"+V]:Ze.nodeType===9?(Bt=Ze.documentElement,Math.max(Ze.body["scroll"+V],Bt["scroll"+V],Ze.body["offset"+V],Bt["offset"+V],Bt["client"+V])):Rt===void 0?N.css(Ze,_e,ye):N.style(Ze,_e,Rt,ye)},T,se?P:void 0,se)}})}),N.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(V,T){N.fn[T]=function(L){return this.on(T,L)}}),N.fn.extend({bind:function(V,T,L){return this.on(V,null,T,L)},unbind:function(V,T){return this.off(V,null,T)},delegate:function(V,T,L,G){return this.on(T,V,L,G)},undelegate:function(V,T,L){return arguments.length===1?this.off(V,"**"):this.off(T,V||"**",L)},hover:function(V,T){return this.on("mouseenter",V).on("mouseleave",T||V)}}),N.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(V,T){N.fn[T]=function(L,G){return arguments.length>0?this.on(T,null,L,G):this.trigger(T)}});var uA=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;N.proxy=function(V,T){var L,G,P;if(typeof T=="string"&&(L=V[T],T=V,V=L),!!g(V))return G=o.call(arguments,2),P=function(){return V.apply(T||this,G.concat(o.call(arguments)))},P.guid=V.guid=V.guid||N.guid++,P},N.holdReady=function(V){V?N.readyWait++:N.ready(!0)},N.isArray=Array.isArray,N.parseJSON=JSON.parse,N.nodeName=Q,N.isFunction=g,N.isWindow=f,N.camelCase=ie,N.type=Z,N.now=Date.now,N.isNumeric=function(V){var T=N.type(V);return(T==="number"||T==="string")&&!isNaN(V-parseFloat(V))},N.trim=function(V){return V==null?"":(V+"").replace(uA,"$1")};var zM=e.jQuery,OM=e.$;return N.noConflict=function(V){return e.$===N&&(e.$=OM),V&&e.jQuery===N&&(e.jQuery=zM),N},typeof t>"u"&&(e.jQuery=e.$=N),N})})(pAe);var JGe=pAe.exports;const XGe=q2e(JGe);const YGe={class:"webuploader-container"},_Ge=["id"],zGe=["id"],OGe=["src"],xv={__name:"fileuploads",props:{projectId:Number,solverType:String,accept:String,upId:String,name:String,namelist:Array,gfname:String,imgSrc:String},emits:["Gassaddgfid","Gassaddbfid","upload-success","update-fileName","update-percentage","upload-status"],setup(s,{expose:e,emit:t}){const i=s;let n=X(!0),o=X(void 0),r=X(void 0),l=X("1212"),a=X([]),d=X(""),c=X(""),h=X();X([]);let u=X("");X("");let m=X("");X(""),X([]),ul(()=>{p()});const p=()=>{g(),m.value=g(),console.log("uuid.value",m.value),f()},g=()=>"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(b){var U=Math.random()*16|0,S=b=="x"?U:U&3|8;return S.toString(16)}),f=()=>{a.value=[],o.value=WebUploader.create({swf:"./js/Uploader.swf",server:"/airopt/TransServlet",formData:{},pick:{id:"#picker"+i.upId,multiple:!1},resize:!1,chunked:!0,chunkSize:2*1024*1024,threads:4}),o.value.on("fileQueued",b=>{r.value=b.name,console.log("fileName.value",r.value),t("update-fileName",r.value);const U=r.value.split(".").pop().toLowerCase();if(!i.accept.split(",").map(Z=>Z.trim().toLowerCase()).includes("."+U)){o.value.reset(),vi.error(`只支持 ${i.accept} 格式文件!`);return}o.value.md5File(b).progress(Z=>{console.log("Percentage:",Z)}).then(Z=>{l.value=Z}),a.value.length>0&&(o.value.removeFile(a.value[0].id),a.value=[]),a.value.push({id:b.id,name:b.name,msg:"等待上传...",percentage:0}),o.value.upload()}),o.value.on("uploadBeforeSend",(b,U,S)=>{U.chunk=b.chunk,U.chunks=b.chunks,U.bfid=m.value,U.fileName=r.value,U.channelNo="service",U.clientToken="e47b87eec69545559d1e81e56626da68",U.transCode="B00028",U.userId="5f06c8bc77234f969d13e160b54c27e3",S.Content="multipart",S.Type="form-data"}),o.value.on("uploadProgress",(b,U)=>{let S=Math.floor(U*100);a.value.forEach(Z=>{Z.id===b.id&&(Z.msg="上传中",t("upload-status","上传中")),h.value=Z.msg,Z.percentage=S,t("update-percentage",S)})}),o.value.on("uploadSuccess",(b,U)=>{console.log("文件信息:",b),console.log("返回值:",U),u.value=U.bfid;let S={transCode:"B00029",bfid:U.bfid};Dn(S).then(Z=>{console.log(Z),a.value.forEach(R=>{R.id===b.id&&(R.msg="已上传",t("upload-status","上传成功"),t("upload-success",{bfid:U.bfid,fname:b.name}),m.value=g(),h.value=R.msg,n.value=!1),b.ext=="x"?(d.value=U.bfid,t("Gassaddgfid",d.value)):b.ext=="inp"&&(c.value=U.bfid,t("Gassaddbfid",c.value))})}).catch(Z=>{})}),o.value.on("uploadAccept",(b,U)=>U.returnCode=="000000000"?!0:(vi.error(U.returnMsg),!1)),o.value.on("uploadError",(b,U)=>{XGe("#"+b.id).text(b.name+"上传出错"),t("upload-status","上传失败"),g(),m.value=g()}),o.value.on("uploadComplete",b=>{})};return e({gfid:d,bfid:c,initWebUploader:f,files:a,msg:h}),(b,U)=>{const S=At("el-row");return he(),$e("div",YGe,[re("div",{id:"uploader"+s.upId},[M(S,null,{default:B(()=>[re("div",{class:"btntext upname",id:"picker"+s.upId,style:{width:"28px",height:"24px"}},[re("img",{src:s.imgSrc,alt:"upload icon",class:"custom-icon"},null,8,OGe)],8,zGe)]),_:1})],8,_Ge)])}}},jGe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAgBJREFUSEu11l1IU1EAB/D/0oc+1MwEH0RSyqIELUGJ1BdDiAI5I4UMCoJQ3+acPQhDUJA16E0d88GnK/Mj5K4XwxpsRQ/TpU+r7sNK6iobOPT6cfXOrBtHuBdHyzaPO8/n/H/3/A/33GtAmochzfnQgAsArh+CzQBQjvIwGvCS5/mmRAGSJMHhcCwFAoEuABOpIhrAq6pK/rVYURQ4nU5YrVaPLMsdAD4lCyUFaGGRSAQWi0VxuVyDAD4kU2lKgBYYDAYRCoUS5vv9ftjtdtrGKzrhSMBh9bjdbhiNxsSAIAigfbMMn88Hs9lMz2kEwJa+A1EUyeVbjThdVMmSv7/2d0zG2vz4CwDPdMDr9ZLmnknkXLvDDMSi37A8ZbYC6NcBjuNIF/cZZ0puMgPbPxYQed37lNakAzabjQzMZuBkwRVmYOPLG0TfD9EqZnTAZDIRPlqOzKx8ZmDt4xg9g6sABB140PKQzGY1wXAigxlYeTeITeHtOQCSDtTcvkfCl1qZw2lAeLpva0ecz4570S5W1hO1ynQswPJUZygW/VoaB5wtrSPn6+mFyT6+jz7x/JJXG+KAnLK7JL+2jTld3dvF4kjzKIBHcUBe9WOSe+M+M/BzPQxxvP05gO6/dnCqsIIdkJawOse1Axg+CBT/55OZKuyhF91BINWApOen/a/iD+EYwhkOX7APAAAAAElFTkSuQmCC",gAe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAA6BJREFUSEu1VUGIG2UU/t7/T5ocNiFsFlww4GgXthAJM5tCC/Yg6LHIigcpxYO0aKW9eViFFhRPYg8rUopSwUOFFvQQqGBvOVRIMZMdlw1ssUtHCbiFNaalbJMw87/6xmzIprHbRfeHucy8ed//3ve97xH2+NCY/Jbrug4RHQJgE9EEM4dE1GbmJhE1O53OrUajcXv0X8dxbN/3mwDCrW8DgEKhMJFMJt8HIMmrxhiPmSVJO5FIpIwx2SiKpgHMaK1nmTlPRBYzrwOQ+J+UUqeJyPY879gWSAxQLBZnLctaNMZ86vt+ZTddKxaLea31YSJ6iYjOABDQK/V6XUAQA8zNzR3vdrvlRqPxYDfJh2OlPVrrX6UaAHLJzz3P2xjHgVSUV0qVtNY2M2f75W4YY9aNMWtRFAWjl3EcR+Kyvu8Hw8DDAJbjOMe11vNCJoCbAG4bYzpxqURTRCQc7BceJBmAB8zsy617vZ6XSqUWJNbzvHPbSHZd9zml1HkA19Lp9LeVSmWggie1zLbt1OTkZKw4Zj4I4CgRZZn5o3q9/vGAg1KptBBF0VUp79mT3+cTynpFERwG5wFMgePbCmNtYloHYV0UxibyEN73g2/e7hQKhelUKvUHMwdEVOl2ux+srKzcHbTo+ffKs4iwSIRXRQlPSzYzOiCuqk6rlvhz+YfVa4vbVBgDSHIyXANo4mkT/1scM36MjDn7+6XXvUGLXni3fBHAqf+afPh/Zj5z56v5C3EFewAQMujUnS9f+zoGsN/57oAi6+f/pUXgCkfRh8GlN2Tg/plkOfkT5Zl9mj8D0fwuWxUy+IZ++FfVav1yfSzJruvKgFxZWlr6TWS6T6uXCaoEZpsJ2W0yBTYYCMC4RTCrpnevNipTsYowDM8tLy834wrER5RSX/w9oZdbrVY5CIJ4enc6MmiZTMaxLKsE4AgRicSnHhu0mAfbTuVyuTeNMUeVUhsy/mEYrhFRbIB9q3imbxODPQFgRay63W5Xc7ncJwA6j1nF6E2HLFi8J8fMUtE9WTbGmGa73V4drfKJZue67oler3d1z+y6VCodYGbh4Hy9Xr++U++Hv/erPURERwCclBVLRJdrtdpb22Tad8YFInKYucbMVWZek5W5ublpJZPJKa31NBHtV0rNMPOLYtcAhK+bxpgbWuvTQmc6nT625chjF47rugfFgokodlMhmpnluSs7Qp5MJhOM2rqoMZvNNoffjwXYTYt2in0E9MjDKKZCFwYAAAAASUVORK5CYII=",Pne="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAnBJREFUSEu1lF9IU3EUx7/nbm2FE//UgyXBtCk+FOhu4CKCIqIXZesP0T9oEk4hX3qyyLeK6q2HQW0YTgiFiNzKl4ioB8EJ3VnUQ7TZLhlhUaawmhvbPXU3LpmW7G76e/xxzvfzO+d7foewxofWWB9FAbZ4hjaZyLI7m8lMTd85/GalR+oGWLuDBwXGfYAsqrDCfF32uy7+D5IDiKLYSkQ1hbTrm/3STZDwIjGb6ijfaHaCcdc8/ayn7MvYx8X5zDwjSdKEBhgB4CoE8F3sgwLBLfudg1b3wHrBXJ0siw7DNB9dmh6UJOmQ7hbVeUJPQGwjoj5muMBo43SqTg4cm/nXA3UDrO57NYLJdAtEbQzEshB6Pvjan67oQSGtKTZmWQVWT7BVIHIzsxFk8MZ97a+KFVfz/gJYO0eaBRLGmfCSwBZmsjF4r+x3TRQLyQFaWlp6iciRaDzVlKnYlnnvc+1Q7+u6QuPr5t5VWqLDb/UCmDk8OTl5QxvTXgCOhO14U7qycS7uc+5SBeu7gq+N81PG8uiQbgCAsCRJeYB2cv0HPQdxjEEJMJpBgqMUH5ab3DnSTETnfs95RslmBuX+I2G97Vkcr/sf6IWVBKjverSfWfESwQbmUVaoO97v/LwqFeR/tDnOhFFACQHCZTBicb/zwDKAKIoFLzstOV3RgB8NJ6CkZjfIgY4Fqyd0RoASqJKuaCF/lp3dbncUuq617IXNe2qTtfu8WQWnf86lQpZq0wCxsrNKunpejVHXdSQSCZfmgefhNRBfyEM5oRCOyrddj1fFA01k69kH2w0GsqWRHPvkP/l16ZSVVEEhI7vmgF8JTOYZEX/JBgAAAABJRU5ErkJggg==",fAe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAkRJREFUSEvtls9r02AYx58na1fBedioIDohCR52dO1keBjUP2Cmc047T1VmIiiIDG8D6223Kl5s6tgOTmFUlgw825teghF6cDjSiCAeZARFaEfyPpLQlLJ1boMMdjC3Nz++n+f5Ps/z5kU45As79GMA4EbNawNSqdRvRLxgGMbnKCFtQDqdJs/zhk3TNI8cQFS0RSDMtgNDKFgl6am/jiSDMzNvBhNcz3tAHPRFmedetF9Mftg3gFe06wCYgWbzsb107cd2CwVZu4uIT4DABSTXWjf7oVoIGuafGZycWuk7MdD7jAhziLRBgEkAnKuXLi/4H/P5xWOQGCgiQZ4QcxyDGHHsXr2UvRQGsSuAl7VRDvAlAbiu5019W7hS4++sKchoHgBqHrJCD+AcAPKu6437zwOoXBmy1avtTuwKEGR9FhHmieA5bW0+tJduNsKI+PzKKa43UQSEHAFVqbk17dsm3l6bJA436qXxT50WdgW0uqJiqdJb/+XT8qtkHI6Pfm2t/XviLX2Esc1aCBcU7R0CamH37GlRZxT8zGqG47hVS5X6d5uRAwFa/ifDDLoBREW/3/j1Z/n76xs/feiBAKKsPwKg85aanQgK1yUDUdGJMTZslyeCyf8P2FHko20RL2sKBzhkqdIDv4BnlcpInOJFS5XGwjYVZO0jgTsdTq0ga2UkrFplaXnPQTu0/wER5Rhj6xEAHNM07e276RcAOBeBuC/hGIYRTH17L8pkMjHHcfqiADiO07BtO9ggO08VUWjv0PgLzJjQKMkKkisAAAAASUVORK5CYII=";/**
- * @license
- * Copyright 2010-2025 Three.js Authors
- * SPDX-License-Identifier: MIT
- */const Hne="174",N1={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},pW={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},PGe=0,Vde=1,HGe=2,bAe=1,KGe=2,V0=3,QF=0,Kc=1,zm=2,bF=0,R1=1,Wde=2,yde=3,Qde=4,qGe=5,JZ=100,$Ge=101,eJe=102,tJe=103,iJe=104,nJe=200,sJe=201,oJe=202,rJe=203,lK=204,aK=205,lJe=206,aJe=207,dJe=208,cJe=209,hJe=210,uJe=211,mJe=212,pJe=213,gJe=214,dK=0,cK=1,hK=2,py=3,uK=4,mK=5,pK=6,gK=7,Kne=0,fJe=1,bJe=2,UF=0,UJe=1,FJe=2,AJe=3,ZJe=4,SJe=5,NJe=6,RJe=7,UAe=300,gy=301,fy=302,fK=303,bK=304,g3=306,UK=1e3,fS=1001,FK=1002,qm=1003,VJe=1004,ux=1005,Qg=1006,qO=1007,bS=1008,Yf=1009,FAe=1010,AAe=1011,LB=1012,qne=1013,mN=1014,Sf=1015,Iv=1016,$ne=1017,ese=1018,by=1020,ZAe=35902,SAe=1021,NAe=1022,jm=1023,RAe=1024,VAe=1025,V1=1026,Uy=1027,WAe=1028,tse=1029,yAe=1030,ise=1031,nse=1033,tD=33776,iD=33777,nD=33778,sD=33779,AK=35840,ZK=35841,SK=35842,NK=35843,RK=36196,VK=37492,WK=37496,yK=37808,QK=37809,MK=37810,wK=37811,TK=37812,CK=37813,BK=37814,LK=37815,vK=37816,kK=37817,xK=37818,IK=37819,EK=37820,DK=37821,oD=36492,GK=36494,JK=36495,QAe=36283,XK=36284,YK=36285,_K=36286,WJe=3200,yJe=3201,MAe=0,QJe=1,AU="",Cu="srgb",Fy="srgb-linear",IJ="linear",Xo="srgb",AR=7680,Mde=519,MJe=512,wJe=513,TJe=514,wAe=515,CJe=516,BJe=517,LJe=518,vJe=519,wde=35044,Tde="300 es",Nf=2e3,EJ=2001;class zN{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){const i=this._listeners;return i===void 0?!1:i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners;if(i===void 0)return;const n=i[e];if(n!==void 0){const o=n.indexOf(t);o!==-1&&n.splice(o,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const i=t[e.type];if(i!==void 0){e.target=this;const n=i.slice(0);for(let o=0,r=n.length;o<r;o++)n[o].call(this,e);e.target=null}}}const td=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Cde=1234567;const YC=Math.PI/180,vB=180/Math.PI;function lM(){const s=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(td[s&255]+td[s>>8&255]+td[s>>16&255]+td[s>>24&255]+"-"+td[e&255]+td[e>>8&255]+"-"+td[e>>16&15|64]+td[e>>24&255]+"-"+td[t&63|128]+td[t>>8&255]+"-"+td[t>>16&255]+td[t>>24&255]+td[i&255]+td[i>>8&255]+td[i>>16&255]+td[i>>24&255]).toLowerCase()}function Ns(s,e,t){return Math.max(e,Math.min(t,s))}function sse(s,e){return(s%e+e)%e}function kJe(s,e,t,i,n){return i+(s-e)*(n-i)/(t-e)}function xJe(s,e,t){return s!==e?(t-s)/(e-s):0}function _C(s,e,t){return(1-t)*s+t*e}function IJe(s,e,t,i){return _C(s,e,1-Math.exp(-t*i))}function EJe(s,e=1){return e-Math.abs(sse(s,e*2)-e)}function DJe(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*(3-2*s))}function GJe(s,e,t){return s<=e?0:s>=t?1:(s=(s-e)/(t-e),s*s*s*(s*(s*6-15)+10))}function JJe(s,e){return s+Math.floor(Math.random()*(e-s+1))}function XJe(s,e){return s+Math.random()*(e-s)}function YJe(s){return s*(.5-Math.random())}function _Je(s){s!==void 0&&(Cde=s);let e=Cde+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function zJe(s){return s*YC}function OJe(s){return s*vB}function jJe(s){return(s&s-1)===0&&s!==0}function PJe(s){return Math.pow(2,Math.ceil(Math.log(s)/Math.LN2))}function HJe(s){return Math.pow(2,Math.floor(Math.log(s)/Math.LN2))}function KJe(s,e,t,i,n){const o=Math.cos,r=Math.sin,l=o(t/2),a=r(t/2),d=o((e+i)/2),c=r((e+i)/2),h=o((e-i)/2),u=r((e-i)/2),m=o((i-e)/2),p=r((i-e)/2);switch(n){case"XYX":s.set(l*c,a*h,a*u,l*d);break;case"YZY":s.set(a*u,l*c,a*h,l*d);break;case"ZXZ":s.set(a*h,a*u,l*c,l*d);break;case"XZX":s.set(l*c,a*p,a*m,l*d);break;case"YXY":s.set(a*m,l*c,a*p,l*d);break;case"ZYZ":s.set(a*p,a*m,l*c,l*d);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+n)}}function QV(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return s/4294967295;case Uint16Array:return s/65535;case Uint8Array:return s/255;case Int32Array:return Math.max(s/2147483647,-1);case Int16Array:return Math.max(s/32767,-1);case Int8Array:return Math.max(s/127,-1);default:throw new Error("Invalid component type.")}}function zd(s,e){switch(e.constructor){case Float32Array:return s;case Uint32Array:return Math.round(s*4294967295);case Uint16Array:return Math.round(s*65535);case Uint8Array:return Math.round(s*255);case Int32Array:return Math.round(s*2147483647);case Int16Array:return Math.round(s*32767);case Int8Array:return Math.round(s*127);default:throw new Error("Invalid component type.")}}const qJe={DEG2RAD:YC,RAD2DEG:vB,generateUUID:lM,clamp:Ns,euclideanModulo:sse,mapLinear:kJe,inverseLerp:xJe,lerp:_C,damp:IJe,pingpong:EJe,smoothstep:DJe,smootherstep:GJe,randInt:JJe,randFloat:XJe,randFloatSpread:YJe,seededRandom:_Je,degToRad:zJe,radToDeg:OJe,isPowerOfTwo:jJe,ceilPowerOfTwo:PJe,floorPowerOfTwo:HJe,setQuaternionFromProperEuler:KJe,normalize:zd,denormalize:QV};class rs{constructor(e=0,t=0){rs.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6],this.y=n[1]*t+n[4]*i+n[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ns(this.x,e.x,t.x),this.y=Ns(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ns(this.x,e,t),this.y=Ns(this.y,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Ns(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Ns(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),n=Math.sin(t),o=this.x-e.x,r=this.y-e.y;return this.x=o*i-r*n+e.x,this.y=o*n+r*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class as{constructor(e,t,i,n,o,r,l,a,d){as.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,n,o,r,l,a,d)}set(e,t,i,n,o,r,l,a,d){const c=this.elements;return c[0]=e,c[1]=n,c[2]=l,c[3]=t,c[4]=o,c[5]=a,c[6]=i,c[7]=r,c[8]=d,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,o=this.elements,r=i[0],l=i[3],a=i[6],d=i[1],c=i[4],h=i[7],u=i[2],m=i[5],p=i[8],g=n[0],f=n[3],b=n[6],U=n[1],S=n[4],Z=n[7],R=n[2],y=n[5],N=n[8];return o[0]=r*g+l*U+a*R,o[3]=r*f+l*S+a*y,o[6]=r*b+l*Z+a*N,o[1]=d*g+c*U+h*R,o[4]=d*f+c*S+h*y,o[7]=d*b+c*Z+h*N,o[2]=u*g+m*U+p*R,o[5]=u*f+m*S+p*y,o[8]=u*b+m*Z+p*N,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],n=e[2],o=e[3],r=e[4],l=e[5],a=e[6],d=e[7],c=e[8];return t*r*c-t*l*d-i*o*c+i*l*a+n*o*d-n*r*a}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],o=e[3],r=e[4],l=e[5],a=e[6],d=e[7],c=e[8],h=c*r-l*d,u=l*a-c*o,m=d*o-r*a,p=t*h+i*u+n*m;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const g=1/p;return e[0]=h*g,e[1]=(n*d-c*i)*g,e[2]=(l*i-n*r)*g,e[3]=u*g,e[4]=(c*t-n*a)*g,e[5]=(n*o-l*t)*g,e[6]=m*g,e[7]=(i*a-d*t)*g,e[8]=(r*t-i*o)*g,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,n,o,r,l){const a=Math.cos(o),d=Math.sin(o);return this.set(i*a,i*d,-i*(a*r+d*l)+r+e,-n*d,n*a,-n*(-d*r+a*l)+l+t,0,0,1),this}scale(e,t){return this.premultiply($O.makeScale(e,t)),this}rotate(e){return this.premultiply($O.makeRotation(-e)),this}translate(e,t){return this.premultiply($O.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let n=0;n<9;n++)if(t[n]!==i[n])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const $O=new as;function TAe(s){for(let e=s.length-1;e>=0;--e)if(s[e]>=65535)return!0;return!1}function DJ(s){return document.createElementNS("http://www.w3.org/1999/xhtml",s)}function $Je(){const s=DJ("canvas");return s.style.display="block",s}const Bde={};function iZ(s){s in Bde||(Bde[s]=!0,console.warn(s))}function eXe(s,e,t){return new Promise(function(i,n){function o(){switch(s.clientWaitSync(e,s.SYNC_FLUSH_COMMANDS_BIT,0)){case s.WAIT_FAILED:n();break;case s.TIMEOUT_EXPIRED:setTimeout(o,t);break;default:i()}}setTimeout(o,t)})}function tXe(s){const e=s.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function iXe(s){const e=s.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const Lde=new as().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),vde=new as().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function nXe(){const s={enabled:!0,workingColorSpace:Fy,spaces:{},convert:function(n,o,r){return this.enabled===!1||o===r||!o||!r||(this.spaces[o].transfer===Xo&&(n.r=Lf(n.r),n.g=Lf(n.g),n.b=Lf(n.b)),this.spaces[o].primaries!==this.spaces[r].primaries&&(n.applyMatrix3(this.spaces[o].toXYZ),n.applyMatrix3(this.spaces[r].fromXYZ)),this.spaces[r].transfer===Xo&&(n.r=W1(n.r),n.g=W1(n.g),n.b=W1(n.b))),n},fromWorkingColorSpace:function(n,o){return this.convert(n,this.workingColorSpace,o)},toWorkingColorSpace:function(n,o){return this.convert(n,o,this.workingColorSpace)},getPrimaries:function(n){return this.spaces[n].primaries},getTransfer:function(n){return n===AU?IJ:this.spaces[n].transfer},getLuminanceCoefficients:function(n,o=this.workingColorSpace){return n.fromArray(this.spaces[o].luminanceCoefficients)},define:function(n){Object.assign(this.spaces,n)},_getMatrix:function(n,o,r){return n.copy(this.spaces[o].toXYZ).multiply(this.spaces[r].fromXYZ)},_getDrawingBufferColorSpace:function(n){return this.spaces[n].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(n=this.workingColorSpace){return this.spaces[n].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],i=[.3127,.329];return s.define({[Fy]:{primaries:e,whitePoint:i,transfer:IJ,toXYZ:Lde,fromXYZ:vde,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Cu},outputColorSpaceConfig:{drawingBufferColorSpace:Cu}},[Cu]:{primaries:e,whitePoint:i,transfer:Xo,toXYZ:Lde,fromXYZ:vde,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Cu}}}),s}const uo=nXe();function Lf(s){return s<.04045?s*.0773993808:Math.pow(s*.9478672986+.0521327014,2.4)}function W1(s){return s<.0031308?s*12.92:1.055*Math.pow(s,.41666)-.055}let ZR;class sXe{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{ZR===void 0&&(ZR=DJ("canvas")),ZR.width=e.width,ZR.height=e.height;const i=ZR.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=ZR}return t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=DJ("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const n=i.getImageData(0,0,e.width,e.height),o=n.data;for(let r=0;r<o.length;r++)o[r]=Lf(o[r]/255)*255;return i.putImageData(n,0,0),t}else if(e.data){const t=e.data.slice(0);for(let i=0;i<t.length;i++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[i]=Math.floor(Lf(t[i]/255)*255):t[i]=Lf(t[i]);return{data:t,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let oXe=0;class ose{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:oXe++}),this.uuid=lM(),this.data=e,this.dataReady=!0,this.version=0}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const i={uuid:this.uuid,url:""},n=this.data;if(n!==null){let o;if(Array.isArray(n)){o=[];for(let r=0,l=n.length;r<l;r++)n[r].isDataTexture?o.push(ej(n[r].image)):o.push(ej(n[r]))}else o=ej(n);i.url=o}return t||(e.images[this.uuid]=i),i}}function ej(s){return typeof HTMLImageElement<"u"&&s instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&s instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&s instanceof ImageBitmap?sXe.getDataURL(s):s.data?{data:Array.from(s.data),width:s.width,height:s.height,type:s.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let rXe=0;class qc extends zN{constructor(e=qc.DEFAULT_IMAGE,t=qc.DEFAULT_MAPPING,i=fS,n=fS,o=Qg,r=bS,l=jm,a=Yf,d=qc.DEFAULT_ANISOTROPY,c=AU){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:rXe++}),this.uuid=lM(),this.name="",this.source=new ose(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=i,this.wrapT=n,this.magFilter=o,this.minFilter=r,this.anisotropy=d,this.format=l,this.internalFormat=null,this.type=a,this.offset=new rs(0,0),this.repeat=new rs(1,1),this.center=new rs(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new as,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=c,this.userData={},this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const i={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==UAe)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case UK:e.x=e.x-Math.floor(e.x);break;case fS:e.x=e.x<0?0:1;break;case FK:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case UK:e.y=e.y-Math.floor(e.y);break;case fS:e.y=e.y<0?0:1;break;case FK:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}qc.DEFAULT_IMAGE=null;qc.DEFAULT_MAPPING=UAe;qc.DEFAULT_ANISOTROPY=1;class Yr{constructor(e=0,t=0,i=0,n=1){Yr.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=n}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,o=this.w,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n+r[12]*o,this.y=r[1]*t+r[5]*i+r[9]*n+r[13]*o,this.z=r[2]*t+r[6]*i+r[10]*n+r[14]*o,this.w=r[3]*t+r[7]*i+r[11]*n+r[15]*o,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,n,o;const a=e.elements,d=a[0],c=a[4],h=a[8],u=a[1],m=a[5],p=a[9],g=a[2],f=a[6],b=a[10];if(Math.abs(c-u)<.01&&Math.abs(h-g)<.01&&Math.abs(p-f)<.01){if(Math.abs(c+u)<.1&&Math.abs(h+g)<.1&&Math.abs(p+f)<.1&&Math.abs(d+m+b-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const S=(d+1)/2,Z=(m+1)/2,R=(b+1)/2,y=(c+u)/4,N=(h+g)/4,w=(p+f)/4;return S>Z&&S>R?S<.01?(i=0,n=.707106781,o=.707106781):(i=Math.sqrt(S),n=y/i,o=N/i):Z>R?Z<.01?(i=.707106781,n=0,o=.707106781):(n=Math.sqrt(Z),i=y/n,o=w/n):R<.01?(i=.707106781,n=.707106781,o=0):(o=Math.sqrt(R),i=N/o,n=w/o),this.set(i,n,o,t),this}let U=Math.sqrt((f-p)*(f-p)+(h-g)*(h-g)+(u-c)*(u-c));return Math.abs(U)<.001&&(U=1),this.x=(f-p)/U,this.y=(h-g)/U,this.z=(u-c)/U,this.w=Math.acos((d+m+b-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ns(this.x,e.x,t.x),this.y=Ns(this.y,e.y,t.y),this.z=Ns(this.z,e.z,t.z),this.w=Ns(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ns(this.x,e,t),this.y=Ns(this.y,e,t),this.z=Ns(this.z,e,t),this.w=Ns(this.w,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Ns(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class lXe extends zN{constructor(e=1,t=1,i={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Yr(0,0,e,t),this.scissorTest=!1,this.viewport=new Yr(0,0,e,t);const n={width:e,height:t,depth:1};i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Qg,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},i);const o=new qc(n,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace);o.flipY=!1,o.generateMipmaps=i.generateMipmaps,o.internalFormat=i.internalFormat,this.textures=[];const r=i.count;for(let l=0;l<r;l++)this.textures[l]=o.clone(),this.textures[l].isRenderTargetTexture=!0,this.textures[l].renderTarget=this;this.depthBuffer=i.depthBuffer,this.stencilBuffer=i.stencilBuffer,this.resolveDepthBuffer=i.resolveDepthBuffer,this.resolveStencilBuffer=i.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=i.depthTexture,this.samples=i.samples}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,i=1){if(this.width!==e||this.height!==t||this.depth!==i){this.width=e,this.height=t,this.depth=i;for(let n=0,o=this.textures.length;n<o;n++)this.textures[n].image.width=e,this.textures[n].image.height=t,this.textures[n].image.depth=i;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,i=e.textures.length;t<i;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;const n=Object.assign({},e.textures[t].image);this.textures[t].source=new ose(n)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class pN extends lXe{constructor(e=1,t=1,i={}){super(e,t,i),this.isWebGLRenderTarget=!0}}class CAe extends qc{constructor(e=null,t=1,i=1,n=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:n},this.magFilter=qm,this.minFilter=qm,this.wrapR=fS,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class aXe extends qc{constructor(e=null,t=1,i=1,n=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:n},this.magFilter=qm,this.minFilter=qm,this.wrapR=fS,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class gN{constructor(e=0,t=0,i=0,n=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=i,this._w=n}static slerpFlat(e,t,i,n,o,r,l){let a=i[n+0],d=i[n+1],c=i[n+2],h=i[n+3];const u=o[r+0],m=o[r+1],p=o[r+2],g=o[r+3];if(l===0){e[t+0]=a,e[t+1]=d,e[t+2]=c,e[t+3]=h;return}if(l===1){e[t+0]=u,e[t+1]=m,e[t+2]=p,e[t+3]=g;return}if(h!==g||a!==u||d!==m||c!==p){let f=1-l;const b=a*u+d*m+c*p+h*g,U=b>=0?1:-1,S=1-b*b;if(S>Number.EPSILON){const R=Math.sqrt(S),y=Math.atan2(R,b*U);f=Math.sin(f*y)/R,l=Math.sin(l*y)/R}const Z=l*U;if(a=a*f+u*Z,d=d*f+m*Z,c=c*f+p*Z,h=h*f+g*Z,f===1-l){const R=1/Math.sqrt(a*a+d*d+c*c+h*h);a*=R,d*=R,c*=R,h*=R}}e[t]=a,e[t+1]=d,e[t+2]=c,e[t+3]=h}static multiplyQuaternionsFlat(e,t,i,n,o,r){const l=i[n],a=i[n+1],d=i[n+2],c=i[n+3],h=o[r],u=o[r+1],m=o[r+2],p=o[r+3];return e[t]=l*p+c*h+a*m-d*u,e[t+1]=a*p+c*u+d*h-l*m,e[t+2]=d*p+c*m+l*u-a*h,e[t+3]=c*p-l*h-a*u-d*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const i=e._x,n=e._y,o=e._z,r=e._order,l=Math.cos,a=Math.sin,d=l(i/2),c=l(n/2),h=l(o/2),u=a(i/2),m=a(n/2),p=a(o/2);switch(r){case"XYZ":this._x=u*c*h+d*m*p,this._y=d*m*h-u*c*p,this._z=d*c*p+u*m*h,this._w=d*c*h-u*m*p;break;case"YXZ":this._x=u*c*h+d*m*p,this._y=d*m*h-u*c*p,this._z=d*c*p-u*m*h,this._w=d*c*h+u*m*p;break;case"ZXY":this._x=u*c*h-d*m*p,this._y=d*m*h+u*c*p,this._z=d*c*p+u*m*h,this._w=d*c*h-u*m*p;break;case"ZYX":this._x=u*c*h-d*m*p,this._y=d*m*h+u*c*p,this._z=d*c*p-u*m*h,this._w=d*c*h+u*m*p;break;case"YZX":this._x=u*c*h+d*m*p,this._y=d*m*h+u*c*p,this._z=d*c*p-u*m*h,this._w=d*c*h-u*m*p;break;case"XZY":this._x=u*c*h-d*m*p,this._y=d*m*h-u*c*p,this._z=d*c*p+u*m*h,this._w=d*c*h+u*m*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+r)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,n=Math.sin(i);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],n=t[4],o=t[8],r=t[1],l=t[5],a=t[9],d=t[2],c=t[6],h=t[10],u=i+l+h;if(u>0){const m=.5/Math.sqrt(u+1);this._w=.25/m,this._x=(c-a)*m,this._y=(o-d)*m,this._z=(r-n)*m}else if(i>l&&i>h){const m=2*Math.sqrt(1+i-l-h);this._w=(c-a)/m,this._x=.25*m,this._y=(n+r)/m,this._z=(o+d)/m}else if(l>h){const m=2*Math.sqrt(1+l-i-h);this._w=(o-d)/m,this._x=(n+r)/m,this._y=.25*m,this._z=(a+c)/m}else{const m=2*Math.sqrt(1+h-i-l);this._w=(r-n)/m,this._x=(o+d)/m,this._y=(a+c)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<Number.EPSILON?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ns(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const n=Math.min(1,t/i);return this.slerp(e,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,n=e._y,o=e._z,r=e._w,l=t._x,a=t._y,d=t._z,c=t._w;return this._x=i*c+r*l+n*d-o*a,this._y=n*c+r*a+o*l-i*d,this._z=o*c+r*d+i*a-n*l,this._w=r*c-i*l-n*a-o*d,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const i=this._x,n=this._y,o=this._z,r=this._w;let l=r*e._w+i*e._x+n*e._y+o*e._z;if(l<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,l=-l):this.copy(e),l>=1)return this._w=r,this._x=i,this._y=n,this._z=o,this;const a=1-l*l;if(a<=Number.EPSILON){const m=1-t;return this._w=m*r+t*this._w,this._x=m*i+t*this._x,this._y=m*n+t*this._y,this._z=m*o+t*this._z,this.normalize(),this}const d=Math.sqrt(a),c=Math.atan2(d,l),h=Math.sin((1-t)*c)/d,u=Math.sin(t*c)/d;return this._w=r*h+this._w*u,this._x=i*h+this._x*u,this._y=n*h+this._y*u,this._z=o*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),n=Math.sqrt(1-i),o=Math.sqrt(i);return this.set(n*Math.sin(e),n*Math.cos(e),o*Math.sin(t),o*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class et{constructor(e=0,t=0,i=0){et.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(kde.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(kde.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,n=this.z,o=e.elements;return this.x=o[0]*t+o[3]*i+o[6]*n,this.y=o[1]*t+o[4]*i+o[7]*n,this.z=o[2]*t+o[5]*i+o[8]*n,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,o=e.elements,r=1/(o[3]*t+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*t+o[4]*i+o[8]*n+o[12])*r,this.y=(o[1]*t+o[5]*i+o[9]*n+o[13])*r,this.z=(o[2]*t+o[6]*i+o[10]*n+o[14])*r,this}applyQuaternion(e){const t=this.x,i=this.y,n=this.z,o=e.x,r=e.y,l=e.z,a=e.w,d=2*(r*n-l*i),c=2*(l*t-o*n),h=2*(o*i-r*t);return this.x=t+a*d+r*h-l*c,this.y=i+a*c+l*d-o*h,this.z=n+a*h+o*c-r*d,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,n=this.z,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*n,this.y=o[1]*t+o[5]*i+o[9]*n,this.z=o[2]*t+o[6]*i+o[10]*n,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ns(this.x,e.x,t.x),this.y=Ns(this.y,e.y,t.y),this.z=Ns(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ns(this.x,e,t),this.y=Ns(this.y,e,t),this.z=Ns(this.z,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Ns(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,n=e.y,o=e.z,r=t.x,l=t.y,a=t.z;return this.x=n*a-o*l,this.y=o*r-i*a,this.z=i*l-n*r,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return tj.copy(this).projectOnVector(e),this.sub(tj)}reflect(e){return this.sub(tj.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Ns(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const n=Math.sin(t)*e;return this.x=n*Math.sin(i),this.y=Math.cos(t)*e,this.z=n*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=n,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const tj=new et,kde=new gN;class Ng{constructor(e=new et(1/0,1/0,1/0),t=new et(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;t<i;t+=3)this.expandByPoint(pm.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,i=e.count;t<i;t++)this.expandByPoint(pm.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;t<i;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const i=pm.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(i),this.max.copy(e).add(i),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const i=e.geometry;if(i!==void 0){const o=i.getAttribute("position");if(t===!0&&o!==void 0&&e.isInstancedMesh!==!0)for(let r=0,l=o.count;r<l;r++)e.isMesh===!0?e.getVertexPosition(r,pm):pm.fromBufferAttribute(o,r),pm.applyMatrix4(e.matrixWorld),this.expandByPoint(pm);else e.boundingBox!==void 0?(e.boundingBox===null&&e.computeBoundingBox(),mx.copy(e.boundingBox)):(i.boundingBox===null&&i.computeBoundingBox(),mx.copy(i.boundingBox)),mx.applyMatrix4(e.matrixWorld),this.union(mx)}const n=e.children;for(let o=0,r=n.length;o<r;o++)this.expandByObject(n[o],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,pm),pm.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(tw),px.subVectors(this.max,tw),SR.subVectors(e.a,tw),NR.subVectors(e.b,tw),RR.subVectors(e.c,tw),bb.subVectors(NR,SR),Ub.subVectors(RR,NR),bA.subVectors(SR,RR);let t=[0,-bb.z,bb.y,0,-Ub.z,Ub.y,0,-bA.z,bA.y,bb.z,0,-bb.x,Ub.z,0,-Ub.x,bA.z,0,-bA.x,-bb.y,bb.x,0,-Ub.y,Ub.x,0,-bA.y,bA.x,0];return!ij(t,SR,NR,RR,px)||(t=[1,0,0,0,1,0,0,0,1],!ij(t,SR,NR,RR,px))?!1:(gx.crossVectors(bb,Ub),t=[gx.x,gx.y,gx.z],ij(t,SR,NR,RR,px))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,pm).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(pm).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(d0[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),d0[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),d0[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),d0[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),d0[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),d0[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),d0[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),d0[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(d0),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const d0=[new et,new et,new et,new et,new et,new et,new et,new et],pm=new et,mx=new Ng,SR=new et,NR=new et,RR=new et,bb=new et,Ub=new et,bA=new et,tw=new et,px=new et,gx=new et,UA=new et;function ij(s,e,t,i,n){for(let o=0,r=s.length-3;o<=r;o+=3){UA.fromArray(s,o);const l=n.x*Math.abs(UA.x)+n.y*Math.abs(UA.y)+n.z*Math.abs(UA.z),a=e.dot(UA),d=t.dot(UA),c=i.dot(UA);if(Math.max(-Math.max(a,d,c),Math.min(a,d,c))>l)return!1}return!0}const dXe=new Ng,iw=new et,nj=new et;class Ev{constructor(e=new et,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):dXe.setFromPoints(e).getCenter(i);let n=0;for(let o=0,r=e.length;o<r;o++)n=Math.max(n,i.distanceToSquared(e[o]));return this.radius=Math.sqrt(n),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const i=this.center.distanceToSquared(e);return t.copy(e),i>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;iw.subVectors(e,this.center);const t=iw.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),n=(i-this.radius)*.5;this.center.addScaledVector(iw,n/i),this.radius+=n}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(nj.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(iw.copy(e.center).add(nj)),this.expandByPoint(iw.copy(e.center).sub(nj))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const c0=new et,sj=new et,fx=new et,Fb=new et,oj=new et,bx=new et,rj=new et;class f3{constructor(e=new et,t=new et(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,c0)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=c0.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(c0.copy(this.origin).addScaledVector(this.direction,t),c0.distanceToSquared(e))}distanceSqToSegment(e,t,i,n){sj.copy(e).add(t).multiplyScalar(.5),fx.copy(t).sub(e).normalize(),Fb.copy(this.origin).sub(sj);const o=e.distanceTo(t)*.5,r=-this.direction.dot(fx),l=Fb.dot(this.direction),a=-Fb.dot(fx),d=Fb.lengthSq(),c=Math.abs(1-r*r);let h,u,m,p;if(c>0)if(h=r*a-l,u=r*l-a,p=o*c,h>=0)if(u>=-p)if(u<=p){const g=1/c;h*=g,u*=g,m=h*(h+r*u+2*l)+u*(r*h+u+2*a)+d}else u=o,h=Math.max(0,-(r*u+l)),m=-h*h+u*(u+2*a)+d;else u=-o,h=Math.max(0,-(r*u+l)),m=-h*h+u*(u+2*a)+d;else u<=-p?(h=Math.max(0,-(-r*o+l)),u=h>0?-o:Math.min(Math.max(-o,-a),o),m=-h*h+u*(u+2*a)+d):u<=p?(h=0,u=Math.min(Math.max(-o,-a),o),m=u*(u+2*a)+d):(h=Math.max(0,-(r*o+l)),u=h>0?o:Math.min(Math.max(-o,-a),o),m=-h*h+u*(u+2*a)+d);else u=r>0?-o:o,h=Math.max(0,-(r*u+l)),m=-h*h+u*(u+2*a)+d;return i&&i.copy(this.origin).addScaledVector(this.direction,h),n&&n.copy(sj).addScaledVector(fx,u),m}intersectSphere(e,t){c0.subVectors(e.center,this.origin);const i=c0.dot(this.direction),n=c0.dot(c0)-i*i,o=e.radius*e.radius;if(n>o)return null;const r=Math.sqrt(o-n),l=i-r,a=i+r;return a<0?null:l<0?this.at(a,t):this.at(l,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,n,o,r,l,a;const d=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return d>=0?(i=(e.min.x-u.x)*d,n=(e.max.x-u.x)*d):(i=(e.max.x-u.x)*d,n=(e.min.x-u.x)*d),c>=0?(o=(e.min.y-u.y)*c,r=(e.max.y-u.y)*c):(o=(e.max.y-u.y)*c,r=(e.min.y-u.y)*c),i>r||o>n||((o>i||isNaN(i))&&(i=o),(r<n||isNaN(n))&&(n=r),h>=0?(l=(e.min.z-u.z)*h,a=(e.max.z-u.z)*h):(l=(e.max.z-u.z)*h,a=(e.min.z-u.z)*h),i>a||l>n)||((l>i||i!==i)&&(i=l),(a<n||n!==n)&&(n=a),n<0)?null:this.at(i>=0?i:n,t)}intersectsBox(e){return this.intersectBox(e,c0)!==null}intersectTriangle(e,t,i,n,o){oj.subVectors(t,e),bx.subVectors(i,e),rj.crossVectors(oj,bx);let r=this.direction.dot(rj),l;if(r>0){if(n)return null;l=1}else if(r<0)l=-1,r=-r;else return null;Fb.subVectors(this.origin,e);const a=l*this.direction.dot(bx.crossVectors(Fb,bx));if(a<0)return null;const d=l*this.direction.dot(oj.cross(Fb));if(d<0||a+d>r)return null;const c=-l*Fb.dot(rj);return c<0?null:this.at(c/r,o)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Sr{constructor(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g,f){Sr.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g,f)}set(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g,f){const b=this.elements;return b[0]=e,b[4]=t,b[8]=i,b[12]=n,b[1]=o,b[5]=r,b[9]=l,b[13]=a,b[2]=d,b[6]=c,b[10]=h,b[14]=u,b[3]=m,b[7]=p,b[11]=g,b[15]=f,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Sr().fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,n=1/VR.setFromMatrixColumn(e,0).length(),o=1/VR.setFromMatrixColumn(e,1).length(),r=1/VR.setFromMatrixColumn(e,2).length();return t[0]=i[0]*n,t[1]=i[1]*n,t[2]=i[2]*n,t[3]=0,t[4]=i[4]*o,t[5]=i[5]*o,t[6]=i[6]*o,t[7]=0,t[8]=i[8]*r,t[9]=i[9]*r,t[10]=i[10]*r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,n=e.y,o=e.z,r=Math.cos(i),l=Math.sin(i),a=Math.cos(n),d=Math.sin(n),c=Math.cos(o),h=Math.sin(o);if(e.order==="XYZ"){const u=r*c,m=r*h,p=l*c,g=l*h;t[0]=a*c,t[4]=-a*h,t[8]=d,t[1]=m+p*d,t[5]=u-g*d,t[9]=-l*a,t[2]=g-u*d,t[6]=p+m*d,t[10]=r*a}else if(e.order==="YXZ"){const u=a*c,m=a*h,p=d*c,g=d*h;t[0]=u+g*l,t[4]=p*l-m,t[8]=r*d,t[1]=r*h,t[5]=r*c,t[9]=-l,t[2]=m*l-p,t[6]=g+u*l,t[10]=r*a}else if(e.order==="ZXY"){const u=a*c,m=a*h,p=d*c,g=d*h;t[0]=u-g*l,t[4]=-r*h,t[8]=p+m*l,t[1]=m+p*l,t[5]=r*c,t[9]=g-u*l,t[2]=-r*d,t[6]=l,t[10]=r*a}else if(e.order==="ZYX"){const u=r*c,m=r*h,p=l*c,g=l*h;t[0]=a*c,t[4]=p*d-m,t[8]=u*d+g,t[1]=a*h,t[5]=g*d+u,t[9]=m*d-p,t[2]=-d,t[6]=l*a,t[10]=r*a}else if(e.order==="YZX"){const u=r*a,m=r*d,p=l*a,g=l*d;t[0]=a*c,t[4]=g-u*h,t[8]=p*h+m,t[1]=h,t[5]=r*c,t[9]=-l*c,t[2]=-d*c,t[6]=m*h+p,t[10]=u-g*h}else if(e.order==="XZY"){const u=r*a,m=r*d,p=l*a,g=l*d;t[0]=a*c,t[4]=-h,t[8]=d*c,t[1]=u*h+g,t[5]=r*c,t[9]=m*h-p,t[2]=p*h-m,t[6]=l*c,t[10]=g*h+u}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(cXe,e,hXe)}lookAt(e,t,i){const n=this.elements;return bh.subVectors(e,t),bh.lengthSq()===0&&(bh.z=1),bh.normalize(),Ab.crossVectors(i,bh),Ab.lengthSq()===0&&(Math.abs(i.z)===1?bh.x+=1e-4:bh.z+=1e-4,bh.normalize(),Ab.crossVectors(i,bh)),Ab.normalize(),Ux.crossVectors(bh,Ab),n[0]=Ab.x,n[4]=Ux.x,n[8]=bh.x,n[1]=Ab.y,n[5]=Ux.y,n[9]=bh.y,n[2]=Ab.z,n[6]=Ux.z,n[10]=bh.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,o=this.elements,r=i[0],l=i[4],a=i[8],d=i[12],c=i[1],h=i[5],u=i[9],m=i[13],p=i[2],g=i[6],f=i[10],b=i[14],U=i[3],S=i[7],Z=i[11],R=i[15],y=n[0],N=n[4],w=n[8],Q=n[12],C=n[1],v=n[5],Y=n[9],J=n[13],k=n[2],E=n[6],K=n[10],de=n[14],ee=n[3],le=n[7],Fe=n[11],Ue=n[15];return o[0]=r*y+l*C+a*k+d*ee,o[4]=r*N+l*v+a*E+d*le,o[8]=r*w+l*Y+a*K+d*Fe,o[12]=r*Q+l*J+a*de+d*Ue,o[1]=c*y+h*C+u*k+m*ee,o[5]=c*N+h*v+u*E+m*le,o[9]=c*w+h*Y+u*K+m*Fe,o[13]=c*Q+h*J+u*de+m*Ue,o[2]=p*y+g*C+f*k+b*ee,o[6]=p*N+g*v+f*E+b*le,o[10]=p*w+g*Y+f*K+b*Fe,o[14]=p*Q+g*J+f*de+b*Ue,o[3]=U*y+S*C+Z*k+R*ee,o[7]=U*N+S*v+Z*E+R*le,o[11]=U*w+S*Y+Z*K+R*Fe,o[15]=U*Q+S*J+Z*de+R*Ue,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],n=e[8],o=e[12],r=e[1],l=e[5],a=e[9],d=e[13],c=e[2],h=e[6],u=e[10],m=e[14],p=e[3],g=e[7],f=e[11],b=e[15];return p*(+o*a*h-n*d*h-o*l*u+i*d*u+n*l*m-i*a*m)+g*(+t*a*m-t*d*u+o*r*u-n*r*m+n*d*c-o*a*c)+f*(+t*d*h-t*l*m-o*r*h+i*r*m+o*l*c-i*d*c)+b*(-n*l*c-t*a*h+t*l*u+n*r*h-i*r*u+i*a*c)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],o=e[3],r=e[4],l=e[5],a=e[6],d=e[7],c=e[8],h=e[9],u=e[10],m=e[11],p=e[12],g=e[13],f=e[14],b=e[15],U=h*f*d-g*u*d+g*a*m-l*f*m-h*a*b+l*u*b,S=p*u*d-c*f*d-p*a*m+r*f*m+c*a*b-r*u*b,Z=c*g*d-p*h*d+p*l*m-r*g*m-c*l*b+r*h*b,R=p*h*a-c*g*a-p*l*u+r*g*u+c*l*f-r*h*f,y=t*U+i*S+n*Z+o*R;if(y===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const N=1/y;return e[0]=U*N,e[1]=(g*u*o-h*f*o-g*n*m+i*f*m+h*n*b-i*u*b)*N,e[2]=(l*f*o-g*a*o+g*n*d-i*f*d-l*n*b+i*a*b)*N,e[3]=(h*a*o-l*u*o-h*n*d+i*u*d+l*n*m-i*a*m)*N,e[4]=S*N,e[5]=(c*f*o-p*u*o+p*n*m-t*f*m-c*n*b+t*u*b)*N,e[6]=(p*a*o-r*f*o-p*n*d+t*f*d+r*n*b-t*a*b)*N,e[7]=(r*u*o-c*a*o+c*n*d-t*u*d-r*n*m+t*a*m)*N,e[8]=Z*N,e[9]=(p*h*o-c*g*o-p*i*m+t*g*m+c*i*b-t*h*b)*N,e[10]=(r*g*o-p*l*o+p*i*d-t*g*d-r*i*b+t*l*b)*N,e[11]=(c*l*o-r*h*o-c*i*d+t*h*d+r*i*m-t*l*m)*N,e[12]=R*N,e[13]=(c*g*n-p*h*n+p*i*u-t*g*u-c*i*f+t*h*f)*N,e[14]=(p*l*n-r*g*n-p*i*a+t*g*a+r*i*f-t*l*f)*N,e[15]=(r*h*n-c*l*n+c*i*a-t*h*a-r*i*u+t*l*u)*N,this}scale(e){const t=this.elements,i=e.x,n=e.y,o=e.z;return t[0]*=i,t[4]*=n,t[8]*=o,t[1]*=i,t[5]*=n,t[9]*=o,t[2]*=i,t[6]*=n,t[10]*=o,t[3]*=i,t[7]*=n,t[11]*=o,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,n))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),n=Math.sin(t),o=1-i,r=e.x,l=e.y,a=e.z,d=o*r,c=o*l;return this.set(d*r+i,d*l-n*a,d*a+n*l,0,d*l+n*a,c*l+i,c*a-n*r,0,d*a-n*l,c*a+n*r,o*a*a+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,n,o,r){return this.set(1,i,o,0,e,1,r,0,t,n,1,0,0,0,0,1),this}compose(e,t,i){const n=this.elements,o=t._x,r=t._y,l=t._z,a=t._w,d=o+o,c=r+r,h=l+l,u=o*d,m=o*c,p=o*h,g=r*c,f=r*h,b=l*h,U=a*d,S=a*c,Z=a*h,R=i.x,y=i.y,N=i.z;return n[0]=(1-(g+b))*R,n[1]=(m+Z)*R,n[2]=(p-S)*R,n[3]=0,n[4]=(m-Z)*y,n[5]=(1-(u+b))*y,n[6]=(f+U)*y,n[7]=0,n[8]=(p+S)*N,n[9]=(f-U)*N,n[10]=(1-(u+g))*N,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}decompose(e,t,i){const n=this.elements;let o=VR.set(n[0],n[1],n[2]).length();const r=VR.set(n[4],n[5],n[6]).length(),l=VR.set(n[8],n[9],n[10]).length();this.determinant()<0&&(o=-o),e.x=n[12],e.y=n[13],e.z=n[14],gm.copy(this);const d=1/o,c=1/r,h=1/l;return gm.elements[0]*=d,gm.elements[1]*=d,gm.elements[2]*=d,gm.elements[4]*=c,gm.elements[5]*=c,gm.elements[6]*=c,gm.elements[8]*=h,gm.elements[9]*=h,gm.elements[10]*=h,t.setFromRotationMatrix(gm),i.x=o,i.y=r,i.z=l,this}makePerspective(e,t,i,n,o,r,l=Nf){const a=this.elements,d=2*o/(t-e),c=2*o/(i-n),h=(t+e)/(t-e),u=(i+n)/(i-n);let m,p;if(l===Nf)m=-(r+o)/(r-o),p=-2*r*o/(r-o);else if(l===EJ)m=-r/(r-o),p=-r*o/(r-o);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+l);return a[0]=d,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=c,a[9]=u,a[13]=0,a[2]=0,a[6]=0,a[10]=m,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,n,o,r,l=Nf){const a=this.elements,d=1/(t-e),c=1/(i-n),h=1/(r-o),u=(t+e)*d,m=(i+n)*c;let p,g;if(l===Nf)p=(r+o)*h,g=-2*h;else if(l===EJ)p=o*h,g=-1*h;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+l);return a[0]=2*d,a[4]=0,a[8]=0,a[12]=-u,a[1]=0,a[5]=2*c,a[9]=0,a[13]=-m,a[2]=0,a[6]=0,a[10]=g,a[14]=-p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let n=0;n<16;n++)if(t[n]!==i[n])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const VR=new et,gm=new Sr,cXe=new et(0,0,0),hXe=new et(1,1,1),Ab=new et,Ux=new et,bh=new et,xde=new Sr,Ide=new gN;class Ig{constructor(e=0,t=0,i=0,n=Ig.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=n}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,n=this._order){return this._x=e,this._y=t,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const n=e.elements,o=n[0],r=n[4],l=n[8],a=n[1],d=n[5],c=n[9],h=n[2],u=n[6],m=n[10];switch(t){case"XYZ":this._y=Math.asin(Ns(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-c,m),this._z=Math.atan2(-r,o)):(this._x=Math.atan2(u,d),this._z=0);break;case"YXZ":this._x=Math.asin(-Ns(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(l,m),this._z=Math.atan2(a,d)):(this._y=Math.atan2(-h,o),this._z=0);break;case"ZXY":this._x=Math.asin(Ns(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-h,m),this._z=Math.atan2(-r,d)):(this._y=0,this._z=Math.atan2(a,o));break;case"ZYX":this._y=Math.asin(-Ns(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(u,m),this._z=Math.atan2(a,o)):(this._x=0,this._z=Math.atan2(-r,d));break;case"YZX":this._z=Math.asin(Ns(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,d),this._y=Math.atan2(-h,o)):(this._x=0,this._y=Math.atan2(l,m));break;case"XZY":this._z=Math.asin(-Ns(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(u,d),this._y=Math.atan2(l,o)):(this._x=Math.atan2(-c,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return xde.makeRotationFromQuaternion(e),this.setFromRotationMatrix(xde,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Ide.setFromEuler(this),this.setFromQuaternion(Ide,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ig.DEFAULT_ORDER="XYZ";class BAe{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let uXe=0;const Ede=new et,WR=new gN,h0=new Sr,Fx=new et,nw=new et,mXe=new et,pXe=new gN,Dde=new et(1,0,0),Gde=new et(0,1,0),Jde=new et(0,0,1),Xde={type:"added"},gXe={type:"removed"},yR={type:"childadded",child:null},lj={type:"childremoved",child:null};class zl extends zN{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:uXe++}),this.uuid=lM(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=zl.DEFAULT_UP.clone();const e=new et,t=new Ig,i=new gN,n=new et(1,1,1);function o(){i.setFromEuler(t,!1)}function r(){t.setFromQuaternion(i,void 0,!1)}t._onChange(o),i._onChange(r),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new Sr},normalMatrix:{value:new as}}),this.matrix=new Sr,this.matrixWorld=new Sr,this.matrixAutoUpdate=zl.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=zl.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new BAe,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return WR.setFromAxisAngle(e,t),this.quaternion.multiply(WR),this}rotateOnWorldAxis(e,t){return WR.setFromAxisAngle(e,t),this.quaternion.premultiply(WR),this}rotateX(e){return this.rotateOnAxis(Dde,e)}rotateY(e){return this.rotateOnAxis(Gde,e)}rotateZ(e){return this.rotateOnAxis(Jde,e)}translateOnAxis(e,t){return Ede.copy(e).applyQuaternion(this.quaternion),this.position.add(Ede.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(Dde,e)}translateY(e){return this.translateOnAxis(Gde,e)}translateZ(e){return this.translateOnAxis(Jde,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(h0.copy(this.matrixWorld).invert())}lookAt(e,t,i){e.isVector3?Fx.copy(e):Fx.set(e,t,i);const n=this.parent;this.updateWorldMatrix(!0,!1),nw.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?h0.lookAt(nw,Fx,this.up):h0.lookAt(Fx,nw,this.up),this.quaternion.setFromRotationMatrix(h0),n&&(h0.extractRotation(n.matrixWorld),WR.setFromRotationMatrix(h0),this.quaternion.premultiply(WR.invert()))}add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(Xde),yR.child=e,this.dispatchEvent(yR),yR.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let i=0;i<arguments.length;i++)this.remove(arguments[i]);return this}const t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(gXe),lj.child=e,this.dispatchEvent(lj),lj.child=null),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),h0.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),h0.multiply(e.parent.matrixWorld)),e.applyMatrix4(h0),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(Xde),yR.child=e,this.dispatchEvent(yR),yR.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let i=0,n=this.children.length;i<n;i++){const r=this.children[i].getObjectByProperty(e,t);if(r!==void 0)return r}}getObjectsByProperty(e,t,i=[]){this[e]===t&&i.push(this);const n=this.children;for(let o=0,r=n.length;o<r;o++)n[o].getObjectsByProperty(e,t,i);return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(nw,e,mXe),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(nw,pXe,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let i=0,n=t.length;i<n;i++)t[i].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.children;for(let i=0,n=t.length;i<n;i++)t[i].traverseVisible(e)}traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let i=0,n=t.length;i<n;i++)t[i].updateMatrixWorld(e)}updateWorldMatrix(e,t){const i=this.parent;if(e===!0&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){const n=this.children;for(let o=0,r=n.length;o<r;o++)n[o].updateWorldMatrix(!1,!0)}}toJSON(e){const t=e===void 0||typeof e=="string",i={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const n={};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.visibility=this._visibility,n.active=this._active,n.bounds=this._bounds.map(l=>({boxInitialized:l.boxInitialized,boxMin:l.box.min.toArray(),boxMax:l.box.max.toArray(),sphereInitialized:l.sphereInitialized,sphereRadius:l.sphere.radius,sphereCenter:l.sphere.center.toArray()})),n.maxInstanceCount=this._maxInstanceCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.geometryCount=this._geometryCount,n.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(n.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(n.boundingSphere={center:n.boundingSphere.center.toArray(),radius:n.boundingSphere.radius}),this.boundingBox!==null&&(n.boundingBox={min:n.boundingBox.min.toArray(),max:n.boundingBox.max.toArray()}));function o(l,a){return l[a.uuid]===void 0&&(l[a.uuid]=a.toJSON(e)),a.uuid}if(this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(n.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=o(e.geometries,this.geometry);const l=this.geometry.parameters;if(l!==void 0&&l.shapes!==void 0){const a=l.shapes;if(Array.isArray(a))for(let d=0,c=a.length;d<c;d++){const h=a[d];o(e.shapes,h)}else o(e.shapes,a)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(o(e.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const l=[];for(let a=0,d=this.material.length;a<d;a++)l.push(o(e.materials,this.material[a]));n.material=l}else n.material=o(e.materials,this.material);if(this.children.length>0){n.children=[];for(let l=0;l<this.children.length;l++)n.children.push(this.children[l].toJSON(e).object)}if(this.animations.length>0){n.animations=[];for(let l=0;l<this.animations.length;l++){const a=this.animations[l];n.animations.push(o(e.animations,a))}}if(t){const l=r(e.geometries),a=r(e.materials),d=r(e.textures),c=r(e.images),h=r(e.shapes),u=r(e.skeletons),m=r(e.animations),p=r(e.nodes);l.length>0&&(i.geometries=l),a.length>0&&(i.materials=a),d.length>0&&(i.textures=d),c.length>0&&(i.images=c),h.length>0&&(i.shapes=h),u.length>0&&(i.skeletons=u),m.length>0&&(i.animations=m),p.length>0&&(i.nodes=p)}return i.object=n,i;function r(l){const a=[];for(const d in l){const c=l[d];delete c.metadata,a.push(c)}return a}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i<e.children.length;i++){const n=e.children[i];this.add(n.clone())}return this}}zl.DEFAULT_UP=new et(0,1,0);zl.DEFAULT_MATRIX_AUTO_UPDATE=!0;zl.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const fm=new et,u0=new et,aj=new et,m0=new et,QR=new et,MR=new et,Yde=new et,dj=new et,cj=new et,hj=new et,uj=new Yr,mj=new Yr,pj=new Yr;class Om{constructor(e=new et,t=new et,i=new et){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,n){n.subVectors(i,t),fm.subVectors(e,t),n.cross(fm);const o=n.lengthSq();return o>0?n.multiplyScalar(1/Math.sqrt(o)):n.set(0,0,0)}static getBarycoord(e,t,i,n,o){fm.subVectors(n,t),u0.subVectors(i,t),aj.subVectors(e,t);const r=fm.dot(fm),l=fm.dot(u0),a=fm.dot(aj),d=u0.dot(u0),c=u0.dot(aj),h=r*d-l*l;if(h===0)return o.set(0,0,0),null;const u=1/h,m=(d*a-l*c)*u,p=(r*c-l*a)*u;return o.set(1-m-p,p,m)}static containsPoint(e,t,i,n){return this.getBarycoord(e,t,i,n,m0)===null?!1:m0.x>=0&&m0.y>=0&&m0.x+m0.y<=1}static getInterpolation(e,t,i,n,o,r,l,a){return this.getBarycoord(e,t,i,n,m0)===null?(a.x=0,a.y=0,"z"in a&&(a.z=0),"w"in a&&(a.w=0),null):(a.setScalar(0),a.addScaledVector(o,m0.x),a.addScaledVector(r,m0.y),a.addScaledVector(l,m0.z),a)}static getInterpolatedAttribute(e,t,i,n,o,r){return uj.setScalar(0),mj.setScalar(0),pj.setScalar(0),uj.fromBufferAttribute(e,t),mj.fromBufferAttribute(e,i),pj.fromBufferAttribute(e,n),r.setScalar(0),r.addScaledVector(uj,o.x),r.addScaledVector(mj,o.y),r.addScaledVector(pj,o.z),r}static isFrontFacing(e,t,i,n){return fm.subVectors(i,t),u0.subVectors(e,t),fm.cross(u0).dot(n)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this}setFromAttributeAndIndices(e,t,i,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,n),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return fm.subVectors(this.c,this.b),u0.subVectors(this.a,this.b),fm.cross(u0).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Om.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Om.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,n,o){return Om.getInterpolation(e,this.a,this.b,this.c,t,i,n,o)}containsPoint(e){return Om.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Om.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,n=this.b,o=this.c;let r,l;QR.subVectors(n,i),MR.subVectors(o,i),dj.subVectors(e,i);const a=QR.dot(dj),d=MR.dot(dj);if(a<=0&&d<=0)return t.copy(i);cj.subVectors(e,n);const c=QR.dot(cj),h=MR.dot(cj);if(c>=0&&h<=c)return t.copy(n);const u=a*h-c*d;if(u<=0&&a>=0&&c<=0)return r=a/(a-c),t.copy(i).addScaledVector(QR,r);hj.subVectors(e,o);const m=QR.dot(hj),p=MR.dot(hj);if(p>=0&&m<=p)return t.copy(o);const g=m*d-a*p;if(g<=0&&d>=0&&p<=0)return l=d/(d-p),t.copy(i).addScaledVector(MR,l);const f=c*p-m*h;if(f<=0&&h-c>=0&&m-p>=0)return Yde.subVectors(o,n),l=(h-c)/(h-c+(m-p)),t.copy(n).addScaledVector(Yde,l);const b=1/(f+g+u);return r=g*b,l=u*b,t.copy(i).addScaledVector(QR,r).addScaledVector(MR,l)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const LAe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Zb={h:0,s:0,l:0},Ax={h:0,s:0,l:0};function gj(s,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?s+(e-s)*6*t:t<1/2?e:t<2/3?s+(e-s)*6*(2/3-t):s}let ws=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){const n=e;n&&n.isColor?this.copy(n):typeof n=="number"?this.setHex(n):typeof n=="string"&&this.setStyle(n)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Cu){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,uo.toWorkingColorSpace(this,t),this}setRGB(e,t,i,n=uo.workingColorSpace){return this.r=e,this.g=t,this.b=i,uo.toWorkingColorSpace(this,n),this}setHSL(e,t,i,n=uo.workingColorSpace){if(e=sse(e,1),t=Ns(t,0,1),i=Ns(i,0,1),t===0)this.r=this.g=this.b=i;else{const o=i<=.5?i*(1+t):i+t-i*t,r=2*i-o;this.r=gj(r,o,e+1/3),this.g=gj(r,o,e),this.b=gj(r,o,e-1/3)}return uo.toWorkingColorSpace(this,n),this}setStyle(e,t=Cu){function i(o){o!==void 0&&parseFloat(o)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let n;if(n=/^(\w+)\(([^\)]*)\)/.exec(e)){let o;const r=n[1],l=n[2];switch(r){case"rgb":case"rgba":if(o=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return i(o[4]),this.setRGB(Math.min(255,parseInt(o[1],10))/255,Math.min(255,parseInt(o[2],10))/255,Math.min(255,parseInt(o[3],10))/255,t);if(o=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return i(o[4]),this.setRGB(Math.min(100,parseInt(o[1],10))/100,Math.min(100,parseInt(o[2],10))/100,Math.min(100,parseInt(o[3],10))/100,t);break;case"hsl":case"hsla":if(o=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return i(o[4]),this.setHSL(parseFloat(o[1])/360,parseFloat(o[2])/100,parseFloat(o[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(e)){const o=n[1],r=o.length;if(r===3)return this.setRGB(parseInt(o.charAt(0),16)/15,parseInt(o.charAt(1),16)/15,parseInt(o.charAt(2),16)/15,t);if(r===6)return this.setHex(parseInt(o,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Cu){const i=LAe[e.toLowerCase()];return i!==void 0?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Lf(e.r),this.g=Lf(e.g),this.b=Lf(e.b),this}copyLinearToSRGB(e){return this.r=W1(e.r),this.g=W1(e.g),this.b=W1(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Cu){return uo.fromWorkingColorSpace(id.copy(this),e),Math.round(Ns(id.r*255,0,255))*65536+Math.round(Ns(id.g*255,0,255))*256+Math.round(Ns(id.b*255,0,255))}getHexString(e=Cu){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=uo.workingColorSpace){uo.fromWorkingColorSpace(id.copy(this),t);const i=id.r,n=id.g,o=id.b,r=Math.max(i,n,o),l=Math.min(i,n,o);let a,d;const c=(l+r)/2;if(l===r)a=0,d=0;else{const h=r-l;switch(d=c<=.5?h/(r+l):h/(2-r-l),r){case i:a=(n-o)/h+(n<o?6:0);break;case n:a=(o-i)/h+2;break;case o:a=(i-n)/h+4;break}a/=6}return e.h=a,e.s=d,e.l=c,e}getRGB(e,t=uo.workingColorSpace){return uo.fromWorkingColorSpace(id.copy(this),t),e.r=id.r,e.g=id.g,e.b=id.b,e}getStyle(e=Cu){uo.fromWorkingColorSpace(id.copy(this),e);const t=id.r,i=id.g,n=id.b;return e!==Cu?`color(${e} ${t.toFixed(3)} ${i.toFixed(3)} ${n.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(i*255)},${Math.round(n*255)})`}offsetHSL(e,t,i){return this.getHSL(Zb),this.setHSL(Zb.h+e,Zb.s+t,Zb.l+i)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,i){return this.r=e.r+(t.r-e.r)*i,this.g=e.g+(t.g-e.g)*i,this.b=e.b+(t.b-e.b)*i,this}lerpHSL(e,t){this.getHSL(Zb),e.getHSL(Ax);const i=_C(Zb.h,Ax.h,t),n=_C(Zb.s,Ax.s,t),o=_C(Zb.l,Ax.l,t);return this.setHSL(i,n,o),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,i=this.g,n=this.b,o=e.elements;return this.r=o[0]*t+o[3]*i+o[6]*n,this.g=o[1]*t+o[4]*i+o[7]*n,this.b=o[2]*t+o[5]*i+o[8]*n,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};const id=new ws;ws.NAMES=LAe;let fXe=0;class ON extends zN{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:fXe++}),this.uuid=lM(),this.name="",this.type="Material",this.blending=R1,this.side=QF,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=lK,this.blendDst=aK,this.blendEquation=JZ,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new ws(0,0,0),this.blendAlpha=0,this.depthFunc=py,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Mde,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=AR,this.stencilZFail=AR,this.stencilZPass=AR,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const n=this[t];if(n===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==R1&&(i.blending=this.blending),this.side!==QF&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==lK&&(i.blendSrc=this.blendSrc),this.blendDst!==aK&&(i.blendDst=this.blendDst),this.blendEquation!==JZ&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==py&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Mde&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==AR&&(i.stencilFail=this.stencilFail),this.stencilZFail!==AR&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==AR&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function n(o){const r=[];for(const l in o){const a=o[l];delete a.metadata,r.push(a)}return r}if(t){const o=n(e.textures),r=n(e.images);o.length>0&&(i.textures=o),r.length>0&&(i.images=r)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(t!==null){const n=t.length;i=new Array(n);for(let o=0;o!==n;++o)i[o]=t[o].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class b3 extends ON{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ws(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ig,this.combine=Kne,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const gl=new et,Zx=new rs;let bXe=0;class $c{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:bXe++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=wde,this.updateRanges=[],this.gpuType=Sf,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let n=0,o=this.itemSize;n<o;n++)this.array[e+n]=t.array[i+n];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,i=this.count;t<i;t++)Zx.fromBufferAttribute(this,t),Zx.applyMatrix3(e),this.setXY(t,Zx.x,Zx.y);else if(this.itemSize===3)for(let t=0,i=this.count;t<i;t++)gl.fromBufferAttribute(this,t),gl.applyMatrix3(e),this.setXYZ(t,gl.x,gl.y,gl.z);return this}applyMatrix4(e){for(let t=0,i=this.count;t<i;t++)gl.fromBufferAttribute(this,t),gl.applyMatrix4(e),this.setXYZ(t,gl.x,gl.y,gl.z);return this}applyNormalMatrix(e){for(let t=0,i=this.count;t<i;t++)gl.fromBufferAttribute(this,t),gl.applyNormalMatrix(e),this.setXYZ(t,gl.x,gl.y,gl.z);return this}transformDirection(e){for(let t=0,i=this.count;t<i;t++)gl.fromBufferAttribute(this,t),gl.transformDirection(e),this.setXYZ(t,gl.x,gl.y,gl.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let i=this.array[e*this.itemSize+t];return this.normalized&&(i=QV(i,this.array)),i}setComponent(e,t,i){return this.normalized&&(i=zd(i,this.array)),this.array[e*this.itemSize+t]=i,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=QV(t,this.array)),t}setX(e,t){return this.normalized&&(t=zd(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=QV(t,this.array)),t}setY(e,t){return this.normalized&&(t=zd(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=QV(t,this.array)),t}setZ(e,t){return this.normalized&&(t=zd(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=QV(t,this.array)),t}setW(e,t){return this.normalized&&(t=zd(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,i){return e*=this.itemSize,this.normalized&&(t=zd(t,this.array),i=zd(i,this.array)),this.array[e+0]=t,this.array[e+1]=i,this}setXYZ(e,t,i,n){return e*=this.itemSize,this.normalized&&(t=zd(t,this.array),i=zd(i,this.array),n=zd(n,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=n,this}setXYZW(e,t,i,n,o){return e*=this.itemSize,this.normalized&&(t=zd(t,this.array),i=zd(i,this.array),n=zd(n,this.array),o=zd(o,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=n,this.array[e+3]=o,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==wde&&(e.usage=this.usage),e}}class vAe extends $c{constructor(e,t,i){super(new Uint16Array(e),t,i)}}class kAe extends $c{constructor(e,t,i){super(new Uint32Array(e),t,i)}}class ur extends $c{constructor(e,t,i){super(new Float32Array(e),t,i)}}let UXe=0;const du=new Sr,fj=new zl,wR=new et,Uh=new Ng,sw=new Ng,ia=new et;class al extends zN{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:UXe++}),this.uuid=lM(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(TAe(e)?kAe:vAe)(e,1):this.index=e,this}setIndirect(e){return this.indirect=e,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);const i=this.attributes.normal;if(i!==void 0){const o=new as().getNormalMatrix(e);i.applyNormalMatrix(o),i.needsUpdate=!0}const n=this.attributes.tangent;return n!==void 0&&(n.transformDirection(e),n.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return du.makeRotationFromQuaternion(e),this.applyMatrix4(du),this}rotateX(e){return du.makeRotationX(e),this.applyMatrix4(du),this}rotateY(e){return du.makeRotationY(e),this.applyMatrix4(du),this}rotateZ(e){return du.makeRotationZ(e),this.applyMatrix4(du),this}translate(e,t,i){return du.makeTranslation(e,t,i),this.applyMatrix4(du),this}scale(e,t,i){return du.makeScale(e,t,i),this.applyMatrix4(du),this}lookAt(e){return fj.lookAt(e),fj.updateMatrix(),this.applyMatrix4(fj.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(wR).negate(),this.translate(wR.x,wR.y,wR.z),this}setFromPoints(e){const t=this.getAttribute("position");if(t===void 0){const i=[];for(let n=0,o=e.length;n<o;n++){const r=e[n];i.push(r.x,r.y,r.z||0)}this.setAttribute("position",new ur(i,3))}else{const i=Math.min(e.length,t.count);for(let n=0;n<i;n++){const o=e[n];t.setXYZ(n,o.x,o.y,o.z||0)}e.length>t.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Ng);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new et(-1/0,-1/0,-1/0),new et(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let i=0,n=t.length;i<n;i++){const o=t[i];Uh.setFromBufferAttribute(o),this.morphTargetsRelative?(ia.addVectors(this.boundingBox.min,Uh.min),this.boundingBox.expandByPoint(ia),ia.addVectors(this.boundingBox.max,Uh.max),this.boundingBox.expandByPoint(ia)):(this.boundingBox.expandByPoint(Uh.min),this.boundingBox.expandByPoint(Uh.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ev);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new et,1/0);return}if(e){const i=this.boundingSphere.center;if(Uh.setFromBufferAttribute(e),t)for(let o=0,r=t.length;o<r;o++){const l=t[o];sw.setFromBufferAttribute(l),this.morphTargetsRelative?(ia.addVectors(Uh.min,sw.min),Uh.expandByPoint(ia),ia.addVectors(Uh.max,sw.max),Uh.expandByPoint(ia)):(Uh.expandByPoint(sw.min),Uh.expandByPoint(sw.max))}Uh.getCenter(i);let n=0;for(let o=0,r=e.count;o<r;o++)ia.fromBufferAttribute(e,o),n=Math.max(n,i.distanceToSquared(ia));if(t)for(let o=0,r=t.length;o<r;o++){const l=t[o],a=this.morphTargetsRelative;for(let d=0,c=l.count;d<c;d++)ia.fromBufferAttribute(l,d),a&&(wR.fromBufferAttribute(e,d),ia.add(wR)),n=Math.max(n,i.distanceToSquared(ia))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const i=t.position,n=t.normal,o=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new $c(new Float32Array(4*i.count),4));const r=this.getAttribute("tangent"),l=[],a=[];for(let w=0;w<i.count;w++)l[w]=new et,a[w]=new et;const d=new et,c=new et,h=new et,u=new rs,m=new rs,p=new rs,g=new et,f=new et;function b(w,Q,C){d.fromBufferAttribute(i,w),c.fromBufferAttribute(i,Q),h.fromBufferAttribute(i,C),u.fromBufferAttribute(o,w),m.fromBufferAttribute(o,Q),p.fromBufferAttribute(o,C),c.sub(d),h.sub(d),m.sub(u),p.sub(u);const v=1/(m.x*p.y-p.x*m.y);isFinite(v)&&(g.copy(c).multiplyScalar(p.y).addScaledVector(h,-m.y).multiplyScalar(v),f.copy(h).multiplyScalar(m.x).addScaledVector(c,-p.x).multiplyScalar(v),l[w].add(g),l[Q].add(g),l[C].add(g),a[w].add(f),a[Q].add(f),a[C].add(f))}let U=this.groups;U.length===0&&(U=[{start:0,count:e.count}]);for(let w=0,Q=U.length;w<Q;++w){const C=U[w],v=C.start,Y=C.count;for(let J=v,k=v+Y;J<k;J+=3)b(e.getX(J+0),e.getX(J+1),e.getX(J+2))}const S=new et,Z=new et,R=new et,y=new et;function N(w){R.fromBufferAttribute(n,w),y.copy(R);const Q=l[w];S.copy(Q),S.sub(R.multiplyScalar(R.dot(Q))).normalize(),Z.crossVectors(y,Q);const v=Z.dot(a[w])<0?-1:1;r.setXYZW(w,S.x,S.y,S.z,v)}for(let w=0,Q=U.length;w<Q;++w){const C=U[w],v=C.start,Y=C.count;for(let J=v,k=v+Y;J<k;J+=3)N(e.getX(J+0)),N(e.getX(J+1)),N(e.getX(J+2))}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(t!==void 0){let i=this.getAttribute("normal");if(i===void 0)i=new $c(new Float32Array(t.count*3),3),this.setAttribute("normal",i);else for(let u=0,m=i.count;u<m;u++)i.setXYZ(u,0,0,0);const n=new et,o=new et,r=new et,l=new et,a=new et,d=new et,c=new et,h=new et;if(e)for(let u=0,m=e.count;u<m;u+=3){const p=e.getX(u+0),g=e.getX(u+1),f=e.getX(u+2);n.fromBufferAttribute(t,p),o.fromBufferAttribute(t,g),r.fromBufferAttribute(t,f),c.subVectors(r,o),h.subVectors(n,o),c.cross(h),l.fromBufferAttribute(i,p),a.fromBufferAttribute(i,g),d.fromBufferAttribute(i,f),l.add(c),a.add(c),d.add(c),i.setXYZ(p,l.x,l.y,l.z),i.setXYZ(g,a.x,a.y,a.z),i.setXYZ(f,d.x,d.y,d.z)}else for(let u=0,m=t.count;u<m;u+=3)n.fromBufferAttribute(t,u+0),o.fromBufferAttribute(t,u+1),r.fromBufferAttribute(t,u+2),c.subVectors(r,o),h.subVectors(n,o),c.cross(h),i.setXYZ(u+0,c.x,c.y,c.z),i.setXYZ(u+1,c.x,c.y,c.z),i.setXYZ(u+2,c.x,c.y,c.z);this.normalizeNormals(),i.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let t=0,i=e.count;t<i;t++)ia.fromBufferAttribute(e,t),ia.normalize(),e.setXYZ(t,ia.x,ia.y,ia.z)}toNonIndexed(){function e(l,a){const d=l.array,c=l.itemSize,h=l.normalized,u=new d.constructor(a.length*c);let m=0,p=0;for(let g=0,f=a.length;g<f;g++){l.isInterleavedBufferAttribute?m=a[g]*l.data.stride+l.offset:m=a[g]*c;for(let b=0;b<c;b++)u[p++]=d[m++]}return new $c(u,c,h)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new al,i=this.index.array,n=this.attributes;for(const l in n){const a=n[l],d=e(a,i);t.setAttribute(l,d)}const o=this.morphAttributes;for(const l in o){const a=[],d=o[l];for(let c=0,h=d.length;c<h;c++){const u=d[c],m=e(u,i);a.push(m)}t.morphAttributes[l]=a}t.morphTargetsRelative=this.morphTargetsRelative;const r=this.groups;for(let l=0,a=r.length;l<a;l++){const d=r[l];t.addGroup(d.start,d.count,d.materialIndex)}return t}toJSON(){const e={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const a=this.parameters;for(const d in a)a[d]!==void 0&&(e[d]=a[d]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const a in i){const d=i[a];e.data.attributes[a]=d.toJSON(e.data)}const n={};let o=!1;for(const a in this.morphAttributes){const d=this.morphAttributes[a],c=[];for(let h=0,u=d.length;h<u;h++){const m=d[h];c.push(m.toJSON(e.data))}c.length>0&&(n[a]=c,o=!0)}o&&(e.data.morphAttributes=n,e.data.morphTargetsRelative=this.morphTargetsRelative);const r=this.groups;r.length>0&&(e.data.groups=JSON.parse(JSON.stringify(r)));const l=this.boundingSphere;return l!==null&&(e.data.boundingSphere={center:l.center.toArray(),radius:l.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone(t));const n=e.attributes;for(const d in n){const c=n[d];this.setAttribute(d,c.clone(t))}const o=e.morphAttributes;for(const d in o){const c=[],h=o[d];for(let u=0,m=h.length;u<m;u++)c.push(h[u].clone(t));this.morphAttributes[d]=c}this.morphTargetsRelative=e.morphTargetsRelative;const r=e.groups;for(let d=0,c=r.length;d<c;d++){const h=r[d];this.addGroup(h.start,h.count,h.materialIndex)}const l=e.boundingBox;l!==null&&(this.boundingBox=l.clone());const a=e.boundingSphere;return a!==null&&(this.boundingSphere=a.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const _de=new Sr,FA=new f3,Sx=new Ev,zde=new et,Nx=new et,Rx=new et,Vx=new et,bj=new et,Wx=new et,Ode=new et,yx=new et;class Dh extends zl{constructor(e=new al,t=new b3){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){const n=t[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let o=0,r=n.length;o<r;o++){const l=n[o].name||String(o);this.morphTargetInfluences.push(0),this.morphTargetDictionary[l]=o}}}}getVertexPosition(e,t){const i=this.geometry,n=i.attributes.position,o=i.morphAttributes.position,r=i.morphTargetsRelative;t.fromBufferAttribute(n,e);const l=this.morphTargetInfluences;if(o&&l){Wx.set(0,0,0);for(let a=0,d=o.length;a<d;a++){const c=l[a],h=o[a];c!==0&&(bj.fromBufferAttribute(h,e),r?Wx.addScaledVector(bj,c):Wx.addScaledVector(bj.sub(t),c))}t.add(Wx)}return t}raycast(e,t){const i=this.geometry,n=this.material,o=this.matrixWorld;n!==void 0&&(i.boundingSphere===null&&i.computeBoundingSphere(),Sx.copy(i.boundingSphere),Sx.applyMatrix4(o),FA.copy(e.ray).recast(e.near),!(Sx.containsPoint(FA.origin)===!1&&(FA.intersectSphere(Sx,zde)===null||FA.origin.distanceToSquared(zde)>(e.far-e.near)**2))&&(_de.copy(o).invert(),FA.copy(e.ray).applyMatrix4(_de),!(i.boundingBox!==null&&FA.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,FA)))}_computeIntersections(e,t,i){let n;const o=this.geometry,r=this.material,l=o.index,a=o.attributes.position,d=o.attributes.uv,c=o.attributes.uv1,h=o.attributes.normal,u=o.groups,m=o.drawRange;if(l!==null)if(Array.isArray(r))for(let p=0,g=u.length;p<g;p++){const f=u[p],b=r[f.materialIndex],U=Math.max(f.start,m.start),S=Math.min(l.count,Math.min(f.start+f.count,m.start+m.count));for(let Z=U,R=S;Z<R;Z+=3){const y=l.getX(Z),N=l.getX(Z+1),w=l.getX(Z+2);n=Qx(this,b,e,i,d,c,h,y,N,w),n&&(n.faceIndex=Math.floor(Z/3),n.face.materialIndex=f.materialIndex,t.push(n))}}else{const p=Math.max(0,m.start),g=Math.min(l.count,m.start+m.count);for(let f=p,b=g;f<b;f+=3){const U=l.getX(f),S=l.getX(f+1),Z=l.getX(f+2);n=Qx(this,r,e,i,d,c,h,U,S,Z),n&&(n.faceIndex=Math.floor(f/3),t.push(n))}}else if(a!==void 0)if(Array.isArray(r))for(let p=0,g=u.length;p<g;p++){const f=u[p],b=r[f.materialIndex],U=Math.max(f.start,m.start),S=Math.min(a.count,Math.min(f.start+f.count,m.start+m.count));for(let Z=U,R=S;Z<R;Z+=3){const y=Z,N=Z+1,w=Z+2;n=Qx(this,b,e,i,d,c,h,y,N,w),n&&(n.faceIndex=Math.floor(Z/3),n.face.materialIndex=f.materialIndex,t.push(n))}}else{const p=Math.max(0,m.start),g=Math.min(a.count,m.start+m.count);for(let f=p,b=g;f<b;f+=3){const U=f,S=f+1,Z=f+2;n=Qx(this,r,e,i,d,c,h,U,S,Z),n&&(n.faceIndex=Math.floor(f/3),t.push(n))}}}}function FXe(s,e,t,i,n,o,r,l){let a;if(e.side===Kc?a=i.intersectTriangle(r,o,n,!0,l):a=i.intersectTriangle(n,o,r,e.side===QF,l),a===null)return null;yx.copy(l),yx.applyMatrix4(s.matrixWorld);const d=t.ray.origin.distanceTo(yx);return d<t.near||d>t.far?null:{distance:d,point:yx.clone(),object:s}}function Qx(s,e,t,i,n,o,r,l,a,d){s.getVertexPosition(l,Nx),s.getVertexPosition(a,Rx),s.getVertexPosition(d,Vx);const c=FXe(s,e,t,i,Nx,Rx,Vx,Ode);if(c){const h=new et;Om.getBarycoord(Ode,Nx,Rx,Vx,h),n&&(c.uv=Om.getInterpolatedAttribute(n,l,a,d,h,new rs)),o&&(c.uv1=Om.getInterpolatedAttribute(o,l,a,d,h,new rs)),r&&(c.normal=Om.getInterpolatedAttribute(r,l,a,d,h,new et),c.normal.dot(i.direction)>0&&c.normal.multiplyScalar(-1));const u={a:l,b:a,c:d,normal:new et,materialIndex:0};Om.getNormal(Nx,Rx,Vx,u.normal),c.face=u,c.barycoord=h}return c}class Dv extends al{constructor(e=1,t=1,i=1,n=1,o=1,r=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:n,heightSegments:o,depthSegments:r};const l=this;n=Math.floor(n),o=Math.floor(o),r=Math.floor(r);const a=[],d=[],c=[],h=[];let u=0,m=0;p("z","y","x",-1,-1,i,t,e,r,o,0),p("z","y","x",1,-1,i,t,-e,r,o,1),p("x","z","y",1,1,e,i,t,n,r,2),p("x","z","y",1,-1,e,i,-t,n,r,3),p("x","y","z",1,-1,e,t,i,n,o,4),p("x","y","z",-1,-1,e,t,-i,n,o,5),this.setIndex(a),this.setAttribute("position",new ur(d,3)),this.setAttribute("normal",new ur(c,3)),this.setAttribute("uv",new ur(h,2));function p(g,f,b,U,S,Z,R,y,N,w,Q){const C=Z/N,v=R/w,Y=Z/2,J=R/2,k=y/2,E=N+1,K=w+1;let de=0,ee=0;const le=new et;for(let Fe=0;Fe<K;Fe++){const Ue=Fe*v-J;for(let ze=0;ze<E;ze++){const Oe=ze*C-Y;le[g]=Oe*U,le[f]=Ue*S,le[b]=k,d.push(le.x,le.y,le.z),le[g]=0,le[f]=0,le[b]=y>0?1:-1,c.push(le.x,le.y,le.z),h.push(ze/N),h.push(1-Fe/w),de+=1}}for(let Fe=0;Fe<w;Fe++)for(let Ue=0;Ue<N;Ue++){const ze=u+Ue+E*Fe,Oe=u+Ue+E*(Fe+1),Ie=u+(Ue+1)+E*(Fe+1),at=u+(Ue+1)+E*Fe;a.push(ze,Oe,at),a.push(Oe,Ie,at),ee+=6}l.addGroup(m,ee,Q),m+=ee,u+=de}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Dv(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function Ay(s){const e={};for(const t in s){e[t]={};for(const i in s[t]){const n=s[t][i];n&&(n.isColor||n.isMatrix3||n.isMatrix4||n.isVector2||n.isVector3||n.isVector4||n.isTexture||n.isQuaternion)?n.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][i]=null):e[t][i]=n.clone():Array.isArray(n)?e[t][i]=n.slice():e[t][i]=n}}return e}function Od(s){const e={};for(let t=0;t<s.length;t++){const i=Ay(s[t]);for(const n in i)e[n]=i[n]}return e}function AXe(s){const e=[];for(let t=0;t<s.length;t++)e.push(s[t].clone());return e}function xAe(s){const e=s.getRenderTarget();return e===null?s.outputColorSpace:e.isXRRenderTarget===!0?e.texture.colorSpace:uo.workingColorSpace}const ZXe={clone:Ay,merge:Od};var SXe=`void main() {
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
- }`,NXe=`void main() {
- gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
- }`;class MF extends ON{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=SXe,this.fragmentShader=NXe,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=Ay(e.uniforms),this.uniformsGroups=AXe(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const n in this.uniforms){const r=this.uniforms[n].value;r&&r.isTexture?t.uniforms[n]={type:"t",value:r.toJSON(e).uuid}:r&&r.isColor?t.uniforms[n]={type:"c",value:r.getHex()}:r&&r.isVector2?t.uniforms[n]={type:"v2",value:r.toArray()}:r&&r.isVector3?t.uniforms[n]={type:"v3",value:r.toArray()}:r&&r.isVector4?t.uniforms[n]={type:"v4",value:r.toArray()}:r&&r.isMatrix3?t.uniforms[n]={type:"m3",value:r.toArray()}:r&&r.isMatrix4?t.uniforms[n]={type:"m4",value:r.toArray()}:t.uniforms[n]={value:r}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const n in this.extensions)this.extensions[n]===!0&&(i[n]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class IAe extends zl{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Sr,this.projectionMatrix=new Sr,this.projectionMatrixInverse=new Sr,this.coordinateSystem=Nf}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Sb=new et,jde=new rs,Pde=new rs;class Iu extends IAe{constructor(e=50,t=1,i=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=vB*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(YC*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return vB*2*Math.atan(Math.tan(YC*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,i){Sb.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(Sb.x,Sb.y).multiplyScalar(-e/Sb.z),Sb.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(Sb.x,Sb.y).multiplyScalar(-e/Sb.z)}getViewSize(e,t){return this.getViewBounds(e,jde,Pde),t.subVectors(Pde,jde)}setViewOffset(e,t,i,n,o,r){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=o,this.view.height=r,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(YC*.5*this.fov)/this.zoom,i=2*t,n=this.aspect*i,o=-.5*n;const r=this.view;if(this.view!==null&&this.view.enabled){const a=r.fullWidth,d=r.fullHeight;o+=r.offsetX*n/a,t-=r.offsetY*i/d,n*=r.width/a,i*=r.height/d}const l=this.filmOffset;l!==0&&(o+=e*l/this.getFilmWidth()),this.projectionMatrix.makePerspective(o,o+n,t,t-i,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const TR=-90,CR=1;class RXe extends zl{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const n=new Iu(TR,CR,e,t);n.layers=this.layers,this.add(n);const o=new Iu(TR,CR,e,t);o.layers=this.layers,this.add(o);const r=new Iu(TR,CR,e,t);r.layers=this.layers,this.add(r);const l=new Iu(TR,CR,e,t);l.layers=this.layers,this.add(l);const a=new Iu(TR,CR,e,t);a.layers=this.layers,this.add(a);const d=new Iu(TR,CR,e,t);d.layers=this.layers,this.add(d)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[i,n,o,r,l,a]=t;for(const d of t)this.remove(d);if(e===Nf)i.up.set(0,1,0),i.lookAt(1,0,0),n.up.set(0,1,0),n.lookAt(-1,0,0),o.up.set(0,0,-1),o.lookAt(0,1,0),r.up.set(0,0,1),r.lookAt(0,-1,0),l.up.set(0,1,0),l.lookAt(0,0,1),a.up.set(0,1,0),a.lookAt(0,0,-1);else if(e===EJ)i.up.set(0,-1,0),i.lookAt(-1,0,0),n.up.set(0,-1,0),n.lookAt(1,0,0),o.up.set(0,0,1),o.lookAt(0,1,0),r.up.set(0,0,-1),r.lookAt(0,-1,0),l.up.set(0,-1,0),l.lookAt(0,0,1),a.up.set(0,-1,0),a.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const d of t)this.add(d),d.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:n}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[o,r,l,a,d,c]=this.children,h=e.getRenderTarget(),u=e.getActiveCubeFace(),m=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;const g=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0,n),e.render(t,o),e.setRenderTarget(i,1,n),e.render(t,r),e.setRenderTarget(i,2,n),e.render(t,l),e.setRenderTarget(i,3,n),e.render(t,a),e.setRenderTarget(i,4,n),e.render(t,d),i.texture.generateMipmaps=g,e.setRenderTarget(i,5,n),e.render(t,c),e.setRenderTarget(h,u,m),e.xr.enabled=p,i.texture.needsPMREMUpdate=!0}}class EAe extends qc{constructor(e,t,i,n,o,r,l,a,d,c){e=e!==void 0?e:[],t=t!==void 0?t:gy,super(e,t,i,n,o,r,l,a,d,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class VXe extends pN{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},n=[i,i,i,i,i,i];this.texture=new EAe(n,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Qg}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:`
- varying vec3 vWorldDirection;
- vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
- return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
- }
- void main() {
- vWorldDirection = transformDirection( position, modelMatrix );
- #include <begin_vertex>
- #include <project_vertex>
- }
- `,fragmentShader:`
- uniform sampler2D tEquirect;
- varying vec3 vWorldDirection;
- #include <common>
- void main() {
- vec3 direction = normalize( vWorldDirection );
- vec2 sampleUV = equirectUv( direction );
- gl_FragColor = texture2D( tEquirect, sampleUV );
- }
- `},n=new Dv(5,5,5),o=new MF({name:"CubemapFromEquirect",uniforms:Ay(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Kc,blending:bF});o.uniforms.tEquirect.value=t;const r=new Dh(n,o),l=t.minFilter;return t.minFilter===bS&&(t.minFilter=Qg),new RXe(1,10,this).update(e,r),t.minFilter=l,r.geometry.dispose(),r.material.dispose(),this}clear(e,t,i,n){const o=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,i,n);e.setRenderTarget(o)}}class Mg extends zl{constructor(){super(),this.isGroup=!0,this.type="Group"}}const WXe={type:"move"};class Uj{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Mg,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Mg,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new et,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new et),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Mg,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new et,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new et),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let n=null,o=null,r=null;const l=this._targetRay,a=this._grip,d=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(d&&e.hand){r=!0;for(const g of e.hand.values()){const f=t.getJointPose(g,i),b=this._getHandJoint(d,g);f!==null&&(b.matrix.fromArray(f.transform.matrix),b.matrix.decompose(b.position,b.rotation,b.scale),b.matrixWorldNeedsUpdate=!0,b.jointRadius=f.radius),b.visible=f!==null}const c=d.joints["index-finger-tip"],h=d.joints["thumb-tip"],u=c.position.distanceTo(h.position),m=.02,p=.005;d.inputState.pinching&&u>m+p?(d.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!d.inputState.pinching&&u<=m-p&&(d.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else a!==null&&e.gripSpace&&(o=t.getPose(e.gripSpace,i),o!==null&&(a.matrix.fromArray(o.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,o.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(o.linearVelocity)):a.hasLinearVelocity=!1,o.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(o.angularVelocity)):a.hasAngularVelocity=!1));l!==null&&(n=t.getPose(e.targetRaySpace,i),n===null&&o!==null&&(n=o),n!==null&&(l.matrix.fromArray(n.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,n.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(n.linearVelocity)):l.hasLinearVelocity=!1,n.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(n.angularVelocity)):l.hasAngularVelocity=!1,this.dispatchEvent(WXe)))}return l!==null&&(l.visible=n!==null),a!==null&&(a.visible=o!==null),d!==null&&(d.visible=r!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Mg;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class yXe extends zl{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Ig,this.environmentIntensity=1,this.environmentRotation=new Ig,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}const Fj=new et,QXe=new et,MXe=new as;class iU{constructor(e=new et(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const n=Fj.subVectors(i,t).cross(QXe.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const i=e.delta(Fj),n=this.normal.dot(i);if(n===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const o=-(e.start.dot(this.normal)+this.constant)/n;return o<0||o>1?null:t.copy(e.start).addScaledVector(i,o)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||MXe.getNormalMatrix(e),n=this.coplanarPoint(Fj).applyMatrix4(e),o=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(o),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const AA=new Ev,Mx=new et;class rse{constructor(e=new iU,t=new iU,i=new iU,n=new iU,o=new iU,r=new iU){this.planes=[e,t,i,n,o,r]}set(e,t,i,n,o,r){const l=this.planes;return l[0].copy(e),l[1].copy(t),l[2].copy(i),l[3].copy(n),l[4].copy(o),l[5].copy(r),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=Nf){const i=this.planes,n=e.elements,o=n[0],r=n[1],l=n[2],a=n[3],d=n[4],c=n[5],h=n[6],u=n[7],m=n[8],p=n[9],g=n[10],f=n[11],b=n[12],U=n[13],S=n[14],Z=n[15];if(i[0].setComponents(a-o,u-d,f-m,Z-b).normalize(),i[1].setComponents(a+o,u+d,f+m,Z+b).normalize(),i[2].setComponents(a+r,u+c,f+p,Z+U).normalize(),i[3].setComponents(a-r,u-c,f-p,Z-U).normalize(),i[4].setComponents(a-l,u-h,f-g,Z-S).normalize(),t===Nf)i[5].setComponents(a+l,u+h,f+g,Z+S).normalize();else if(t===EJ)i[5].setComponents(l,h,g,S).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),AA.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),AA.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(AA)}intersectsSprite(e){return AA.center.set(0,0,0),AA.radius=.7071067811865476,AA.applyMatrix4(e.matrixWorld),this.intersectsSphere(AA)}intersectsSphere(e){const t=this.planes,i=e.center,n=-e.radius;for(let o=0;o<6;o++)if(t[o].distanceToPoint(i)<n)return!1;return!0}intersectsBox(e){const t=this.planes;for(let i=0;i<6;i++){const n=t[i];if(Mx.x=n.normal.x>0?e.max.x:e.min.x,Mx.y=n.normal.y>0?e.max.y:e.min.y,Mx.z=n.normal.z>0?e.max.z:e.min.z,n.distanceToPoint(Mx)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class Gv extends ON{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ws(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const GJ=new et,JJ=new et,Hde=new Sr,ow=new f3,wx=new Ev,Aj=new et,Kde=new et;class DAe extends zl{constructor(e=new al,t=new Gv){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,i=[0];for(let n=1,o=t.count;n<o;n++)GJ.fromBufferAttribute(t,n-1),JJ.fromBufferAttribute(t,n),i[n]=i[n-1],i[n]+=GJ.distanceTo(JJ);e.setAttribute("lineDistance",new ur(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){const i=this.geometry,n=this.matrixWorld,o=e.params.Line.threshold,r=i.drawRange;if(i.boundingSphere===null&&i.computeBoundingSphere(),wx.copy(i.boundingSphere),wx.applyMatrix4(n),wx.radius+=o,e.ray.intersectsSphere(wx)===!1)return;Hde.copy(n).invert(),ow.copy(e.ray).applyMatrix4(Hde);const l=o/((this.scale.x+this.scale.y+this.scale.z)/3),a=l*l,d=this.isLineSegments?2:1,c=i.index,u=i.attributes.position;if(c!==null){const m=Math.max(0,r.start),p=Math.min(c.count,r.start+r.count);for(let g=m,f=p-1;g<f;g+=d){const b=c.getX(g),U=c.getX(g+1),S=Tx(this,e,ow,a,b,U,g);S&&t.push(S)}if(this.isLineLoop){const g=c.getX(p-1),f=c.getX(m),b=Tx(this,e,ow,a,g,f,p-1);b&&t.push(b)}}else{const m=Math.max(0,r.start),p=Math.min(u.count,r.start+r.count);for(let g=m,f=p-1;g<f;g+=d){const b=Tx(this,e,ow,a,g,g+1,g);b&&t.push(b)}if(this.isLineLoop){const g=Tx(this,e,ow,a,p-1,m,p-1);g&&t.push(g)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){const n=t[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let o=0,r=n.length;o<r;o++){const l=n[o].name||String(o);this.morphTargetInfluences.push(0),this.morphTargetDictionary[l]=o}}}}}function Tx(s,e,t,i,n,o,r){const l=s.geometry.attributes.position;if(GJ.fromBufferAttribute(l,n),JJ.fromBufferAttribute(l,o),t.distanceSqToSegment(GJ,JJ,Aj,Kde)>i)return;Aj.applyMatrix4(s.matrixWorld);const d=e.ray.origin.distanceTo(Aj);if(!(d<e.near||d>e.far))return{distance:d,point:Kde.clone().applyMatrix4(s.matrixWorld),index:r,face:null,faceIndex:null,barycoord:null,object:s}}const qde=new et,$de=new et;class lse extends DAe{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,i=[];for(let n=0,o=t.count;n<o;n+=2)qde.fromBufferAttribute(t,n),$de.fromBufferAttribute(t,n+1),i[n]=n===0?0:i[n-1],i[n+1]=i[n]+qde.distanceTo($de);e.setAttribute("lineDistance",new ur(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class kB extends ON{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new ws(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const ece=new Sr,zK=new f3,Cx=new Ev,Bx=new et;class XJ extends zl{constructor(e=new al,t=new kB){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){const i=this.geometry,n=this.matrixWorld,o=e.params.Points.threshold,r=i.drawRange;if(i.boundingSphere===null&&i.computeBoundingSphere(),Cx.copy(i.boundingSphere),Cx.applyMatrix4(n),Cx.radius+=o,e.ray.intersectsSphere(Cx)===!1)return;ece.copy(n).invert(),zK.copy(e.ray).applyMatrix4(ece);const l=o/((this.scale.x+this.scale.y+this.scale.z)/3),a=l*l,d=i.index,h=i.attributes.position;if(d!==null){const u=Math.max(0,r.start),m=Math.min(d.count,r.start+r.count);for(let p=u,g=m;p<g;p++){const f=d.getX(p);Bx.fromBufferAttribute(h,f),tce(Bx,f,a,n,e,t,this)}}else{const u=Math.max(0,r.start),m=Math.min(h.count,r.start+r.count);for(let p=u,g=m;p<g;p++)Bx.fromBufferAttribute(h,p),tce(Bx,p,a,n,e,t,this)}}updateMorphTargets(){const t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){const n=t[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let o=0,r=n.length;o<r;o++){const l=n[o].name||String(o);this.morphTargetInfluences.push(0),this.morphTargetDictionary[l]=o}}}}}function tce(s,e,t,i,n,o,r){const l=zK.distanceSqToPoint(s);if(l<t){const a=new et;zK.closestPointToPoint(s,a),a.applyMatrix4(i);const d=n.ray.origin.distanceTo(a);if(d<n.near||d>n.far)return;o.push({distance:d,distanceToRay:Math.sqrt(l),point:a,index:e,face:null,faceIndex:null,barycoord:null,object:r})}}class GAe extends qc{constructor(e,t,i,n,o,r,l,a,d,c=V1){if(c!==V1&&c!==Uy)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&c===V1&&(i=mN),i===void 0&&c===Uy&&(i=by),super(null,n,o,r,l,a,c,i,d),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=l!==void 0?l:qm,this.minFilter=a!==void 0?a:qm,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new ose(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class ase extends al{constructor(e=1,t=1,i=1,n=32,o=1,r=!1,l=0,a=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:i,radialSegments:n,heightSegments:o,openEnded:r,thetaStart:l,thetaLength:a};const d=this;n=Math.floor(n),o=Math.floor(o);const c=[],h=[],u=[],m=[];let p=0;const g=[],f=i/2;let b=0;U(),r===!1&&(e>0&&S(!0),t>0&&S(!1)),this.setIndex(c),this.setAttribute("position",new ur(h,3)),this.setAttribute("normal",new ur(u,3)),this.setAttribute("uv",new ur(m,2));function U(){const Z=new et,R=new et;let y=0;const N=(t-e)/i;for(let w=0;w<=o;w++){const Q=[],C=w/o,v=C*(t-e)+e;for(let Y=0;Y<=n;Y++){const J=Y/n,k=J*a+l,E=Math.sin(k),K=Math.cos(k);R.x=v*E,R.y=-C*i+f,R.z=v*K,h.push(R.x,R.y,R.z),Z.set(E,N,K).normalize(),u.push(Z.x,Z.y,Z.z),m.push(J,1-C),Q.push(p++)}g.push(Q)}for(let w=0;w<n;w++)for(let Q=0;Q<o;Q++){const C=g[Q][w],v=g[Q+1][w],Y=g[Q+1][w+1],J=g[Q][w+1];(e>0||Q!==0)&&(c.push(C,v,J),y+=3),(t>0||Q!==o-1)&&(c.push(v,Y,J),y+=3)}d.addGroup(b,y,0),b+=y}function S(Z){const R=p,y=new rs,N=new et;let w=0;const Q=Z===!0?e:t,C=Z===!0?1:-1;for(let Y=1;Y<=n;Y++)h.push(0,f*C,0),u.push(0,C,0),m.push(.5,.5),p++;const v=p;for(let Y=0;Y<=n;Y++){const k=Y/n*a+l,E=Math.cos(k),K=Math.sin(k);N.x=Q*K,N.y=f*C,N.z=Q*E,h.push(N.x,N.y,N.z),u.push(0,C,0),y.x=E*.5+.5,y.y=K*.5*C+.5,m.push(y.x,y.y),p++}for(let Y=0;Y<n;Y++){const J=R+Y,k=v+Y;Z===!0?c.push(k,k+1,J):c.push(k+1,k,J),w+=3}d.addGroup(b,w,Z===!0?1:2),b+=w}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new ase(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class U3 extends al{constructor(e=1,t=1,i=1,n=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:i,heightSegments:n};const o=e/2,r=t/2,l=Math.floor(i),a=Math.floor(n),d=l+1,c=a+1,h=e/l,u=t/a,m=[],p=[],g=[],f=[];for(let b=0;b<c;b++){const U=b*u-r;for(let S=0;S<d;S++){const Z=S*h-o;p.push(Z,-U,0),g.push(0,0,1),f.push(S/l),f.push(1-b/a)}}for(let b=0;b<a;b++)for(let U=0;U<l;U++){const S=U+d*b,Z=U+d*(b+1),R=U+1+d*(b+1),y=U+1+d*b;m.push(S,Z,y),m.push(Z,R,y)}this.setIndex(m),this.setAttribute("position",new ur(p,3)),this.setAttribute("normal",new ur(g,3)),this.setAttribute("uv",new ur(f,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new U3(e.width,e.height,e.widthSegments,e.heightSegments)}}class dse extends al{constructor(e=1,t=32,i=16,n=0,o=Math.PI*2,r=0,l=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:i,phiStart:n,phiLength:o,thetaStart:r,thetaLength:l},t=Math.max(3,Math.floor(t)),i=Math.max(2,Math.floor(i));const a=Math.min(r+l,Math.PI);let d=0;const c=[],h=new et,u=new et,m=[],p=[],g=[],f=[];for(let b=0;b<=i;b++){const U=[],S=b/i;let Z=0;b===0&&r===0?Z=.5/t:b===i&&a===Math.PI&&(Z=-.5/t);for(let R=0;R<=t;R++){const y=R/t;h.x=-e*Math.cos(n+y*o)*Math.sin(r+S*l),h.y=e*Math.cos(r+S*l),h.z=e*Math.sin(n+y*o)*Math.sin(r+S*l),p.push(h.x,h.y,h.z),u.copy(h).normalize(),g.push(u.x,u.y,u.z),f.push(y+Z,1-S),U.push(d++)}c.push(U)}for(let b=0;b<i;b++)for(let U=0;U<t;U++){const S=c[b][U+1],Z=c[b][U],R=c[b+1][U],y=c[b+1][U+1];(b!==0||r>0)&&m.push(S,Z,y),(b!==i-1||a<Math.PI)&&m.push(Z,R,y)}this.setIndex(m),this.setAttribute("position",new ur(p,3)),this.setAttribute("normal",new ur(g,3)),this.setAttribute("uv",new ur(f,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new dse(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class JAe extends ON{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ws(16777215),this.specular=new ws(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ws(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=MAe,this.normalScale=new rs(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ig,this.combine=Kne,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class wXe extends ON{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=WJe,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class TXe extends ON{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class XAe extends zl{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new ws(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}}const Zj=new Sr,ice=new et,nce=new et;class CXe{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new rs(512,512),this.map=null,this.mapPass=null,this.matrix=new Sr,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new rse,this._frameExtents=new rs(1,1),this._viewportCount=1,this._viewports=[new Yr(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,i=this.matrix;ice.setFromMatrixPosition(e.matrixWorld),t.position.copy(ice),nce.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(nce),t.updateMatrixWorld(),Zj.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Zj),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(Zj)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class YAe extends IAe{constructor(e=-1,t=1,i=1,n=-1,o=.1,r=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=n,this.near=o,this.far=r,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,n,o,r){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=o,this.view.height=r,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let o=i-e,r=i+e,l=n+t,a=n-t;if(this.view!==null&&this.view.enabled){const d=(this.right-this.left)/this.view.fullWidth/this.zoom,c=(this.top-this.bottom)/this.view.fullHeight/this.zoom;o+=d*this.view.offsetX,r=o+d*this.view.width,l-=c*this.view.offsetY,a=l-c*this.view.height}this.projectionMatrix.makeOrthographic(o,r,l,a,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}class BXe extends CXe{constructor(){super(new YAe(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class sce extends XAe{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(zl.DEFAULT_UP),this.updateMatrix(),this.target=new zl,this.shadow=new BXe}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class oce extends XAe{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class LXe extends Iu{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e,this.index=0}}class rce{constructor(e=1,t=0,i=0){this.radius=e,this.phi=t,this.theta=i}set(e,t,i){return this.radius=e,this.phi=t,this.theta=i,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Ns(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,i){return this.radius=Math.sqrt(e*e+t*t+i*i),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,i),this.phi=Math.acos(Ns(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}const lce=new et;let Lx,Sj;class _Ae extends zl{constructor(e=new et(0,0,1),t=new et(0,0,0),i=1,n=16776960,o=i*.2,r=o*.2){super(),this.type="ArrowHelper",Lx===void 0&&(Lx=new al,Lx.setAttribute("position",new ur([0,0,0,0,1,0],3)),Sj=new ase(0,.5,1,5,1),Sj.translate(0,-.5,0)),this.position.copy(t),this.line=new DAe(Lx,new Gv({color:n,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new Dh(Sj,new b3({color:n,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(e),this.setLength(i,o,r)}setDirection(e){if(e.y>.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{lce.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(lce,t)}}setLength(e,t=e*.2,i=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class vXe extends zN{constructor(e,t=null){super(),this.object=e,this.domElement=t,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(){}disconnect(){}dispose(){}update(){}}function ace(s,e,t,i){const n=kXe(i);switch(t){case SAe:return s*e;case RAe:return s*e;case VAe:return s*e*2;case WAe:return s*e/n.components*n.byteLength;case tse:return s*e/n.components*n.byteLength;case yAe:return s*e*2/n.components*n.byteLength;case ise:return s*e*2/n.components*n.byteLength;case NAe:return s*e*3/n.components*n.byteLength;case jm:return s*e*4/n.components*n.byteLength;case nse:return s*e*4/n.components*n.byteLength;case tD:case iD:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case nD:case sD:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case ZK:case NK:return Math.max(s,16)*Math.max(e,8)/4;case AK:case SK:return Math.max(s,8)*Math.max(e,8)/2;case RK:case VK:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*8;case WK:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case yK:return Math.floor((s+3)/4)*Math.floor((e+3)/4)*16;case QK:return Math.floor((s+4)/5)*Math.floor((e+3)/4)*16;case MK:return Math.floor((s+4)/5)*Math.floor((e+4)/5)*16;case wK:return Math.floor((s+5)/6)*Math.floor((e+4)/5)*16;case TK:return Math.floor((s+5)/6)*Math.floor((e+5)/6)*16;case CK:return Math.floor((s+7)/8)*Math.floor((e+4)/5)*16;case BK:return Math.floor((s+7)/8)*Math.floor((e+5)/6)*16;case LK:return Math.floor((s+7)/8)*Math.floor((e+7)/8)*16;case vK:return Math.floor((s+9)/10)*Math.floor((e+4)/5)*16;case kK:return Math.floor((s+9)/10)*Math.floor((e+5)/6)*16;case xK:return Math.floor((s+9)/10)*Math.floor((e+7)/8)*16;case IK:return Math.floor((s+9)/10)*Math.floor((e+9)/10)*16;case EK:return Math.floor((s+11)/12)*Math.floor((e+9)/10)*16;case DK:return Math.floor((s+11)/12)*Math.floor((e+11)/12)*16;case oD:case GK:case JK:return Math.ceil(s/4)*Math.ceil(e/4)*16;case QAe:case XK:return Math.ceil(s/4)*Math.ceil(e/4)*8;case YK:case _K:return Math.ceil(s/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function kXe(s){switch(s){case Yf:case FAe:return{byteLength:1,components:1};case LB:case AAe:case Iv:return{byteLength:2,components:1};case $ne:case ese:return{byteLength:2,components:4};case mN:case qne:case Sf:return{byteLength:4,components:1};case ZAe:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${s}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Hne}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Hne);/**
- * @license
- * Copyright 2010-2025 Three.js Authors
- * SPDX-License-Identifier: MIT
- */function zAe(){let s=null,e=!1,t=null,i=null;function n(o,r){t(o,r),i=s.requestAnimationFrame(n)}return{start:function(){e!==!0&&t!==null&&(i=s.requestAnimationFrame(n),e=!0)},stop:function(){s.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(o){t=o},setContext:function(o){s=o}}}function xXe(s){const e=new WeakMap;function t(l,a){const d=l.array,c=l.usage,h=d.byteLength,u=s.createBuffer();s.bindBuffer(a,u),s.bufferData(a,d,c),l.onUploadCallback();let m;if(d instanceof Float32Array)m=s.FLOAT;else if(d instanceof Uint16Array)l.isFloat16BufferAttribute?m=s.HALF_FLOAT:m=s.UNSIGNED_SHORT;else if(d instanceof Int16Array)m=s.SHORT;else if(d instanceof Uint32Array)m=s.UNSIGNED_INT;else if(d instanceof Int32Array)m=s.INT;else if(d instanceof Int8Array)m=s.BYTE;else if(d instanceof Uint8Array)m=s.UNSIGNED_BYTE;else if(d instanceof Uint8ClampedArray)m=s.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+d);return{buffer:u,type:m,bytesPerElement:d.BYTES_PER_ELEMENT,version:l.version,size:h}}function i(l,a,d){const c=a.array,h=a.updateRanges;if(s.bindBuffer(d,l),h.length===0)s.bufferSubData(d,0,c);else{h.sort((m,p)=>m.start-p.start);let u=0;for(let m=1;m<h.length;m++){const p=h[u],g=h[m];g.start<=p.start+p.count+1?p.count=Math.max(p.count,g.start+g.count-p.start):(++u,h[u]=g)}h.length=u+1;for(let m=0,p=h.length;m<p;m++){const g=h[m];s.bufferSubData(d,g.start*c.BYTES_PER_ELEMENT,c,g.start,g.count)}a.clearUpdateRanges()}a.onUploadCallback()}function n(l){return l.isInterleavedBufferAttribute&&(l=l.data),e.get(l)}function o(l){l.isInterleavedBufferAttribute&&(l=l.data);const a=e.get(l);a&&(s.deleteBuffer(a.buffer),e.delete(l))}function r(l,a){if(l.isInterleavedBufferAttribute&&(l=l.data),l.isGLBufferAttribute){const c=e.get(l);(!c||c.version<l.version)&&e.set(l,{buffer:l.buffer,type:l.type,bytesPerElement:l.elementSize,version:l.version});return}const d=e.get(l);if(d===void 0)e.set(l,t(l,a));else if(d.version<l.version){if(d.size!==l.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");i(d.buffer,l,a),d.version=l.version}}return{get:n,remove:o,update:r}}var IXe=`#ifdef USE_ALPHAHASH
- if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
- #endif`,EXe=`#ifdef USE_ALPHAHASH
- const float ALPHA_HASH_SCALE = 0.05;
- float hash2D( vec2 value ) {
- return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );
- }
- float hash3D( vec3 value ) {
- return hash2D( vec2( hash2D( value.xy ), value.z ) );
- }
- float getAlphaHashThreshold( vec3 position ) {
- float maxDeriv = max(
- length( dFdx( position.xyz ) ),
- length( dFdy( position.xyz ) )
- );
- float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );
- vec2 pixScales = vec2(
- exp2( floor( log2( pixScale ) ) ),
- exp2( ceil( log2( pixScale ) ) )
- );
- vec2 alpha = vec2(
- hash3D( floor( pixScales.x * position.xyz ) ),
- hash3D( floor( pixScales.y * position.xyz ) )
- );
- float lerpFactor = fract( log2( pixScale ) );
- float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;
- float a = min( lerpFactor, 1.0 - lerpFactor );
- vec3 cases = vec3(
- x * x / ( 2.0 * a * ( 1.0 - a ) ),
- ( x - 0.5 * a ) / ( 1.0 - a ),
- 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )
- );
- float threshold = ( x < ( 1.0 - a ) )
- ? ( ( x < a ) ? cases.x : cases.y )
- : cases.z;
- return clamp( threshold , 1.0e-6, 1.0 );
- }
- #endif`,DXe=`#ifdef USE_ALPHAMAP
- diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;
- #endif`,GXe=`#ifdef USE_ALPHAMAP
- uniform sampler2D alphaMap;
- #endif`,JXe=`#ifdef USE_ALPHATEST
- #ifdef ALPHA_TO_COVERAGE
- diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );
- if ( diffuseColor.a == 0.0 ) discard;
- #else
- if ( diffuseColor.a < alphaTest ) discard;
- #endif
- #endif`,XXe=`#ifdef USE_ALPHATEST
- uniform float alphaTest;
- #endif`,YXe=`#ifdef USE_AOMAP
- float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;
- reflectedLight.indirectDiffuse *= ambientOcclusion;
- #if defined( USE_CLEARCOAT )
- clearcoatSpecularIndirect *= ambientOcclusion;
- #endif
- #if defined( USE_SHEEN )
- sheenSpecularIndirect *= ambientOcclusion;
- #endif
- #if defined( USE_ENVMAP ) && defined( STANDARD )
- float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
- reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
- #endif
- #endif`,_Xe=`#ifdef USE_AOMAP
- uniform sampler2D aoMap;
- uniform float aoMapIntensity;
- #endif`,zXe=`#ifdef USE_BATCHING
- #if ! defined( GL_ANGLE_multi_draw )
- #define gl_DrawID _gl_DrawID
- uniform int _gl_DrawID;
- #endif
- uniform highp sampler2D batchingTexture;
- uniform highp usampler2D batchingIdTexture;
- mat4 getBatchingMatrix( const in float i ) {
- int size = textureSize( batchingTexture, 0 ).x;
- int j = int( i ) * 4;
- int x = j % size;
- int y = j / size;
- vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );
- vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );
- vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );
- vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );
- return mat4( v1, v2, v3, v4 );
- }
- float getIndirectIndex( const in int i ) {
- int size = textureSize( batchingIdTexture, 0 ).x;
- int x = i % size;
- int y = i / size;
- return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );
- }
- #endif
- #ifdef USE_BATCHING_COLOR
- uniform sampler2D batchingColorTexture;
- vec3 getBatchingColor( const in float i ) {
- int size = textureSize( batchingColorTexture, 0 ).x;
- int j = int( i );
- int x = j % size;
- int y = j / size;
- return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;
- }
- #endif`,OXe=`#ifdef USE_BATCHING
- mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );
- #endif`,jXe=`vec3 transformed = vec3( position );
- #ifdef USE_ALPHAHASH
- vPosition = vec3( position );
- #endif`,PXe=`vec3 objectNormal = vec3( normal );
- #ifdef USE_TANGENT
- vec3 objectTangent = vec3( tangent.xyz );
- #endif`,HXe=`float G_BlinnPhong_Implicit( ) {
- return 0.25;
- }
- float D_BlinnPhong( const in float shininess, const in float dotNH ) {
- return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );
- }
- vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {
- vec3 halfDir = normalize( lightDir + viewDir );
- float dotNH = saturate( dot( normal, halfDir ) );
- float dotVH = saturate( dot( viewDir, halfDir ) );
- vec3 F = F_Schlick( specularColor, 1.0, dotVH );
- float G = G_BlinnPhong_Implicit( );
- float D = D_BlinnPhong( shininess, dotNH );
- return F * ( G * D );
- } // validated`,KXe=`#ifdef USE_IRIDESCENCE
- const mat3 XYZ_TO_REC709 = mat3(
- 3.2404542, -0.9692660, 0.0556434,
- -1.5371385, 1.8760108, -0.2040259,
- -0.4985314, 0.0415560, 1.0572252
- );
- vec3 Fresnel0ToIor( vec3 fresnel0 ) {
- vec3 sqrtF0 = sqrt( fresnel0 );
- return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );
- }
- vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {
- return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );
- }
- float IorToFresnel0( float transmittedIor, float incidentIor ) {
- return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));
- }
- vec3 evalSensitivity( float OPD, vec3 shift ) {
- float phase = 2.0 * PI * OPD * 1.0e-9;
- vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );
- vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );
- vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );
- vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );
- xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );
- xyz /= 1.0685e-7;
- vec3 rgb = XYZ_TO_REC709 * xyz;
- return rgb;
- }
- vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {
- vec3 I;
- float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );
- float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );
- float cosTheta2Sq = 1.0 - sinTheta2Sq;
- if ( cosTheta2Sq < 0.0 ) {
- return vec3( 1.0 );
- }
- float cosTheta2 = sqrt( cosTheta2Sq );
- float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );
- float R12 = F_Schlick( R0, 1.0, cosTheta1 );
- float T121 = 1.0 - R12;
- float phi12 = 0.0;
- if ( iridescenceIOR < outsideIOR ) phi12 = PI;
- float phi21 = PI - phi12;
- vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );
- vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );
- vec3 phi23 = vec3( 0.0 );
- if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;
- if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;
- if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;
- float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;
- vec3 phi = vec3( phi21 ) + phi23;
- vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );
- vec3 r123 = sqrt( R123 );
- vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );
- vec3 C0 = R12 + Rs;
- I = C0;
- vec3 Cm = Rs - T121;
- for ( int m = 1; m <= 2; ++ m ) {
- Cm *= r123;
- vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );
- I += Cm * Sm;
- }
- return max( I, vec3( 0.0 ) );
- }
- #endif`,qXe=`#ifdef USE_BUMPMAP
- uniform sampler2D bumpMap;
- uniform float bumpScale;
- vec2 dHdxy_fwd() {
- vec2 dSTdx = dFdx( vBumpMapUv );
- vec2 dSTdy = dFdy( vBumpMapUv );
- float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;
- float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;
- float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;
- return vec2( dBx, dBy );
- }
- vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
- vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );
- vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );
- vec3 vN = surf_norm;
- vec3 R1 = cross( vSigmaY, vN );
- vec3 R2 = cross( vN, vSigmaX );
- float fDet = dot( vSigmaX, R1 ) * faceDirection;
- vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
- return normalize( abs( fDet ) * surf_norm - vGrad );
- }
- #endif`,$Xe=`#if NUM_CLIPPING_PLANES > 0
- vec4 plane;
- #ifdef ALPHA_TO_COVERAGE
- float distanceToPlane, distanceGradient;
- float clipOpacity = 1.0;
- #pragma unroll_loop_start
- for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
- plane = clippingPlanes[ i ];
- distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;
- distanceGradient = fwidth( distanceToPlane ) / 2.0;
- clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );
- if ( clipOpacity == 0.0 ) discard;
- }
- #pragma unroll_loop_end
- #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
- float unionClipOpacity = 1.0;
- #pragma unroll_loop_start
- for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
- plane = clippingPlanes[ i ];
- distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;
- distanceGradient = fwidth( distanceToPlane ) / 2.0;
- unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );
- }
- #pragma unroll_loop_end
- clipOpacity *= 1.0 - unionClipOpacity;
- #endif
- diffuseColor.a *= clipOpacity;
- if ( diffuseColor.a == 0.0 ) discard;
- #else
- #pragma unroll_loop_start
- for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
- plane = clippingPlanes[ i ];
- if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;
- }
- #pragma unroll_loop_end
- #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
- bool clipped = true;
- #pragma unroll_loop_start
- for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
- plane = clippingPlanes[ i ];
- clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;
- }
- #pragma unroll_loop_end
- if ( clipped ) discard;
- #endif
- #endif
- #endif`,e5e=`#if NUM_CLIPPING_PLANES > 0
- varying vec3 vClipPosition;
- uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
- #endif`,t5e=`#if NUM_CLIPPING_PLANES > 0
- varying vec3 vClipPosition;
- #endif`,i5e=`#if NUM_CLIPPING_PLANES > 0
- vClipPosition = - mvPosition.xyz;
- #endif`,n5e=`#if defined( USE_COLOR_ALPHA )
- diffuseColor *= vColor;
- #elif defined( USE_COLOR )
- diffuseColor.rgb *= vColor;
- #endif`,s5e=`#if defined( USE_COLOR_ALPHA )
- varying vec4 vColor;
- #elif defined( USE_COLOR )
- varying vec3 vColor;
- #endif`,o5e=`#if defined( USE_COLOR_ALPHA )
- varying vec4 vColor;
- #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
- varying vec3 vColor;
- #endif`,r5e=`#if defined( USE_COLOR_ALPHA )
- vColor = vec4( 1.0 );
- #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
- vColor = vec3( 1.0 );
- #endif
- #ifdef USE_COLOR
- vColor *= color;
- #endif
- #ifdef USE_INSTANCING_COLOR
- vColor.xyz *= instanceColor.xyz;
- #endif
- #ifdef USE_BATCHING_COLOR
- vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );
- vColor.xyz *= batchingColor.xyz;
- #endif`,l5e=`#define PI 3.141592653589793
- #define PI2 6.283185307179586
- #define PI_HALF 1.5707963267948966
- #define RECIPROCAL_PI 0.3183098861837907
- #define RECIPROCAL_PI2 0.15915494309189535
- #define EPSILON 1e-6
- #ifndef saturate
- #define saturate( a ) clamp( a, 0.0, 1.0 )
- #endif
- #define whiteComplement( a ) ( 1.0 - saturate( a ) )
- float pow2( const in float x ) { return x*x; }
- vec3 pow2( const in vec3 x ) { return x*x; }
- float pow3( const in float x ) { return x*x*x; }
- float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
- float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
- float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }
- highp float rand( const in vec2 uv ) {
- const highp float a = 12.9898, b = 78.233, c = 43758.5453;
- highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );
- return fract( sin( sn ) * c );
- }
- #ifdef HIGH_PRECISION
- float precisionSafeLength( vec3 v ) { return length( v ); }
- #else
- float precisionSafeLength( vec3 v ) {
- float maxComponent = max3( abs( v ) );
- return length( v / maxComponent ) * maxComponent;
- }
- #endif
- struct IncidentLight {
- vec3 color;
- vec3 direction;
- bool visible;
- };
- struct ReflectedLight {
- vec3 directDiffuse;
- vec3 directSpecular;
- vec3 indirectDiffuse;
- vec3 indirectSpecular;
- };
- #ifdef USE_ALPHAHASH
- varying vec3 vPosition;
- #endif
- vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
- return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
- }
- vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
- return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
- }
- mat3 transposeMat3( const in mat3 m ) {
- mat3 tmp;
- tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );
- tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );
- tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );
- return tmp;
- }
- bool isPerspectiveMatrix( mat4 m ) {
- return m[ 2 ][ 3 ] == - 1.0;
- }
- vec2 equirectUv( in vec3 dir ) {
- float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;
- float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;
- return vec2( u, v );
- }
- vec3 BRDF_Lambert( const in vec3 diffuseColor ) {
- return RECIPROCAL_PI * diffuseColor;
- }
- vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
- float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
- return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
- }
- float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
- float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
- return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
- } // validated`,a5e=`#ifdef ENVMAP_TYPE_CUBE_UV
- #define cubeUV_minMipLevel 4.0
- #define cubeUV_minTileSize 16.0
- float getFace( vec3 direction ) {
- vec3 absDirection = abs( direction );
- float face = - 1.0;
- if ( absDirection.x > absDirection.z ) {
- if ( absDirection.x > absDirection.y )
- face = direction.x > 0.0 ? 0.0 : 3.0;
- else
- face = direction.y > 0.0 ? 1.0 : 4.0;
- } else {
- if ( absDirection.z > absDirection.y )
- face = direction.z > 0.0 ? 2.0 : 5.0;
- else
- face = direction.y > 0.0 ? 1.0 : 4.0;
- }
- return face;
- }
- vec2 getUV( vec3 direction, float face ) {
- vec2 uv;
- if ( face == 0.0 ) {
- uv = vec2( direction.z, direction.y ) / abs( direction.x );
- } else if ( face == 1.0 ) {
- uv = vec2( - direction.x, - direction.z ) / abs( direction.y );
- } else if ( face == 2.0 ) {
- uv = vec2( - direction.x, direction.y ) / abs( direction.z );
- } else if ( face == 3.0 ) {
- uv = vec2( - direction.z, direction.y ) / abs( direction.x );
- } else if ( face == 4.0 ) {
- uv = vec2( - direction.x, direction.z ) / abs( direction.y );
- } else {
- uv = vec2( direction.x, direction.y ) / abs( direction.z );
- }
- return 0.5 * ( uv + 1.0 );
- }
- vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {
- float face = getFace( direction );
- float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );
- mipInt = max( mipInt, cubeUV_minMipLevel );
- float faceSize = exp2( mipInt );
- highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;
- if ( face > 2.0 ) {
- uv.y += faceSize;
- face -= 3.0;
- }
- uv.x += face * faceSize;
- uv.x += filterInt * 3.0 * cubeUV_minTileSize;
- uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );
- uv.x *= CUBEUV_TEXEL_WIDTH;
- uv.y *= CUBEUV_TEXEL_HEIGHT;
- #ifdef texture2DGradEXT
- return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;
- #else
- return texture2D( envMap, uv ).rgb;
- #endif
- }
- #define cubeUV_r0 1.0
- #define cubeUV_m0 - 2.0
- #define cubeUV_r1 0.8
- #define cubeUV_m1 - 1.0
- #define cubeUV_r4 0.4
- #define cubeUV_m4 2.0
- #define cubeUV_r5 0.305
- #define cubeUV_m5 3.0
- #define cubeUV_r6 0.21
- #define cubeUV_m6 4.0
- float roughnessToMip( float roughness ) {
- float mip = 0.0;
- if ( roughness >= cubeUV_r1 ) {
- mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;
- } else if ( roughness >= cubeUV_r4 ) {
- mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;
- } else if ( roughness >= cubeUV_r5 ) {
- mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;
- } else if ( roughness >= cubeUV_r6 ) {
- mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;
- } else {
- mip = - 2.0 * log2( 1.16 * roughness ); }
- return mip;
- }
- vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
- float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );
- float mipF = fract( mip );
- float mipInt = floor( mip );
- vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );
- if ( mipF == 0.0 ) {
- return vec4( color0, 1.0 );
- } else {
- vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );
- return vec4( mix( color0, color1, mipF ), 1.0 );
- }
- }
- #endif`,d5e=`vec3 transformedNormal = objectNormal;
- #ifdef USE_TANGENT
- vec3 transformedTangent = objectTangent;
- #endif
- #ifdef USE_BATCHING
- mat3 bm = mat3( batchingMatrix );
- transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );
- transformedNormal = bm * transformedNormal;
- #ifdef USE_TANGENT
- transformedTangent = bm * transformedTangent;
- #endif
- #endif
- #ifdef USE_INSTANCING
- mat3 im = mat3( instanceMatrix );
- transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );
- transformedNormal = im * transformedNormal;
- #ifdef USE_TANGENT
- transformedTangent = im * transformedTangent;
- #endif
- #endif
- transformedNormal = normalMatrix * transformedNormal;
- #ifdef FLIP_SIDED
- transformedNormal = - transformedNormal;
- #endif
- #ifdef USE_TANGENT
- transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;
- #ifdef FLIP_SIDED
- transformedTangent = - transformedTangent;
- #endif
- #endif`,c5e=`#ifdef USE_DISPLACEMENTMAP
- uniform sampler2D displacementMap;
- uniform float displacementScale;
- uniform float displacementBias;
- #endif`,h5e=`#ifdef USE_DISPLACEMENTMAP
- transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );
- #endif`,u5e=`#ifdef USE_EMISSIVEMAP
- vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );
- #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE
- emissiveColor = sRGBTransferEOTF( emissiveColor );
- #endif
- totalEmissiveRadiance *= emissiveColor.rgb;
- #endif`,m5e=`#ifdef USE_EMISSIVEMAP
- uniform sampler2D emissiveMap;
- #endif`,p5e="gl_FragColor = linearToOutputTexel( gl_FragColor );",g5e=`vec4 LinearTransferOETF( in vec4 value ) {
- return value;
- }
- vec4 sRGBTransferEOTF( in vec4 value ) {
- return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );
- }
- vec4 sRGBTransferOETF( in vec4 value ) {
- return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
- }`,f5e=`#ifdef USE_ENVMAP
- #ifdef ENV_WORLDPOS
- vec3 cameraToFrag;
- if ( isOrthographic ) {
- cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
- } else {
- cameraToFrag = normalize( vWorldPosition - cameraPosition );
- }
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
- #ifdef ENVMAP_MODE_REFLECTION
- vec3 reflectVec = reflect( cameraToFrag, worldNormal );
- #else
- vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );
- #endif
- #else
- vec3 reflectVec = vReflect;
- #endif
- #ifdef ENVMAP_TYPE_CUBE
- vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
- #else
- vec4 envColor = vec4( 0.0 );
- #endif
- #ifdef ENVMAP_BLENDING_MULTIPLY
- outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
- #elif defined( ENVMAP_BLENDING_MIX )
- outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
- #elif defined( ENVMAP_BLENDING_ADD )
- outgoingLight += envColor.xyz * specularStrength * reflectivity;
- #endif
- #endif`,b5e=`#ifdef USE_ENVMAP
- uniform float envMapIntensity;
- uniform float flipEnvMap;
- uniform mat3 envMapRotation;
- #ifdef ENVMAP_TYPE_CUBE
- uniform samplerCube envMap;
- #else
- uniform sampler2D envMap;
- #endif
-
- #endif`,U5e=`#ifdef USE_ENVMAP
- uniform float reflectivity;
- #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
- #define ENV_WORLDPOS
- #endif
- #ifdef ENV_WORLDPOS
- varying vec3 vWorldPosition;
- uniform float refractionRatio;
- #else
- varying vec3 vReflect;
- #endif
- #endif`,F5e=`#ifdef USE_ENVMAP
- #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
- #define ENV_WORLDPOS
- #endif
- #ifdef ENV_WORLDPOS
-
- varying vec3 vWorldPosition;
- #else
- varying vec3 vReflect;
- uniform float refractionRatio;
- #endif
- #endif`,A5e=`#ifdef USE_ENVMAP
- #ifdef ENV_WORLDPOS
- vWorldPosition = worldPosition.xyz;
- #else
- vec3 cameraToVertex;
- if ( isOrthographic ) {
- cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
- } else {
- cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
- }
- vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
- #ifdef ENVMAP_MODE_REFLECTION
- vReflect = reflect( cameraToVertex, worldNormal );
- #else
- vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
- #endif
- #endif
- #endif`,Z5e=`#ifdef USE_FOG
- vFogDepth = - mvPosition.z;
- #endif`,S5e=`#ifdef USE_FOG
- varying float vFogDepth;
- #endif`,N5e=`#ifdef USE_FOG
- #ifdef FOG_EXP2
- float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
- #else
- float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
- #endif
- gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
- #endif`,R5e=`#ifdef USE_FOG
- uniform vec3 fogColor;
- varying float vFogDepth;
- #ifdef FOG_EXP2
- uniform float fogDensity;
- #else
- uniform float fogNear;
- uniform float fogFar;
- #endif
- #endif`,V5e=`#ifdef USE_GRADIENTMAP
- uniform sampler2D gradientMap;
- #endif
- vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
- float dotNL = dot( normal, lightDirection );
- vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );
- #ifdef USE_GRADIENTMAP
- return vec3( texture2D( gradientMap, coord ).r );
- #else
- vec2 fw = fwidth( coord ) * 0.5;
- return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );
- #endif
- }`,W5e=`#ifdef USE_LIGHTMAP
- uniform sampler2D lightMap;
- uniform float lightMapIntensity;
- #endif`,y5e=`LambertMaterial material;
- material.diffuseColor = diffuseColor.rgb;
- material.specularStrength = specularStrength;`,Q5e=`varying vec3 vViewPosition;
- struct LambertMaterial {
- vec3 diffuseColor;
- float specularStrength;
- };
- void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
- float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
- vec3 irradiance = dotNL * directLight.color;
- reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- }
- void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
- reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- }
- #define RE_Direct RE_Direct_Lambert
- #define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,M5e=`uniform bool receiveShadow;
- uniform vec3 ambientLightColor;
- #if defined( USE_LIGHT_PROBES )
- uniform vec3 lightProbe[ 9 ];
- #endif
- vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
- float x = normal.x, y = normal.y, z = normal.z;
- vec3 result = shCoefficients[ 0 ] * 0.886227;
- result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
- result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
- result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
- result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
- result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
- result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
- result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
- result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
- return result;
- }
- vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
- vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
- return irradiance;
- }
- vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
- vec3 irradiance = ambientLightColor;
- return irradiance;
- }
- float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {
- float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
- if ( cutoffDistance > 0.0 ) {
- distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
- }
- return distanceFalloff;
- }
- float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {
- return smoothstep( coneCosine, penumbraCosine, angleCosine );
- }
- #if NUM_DIR_LIGHTS > 0
- struct DirectionalLight {
- vec3 direction;
- vec3 color;
- };
- uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
- void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {
- light.color = directionalLight.color;
- light.direction = directionalLight.direction;
- light.visible = true;
- }
- #endif
- #if NUM_POINT_LIGHTS > 0
- struct PointLight {
- vec3 position;
- vec3 color;
- float distance;
- float decay;
- };
- uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
- void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {
- vec3 lVector = pointLight.position - geometryPosition;
- light.direction = normalize( lVector );
- float lightDistance = length( lVector );
- light.color = pointLight.color;
- light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );
- light.visible = ( light.color != vec3( 0.0 ) );
- }
- #endif
- #if NUM_SPOT_LIGHTS > 0
- struct SpotLight {
- vec3 position;
- vec3 direction;
- vec3 color;
- float distance;
- float decay;
- float coneCos;
- float penumbraCos;
- };
- uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
- void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {
- vec3 lVector = spotLight.position - geometryPosition;
- light.direction = normalize( lVector );
- float angleCos = dot( light.direction, spotLight.direction );
- float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );
- if ( spotAttenuation > 0.0 ) {
- float lightDistance = length( lVector );
- light.color = spotLight.color * spotAttenuation;
- light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );
- light.visible = ( light.color != vec3( 0.0 ) );
- } else {
- light.color = vec3( 0.0 );
- light.visible = false;
- }
- }
- #endif
- #if NUM_RECT_AREA_LIGHTS > 0
- struct RectAreaLight {
- vec3 color;
- vec3 position;
- vec3 halfWidth;
- vec3 halfHeight;
- };
- uniform sampler2D ltc_1; uniform sampler2D ltc_2;
- uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];
- #endif
- #if NUM_HEMI_LIGHTS > 0
- struct HemisphereLight {
- vec3 direction;
- vec3 skyColor;
- vec3 groundColor;
- };
- uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
- vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {
- float dotNL = dot( normal, hemiLight.direction );
- float hemiDiffuseWeight = 0.5 * dotNL + 0.5;
- vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
- return irradiance;
- }
- #endif`,w5e=`#ifdef USE_ENVMAP
- vec3 getIBLIrradiance( const in vec3 normal ) {
- #ifdef ENVMAP_TYPE_CUBE_UV
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
- vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );
- return PI * envMapColor.rgb * envMapIntensity;
- #else
- return vec3( 0.0 );
- #endif
- }
- vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
- #ifdef ENVMAP_TYPE_CUBE_UV
- vec3 reflectVec = reflect( - viewDir, normal );
- reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
- reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
- vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );
- return envMapColor.rgb * envMapIntensity;
- #else
- return vec3( 0.0 );
- #endif
- }
- #ifdef USE_ANISOTROPY
- vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {
- #ifdef ENVMAP_TYPE_CUBE_UV
- vec3 bentNormal = cross( bitangent, viewDir );
- bentNormal = normalize( cross( bentNormal, bitangent ) );
- bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );
- return getIBLRadiance( viewDir, bentNormal, roughness );
- #else
- return vec3( 0.0 );
- #endif
- }
- #endif
- #endif`,T5e=`ToonMaterial material;
- material.diffuseColor = diffuseColor.rgb;`,C5e=`varying vec3 vViewPosition;
- struct ToonMaterial {
- vec3 diffuseColor;
- };
- void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
- vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;
- reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- }
- void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
- reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- }
- #define RE_Direct RE_Direct_Toon
- #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,B5e=`BlinnPhongMaterial material;
- material.diffuseColor = diffuseColor.rgb;
- material.specularColor = specular;
- material.specularShininess = shininess;
- material.specularStrength = specularStrength;`,L5e=`varying vec3 vViewPosition;
- struct BlinnPhongMaterial {
- vec3 diffuseColor;
- vec3 specularColor;
- float specularShininess;
- float specularStrength;
- };
- void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
- float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
- vec3 irradiance = dotNL * directLight.color;
- reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;
- }
- void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
- reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- }
- #define RE_Direct RE_Direct_BlinnPhong
- #define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,v5e=`PhysicalMaterial material;
- material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
- vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );
- float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
- material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;
- material.roughness = min( material.roughness, 1.0 );
- #ifdef IOR
- material.ior = ior;
- #ifdef USE_SPECULAR
- float specularIntensityFactor = specularIntensity;
- vec3 specularColorFactor = specularColor;
- #ifdef USE_SPECULAR_COLORMAP
- specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;
- #endif
- #ifdef USE_SPECULAR_INTENSITYMAP
- specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;
- #endif
- material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );
- #else
- float specularIntensityFactor = 1.0;
- vec3 specularColorFactor = vec3( 1.0 );
- material.specularF90 = 1.0;
- #endif
- material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );
- #else
- material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
- material.specularF90 = 1.0;
- #endif
- #ifdef USE_CLEARCOAT
- material.clearcoat = clearcoat;
- material.clearcoatRoughness = clearcoatRoughness;
- material.clearcoatF0 = vec3( 0.04 );
- material.clearcoatF90 = 1.0;
- #ifdef USE_CLEARCOATMAP
- material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;
- #endif
- #ifdef USE_CLEARCOAT_ROUGHNESSMAP
- material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;
- #endif
- material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );
- material.clearcoatRoughness += geometryRoughness;
- material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );
- #endif
- #ifdef USE_DISPERSION
- material.dispersion = dispersion;
- #endif
- #ifdef USE_IRIDESCENCE
- material.iridescence = iridescence;
- material.iridescenceIOR = iridescenceIOR;
- #ifdef USE_IRIDESCENCEMAP
- material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;
- #endif
- #ifdef USE_IRIDESCENCE_THICKNESSMAP
- material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;
- #else
- material.iridescenceThickness = iridescenceThicknessMaximum;
- #endif
- #endif
- #ifdef USE_SHEEN
- material.sheenColor = sheenColor;
- #ifdef USE_SHEEN_COLORMAP
- material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;
- #endif
- material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
- #ifdef USE_SHEEN_ROUGHNESSMAP
- material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;
- #endif
- #endif
- #ifdef USE_ANISOTROPY
- #ifdef USE_ANISOTROPYMAP
- mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );
- vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;
- vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;
- #else
- vec2 anisotropyV = anisotropyVector;
- #endif
- material.anisotropy = length( anisotropyV );
- if( material.anisotropy == 0.0 ) {
- anisotropyV = vec2( 1.0, 0.0 );
- } else {
- anisotropyV /= material.anisotropy;
- material.anisotropy = saturate( material.anisotropy );
- }
- material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );
- material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;
- material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;
- #endif`,k5e=`struct PhysicalMaterial {
- vec3 diffuseColor;
- float roughness;
- vec3 specularColor;
- float specularF90;
- float dispersion;
- #ifdef USE_CLEARCOAT
- float clearcoat;
- float clearcoatRoughness;
- vec3 clearcoatF0;
- float clearcoatF90;
- #endif
- #ifdef USE_IRIDESCENCE
- float iridescence;
- float iridescenceIOR;
- float iridescenceThickness;
- vec3 iridescenceFresnel;
- vec3 iridescenceF0;
- #endif
- #ifdef USE_SHEEN
- vec3 sheenColor;
- float sheenRoughness;
- #endif
- #ifdef IOR
- float ior;
- #endif
- #ifdef USE_TRANSMISSION
- float transmission;
- float transmissionAlpha;
- float thickness;
- float attenuationDistance;
- vec3 attenuationColor;
- #endif
- #ifdef USE_ANISOTROPY
- float anisotropy;
- float alphaT;
- vec3 anisotropyT;
- vec3 anisotropyB;
- #endif
- };
- vec3 clearcoatSpecularDirect = vec3( 0.0 );
- vec3 clearcoatSpecularIndirect = vec3( 0.0 );
- vec3 sheenSpecularDirect = vec3( 0.0 );
- vec3 sheenSpecularIndirect = vec3(0.0 );
- vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {
- float x = clamp( 1.0 - dotVH, 0.0, 1.0 );
- float x2 = x * x;
- float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );
- return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );
- }
- float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
- float a2 = pow2( alpha );
- float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
- float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
- return 0.5 / max( gv + gl, EPSILON );
- }
- float D_GGX( const in float alpha, const in float dotNH ) {
- float a2 = pow2( alpha );
- float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;
- return RECIPROCAL_PI * a2 / pow2( denom );
- }
- #ifdef USE_ANISOTROPY
- float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {
- float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );
- float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );
- float v = 0.5 / ( gv + gl );
- return saturate(v);
- }
- float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {
- float a2 = alphaT * alphaB;
- highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );
- highp float v2 = dot( v, v );
- float w2 = a2 / v2;
- return RECIPROCAL_PI * a2 * pow2 ( w2 );
- }
- #endif
- #ifdef USE_CLEARCOAT
- vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {
- vec3 f0 = material.clearcoatF0;
- float f90 = material.clearcoatF90;
- float roughness = material.clearcoatRoughness;
- float alpha = pow2( roughness );
- vec3 halfDir = normalize( lightDir + viewDir );
- float dotNL = saturate( dot( normal, lightDir ) );
- float dotNV = saturate( dot( normal, viewDir ) );
- float dotNH = saturate( dot( normal, halfDir ) );
- float dotVH = saturate( dot( viewDir, halfDir ) );
- vec3 F = F_Schlick( f0, f90, dotVH );
- float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
- float D = D_GGX( alpha, dotNH );
- return F * ( V * D );
- }
- #endif
- vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {
- vec3 f0 = material.specularColor;
- float f90 = material.specularF90;
- float roughness = material.roughness;
- float alpha = pow2( roughness );
- vec3 halfDir = normalize( lightDir + viewDir );
- float dotNL = saturate( dot( normal, lightDir ) );
- float dotNV = saturate( dot( normal, viewDir ) );
- float dotNH = saturate( dot( normal, halfDir ) );
- float dotVH = saturate( dot( viewDir, halfDir ) );
- vec3 F = F_Schlick( f0, f90, dotVH );
- #ifdef USE_IRIDESCENCE
- F = mix( F, material.iridescenceFresnel, material.iridescence );
- #endif
- #ifdef USE_ANISOTROPY
- float dotTL = dot( material.anisotropyT, lightDir );
- float dotTV = dot( material.anisotropyT, viewDir );
- float dotTH = dot( material.anisotropyT, halfDir );
- float dotBL = dot( material.anisotropyB, lightDir );
- float dotBV = dot( material.anisotropyB, viewDir );
- float dotBH = dot( material.anisotropyB, halfDir );
- float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );
- float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );
- #else
- float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
- float D = D_GGX( alpha, dotNH );
- #endif
- return F * ( V * D );
- }
- vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {
- const float LUT_SIZE = 64.0;
- const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;
- const float LUT_BIAS = 0.5 / LUT_SIZE;
- float dotNV = saturate( dot( N, V ) );
- vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );
- uv = uv * LUT_SCALE + LUT_BIAS;
- return uv;
- }
- float LTC_ClippedSphereFormFactor( const in vec3 f ) {
- float l = length( f );
- return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );
- }
- vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {
- float x = dot( v1, v2 );
- float y = abs( x );
- float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;
- float b = 3.4175940 + ( 4.1616724 + y ) * y;
- float v = a / b;
- float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;
- return cross( v1, v2 ) * theta_sintheta;
- }
- vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {
- vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];
- vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];
- vec3 lightNormal = cross( v1, v2 );
- if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );
- vec3 T1, T2;
- T1 = normalize( V - N * dot( V, N ) );
- T2 = - cross( N, T1 );
- mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );
- vec3 coords[ 4 ];
- coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );
- coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );
- coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );
- coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );
- coords[ 0 ] = normalize( coords[ 0 ] );
- coords[ 1 ] = normalize( coords[ 1 ] );
- coords[ 2 ] = normalize( coords[ 2 ] );
- coords[ 3 ] = normalize( coords[ 3 ] );
- vec3 vectorFormFactor = vec3( 0.0 );
- vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );
- vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );
- vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );
- vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );
- float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
- return vec3( result );
- }
- #if defined( USE_SHEEN )
- float D_Charlie( float roughness, float dotNH ) {
- float alpha = pow2( roughness );
- float invAlpha = 1.0 / alpha;
- float cos2h = dotNH * dotNH;
- float sin2h = max( 1.0 - cos2h, 0.0078125 );
- return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );
- }
- float V_Neubelt( float dotNV, float dotNL ) {
- return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );
- }
- vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
- vec3 halfDir = normalize( lightDir + viewDir );
- float dotNL = saturate( dot( normal, lightDir ) );
- float dotNV = saturate( dot( normal, viewDir ) );
- float dotNH = saturate( dot( normal, halfDir ) );
- float D = D_Charlie( sheenRoughness, dotNH );
- float V = V_Neubelt( dotNV, dotNL );
- return sheenColor * ( D * V );
- }
- #endif
- float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
- float dotNV = saturate( dot( normal, viewDir ) );
- float r2 = roughness * roughness;
- float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;
- float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;
- float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );
- return saturate( DG * RECIPROCAL_PI );
- }
- vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
- float dotNV = saturate( dot( normal, viewDir ) );
- const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );
- const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );
- vec4 r = roughness * c0 + c1;
- float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;
- vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;
- return fab;
- }
- vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {
- vec2 fab = DFGApprox( normal, viewDir, roughness );
- return specularColor * fab.x + specularF90 * fab.y;
- }
- #ifdef USE_IRIDESCENCE
- void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
- #else
- void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
- #endif
- vec2 fab = DFGApprox( normal, viewDir, roughness );
- #ifdef USE_IRIDESCENCE
- vec3 Fr = mix( specularColor, iridescenceF0, iridescence );
- #else
- vec3 Fr = specularColor;
- #endif
- vec3 FssEss = Fr * fab.x + specularF90 * fab.y;
- float Ess = fab.x + fab.y;
- float Ems = 1.0 - Ess;
- vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );
- singleScatter += FssEss;
- multiScatter += Fms * Ems;
- }
- #if NUM_RECT_AREA_LIGHTS > 0
- void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
- vec3 normal = geometryNormal;
- vec3 viewDir = geometryViewDir;
- vec3 position = geometryPosition;
- vec3 lightPos = rectAreaLight.position;
- vec3 halfWidth = rectAreaLight.halfWidth;
- vec3 halfHeight = rectAreaLight.halfHeight;
- vec3 lightColor = rectAreaLight.color;
- float roughness = material.roughness;
- vec3 rectCoords[ 4 ];
- rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;
- rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;
- rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;
- vec2 uv = LTC_Uv( normal, viewDir, roughness );
- vec4 t1 = texture2D( ltc_1, uv );
- vec4 t2 = texture2D( ltc_2, uv );
- mat3 mInv = mat3(
- vec3( t1.x, 0, t1.y ),
- vec3( 0, 1, 0 ),
- vec3( t1.z, 0, t1.w )
- );
- vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );
- reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );
- reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );
- }
- #endif
- void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
- float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
- vec3 irradiance = dotNL * directLight.color;
- #ifdef USE_CLEARCOAT
- float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );
- vec3 ccIrradiance = dotNLcc * directLight.color;
- clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );
- #endif
- #ifdef USE_SHEEN
- sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );
- #endif
- reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );
- reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- }
- void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
- reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
- }
- void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
- #ifdef USE_CLEARCOAT
- clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
- #endif
- #ifdef USE_SHEEN
- sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );
- #endif
- vec3 singleScattering = vec3( 0.0 );
- vec3 multiScattering = vec3( 0.0 );
- vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
- #ifdef USE_IRIDESCENCE
- computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );
- #else
- computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );
- #endif
- vec3 totalScattering = singleScattering + multiScattering;
- vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );
- reflectedLight.indirectSpecular += radiance * singleScattering;
- reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
- reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
- }
- #define RE_Direct RE_Direct_Physical
- #define RE_Direct_RectArea RE_Direct_RectArea_Physical
- #define RE_IndirectDiffuse RE_IndirectDiffuse_Physical
- #define RE_IndirectSpecular RE_IndirectSpecular_Physical
- float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
- return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
- }`,x5e=`
- vec3 geometryPosition = - vViewPosition;
- vec3 geometryNormal = normal;
- vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
- vec3 geometryClearcoatNormal = vec3( 0.0 );
- #ifdef USE_CLEARCOAT
- geometryClearcoatNormal = clearcoatNormal;
- #endif
- #ifdef USE_IRIDESCENCE
- float dotNVi = saturate( dot( normal, geometryViewDir ) );
- if ( material.iridescenceThickness == 0.0 ) {
- material.iridescence = 0.0;
- } else {
- material.iridescence = saturate( material.iridescence );
- }
- if ( material.iridescence > 0.0 ) {
- material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );
- material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );
- }
- #endif
- IncidentLight directLight;
- #if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
- PointLight pointLight;
- #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
- PointLightShadow pointLightShadow;
- #endif
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
- pointLight = pointLights[ i ];
- getPointLightInfo( pointLight, geometryPosition, directLight );
- #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
- pointLightShadow = pointLightShadows[ i ];
- directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
- #endif
- RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
- }
- #pragma unroll_loop_end
- #endif
- #if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
- SpotLight spotLight;
- vec4 spotColor;
- vec3 spotLightCoord;
- bool inSpotLightMap;
- #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
- SpotLightShadow spotLightShadow;
- #endif
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
- spotLight = spotLights[ i ];
- getSpotLightInfo( spotLight, geometryPosition, directLight );
- #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
- #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX
- #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
- #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS
- #else
- #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
- #endif
- #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )
- spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;
- inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );
- spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );
- directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;
- #endif
- #undef SPOT_LIGHT_MAP_INDEX
- #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
- spotLightShadow = spotLightShadows[ i ];
- directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
- #endif
- RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
- }
- #pragma unroll_loop_end
- #endif
- #if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
- DirectionalLight directionalLight;
- #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
- DirectionalLightShadow directionalLightShadow;
- #endif
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
- directionalLight = directionalLights[ i ];
- getDirectionalLightInfo( directionalLight, directLight );
- #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
- directionalLightShadow = directionalLightShadows[ i ];
- directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
- #endif
- RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
- }
- #pragma unroll_loop_end
- #endif
- #if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
- RectAreaLight rectAreaLight;
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
- rectAreaLight = rectAreaLights[ i ];
- RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
- }
- #pragma unroll_loop_end
- #endif
- #if defined( RE_IndirectDiffuse )
- vec3 iblIrradiance = vec3( 0.0 );
- vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
- #if defined( USE_LIGHT_PROBES )
- irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );
- #endif
- #if ( NUM_HEMI_LIGHTS > 0 )
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
- irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );
- }
- #pragma unroll_loop_end
- #endif
- #endif
- #if defined( RE_IndirectSpecular )
- vec3 radiance = vec3( 0.0 );
- vec3 clearcoatRadiance = vec3( 0.0 );
- #endif`,I5e=`#if defined( RE_IndirectDiffuse )
- #ifdef USE_LIGHTMAP
- vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
- vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
- irradiance += lightMapIrradiance;
- #endif
- #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
- iblIrradiance += getIBLIrradiance( geometryNormal );
- #endif
- #endif
- #if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
- #ifdef USE_ANISOTROPY
- radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );
- #else
- radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );
- #endif
- #ifdef USE_CLEARCOAT
- clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );
- #endif
- #endif`,E5e=`#if defined( RE_IndirectDiffuse )
- RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
- #endif
- #if defined( RE_IndirectSpecular )
- RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
- #endif`,D5e=`#if defined( USE_LOGDEPTHBUF )
- gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
- #endif`,G5e=`#if defined( USE_LOGDEPTHBUF )
- uniform float logDepthBufFC;
- varying float vFragDepth;
- varying float vIsPerspective;
- #endif`,J5e=`#ifdef USE_LOGDEPTHBUF
- varying float vFragDepth;
- varying float vIsPerspective;
- #endif`,X5e=`#ifdef USE_LOGDEPTHBUF
- vFragDepth = 1.0 + gl_Position.w;
- vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
- #endif`,Y5e=`#ifdef USE_MAP
- vec4 sampledDiffuseColor = texture2D( map, vMapUv );
- #ifdef DECODE_VIDEO_TEXTURE
- sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );
- #endif
- diffuseColor *= sampledDiffuseColor;
- #endif`,_5e=`#ifdef USE_MAP
- uniform sampler2D map;
- #endif`,z5e=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
- #if defined( USE_POINTS_UV )
- vec2 uv = vUv;
- #else
- vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
- #endif
- #endif
- #ifdef USE_MAP
- diffuseColor *= texture2D( map, uv );
- #endif
- #ifdef USE_ALPHAMAP
- diffuseColor.a *= texture2D( alphaMap, uv ).g;
- #endif`,O5e=`#if defined( USE_POINTS_UV )
- varying vec2 vUv;
- #else
- #if defined( USE_MAP ) || defined( USE_ALPHAMAP )
- uniform mat3 uvTransform;
- #endif
- #endif
- #ifdef USE_MAP
- uniform sampler2D map;
- #endif
- #ifdef USE_ALPHAMAP
- uniform sampler2D alphaMap;
- #endif`,j5e=`float metalnessFactor = metalness;
- #ifdef USE_METALNESSMAP
- vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );
- metalnessFactor *= texelMetalness.b;
- #endif`,P5e=`#ifdef USE_METALNESSMAP
- uniform sampler2D metalnessMap;
- #endif`,H5e=`#ifdef USE_INSTANCING_MORPH
- float morphTargetInfluences[ MORPHTARGETS_COUNT ];
- float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;
- for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
- morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;
- }
- #endif`,K5e=`#if defined( USE_MORPHCOLORS )
- vColor *= morphTargetBaseInfluence;
- for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
- #if defined( USE_COLOR_ALPHA )
- if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];
- #elif defined( USE_COLOR )
- if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];
- #endif
- }
- #endif`,q5e=`#ifdef USE_MORPHNORMALS
- objectNormal *= morphTargetBaseInfluence;
- for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
- if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];
- }
- #endif`,$5e=`#ifdef USE_MORPHTARGETS
- #ifndef USE_INSTANCING_MORPH
- uniform float morphTargetBaseInfluence;
- uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
- #endif
- uniform sampler2DArray morphTargetsTexture;
- uniform ivec2 morphTargetsTextureSize;
- vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {
- int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;
- int y = texelIndex / morphTargetsTextureSize.x;
- int x = texelIndex - y * morphTargetsTextureSize.x;
- ivec3 morphUV = ivec3( x, y, morphTargetIndex );
- return texelFetch( morphTargetsTexture, morphUV, 0 );
- }
- #endif`,eYe=`#ifdef USE_MORPHTARGETS
- transformed *= morphTargetBaseInfluence;
- for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
- if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];
- }
- #endif`,tYe=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
- #ifdef FLAT_SHADED
- vec3 fdx = dFdx( vViewPosition );
- vec3 fdy = dFdy( vViewPosition );
- vec3 normal = normalize( cross( fdx, fdy ) );
- #else
- vec3 normal = normalize( vNormal );
- #ifdef DOUBLE_SIDED
- normal *= faceDirection;
- #endif
- #endif
- #if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )
- #ifdef USE_TANGENT
- mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
- #else
- mat3 tbn = getTangentFrame( - vViewPosition, normal,
- #if defined( USE_NORMALMAP )
- vNormalMapUv
- #elif defined( USE_CLEARCOAT_NORMALMAP )
- vClearcoatNormalMapUv
- #else
- vUv
- #endif
- );
- #endif
- #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
- tbn[0] *= faceDirection;
- tbn[1] *= faceDirection;
- #endif
- #endif
- #ifdef USE_CLEARCOAT_NORMALMAP
- #ifdef USE_TANGENT
- mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
- #else
- mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );
- #endif
- #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
- tbn2[0] *= faceDirection;
- tbn2[1] *= faceDirection;
- #endif
- #endif
- vec3 nonPerturbedNormal = normal;`,iYe=`#ifdef USE_NORMALMAP_OBJECTSPACE
- normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
- #ifdef FLIP_SIDED
- normal = - normal;
- #endif
- #ifdef DOUBLE_SIDED
- normal = normal * faceDirection;
- #endif
- normal = normalize( normalMatrix * normal );
- #elif defined( USE_NORMALMAP_TANGENTSPACE )
- vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
- mapN.xy *= normalScale;
- normal = normalize( tbn * mapN );
- #elif defined( USE_BUMPMAP )
- normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
- #endif`,nYe=`#ifndef FLAT_SHADED
- varying vec3 vNormal;
- #ifdef USE_TANGENT
- varying vec3 vTangent;
- varying vec3 vBitangent;
- #endif
- #endif`,sYe=`#ifndef FLAT_SHADED
- varying vec3 vNormal;
- #ifdef USE_TANGENT
- varying vec3 vTangent;
- varying vec3 vBitangent;
- #endif
- #endif`,oYe=`#ifndef FLAT_SHADED
- vNormal = normalize( transformedNormal );
- #ifdef USE_TANGENT
- vTangent = normalize( transformedTangent );
- vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
- #endif
- #endif`,rYe=`#ifdef USE_NORMALMAP
- uniform sampler2D normalMap;
- uniform vec2 normalScale;
- #endif
- #ifdef USE_NORMALMAP_OBJECTSPACE
- uniform mat3 normalMatrix;
- #endif
- #if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )
- mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {
- vec3 q0 = dFdx( eye_pos.xyz );
- vec3 q1 = dFdy( eye_pos.xyz );
- vec2 st0 = dFdx( uv.st );
- vec2 st1 = dFdy( uv.st );
- vec3 N = surf_norm;
- vec3 q1perp = cross( q1, N );
- vec3 q0perp = cross( N, q0 );
- vec3 T = q1perp * st0.x + q0perp * st1.x;
- vec3 B = q1perp * st0.y + q0perp * st1.y;
- float det = max( dot( T, T ), dot( B, B ) );
- float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );
- return mat3( T * scale, B * scale, N );
- }
- #endif`,lYe=`#ifdef USE_CLEARCOAT
- vec3 clearcoatNormal = nonPerturbedNormal;
- #endif`,aYe=`#ifdef USE_CLEARCOAT_NORMALMAP
- vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;
- clearcoatMapN.xy *= clearcoatNormalScale;
- clearcoatNormal = normalize( tbn2 * clearcoatMapN );
- #endif`,dYe=`#ifdef USE_CLEARCOATMAP
- uniform sampler2D clearcoatMap;
- #endif
- #ifdef USE_CLEARCOAT_NORMALMAP
- uniform sampler2D clearcoatNormalMap;
- uniform vec2 clearcoatNormalScale;
- #endif
- #ifdef USE_CLEARCOAT_ROUGHNESSMAP
- uniform sampler2D clearcoatRoughnessMap;
- #endif`,cYe=`#ifdef USE_IRIDESCENCEMAP
- uniform sampler2D iridescenceMap;
- #endif
- #ifdef USE_IRIDESCENCE_THICKNESSMAP
- uniform sampler2D iridescenceThicknessMap;
- #endif`,hYe=`#ifdef OPAQUE
- diffuseColor.a = 1.0;
- #endif
- #ifdef USE_TRANSMISSION
- diffuseColor.a *= material.transmissionAlpha;
- #endif
- gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,uYe=`vec3 packNormalToRGB( const in vec3 normal ) {
- return normalize( normal ) * 0.5 + 0.5;
- }
- vec3 unpackRGBToNormal( const in vec3 rgb ) {
- return 2.0 * rgb.xyz - 1.0;
- }
- const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;
- const float Inv255 = 1. / 255.;
- const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );
- const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );
- const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );
- const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );
- vec4 packDepthToRGBA( const in float v ) {
- if( v <= 0.0 )
- return vec4( 0., 0., 0., 0. );
- if( v >= 1.0 )
- return vec4( 1., 1., 1., 1. );
- float vuf;
- float af = modf( v * PackFactors.a, vuf );
- float bf = modf( vuf * ShiftRight8, vuf );
- float gf = modf( vuf * ShiftRight8, vuf );
- return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );
- }
- vec3 packDepthToRGB( const in float v ) {
- if( v <= 0.0 )
- return vec3( 0., 0., 0. );
- if( v >= 1.0 )
- return vec3( 1., 1., 1. );
- float vuf;
- float bf = modf( v * PackFactors.b, vuf );
- float gf = modf( vuf * ShiftRight8, vuf );
- return vec3( vuf * Inv255, gf * PackUpscale, bf );
- }
- vec2 packDepthToRG( const in float v ) {
- if( v <= 0.0 )
- return vec2( 0., 0. );
- if( v >= 1.0 )
- return vec2( 1., 1. );
- float vuf;
- float gf = modf( v * 256., vuf );
- return vec2( vuf * Inv255, gf );
- }
- float unpackRGBAToDepth( const in vec4 v ) {
- return dot( v, UnpackFactors4 );
- }
- float unpackRGBToDepth( const in vec3 v ) {
- return dot( v, UnpackFactors3 );
- }
- float unpackRGToDepth( const in vec2 v ) {
- return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;
- }
- vec4 pack2HalfToRGBA( const in vec2 v ) {
- vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
- return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
- }
- vec2 unpackRGBATo2Half( const in vec4 v ) {
- return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
- }
- float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {
- return ( viewZ + near ) / ( near - far );
- }
- float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {
- return depth * ( near - far ) - near;
- }
- float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {
- return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );
- }
- float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {
- return ( near * far ) / ( ( far - near ) * depth - far );
- }`,mYe=`#ifdef PREMULTIPLIED_ALPHA
- gl_FragColor.rgb *= gl_FragColor.a;
- #endif`,pYe=`vec4 mvPosition = vec4( transformed, 1.0 );
- #ifdef USE_BATCHING
- mvPosition = batchingMatrix * mvPosition;
- #endif
- #ifdef USE_INSTANCING
- mvPosition = instanceMatrix * mvPosition;
- #endif
- mvPosition = modelViewMatrix * mvPosition;
- gl_Position = projectionMatrix * mvPosition;`,gYe=`#ifdef DITHERING
- gl_FragColor.rgb = dithering( gl_FragColor.rgb );
- #endif`,fYe=`#ifdef DITHERING
- vec3 dithering( vec3 color ) {
- float grid_position = rand( gl_FragCoord.xy );
- vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
- dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
- return color + dither_shift_RGB;
- }
- #endif`,bYe=`float roughnessFactor = roughness;
- #ifdef USE_ROUGHNESSMAP
- vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );
- roughnessFactor *= texelRoughness.g;
- #endif`,UYe=`#ifdef USE_ROUGHNESSMAP
- uniform sampler2D roughnessMap;
- #endif`,FYe=`#if NUM_SPOT_LIGHT_COORDS > 0
- varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
- #endif
- #if NUM_SPOT_LIGHT_MAPS > 0
- uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];
- #endif
- #ifdef USE_SHADOWMAP
- #if NUM_DIR_LIGHT_SHADOWS > 0
- uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
- varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
- struct DirectionalLightShadow {
- float shadowIntensity;
- float shadowBias;
- float shadowNormalBias;
- float shadowRadius;
- vec2 shadowMapSize;
- };
- uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
- #endif
- #if NUM_SPOT_LIGHT_SHADOWS > 0
- uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
- struct SpotLightShadow {
- float shadowIntensity;
- float shadowBias;
- float shadowNormalBias;
- float shadowRadius;
- vec2 shadowMapSize;
- };
- uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
- #endif
- #if NUM_POINT_LIGHT_SHADOWS > 0
- uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
- varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
- struct PointLightShadow {
- float shadowIntensity;
- float shadowBias;
- float shadowNormalBias;
- float shadowRadius;
- vec2 shadowMapSize;
- float shadowCameraNear;
- float shadowCameraFar;
- };
- uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
- #endif
- float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
- return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
- }
- vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
- return unpackRGBATo2Half( texture2D( shadow, uv ) );
- }
- float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
- float occlusion = 1.0;
- vec2 distribution = texture2DDistribution( shadow, uv );
- float hard_shadow = step( compare , distribution.x );
- if (hard_shadow != 1.0 ) {
- float distance = compare - distribution.x ;
- float variance = max( 0.00000, distribution.y * distribution.y );
- float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
- }
- return occlusion;
- }
- float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
- float shadow = 1.0;
- shadowCoord.xyz /= shadowCoord.w;
- shadowCoord.z += shadowBias;
- bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;
- bool frustumTest = inFrustum && shadowCoord.z <= 1.0;
- if ( frustumTest ) {
- #if defined( SHADOWMAP_TYPE_PCF )
- vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
- float dx0 = - texelSize.x * shadowRadius;
- float dy0 = - texelSize.y * shadowRadius;
- float dx1 = + texelSize.x * shadowRadius;
- float dy1 = + texelSize.y * shadowRadius;
- float dx2 = dx0 / 2.0;
- float dy2 = dy0 / 2.0;
- float dx3 = dx1 / 2.0;
- float dy3 = dy1 / 2.0;
- shadow = (
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )
- ) * ( 1.0 / 17.0 );
- #elif defined( SHADOWMAP_TYPE_PCF_SOFT )
- vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
- float dx = texelSize.x;
- float dy = texelSize.y;
- vec2 uv = shadowCoord.xy;
- vec2 f = fract( uv * shadowMapSize + 0.5 );
- uv -= f * texelSize;
- shadow = (
- texture2DCompare( shadowMap, uv, shadowCoord.z ) +
- texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
- texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
- texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
- mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
- texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
- f.x ) +
- mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
- texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
- f.x ) +
- mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
- texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
- f.y ) +
- mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
- texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
- f.y ) +
- mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
- texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
- f.x ),
- mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
- texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
- f.x ),
- f.y )
- ) * ( 1.0 / 9.0 );
- #elif defined( SHADOWMAP_TYPE_VSM )
- shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
- #else
- shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
- #endif
- }
- return mix( 1.0, shadow, shadowIntensity );
- }
- vec2 cubeToUV( vec3 v, float texelSizeY ) {
- vec3 absV = abs( v );
- float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
- absV *= scaleToCube;
- v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
- vec2 planar = v.xy;
- float almostATexel = 1.5 * texelSizeY;
- float almostOne = 1.0 - almostATexel;
- if ( absV.z >= almostOne ) {
- if ( v.z > 0.0 )
- planar.x = 4.0 - v.x;
- } else if ( absV.x >= almostOne ) {
- float signX = sign( v.x );
- planar.x = v.z * signX + 2.0 * signX;
- } else if ( absV.y >= almostOne ) {
- float signY = sign( v.y );
- planar.x = v.x + 2.0 * signY + 2.0;
- planar.y = v.z * signY - 2.0;
- }
- return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
- }
- float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
- float shadow = 1.0;
- vec3 lightToPosition = shadowCoord.xyz;
-
- float lightToPositionLength = length( lightToPosition );
- if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {
- float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
- vec3 bd3D = normalize( lightToPosition );
- vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
- #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
- vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
- shadow = (
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +
- texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )
- ) * ( 1.0 / 9.0 );
- #else
- shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
- #endif
- }
- return mix( 1.0, shadow, shadowIntensity );
- }
- #endif`,AYe=`#if NUM_SPOT_LIGHT_COORDS > 0
- uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];
- varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
- #endif
- #ifdef USE_SHADOWMAP
- #if NUM_DIR_LIGHT_SHADOWS > 0
- uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];
- varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
- struct DirectionalLightShadow {
- float shadowIntensity;
- float shadowBias;
- float shadowNormalBias;
- float shadowRadius;
- vec2 shadowMapSize;
- };
- uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
- #endif
- #if NUM_SPOT_LIGHT_SHADOWS > 0
- struct SpotLightShadow {
- float shadowIntensity;
- float shadowBias;
- float shadowNormalBias;
- float shadowRadius;
- vec2 shadowMapSize;
- };
- uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
- #endif
- #if NUM_POINT_LIGHT_SHADOWS > 0
- uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];
- varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
- struct PointLightShadow {
- float shadowIntensity;
- float shadowBias;
- float shadowNormalBias;
- float shadowRadius;
- vec2 shadowMapSize;
- float shadowCameraNear;
- float shadowCameraFar;
- };
- uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
- #endif
- #endif`,ZYe=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
- vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
- vec4 shadowWorldPosition;
- #endif
- #if defined( USE_SHADOWMAP )
- #if NUM_DIR_LIGHT_SHADOWS > 0
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
- shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );
- vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;
- }
- #pragma unroll_loop_end
- #endif
- #if NUM_POINT_LIGHT_SHADOWS > 0
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
- shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );
- vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;
- }
- #pragma unroll_loop_end
- #endif
- #endif
- #if NUM_SPOT_LIGHT_COORDS > 0
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {
- shadowWorldPosition = worldPosition;
- #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
- shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;
- #endif
- vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;
- }
- #pragma unroll_loop_end
- #endif`,SYe=`float getShadowMask() {
- float shadow = 1.0;
- #ifdef USE_SHADOWMAP
- #if NUM_DIR_LIGHT_SHADOWS > 0
- DirectionalLightShadow directionalLight;
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
- directionalLight = directionalLightShadows[ i ];
- shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
- }
- #pragma unroll_loop_end
- #endif
- #if NUM_SPOT_LIGHT_SHADOWS > 0
- SpotLightShadow spotLight;
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
- spotLight = spotLightShadows[ i ];
- shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
- }
- #pragma unroll_loop_end
- #endif
- #if NUM_POINT_LIGHT_SHADOWS > 0
- PointLightShadow pointLight;
- #pragma unroll_loop_start
- for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
- pointLight = pointLightShadows[ i ];
- shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
- }
- #pragma unroll_loop_end
- #endif
- #endif
- return shadow;
- }`,NYe=`#ifdef USE_SKINNING
- mat4 boneMatX = getBoneMatrix( skinIndex.x );
- mat4 boneMatY = getBoneMatrix( skinIndex.y );
- mat4 boneMatZ = getBoneMatrix( skinIndex.z );
- mat4 boneMatW = getBoneMatrix( skinIndex.w );
- #endif`,RYe=`#ifdef USE_SKINNING
- uniform mat4 bindMatrix;
- uniform mat4 bindMatrixInverse;
- uniform highp sampler2D boneTexture;
- mat4 getBoneMatrix( const in float i ) {
- int size = textureSize( boneTexture, 0 ).x;
- int j = int( i ) * 4;
- int x = j % size;
- int y = j / size;
- vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );
- vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );
- vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );
- vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );
- return mat4( v1, v2, v3, v4 );
- }
- #endif`,VYe=`#ifdef USE_SKINNING
- vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
- vec4 skinned = vec4( 0.0 );
- skinned += boneMatX * skinVertex * skinWeight.x;
- skinned += boneMatY * skinVertex * skinWeight.y;
- skinned += boneMatZ * skinVertex * skinWeight.z;
- skinned += boneMatW * skinVertex * skinWeight.w;
- transformed = ( bindMatrixInverse * skinned ).xyz;
- #endif`,WYe=`#ifdef USE_SKINNING
- mat4 skinMatrix = mat4( 0.0 );
- skinMatrix += skinWeight.x * boneMatX;
- skinMatrix += skinWeight.y * boneMatY;
- skinMatrix += skinWeight.z * boneMatZ;
- skinMatrix += skinWeight.w * boneMatW;
- skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;
- objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;
- #ifdef USE_TANGENT
- objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
- #endif
- #endif`,yYe=`float specularStrength;
- #ifdef USE_SPECULARMAP
- vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );
- specularStrength = texelSpecular.r;
- #else
- specularStrength = 1.0;
- #endif`,QYe=`#ifdef USE_SPECULARMAP
- uniform sampler2D specularMap;
- #endif`,MYe=`#if defined( TONE_MAPPING )
- gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
- #endif`,wYe=`#ifndef saturate
- #define saturate( a ) clamp( a, 0.0, 1.0 )
- #endif
- uniform float toneMappingExposure;
- vec3 LinearToneMapping( vec3 color ) {
- return saturate( toneMappingExposure * color );
- }
- vec3 ReinhardToneMapping( vec3 color ) {
- color *= toneMappingExposure;
- return saturate( color / ( vec3( 1.0 ) + color ) );
- }
- vec3 CineonToneMapping( vec3 color ) {
- color *= toneMappingExposure;
- color = max( vec3( 0.0 ), color - 0.004 );
- return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
- }
- vec3 RRTAndODTFit( vec3 v ) {
- vec3 a = v * ( v + 0.0245786 ) - 0.000090537;
- vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;
- return a / b;
- }
- vec3 ACESFilmicToneMapping( vec3 color ) {
- const mat3 ACESInputMat = mat3(
- vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),
- vec3( 0.04823, 0.01566, 0.83777 )
- );
- const mat3 ACESOutputMat = mat3(
- vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),
- vec3( -0.07367, -0.00605, 1.07602 )
- );
- color *= toneMappingExposure / 0.6;
- color = ACESInputMat * color;
- color = RRTAndODTFit( color );
- color = ACESOutputMat * color;
- return saturate( color );
- }
- const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(
- vec3( 1.6605, - 0.1246, - 0.0182 ),
- vec3( - 0.5876, 1.1329, - 0.1006 ),
- vec3( - 0.0728, - 0.0083, 1.1187 )
- );
- const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(
- vec3( 0.6274, 0.0691, 0.0164 ),
- vec3( 0.3293, 0.9195, 0.0880 ),
- vec3( 0.0433, 0.0113, 0.8956 )
- );
- vec3 agxDefaultContrastApprox( vec3 x ) {
- vec3 x2 = x * x;
- vec3 x4 = x2 * x2;
- return + 15.5 * x4 * x2
- - 40.14 * x4 * x
- + 31.96 * x4
- - 6.868 * x2 * x
- + 0.4298 * x2
- + 0.1191 * x
- - 0.00232;
- }
- vec3 AgXToneMapping( vec3 color ) {
- const mat3 AgXInsetMatrix = mat3(
- vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),
- vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),
- vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )
- );
- const mat3 AgXOutsetMatrix = mat3(
- vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),
- vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),
- vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )
- );
- const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;
- color *= toneMappingExposure;
- color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;
- color = AgXInsetMatrix * color;
- color = max( color, 1e-10 ); color = log2( color );
- color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );
- color = clamp( color, 0.0, 1.0 );
- color = agxDefaultContrastApprox( color );
- color = AgXOutsetMatrix * color;
- color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );
- color = LINEAR_REC2020_TO_LINEAR_SRGB * color;
- color = clamp( color, 0.0, 1.0 );
- return color;
- }
- vec3 NeutralToneMapping( vec3 color ) {
- const float StartCompression = 0.8 - 0.04;
- const float Desaturation = 0.15;
- color *= toneMappingExposure;
- float x = min( color.r, min( color.g, color.b ) );
- float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;
- color -= offset;
- float peak = max( color.r, max( color.g, color.b ) );
- if ( peak < StartCompression ) return color;
- float d = 1. - StartCompression;
- float newPeak = 1. - d * d / ( peak + d - StartCompression );
- color *= newPeak / peak;
- float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );
- return mix( color, vec3( newPeak ), g );
- }
- vec3 CustomToneMapping( vec3 color ) { return color; }`,TYe=`#ifdef USE_TRANSMISSION
- material.transmission = transmission;
- material.transmissionAlpha = 1.0;
- material.thickness = thickness;
- material.attenuationDistance = attenuationDistance;
- material.attenuationColor = attenuationColor;
- #ifdef USE_TRANSMISSIONMAP
- material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;
- #endif
- #ifdef USE_THICKNESSMAP
- material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;
- #endif
- vec3 pos = vWorldPosition;
- vec3 v = normalize( cameraPosition - pos );
- vec3 n = inverseTransformDirection( normal, viewMatrix );
- vec4 transmitted = getIBLVolumeRefraction(
- n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
- pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,
- material.attenuationColor, material.attenuationDistance );
- material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );
- totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );
- #endif`,CYe=`#ifdef USE_TRANSMISSION
- uniform float transmission;
- uniform float thickness;
- uniform float attenuationDistance;
- uniform vec3 attenuationColor;
- #ifdef USE_TRANSMISSIONMAP
- uniform sampler2D transmissionMap;
- #endif
- #ifdef USE_THICKNESSMAP
- uniform sampler2D thicknessMap;
- #endif
- uniform vec2 transmissionSamplerSize;
- uniform sampler2D transmissionSamplerMap;
- uniform mat4 modelMatrix;
- uniform mat4 projectionMatrix;
- varying vec3 vWorldPosition;
- float w0( float a ) {
- return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
- }
- float w1( float a ) {
- return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );
- }
- float w2( float a ){
- return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );
- }
- float w3( float a ) {
- return ( 1.0 / 6.0 ) * ( a * a * a );
- }
- float g0( float a ) {
- return w0( a ) + w1( a );
- }
- float g1( float a ) {
- return w2( a ) + w3( a );
- }
- float h0( float a ) {
- return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );
- }
- float h1( float a ) {
- return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );
- }
- vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {
- uv = uv * texelSize.zw + 0.5;
- vec2 iuv = floor( uv );
- vec2 fuv = fract( uv );
- float g0x = g0( fuv.x );
- float g1x = g1( fuv.x );
- float h0x = h0( fuv.x );
- float h1x = h1( fuv.x );
- float h0y = h0( fuv.y );
- float h1y = h1( fuv.y );
- vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
- vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
- vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
- vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
- return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +
- g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );
- }
- vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {
- vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );
- vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );
- vec2 fLodSizeInv = 1.0 / fLodSize;
- vec2 cLodSizeInv = 1.0 / cLodSize;
- vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
- vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
- return mix( fSample, cSample, fract( lod ) );
- }
- vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
- vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
- vec3 modelScale;
- modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
- modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
- modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
- return normalize( refractionVector ) * thickness * modelScale;
- }
- float applyIorToRoughness( const in float roughness, const in float ior ) {
- return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
- }
- vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
- float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
- return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );
- }
- vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
- if ( isinf( attenuationDistance ) ) {
- return vec3( 1.0 );
- } else {
- vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
- vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;
- }
- }
- vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
- const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
- const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,
- const in vec3 attenuationColor, const in float attenuationDistance ) {
- vec4 transmittedLight;
- vec3 transmittance;
- #ifdef USE_DISPERSION
- float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;
- vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );
- for ( int i = 0; i < 3; i ++ ) {
- vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );
- vec3 refractedRayExit = position + transmissionRay;
- vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
- vec2 refractionCoords = ndcPos.xy / ndcPos.w;
- refractionCoords += 1.0;
- refractionCoords /= 2.0;
- vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );
- transmittedLight[ i ] = transmissionSample[ i ];
- transmittedLight.a += transmissionSample.a;
- transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];
- }
- transmittedLight.a /= 3.0;
- #else
- vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
- vec3 refractedRayExit = position + transmissionRay;
- vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
- vec2 refractionCoords = ndcPos.xy / ndcPos.w;
- refractionCoords += 1.0;
- refractionCoords /= 2.0;
- transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
- transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );
- #endif
- vec3 attenuatedColor = transmittance * transmittedLight.rgb;
- vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
- float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;
- return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );
- }
- #endif`,BYe=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
- varying vec2 vUv;
- #endif
- #ifdef USE_MAP
- varying vec2 vMapUv;
- #endif
- #ifdef USE_ALPHAMAP
- varying vec2 vAlphaMapUv;
- #endif
- #ifdef USE_LIGHTMAP
- varying vec2 vLightMapUv;
- #endif
- #ifdef USE_AOMAP
- varying vec2 vAoMapUv;
- #endif
- #ifdef USE_BUMPMAP
- varying vec2 vBumpMapUv;
- #endif
- #ifdef USE_NORMALMAP
- varying vec2 vNormalMapUv;
- #endif
- #ifdef USE_EMISSIVEMAP
- varying vec2 vEmissiveMapUv;
- #endif
- #ifdef USE_METALNESSMAP
- varying vec2 vMetalnessMapUv;
- #endif
- #ifdef USE_ROUGHNESSMAP
- varying vec2 vRoughnessMapUv;
- #endif
- #ifdef USE_ANISOTROPYMAP
- varying vec2 vAnisotropyMapUv;
- #endif
- #ifdef USE_CLEARCOATMAP
- varying vec2 vClearcoatMapUv;
- #endif
- #ifdef USE_CLEARCOAT_NORMALMAP
- varying vec2 vClearcoatNormalMapUv;
- #endif
- #ifdef USE_CLEARCOAT_ROUGHNESSMAP
- varying vec2 vClearcoatRoughnessMapUv;
- #endif
- #ifdef USE_IRIDESCENCEMAP
- varying vec2 vIridescenceMapUv;
- #endif
- #ifdef USE_IRIDESCENCE_THICKNESSMAP
- varying vec2 vIridescenceThicknessMapUv;
- #endif
- #ifdef USE_SHEEN_COLORMAP
- varying vec2 vSheenColorMapUv;
- #endif
- #ifdef USE_SHEEN_ROUGHNESSMAP
- varying vec2 vSheenRoughnessMapUv;
- #endif
- #ifdef USE_SPECULARMAP
- varying vec2 vSpecularMapUv;
- #endif
- #ifdef USE_SPECULAR_COLORMAP
- varying vec2 vSpecularColorMapUv;
- #endif
- #ifdef USE_SPECULAR_INTENSITYMAP
- varying vec2 vSpecularIntensityMapUv;
- #endif
- #ifdef USE_TRANSMISSIONMAP
- uniform mat3 transmissionMapTransform;
- varying vec2 vTransmissionMapUv;
- #endif
- #ifdef USE_THICKNESSMAP
- uniform mat3 thicknessMapTransform;
- varying vec2 vThicknessMapUv;
- #endif`,LYe=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
- varying vec2 vUv;
- #endif
- #ifdef USE_MAP
- uniform mat3 mapTransform;
- varying vec2 vMapUv;
- #endif
- #ifdef USE_ALPHAMAP
- uniform mat3 alphaMapTransform;
- varying vec2 vAlphaMapUv;
- #endif
- #ifdef USE_LIGHTMAP
- uniform mat3 lightMapTransform;
- varying vec2 vLightMapUv;
- #endif
- #ifdef USE_AOMAP
- uniform mat3 aoMapTransform;
- varying vec2 vAoMapUv;
- #endif
- #ifdef USE_BUMPMAP
- uniform mat3 bumpMapTransform;
- varying vec2 vBumpMapUv;
- #endif
- #ifdef USE_NORMALMAP
- uniform mat3 normalMapTransform;
- varying vec2 vNormalMapUv;
- #endif
- #ifdef USE_DISPLACEMENTMAP
- uniform mat3 displacementMapTransform;
- varying vec2 vDisplacementMapUv;
- #endif
- #ifdef USE_EMISSIVEMAP
- uniform mat3 emissiveMapTransform;
- varying vec2 vEmissiveMapUv;
- #endif
- #ifdef USE_METALNESSMAP
- uniform mat3 metalnessMapTransform;
- varying vec2 vMetalnessMapUv;
- #endif
- #ifdef USE_ROUGHNESSMAP
- uniform mat3 roughnessMapTransform;
- varying vec2 vRoughnessMapUv;
- #endif
- #ifdef USE_ANISOTROPYMAP
- uniform mat3 anisotropyMapTransform;
- varying vec2 vAnisotropyMapUv;
- #endif
- #ifdef USE_CLEARCOATMAP
- uniform mat3 clearcoatMapTransform;
- varying vec2 vClearcoatMapUv;
- #endif
- #ifdef USE_CLEARCOAT_NORMALMAP
- uniform mat3 clearcoatNormalMapTransform;
- varying vec2 vClearcoatNormalMapUv;
- #endif
- #ifdef USE_CLEARCOAT_ROUGHNESSMAP
- uniform mat3 clearcoatRoughnessMapTransform;
- varying vec2 vClearcoatRoughnessMapUv;
- #endif
- #ifdef USE_SHEEN_COLORMAP
- uniform mat3 sheenColorMapTransform;
- varying vec2 vSheenColorMapUv;
- #endif
- #ifdef USE_SHEEN_ROUGHNESSMAP
- uniform mat3 sheenRoughnessMapTransform;
- varying vec2 vSheenRoughnessMapUv;
- #endif
- #ifdef USE_IRIDESCENCEMAP
- uniform mat3 iridescenceMapTransform;
- varying vec2 vIridescenceMapUv;
- #endif
- #ifdef USE_IRIDESCENCE_THICKNESSMAP
- uniform mat3 iridescenceThicknessMapTransform;
- varying vec2 vIridescenceThicknessMapUv;
- #endif
- #ifdef USE_SPECULARMAP
- uniform mat3 specularMapTransform;
- varying vec2 vSpecularMapUv;
- #endif
- #ifdef USE_SPECULAR_COLORMAP
- uniform mat3 specularColorMapTransform;
- varying vec2 vSpecularColorMapUv;
- #endif
- #ifdef USE_SPECULAR_INTENSITYMAP
- uniform mat3 specularIntensityMapTransform;
- varying vec2 vSpecularIntensityMapUv;
- #endif
- #ifdef USE_TRANSMISSIONMAP
- uniform mat3 transmissionMapTransform;
- varying vec2 vTransmissionMapUv;
- #endif
- #ifdef USE_THICKNESSMAP
- uniform mat3 thicknessMapTransform;
- varying vec2 vThicknessMapUv;
- #endif`,vYe=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
- vUv = vec3( uv, 1 ).xy;
- #endif
- #ifdef USE_MAP
- vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_ALPHAMAP
- vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_LIGHTMAP
- vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_AOMAP
- vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_BUMPMAP
- vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_NORMALMAP
- vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_DISPLACEMENTMAP
- vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_EMISSIVEMAP
- vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_METALNESSMAP
- vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_ROUGHNESSMAP
- vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_ANISOTROPYMAP
- vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_CLEARCOATMAP
- vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_CLEARCOAT_NORMALMAP
- vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_CLEARCOAT_ROUGHNESSMAP
- vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_IRIDESCENCEMAP
- vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_IRIDESCENCE_THICKNESSMAP
- vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_SHEEN_COLORMAP
- vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_SHEEN_ROUGHNESSMAP
- vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_SPECULARMAP
- vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_SPECULAR_COLORMAP
- vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_SPECULAR_INTENSITYMAP
- vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_TRANSMISSIONMAP
- vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;
- #endif
- #ifdef USE_THICKNESSMAP
- vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;
- #endif`,kYe=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0
- vec4 worldPosition = vec4( transformed, 1.0 );
- #ifdef USE_BATCHING
- worldPosition = batchingMatrix * worldPosition;
- #endif
- #ifdef USE_INSTANCING
- worldPosition = instanceMatrix * worldPosition;
- #endif
- worldPosition = modelMatrix * worldPosition;
- #endif`;const xYe=`varying vec2 vUv;
- uniform mat3 uvTransform;
- void main() {
- vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
- gl_Position = vec4( position.xy, 1.0, 1.0 );
- }`,IYe=`uniform sampler2D t2D;
- uniform float backgroundIntensity;
- varying vec2 vUv;
- void main() {
- vec4 texColor = texture2D( t2D, vUv );
- #ifdef DECODE_VIDEO_TEXTURE
- texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );
- #endif
- texColor.rgb *= backgroundIntensity;
- gl_FragColor = texColor;
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- }`,EYe=`varying vec3 vWorldDirection;
- #include <common>
- void main() {
- vWorldDirection = transformDirection( position, modelMatrix );
- #include <begin_vertex>
- #include <project_vertex>
- gl_Position.z = gl_Position.w;
- }`,DYe=`#ifdef ENVMAP_TYPE_CUBE
- uniform samplerCube envMap;
- #elif defined( ENVMAP_TYPE_CUBE_UV )
- uniform sampler2D envMap;
- #endif
- uniform float flipEnvMap;
- uniform float backgroundBlurriness;
- uniform float backgroundIntensity;
- uniform mat3 backgroundRotation;
- varying vec3 vWorldDirection;
- #include <cube_uv_reflection_fragment>
- void main() {
- #ifdef ENVMAP_TYPE_CUBE
- vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
- #elif defined( ENVMAP_TYPE_CUBE_UV )
- vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );
- #else
- vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );
- #endif
- texColor.rgb *= backgroundIntensity;
- gl_FragColor = texColor;
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- }`,GYe=`varying vec3 vWorldDirection;
- #include <common>
- void main() {
- vWorldDirection = transformDirection( position, modelMatrix );
- #include <begin_vertex>
- #include <project_vertex>
- gl_Position.z = gl_Position.w;
- }`,JYe=`uniform samplerCube tCube;
- uniform float tFlip;
- uniform float opacity;
- varying vec3 vWorldDirection;
- void main() {
- vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );
- gl_FragColor = texColor;
- gl_FragColor.a *= opacity;
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- }`,XYe=`#include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- varying vec2 vHighPrecisionZW;
- void main() {
- #include <uv_vertex>
- #include <batching_vertex>
- #include <skinbase_vertex>
- #include <morphinstance_vertex>
- #ifdef USE_DISPLACEMENTMAP
- #include <beginnormal_vertex>
- #include <morphnormal_vertex>
- #include <skinnormal_vertex>
- #endif
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- vHighPrecisionZW = gl_Position.zw;
- }`,YYe=`#if DEPTH_PACKING == 3200
- uniform float opacity;
- #endif
- #include <common>
- #include <packing>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- varying vec2 vHighPrecisionZW;
- void main() {
- vec4 diffuseColor = vec4( 1.0 );
- #include <clipping_planes_fragment>
- #if DEPTH_PACKING == 3200
- diffuseColor.a = opacity;
- #endif
- #include <map_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- #include <logdepthbuf_fragment>
- float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;
- #if DEPTH_PACKING == 3200
- gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );
- #elif DEPTH_PACKING == 3201
- gl_FragColor = packDepthToRGBA( fragCoordZ );
- #elif DEPTH_PACKING == 3202
- gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );
- #elif DEPTH_PACKING == 3203
- gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );
- #endif
- }`,_Ye=`#define DISTANCE
- varying vec3 vWorldPosition;
- #include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <batching_vertex>
- #include <skinbase_vertex>
- #include <morphinstance_vertex>
- #ifdef USE_DISPLACEMENTMAP
- #include <beginnormal_vertex>
- #include <morphnormal_vertex>
- #include <skinnormal_vertex>
- #endif
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <worldpos_vertex>
- #include <clipping_planes_vertex>
- vWorldPosition = worldPosition.xyz;
- }`,zYe=`#define DISTANCE
- uniform vec3 referencePosition;
- uniform float nearDistance;
- uniform float farDistance;
- varying vec3 vWorldPosition;
- #include <common>
- #include <packing>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main () {
- vec4 diffuseColor = vec4( 1.0 );
- #include <clipping_planes_fragment>
- #include <map_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- float dist = length( vWorldPosition - referencePosition );
- dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
- dist = saturate( dist );
- gl_FragColor = packDepthToRGBA( dist );
- }`,OYe=`varying vec3 vWorldDirection;
- #include <common>
- void main() {
- vWorldDirection = transformDirection( position, modelMatrix );
- #include <begin_vertex>
- #include <project_vertex>
- }`,jYe=`uniform sampler2D tEquirect;
- varying vec3 vWorldDirection;
- #include <common>
- void main() {
- vec3 direction = normalize( vWorldDirection );
- vec2 sampleUV = equirectUv( direction );
- gl_FragColor = texture2D( tEquirect, sampleUV );
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- }`,PYe=`uniform float scale;
- attribute float lineDistance;
- varying float vLineDistance;
- #include <common>
- #include <uv_pars_vertex>
- #include <color_pars_vertex>
- #include <fog_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- vLineDistance = scale * lineDistance;
- #include <uv_vertex>
- #include <color_vertex>
- #include <morphinstance_vertex>
- #include <morphcolor_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- #include <fog_vertex>
- }`,HYe=`uniform vec3 diffuse;
- uniform float opacity;
- uniform float dashSize;
- uniform float totalSize;
- varying float vLineDistance;
- #include <common>
- #include <color_pars_fragment>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <fog_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- if ( mod( vLineDistance, totalSize ) > dashSize ) {
- discard;
- }
- vec3 outgoingLight = vec3( 0.0 );
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <color_fragment>
- outgoingLight = diffuseColor.rgb;
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- }`,KYe=`#include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <envmap_pars_vertex>
- #include <color_pars_vertex>
- #include <fog_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <color_vertex>
- #include <morphinstance_vertex>
- #include <morphcolor_vertex>
- #include <batching_vertex>
- #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )
- #include <beginnormal_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #endif
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- #include <worldpos_vertex>
- #include <envmap_vertex>
- #include <fog_vertex>
- }`,qYe=`uniform vec3 diffuse;
- uniform float opacity;
- #ifndef FLAT_SHADED
- varying vec3 vNormal;
- #endif
- #include <common>
- #include <dithering_pars_fragment>
- #include <color_pars_fragment>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <aomap_pars_fragment>
- #include <lightmap_pars_fragment>
- #include <envmap_common_pars_fragment>
- #include <envmap_pars_fragment>
- #include <fog_pars_fragment>
- #include <specularmap_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <color_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- #include <specularmap_fragment>
- ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
- #ifdef USE_LIGHTMAP
- vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
- reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;
- #else
- reflectedLight.indirectDiffuse += vec3( 1.0 );
- #endif
- #include <aomap_fragment>
- reflectedLight.indirectDiffuse *= diffuseColor.rgb;
- vec3 outgoingLight = reflectedLight.indirectDiffuse;
- #include <envmap_fragment>
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- #include <dithering_fragment>
- }`,$Ye=`#define LAMBERT
- varying vec3 vViewPosition;
- #include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <envmap_pars_vertex>
- #include <color_pars_vertex>
- #include <fog_pars_vertex>
- #include <normal_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <shadowmap_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <color_vertex>
- #include <morphinstance_vertex>
- #include <morphcolor_vertex>
- #include <batching_vertex>
- #include <beginnormal_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #include <normal_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- vViewPosition = - mvPosition.xyz;
- #include <worldpos_vertex>
- #include <envmap_vertex>
- #include <shadowmap_vertex>
- #include <fog_vertex>
- }`,e_e=`#define LAMBERT
- uniform vec3 diffuse;
- uniform vec3 emissive;
- uniform float opacity;
- #include <common>
- #include <packing>
- #include <dithering_pars_fragment>
- #include <color_pars_fragment>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <aomap_pars_fragment>
- #include <lightmap_pars_fragment>
- #include <emissivemap_pars_fragment>
- #include <envmap_common_pars_fragment>
- #include <envmap_pars_fragment>
- #include <fog_pars_fragment>
- #include <bsdfs>
- #include <lights_pars_begin>
- #include <normal_pars_fragment>
- #include <lights_lambert_pars_fragment>
- #include <shadowmap_pars_fragment>
- #include <bumpmap_pars_fragment>
- #include <normalmap_pars_fragment>
- #include <specularmap_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
- vec3 totalEmissiveRadiance = emissive;
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <color_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- #include <specularmap_fragment>
- #include <normal_fragment_begin>
- #include <normal_fragment_maps>
- #include <emissivemap_fragment>
- #include <lights_lambert_fragment>
- #include <lights_fragment_begin>
- #include <lights_fragment_maps>
- #include <lights_fragment_end>
- #include <aomap_fragment>
- vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
- #include <envmap_fragment>
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- #include <dithering_fragment>
- }`,t_e=`#define MATCAP
- varying vec3 vViewPosition;
- #include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <color_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <fog_pars_vertex>
- #include <normal_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <color_vertex>
- #include <morphinstance_vertex>
- #include <morphcolor_vertex>
- #include <batching_vertex>
- #include <beginnormal_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #include <normal_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- #include <fog_vertex>
- vViewPosition = - mvPosition.xyz;
- }`,i_e=`#define MATCAP
- uniform vec3 diffuse;
- uniform float opacity;
- uniform sampler2D matcap;
- varying vec3 vViewPosition;
- #include <common>
- #include <dithering_pars_fragment>
- #include <color_pars_fragment>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <fog_pars_fragment>
- #include <normal_pars_fragment>
- #include <bumpmap_pars_fragment>
- #include <normalmap_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <color_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- #include <normal_fragment_begin>
- #include <normal_fragment_maps>
- vec3 viewDir = normalize( vViewPosition );
- vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
- vec3 y = cross( viewDir, x );
- vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;
- #ifdef USE_MATCAP
- vec4 matcapColor = texture2D( matcap, uv );
- #else
- vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );
- #endif
- vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- #include <dithering_fragment>
- }`,n_e=`#define NORMAL
- #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
- varying vec3 vViewPosition;
- #endif
- #include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <normal_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <batching_vertex>
- #include <beginnormal_vertex>
- #include <morphinstance_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #include <normal_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
- vViewPosition = - mvPosition.xyz;
- #endif
- }`,s_e=`#define NORMAL
- uniform float opacity;
- #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
- varying vec3 vViewPosition;
- #endif
- #include <packing>
- #include <uv_pars_fragment>
- #include <normal_pars_fragment>
- #include <bumpmap_pars_fragment>
- #include <normalmap_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );
- #include <clipping_planes_fragment>
- #include <logdepthbuf_fragment>
- #include <normal_fragment_begin>
- #include <normal_fragment_maps>
- gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );
- #ifdef OPAQUE
- gl_FragColor.a = 1.0;
- #endif
- }`,o_e=`#define PHONG
- varying vec3 vViewPosition;
- #include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <envmap_pars_vertex>
- #include <color_pars_vertex>
- #include <fog_pars_vertex>
- #include <normal_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <shadowmap_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <color_vertex>
- #include <morphcolor_vertex>
- #include <batching_vertex>
- #include <beginnormal_vertex>
- #include <morphinstance_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #include <normal_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- vViewPosition = - mvPosition.xyz;
- #include <worldpos_vertex>
- #include <envmap_vertex>
- #include <shadowmap_vertex>
- #include <fog_vertex>
- }`,r_e=`#define PHONG
- uniform vec3 diffuse;
- uniform vec3 emissive;
- uniform vec3 specular;
- uniform float shininess;
- uniform float opacity;
- #include <common>
- #include <packing>
- #include <dithering_pars_fragment>
- #include <color_pars_fragment>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <aomap_pars_fragment>
- #include <lightmap_pars_fragment>
- #include <emissivemap_pars_fragment>
- #include <envmap_common_pars_fragment>
- #include <envmap_pars_fragment>
- #include <fog_pars_fragment>
- #include <bsdfs>
- #include <lights_pars_begin>
- #include <normal_pars_fragment>
- #include <lights_phong_pars_fragment>
- #include <shadowmap_pars_fragment>
- #include <bumpmap_pars_fragment>
- #include <normalmap_pars_fragment>
- #include <specularmap_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
- vec3 totalEmissiveRadiance = emissive;
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <color_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- #include <specularmap_fragment>
- #include <normal_fragment_begin>
- #include <normal_fragment_maps>
- #include <emissivemap_fragment>
- #include <lights_phong_fragment>
- #include <lights_fragment_begin>
- #include <lights_fragment_maps>
- #include <lights_fragment_end>
- #include <aomap_fragment>
- vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;
- #include <envmap_fragment>
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- #include <dithering_fragment>
- }`,l_e=`#define STANDARD
- varying vec3 vViewPosition;
- #ifdef USE_TRANSMISSION
- varying vec3 vWorldPosition;
- #endif
- #include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <color_pars_vertex>
- #include <fog_pars_vertex>
- #include <normal_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <shadowmap_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <color_vertex>
- #include <morphinstance_vertex>
- #include <morphcolor_vertex>
- #include <batching_vertex>
- #include <beginnormal_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #include <normal_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- vViewPosition = - mvPosition.xyz;
- #include <worldpos_vertex>
- #include <shadowmap_vertex>
- #include <fog_vertex>
- #ifdef USE_TRANSMISSION
- vWorldPosition = worldPosition.xyz;
- #endif
- }`,a_e=`#define STANDARD
- #ifdef PHYSICAL
- #define IOR
- #define USE_SPECULAR
- #endif
- uniform vec3 diffuse;
- uniform vec3 emissive;
- uniform float roughness;
- uniform float metalness;
- uniform float opacity;
- #ifdef IOR
- uniform float ior;
- #endif
- #ifdef USE_SPECULAR
- uniform float specularIntensity;
- uniform vec3 specularColor;
- #ifdef USE_SPECULAR_COLORMAP
- uniform sampler2D specularColorMap;
- #endif
- #ifdef USE_SPECULAR_INTENSITYMAP
- uniform sampler2D specularIntensityMap;
- #endif
- #endif
- #ifdef USE_CLEARCOAT
- uniform float clearcoat;
- uniform float clearcoatRoughness;
- #endif
- #ifdef USE_DISPERSION
- uniform float dispersion;
- #endif
- #ifdef USE_IRIDESCENCE
- uniform float iridescence;
- uniform float iridescenceIOR;
- uniform float iridescenceThicknessMinimum;
- uniform float iridescenceThicknessMaximum;
- #endif
- #ifdef USE_SHEEN
- uniform vec3 sheenColor;
- uniform float sheenRoughness;
- #ifdef USE_SHEEN_COLORMAP
- uniform sampler2D sheenColorMap;
- #endif
- #ifdef USE_SHEEN_ROUGHNESSMAP
- uniform sampler2D sheenRoughnessMap;
- #endif
- #endif
- #ifdef USE_ANISOTROPY
- uniform vec2 anisotropyVector;
- #ifdef USE_ANISOTROPYMAP
- uniform sampler2D anisotropyMap;
- #endif
- #endif
- varying vec3 vViewPosition;
- #include <common>
- #include <packing>
- #include <dithering_pars_fragment>
- #include <color_pars_fragment>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <aomap_pars_fragment>
- #include <lightmap_pars_fragment>
- #include <emissivemap_pars_fragment>
- #include <iridescence_fragment>
- #include <cube_uv_reflection_fragment>
- #include <envmap_common_pars_fragment>
- #include <envmap_physical_pars_fragment>
- #include <fog_pars_fragment>
- #include <lights_pars_begin>
- #include <normal_pars_fragment>
- #include <lights_physical_pars_fragment>
- #include <transmission_pars_fragment>
- #include <shadowmap_pars_fragment>
- #include <bumpmap_pars_fragment>
- #include <normalmap_pars_fragment>
- #include <clearcoat_pars_fragment>
- #include <iridescence_pars_fragment>
- #include <roughnessmap_pars_fragment>
- #include <metalnessmap_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
- vec3 totalEmissiveRadiance = emissive;
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <color_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- #include <roughnessmap_fragment>
- #include <metalnessmap_fragment>
- #include <normal_fragment_begin>
- #include <normal_fragment_maps>
- #include <clearcoat_normal_fragment_begin>
- #include <clearcoat_normal_fragment_maps>
- #include <emissivemap_fragment>
- #include <lights_physical_fragment>
- #include <lights_fragment_begin>
- #include <lights_fragment_maps>
- #include <lights_fragment_end>
- #include <aomap_fragment>
- vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
- vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
- #include <transmission_fragment>
- vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
- #ifdef USE_SHEEN
- float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
- outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;
- #endif
- #ifdef USE_CLEARCOAT
- float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );
- vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
- outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;
- #endif
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- #include <dithering_fragment>
- }`,d_e=`#define TOON
- varying vec3 vViewPosition;
- #include <common>
- #include <batching_pars_vertex>
- #include <uv_pars_vertex>
- #include <displacementmap_pars_vertex>
- #include <color_pars_vertex>
- #include <fog_pars_vertex>
- #include <normal_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <shadowmap_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- #include <color_vertex>
- #include <morphinstance_vertex>
- #include <morphcolor_vertex>
- #include <batching_vertex>
- #include <beginnormal_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #include <normal_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <displacementmap_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- vViewPosition = - mvPosition.xyz;
- #include <worldpos_vertex>
- #include <shadowmap_vertex>
- #include <fog_vertex>
- }`,c_e=`#define TOON
- uniform vec3 diffuse;
- uniform vec3 emissive;
- uniform float opacity;
- #include <common>
- #include <packing>
- #include <dithering_pars_fragment>
- #include <color_pars_fragment>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <aomap_pars_fragment>
- #include <lightmap_pars_fragment>
- #include <emissivemap_pars_fragment>
- #include <gradientmap_pars_fragment>
- #include <fog_pars_fragment>
- #include <bsdfs>
- #include <lights_pars_begin>
- #include <normal_pars_fragment>
- #include <lights_toon_pars_fragment>
- #include <shadowmap_pars_fragment>
- #include <bumpmap_pars_fragment>
- #include <normalmap_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
- vec3 totalEmissiveRadiance = emissive;
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <color_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- #include <normal_fragment_begin>
- #include <normal_fragment_maps>
- #include <emissivemap_fragment>
- #include <lights_toon_fragment>
- #include <lights_fragment_begin>
- #include <lights_fragment_maps>
- #include <lights_fragment_end>
- #include <aomap_fragment>
- vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- #include <dithering_fragment>
- }`,h_e=`uniform float size;
- uniform float scale;
- #include <common>
- #include <color_pars_vertex>
- #include <fog_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- #ifdef USE_POINTS_UV
- varying vec2 vUv;
- uniform mat3 uvTransform;
- #endif
- void main() {
- #ifdef USE_POINTS_UV
- vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
- #endif
- #include <color_vertex>
- #include <morphinstance_vertex>
- #include <morphcolor_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <project_vertex>
- gl_PointSize = size;
- #ifdef USE_SIZEATTENUATION
- bool isPerspective = isPerspectiveMatrix( projectionMatrix );
- if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );
- #endif
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- #include <worldpos_vertex>
- #include <fog_vertex>
- }`,u_e=`uniform vec3 diffuse;
- uniform float opacity;
- #include <common>
- #include <color_pars_fragment>
- #include <map_particle_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <fog_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- vec3 outgoingLight = vec3( 0.0 );
- #include <logdepthbuf_fragment>
- #include <map_particle_fragment>
- #include <color_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- outgoingLight = diffuseColor.rgb;
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- #include <premultiplied_alpha_fragment>
- }`,m_e=`#include <common>
- #include <batching_pars_vertex>
- #include <fog_pars_vertex>
- #include <morphtarget_pars_vertex>
- #include <skinning_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <shadowmap_pars_vertex>
- void main() {
- #include <batching_vertex>
- #include <beginnormal_vertex>
- #include <morphinstance_vertex>
- #include <morphnormal_vertex>
- #include <skinbase_vertex>
- #include <skinnormal_vertex>
- #include <defaultnormal_vertex>
- #include <begin_vertex>
- #include <morphtarget_vertex>
- #include <skinning_vertex>
- #include <project_vertex>
- #include <logdepthbuf_vertex>
- #include <worldpos_vertex>
- #include <shadowmap_vertex>
- #include <fog_vertex>
- }`,p_e=`uniform vec3 color;
- uniform float opacity;
- #include <common>
- #include <packing>
- #include <fog_pars_fragment>
- #include <bsdfs>
- #include <lights_pars_begin>
- #include <logdepthbuf_pars_fragment>
- #include <shadowmap_pars_fragment>
- #include <shadowmask_pars_fragment>
- void main() {
- #include <logdepthbuf_fragment>
- gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- }`,g_e=`uniform float rotation;
- uniform vec2 center;
- #include <common>
- #include <uv_pars_vertex>
- #include <fog_pars_vertex>
- #include <logdepthbuf_pars_vertex>
- #include <clipping_planes_pars_vertex>
- void main() {
- #include <uv_vertex>
- vec4 mvPosition = modelViewMatrix[ 3 ];
- vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );
- #ifndef USE_SIZEATTENUATION
- bool isPerspective = isPerspectiveMatrix( projectionMatrix );
- if ( isPerspective ) scale *= - mvPosition.z;
- #endif
- vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;
- vec2 rotatedPosition;
- rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
- rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
- mvPosition.xy += rotatedPosition;
- gl_Position = projectionMatrix * mvPosition;
- #include <logdepthbuf_vertex>
- #include <clipping_planes_vertex>
- #include <fog_vertex>
- }`,f_e=`uniform vec3 diffuse;
- uniform float opacity;
- #include <common>
- #include <uv_pars_fragment>
- #include <map_pars_fragment>
- #include <alphamap_pars_fragment>
- #include <alphatest_pars_fragment>
- #include <alphahash_pars_fragment>
- #include <fog_pars_fragment>
- #include <logdepthbuf_pars_fragment>
- #include <clipping_planes_pars_fragment>
- void main() {
- vec4 diffuseColor = vec4( diffuse, opacity );
- #include <clipping_planes_fragment>
- vec3 outgoingLight = vec3( 0.0 );
- #include <logdepthbuf_fragment>
- #include <map_fragment>
- #include <alphamap_fragment>
- #include <alphatest_fragment>
- #include <alphahash_fragment>
- outgoingLight = diffuseColor.rgb;
- #include <opaque_fragment>
- #include <tonemapping_fragment>
- #include <colorspace_fragment>
- #include <fog_fragment>
- }`,hs={alphahash_fragment:IXe,alphahash_pars_fragment:EXe,alphamap_fragment:DXe,alphamap_pars_fragment:GXe,alphatest_fragment:JXe,alphatest_pars_fragment:XXe,aomap_fragment:YXe,aomap_pars_fragment:_Xe,batching_pars_vertex:zXe,batching_vertex:OXe,begin_vertex:jXe,beginnormal_vertex:PXe,bsdfs:HXe,iridescence_fragment:KXe,bumpmap_pars_fragment:qXe,clipping_planes_fragment:$Xe,clipping_planes_pars_fragment:e5e,clipping_planes_pars_vertex:t5e,clipping_planes_vertex:i5e,color_fragment:n5e,color_pars_fragment:s5e,color_pars_vertex:o5e,color_vertex:r5e,common:l5e,cube_uv_reflection_fragment:a5e,defaultnormal_vertex:d5e,displacementmap_pars_vertex:c5e,displacementmap_vertex:h5e,emissivemap_fragment:u5e,emissivemap_pars_fragment:m5e,colorspace_fragment:p5e,colorspace_pars_fragment:g5e,envmap_fragment:f5e,envmap_common_pars_fragment:b5e,envmap_pars_fragment:U5e,envmap_pars_vertex:F5e,envmap_physical_pars_fragment:w5e,envmap_vertex:A5e,fog_vertex:Z5e,fog_pars_vertex:S5e,fog_fragment:N5e,fog_pars_fragment:R5e,gradientmap_pars_fragment:V5e,lightmap_pars_fragment:W5e,lights_lambert_fragment:y5e,lights_lambert_pars_fragment:Q5e,lights_pars_begin:M5e,lights_toon_fragment:T5e,lights_toon_pars_fragment:C5e,lights_phong_fragment:B5e,lights_phong_pars_fragment:L5e,lights_physical_fragment:v5e,lights_physical_pars_fragment:k5e,lights_fragment_begin:x5e,lights_fragment_maps:I5e,lights_fragment_end:E5e,logdepthbuf_fragment:D5e,logdepthbuf_pars_fragment:G5e,logdepthbuf_pars_vertex:J5e,logdepthbuf_vertex:X5e,map_fragment:Y5e,map_pars_fragment:_5e,map_particle_fragment:z5e,map_particle_pars_fragment:O5e,metalnessmap_fragment:j5e,metalnessmap_pars_fragment:P5e,morphinstance_vertex:H5e,morphcolor_vertex:K5e,morphnormal_vertex:q5e,morphtarget_pars_vertex:$5e,morphtarget_vertex:eYe,normal_fragment_begin:tYe,normal_fragment_maps:iYe,normal_pars_fragment:nYe,normal_pars_vertex:sYe,normal_vertex:oYe,normalmap_pars_fragment:rYe,clearcoat_normal_fragment_begin:lYe,clearcoat_normal_fragment_maps:aYe,clearcoat_pars_fragment:dYe,iridescence_pars_fragment:cYe,opaque_fragment:hYe,packing:uYe,premultiplied_alpha_fragment:mYe,project_vertex:pYe,dithering_fragment:gYe,dithering_pars_fragment:fYe,roughnessmap_fragment:bYe,roughnessmap_pars_fragment:UYe,shadowmap_pars_fragment:FYe,shadowmap_pars_vertex:AYe,shadowmap_vertex:ZYe,shadowmask_pars_fragment:SYe,skinbase_vertex:NYe,skinning_pars_vertex:RYe,skinning_vertex:VYe,skinnormal_vertex:WYe,specularmap_fragment:yYe,specularmap_pars_fragment:QYe,tonemapping_fragment:MYe,tonemapping_pars_fragment:wYe,transmission_fragment:TYe,transmission_pars_fragment:CYe,uv_pars_fragment:BYe,uv_pars_vertex:LYe,uv_vertex:vYe,worldpos_vertex:kYe,background_vert:xYe,background_frag:IYe,backgroundCube_vert:EYe,backgroundCube_frag:DYe,cube_vert:GYe,cube_frag:JYe,depth_vert:XYe,depth_frag:YYe,distanceRGBA_vert:_Ye,distanceRGBA_frag:zYe,equirect_vert:OYe,equirect_frag:jYe,linedashed_vert:PYe,linedashed_frag:HYe,meshbasic_vert:KYe,meshbasic_frag:qYe,meshlambert_vert:$Ye,meshlambert_frag:e_e,meshmatcap_vert:t_e,meshmatcap_frag:i_e,meshnormal_vert:n_e,meshnormal_frag:s_e,meshphong_vert:o_e,meshphong_frag:r_e,meshphysical_vert:l_e,meshphysical_frag:a_e,meshtoon_vert:d_e,meshtoon_frag:c_e,points_vert:h_e,points_frag:u_e,shadow_vert:m_e,shadow_frag:p_e,sprite_vert:g_e,sprite_frag:f_e},Vi={common:{diffuse:{value:new ws(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new as},alphaMap:{value:null},alphaMapTransform:{value:new as},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new as}},envmap:{envMap:{value:null},envMapRotation:{value:new as},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new as}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new as}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new as},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new as},normalScale:{value:new rs(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new as},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new as}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new as}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new as}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ws(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new ws(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new as},alphaTest:{value:0},uvTransform:{value:new as}},sprite:{diffuse:{value:new ws(16777215)},opacity:{value:1},center:{value:new rs(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new as},alphaMap:{value:null},alphaMapTransform:{value:new as},alphaTest:{value:0}}},hg={basic:{uniforms:Od([Vi.common,Vi.specularmap,Vi.envmap,Vi.aomap,Vi.lightmap,Vi.fog]),vertexShader:hs.meshbasic_vert,fragmentShader:hs.meshbasic_frag},lambert:{uniforms:Od([Vi.common,Vi.specularmap,Vi.envmap,Vi.aomap,Vi.lightmap,Vi.emissivemap,Vi.bumpmap,Vi.normalmap,Vi.displacementmap,Vi.fog,Vi.lights,{emissive:{value:new ws(0)}}]),vertexShader:hs.meshlambert_vert,fragmentShader:hs.meshlambert_frag},phong:{uniforms:Od([Vi.common,Vi.specularmap,Vi.envmap,Vi.aomap,Vi.lightmap,Vi.emissivemap,Vi.bumpmap,Vi.normalmap,Vi.displacementmap,Vi.fog,Vi.lights,{emissive:{value:new ws(0)},specular:{value:new ws(1118481)},shininess:{value:30}}]),vertexShader:hs.meshphong_vert,fragmentShader:hs.meshphong_frag},standard:{uniforms:Od([Vi.common,Vi.envmap,Vi.aomap,Vi.lightmap,Vi.emissivemap,Vi.bumpmap,Vi.normalmap,Vi.displacementmap,Vi.roughnessmap,Vi.metalnessmap,Vi.fog,Vi.lights,{emissive:{value:new ws(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:hs.meshphysical_vert,fragmentShader:hs.meshphysical_frag},toon:{uniforms:Od([Vi.common,Vi.aomap,Vi.lightmap,Vi.emissivemap,Vi.bumpmap,Vi.normalmap,Vi.displacementmap,Vi.gradientmap,Vi.fog,Vi.lights,{emissive:{value:new ws(0)}}]),vertexShader:hs.meshtoon_vert,fragmentShader:hs.meshtoon_frag},matcap:{uniforms:Od([Vi.common,Vi.bumpmap,Vi.normalmap,Vi.displacementmap,Vi.fog,{matcap:{value:null}}]),vertexShader:hs.meshmatcap_vert,fragmentShader:hs.meshmatcap_frag},points:{uniforms:Od([Vi.points,Vi.fog]),vertexShader:hs.points_vert,fragmentShader:hs.points_frag},dashed:{uniforms:Od([Vi.common,Vi.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:hs.linedashed_vert,fragmentShader:hs.linedashed_frag},depth:{uniforms:Od([Vi.common,Vi.displacementmap]),vertexShader:hs.depth_vert,fragmentShader:hs.depth_frag},normal:{uniforms:Od([Vi.common,Vi.bumpmap,Vi.normalmap,Vi.displacementmap,{opacity:{value:1}}]),vertexShader:hs.meshnormal_vert,fragmentShader:hs.meshnormal_frag},sprite:{uniforms:Od([Vi.sprite,Vi.fog]),vertexShader:hs.sprite_vert,fragmentShader:hs.sprite_frag},background:{uniforms:{uvTransform:{value:new as},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:hs.background_vert,fragmentShader:hs.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new as}},vertexShader:hs.backgroundCube_vert,fragmentShader:hs.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:hs.cube_vert,fragmentShader:hs.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:hs.equirect_vert,fragmentShader:hs.equirect_frag},distanceRGBA:{uniforms:Od([Vi.common,Vi.displacementmap,{referencePosition:{value:new et},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:hs.distanceRGBA_vert,fragmentShader:hs.distanceRGBA_frag},shadow:{uniforms:Od([Vi.lights,Vi.fog,{color:{value:new ws(0)},opacity:{value:1}}]),vertexShader:hs.shadow_vert,fragmentShader:hs.shadow_frag}};hg.physical={uniforms:Od([hg.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new as},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new as},clearcoatNormalScale:{value:new rs(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new as},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new as},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new as},sheen:{value:0},sheenColor:{value:new ws(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new as},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new as},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new as},transmissionSamplerSize:{value:new rs},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new as},attenuationDistance:{value:0},attenuationColor:{value:new ws(0)},specularColor:{value:new ws(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new as},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new as},anisotropyVector:{value:new rs},anisotropyMap:{value:null},anisotropyMapTransform:{value:new as}}]),vertexShader:hs.meshphysical_vert,fragmentShader:hs.meshphysical_frag};const vx={r:0,b:0,g:0},ZA=new Ig,b_e=new Sr;function U_e(s,e,t,i,n,o,r){const l=new ws(0);let a=o===!0?0:1,d,c,h=null,u=0,m=null;function p(S){let Z=S.isScene===!0?S.background:null;return Z&&Z.isTexture&&(Z=(S.backgroundBlurriness>0?t:e).get(Z)),Z}function g(S){let Z=!1;const R=p(S);R===null?b(l,a):R&&R.isColor&&(b(R,1),Z=!0);const y=s.xr.getEnvironmentBlendMode();y==="additive"?i.buffers.color.setClear(0,0,0,1,r):y==="alpha-blend"&&i.buffers.color.setClear(0,0,0,0,r),(s.autoClear||Z)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),s.clear(s.autoClearColor,s.autoClearDepth,s.autoClearStencil))}function f(S,Z){const R=p(Z);R&&(R.isCubeTexture||R.mapping===g3)?(c===void 0&&(c=new Dh(new Dv(1,1,1),new MF({name:"BackgroundCubeMaterial",uniforms:Ay(hg.backgroundCube.uniforms),vertexShader:hg.backgroundCube.vertexShader,fragmentShader:hg.backgroundCube.fragmentShader,side:Kc,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(y,N,w){this.matrixWorld.copyPosition(w.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(c)),ZA.copy(Z.backgroundRotation),ZA.x*=-1,ZA.y*=-1,ZA.z*=-1,R.isCubeTexture&&R.isRenderTargetTexture===!1&&(ZA.y*=-1,ZA.z*=-1),c.material.uniforms.envMap.value=R,c.material.uniforms.flipEnvMap.value=R.isCubeTexture&&R.isRenderTargetTexture===!1?-1:1,c.material.uniforms.backgroundBlurriness.value=Z.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=Z.backgroundIntensity,c.material.uniforms.backgroundRotation.value.setFromMatrix4(b_e.makeRotationFromEuler(ZA)),c.material.toneMapped=uo.getTransfer(R.colorSpace)!==Xo,(h!==R||u!==R.version||m!==s.toneMapping)&&(c.material.needsUpdate=!0,h=R,u=R.version,m=s.toneMapping),c.layers.enableAll(),S.unshift(c,c.geometry,c.material,0,0,null)):R&&R.isTexture&&(d===void 0&&(d=new Dh(new U3(2,2),new MF({name:"BackgroundMaterial",uniforms:Ay(hg.background.uniforms),vertexShader:hg.background.vertexShader,fragmentShader:hg.background.fragmentShader,side:QF,depthTest:!1,depthWrite:!1,fog:!1})),d.geometry.deleteAttribute("normal"),Object.defineProperty(d.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(d)),d.material.uniforms.t2D.value=R,d.material.uniforms.backgroundIntensity.value=Z.backgroundIntensity,d.material.toneMapped=uo.getTransfer(R.colorSpace)!==Xo,R.matrixAutoUpdate===!0&&R.updateMatrix(),d.material.uniforms.uvTransform.value.copy(R.matrix),(h!==R||u!==R.version||m!==s.toneMapping)&&(d.material.needsUpdate=!0,h=R,u=R.version,m=s.toneMapping),d.layers.enableAll(),S.unshift(d,d.geometry,d.material,0,0,null))}function b(S,Z){S.getRGB(vx,xAe(s)),i.buffers.color.setClear(vx.r,vx.g,vx.b,Z,r)}function U(){c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0),d!==void 0&&(d.geometry.dispose(),d.material.dispose(),d=void 0)}return{getClearColor:function(){return l},setClearColor:function(S,Z=1){l.set(S),a=Z,b(l,a)},getClearAlpha:function(){return a},setClearAlpha:function(S){a=S,b(l,a)},render:g,addToRenderList:f,dispose:U}}function F_e(s,e){const t=s.getParameter(s.MAX_VERTEX_ATTRIBS),i={},n=u(null);let o=n,r=!1;function l(C,v,Y,J,k){let E=!1;const K=h(J,Y,v);o!==K&&(o=K,d(o.object)),E=m(C,J,Y,k),E&&p(C,J,Y,k),k!==null&&e.update(k,s.ELEMENT_ARRAY_BUFFER),(E||r)&&(r=!1,Z(C,v,Y,J),k!==null&&s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,e.get(k).buffer))}function a(){return s.createVertexArray()}function d(C){return s.bindVertexArray(C)}function c(C){return s.deleteVertexArray(C)}function h(C,v,Y){const J=Y.wireframe===!0;let k=i[C.id];k===void 0&&(k={},i[C.id]=k);let E=k[v.id];E===void 0&&(E={},k[v.id]=E);let K=E[J];return K===void 0&&(K=u(a()),E[J]=K),K}function u(C){const v=[],Y=[],J=[];for(let k=0;k<t;k++)v[k]=0,Y[k]=0,J[k]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:v,enabledAttributes:Y,attributeDivisors:J,object:C,attributes:{},index:null}}function m(C,v,Y,J){const k=o.attributes,E=v.attributes;let K=0;const de=Y.getAttributes();for(const ee in de)if(de[ee].location>=0){const Fe=k[ee];let Ue=E[ee];if(Ue===void 0&&(ee==="instanceMatrix"&&C.instanceMatrix&&(Ue=C.instanceMatrix),ee==="instanceColor"&&C.instanceColor&&(Ue=C.instanceColor)),Fe===void 0||Fe.attribute!==Ue||Ue&&Fe.data!==Ue.data)return!0;K++}return o.attributesNum!==K||o.index!==J}function p(C,v,Y,J){const k={},E=v.attributes;let K=0;const de=Y.getAttributes();for(const ee in de)if(de[ee].location>=0){let Fe=E[ee];Fe===void 0&&(ee==="instanceMatrix"&&C.instanceMatrix&&(Fe=C.instanceMatrix),ee==="instanceColor"&&C.instanceColor&&(Fe=C.instanceColor));const Ue={};Ue.attribute=Fe,Fe&&Fe.data&&(Ue.data=Fe.data),k[ee]=Ue,K++}o.attributes=k,o.attributesNum=K,o.index=J}function g(){const C=o.newAttributes;for(let v=0,Y=C.length;v<Y;v++)C[v]=0}function f(C){b(C,0)}function b(C,v){const Y=o.newAttributes,J=o.enabledAttributes,k=o.attributeDivisors;Y[C]=1,J[C]===0&&(s.enableVertexAttribArray(C),J[C]=1),k[C]!==v&&(s.vertexAttribDivisor(C,v),k[C]=v)}function U(){const C=o.newAttributes,v=o.enabledAttributes;for(let Y=0,J=v.length;Y<J;Y++)v[Y]!==C[Y]&&(s.disableVertexAttribArray(Y),v[Y]=0)}function S(C,v,Y,J,k,E,K){K===!0?s.vertexAttribIPointer(C,v,Y,k,E):s.vertexAttribPointer(C,v,Y,J,k,E)}function Z(C,v,Y,J){g();const k=J.attributes,E=Y.getAttributes(),K=v.defaultAttributeValues;for(const de in E){const ee=E[de];if(ee.location>=0){let le=k[de];if(le===void 0&&(de==="instanceMatrix"&&C.instanceMatrix&&(le=C.instanceMatrix),de==="instanceColor"&&C.instanceColor&&(le=C.instanceColor)),le!==void 0){const Fe=le.normalized,Ue=le.itemSize,ze=e.get(le);if(ze===void 0)continue;const Oe=ze.buffer,Ie=ze.type,at=ze.bytesPerElement,je=Ie===s.INT||Ie===s.UNSIGNED_INT||le.gpuType===qne;if(le.isInterleavedBufferAttribute){const Se=le.data,dt=Se.stride,Yt=le.offset;if(Se.isInstancedInterleavedBuffer){for(let Ye=0;Ye<ee.locationSize;Ye++)b(ee.location+Ye,Se.meshPerAttribute);C.isInstancedMesh!==!0&&J._maxInstanceCount===void 0&&(J._maxInstanceCount=Se.meshPerAttribute*Se.count)}else for(let Ye=0;Ye<ee.locationSize;Ye++)f(ee.location+Ye);s.bindBuffer(s.ARRAY_BUFFER,Oe);for(let Ye=0;Ye<ee.locationSize;Ye++)S(ee.location+Ye,Ue/ee.locationSize,Ie,Fe,dt*at,(Yt+Ue/ee.locationSize*Ye)*at,je)}else{if(le.isInstancedBufferAttribute){for(let Se=0;Se<ee.locationSize;Se++)b(ee.location+Se,le.meshPerAttribute);C.isInstancedMesh!==!0&&J._maxInstanceCount===void 0&&(J._maxInstanceCount=le.meshPerAttribute*le.count)}else for(let Se=0;Se<ee.locationSize;Se++)f(ee.location+Se);s.bindBuffer(s.ARRAY_BUFFER,Oe);for(let Se=0;Se<ee.locationSize;Se++)S(ee.location+Se,Ue/ee.locationSize,Ie,Fe,Ue*at,Ue/ee.locationSize*Se*at,je)}}else if(K!==void 0){const Fe=K[de];if(Fe!==void 0)switch(Fe.length){case 2:s.vertexAttrib2fv(ee.location,Fe);break;case 3:s.vertexAttrib3fv(ee.location,Fe);break;case 4:s.vertexAttrib4fv(ee.location,Fe);break;default:s.vertexAttrib1fv(ee.location,Fe)}}}}U()}function R(){w();for(const C in i){const v=i[C];for(const Y in v){const J=v[Y];for(const k in J)c(J[k].object),delete J[k];delete v[Y]}delete i[C]}}function y(C){if(i[C.id]===void 0)return;const v=i[C.id];for(const Y in v){const J=v[Y];for(const k in J)c(J[k].object),delete J[k];delete v[Y]}delete i[C.id]}function N(C){for(const v in i){const Y=i[v];if(Y[C.id]===void 0)continue;const J=Y[C.id];for(const k in J)c(J[k].object),delete J[k];delete Y[C.id]}}function w(){Q(),r=!0,o!==n&&(o=n,d(o.object))}function Q(){n.geometry=null,n.program=null,n.wireframe=!1}return{setup:l,reset:w,resetDefaultState:Q,dispose:R,releaseStatesOfGeometry:y,releaseStatesOfProgram:N,initAttributes:g,enableAttribute:f,disableUnusedAttributes:U}}function A_e(s,e,t){let i;function n(d){i=d}function o(d,c){s.drawArrays(i,d,c),t.update(c,i,1)}function r(d,c,h){h!==0&&(s.drawArraysInstanced(i,d,c,h),t.update(c,i,h))}function l(d,c,h){if(h===0)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(i,d,0,c,0,h);let m=0;for(let p=0;p<h;p++)m+=c[p];t.update(m,i,1)}function a(d,c,h,u){if(h===0)return;const m=e.get("WEBGL_multi_draw");if(m===null)for(let p=0;p<d.length;p++)r(d[p],c[p],u[p]);else{m.multiDrawArraysInstancedWEBGL(i,d,0,c,0,u,0,h);let p=0;for(let g=0;g<h;g++)p+=c[g]*u[g];t.update(p,i,1)}}this.setMode=n,this.render=o,this.renderInstances=r,this.renderMultiDraw=l,this.renderMultiDrawInstances=a}function Z_e(s,e,t,i){let n;function o(){if(n!==void 0)return n;if(e.has("EXT_texture_filter_anisotropic")===!0){const N=e.get("EXT_texture_filter_anisotropic");n=s.getParameter(N.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n}function r(N){return!(N!==jm&&i.convert(N)!==s.getParameter(s.IMPLEMENTATION_COLOR_READ_FORMAT))}function l(N){const w=N===Iv&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));return!(N!==Yf&&i.convert(N)!==s.getParameter(s.IMPLEMENTATION_COLOR_READ_TYPE)&&N!==Sf&&!w)}function a(N){if(N==="highp"){if(s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.HIGH_FLOAT).precision>0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.HIGH_FLOAT).precision>0)return"highp";N="mediump"}return N==="mediump"&&s.getShaderPrecisionFormat(s.VERTEX_SHADER,s.MEDIUM_FLOAT).precision>0&&s.getShaderPrecisionFormat(s.FRAGMENT_SHADER,s.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let d=t.precision!==void 0?t.precision:"highp";const c=a(d);c!==d&&(console.warn("THREE.WebGLRenderer:",d,"not supported, using",c,"instead."),d=c);const h=t.logarithmicDepthBuffer===!0,u=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),m=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),p=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),g=s.getParameter(s.MAX_TEXTURE_SIZE),f=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),b=s.getParameter(s.MAX_VERTEX_ATTRIBS),U=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),S=s.getParameter(s.MAX_VARYING_VECTORS),Z=s.getParameter(s.MAX_FRAGMENT_UNIFORM_VECTORS),R=p>0,y=s.getParameter(s.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:o,getMaxPrecision:a,textureFormatReadable:r,textureTypeReadable:l,precision:d,logarithmicDepthBuffer:h,reverseDepthBuffer:u,maxTextures:m,maxVertexTextures:p,maxTextureSize:g,maxCubemapSize:f,maxAttributes:b,maxVertexUniforms:U,maxVaryings:S,maxFragmentUniforms:Z,vertexTextures:R,maxSamples:y}}function S_e(s){const e=this;let t=null,i=0,n=!1,o=!1;const r=new iU,l=new as,a={value:null,needsUpdate:!1};this.uniform=a,this.numPlanes=0,this.numIntersection=0,this.init=function(h,u){const m=h.length!==0||u||i!==0||n;return n=u,i=h.length,m},this.beginShadows=function(){o=!0,c(null)},this.endShadows=function(){o=!1},this.setGlobalState=function(h,u){t=c(h,u,0)},this.setState=function(h,u,m){const p=h.clippingPlanes,g=h.clipIntersection,f=h.clipShadows,b=s.get(h);if(!n||p===null||p.length===0||o&&!f)o?c(null):d();else{const U=o?0:i,S=U*4;let Z=b.clippingState||null;a.value=Z,Z=c(p,u,S,m);for(let R=0;R!==S;++R)Z[R]=t[R];b.clippingState=Z,this.numIntersection=g?this.numPlanes:0,this.numPlanes+=U}};function d(){a.value!==t&&(a.value=t,a.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function c(h,u,m,p){const g=h!==null?h.length:0;let f=null;if(g!==0){if(f=a.value,p!==!0||f===null){const b=m+g*4,U=u.matrixWorldInverse;l.getNormalMatrix(U),(f===null||f.length<b)&&(f=new Float32Array(b));for(let S=0,Z=m;S!==g;++S,Z+=4)r.copy(h[S]).applyMatrix4(U,l),r.normal.toArray(f,Z),f[Z+3]=r.constant}a.value=f,a.needsUpdate=!0}return e.numPlanes=g,e.numIntersection=0,f}}function N_e(s){let e=new WeakMap;function t(r,l){return l===fK?r.mapping=gy:l===bK&&(r.mapping=fy),r}function i(r){if(r&&r.isTexture){const l=r.mapping;if(l===fK||l===bK)if(e.has(r)){const a=e.get(r).texture;return t(a,r.mapping)}else{const a=r.image;if(a&&a.height>0){const d=new VXe(a.height);return d.fromEquirectangularTexture(s,r),e.set(r,d),r.addEventListener("dispose",n),t(d.texture,r.mapping)}else return null}}return r}function n(r){const l=r.target;l.removeEventListener("dispose",n);const a=e.get(l);a!==void 0&&(e.delete(l),a.dispose())}function o(){e=new WeakMap}return{get:i,dispose:o}}const gW=4,dce=[.125,.215,.35,.446,.526,.582],XZ=20,Nj=new YAe,cce=new ws;let Rj=null,Vj=0,Wj=0,yj=!1;const nZ=(1+Math.sqrt(5))/2,BR=1/nZ,hce=[new et(-nZ,BR,0),new et(nZ,BR,0),new et(-BR,0,nZ),new et(BR,0,nZ),new et(0,nZ,-BR),new et(0,nZ,BR),new et(-1,1,-1),new et(1,1,-1),new et(-1,1,1),new et(1,1,1)],R_e=new et;class uce{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,n=100,o={}){const{size:r=256,position:l=R_e}=o;Rj=this._renderer.getRenderTarget(),Vj=this._renderer.getActiveCubeFace(),Wj=this._renderer.getActiveMipmapLevel(),yj=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(r);const a=this._allocateTargets();return a.depthBuffer=!0,this._sceneToCubeUV(e,i,n,a,l),t>0&&this._blur(a,0,0,t),this._applyPMREM(a),this._cleanup(a),a}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=gce(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=pce(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(Rj,Vj,Wj),this._renderer.xr.enabled=yj,e.scissorTest=!1,kx(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===gy||e.mapping===fy?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),Rj=this._renderer.getRenderTarget(),Vj=this._renderer.getActiveCubeFace(),Wj=this._renderer.getActiveMipmapLevel(),yj=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const i=t||this._allocateTargets();return this._textureToCubeUV(e,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,i={magFilter:Qg,minFilter:Qg,generateMipmaps:!1,type:Iv,format:jm,colorSpace:Fy,depthBuffer:!1},n=mce(e,t,i);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=mce(e,t,i);const{_lodMax:o}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=V_e(o)),this._blurMaterial=W_e(o,e,t)}return n}_compileMaterial(e){const t=new Dh(this._lodPlanes[0],e);this._renderer.compile(t,Nj)}_sceneToCubeUV(e,t,i,n,o){const a=new Iu(90,1,t,i),d=[1,-1,1,1,1,1],c=[1,1,1,-1,-1,-1],h=this._renderer,u=h.autoClear,m=h.toneMapping;h.getClearColor(cce),h.toneMapping=UF,h.autoClear=!1;const p=new b3({name:"PMREM.Background",side:Kc,depthWrite:!1,depthTest:!1}),g=new Dh(new Dv,p);let f=!1;const b=e.background;b?b.isColor&&(p.color.copy(b),e.background=null,f=!0):(p.color.copy(cce),f=!0);for(let U=0;U<6;U++){const S=U%3;S===0?(a.up.set(0,d[U],0),a.position.set(o.x,o.y,o.z),a.lookAt(o.x+c[U],o.y,o.z)):S===1?(a.up.set(0,0,d[U]),a.position.set(o.x,o.y,o.z),a.lookAt(o.x,o.y+c[U],o.z)):(a.up.set(0,d[U],0),a.position.set(o.x,o.y,o.z),a.lookAt(o.x,o.y,o.z+c[U]));const Z=this._cubeSize;kx(n,S*Z,U>2?Z:0,Z,Z),h.setRenderTarget(n),f&&h.render(g,a),h.render(e,a)}g.geometry.dispose(),g.material.dispose(),h.toneMapping=m,h.autoClear=u,e.background=b}_textureToCubeUV(e,t){const i=this._renderer,n=e.mapping===gy||e.mapping===fy;n?(this._cubemapMaterial===null&&(this._cubemapMaterial=gce()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=pce());const o=n?this._cubemapMaterial:this._equirectMaterial,r=new Dh(this._lodPlanes[0],o),l=o.uniforms;l.envMap.value=e;const a=this._cubeSize;kx(t,0,0,3*a,2*a),i.setRenderTarget(t),i.render(r,Nj)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;const n=this._lodPlanes.length;for(let o=1;o<n;o++){const r=Math.sqrt(this._sigmas[o]*this._sigmas[o]-this._sigmas[o-1]*this._sigmas[o-1]),l=hce[(n-o-1)%hce.length];this._blur(e,o-1,o,r,l)}t.autoClear=i}_blur(e,t,i,n,o){const r=this._pingPongRenderTarget;this._halfBlur(e,r,t,i,n,"latitudinal",o),this._halfBlur(r,e,i,i,n,"longitudinal",o)}_halfBlur(e,t,i,n,o,r,l){const a=this._renderer,d=this._blurMaterial;r!=="latitudinal"&&r!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const c=3,h=new Dh(this._lodPlanes[n],d),u=d.uniforms,m=this._sizeLods[i]-1,p=isFinite(o)?Math.PI/(2*m):2*Math.PI/(2*XZ-1),g=o/p,f=isFinite(o)?1+Math.floor(c*g):XZ;f>XZ&&console.warn(`sigmaRadians, ${o}, is too large and will clip, as it requested ${f} samples when the maximum is set to ${XZ}`);const b=[];let U=0;for(let N=0;N<XZ;++N){const w=N/g,Q=Math.exp(-w*w/2);b.push(Q),N===0?U+=Q:N<f&&(U+=2*Q)}for(let N=0;N<b.length;N++)b[N]=b[N]/U;u.envMap.value=e.texture,u.samples.value=f,u.weights.value=b,u.latitudinal.value=r==="latitudinal",l&&(u.poleAxis.value=l);const{_lodMax:S}=this;u.dTheta.value=p,u.mipInt.value=S-i;const Z=this._sizeLods[n],R=3*Z*(n>S-gW?n-S+gW:0),y=4*(this._cubeSize-Z);kx(t,R,y,3*Z,2*Z),a.setRenderTarget(t),a.render(h,Nj)}}function V_e(s){const e=[],t=[],i=[];let n=s;const o=s-gW+1+dce.length;for(let r=0;r<o;r++){const l=Math.pow(2,n);t.push(l);let a=1/l;r>s-gW?a=dce[r-s+gW-1]:r===0&&(a=0),i.push(a);const d=1/(l-2),c=-d,h=1+d,u=[c,c,h,c,h,h,c,c,h,h,c,h],m=6,p=6,g=3,f=2,b=1,U=new Float32Array(g*p*m),S=new Float32Array(f*p*m),Z=new Float32Array(b*p*m);for(let y=0;y<m;y++){const N=y%3*2/3-1,w=y>2?0:-1,Q=[N,w,0,N+2/3,w,0,N+2/3,w+1,0,N,w,0,N+2/3,w+1,0,N,w+1,0];U.set(Q,g*p*y),S.set(u,f*p*y);const C=[y,y,y,y,y,y];Z.set(C,b*p*y)}const R=new al;R.setAttribute("position",new $c(U,g)),R.setAttribute("uv",new $c(S,f)),R.setAttribute("faceIndex",new $c(Z,b)),e.push(R),n>gW&&n--}return{lodPlanes:e,sizeLods:t,sigmas:i}}function mce(s,e,t){const i=new pN(s,e,t);return i.texture.mapping=g3,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function kx(s,e,t,i,n){s.viewport.set(e,t,i,n),s.scissor.set(e,t,i,n)}function W_e(s,e,t){const i=new Float32Array(XZ),n=new et(0,1,0);return new MF({name:"SphericalGaussianBlur",defines:{n:XZ,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${s}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n}},vertexShader:cse(),fragmentShader:`
- precision mediump float;
- precision mediump int;
- varying vec3 vOutputDirection;
- uniform sampler2D envMap;
- uniform int samples;
- uniform float weights[ n ];
- uniform bool latitudinal;
- uniform float dTheta;
- uniform float mipInt;
- uniform vec3 poleAxis;
- #define ENVMAP_TYPE_CUBE_UV
- #include <cube_uv_reflection_fragment>
- vec3 getSample( float theta, vec3 axis ) {
- float cosTheta = cos( theta );
- // Rodrigues' axis-angle rotation
- vec3 sampleDirection = vOutputDirection * cosTheta
- + cross( axis, vOutputDirection ) * sin( theta )
- + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );
- return bilinearCubeUV( envMap, sampleDirection, mipInt );
- }
- void main() {
- vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );
- if ( all( equal( axis, vec3( 0.0 ) ) ) ) {
- axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );
- }
- axis = normalize( axis );
- gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
- gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );
- for ( int i = 1; i < n; i++ ) {
- if ( i >= samples ) {
- break;
- }
- float theta = dTheta * float( i );
- gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );
- gl_FragColor.rgb += weights[ i ] * getSample( theta, axis );
- }
- }
- `,blending:bF,depthTest:!1,depthWrite:!1})}function pce(){return new MF({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:cse(),fragmentShader:`
- precision mediump float;
- precision mediump int;
- varying vec3 vOutputDirection;
- uniform sampler2D envMap;
- #include <common>
- void main() {
- vec3 outputDirection = normalize( vOutputDirection );
- vec2 uv = equirectUv( outputDirection );
- gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
- }
- `,blending:bF,depthTest:!1,depthWrite:!1})}function gce(){return new MF({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:cse(),fragmentShader:`
- precision mediump float;
- precision mediump int;
- uniform float flipEnvMap;
- varying vec3 vOutputDirection;
- uniform samplerCube envMap;
- void main() {
- gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
- }
- `,blending:bF,depthTest:!1,depthWrite:!1})}function cse(){return`
- precision mediump float;
- precision mediump int;
- attribute float faceIndex;
- varying vec3 vOutputDirection;
- // RH coordinate system; PMREM face-indexing convention
- vec3 getDirection( vec2 uv, float face ) {
- uv = 2.0 * uv - 1.0;
- vec3 direction = vec3( uv, 1.0 );
- if ( face == 0.0 ) {
- direction = direction.zyx; // ( 1, v, u ) pos x
- } else if ( face == 1.0 ) {
- direction = direction.xzy;
- direction.xz *= -1.0; // ( -u, 1, -v ) pos y
- } else if ( face == 2.0 ) {
- direction.x *= -1.0; // ( -u, v, 1 ) pos z
- } else if ( face == 3.0 ) {
- direction = direction.zyx;
- direction.xz *= -1.0; // ( -1, v, -u ) neg x
- } else if ( face == 4.0 ) {
- direction = direction.xzy;
- direction.xy *= -1.0; // ( -u, -1, v ) neg y
- } else if ( face == 5.0 ) {
- direction.z *= -1.0; // ( u, v, -1 ) neg z
- }
- return direction;
- }
- void main() {
- vOutputDirection = getDirection( uv, faceIndex );
- gl_Position = vec4( position, 1.0 );
- }
- `}function y_e(s){let e=new WeakMap,t=null;function i(l){if(l&&l.isTexture){const a=l.mapping,d=a===fK||a===bK,c=a===gy||a===fy;if(d||c){let h=e.get(l);const u=h!==void 0?h.texture.pmremVersion:0;if(l.isRenderTargetTexture&&l.pmremVersion!==u)return t===null&&(t=new uce(s)),h=d?t.fromEquirectangular(l,h):t.fromCubemap(l,h),h.texture.pmremVersion=l.pmremVersion,e.set(l,h),h.texture;if(h!==void 0)return h.texture;{const m=l.image;return d&&m&&m.height>0||c&&m&&n(m)?(t===null&&(t=new uce(s)),h=d?t.fromEquirectangular(l):t.fromCubemap(l),h.texture.pmremVersion=l.pmremVersion,e.set(l,h),l.addEventListener("dispose",o),h.texture):null}}}return l}function n(l){let a=0;const d=6;for(let c=0;c<d;c++)l[c]!==void 0&&a++;return a===d}function o(l){const a=l.target;a.removeEventListener("dispose",o);const d=e.get(a);d!==void 0&&(e.delete(a),d.dispose())}function r(){e=new WeakMap,t!==null&&(t.dispose(),t=null)}return{get:i,dispose:r}}function Q_e(s){const e={};function t(i){if(e[i]!==void 0)return e[i];let n;switch(i){case"WEBGL_depth_texture":n=s.getExtension("WEBGL_depth_texture")||s.getExtension("MOZ_WEBGL_depth_texture")||s.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=s.getExtension("EXT_texture_filter_anisotropic")||s.getExtension("MOZ_EXT_texture_filter_anisotropic")||s.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=s.getExtension("WEBGL_compressed_texture_s3tc")||s.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=s.getExtension("WEBGL_compressed_texture_pvrtc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:n=s.getExtension(i)}return e[i]=n,n}return{has:function(i){return t(i)!==null},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(i){const n=t(i);return n===null&&iZ("THREE.WebGLRenderer: "+i+" extension not supported."),n}}}function M_e(s,e,t,i){const n={},o=new WeakMap;function r(h){const u=h.target;u.index!==null&&e.remove(u.index);for(const p in u.attributes)e.remove(u.attributes[p]);u.removeEventListener("dispose",r),delete n[u.id];const m=o.get(u);m&&(e.remove(m),o.delete(u)),i.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,t.memory.geometries--}function l(h,u){return n[u.id]===!0||(u.addEventListener("dispose",r),n[u.id]=!0,t.memory.geometries++),u}function a(h){const u=h.attributes;for(const m in u)e.update(u[m],s.ARRAY_BUFFER)}function d(h){const u=[],m=h.index,p=h.attributes.position;let g=0;if(m!==null){const U=m.array;g=m.version;for(let S=0,Z=U.length;S<Z;S+=3){const R=U[S+0],y=U[S+1],N=U[S+2];u.push(R,y,y,N,N,R)}}else if(p!==void 0){const U=p.array;g=p.version;for(let S=0,Z=U.length/3-1;S<Z;S+=3){const R=S+0,y=S+1,N=S+2;u.push(R,y,y,N,N,R)}}else return;const f=new(TAe(u)?kAe:vAe)(u,1);f.version=g;const b=o.get(h);b&&e.remove(b),o.set(h,f)}function c(h){const u=o.get(h);if(u){const m=h.index;m!==null&&u.version<m.version&&d(h)}else d(h);return o.get(h)}return{get:l,update:a,getWireframeAttribute:c}}function w_e(s,e,t){let i;function n(u){i=u}let o,r;function l(u){o=u.type,r=u.bytesPerElement}function a(u,m){s.drawElements(i,m,o,u*r),t.update(m,i,1)}function d(u,m,p){p!==0&&(s.drawElementsInstanced(i,m,o,u*r,p),t.update(m,i,p))}function c(u,m,p){if(p===0)return;e.get("WEBGL_multi_draw").multiDrawElementsWEBGL(i,m,0,o,u,0,p);let f=0;for(let b=0;b<p;b++)f+=m[b];t.update(f,i,1)}function h(u,m,p,g){if(p===0)return;const f=e.get("WEBGL_multi_draw");if(f===null)for(let b=0;b<u.length;b++)d(u[b]/r,m[b],g[b]);else{f.multiDrawElementsInstancedWEBGL(i,m,0,o,u,0,g,0,p);let b=0;for(let U=0;U<p;U++)b+=m[U]*g[U];t.update(b,i,1)}}this.setMode=n,this.setIndex=l,this.render=a,this.renderInstances=d,this.renderMultiDraw=c,this.renderMultiDrawInstances=h}function T_e(s){const e={geometries:0,textures:0},t={frame:0,calls:0,triangles:0,points:0,lines:0};function i(o,r,l){switch(t.calls++,r){case s.TRIANGLES:t.triangles+=l*(o/3);break;case s.LINES:t.lines+=l*(o/2);break;case s.LINE_STRIP:t.lines+=l*(o-1);break;case s.LINE_LOOP:t.lines+=l*o;break;case s.POINTS:t.points+=l*o;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",r);break}}function n(){t.calls=0,t.triangles=0,t.points=0,t.lines=0}return{memory:e,render:t,programs:null,autoReset:!0,reset:n,update:i}}function C_e(s,e,t){const i=new WeakMap,n=new Yr;function o(r,l,a){const d=r.morphTargetInfluences,c=l.morphAttributes.position||l.morphAttributes.normal||l.morphAttributes.color,h=c!==void 0?c.length:0;let u=i.get(l);if(u===void 0||u.count!==h){let Q=function(){N.dispose(),i.delete(l),l.removeEventListener("dispose",Q)};u!==void 0&&u.texture.dispose();const m=l.morphAttributes.position!==void 0,p=l.morphAttributes.normal!==void 0,g=l.morphAttributes.color!==void 0,f=l.morphAttributes.position||[],b=l.morphAttributes.normal||[],U=l.morphAttributes.color||[];let S=0;m===!0&&(S=1),p===!0&&(S=2),g===!0&&(S=3);let Z=l.attributes.position.count*S,R=1;Z>e.maxTextureSize&&(R=Math.ceil(Z/e.maxTextureSize),Z=e.maxTextureSize);const y=new Float32Array(Z*R*4*h),N=new CAe(y,Z,R,h);N.type=Sf,N.needsUpdate=!0;const w=S*4;for(let C=0;C<h;C++){const v=f[C],Y=b[C],J=U[C],k=Z*R*4*C;for(let E=0;E<v.count;E++){const K=E*w;m===!0&&(n.fromBufferAttribute(v,E),y[k+K+0]=n.x,y[k+K+1]=n.y,y[k+K+2]=n.z,y[k+K+3]=0),p===!0&&(n.fromBufferAttribute(Y,E),y[k+K+4]=n.x,y[k+K+5]=n.y,y[k+K+6]=n.z,y[k+K+7]=0),g===!0&&(n.fromBufferAttribute(J,E),y[k+K+8]=n.x,y[k+K+9]=n.y,y[k+K+10]=n.z,y[k+K+11]=J.itemSize===4?n.w:1)}}u={count:h,texture:N,size:new rs(Z,R)},i.set(l,u),l.addEventListener("dispose",Q)}if(r.isInstancedMesh===!0&&r.morphTexture!==null)a.getUniforms().setValue(s,"morphTexture",r.morphTexture,t);else{let m=0;for(let g=0;g<d.length;g++)m+=d[g];const p=l.morphTargetsRelative?1:1-m;a.getUniforms().setValue(s,"morphTargetBaseInfluence",p),a.getUniforms().setValue(s,"morphTargetInfluences",d)}a.getUniforms().setValue(s,"morphTargetsTexture",u.texture,t),a.getUniforms().setValue(s,"morphTargetsTextureSize",u.size)}return{update:o}}function B_e(s,e,t,i){let n=new WeakMap;function o(a){const d=i.render.frame,c=a.geometry,h=e.get(a,c);if(n.get(h)!==d&&(e.update(h),n.set(h,d)),a.isInstancedMesh&&(a.hasEventListener("dispose",l)===!1&&a.addEventListener("dispose",l),n.get(a)!==d&&(t.update(a.instanceMatrix,s.ARRAY_BUFFER),a.instanceColor!==null&&t.update(a.instanceColor,s.ARRAY_BUFFER),n.set(a,d))),a.isSkinnedMesh){const u=a.skeleton;n.get(u)!==d&&(u.update(),n.set(u,d))}return h}function r(){n=new WeakMap}function l(a){const d=a.target;d.removeEventListener("dispose",l),t.remove(d.instanceMatrix),d.instanceColor!==null&&t.remove(d.instanceColor)}return{update:o,dispose:r}}const OAe=new qc,fce=new GAe(1,1),jAe=new CAe,PAe=new aXe,HAe=new EAe,bce=[],Uce=[],Fce=new Float32Array(16),Ace=new Float32Array(9),Zce=new Float32Array(4);function aM(s,e,t){const i=s[0];if(i<=0||i>0)return s;const n=e*t;let o=bce[n];if(o===void 0&&(o=new Float32Array(n),bce[n]=o),e!==0){i.toArray(o,0);for(let r=1,l=0;r!==e;++r)l+=t,s[r].toArray(o,l)}return o}function Ol(s,e){if(s.length!==e.length)return!1;for(let t=0,i=s.length;t<i;t++)if(s[t]!==e[t])return!1;return!0}function jl(s,e){for(let t=0,i=e.length;t<i;t++)s[t]=e[t]}function F3(s,e){let t=Uce[e];t===void 0&&(t=new Int32Array(e),Uce[e]=t);for(let i=0;i!==e;++i)t[i]=s.allocateTextureUnit();return t}function L_e(s,e){const t=this.cache;t[0]!==e&&(s.uniform1f(this.addr,e),t[0]=e)}function v_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2f(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ol(t,e))return;s.uniform2fv(this.addr,e),jl(t,e)}}function k_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3f(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else if(e.r!==void 0)(t[0]!==e.r||t[1]!==e.g||t[2]!==e.b)&&(s.uniform3f(this.addr,e.r,e.g,e.b),t[0]=e.r,t[1]=e.g,t[2]=e.b);else{if(Ol(t,e))return;s.uniform3fv(this.addr,e),jl(t,e)}}function x_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4f(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ol(t,e))return;s.uniform4fv(this.addr,e),jl(t,e)}}function I_e(s,e){const t=this.cache,i=e.elements;if(i===void 0){if(Ol(t,e))return;s.uniformMatrix2fv(this.addr,!1,e),jl(t,e)}else{if(Ol(t,i))return;Zce.set(i),s.uniformMatrix2fv(this.addr,!1,Zce),jl(t,i)}}function E_e(s,e){const t=this.cache,i=e.elements;if(i===void 0){if(Ol(t,e))return;s.uniformMatrix3fv(this.addr,!1,e),jl(t,e)}else{if(Ol(t,i))return;Ace.set(i),s.uniformMatrix3fv(this.addr,!1,Ace),jl(t,i)}}function D_e(s,e){const t=this.cache,i=e.elements;if(i===void 0){if(Ol(t,e))return;s.uniformMatrix4fv(this.addr,!1,e),jl(t,e)}else{if(Ol(t,i))return;Fce.set(i),s.uniformMatrix4fv(this.addr,!1,Fce),jl(t,i)}}function G_e(s,e){const t=this.cache;t[0]!==e&&(s.uniform1i(this.addr,e),t[0]=e)}function J_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2i(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ol(t,e))return;s.uniform2iv(this.addr,e),jl(t,e)}}function X_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3i(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Ol(t,e))return;s.uniform3iv(this.addr,e),jl(t,e)}}function Y_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4i(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ol(t,e))return;s.uniform4iv(this.addr,e),jl(t,e)}}function __e(s,e){const t=this.cache;t[0]!==e&&(s.uniform1ui(this.addr,e),t[0]=e)}function z_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(s.uniform2ui(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ol(t,e))return;s.uniform2uiv(this.addr,e),jl(t,e)}}function O_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(s.uniform3ui(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Ol(t,e))return;s.uniform3uiv(this.addr,e),jl(t,e)}}function j_e(s,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(s.uniform4ui(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ol(t,e))return;s.uniform4uiv(this.addr,e),jl(t,e)}}function P_e(s,e,t){const i=this.cache,n=t.allocateTextureUnit();i[0]!==n&&(s.uniform1i(this.addr,n),i[0]=n);let o;this.type===s.SAMPLER_2D_SHADOW?(fce.compareFunction=wAe,o=fce):o=OAe,t.setTexture2D(e||o,n)}function H_e(s,e,t){const i=this.cache,n=t.allocateTextureUnit();i[0]!==n&&(s.uniform1i(this.addr,n),i[0]=n),t.setTexture3D(e||PAe,n)}function K_e(s,e,t){const i=this.cache,n=t.allocateTextureUnit();i[0]!==n&&(s.uniform1i(this.addr,n),i[0]=n),t.setTextureCube(e||HAe,n)}function q_e(s,e,t){const i=this.cache,n=t.allocateTextureUnit();i[0]!==n&&(s.uniform1i(this.addr,n),i[0]=n),t.setTexture2DArray(e||jAe,n)}function $_e(s){switch(s){case 5126:return L_e;case 35664:return v_e;case 35665:return k_e;case 35666:return x_e;case 35674:return I_e;case 35675:return E_e;case 35676:return D_e;case 5124:case 35670:return G_e;case 35667:case 35671:return J_e;case 35668:case 35672:return X_e;case 35669:case 35673:return Y_e;case 5125:return __e;case 36294:return z_e;case 36295:return O_e;case 36296:return j_e;case 35678:case 36198:case 36298:case 36306:case 35682:return P_e;case 35679:case 36299:case 36307:return H_e;case 35680:case 36300:case 36308:case 36293:return K_e;case 36289:case 36303:case 36311:case 36292:return q_e}}function eze(s,e){s.uniform1fv(this.addr,e)}function tze(s,e){const t=aM(e,this.size,2);s.uniform2fv(this.addr,t)}function ize(s,e){const t=aM(e,this.size,3);s.uniform3fv(this.addr,t)}function nze(s,e){const t=aM(e,this.size,4);s.uniform4fv(this.addr,t)}function sze(s,e){const t=aM(e,this.size,4);s.uniformMatrix2fv(this.addr,!1,t)}function oze(s,e){const t=aM(e,this.size,9);s.uniformMatrix3fv(this.addr,!1,t)}function rze(s,e){const t=aM(e,this.size,16);s.uniformMatrix4fv(this.addr,!1,t)}function lze(s,e){s.uniform1iv(this.addr,e)}function aze(s,e){s.uniform2iv(this.addr,e)}function dze(s,e){s.uniform3iv(this.addr,e)}function cze(s,e){s.uniform4iv(this.addr,e)}function hze(s,e){s.uniform1uiv(this.addr,e)}function uze(s,e){s.uniform2uiv(this.addr,e)}function mze(s,e){s.uniform3uiv(this.addr,e)}function pze(s,e){s.uniform4uiv(this.addr,e)}function gze(s,e,t){const i=this.cache,n=e.length,o=F3(t,n);Ol(i,o)||(s.uniform1iv(this.addr,o),jl(i,o));for(let r=0;r!==n;++r)t.setTexture2D(e[r]||OAe,o[r])}function fze(s,e,t){const i=this.cache,n=e.length,o=F3(t,n);Ol(i,o)||(s.uniform1iv(this.addr,o),jl(i,o));for(let r=0;r!==n;++r)t.setTexture3D(e[r]||PAe,o[r])}function bze(s,e,t){const i=this.cache,n=e.length,o=F3(t,n);Ol(i,o)||(s.uniform1iv(this.addr,o),jl(i,o));for(let r=0;r!==n;++r)t.setTextureCube(e[r]||HAe,o[r])}function Uze(s,e,t){const i=this.cache,n=e.length,o=F3(t,n);Ol(i,o)||(s.uniform1iv(this.addr,o),jl(i,o));for(let r=0;r!==n;++r)t.setTexture2DArray(e[r]||jAe,o[r])}function Fze(s){switch(s){case 5126:return eze;case 35664:return tze;case 35665:return ize;case 35666:return nze;case 35674:return sze;case 35675:return oze;case 35676:return rze;case 5124:case 35670:return lze;case 35667:case 35671:return aze;case 35668:case 35672:return dze;case 35669:case 35673:return cze;case 5125:return hze;case 36294:return uze;case 36295:return mze;case 36296:return pze;case 35678:case 36198:case 36298:case 36306:case 35682:return gze;case 35679:case 36299:case 36307:return fze;case 35680:case 36300:case 36308:case 36293:return bze;case 36289:case 36303:case 36311:case 36292:return Uze}}class Aze{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.setValue=$_e(t.type)}}class Zze{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Fze(t.type)}}class Sze{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,i){const n=this.seq;for(let o=0,r=n.length;o!==r;++o){const l=n[o];l.setValue(e,t[l.id],i)}}}const Qj=/(\w+)(\])?(\[|\.)?/g;function Sce(s,e){s.seq.push(e),s.map[e.id]=e}function Nze(s,e,t){const i=s.name,n=i.length;for(Qj.lastIndex=0;;){const o=Qj.exec(i),r=Qj.lastIndex;let l=o[1];const a=o[2]==="]",d=o[3];if(a&&(l=l|0),d===void 0||d==="["&&r+2===n){Sce(t,d===void 0?new Aze(l,s,e):new Zze(l,s,e));break}else{let h=t.map[l];h===void 0&&(h=new Sze(l),Sce(t,h)),t=h}}}class rD{constructor(e,t){this.seq=[],this.map={};const i=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let n=0;n<i;++n){const o=e.getActiveUniform(t,n),r=e.getUniformLocation(t,o.name);Nze(o,r,this)}}setValue(e,t,i,n){const o=this.map[t];o!==void 0&&o.setValue(e,i,n)}setOptional(e,t,i){const n=t[i];n!==void 0&&this.setValue(e,i,n)}static upload(e,t,i,n){for(let o=0,r=t.length;o!==r;++o){const l=t[o],a=i[l.id];a.needsUpdate!==!1&&l.setValue(e,a.value,n)}}static seqWithValue(e,t){const i=[];for(let n=0,o=e.length;n!==o;++n){const r=e[n];r.id in t&&i.push(r)}return i}}function Nce(s,e,t){const i=s.createShader(e);return s.shaderSource(i,t),s.compileShader(i),i}const Rze=37297;let Vze=0;function Wze(s,e){const t=s.split(`
- `),i=[],n=Math.max(e-6,0),o=Math.min(e+6,t.length);for(let r=n;r<o;r++){const l=r+1;i.push(`${l===e?">":" "} ${l}: ${t[r]}`)}return i.join(`
- `)}const Rce=new as;function yze(s){uo._getMatrix(Rce,uo.workingColorSpace,s);const e=`mat3( ${Rce.elements.map(t=>t.toFixed(4))} )`;switch(uo.getTransfer(s)){case IJ:return[e,"LinearTransferOETF"];case Xo:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",s),[e,"LinearTransferOETF"]}}function Vce(s,e,t){const i=s.getShaderParameter(e,s.COMPILE_STATUS),n=s.getShaderInfoLog(e).trim();if(i&&n==="")return"";const o=/ERROR: 0:(\d+)/.exec(n);if(o){const r=parseInt(o[1]);return t.toUpperCase()+`
- `+n+`
- `+Wze(s.getShaderSource(e),r)}else return n}function Qze(s,e){const t=yze(e);return[`vec4 ${s}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(`
- `)}function Mze(s,e){let t;switch(e){case UJe:t="Linear";break;case FJe:t="Reinhard";break;case AJe:t="Cineon";break;case ZJe:t="ACESFilmic";break;case NJe:t="AgX";break;case RJe:t="Neutral";break;case SJe:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+s+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const xx=new et;function wze(){uo.getLuminanceCoefficients(xx);const s=xx.x.toFixed(4),e=xx.y.toFixed(4),t=xx.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${s}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(`
- `)}function Tze(s){return[s.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",s.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(NT).join(`
- `)}function Cze(s){const e=[];for(const t in s){const i=s[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(`
- `)}function Bze(s,e){const t={},i=s.getProgramParameter(e,s.ACTIVE_ATTRIBUTES);for(let n=0;n<i;n++){const o=s.getActiveAttrib(e,n),r=o.name;let l=1;o.type===s.FLOAT_MAT2&&(l=2),o.type===s.FLOAT_MAT3&&(l=3),o.type===s.FLOAT_MAT4&&(l=4),t[r]={type:o.type,location:s.getAttribLocation(e,r),locationSize:l}}return t}function NT(s){return s!==""}function Wce(s,e){const t=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return s.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function yce(s,e){return s.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const Lze=/^[ \t]*#include +<([\w\d./]+)>/gm;function OK(s){return s.replace(Lze,kze)}const vze=new Map;function kze(s,e){let t=hs[e];if(t===void 0){const i=vze.get(e);if(i!==void 0)t=hs[i],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,i);else throw new Error("Can not resolve #include <"+e+">")}return OK(t)}const xze=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Qce(s){return s.replace(xze,Ize)}function Ize(s,e,t,i){let n="";for(let o=parseInt(e);o<parseInt(t);o++)n+=i.replace(/\[\s*i\s*\]/g,"[ "+o+" ]").replace(/UNROLLED_LOOP_INDEX/g,o);return n}function Mce(s){let e=`precision ${s.precision} float;
- precision ${s.precision} int;
- precision ${s.precision} sampler2D;
- precision ${s.precision} samplerCube;
- precision ${s.precision} sampler3D;
- precision ${s.precision} sampler2DArray;
- precision ${s.precision} sampler2DShadow;
- precision ${s.precision} samplerCubeShadow;
- precision ${s.precision} sampler2DArrayShadow;
- precision ${s.precision} isampler2D;
- precision ${s.precision} isampler3D;
- precision ${s.precision} isamplerCube;
- precision ${s.precision} isampler2DArray;
- precision ${s.precision} usampler2D;
- precision ${s.precision} usampler3D;
- precision ${s.precision} usamplerCube;
- precision ${s.precision} usampler2DArray;
- `;return s.precision==="highp"?e+=`
- #define HIGH_PRECISION`:s.precision==="mediump"?e+=`
- #define MEDIUM_PRECISION`:s.precision==="lowp"&&(e+=`
- #define LOW_PRECISION`),e}function Eze(s){let e="SHADOWMAP_TYPE_BASIC";return s.shadowMapType===bAe?e="SHADOWMAP_TYPE_PCF":s.shadowMapType===KGe?e="SHADOWMAP_TYPE_PCF_SOFT":s.shadowMapType===V0&&(e="SHADOWMAP_TYPE_VSM"),e}function Dze(s){let e="ENVMAP_TYPE_CUBE";if(s.envMap)switch(s.envMapMode){case gy:case fy:e="ENVMAP_TYPE_CUBE";break;case g3:e="ENVMAP_TYPE_CUBE_UV";break}return e}function Gze(s){let e="ENVMAP_MODE_REFLECTION";if(s.envMap)switch(s.envMapMode){case fy:e="ENVMAP_MODE_REFRACTION";break}return e}function Jze(s){let e="ENVMAP_BLENDING_NONE";if(s.envMap)switch(s.combine){case Kne:e="ENVMAP_BLENDING_MULTIPLY";break;case fJe:e="ENVMAP_BLENDING_MIX";break;case bJe:e="ENVMAP_BLENDING_ADD";break}return e}function Xze(s){const e=s.envMapCubeUVHeight;if(e===null)return null;const t=Math.log2(e)-2,i=1/e;return{texelWidth:1/(3*Math.max(Math.pow(2,t),7*16)),texelHeight:i,maxMip:t}}function Yze(s,e,t,i){const n=s.getContext(),o=t.defines;let r=t.vertexShader,l=t.fragmentShader;const a=Eze(t),d=Dze(t),c=Gze(t),h=Jze(t),u=Xze(t),m=Tze(t),p=Cze(o),g=n.createProgram();let f,b,U=t.glslVersion?"#version "+t.glslVersion+`
- `:"";t.isRawShaderMaterial?(f=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,p].filter(NT).join(`
- `),f.length>0&&(f+=`
- `),b=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,p].filter(NT).join(`
- `),b.length>0&&(b+=`
- `)):(f=[Mce(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,p,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+a:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",`
- `].filter(NT).join(`
- `),b=[Mce(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,p,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+d:"",t.envMap?"#define "+c:"",t.envMap?"#define "+h:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+a:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==UF?"#define TONE_MAPPING":"",t.toneMapping!==UF?hs.tonemapping_pars_fragment:"",t.toneMapping!==UF?Mze("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",hs.colorspace_pars_fragment,Qze("linearToOutputTexel",t.outputColorSpace),wze(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",`
- `].filter(NT).join(`
- `)),r=OK(r),r=Wce(r,t),r=yce(r,t),l=OK(l),l=Wce(l,t),l=yce(l,t),r=Qce(r),l=Qce(l),t.isRawShaderMaterial!==!0&&(U=`#version 300 es
- `,f=[m,"#define attribute in","#define varying out","#define texture2D texture"].join(`
- `)+`
- `+f,b=["#define varying in",t.glslVersion===Tde?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===Tde?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`
- `)+`
- `+b);const S=U+f+r,Z=U+b+l,R=Nce(n,n.VERTEX_SHADER,S),y=Nce(n,n.FRAGMENT_SHADER,Z);n.attachShader(g,R),n.attachShader(g,y),t.index0AttributeName!==void 0?n.bindAttribLocation(g,0,t.index0AttributeName):t.morphTargets===!0&&n.bindAttribLocation(g,0,"position"),n.linkProgram(g);function N(v){if(s.debug.checkShaderErrors){const Y=n.getProgramInfoLog(g).trim(),J=n.getShaderInfoLog(R).trim(),k=n.getShaderInfoLog(y).trim();let E=!0,K=!0;if(n.getProgramParameter(g,n.LINK_STATUS)===!1)if(E=!1,typeof s.debug.onShaderError=="function")s.debug.onShaderError(n,g,R,y);else{const de=Vce(n,R,"vertex"),ee=Vce(n,y,"fragment");console.error("THREE.WebGLProgram: Shader Error "+n.getError()+" - VALIDATE_STATUS "+n.getProgramParameter(g,n.VALIDATE_STATUS)+`
- Material Name: `+v.name+`
- Material Type: `+v.type+`
- Program Info Log: `+Y+`
- `+de+`
- `+ee)}else Y!==""?console.warn("THREE.WebGLProgram: Program Info Log:",Y):(J===""||k==="")&&(K=!1);K&&(v.diagnostics={runnable:E,programLog:Y,vertexShader:{log:J,prefix:f},fragmentShader:{log:k,prefix:b}})}n.deleteShader(R),n.deleteShader(y),w=new rD(n,g),Q=Bze(n,g)}let w;this.getUniforms=function(){return w===void 0&&N(this),w};let Q;this.getAttributes=function(){return Q===void 0&&N(this),Q};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=n.getProgramParameter(g,Rze)),C},this.destroy=function(){i.releaseStatesOfProgram(this),n.deleteProgram(g),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=Vze++,this.cacheKey=e,this.usedTimes=1,this.program=g,this.vertexShader=R,this.fragmentShader=y,this}let _ze=0;class zze{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,n=this._getShaderStage(t),o=this._getShaderStage(i),r=this._getShaderCacheForMaterial(e);return r.has(n)===!1&&(r.add(n),n.usedTimes++),r.has(o)===!1&&(r.add(o),o.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new Oze(e),t.set(e,i)),i}}class Oze{constructor(e){this.id=_ze++,this.code=e,this.usedTimes=0}}function jze(s,e,t,i,n,o,r){const l=new BAe,a=new zze,d=new Set,c=[],h=n.logarithmicDepthBuffer,u=n.vertexTextures;let m=n.precision;const p={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function g(Q){return d.add(Q),Q===0?"uv":`uv${Q}`}function f(Q,C,v,Y,J){const k=Y.fog,E=J.geometry,K=Q.isMeshStandardMaterial?Y.environment:null,de=(Q.isMeshStandardMaterial?t:e).get(Q.envMap||K),ee=de&&de.mapping===g3?de.image.height:null,le=p[Q.type];Q.precision!==null&&(m=n.getMaxPrecision(Q.precision),m!==Q.precision&&console.warn("THREE.WebGLProgram.getParameters:",Q.precision,"not supported, using",m,"instead."));const Fe=E.morphAttributes.position||E.morphAttributes.normal||E.morphAttributes.color,Ue=Fe!==void 0?Fe.length:0;let ze=0;E.morphAttributes.position!==void 0&&(ze=1),E.morphAttributes.normal!==void 0&&(ze=2),E.morphAttributes.color!==void 0&&(ze=3);let Oe,Ie,at,je;if(le){const oe=hg[le];Oe=oe.vertexShader,Ie=oe.fragmentShader}else Oe=Q.vertexShader,Ie=Q.fragmentShader,a.update(Q),at=a.getVertexShaderID(Q),je=a.getFragmentShaderID(Q);const Se=s.getRenderTarget(),dt=s.state.buffers.depth.getReversed(),Yt=J.isInstancedMesh===!0,Ye=J.isBatchedMesh===!0,mt=!!Q.map,Wt=!!Q.matcap,Jt=!!de,Ae=!!Q.aoMap,Yi=!!Q.lightMap,ci=!!Q.bumpMap,we=!!Q.normalMap,si=!!Q.displacementMap,yn=!!Q.emissiveMap,bi=!!Q.metalnessMap,pe=!!Q.roughnessMap,ie=Q.anisotropy>0,it=Q.clearcoat>0,Ft=Q.dispersion>0,Pe=Q.iridescence>0,Re=Q.sheen>0,vt=Q.transmission>0,Ke=ie&&!!Q.anisotropyMap,ot=it&&!!Q.clearcoatMap,Et=it&&!!Q.clearcoatNormalMap,St=it&&!!Q.clearcoatRoughnessMap,Ht=Pe&&!!Q.iridescenceMap,Fi=Pe&&!!Q.iridescenceThicknessMap,Dt=Re&&!!Q.sheenColorMap,Ot=Re&&!!Q.sheenRoughnessMap,nn=!!Q.specularMap,xi=!!Q.specularColorMap,Zi=!!Q.specularIntensityMap,Me=vt&&!!Q.transmissionMap,ri=vt&&!!Q.thicknessMap,st=!!Q.gradientMap,Ve=!!Q.alphaMap,Nt=Q.alphaTest>0,Ui=!!Q.alphaHash,Ci=!!Q.extensions;let Mn=UF;Q.toneMapped&&(Se===null||Se.isXRRenderTarget===!0)&&(Mn=s.toneMapping);const Si={shaderID:le,shaderType:Q.type,shaderName:Q.name,vertexShader:Oe,fragmentShader:Ie,defines:Q.defines,customVertexShaderID:at,customFragmentShaderID:je,isRawShaderMaterial:Q.isRawShaderMaterial===!0,glslVersion:Q.glslVersion,precision:m,batching:Ye,batchingColor:Ye&&J._colorsTexture!==null,instancing:Yt,instancingColor:Yt&&J.instanceColor!==null,instancingMorph:Yt&&J.morphTexture!==null,supportsVertexTextures:u,outputColorSpace:Se===null?s.outputColorSpace:Se.isXRRenderTarget===!0?Se.texture.colorSpace:Fy,alphaToCoverage:!!Q.alphaToCoverage,map:mt,matcap:Wt,envMap:Jt,envMapMode:Jt&&de.mapping,envMapCubeUVHeight:ee,aoMap:Ae,lightMap:Yi,bumpMap:ci,normalMap:we,displacementMap:u&&si,emissiveMap:yn,normalMapObjectSpace:we&&Q.normalMapType===QJe,normalMapTangentSpace:we&&Q.normalMapType===MAe,metalnessMap:bi,roughnessMap:pe,anisotropy:ie,anisotropyMap:Ke,clearcoat:it,clearcoatMap:ot,clearcoatNormalMap:Et,clearcoatRoughnessMap:St,dispersion:Ft,iridescence:Pe,iridescenceMap:Ht,iridescenceThicknessMap:Fi,sheen:Re,sheenColorMap:Dt,sheenRoughnessMap:Ot,specularMap:nn,specularColorMap:xi,specularIntensityMap:Zi,transmission:vt,transmissionMap:Me,thicknessMap:ri,gradientMap:st,opaque:Q.transparent===!1&&Q.blending===R1&&Q.alphaToCoverage===!1,alphaMap:Ve,alphaTest:Nt,alphaHash:Ui,combine:Q.combine,mapUv:mt&&g(Q.map.channel),aoMapUv:Ae&&g(Q.aoMap.channel),lightMapUv:Yi&&g(Q.lightMap.channel),bumpMapUv:ci&&g(Q.bumpMap.channel),normalMapUv:we&&g(Q.normalMap.channel),displacementMapUv:si&&g(Q.displacementMap.channel),emissiveMapUv:yn&&g(Q.emissiveMap.channel),metalnessMapUv:bi&&g(Q.metalnessMap.channel),roughnessMapUv:pe&&g(Q.roughnessMap.channel),anisotropyMapUv:Ke&&g(Q.anisotropyMap.channel),clearcoatMapUv:ot&&g(Q.clearcoatMap.channel),clearcoatNormalMapUv:Et&&g(Q.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:St&&g(Q.clearcoatRoughnessMap.channel),iridescenceMapUv:Ht&&g(Q.iridescenceMap.channel),iridescenceThicknessMapUv:Fi&&g(Q.iridescenceThicknessMap.channel),sheenColorMapUv:Dt&&g(Q.sheenColorMap.channel),sheenRoughnessMapUv:Ot&&g(Q.sheenRoughnessMap.channel),specularMapUv:nn&&g(Q.specularMap.channel),specularColorMapUv:xi&&g(Q.specularColorMap.channel),specularIntensityMapUv:Zi&&g(Q.specularIntensityMap.channel),transmissionMapUv:Me&&g(Q.transmissionMap.channel),thicknessMapUv:ri&&g(Q.thicknessMap.channel),alphaMapUv:Ve&&g(Q.alphaMap.channel),vertexTangents:!!E.attributes.tangent&&(we||ie),vertexColors:Q.vertexColors,vertexAlphas:Q.vertexColors===!0&&!!E.attributes.color&&E.attributes.color.itemSize===4,pointsUvs:J.isPoints===!0&&!!E.attributes.uv&&(mt||Ve),fog:!!k,useFog:Q.fog===!0,fogExp2:!!k&&k.isFogExp2,flatShading:Q.flatShading===!0,sizeAttenuation:Q.sizeAttenuation===!0,logarithmicDepthBuffer:h,reverseDepthBuffer:dt,skinning:J.isSkinnedMesh===!0,morphTargets:E.morphAttributes.position!==void 0,morphNormals:E.morphAttributes.normal!==void 0,morphColors:E.morphAttributes.color!==void 0,morphTargetsCount:Ue,morphTextureStride:ze,numDirLights:C.directional.length,numPointLights:C.point.length,numSpotLights:C.spot.length,numSpotLightMaps:C.spotLightMap.length,numRectAreaLights:C.rectArea.length,numHemiLights:C.hemi.length,numDirLightShadows:C.directionalShadowMap.length,numPointLightShadows:C.pointShadowMap.length,numSpotLightShadows:C.spotShadowMap.length,numSpotLightShadowsWithMaps:C.numSpotLightShadowsWithMaps,numLightProbes:C.numLightProbes,numClippingPlanes:r.numPlanes,numClipIntersection:r.numIntersection,dithering:Q.dithering,shadowMapEnabled:s.shadowMap.enabled&&v.length>0,shadowMapType:s.shadowMap.type,toneMapping:Mn,decodeVideoTexture:mt&&Q.map.isVideoTexture===!0&&uo.getTransfer(Q.map.colorSpace)===Xo,decodeVideoTextureEmissive:yn&&Q.emissiveMap.isVideoTexture===!0&&uo.getTransfer(Q.emissiveMap.colorSpace)===Xo,premultipliedAlpha:Q.premultipliedAlpha,doubleSided:Q.side===zm,flipSided:Q.side===Kc,useDepthPacking:Q.depthPacking>=0,depthPacking:Q.depthPacking||0,index0AttributeName:Q.index0AttributeName,extensionClipCullDistance:Ci&&Q.extensions.clipCullDistance===!0&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Ci&&Q.extensions.multiDraw===!0||Ye)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:Q.customProgramCacheKey()};return Si.vertexUv1s=d.has(1),Si.vertexUv2s=d.has(2),Si.vertexUv3s=d.has(3),d.clear(),Si}function b(Q){const C=[];if(Q.shaderID?C.push(Q.shaderID):(C.push(Q.customVertexShaderID),C.push(Q.customFragmentShaderID)),Q.defines!==void 0)for(const v in Q.defines)C.push(v),C.push(Q.defines[v]);return Q.isRawShaderMaterial===!1&&(U(C,Q),S(C,Q),C.push(s.outputColorSpace)),C.push(Q.customProgramCacheKey),C.join()}function U(Q,C){Q.push(C.precision),Q.push(C.outputColorSpace),Q.push(C.envMapMode),Q.push(C.envMapCubeUVHeight),Q.push(C.mapUv),Q.push(C.alphaMapUv),Q.push(C.lightMapUv),Q.push(C.aoMapUv),Q.push(C.bumpMapUv),Q.push(C.normalMapUv),Q.push(C.displacementMapUv),Q.push(C.emissiveMapUv),Q.push(C.metalnessMapUv),Q.push(C.roughnessMapUv),Q.push(C.anisotropyMapUv),Q.push(C.clearcoatMapUv),Q.push(C.clearcoatNormalMapUv),Q.push(C.clearcoatRoughnessMapUv),Q.push(C.iridescenceMapUv),Q.push(C.iridescenceThicknessMapUv),Q.push(C.sheenColorMapUv),Q.push(C.sheenRoughnessMapUv),Q.push(C.specularMapUv),Q.push(C.specularColorMapUv),Q.push(C.specularIntensityMapUv),Q.push(C.transmissionMapUv),Q.push(C.thicknessMapUv),Q.push(C.combine),Q.push(C.fogExp2),Q.push(C.sizeAttenuation),Q.push(C.morphTargetsCount),Q.push(C.morphAttributeCount),Q.push(C.numDirLights),Q.push(C.numPointLights),Q.push(C.numSpotLights),Q.push(C.numSpotLightMaps),Q.push(C.numHemiLights),Q.push(C.numRectAreaLights),Q.push(C.numDirLightShadows),Q.push(C.numPointLightShadows),Q.push(C.numSpotLightShadows),Q.push(C.numSpotLightShadowsWithMaps),Q.push(C.numLightProbes),Q.push(C.shadowMapType),Q.push(C.toneMapping),Q.push(C.numClippingPlanes),Q.push(C.numClipIntersection),Q.push(C.depthPacking)}function S(Q,C){l.disableAll(),C.supportsVertexTextures&&l.enable(0),C.instancing&&l.enable(1),C.instancingColor&&l.enable(2),C.instancingMorph&&l.enable(3),C.matcap&&l.enable(4),C.envMap&&l.enable(5),C.normalMapObjectSpace&&l.enable(6),C.normalMapTangentSpace&&l.enable(7),C.clearcoat&&l.enable(8),C.iridescence&&l.enable(9),C.alphaTest&&l.enable(10),C.vertexColors&&l.enable(11),C.vertexAlphas&&l.enable(12),C.vertexUv1s&&l.enable(13),C.vertexUv2s&&l.enable(14),C.vertexUv3s&&l.enable(15),C.vertexTangents&&l.enable(16),C.anisotropy&&l.enable(17),C.alphaHash&&l.enable(18),C.batching&&l.enable(19),C.dispersion&&l.enable(20),C.batchingColor&&l.enable(21),Q.push(l.mask),l.disableAll(),C.fog&&l.enable(0),C.useFog&&l.enable(1),C.flatShading&&l.enable(2),C.logarithmicDepthBuffer&&l.enable(3),C.reverseDepthBuffer&&l.enable(4),C.skinning&&l.enable(5),C.morphTargets&&l.enable(6),C.morphNormals&&l.enable(7),C.morphColors&&l.enable(8),C.premultipliedAlpha&&l.enable(9),C.shadowMapEnabled&&l.enable(10),C.doubleSided&&l.enable(11),C.flipSided&&l.enable(12),C.useDepthPacking&&l.enable(13),C.dithering&&l.enable(14),C.transmission&&l.enable(15),C.sheen&&l.enable(16),C.opaque&&l.enable(17),C.pointsUvs&&l.enable(18),C.decodeVideoTexture&&l.enable(19),C.decodeVideoTextureEmissive&&l.enable(20),C.alphaToCoverage&&l.enable(21),Q.push(l.mask)}function Z(Q){const C=p[Q.type];let v;if(C){const Y=hg[C];v=ZXe.clone(Y.uniforms)}else v=Q.uniforms;return v}function R(Q,C){let v;for(let Y=0,J=c.length;Y<J;Y++){const k=c[Y];if(k.cacheKey===C){v=k,++v.usedTimes;break}}return v===void 0&&(v=new Yze(s,C,Q,o),c.push(v)),v}function y(Q){if(--Q.usedTimes===0){const C=c.indexOf(Q);c[C]=c[c.length-1],c.pop(),Q.destroy()}}function N(Q){a.remove(Q)}function w(){a.dispose()}return{getParameters:f,getProgramCacheKey:b,getUniforms:Z,acquireProgram:R,releaseProgram:y,releaseShaderCache:N,programs:c,dispose:w}}function Pze(){let s=new WeakMap;function e(r){return s.has(r)}function t(r){let l=s.get(r);return l===void 0&&(l={},s.set(r,l)),l}function i(r){s.delete(r)}function n(r,l,a){s.get(r)[l]=a}function o(){s=new WeakMap}return{has:e,get:t,remove:i,update:n,dispose:o}}function Hze(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.material.id!==e.material.id?s.material.id-e.material.id:s.z!==e.z?s.z-e.z:s.id-e.id}function wce(s,e){return s.groupOrder!==e.groupOrder?s.groupOrder-e.groupOrder:s.renderOrder!==e.renderOrder?s.renderOrder-e.renderOrder:s.z!==e.z?e.z-s.z:s.id-e.id}function Tce(){const s=[];let e=0;const t=[],i=[],n=[];function o(){e=0,t.length=0,i.length=0,n.length=0}function r(h,u,m,p,g,f){let b=s[e];return b===void 0?(b={id:h.id,object:h,geometry:u,material:m,groupOrder:p,renderOrder:h.renderOrder,z:g,group:f},s[e]=b):(b.id=h.id,b.object=h,b.geometry=u,b.material=m,b.groupOrder=p,b.renderOrder=h.renderOrder,b.z=g,b.group=f),e++,b}function l(h,u,m,p,g,f){const b=r(h,u,m,p,g,f);m.transmission>0?i.push(b):m.transparent===!0?n.push(b):t.push(b)}function a(h,u,m,p,g,f){const b=r(h,u,m,p,g,f);m.transmission>0?i.unshift(b):m.transparent===!0?n.unshift(b):t.unshift(b)}function d(h,u){t.length>1&&t.sort(h||Hze),i.length>1&&i.sort(u||wce),n.length>1&&n.sort(u||wce)}function c(){for(let h=e,u=s.length;h<u;h++){const m=s[h];if(m.id===null)break;m.id=null,m.object=null,m.geometry=null,m.material=null,m.group=null}}return{opaque:t,transmissive:i,transparent:n,init:o,push:l,unshift:a,finish:c,sort:d}}function Kze(){let s=new WeakMap;function e(i,n){const o=s.get(i);let r;return o===void 0?(r=new Tce,s.set(i,[r])):n>=o.length?(r=new Tce,o.push(r)):r=o[n],r}function t(){s=new WeakMap}return{get:e,dispose:t}}function qze(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new et,color:new ws};break;case"SpotLight":t={position:new et,direction:new et,color:new ws,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new et,color:new ws,distance:0,decay:0};break;case"HemisphereLight":t={direction:new et,skyColor:new ws,groundColor:new ws};break;case"RectAreaLight":t={color:new ws,position:new et,halfWidth:new et,halfHeight:new et};break}return s[e.id]=t,t}}}function $ze(){const s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new rs};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new rs};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new rs,shadowCameraNear:1,shadowCameraFar:1e3};break}return s[e.id]=t,t}}}let e3e=0;function t3e(s,e){return(e.castShadow?2:0)-(s.castShadow?2:0)+(e.map?1:0)-(s.map?1:0)}function i3e(s){const e=new qze,t=$ze(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let d=0;d<9;d++)i.probe.push(new et);const n=new et,o=new Sr,r=new Sr;function l(d){let c=0,h=0,u=0;for(let Q=0;Q<9;Q++)i.probe[Q].set(0,0,0);let m=0,p=0,g=0,f=0,b=0,U=0,S=0,Z=0,R=0,y=0,N=0;d.sort(t3e);for(let Q=0,C=d.length;Q<C;Q++){const v=d[Q],Y=v.color,J=v.intensity,k=v.distance,E=v.shadow&&v.shadow.map?v.shadow.map.texture:null;if(v.isAmbientLight)c+=Y.r*J,h+=Y.g*J,u+=Y.b*J;else if(v.isLightProbe){for(let K=0;K<9;K++)i.probe[K].addScaledVector(v.sh.coefficients[K],J);N++}else if(v.isDirectionalLight){const K=e.get(v);if(K.color.copy(v.color).multiplyScalar(v.intensity),v.castShadow){const de=v.shadow,ee=t.get(v);ee.shadowIntensity=de.intensity,ee.shadowBias=de.bias,ee.shadowNormalBias=de.normalBias,ee.shadowRadius=de.radius,ee.shadowMapSize=de.mapSize,i.directionalShadow[m]=ee,i.directionalShadowMap[m]=E,i.directionalShadowMatrix[m]=v.shadow.matrix,U++}i.directional[m]=K,m++}else if(v.isSpotLight){const K=e.get(v);K.position.setFromMatrixPosition(v.matrixWorld),K.color.copy(Y).multiplyScalar(J),K.distance=k,K.coneCos=Math.cos(v.angle),K.penumbraCos=Math.cos(v.angle*(1-v.penumbra)),K.decay=v.decay,i.spot[g]=K;const de=v.shadow;if(v.map&&(i.spotLightMap[R]=v.map,R++,de.updateMatrices(v),v.castShadow&&y++),i.spotLightMatrix[g]=de.matrix,v.castShadow){const ee=t.get(v);ee.shadowIntensity=de.intensity,ee.shadowBias=de.bias,ee.shadowNormalBias=de.normalBias,ee.shadowRadius=de.radius,ee.shadowMapSize=de.mapSize,i.spotShadow[g]=ee,i.spotShadowMap[g]=E,Z++}g++}else if(v.isRectAreaLight){const K=e.get(v);K.color.copy(Y).multiplyScalar(J),K.halfWidth.set(v.width*.5,0,0),K.halfHeight.set(0,v.height*.5,0),i.rectArea[f]=K,f++}else if(v.isPointLight){const K=e.get(v);if(K.color.copy(v.color).multiplyScalar(v.intensity),K.distance=v.distance,K.decay=v.decay,v.castShadow){const de=v.shadow,ee=t.get(v);ee.shadowIntensity=de.intensity,ee.shadowBias=de.bias,ee.shadowNormalBias=de.normalBias,ee.shadowRadius=de.radius,ee.shadowMapSize=de.mapSize,ee.shadowCameraNear=de.camera.near,ee.shadowCameraFar=de.camera.far,i.pointShadow[p]=ee,i.pointShadowMap[p]=E,i.pointShadowMatrix[p]=v.shadow.matrix,S++}i.point[p]=K,p++}else if(v.isHemisphereLight){const K=e.get(v);K.skyColor.copy(v.color).multiplyScalar(J),K.groundColor.copy(v.groundColor).multiplyScalar(J),i.hemi[b]=K,b++}}f>0&&(s.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=Vi.LTC_FLOAT_1,i.rectAreaLTC2=Vi.LTC_FLOAT_2):(i.rectAreaLTC1=Vi.LTC_HALF_1,i.rectAreaLTC2=Vi.LTC_HALF_2)),i.ambient[0]=c,i.ambient[1]=h,i.ambient[2]=u;const w=i.hash;(w.directionalLength!==m||w.pointLength!==p||w.spotLength!==g||w.rectAreaLength!==f||w.hemiLength!==b||w.numDirectionalShadows!==U||w.numPointShadows!==S||w.numSpotShadows!==Z||w.numSpotMaps!==R||w.numLightProbes!==N)&&(i.directional.length=m,i.spot.length=g,i.rectArea.length=f,i.point.length=p,i.hemi.length=b,i.directionalShadow.length=U,i.directionalShadowMap.length=U,i.pointShadow.length=S,i.pointShadowMap.length=S,i.spotShadow.length=Z,i.spotShadowMap.length=Z,i.directionalShadowMatrix.length=U,i.pointShadowMatrix.length=S,i.spotLightMatrix.length=Z+R-y,i.spotLightMap.length=R,i.numSpotLightShadowsWithMaps=y,i.numLightProbes=N,w.directionalLength=m,w.pointLength=p,w.spotLength=g,w.rectAreaLength=f,w.hemiLength=b,w.numDirectionalShadows=U,w.numPointShadows=S,w.numSpotShadows=Z,w.numSpotMaps=R,w.numLightProbes=N,i.version=e3e++)}function a(d,c){let h=0,u=0,m=0,p=0,g=0;const f=c.matrixWorldInverse;for(let b=0,U=d.length;b<U;b++){const S=d[b];if(S.isDirectionalLight){const Z=i.directional[h];Z.direction.setFromMatrixPosition(S.matrixWorld),n.setFromMatrixPosition(S.target.matrixWorld),Z.direction.sub(n),Z.direction.transformDirection(f),h++}else if(S.isSpotLight){const Z=i.spot[m];Z.position.setFromMatrixPosition(S.matrixWorld),Z.position.applyMatrix4(f),Z.direction.setFromMatrixPosition(S.matrixWorld),n.setFromMatrixPosition(S.target.matrixWorld),Z.direction.sub(n),Z.direction.transformDirection(f),m++}else if(S.isRectAreaLight){const Z=i.rectArea[p];Z.position.setFromMatrixPosition(S.matrixWorld),Z.position.applyMatrix4(f),r.identity(),o.copy(S.matrixWorld),o.premultiply(f),r.extractRotation(o),Z.halfWidth.set(S.width*.5,0,0),Z.halfHeight.set(0,S.height*.5,0),Z.halfWidth.applyMatrix4(r),Z.halfHeight.applyMatrix4(r),p++}else if(S.isPointLight){const Z=i.point[u];Z.position.setFromMatrixPosition(S.matrixWorld),Z.position.applyMatrix4(f),u++}else if(S.isHemisphereLight){const Z=i.hemi[g];Z.direction.setFromMatrixPosition(S.matrixWorld),Z.direction.transformDirection(f),g++}}}return{setup:l,setupView:a,state:i}}function Cce(s){const e=new i3e(s),t=[],i=[];function n(c){d.camera=c,t.length=0,i.length=0}function o(c){t.push(c)}function r(c){i.push(c)}function l(){e.setup(t)}function a(c){e.setupView(t,c)}const d={lightsArray:t,shadowsArray:i,camera:null,lights:e,transmissionRenderTarget:{}};return{init:n,state:d,setupLights:l,setupLightsView:a,pushLight:o,pushShadow:r}}function n3e(s){let e=new WeakMap;function t(n,o=0){const r=e.get(n);let l;return r===void 0?(l=new Cce(s),e.set(n,[l])):o>=r.length?(l=new Cce(s),r.push(l)):l=r[o],l}function i(){e=new WeakMap}return{get:t,dispose:i}}const s3e=`void main() {
- gl_Position = vec4( position, 1.0 );
- }`,o3e=`uniform sampler2D shadow_pass;
- uniform vec2 resolution;
- uniform float radius;
- #include <packing>
- void main() {
- const float samples = float( VSM_SAMPLES );
- float mean = 0.0;
- float squared_mean = 0.0;
- float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );
- float uvStart = samples <= 1.0 ? 0.0 : - 1.0;
- for ( float i = 0.0; i < samples; i ++ ) {
- float uvOffset = uvStart + i * uvStride;
- #ifdef HORIZONTAL_PASS
- vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );
- mean += distribution.x;
- squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;
- #else
- float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );
- mean += depth;
- squared_mean += depth * depth;
- #endif
- }
- mean = mean / samples;
- squared_mean = squared_mean / samples;
- float std_dev = sqrt( squared_mean - mean * mean );
- gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
- }`;function r3e(s,e,t){let i=new rse;const n=new rs,o=new rs,r=new Yr,l=new wXe({depthPacking:yJe}),a=new TXe,d={},c=t.maxTextureSize,h={[QF]:Kc,[Kc]:QF,[zm]:zm},u=new MF({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new rs},radius:{value:4}},vertexShader:s3e,fragmentShader:o3e}),m=u.clone();m.defines.HORIZONTAL_PASS=1;const p=new al;p.setAttribute("position",new $c(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const g=new Dh(p,u),f=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=bAe;let b=this.type;this.render=function(y,N,w){if(f.enabled===!1||f.autoUpdate===!1&&f.needsUpdate===!1||y.length===0)return;const Q=s.getRenderTarget(),C=s.getActiveCubeFace(),v=s.getActiveMipmapLevel(),Y=s.state;Y.setBlending(bF),Y.buffers.color.setClear(1,1,1,1),Y.buffers.depth.setTest(!0),Y.setScissorTest(!1);const J=b!==V0&&this.type===V0,k=b===V0&&this.type!==V0;for(let E=0,K=y.length;E<K;E++){const de=y[E],ee=de.shadow;if(ee===void 0){console.warn("THREE.WebGLShadowMap:",de,"has no shadow.");continue}if(ee.autoUpdate===!1&&ee.needsUpdate===!1)continue;n.copy(ee.mapSize);const le=ee.getFrameExtents();if(n.multiply(le),o.copy(ee.mapSize),(n.x>c||n.y>c)&&(n.x>c&&(o.x=Math.floor(c/le.x),n.x=o.x*le.x,ee.mapSize.x=o.x),n.y>c&&(o.y=Math.floor(c/le.y),n.y=o.y*le.y,ee.mapSize.y=o.y)),ee.map===null||J===!0||k===!0){const Ue=this.type!==V0?{minFilter:qm,magFilter:qm}:{};ee.map!==null&&ee.map.dispose(),ee.map=new pN(n.x,n.y,Ue),ee.map.texture.name=de.name+".shadowMap",ee.camera.updateProjectionMatrix()}s.setRenderTarget(ee.map),s.clear();const Fe=ee.getViewportCount();for(let Ue=0;Ue<Fe;Ue++){const ze=ee.getViewport(Ue);r.set(o.x*ze.x,o.y*ze.y,o.x*ze.z,o.y*ze.w),Y.viewport(r),ee.updateMatrices(de,Ue),i=ee.getFrustum(),Z(N,w,ee.camera,de,this.type)}ee.isPointLightShadow!==!0&&this.type===V0&&U(ee,w),ee.needsUpdate=!1}b=this.type,f.needsUpdate=!1,s.setRenderTarget(Q,C,v)};function U(y,N){const w=e.update(g);u.defines.VSM_SAMPLES!==y.blurSamples&&(u.defines.VSM_SAMPLES=y.blurSamples,m.defines.VSM_SAMPLES=y.blurSamples,u.needsUpdate=!0,m.needsUpdate=!0),y.mapPass===null&&(y.mapPass=new pN(n.x,n.y)),u.uniforms.shadow_pass.value=y.map.texture,u.uniforms.resolution.value=y.mapSize,u.uniforms.radius.value=y.radius,s.setRenderTarget(y.mapPass),s.clear(),s.renderBufferDirect(N,null,w,u,g,null),m.uniforms.shadow_pass.value=y.mapPass.texture,m.uniforms.resolution.value=y.mapSize,m.uniforms.radius.value=y.radius,s.setRenderTarget(y.map),s.clear(),s.renderBufferDirect(N,null,w,m,g,null)}function S(y,N,w,Q){let C=null;const v=w.isPointLight===!0?y.customDistanceMaterial:y.customDepthMaterial;if(v!==void 0)C=v;else if(C=w.isPointLight===!0?a:l,s.localClippingEnabled&&N.clipShadows===!0&&Array.isArray(N.clippingPlanes)&&N.clippingPlanes.length!==0||N.displacementMap&&N.displacementScale!==0||N.alphaMap&&N.alphaTest>0||N.map&&N.alphaTest>0){const Y=C.uuid,J=N.uuid;let k=d[Y];k===void 0&&(k={},d[Y]=k);let E=k[J];E===void 0&&(E=C.clone(),k[J]=E,N.addEventListener("dispose",R)),C=E}if(C.visible=N.visible,C.wireframe=N.wireframe,Q===V0?C.side=N.shadowSide!==null?N.shadowSide:N.side:C.side=N.shadowSide!==null?N.shadowSide:h[N.side],C.alphaMap=N.alphaMap,C.alphaTest=N.alphaTest,C.map=N.map,C.clipShadows=N.clipShadows,C.clippingPlanes=N.clippingPlanes,C.clipIntersection=N.clipIntersection,C.displacementMap=N.displacementMap,C.displacementScale=N.displacementScale,C.displacementBias=N.displacementBias,C.wireframeLinewidth=N.wireframeLinewidth,C.linewidth=N.linewidth,w.isPointLight===!0&&C.isMeshDistanceMaterial===!0){const Y=s.properties.get(C);Y.light=w}return C}function Z(y,N,w,Q,C){if(y.visible===!1)return;if(y.layers.test(N.layers)&&(y.isMesh||y.isLine||y.isPoints)&&(y.castShadow||y.receiveShadow&&C===V0)&&(!y.frustumCulled||i.intersectsObject(y))){y.modelViewMatrix.multiplyMatrices(w.matrixWorldInverse,y.matrixWorld);const J=e.update(y),k=y.material;if(Array.isArray(k)){const E=J.groups;for(let K=0,de=E.length;K<de;K++){const ee=E[K],le=k[ee.materialIndex];if(le&&le.visible){const Fe=S(y,le,Q,C);y.onBeforeShadow(s,y,N,w,J,Fe,ee),s.renderBufferDirect(w,null,J,Fe,y,ee),y.onAfterShadow(s,y,N,w,J,Fe,ee)}}}else if(k.visible){const E=S(y,k,Q,C);y.onBeforeShadow(s,y,N,w,J,E,null),s.renderBufferDirect(w,null,J,E,y,null),y.onAfterShadow(s,y,N,w,J,E,null)}}const Y=y.children;for(let J=0,k=Y.length;J<k;J++)Z(Y[J],N,w,Q,C)}function R(y){y.target.removeEventListener("dispose",R);for(const w in d){const Q=d[w],C=y.target.uuid;C in Q&&(Q[C].dispose(),delete Q[C])}}}const l3e={[dK]:cK,[hK]:pK,[uK]:gK,[py]:mK,[cK]:dK,[pK]:hK,[gK]:uK,[mK]:py};function a3e(s,e){function t(){let Me=!1;const ri=new Yr;let st=null;const Ve=new Yr(0,0,0,0);return{setMask:function(Nt){st!==Nt&&!Me&&(s.colorMask(Nt,Nt,Nt,Nt),st=Nt)},setLocked:function(Nt){Me=Nt},setClear:function(Nt,Ui,Ci,Mn,Si){Si===!0&&(Nt*=Mn,Ui*=Mn,Ci*=Mn),ri.set(Nt,Ui,Ci,Mn),Ve.equals(ri)===!1&&(s.clearColor(Nt,Ui,Ci,Mn),Ve.copy(ri))},reset:function(){Me=!1,st=null,Ve.set(-1,0,0,0)}}}function i(){let Me=!1,ri=!1,st=null,Ve=null,Nt=null;return{setReversed:function(Ui){if(ri!==Ui){const Ci=e.get("EXT_clip_control");ri?Ci.clipControlEXT(Ci.LOWER_LEFT_EXT,Ci.ZERO_TO_ONE_EXT):Ci.clipControlEXT(Ci.LOWER_LEFT_EXT,Ci.NEGATIVE_ONE_TO_ONE_EXT);const Mn=Nt;Nt=null,this.setClear(Mn)}ri=Ui},getReversed:function(){return ri},setTest:function(Ui){Ui?Se(s.DEPTH_TEST):dt(s.DEPTH_TEST)},setMask:function(Ui){st!==Ui&&!Me&&(s.depthMask(Ui),st=Ui)},setFunc:function(Ui){if(ri&&(Ui=l3e[Ui]),Ve!==Ui){switch(Ui){case dK:s.depthFunc(s.NEVER);break;case cK:s.depthFunc(s.ALWAYS);break;case hK:s.depthFunc(s.LESS);break;case py:s.depthFunc(s.LEQUAL);break;case uK:s.depthFunc(s.EQUAL);break;case mK:s.depthFunc(s.GEQUAL);break;case pK:s.depthFunc(s.GREATER);break;case gK:s.depthFunc(s.NOTEQUAL);break;default:s.depthFunc(s.LEQUAL)}Ve=Ui}},setLocked:function(Ui){Me=Ui},setClear:function(Ui){Nt!==Ui&&(ri&&(Ui=1-Ui),s.clearDepth(Ui),Nt=Ui)},reset:function(){Me=!1,st=null,Ve=null,Nt=null,ri=!1}}}function n(){let Me=!1,ri=null,st=null,Ve=null,Nt=null,Ui=null,Ci=null,Mn=null,Si=null;return{setTest:function(oe){Me||(oe?Se(s.STENCIL_TEST):dt(s.STENCIL_TEST))},setMask:function(oe){ri!==oe&&!Me&&(s.stencilMask(oe),ri=oe)},setFunc:function(oe,ae,ce){(st!==oe||Ve!==ae||Nt!==ce)&&(s.stencilFunc(oe,ae,ce),st=oe,Ve=ae,Nt=ce)},setOp:function(oe,ae,ce){(Ui!==oe||Ci!==ae||Mn!==ce)&&(s.stencilOp(oe,ae,ce),Ui=oe,Ci=ae,Mn=ce)},setLocked:function(oe){Me=oe},setClear:function(oe){Si!==oe&&(s.clearStencil(oe),Si=oe)},reset:function(){Me=!1,ri=null,st=null,Ve=null,Nt=null,Ui=null,Ci=null,Mn=null,Si=null}}}const o=new t,r=new i,l=new n,a=new WeakMap,d=new WeakMap;let c={},h={},u=new WeakMap,m=[],p=null,g=!1,f=null,b=null,U=null,S=null,Z=null,R=null,y=null,N=new ws(0,0,0),w=0,Q=!1,C=null,v=null,Y=null,J=null,k=null;const E=s.getParameter(s.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let K=!1,de=0;const ee=s.getParameter(s.VERSION);ee.indexOf("WebGL")!==-1?(de=parseFloat(/^WebGL (\d)/.exec(ee)[1]),K=de>=1):ee.indexOf("OpenGL ES")!==-1&&(de=parseFloat(/^OpenGL ES (\d)/.exec(ee)[1]),K=de>=2);let le=null,Fe={};const Ue=s.getParameter(s.SCISSOR_BOX),ze=s.getParameter(s.VIEWPORT),Oe=new Yr().fromArray(Ue),Ie=new Yr().fromArray(ze);function at(Me,ri,st,Ve){const Nt=new Uint8Array(4),Ui=s.createTexture();s.bindTexture(Me,Ui),s.texParameteri(Me,s.TEXTURE_MIN_FILTER,s.NEAREST),s.texParameteri(Me,s.TEXTURE_MAG_FILTER,s.NEAREST);for(let Ci=0;Ci<st;Ci++)Me===s.TEXTURE_3D||Me===s.TEXTURE_2D_ARRAY?s.texImage3D(ri,0,s.RGBA,1,1,Ve,0,s.RGBA,s.UNSIGNED_BYTE,Nt):s.texImage2D(ri+Ci,0,s.RGBA,1,1,0,s.RGBA,s.UNSIGNED_BYTE,Nt);return Ui}const je={};je[s.TEXTURE_2D]=at(s.TEXTURE_2D,s.TEXTURE_2D,1),je[s.TEXTURE_CUBE_MAP]=at(s.TEXTURE_CUBE_MAP,s.TEXTURE_CUBE_MAP_POSITIVE_X,6),je[s.TEXTURE_2D_ARRAY]=at(s.TEXTURE_2D_ARRAY,s.TEXTURE_2D_ARRAY,1,1),je[s.TEXTURE_3D]=at(s.TEXTURE_3D,s.TEXTURE_3D,1,1),o.setClear(0,0,0,1),r.setClear(1),l.setClear(0),Se(s.DEPTH_TEST),r.setFunc(py),ci(!1),we(Vde),Se(s.CULL_FACE),Ae(bF);function Se(Me){c[Me]!==!0&&(s.enable(Me),c[Me]=!0)}function dt(Me){c[Me]!==!1&&(s.disable(Me),c[Me]=!1)}function Yt(Me,ri){return h[Me]!==ri?(s.bindFramebuffer(Me,ri),h[Me]=ri,Me===s.DRAW_FRAMEBUFFER&&(h[s.FRAMEBUFFER]=ri),Me===s.FRAMEBUFFER&&(h[s.DRAW_FRAMEBUFFER]=ri),!0):!1}function Ye(Me,ri){let st=m,Ve=!1;if(Me){st=u.get(ri),st===void 0&&(st=[],u.set(ri,st));const Nt=Me.textures;if(st.length!==Nt.length||st[0]!==s.COLOR_ATTACHMENT0){for(let Ui=0,Ci=Nt.length;Ui<Ci;Ui++)st[Ui]=s.COLOR_ATTACHMENT0+Ui;st.length=Nt.length,Ve=!0}}else st[0]!==s.BACK&&(st[0]=s.BACK,Ve=!0);Ve&&s.drawBuffers(st)}function mt(Me){return p!==Me?(s.useProgram(Me),p=Me,!0):!1}const Wt={[JZ]:s.FUNC_ADD,[$Ge]:s.FUNC_SUBTRACT,[eJe]:s.FUNC_REVERSE_SUBTRACT};Wt[tJe]=s.MIN,Wt[iJe]=s.MAX;const Jt={[nJe]:s.ZERO,[sJe]:s.ONE,[oJe]:s.SRC_COLOR,[lK]:s.SRC_ALPHA,[hJe]:s.SRC_ALPHA_SATURATE,[dJe]:s.DST_COLOR,[lJe]:s.DST_ALPHA,[rJe]:s.ONE_MINUS_SRC_COLOR,[aK]:s.ONE_MINUS_SRC_ALPHA,[cJe]:s.ONE_MINUS_DST_COLOR,[aJe]:s.ONE_MINUS_DST_ALPHA,[uJe]:s.CONSTANT_COLOR,[mJe]:s.ONE_MINUS_CONSTANT_COLOR,[pJe]:s.CONSTANT_ALPHA,[gJe]:s.ONE_MINUS_CONSTANT_ALPHA};function Ae(Me,ri,st,Ve,Nt,Ui,Ci,Mn,Si,oe){if(Me===bF){g===!0&&(dt(s.BLEND),g=!1);return}if(g===!1&&(Se(s.BLEND),g=!0),Me!==qGe){if(Me!==f||oe!==Q){if((b!==JZ||Z!==JZ)&&(s.blendEquation(s.FUNC_ADD),b=JZ,Z=JZ),oe)switch(Me){case R1:s.blendFuncSeparate(s.ONE,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Wde:s.blendFunc(s.ONE,s.ONE);break;case yde:s.blendFuncSeparate(s.ZERO,s.ONE_MINUS_SRC_COLOR,s.ZERO,s.ONE);break;case Qde:s.blendFuncSeparate(s.ZERO,s.SRC_COLOR,s.ZERO,s.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",Me);break}else switch(Me){case R1:s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Wde:s.blendFunc(s.SRC_ALPHA,s.ONE);break;case yde:s.blendFuncSeparate(s.ZERO,s.ONE_MINUS_SRC_COLOR,s.ZERO,s.ONE);break;case Qde:s.blendFunc(s.ZERO,s.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",Me);break}U=null,S=null,R=null,y=null,N.set(0,0,0),w=0,f=Me,Q=oe}return}Nt=Nt||ri,Ui=Ui||st,Ci=Ci||Ve,(ri!==b||Nt!==Z)&&(s.blendEquationSeparate(Wt[ri],Wt[Nt]),b=ri,Z=Nt),(st!==U||Ve!==S||Ui!==R||Ci!==y)&&(s.blendFuncSeparate(Jt[st],Jt[Ve],Jt[Ui],Jt[Ci]),U=st,S=Ve,R=Ui,y=Ci),(Mn.equals(N)===!1||Si!==w)&&(s.blendColor(Mn.r,Mn.g,Mn.b,Si),N.copy(Mn),w=Si),f=Me,Q=!1}function Yi(Me,ri){Me.side===zm?dt(s.CULL_FACE):Se(s.CULL_FACE);let st=Me.side===Kc;ri&&(st=!st),ci(st),Me.blending===R1&&Me.transparent===!1?Ae(bF):Ae(Me.blending,Me.blendEquation,Me.blendSrc,Me.blendDst,Me.blendEquationAlpha,Me.blendSrcAlpha,Me.blendDstAlpha,Me.blendColor,Me.blendAlpha,Me.premultipliedAlpha),r.setFunc(Me.depthFunc),r.setTest(Me.depthTest),r.setMask(Me.depthWrite),o.setMask(Me.colorWrite);const Ve=Me.stencilWrite;l.setTest(Ve),Ve&&(l.setMask(Me.stencilWriteMask),l.setFunc(Me.stencilFunc,Me.stencilRef,Me.stencilFuncMask),l.setOp(Me.stencilFail,Me.stencilZFail,Me.stencilZPass)),yn(Me.polygonOffset,Me.polygonOffsetFactor,Me.polygonOffsetUnits),Me.alphaToCoverage===!0?Se(s.SAMPLE_ALPHA_TO_COVERAGE):dt(s.SAMPLE_ALPHA_TO_COVERAGE)}function ci(Me){C!==Me&&(Me?s.frontFace(s.CW):s.frontFace(s.CCW),C=Me)}function we(Me){Me!==PGe?(Se(s.CULL_FACE),Me!==v&&(Me===Vde?s.cullFace(s.BACK):Me===HGe?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK))):dt(s.CULL_FACE),v=Me}function si(Me){Me!==Y&&(K&&s.lineWidth(Me),Y=Me)}function yn(Me,ri,st){Me?(Se(s.POLYGON_OFFSET_FILL),(J!==ri||k!==st)&&(s.polygonOffset(ri,st),J=ri,k=st)):dt(s.POLYGON_OFFSET_FILL)}function bi(Me){Me?Se(s.SCISSOR_TEST):dt(s.SCISSOR_TEST)}function pe(Me){Me===void 0&&(Me=s.TEXTURE0+E-1),le!==Me&&(s.activeTexture(Me),le=Me)}function ie(Me,ri,st){st===void 0&&(le===null?st=s.TEXTURE0+E-1:st=le);let Ve=Fe[st];Ve===void 0&&(Ve={type:void 0,texture:void 0},Fe[st]=Ve),(Ve.type!==Me||Ve.texture!==ri)&&(le!==st&&(s.activeTexture(st),le=st),s.bindTexture(Me,ri||je[Me]),Ve.type=Me,Ve.texture=ri)}function it(){const Me=Fe[le];Me!==void 0&&Me.type!==void 0&&(s.bindTexture(Me.type,null),Me.type=void 0,Me.texture=void 0)}function Ft(){try{s.compressedTexImage2D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function Pe(){try{s.compressedTexImage3D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function Re(){try{s.texSubImage2D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function vt(){try{s.texSubImage3D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function Ke(){try{s.compressedTexSubImage2D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function ot(){try{s.compressedTexSubImage3D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function Et(){try{s.texStorage2D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function St(){try{s.texStorage3D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function Ht(){try{s.texImage2D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function Fi(){try{s.texImage3D(...arguments)}catch(Me){console.error("THREE.WebGLState:",Me)}}function Dt(Me){Oe.equals(Me)===!1&&(s.scissor(Me.x,Me.y,Me.z,Me.w),Oe.copy(Me))}function Ot(Me){Ie.equals(Me)===!1&&(s.viewport(Me.x,Me.y,Me.z,Me.w),Ie.copy(Me))}function nn(Me,ri){let st=d.get(ri);st===void 0&&(st=new WeakMap,d.set(ri,st));let Ve=st.get(Me);Ve===void 0&&(Ve=s.getUniformBlockIndex(ri,Me.name),st.set(Me,Ve))}function xi(Me,ri){const Ve=d.get(ri).get(Me);a.get(ri)!==Ve&&(s.uniformBlockBinding(ri,Ve,Me.__bindingPointIndex),a.set(ri,Ve))}function Zi(){s.disable(s.BLEND),s.disable(s.CULL_FACE),s.disable(s.DEPTH_TEST),s.disable(s.POLYGON_OFFSET_FILL),s.disable(s.SCISSOR_TEST),s.disable(s.STENCIL_TEST),s.disable(s.SAMPLE_ALPHA_TO_COVERAGE),s.blendEquation(s.FUNC_ADD),s.blendFunc(s.ONE,s.ZERO),s.blendFuncSeparate(s.ONE,s.ZERO,s.ONE,s.ZERO),s.blendColor(0,0,0,0),s.colorMask(!0,!0,!0,!0),s.clearColor(0,0,0,0),s.depthMask(!0),s.depthFunc(s.LESS),r.setReversed(!1),s.clearDepth(1),s.stencilMask(4294967295),s.stencilFunc(s.ALWAYS,0,4294967295),s.stencilOp(s.KEEP,s.KEEP,s.KEEP),s.clearStencil(0),s.cullFace(s.BACK),s.frontFace(s.CCW),s.polygonOffset(0,0),s.activeTexture(s.TEXTURE0),s.bindFramebuffer(s.FRAMEBUFFER,null),s.bindFramebuffer(s.DRAW_FRAMEBUFFER,null),s.bindFramebuffer(s.READ_FRAMEBUFFER,null),s.useProgram(null),s.lineWidth(1),s.scissor(0,0,s.canvas.width,s.canvas.height),s.viewport(0,0,s.canvas.width,s.canvas.height),c={},le=null,Fe={},h={},u=new WeakMap,m=[],p=null,g=!1,f=null,b=null,U=null,S=null,Z=null,R=null,y=null,N=new ws(0,0,0),w=0,Q=!1,C=null,v=null,Y=null,J=null,k=null,Oe.set(0,0,s.canvas.width,s.canvas.height),Ie.set(0,0,s.canvas.width,s.canvas.height),o.reset(),r.reset(),l.reset()}return{buffers:{color:o,depth:r,stencil:l},enable:Se,disable:dt,bindFramebuffer:Yt,drawBuffers:Ye,useProgram:mt,setBlending:Ae,setMaterial:Yi,setFlipSided:ci,setCullFace:we,setLineWidth:si,setPolygonOffset:yn,setScissorTest:bi,activeTexture:pe,bindTexture:ie,unbindTexture:it,compressedTexImage2D:Ft,compressedTexImage3D:Pe,texImage2D:Ht,texImage3D:Fi,updateUBOMapping:nn,uniformBlockBinding:xi,texStorage2D:Et,texStorage3D:St,texSubImage2D:Re,texSubImage3D:vt,compressedTexSubImage2D:Ke,compressedTexSubImage3D:ot,scissor:Dt,viewport:Ot,reset:Zi}}function d3e(s,e,t,i,n,o,r){const l=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,a=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),d=new rs,c=new WeakMap;let h;const u=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function p(pe,ie){return m?new OffscreenCanvas(pe,ie):DJ("canvas")}function g(pe,ie,it){let Ft=1;const Pe=bi(pe);if((Pe.width>it||Pe.height>it)&&(Ft=it/Math.max(Pe.width,Pe.height)),Ft<1)if(typeof HTMLImageElement<"u"&&pe instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&pe instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&pe instanceof ImageBitmap||typeof VideoFrame<"u"&&pe instanceof VideoFrame){const Re=Math.floor(Ft*Pe.width),vt=Math.floor(Ft*Pe.height);h===void 0&&(h=p(Re,vt));const Ke=ie?p(Re,vt):h;return Ke.width=Re,Ke.height=vt,Ke.getContext("2d").drawImage(pe,0,0,Re,vt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+Pe.width+"x"+Pe.height+") to ("+Re+"x"+vt+")."),Ke}else return"data"in pe&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+Pe.width+"x"+Pe.height+")."),pe;return pe}function f(pe){return pe.generateMipmaps}function b(pe){s.generateMipmap(pe)}function U(pe){return pe.isWebGLCubeRenderTarget?s.TEXTURE_CUBE_MAP:pe.isWebGL3DRenderTarget?s.TEXTURE_3D:pe.isWebGLArrayRenderTarget||pe.isCompressedArrayTexture?s.TEXTURE_2D_ARRAY:s.TEXTURE_2D}function S(pe,ie,it,Ft,Pe=!1){if(pe!==null){if(s[pe]!==void 0)return s[pe];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+pe+"'")}let Re=ie;if(ie===s.RED&&(it===s.FLOAT&&(Re=s.R32F),it===s.HALF_FLOAT&&(Re=s.R16F),it===s.UNSIGNED_BYTE&&(Re=s.R8)),ie===s.RED_INTEGER&&(it===s.UNSIGNED_BYTE&&(Re=s.R8UI),it===s.UNSIGNED_SHORT&&(Re=s.R16UI),it===s.UNSIGNED_INT&&(Re=s.R32UI),it===s.BYTE&&(Re=s.R8I),it===s.SHORT&&(Re=s.R16I),it===s.INT&&(Re=s.R32I)),ie===s.RG&&(it===s.FLOAT&&(Re=s.RG32F),it===s.HALF_FLOAT&&(Re=s.RG16F),it===s.UNSIGNED_BYTE&&(Re=s.RG8)),ie===s.RG_INTEGER&&(it===s.UNSIGNED_BYTE&&(Re=s.RG8UI),it===s.UNSIGNED_SHORT&&(Re=s.RG16UI),it===s.UNSIGNED_INT&&(Re=s.RG32UI),it===s.BYTE&&(Re=s.RG8I),it===s.SHORT&&(Re=s.RG16I),it===s.INT&&(Re=s.RG32I)),ie===s.RGB_INTEGER&&(it===s.UNSIGNED_BYTE&&(Re=s.RGB8UI),it===s.UNSIGNED_SHORT&&(Re=s.RGB16UI),it===s.UNSIGNED_INT&&(Re=s.RGB32UI),it===s.BYTE&&(Re=s.RGB8I),it===s.SHORT&&(Re=s.RGB16I),it===s.INT&&(Re=s.RGB32I)),ie===s.RGBA_INTEGER&&(it===s.UNSIGNED_BYTE&&(Re=s.RGBA8UI),it===s.UNSIGNED_SHORT&&(Re=s.RGBA16UI),it===s.UNSIGNED_INT&&(Re=s.RGBA32UI),it===s.BYTE&&(Re=s.RGBA8I),it===s.SHORT&&(Re=s.RGBA16I),it===s.INT&&(Re=s.RGBA32I)),ie===s.RGB&&it===s.UNSIGNED_INT_5_9_9_9_REV&&(Re=s.RGB9_E5),ie===s.RGBA){const vt=Pe?IJ:uo.getTransfer(Ft);it===s.FLOAT&&(Re=s.RGBA32F),it===s.HALF_FLOAT&&(Re=s.RGBA16F),it===s.UNSIGNED_BYTE&&(Re=vt===Xo?s.SRGB8_ALPHA8:s.RGBA8),it===s.UNSIGNED_SHORT_4_4_4_4&&(Re=s.RGBA4),it===s.UNSIGNED_SHORT_5_5_5_1&&(Re=s.RGB5_A1)}return(Re===s.R16F||Re===s.R32F||Re===s.RG16F||Re===s.RG32F||Re===s.RGBA16F||Re===s.RGBA32F)&&e.get("EXT_color_buffer_float"),Re}function Z(pe,ie){let it;return pe?ie===null||ie===mN||ie===by?it=s.DEPTH24_STENCIL8:ie===Sf?it=s.DEPTH32F_STENCIL8:ie===LB&&(it=s.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):ie===null||ie===mN||ie===by?it=s.DEPTH_COMPONENT24:ie===Sf?it=s.DEPTH_COMPONENT32F:ie===LB&&(it=s.DEPTH_COMPONENT16),it}function R(pe,ie){return f(pe)===!0||pe.isFramebufferTexture&&pe.minFilter!==qm&&pe.minFilter!==Qg?Math.log2(Math.max(ie.width,ie.height))+1:pe.mipmaps!==void 0&&pe.mipmaps.length>0?pe.mipmaps.length:pe.isCompressedTexture&&Array.isArray(pe.image)?ie.mipmaps.length:1}function y(pe){const ie=pe.target;ie.removeEventListener("dispose",y),w(ie),ie.isVideoTexture&&c.delete(ie)}function N(pe){const ie=pe.target;ie.removeEventListener("dispose",N),C(ie)}function w(pe){const ie=i.get(pe);if(ie.__webglInit===void 0)return;const it=pe.source,Ft=u.get(it);if(Ft){const Pe=Ft[ie.__cacheKey];Pe.usedTimes--,Pe.usedTimes===0&&Q(pe),Object.keys(Ft).length===0&&u.delete(it)}i.remove(pe)}function Q(pe){const ie=i.get(pe);s.deleteTexture(ie.__webglTexture);const it=pe.source,Ft=u.get(it);delete Ft[ie.__cacheKey],r.memory.textures--}function C(pe){const ie=i.get(pe);if(pe.depthTexture&&(pe.depthTexture.dispose(),i.remove(pe.depthTexture)),pe.isWebGLCubeRenderTarget)for(let Ft=0;Ft<6;Ft++){if(Array.isArray(ie.__webglFramebuffer[Ft]))for(let Pe=0;Pe<ie.__webglFramebuffer[Ft].length;Pe++)s.deleteFramebuffer(ie.__webglFramebuffer[Ft][Pe]);else s.deleteFramebuffer(ie.__webglFramebuffer[Ft]);ie.__webglDepthbuffer&&s.deleteRenderbuffer(ie.__webglDepthbuffer[Ft])}else{if(Array.isArray(ie.__webglFramebuffer))for(let Ft=0;Ft<ie.__webglFramebuffer.length;Ft++)s.deleteFramebuffer(ie.__webglFramebuffer[Ft]);else s.deleteFramebuffer(ie.__webglFramebuffer);if(ie.__webglDepthbuffer&&s.deleteRenderbuffer(ie.__webglDepthbuffer),ie.__webglMultisampledFramebuffer&&s.deleteFramebuffer(ie.__webglMultisampledFramebuffer),ie.__webglColorRenderbuffer)for(let Ft=0;Ft<ie.__webglColorRenderbuffer.length;Ft++)ie.__webglColorRenderbuffer[Ft]&&s.deleteRenderbuffer(ie.__webglColorRenderbuffer[Ft]);ie.__webglDepthRenderbuffer&&s.deleteRenderbuffer(ie.__webglDepthRenderbuffer)}const it=pe.textures;for(let Ft=0,Pe=it.length;Ft<Pe;Ft++){const Re=i.get(it[Ft]);Re.__webglTexture&&(s.deleteTexture(Re.__webglTexture),r.memory.textures--),i.remove(it[Ft])}i.remove(pe)}let v=0;function Y(){v=0}function J(){const pe=v;return pe>=n.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+pe+" texture units while this GPU supports only "+n.maxTextures),v+=1,pe}function k(pe){const ie=[];return ie.push(pe.wrapS),ie.push(pe.wrapT),ie.push(pe.wrapR||0),ie.push(pe.magFilter),ie.push(pe.minFilter),ie.push(pe.anisotropy),ie.push(pe.internalFormat),ie.push(pe.format),ie.push(pe.type),ie.push(pe.generateMipmaps),ie.push(pe.premultiplyAlpha),ie.push(pe.flipY),ie.push(pe.unpackAlignment),ie.push(pe.colorSpace),ie.join()}function E(pe,ie){const it=i.get(pe);if(pe.isVideoTexture&&si(pe),pe.isRenderTargetTexture===!1&&pe.version>0&&it.__version!==pe.version){const Ft=pe.image;if(Ft===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Ft.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Ie(it,pe,ie);return}}t.bindTexture(s.TEXTURE_2D,it.__webglTexture,s.TEXTURE0+ie)}function K(pe,ie){const it=i.get(pe);if(pe.version>0&&it.__version!==pe.version){Ie(it,pe,ie);return}t.bindTexture(s.TEXTURE_2D_ARRAY,it.__webglTexture,s.TEXTURE0+ie)}function de(pe,ie){const it=i.get(pe);if(pe.version>0&&it.__version!==pe.version){Ie(it,pe,ie);return}t.bindTexture(s.TEXTURE_3D,it.__webglTexture,s.TEXTURE0+ie)}function ee(pe,ie){const it=i.get(pe);if(pe.version>0&&it.__version!==pe.version){at(it,pe,ie);return}t.bindTexture(s.TEXTURE_CUBE_MAP,it.__webglTexture,s.TEXTURE0+ie)}const le={[UK]:s.REPEAT,[fS]:s.CLAMP_TO_EDGE,[FK]:s.MIRRORED_REPEAT},Fe={[qm]:s.NEAREST,[VJe]:s.NEAREST_MIPMAP_NEAREST,[ux]:s.NEAREST_MIPMAP_LINEAR,[Qg]:s.LINEAR,[qO]:s.LINEAR_MIPMAP_NEAREST,[bS]:s.LINEAR_MIPMAP_LINEAR},Ue={[MJe]:s.NEVER,[vJe]:s.ALWAYS,[wJe]:s.LESS,[wAe]:s.LEQUAL,[TJe]:s.EQUAL,[LJe]:s.GEQUAL,[CJe]:s.GREATER,[BJe]:s.NOTEQUAL};function ze(pe,ie){if(ie.type===Sf&&e.has("OES_texture_float_linear")===!1&&(ie.magFilter===Qg||ie.magFilter===qO||ie.magFilter===ux||ie.magFilter===bS||ie.minFilter===Qg||ie.minFilter===qO||ie.minFilter===ux||ie.minFilter===bS)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),s.texParameteri(pe,s.TEXTURE_WRAP_S,le[ie.wrapS]),s.texParameteri(pe,s.TEXTURE_WRAP_T,le[ie.wrapT]),(pe===s.TEXTURE_3D||pe===s.TEXTURE_2D_ARRAY)&&s.texParameteri(pe,s.TEXTURE_WRAP_R,le[ie.wrapR]),s.texParameteri(pe,s.TEXTURE_MAG_FILTER,Fe[ie.magFilter]),s.texParameteri(pe,s.TEXTURE_MIN_FILTER,Fe[ie.minFilter]),ie.compareFunction&&(s.texParameteri(pe,s.TEXTURE_COMPARE_MODE,s.COMPARE_REF_TO_TEXTURE),s.texParameteri(pe,s.TEXTURE_COMPARE_FUNC,Ue[ie.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(ie.magFilter===qm||ie.minFilter!==ux&&ie.minFilter!==bS||ie.type===Sf&&e.has("OES_texture_float_linear")===!1)return;if(ie.anisotropy>1||i.get(ie).__currentAnisotropy){const it=e.get("EXT_texture_filter_anisotropic");s.texParameterf(pe,it.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(ie.anisotropy,n.getMaxAnisotropy())),i.get(ie).__currentAnisotropy=ie.anisotropy}}}function Oe(pe,ie){let it=!1;pe.__webglInit===void 0&&(pe.__webglInit=!0,ie.addEventListener("dispose",y));const Ft=ie.source;let Pe=u.get(Ft);Pe===void 0&&(Pe={},u.set(Ft,Pe));const Re=k(ie);if(Re!==pe.__cacheKey){Pe[Re]===void 0&&(Pe[Re]={texture:s.createTexture(),usedTimes:0},r.memory.textures++,it=!0),Pe[Re].usedTimes++;const vt=Pe[pe.__cacheKey];vt!==void 0&&(Pe[pe.__cacheKey].usedTimes--,vt.usedTimes===0&&Q(ie)),pe.__cacheKey=Re,pe.__webglTexture=Pe[Re].texture}return it}function Ie(pe,ie,it){let Ft=s.TEXTURE_2D;(ie.isDataArrayTexture||ie.isCompressedArrayTexture)&&(Ft=s.TEXTURE_2D_ARRAY),ie.isData3DTexture&&(Ft=s.TEXTURE_3D);const Pe=Oe(pe,ie),Re=ie.source;t.bindTexture(Ft,pe.__webglTexture,s.TEXTURE0+it);const vt=i.get(Re);if(Re.version!==vt.__version||Pe===!0){t.activeTexture(s.TEXTURE0+it);const Ke=uo.getPrimaries(uo.workingColorSpace),ot=ie.colorSpace===AU?null:uo.getPrimaries(ie.colorSpace),Et=ie.colorSpace===AU||Ke===ot?s.NONE:s.BROWSER_DEFAULT_WEBGL;s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,ie.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ie.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,ie.unpackAlignment),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,Et);let St=g(ie.image,!1,n.maxTextureSize);St=yn(ie,St);const Ht=o.convert(ie.format,ie.colorSpace),Fi=o.convert(ie.type);let Dt=S(ie.internalFormat,Ht,Fi,ie.colorSpace,ie.isVideoTexture);ze(Ft,ie);let Ot;const nn=ie.mipmaps,xi=ie.isVideoTexture!==!0,Zi=vt.__version===void 0||Pe===!0,Me=Re.dataReady,ri=R(ie,St);if(ie.isDepthTexture)Dt=Z(ie.format===Uy,ie.type),Zi&&(xi?t.texStorage2D(s.TEXTURE_2D,1,Dt,St.width,St.height):t.texImage2D(s.TEXTURE_2D,0,Dt,St.width,St.height,0,Ht,Fi,null));else if(ie.isDataTexture)if(nn.length>0){xi&&Zi&&t.texStorage2D(s.TEXTURE_2D,ri,Dt,nn[0].width,nn[0].height);for(let st=0,Ve=nn.length;st<Ve;st++)Ot=nn[st],xi?Me&&t.texSubImage2D(s.TEXTURE_2D,st,0,0,Ot.width,Ot.height,Ht,Fi,Ot.data):t.texImage2D(s.TEXTURE_2D,st,Dt,Ot.width,Ot.height,0,Ht,Fi,Ot.data);ie.generateMipmaps=!1}else xi?(Zi&&t.texStorage2D(s.TEXTURE_2D,ri,Dt,St.width,St.height),Me&&t.texSubImage2D(s.TEXTURE_2D,0,0,0,St.width,St.height,Ht,Fi,St.data)):t.texImage2D(s.TEXTURE_2D,0,Dt,St.width,St.height,0,Ht,Fi,St.data);else if(ie.isCompressedTexture)if(ie.isCompressedArrayTexture){xi&&Zi&&t.texStorage3D(s.TEXTURE_2D_ARRAY,ri,Dt,nn[0].width,nn[0].height,St.depth);for(let st=0,Ve=nn.length;st<Ve;st++)if(Ot=nn[st],ie.format!==jm)if(Ht!==null)if(xi){if(Me)if(ie.layerUpdates.size>0){const Nt=ace(Ot.width,Ot.height,ie.format,ie.type);for(const Ui of ie.layerUpdates){const Ci=Ot.data.subarray(Ui*Nt/Ot.data.BYTES_PER_ELEMENT,(Ui+1)*Nt/Ot.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,st,0,0,Ui,Ot.width,Ot.height,1,Ht,Ci)}ie.clearLayerUpdates()}else t.compressedTexSubImage3D(s.TEXTURE_2D_ARRAY,st,0,0,0,Ot.width,Ot.height,St.depth,Ht,Ot.data)}else t.compressedTexImage3D(s.TEXTURE_2D_ARRAY,st,Dt,Ot.width,Ot.height,St.depth,0,Ot.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else xi?Me&&t.texSubImage3D(s.TEXTURE_2D_ARRAY,st,0,0,0,Ot.width,Ot.height,St.depth,Ht,Fi,Ot.data):t.texImage3D(s.TEXTURE_2D_ARRAY,st,Dt,Ot.width,Ot.height,St.depth,0,Ht,Fi,Ot.data)}else{xi&&Zi&&t.texStorage2D(s.TEXTURE_2D,ri,Dt,nn[0].width,nn[0].height);for(let st=0,Ve=nn.length;st<Ve;st++)Ot=nn[st],ie.format!==jm?Ht!==null?xi?Me&&t.compressedTexSubImage2D(s.TEXTURE_2D,st,0,0,Ot.width,Ot.height,Ht,Ot.data):t.compressedTexImage2D(s.TEXTURE_2D,st,Dt,Ot.width,Ot.height,0,Ot.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):xi?Me&&t.texSubImage2D(s.TEXTURE_2D,st,0,0,Ot.width,Ot.height,Ht,Fi,Ot.data):t.texImage2D(s.TEXTURE_2D,st,Dt,Ot.width,Ot.height,0,Ht,Fi,Ot.data)}else if(ie.isDataArrayTexture)if(xi){if(Zi&&t.texStorage3D(s.TEXTURE_2D_ARRAY,ri,Dt,St.width,St.height,St.depth),Me)if(ie.layerUpdates.size>0){const st=ace(St.width,St.height,ie.format,ie.type);for(const Ve of ie.layerUpdates){const Nt=St.data.subarray(Ve*st/St.data.BYTES_PER_ELEMENT,(Ve+1)*st/St.data.BYTES_PER_ELEMENT);t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,Ve,St.width,St.height,1,Ht,Fi,Nt)}ie.clearLayerUpdates()}else t.texSubImage3D(s.TEXTURE_2D_ARRAY,0,0,0,0,St.width,St.height,St.depth,Ht,Fi,St.data)}else t.texImage3D(s.TEXTURE_2D_ARRAY,0,Dt,St.width,St.height,St.depth,0,Ht,Fi,St.data);else if(ie.isData3DTexture)xi?(Zi&&t.texStorage3D(s.TEXTURE_3D,ri,Dt,St.width,St.height,St.depth),Me&&t.texSubImage3D(s.TEXTURE_3D,0,0,0,0,St.width,St.height,St.depth,Ht,Fi,St.data)):t.texImage3D(s.TEXTURE_3D,0,Dt,St.width,St.height,St.depth,0,Ht,Fi,St.data);else if(ie.isFramebufferTexture){if(Zi)if(xi)t.texStorage2D(s.TEXTURE_2D,ri,Dt,St.width,St.height);else{let st=St.width,Ve=St.height;for(let Nt=0;Nt<ri;Nt++)t.texImage2D(s.TEXTURE_2D,Nt,Dt,st,Ve,0,Ht,Fi,null),st>>=1,Ve>>=1}}else if(nn.length>0){if(xi&&Zi){const st=bi(nn[0]);t.texStorage2D(s.TEXTURE_2D,ri,Dt,st.width,st.height)}for(let st=0,Ve=nn.length;st<Ve;st++)Ot=nn[st],xi?Me&&t.texSubImage2D(s.TEXTURE_2D,st,0,0,Ht,Fi,Ot):t.texImage2D(s.TEXTURE_2D,st,Dt,Ht,Fi,Ot);ie.generateMipmaps=!1}else if(xi){if(Zi){const st=bi(St);t.texStorage2D(s.TEXTURE_2D,ri,Dt,st.width,st.height)}Me&&t.texSubImage2D(s.TEXTURE_2D,0,0,0,Ht,Fi,St)}else t.texImage2D(s.TEXTURE_2D,0,Dt,Ht,Fi,St);f(ie)&&b(Ft),vt.__version=Re.version,ie.onUpdate&&ie.onUpdate(ie)}pe.__version=ie.version}function at(pe,ie,it){if(ie.image.length!==6)return;const Ft=Oe(pe,ie),Pe=ie.source;t.bindTexture(s.TEXTURE_CUBE_MAP,pe.__webglTexture,s.TEXTURE0+it);const Re=i.get(Pe);if(Pe.version!==Re.__version||Ft===!0){t.activeTexture(s.TEXTURE0+it);const vt=uo.getPrimaries(uo.workingColorSpace),Ke=ie.colorSpace===AU?null:uo.getPrimaries(ie.colorSpace),ot=ie.colorSpace===AU||vt===Ke?s.NONE:s.BROWSER_DEFAULT_WEBGL;s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,ie.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ie.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,ie.unpackAlignment),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,ot);const Et=ie.isCompressedTexture||ie.image[0].isCompressedTexture,St=ie.image[0]&&ie.image[0].isDataTexture,Ht=[];for(let Ve=0;Ve<6;Ve++)!Et&&!St?Ht[Ve]=g(ie.image[Ve],!0,n.maxCubemapSize):Ht[Ve]=St?ie.image[Ve].image:ie.image[Ve],Ht[Ve]=yn(ie,Ht[Ve]);const Fi=Ht[0],Dt=o.convert(ie.format,ie.colorSpace),Ot=o.convert(ie.type),nn=S(ie.internalFormat,Dt,Ot,ie.colorSpace),xi=ie.isVideoTexture!==!0,Zi=Re.__version===void 0||Ft===!0,Me=Pe.dataReady;let ri=R(ie,Fi);ze(s.TEXTURE_CUBE_MAP,ie);let st;if(Et){xi&&Zi&&t.texStorage2D(s.TEXTURE_CUBE_MAP,ri,nn,Fi.width,Fi.height);for(let Ve=0;Ve<6;Ve++){st=Ht[Ve].mipmaps;for(let Nt=0;Nt<st.length;Nt++){const Ui=st[Nt];ie.format!==jm?Dt!==null?xi?Me&&t.compressedTexSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt,0,0,Ui.width,Ui.height,Dt,Ui.data):t.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt,nn,Ui.width,Ui.height,0,Ui.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):xi?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt,0,0,Ui.width,Ui.height,Dt,Ot,Ui.data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt,nn,Ui.width,Ui.height,0,Dt,Ot,Ui.data)}}}else{if(st=ie.mipmaps,xi&&Zi){st.length>0&&ri++;const Ve=bi(Ht[0]);t.texStorage2D(s.TEXTURE_CUBE_MAP,ri,nn,Ve.width,Ve.height)}for(let Ve=0;Ve<6;Ve++)if(St){xi?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,0,0,Ht[Ve].width,Ht[Ve].height,Dt,Ot,Ht[Ve].data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,nn,Ht[Ve].width,Ht[Ve].height,0,Dt,Ot,Ht[Ve].data);for(let Nt=0;Nt<st.length;Nt++){const Ci=st[Nt].image[Ve].image;xi?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt+1,0,0,Ci.width,Ci.height,Dt,Ot,Ci.data):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt+1,nn,Ci.width,Ci.height,0,Dt,Ot,Ci.data)}}else{xi?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,0,0,Dt,Ot,Ht[Ve]):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,nn,Dt,Ot,Ht[Ve]);for(let Nt=0;Nt<st.length;Nt++){const Ui=st[Nt];xi?Me&&t.texSubImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt+1,0,0,Dt,Ot,Ui.image[Ve]):t.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,Nt+1,nn,Dt,Ot,Ui.image[Ve])}}}f(ie)&&b(s.TEXTURE_CUBE_MAP),Re.__version=Pe.version,ie.onUpdate&&ie.onUpdate(ie)}pe.__version=ie.version}function je(pe,ie,it,Ft,Pe,Re){const vt=o.convert(it.format,it.colorSpace),Ke=o.convert(it.type),ot=S(it.internalFormat,vt,Ke,it.colorSpace),Et=i.get(ie),St=i.get(it);if(St.__renderTarget=ie,!Et.__hasExternalTextures){const Ht=Math.max(1,ie.width>>Re),Fi=Math.max(1,ie.height>>Re);Pe===s.TEXTURE_3D||Pe===s.TEXTURE_2D_ARRAY?t.texImage3D(Pe,Re,ot,Ht,Fi,ie.depth,0,vt,Ke,null):t.texImage2D(Pe,Re,ot,Ht,Fi,0,vt,Ke,null)}t.bindFramebuffer(s.FRAMEBUFFER,pe),we(ie)?l.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,Ft,Pe,St.__webglTexture,0,ci(ie)):(Pe===s.TEXTURE_2D||Pe>=s.TEXTURE_CUBE_MAP_POSITIVE_X&&Pe<=s.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&s.framebufferTexture2D(s.FRAMEBUFFER,Ft,Pe,St.__webglTexture,Re),t.bindFramebuffer(s.FRAMEBUFFER,null)}function Se(pe,ie,it){if(s.bindRenderbuffer(s.RENDERBUFFER,pe),ie.depthBuffer){const Ft=ie.depthTexture,Pe=Ft&&Ft.isDepthTexture?Ft.type:null,Re=Z(ie.stencilBuffer,Pe),vt=ie.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,Ke=ci(ie);we(ie)?l.renderbufferStorageMultisampleEXT(s.RENDERBUFFER,Ke,Re,ie.width,ie.height):it?s.renderbufferStorageMultisample(s.RENDERBUFFER,Ke,Re,ie.width,ie.height):s.renderbufferStorage(s.RENDERBUFFER,Re,ie.width,ie.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,vt,s.RENDERBUFFER,pe)}else{const Ft=ie.textures;for(let Pe=0;Pe<Ft.length;Pe++){const Re=Ft[Pe],vt=o.convert(Re.format,Re.colorSpace),Ke=o.convert(Re.type),ot=S(Re.internalFormat,vt,Ke,Re.colorSpace),Et=ci(ie);it&&we(ie)===!1?s.renderbufferStorageMultisample(s.RENDERBUFFER,Et,ot,ie.width,ie.height):we(ie)?l.renderbufferStorageMultisampleEXT(s.RENDERBUFFER,Et,ot,ie.width,ie.height):s.renderbufferStorage(s.RENDERBUFFER,ot,ie.width,ie.height)}}s.bindRenderbuffer(s.RENDERBUFFER,null)}function dt(pe,ie){if(ie&&ie.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(s.FRAMEBUFFER,pe),!(ie.depthTexture&&ie.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const Ft=i.get(ie.depthTexture);Ft.__renderTarget=ie,(!Ft.__webglTexture||ie.depthTexture.image.width!==ie.width||ie.depthTexture.image.height!==ie.height)&&(ie.depthTexture.image.width=ie.width,ie.depthTexture.image.height=ie.height,ie.depthTexture.needsUpdate=!0),E(ie.depthTexture,0);const Pe=Ft.__webglTexture,Re=ci(ie);if(ie.depthTexture.format===V1)we(ie)?l.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,Pe,0,Re):s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,Pe,0);else if(ie.depthTexture.format===Uy)we(ie)?l.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.TEXTURE_2D,Pe,0,Re):s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.TEXTURE_2D,Pe,0);else throw new Error("Unknown depthTexture format")}function Yt(pe){const ie=i.get(pe),it=pe.isWebGLCubeRenderTarget===!0;if(ie.__boundDepthTexture!==pe.depthTexture){const Ft=pe.depthTexture;if(ie.__depthDisposeCallback&&ie.__depthDisposeCallback(),Ft){const Pe=()=>{delete ie.__boundDepthTexture,delete ie.__depthDisposeCallback,Ft.removeEventListener("dispose",Pe)};Ft.addEventListener("dispose",Pe),ie.__depthDisposeCallback=Pe}ie.__boundDepthTexture=Ft}if(pe.depthTexture&&!ie.__autoAllocateDepthBuffer){if(it)throw new Error("target.depthTexture not supported in Cube render targets");dt(ie.__webglFramebuffer,pe)}else if(it){ie.__webglDepthbuffer=[];for(let Ft=0;Ft<6;Ft++)if(t.bindFramebuffer(s.FRAMEBUFFER,ie.__webglFramebuffer[Ft]),ie.__webglDepthbuffer[Ft]===void 0)ie.__webglDepthbuffer[Ft]=s.createRenderbuffer(),Se(ie.__webglDepthbuffer[Ft],pe,!1);else{const Pe=pe.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,Re=ie.__webglDepthbuffer[Ft];s.bindRenderbuffer(s.RENDERBUFFER,Re),s.framebufferRenderbuffer(s.FRAMEBUFFER,Pe,s.RENDERBUFFER,Re)}}else if(t.bindFramebuffer(s.FRAMEBUFFER,ie.__webglFramebuffer),ie.__webglDepthbuffer===void 0)ie.__webglDepthbuffer=s.createRenderbuffer(),Se(ie.__webglDepthbuffer,pe,!1);else{const Ft=pe.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,Pe=ie.__webglDepthbuffer;s.bindRenderbuffer(s.RENDERBUFFER,Pe),s.framebufferRenderbuffer(s.FRAMEBUFFER,Ft,s.RENDERBUFFER,Pe)}t.bindFramebuffer(s.FRAMEBUFFER,null)}function Ye(pe,ie,it){const Ft=i.get(pe);ie!==void 0&&je(Ft.__webglFramebuffer,pe,pe.texture,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,0),it!==void 0&&Yt(pe)}function mt(pe){const ie=pe.texture,it=i.get(pe),Ft=i.get(ie);pe.addEventListener("dispose",N);const Pe=pe.textures,Re=pe.isWebGLCubeRenderTarget===!0,vt=Pe.length>1;if(vt||(Ft.__webglTexture===void 0&&(Ft.__webglTexture=s.createTexture()),Ft.__version=ie.version,r.memory.textures++),Re){it.__webglFramebuffer=[];for(let Ke=0;Ke<6;Ke++)if(ie.mipmaps&&ie.mipmaps.length>0){it.__webglFramebuffer[Ke]=[];for(let ot=0;ot<ie.mipmaps.length;ot++)it.__webglFramebuffer[Ke][ot]=s.createFramebuffer()}else it.__webglFramebuffer[Ke]=s.createFramebuffer()}else{if(ie.mipmaps&&ie.mipmaps.length>0){it.__webglFramebuffer=[];for(let Ke=0;Ke<ie.mipmaps.length;Ke++)it.__webglFramebuffer[Ke]=s.createFramebuffer()}else it.__webglFramebuffer=s.createFramebuffer();if(vt)for(let Ke=0,ot=Pe.length;Ke<ot;Ke++){const Et=i.get(Pe[Ke]);Et.__webglTexture===void 0&&(Et.__webglTexture=s.createTexture(),r.memory.textures++)}if(pe.samples>0&&we(pe)===!1){it.__webglMultisampledFramebuffer=s.createFramebuffer(),it.__webglColorRenderbuffer=[],t.bindFramebuffer(s.FRAMEBUFFER,it.__webglMultisampledFramebuffer);for(let Ke=0;Ke<Pe.length;Ke++){const ot=Pe[Ke];it.__webglColorRenderbuffer[Ke]=s.createRenderbuffer(),s.bindRenderbuffer(s.RENDERBUFFER,it.__webglColorRenderbuffer[Ke]);const Et=o.convert(ot.format,ot.colorSpace),St=o.convert(ot.type),Ht=S(ot.internalFormat,Et,St,ot.colorSpace,pe.isXRRenderTarget===!0),Fi=ci(pe);s.renderbufferStorageMultisample(s.RENDERBUFFER,Fi,Ht,pe.width,pe.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+Ke,s.RENDERBUFFER,it.__webglColorRenderbuffer[Ke])}s.bindRenderbuffer(s.RENDERBUFFER,null),pe.depthBuffer&&(it.__webglDepthRenderbuffer=s.createRenderbuffer(),Se(it.__webglDepthRenderbuffer,pe,!0)),t.bindFramebuffer(s.FRAMEBUFFER,null)}}if(Re){t.bindTexture(s.TEXTURE_CUBE_MAP,Ft.__webglTexture),ze(s.TEXTURE_CUBE_MAP,ie);for(let Ke=0;Ke<6;Ke++)if(ie.mipmaps&&ie.mipmaps.length>0)for(let ot=0;ot<ie.mipmaps.length;ot++)je(it.__webglFramebuffer[Ke][ot],pe,ie,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+Ke,ot);else je(it.__webglFramebuffer[Ke],pe,ie,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+Ke,0);f(ie)&&b(s.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(vt){for(let Ke=0,ot=Pe.length;Ke<ot;Ke++){const Et=Pe[Ke],St=i.get(Et);t.bindTexture(s.TEXTURE_2D,St.__webglTexture),ze(s.TEXTURE_2D,Et),je(it.__webglFramebuffer,pe,Et,s.COLOR_ATTACHMENT0+Ke,s.TEXTURE_2D,0),f(Et)&&b(s.TEXTURE_2D)}t.unbindTexture()}else{let Ke=s.TEXTURE_2D;if((pe.isWebGL3DRenderTarget||pe.isWebGLArrayRenderTarget)&&(Ke=pe.isWebGL3DRenderTarget?s.TEXTURE_3D:s.TEXTURE_2D_ARRAY),t.bindTexture(Ke,Ft.__webglTexture),ze(Ke,ie),ie.mipmaps&&ie.mipmaps.length>0)for(let ot=0;ot<ie.mipmaps.length;ot++)je(it.__webglFramebuffer[ot],pe,ie,s.COLOR_ATTACHMENT0,Ke,ot);else je(it.__webglFramebuffer,pe,ie,s.COLOR_ATTACHMENT0,Ke,0);f(ie)&&b(Ke),t.unbindTexture()}pe.depthBuffer&&Yt(pe)}function Wt(pe){const ie=pe.textures;for(let it=0,Ft=ie.length;it<Ft;it++){const Pe=ie[it];if(f(Pe)){const Re=U(pe),vt=i.get(Pe).__webglTexture;t.bindTexture(Re,vt),b(Re),t.unbindTexture()}}}const Jt=[],Ae=[];function Yi(pe){if(pe.samples>0){if(we(pe)===!1){const ie=pe.textures,it=pe.width,Ft=pe.height;let Pe=s.COLOR_BUFFER_BIT;const Re=pe.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT,vt=i.get(pe),Ke=ie.length>1;if(Ke)for(let ot=0;ot<ie.length;ot++)t.bindFramebuffer(s.FRAMEBUFFER,vt.__webglMultisampledFramebuffer),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+ot,s.RENDERBUFFER,null),t.bindFramebuffer(s.FRAMEBUFFER,vt.__webglFramebuffer),s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0+ot,s.TEXTURE_2D,null,0);t.bindFramebuffer(s.READ_FRAMEBUFFER,vt.__webglMultisampledFramebuffer),t.bindFramebuffer(s.DRAW_FRAMEBUFFER,vt.__webglFramebuffer);for(let ot=0;ot<ie.length;ot++){if(pe.resolveDepthBuffer&&(pe.depthBuffer&&(Pe|=s.DEPTH_BUFFER_BIT),pe.stencilBuffer&&pe.resolveStencilBuffer&&(Pe|=s.STENCIL_BUFFER_BIT)),Ke){s.framebufferRenderbuffer(s.READ_FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.RENDERBUFFER,vt.__webglColorRenderbuffer[ot]);const Et=i.get(ie[ot]).__webglTexture;s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,Et,0)}s.blitFramebuffer(0,0,it,Ft,0,0,it,Ft,Pe,s.NEAREST),a===!0&&(Jt.length=0,Ae.length=0,Jt.push(s.COLOR_ATTACHMENT0+ot),pe.depthBuffer&&pe.resolveDepthBuffer===!1&&(Jt.push(Re),Ae.push(Re),s.invalidateFramebuffer(s.DRAW_FRAMEBUFFER,Ae)),s.invalidateFramebuffer(s.READ_FRAMEBUFFER,Jt))}if(t.bindFramebuffer(s.READ_FRAMEBUFFER,null),t.bindFramebuffer(s.DRAW_FRAMEBUFFER,null),Ke)for(let ot=0;ot<ie.length;ot++){t.bindFramebuffer(s.FRAMEBUFFER,vt.__webglMultisampledFramebuffer),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+ot,s.RENDERBUFFER,vt.__webglColorRenderbuffer[ot]);const Et=i.get(ie[ot]).__webglTexture;t.bindFramebuffer(s.FRAMEBUFFER,vt.__webglFramebuffer),s.framebufferTexture2D(s.DRAW_FRAMEBUFFER,s.COLOR_ATTACHMENT0+ot,s.TEXTURE_2D,Et,0)}t.bindFramebuffer(s.DRAW_FRAMEBUFFER,vt.__webglMultisampledFramebuffer)}else if(pe.depthBuffer&&pe.resolveDepthBuffer===!1&&a){const ie=pe.stencilBuffer?s.DEPTH_STENCIL_ATTACHMENT:s.DEPTH_ATTACHMENT;s.invalidateFramebuffer(s.DRAW_FRAMEBUFFER,[ie])}}}function ci(pe){return Math.min(n.maxSamples,pe.samples)}function we(pe){const ie=i.get(pe);return pe.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&ie.__useRenderToTexture!==!1}function si(pe){const ie=r.render.frame;c.get(pe)!==ie&&(c.set(pe,ie),pe.update())}function yn(pe,ie){const it=pe.colorSpace,Ft=pe.format,Pe=pe.type;return pe.isCompressedTexture===!0||pe.isVideoTexture===!0||it!==Fy&&it!==AU&&(uo.getTransfer(it)===Xo?(Ft!==jm||Pe!==Yf)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",it)),ie}function bi(pe){return typeof HTMLImageElement<"u"&&pe instanceof HTMLImageElement?(d.width=pe.naturalWidth||pe.width,d.height=pe.naturalHeight||pe.height):typeof VideoFrame<"u"&&pe instanceof VideoFrame?(d.width=pe.displayWidth,d.height=pe.displayHeight):(d.width=pe.width,d.height=pe.height),d}this.allocateTextureUnit=J,this.resetTextureUnits=Y,this.setTexture2D=E,this.setTexture2DArray=K,this.setTexture3D=de,this.setTextureCube=ee,this.rebindTextures=Ye,this.setupRenderTarget=mt,this.updateRenderTargetMipmap=Wt,this.updateMultisampleRenderTarget=Yi,this.setupDepthRenderbuffer=Yt,this.setupFrameBufferTexture=je,this.useMultisampledRTT=we}function c3e(s,e){function t(i,n=AU){let o;const r=uo.getTransfer(n);if(i===Yf)return s.UNSIGNED_BYTE;if(i===$ne)return s.UNSIGNED_SHORT_4_4_4_4;if(i===ese)return s.UNSIGNED_SHORT_5_5_5_1;if(i===ZAe)return s.UNSIGNED_INT_5_9_9_9_REV;if(i===FAe)return s.BYTE;if(i===AAe)return s.SHORT;if(i===LB)return s.UNSIGNED_SHORT;if(i===qne)return s.INT;if(i===mN)return s.UNSIGNED_INT;if(i===Sf)return s.FLOAT;if(i===Iv)return s.HALF_FLOAT;if(i===SAe)return s.ALPHA;if(i===NAe)return s.RGB;if(i===jm)return s.RGBA;if(i===RAe)return s.LUMINANCE;if(i===VAe)return s.LUMINANCE_ALPHA;if(i===V1)return s.DEPTH_COMPONENT;if(i===Uy)return s.DEPTH_STENCIL;if(i===WAe)return s.RED;if(i===tse)return s.RED_INTEGER;if(i===yAe)return s.RG;if(i===ise)return s.RG_INTEGER;if(i===nse)return s.RGBA_INTEGER;if(i===tD||i===iD||i===nD||i===sD)if(r===Xo)if(o=e.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(i===tD)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===iD)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===nD)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===sD)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=e.get("WEBGL_compressed_texture_s3tc"),o!==null){if(i===tD)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===iD)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===nD)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===sD)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===AK||i===ZK||i===SK||i===NK)if(o=e.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(i===AK)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===ZK)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===SK)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===NK)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===RK||i===VK||i===WK)if(o=e.get("WEBGL_compressed_texture_etc"),o!==null){if(i===RK||i===VK)return r===Xo?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(i===WK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===yK||i===QK||i===MK||i===wK||i===TK||i===CK||i===BK||i===LK||i===vK||i===kK||i===xK||i===IK||i===EK||i===DK)if(o=e.get("WEBGL_compressed_texture_astc"),o!==null){if(i===yK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===QK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===MK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===wK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===TK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===CK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===BK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===LK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===vK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===kK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===xK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===IK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===EK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===DK)return r===Xo?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===oD||i===GK||i===JK)if(o=e.get("EXT_texture_compression_bptc"),o!==null){if(i===oD)return r===Xo?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===GK)return o.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===JK)return o.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===QAe||i===XK||i===YK||i===_K)if(o=e.get("EXT_texture_compression_rgtc"),o!==null){if(i===oD)return o.COMPRESSED_RED_RGTC1_EXT;if(i===XK)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===YK)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===_K)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===by?s.UNSIGNED_INT_24_8:s[i]!==void 0?s[i]:null}return{convert:t}}const h3e=`
- void main() {
- gl_Position = vec4( position, 1.0 );
- }`,u3e=`
- uniform sampler2DArray depthColor;
- uniform float depthWidth;
- uniform float depthHeight;
- void main() {
- vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );
- if ( coord.x >= 1.0 ) {
- gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;
- } else {
- gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;
- }
- }`;class m3e{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,i){if(this.texture===null){const n=new qc,o=e.properties.get(n);o.__webglTexture=t.texture,(t.depthNear!==i.depthNear||t.depthFar!==i.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,i=new MF({vertexShader:h3e,fragmentShader:u3e,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Dh(new U3(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class p3e extends zN{constructor(e,t){super();const i=this;let n=null,o=1,r=null,l="local-floor",a=1,d=null,c=null,h=null,u=null,m=null,p=null;const g=new m3e,f=t.getContextAttributes();let b=null,U=null;const S=[],Z=[],R=new rs;let y=null;const N=new Iu;N.viewport=new Yr;const w=new Iu;w.viewport=new Yr;const Q=[N,w],C=new LXe;let v=null,Y=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(Ie){let at=S[Ie];return at===void 0&&(at=new Uj,S[Ie]=at),at.getTargetRaySpace()},this.getControllerGrip=function(Ie){let at=S[Ie];return at===void 0&&(at=new Uj,S[Ie]=at),at.getGripSpace()},this.getHand=function(Ie){let at=S[Ie];return at===void 0&&(at=new Uj,S[Ie]=at),at.getHandSpace()};function J(Ie){const at=Z.indexOf(Ie.inputSource);if(at===-1)return;const je=S[at];je!==void 0&&(je.update(Ie.inputSource,Ie.frame,d||r),je.dispatchEvent({type:Ie.type,data:Ie.inputSource}))}function k(){n.removeEventListener("select",J),n.removeEventListener("selectstart",J),n.removeEventListener("selectend",J),n.removeEventListener("squeeze",J),n.removeEventListener("squeezestart",J),n.removeEventListener("squeezeend",J),n.removeEventListener("end",k),n.removeEventListener("inputsourceschange",E);for(let Ie=0;Ie<S.length;Ie++){const at=Z[Ie];at!==null&&(Z[Ie]=null,S[Ie].disconnect(at))}v=null,Y=null,g.reset(),e.setRenderTarget(b),m=null,u=null,h=null,n=null,U=null,Oe.stop(),i.isPresenting=!1,e.setPixelRatio(y),e.setSize(R.width,R.height,!1),i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(Ie){o=Ie,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(Ie){l=Ie,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return d||r},this.setReferenceSpace=function(Ie){d=Ie},this.getBaseLayer=function(){return u!==null?u:m},this.getBinding=function(){return h},this.getFrame=function(){return p},this.getSession=function(){return n},this.setSession=async function(Ie){if(n=Ie,n!==null){if(b=e.getRenderTarget(),n.addEventListener("select",J),n.addEventListener("selectstart",J),n.addEventListener("selectend",J),n.addEventListener("squeeze",J),n.addEventListener("squeezestart",J),n.addEventListener("squeezeend",J),n.addEventListener("end",k),n.addEventListener("inputsourceschange",E),f.xrCompatible!==!0&&await t.makeXRCompatible(),y=e.getPixelRatio(),e.getSize(R),typeof XRWebGLBinding<"u"&&"createProjectionLayer"in XRWebGLBinding.prototype){let je=null,Se=null,dt=null;f.depth&&(dt=f.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,je=f.stencil?Uy:V1,Se=f.stencil?by:mN);const Yt={colorFormat:t.RGBA8,depthFormat:dt,scaleFactor:o};h=new XRWebGLBinding(n,t),u=h.createProjectionLayer(Yt),n.updateRenderState({layers:[u]}),e.setPixelRatio(1),e.setSize(u.textureWidth,u.textureHeight,!1),U=new pN(u.textureWidth,u.textureHeight,{format:jm,type:Yf,depthTexture:new GAe(u.textureWidth,u.textureHeight,Se,void 0,void 0,void 0,void 0,void 0,void 0,je),stencilBuffer:f.stencil,colorSpace:e.outputColorSpace,samples:f.antialias?4:0,resolveDepthBuffer:u.ignoreDepthValues===!1,resolveStencilBuffer:u.ignoreDepthValues===!1})}else{const je={antialias:f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:o};m=new XRWebGLLayer(n,t,je),n.updateRenderState({baseLayer:m}),e.setPixelRatio(1),e.setSize(m.framebufferWidth,m.framebufferHeight,!1),U=new pN(m.framebufferWidth,m.framebufferHeight,{format:jm,type:Yf,colorSpace:e.outputColorSpace,stencilBuffer:f.stencil,resolveDepthBuffer:m.ignoreDepthValues===!1,resolveStencilBuffer:m.ignoreDepthValues===!1})}U.isXRRenderTarget=!0,this.setFoveation(a),d=null,r=await n.requestReferenceSpace(l),Oe.setContext(n),Oe.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(n!==null)return n.environmentBlendMode},this.getDepthTexture=function(){return g.getDepthTexture()};function E(Ie){for(let at=0;at<Ie.removed.length;at++){const je=Ie.removed[at],Se=Z.indexOf(je);Se>=0&&(Z[Se]=null,S[Se].disconnect(je))}for(let at=0;at<Ie.added.length;at++){const je=Ie.added[at];let Se=Z.indexOf(je);if(Se===-1){for(let Yt=0;Yt<S.length;Yt++)if(Yt>=Z.length){Z.push(je),Se=Yt;break}else if(Z[Yt]===null){Z[Yt]=je,Se=Yt;break}if(Se===-1)break}const dt=S[Se];dt&&dt.connect(je)}}const K=new et,de=new et;function ee(Ie,at,je){K.setFromMatrixPosition(at.matrixWorld),de.setFromMatrixPosition(je.matrixWorld);const Se=K.distanceTo(de),dt=at.projectionMatrix.elements,Yt=je.projectionMatrix.elements,Ye=dt[14]/(dt[10]-1),mt=dt[14]/(dt[10]+1),Wt=(dt[9]+1)/dt[5],Jt=(dt[9]-1)/dt[5],Ae=(dt[8]-1)/dt[0],Yi=(Yt[8]+1)/Yt[0],ci=Ye*Ae,we=Ye*Yi,si=Se/(-Ae+Yi),yn=si*-Ae;if(at.matrixWorld.decompose(Ie.position,Ie.quaternion,Ie.scale),Ie.translateX(yn),Ie.translateZ(si),Ie.matrixWorld.compose(Ie.position,Ie.quaternion,Ie.scale),Ie.matrixWorldInverse.copy(Ie.matrixWorld).invert(),dt[10]===-1)Ie.projectionMatrix.copy(at.projectionMatrix),Ie.projectionMatrixInverse.copy(at.projectionMatrixInverse);else{const bi=Ye+si,pe=mt+si,ie=ci-yn,it=we+(Se-yn),Ft=Wt*mt/pe*bi,Pe=Jt*mt/pe*bi;Ie.projectionMatrix.makePerspective(ie,it,Ft,Pe,bi,pe),Ie.projectionMatrixInverse.copy(Ie.projectionMatrix).invert()}}function le(Ie,at){at===null?Ie.matrixWorld.copy(Ie.matrix):Ie.matrixWorld.multiplyMatrices(at.matrixWorld,Ie.matrix),Ie.matrixWorldInverse.copy(Ie.matrixWorld).invert()}this.updateCamera=function(Ie){if(n===null)return;let at=Ie.near,je=Ie.far;g.texture!==null&&(g.depthNear>0&&(at=g.depthNear),g.depthFar>0&&(je=g.depthFar)),C.near=w.near=N.near=at,C.far=w.far=N.far=je,(v!==C.near||Y!==C.far)&&(n.updateRenderState({depthNear:C.near,depthFar:C.far}),v=C.near,Y=C.far),N.layers.mask=Ie.layers.mask|2,w.layers.mask=Ie.layers.mask|4,C.layers.mask=N.layers.mask|w.layers.mask;const Se=Ie.parent,dt=C.cameras;le(C,Se);for(let Yt=0;Yt<dt.length;Yt++)le(dt[Yt],Se);dt.length===2?ee(C,N,w):C.projectionMatrix.copy(N.projectionMatrix),Fe(Ie,C,Se)};function Fe(Ie,at,je){je===null?Ie.matrix.copy(at.matrixWorld):(Ie.matrix.copy(je.matrixWorld),Ie.matrix.invert(),Ie.matrix.multiply(at.matrixWorld)),Ie.matrix.decompose(Ie.position,Ie.quaternion,Ie.scale),Ie.updateMatrixWorld(!0),Ie.projectionMatrix.copy(at.projectionMatrix),Ie.projectionMatrixInverse.copy(at.projectionMatrixInverse),Ie.isPerspectiveCamera&&(Ie.fov=vB*2*Math.atan(1/Ie.projectionMatrix.elements[5]),Ie.zoom=1)}this.getCamera=function(){return C},this.getFoveation=function(){if(!(u===null&&m===null))return a},this.setFoveation=function(Ie){a=Ie,u!==null&&(u.fixedFoveation=Ie),m!==null&&m.fixedFoveation!==void 0&&(m.fixedFoveation=Ie)},this.hasDepthSensing=function(){return g.texture!==null},this.getDepthSensingMesh=function(){return g.getMesh(C)};let Ue=null;function ze(Ie,at){if(c=at.getViewerPose(d||r),p=at,c!==null){const je=c.views;m!==null&&(e.setRenderTargetFramebuffer(U,m.framebuffer),e.setRenderTarget(U));let Se=!1;je.length!==C.cameras.length&&(C.cameras.length=0,Se=!0);for(let Ye=0;Ye<je.length;Ye++){const mt=je[Ye];let Wt=null;if(m!==null)Wt=m.getViewport(mt);else{const Ae=h.getViewSubImage(u,mt);Wt=Ae.viewport,Ye===0&&(e.setRenderTargetTextures(U,Ae.colorTexture,u.ignoreDepthValues?void 0:Ae.depthStencilTexture),e.setRenderTarget(U))}let Jt=Q[Ye];Jt===void 0&&(Jt=new Iu,Jt.layers.enable(Ye),Jt.viewport=new Yr,Q[Ye]=Jt),Jt.matrix.fromArray(mt.transform.matrix),Jt.matrix.decompose(Jt.position,Jt.quaternion,Jt.scale),Jt.projectionMatrix.fromArray(mt.projectionMatrix),Jt.projectionMatrixInverse.copy(Jt.projectionMatrix).invert(),Jt.viewport.set(Wt.x,Wt.y,Wt.width,Wt.height),Ye===0&&(C.matrix.copy(Jt.matrix),C.matrix.decompose(C.position,C.quaternion,C.scale)),Se===!0&&C.cameras.push(Jt)}const dt=n.enabledFeatures;if(dt&&dt.includes("depth-sensing")&&n.depthUsage=="gpu-optimized"&&h){const Ye=h.getDepthInformation(je[0]);Ye&&Ye.isValid&&Ye.texture&&g.init(e,Ye,n.renderState)}}for(let je=0;je<S.length;je++){const Se=Z[je],dt=S[je];Se!==null&&dt!==void 0&&dt.update(Se,at,d||r)}Ue&&Ue(Ie,at),at.detectedPlanes&&i.dispatchEvent({type:"planesdetected",data:at}),p=null}const Oe=new zAe;Oe.setAnimationLoop(ze),this.setAnimationLoop=function(Ie){Ue=Ie},this.dispose=function(){}}}const SA=new Ig,g3e=new Sr;function f3e(s,e){function t(f,b){f.matrixAutoUpdate===!0&&f.updateMatrix(),b.value.copy(f.matrix)}function i(f,b){b.color.getRGB(f.fogColor.value,xAe(s)),b.isFog?(f.fogNear.value=b.near,f.fogFar.value=b.far):b.isFogExp2&&(f.fogDensity.value=b.density)}function n(f,b,U,S,Z){b.isMeshBasicMaterial||b.isMeshLambertMaterial?o(f,b):b.isMeshToonMaterial?(o(f,b),h(f,b)):b.isMeshPhongMaterial?(o(f,b),c(f,b)):b.isMeshStandardMaterial?(o(f,b),u(f,b),b.isMeshPhysicalMaterial&&m(f,b,Z)):b.isMeshMatcapMaterial?(o(f,b),p(f,b)):b.isMeshDepthMaterial?o(f,b):b.isMeshDistanceMaterial?(o(f,b),g(f,b)):b.isMeshNormalMaterial?o(f,b):b.isLineBasicMaterial?(r(f,b),b.isLineDashedMaterial&&l(f,b)):b.isPointsMaterial?a(f,b,U,S):b.isSpriteMaterial?d(f,b):b.isShadowMaterial?(f.color.value.copy(b.color),f.opacity.value=b.opacity):b.isShaderMaterial&&(b.uniformsNeedUpdate=!1)}function o(f,b){f.opacity.value=b.opacity,b.color&&f.diffuse.value.copy(b.color),b.emissive&&f.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity),b.map&&(f.map.value=b.map,t(b.map,f.mapTransform)),b.alphaMap&&(f.alphaMap.value=b.alphaMap,t(b.alphaMap,f.alphaMapTransform)),b.bumpMap&&(f.bumpMap.value=b.bumpMap,t(b.bumpMap,f.bumpMapTransform),f.bumpScale.value=b.bumpScale,b.side===Kc&&(f.bumpScale.value*=-1)),b.normalMap&&(f.normalMap.value=b.normalMap,t(b.normalMap,f.normalMapTransform),f.normalScale.value.copy(b.normalScale),b.side===Kc&&f.normalScale.value.negate()),b.displacementMap&&(f.displacementMap.value=b.displacementMap,t(b.displacementMap,f.displacementMapTransform),f.displacementScale.value=b.displacementScale,f.displacementBias.value=b.displacementBias),b.emissiveMap&&(f.emissiveMap.value=b.emissiveMap,t(b.emissiveMap,f.emissiveMapTransform)),b.specularMap&&(f.specularMap.value=b.specularMap,t(b.specularMap,f.specularMapTransform)),b.alphaTest>0&&(f.alphaTest.value=b.alphaTest);const U=e.get(b),S=U.envMap,Z=U.envMapRotation;S&&(f.envMap.value=S,SA.copy(Z),SA.x*=-1,SA.y*=-1,SA.z*=-1,S.isCubeTexture&&S.isRenderTargetTexture===!1&&(SA.y*=-1,SA.z*=-1),f.envMapRotation.value.setFromMatrix4(g3e.makeRotationFromEuler(SA)),f.flipEnvMap.value=S.isCubeTexture&&S.isRenderTargetTexture===!1?-1:1,f.reflectivity.value=b.reflectivity,f.ior.value=b.ior,f.refractionRatio.value=b.refractionRatio),b.lightMap&&(f.lightMap.value=b.lightMap,f.lightMapIntensity.value=b.lightMapIntensity,t(b.lightMap,f.lightMapTransform)),b.aoMap&&(f.aoMap.value=b.aoMap,f.aoMapIntensity.value=b.aoMapIntensity,t(b.aoMap,f.aoMapTransform))}function r(f,b){f.diffuse.value.copy(b.color),f.opacity.value=b.opacity,b.map&&(f.map.value=b.map,t(b.map,f.mapTransform))}function l(f,b){f.dashSize.value=b.dashSize,f.totalSize.value=b.dashSize+b.gapSize,f.scale.value=b.scale}function a(f,b,U,S){f.diffuse.value.copy(b.color),f.opacity.value=b.opacity,f.size.value=b.size*U,f.scale.value=S*.5,b.map&&(f.map.value=b.map,t(b.map,f.uvTransform)),b.alphaMap&&(f.alphaMap.value=b.alphaMap,t(b.alphaMap,f.alphaMapTransform)),b.alphaTest>0&&(f.alphaTest.value=b.alphaTest)}function d(f,b){f.diffuse.value.copy(b.color),f.opacity.value=b.opacity,f.rotation.value=b.rotation,b.map&&(f.map.value=b.map,t(b.map,f.mapTransform)),b.alphaMap&&(f.alphaMap.value=b.alphaMap,t(b.alphaMap,f.alphaMapTransform)),b.alphaTest>0&&(f.alphaTest.value=b.alphaTest)}function c(f,b){f.specular.value.copy(b.specular),f.shininess.value=Math.max(b.shininess,1e-4)}function h(f,b){b.gradientMap&&(f.gradientMap.value=b.gradientMap)}function u(f,b){f.metalness.value=b.metalness,b.metalnessMap&&(f.metalnessMap.value=b.metalnessMap,t(b.metalnessMap,f.metalnessMapTransform)),f.roughness.value=b.roughness,b.roughnessMap&&(f.roughnessMap.value=b.roughnessMap,t(b.roughnessMap,f.roughnessMapTransform)),b.envMap&&(f.envMapIntensity.value=b.envMapIntensity)}function m(f,b,U){f.ior.value=b.ior,b.sheen>0&&(f.sheenColor.value.copy(b.sheenColor).multiplyScalar(b.sheen),f.sheenRoughness.value=b.sheenRoughness,b.sheenColorMap&&(f.sheenColorMap.value=b.sheenColorMap,t(b.sheenColorMap,f.sheenColorMapTransform)),b.sheenRoughnessMap&&(f.sheenRoughnessMap.value=b.sheenRoughnessMap,t(b.sheenRoughnessMap,f.sheenRoughnessMapTransform))),b.clearcoat>0&&(f.clearcoat.value=b.clearcoat,f.clearcoatRoughness.value=b.clearcoatRoughness,b.clearcoatMap&&(f.clearcoatMap.value=b.clearcoatMap,t(b.clearcoatMap,f.clearcoatMapTransform)),b.clearcoatRoughnessMap&&(f.clearcoatRoughnessMap.value=b.clearcoatRoughnessMap,t(b.clearcoatRoughnessMap,f.clearcoatRoughnessMapTransform)),b.clearcoatNormalMap&&(f.clearcoatNormalMap.value=b.clearcoatNormalMap,t(b.clearcoatNormalMap,f.clearcoatNormalMapTransform),f.clearcoatNormalScale.value.copy(b.clearcoatNormalScale),b.side===Kc&&f.clearcoatNormalScale.value.negate())),b.dispersion>0&&(f.dispersion.value=b.dispersion),b.iridescence>0&&(f.iridescence.value=b.iridescence,f.iridescenceIOR.value=b.iridescenceIOR,f.iridescenceThicknessMinimum.value=b.iridescenceThicknessRange[0],f.iridescenceThicknessMaximum.value=b.iridescenceThicknessRange[1],b.iridescenceMap&&(f.iridescenceMap.value=b.iridescenceMap,t(b.iridescenceMap,f.iridescenceMapTransform)),b.iridescenceThicknessMap&&(f.iridescenceThicknessMap.value=b.iridescenceThicknessMap,t(b.iridescenceThicknessMap,f.iridescenceThicknessMapTransform))),b.transmission>0&&(f.transmission.value=b.transmission,f.transmissionSamplerMap.value=U.texture,f.transmissionSamplerSize.value.set(U.width,U.height),b.transmissionMap&&(f.transmissionMap.value=b.transmissionMap,t(b.transmissionMap,f.transmissionMapTransform)),f.thickness.value=b.thickness,b.thicknessMap&&(f.thicknessMap.value=b.thicknessMap,t(b.thicknessMap,f.thicknessMapTransform)),f.attenuationDistance.value=b.attenuationDistance,f.attenuationColor.value.copy(b.attenuationColor)),b.anisotropy>0&&(f.anisotropyVector.value.set(b.anisotropy*Math.cos(b.anisotropyRotation),b.anisotropy*Math.sin(b.anisotropyRotation)),b.anisotropyMap&&(f.anisotropyMap.value=b.anisotropyMap,t(b.anisotropyMap,f.anisotropyMapTransform))),f.specularIntensity.value=b.specularIntensity,f.specularColor.value.copy(b.specularColor),b.specularColorMap&&(f.specularColorMap.value=b.specularColorMap,t(b.specularColorMap,f.specularColorMapTransform)),b.specularIntensityMap&&(f.specularIntensityMap.value=b.specularIntensityMap,t(b.specularIntensityMap,f.specularIntensityMapTransform))}function p(f,b){b.matcap&&(f.matcap.value=b.matcap)}function g(f,b){const U=e.get(b).light;f.referencePosition.value.setFromMatrixPosition(U.matrixWorld),f.nearDistance.value=U.shadow.camera.near,f.farDistance.value=U.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:n}}function b3e(s,e,t,i){let n={},o={},r=[];const l=s.getParameter(s.MAX_UNIFORM_BUFFER_BINDINGS);function a(U,S){const Z=S.program;i.uniformBlockBinding(U,Z)}function d(U,S){let Z=n[U.id];Z===void 0&&(p(U),Z=c(U),n[U.id]=Z,U.addEventListener("dispose",f));const R=S.program;i.updateUBOMapping(U,R);const y=e.render.frame;o[U.id]!==y&&(u(U),o[U.id]=y)}function c(U){const S=h();U.__bindingPointIndex=S;const Z=s.createBuffer(),R=U.__size,y=U.usage;return s.bindBuffer(s.UNIFORM_BUFFER,Z),s.bufferData(s.UNIFORM_BUFFER,R,y),s.bindBuffer(s.UNIFORM_BUFFER,null),s.bindBufferBase(s.UNIFORM_BUFFER,S,Z),Z}function h(){for(let U=0;U<l;U++)if(r.indexOf(U)===-1)return r.push(U),U;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(U){const S=n[U.id],Z=U.uniforms,R=U.__cache;s.bindBuffer(s.UNIFORM_BUFFER,S);for(let y=0,N=Z.length;y<N;y++){const w=Array.isArray(Z[y])?Z[y]:[Z[y]];for(let Q=0,C=w.length;Q<C;Q++){const v=w[Q];if(m(v,y,Q,R)===!0){const Y=v.__offset,J=Array.isArray(v.value)?v.value:[v.value];let k=0;for(let E=0;E<J.length;E++){const K=J[E],de=g(K);typeof K=="number"||typeof K=="boolean"?(v.__data[0]=K,s.bufferSubData(s.UNIFORM_BUFFER,Y+k,v.__data)):K.isMatrix3?(v.__data[0]=K.elements[0],v.__data[1]=K.elements[1],v.__data[2]=K.elements[2],v.__data[3]=0,v.__data[4]=K.elements[3],v.__data[5]=K.elements[4],v.__data[6]=K.elements[5],v.__data[7]=0,v.__data[8]=K.elements[6],v.__data[9]=K.elements[7],v.__data[10]=K.elements[8],v.__data[11]=0):(K.toArray(v.__data,k),k+=de.storage/Float32Array.BYTES_PER_ELEMENT)}s.bufferSubData(s.UNIFORM_BUFFER,Y,v.__data)}}}s.bindBuffer(s.UNIFORM_BUFFER,null)}function m(U,S,Z,R){const y=U.value,N=S+"_"+Z;if(R[N]===void 0)return typeof y=="number"||typeof y=="boolean"?R[N]=y:R[N]=y.clone(),!0;{const w=R[N];if(typeof y=="number"||typeof y=="boolean"){if(w!==y)return R[N]=y,!0}else if(w.equals(y)===!1)return w.copy(y),!0}return!1}function p(U){const S=U.uniforms;let Z=0;const R=16;for(let N=0,w=S.length;N<w;N++){const Q=Array.isArray(S[N])?S[N]:[S[N]];for(let C=0,v=Q.length;C<v;C++){const Y=Q[C],J=Array.isArray(Y.value)?Y.value:[Y.value];for(let k=0,E=J.length;k<E;k++){const K=J[k],de=g(K),ee=Z%R,le=ee%de.boundary,Fe=ee+le;Z+=le,Fe!==0&&R-Fe<de.storage&&(Z+=R-Fe),Y.__data=new Float32Array(de.storage/Float32Array.BYTES_PER_ELEMENT),Y.__offset=Z,Z+=de.storage}}}const y=Z%R;return y>0&&(Z+=R-y),U.__size=Z,U.__cache={},this}function g(U){const S={boundary:0,storage:0};return typeof U=="number"||typeof U=="boolean"?(S.boundary=4,S.storage=4):U.isVector2?(S.boundary=8,S.storage=8):U.isVector3||U.isColor?(S.boundary=16,S.storage=12):U.isVector4?(S.boundary=16,S.storage=16):U.isMatrix3?(S.boundary=48,S.storage=48):U.isMatrix4?(S.boundary=64,S.storage=64):U.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",U),S}function f(U){const S=U.target;S.removeEventListener("dispose",f);const Z=r.indexOf(S.__bindingPointIndex);r.splice(Z,1),s.deleteBuffer(n[S.id]),delete n[S.id],delete o[S.id]}function b(){for(const U in n)s.deleteBuffer(n[U]);r=[],n={},o={}}return{bind:a,update:d,dispose:b}}class U3e{constructor(e={}){const{canvas:t=$Je(),context:i=null,depth:n=!0,stencil:o=!1,alpha:r=!1,antialias:l=!1,premultipliedAlpha:a=!0,preserveDrawingBuffer:d=!1,powerPreference:c="default",failIfMajorPerformanceCaveat:h=!1,reverseDepthBuffer:u=!1}=e;this.isWebGLRenderer=!0;let m;if(i!==null){if(typeof WebGLRenderingContext<"u"&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=i.getContextAttributes().alpha}else m=r;const p=new Uint32Array(4),g=new Int32Array(4);let f=null,b=null;const U=[],S=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Cu,this.toneMapping=UF,this.toneMappingExposure=1;const Z=this;let R=!1,y=0,N=0,w=null,Q=-1,C=null;const v=new Yr,Y=new Yr;let J=null;const k=new ws(0);let E=0,K=t.width,de=t.height,ee=1,le=null,Fe=null;const Ue=new Yr(0,0,K,de),ze=new Yr(0,0,K,de);let Oe=!1;const Ie=new rse;let at=!1,je=!1;this.transmissionResolutionScale=1;const Se=new Sr,dt=new Sr,Yt=new et,Ye=new Yr,mt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Wt=!1;function Jt(){return w===null?ee:1}let Ae=i;function Yi(q,We){return t.getContext(q,We)}try{const q={alpha:!0,depth:n,stencil:o,antialias:l,premultipliedAlpha:a,preserveDrawingBuffer:d,powerPreference:c,failIfMajorPerformanceCaveat:h};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${Hne}`),t.addEventListener("webglcontextlost",Ve,!1),t.addEventListener("webglcontextrestored",Nt,!1),t.addEventListener("webglcontextcreationerror",Ui,!1),Ae===null){const We="webgl2";if(Ae=Yi(We,q),Ae===null)throw Yi(We)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(q){throw console.error("THREE.WebGLRenderer: "+q.message),q}let ci,we,si,yn,bi,pe,ie,it,Ft,Pe,Re,vt,Ke,ot,Et,St,Ht,Fi,Dt,Ot,nn,xi,Zi,Me;function ri(){ci=new Q_e(Ae),ci.init(),xi=new c3e(Ae,ci),we=new Z_e(Ae,ci,e,xi),si=new a3e(Ae,ci),we.reverseDepthBuffer&&u&&si.buffers.depth.setReversed(!0),yn=new T_e(Ae),bi=new Pze,pe=new d3e(Ae,ci,si,bi,we,xi,yn),ie=new N_e(Z),it=new y_e(Z),Ft=new xXe(Ae),Zi=new F_e(Ae,Ft),Pe=new M_e(Ae,Ft,yn,Zi),Re=new B_e(Ae,Pe,Ft,yn),Dt=new C_e(Ae,we,pe),St=new S_e(bi),vt=new jze(Z,ie,it,ci,we,Zi,St),Ke=new f3e(Z,bi),ot=new Kze,Et=new n3e(ci),Fi=new U_e(Z,ie,it,si,Re,m,a),Ht=new r3e(Z,Re,we),Me=new b3e(Ae,yn,we,si),Ot=new A_e(Ae,ci,yn),nn=new w_e(Ae,ci,yn),yn.programs=vt.programs,Z.capabilities=we,Z.extensions=ci,Z.properties=bi,Z.renderLists=ot,Z.shadowMap=Ht,Z.state=si,Z.info=yn}ri();const st=new p3e(Z,Ae);this.xr=st,this.getContext=function(){return Ae},this.getContextAttributes=function(){return Ae.getContextAttributes()},this.forceContextLoss=function(){const q=ci.get("WEBGL_lose_context");q&&q.loseContext()},this.forceContextRestore=function(){const q=ci.get("WEBGL_lose_context");q&&q.restoreContext()},this.getPixelRatio=function(){return ee},this.setPixelRatio=function(q){q!==void 0&&(ee=q,this.setSize(K,de,!1))},this.getSize=function(q){return q.set(K,de)},this.setSize=function(q,We,Qe=!0){if(st.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}K=q,de=We,t.width=Math.floor(q*ee),t.height=Math.floor(We*ee),Qe===!0&&(t.style.width=q+"px",t.style.height=We+"px"),this.setViewport(0,0,q,We)},this.getDrawingBufferSize=function(q){return q.set(K*ee,de*ee).floor()},this.setDrawingBufferSize=function(q,We,Qe){K=q,de=We,ee=Qe,t.width=Math.floor(q*Qe),t.height=Math.floor(We*Qe),this.setViewport(0,0,q,We)},this.getCurrentViewport=function(q){return q.copy(v)},this.getViewport=function(q){return q.copy(Ue)},this.setViewport=function(q,We,Qe,ke){q.isVector4?Ue.set(q.x,q.y,q.z,q.w):Ue.set(q,We,Qe,ke),si.viewport(v.copy(Ue).multiplyScalar(ee).round())},this.getScissor=function(q){return q.copy(ze)},this.setScissor=function(q,We,Qe,ke){q.isVector4?ze.set(q.x,q.y,q.z,q.w):ze.set(q,We,Qe,ke),si.scissor(Y.copy(ze).multiplyScalar(ee).round())},this.getScissorTest=function(){return Oe},this.setScissorTest=function(q){si.setScissorTest(Oe=q)},this.setOpaqueSort=function(q){le=q},this.setTransparentSort=function(q){Fe=q},this.getClearColor=function(q){return q.copy(Fi.getClearColor())},this.setClearColor=function(){Fi.setClearColor(...arguments)},this.getClearAlpha=function(){return Fi.getClearAlpha()},this.setClearAlpha=function(){Fi.setClearAlpha(...arguments)},this.clear=function(q=!0,We=!0,Qe=!0){let ke=0;if(q){let ve=!1;if(w!==null){const Lt=w.texture.format;ve=Lt===nse||Lt===ise||Lt===tse}if(ve){const Lt=w.texture.type,li=Lt===Yf||Lt===mN||Lt===LB||Lt===by||Lt===$ne||Lt===ese,tt=Fi.getClearColor(),Ct=Fi.getClearAlpha(),tn=tt.r,In=tt.g,Ki=tt.b;li?(p[0]=tn,p[1]=In,p[2]=Ki,p[3]=Ct,Ae.clearBufferuiv(Ae.COLOR,0,p)):(g[0]=tn,g[1]=In,g[2]=Ki,g[3]=Ct,Ae.clearBufferiv(Ae.COLOR,0,g))}else ke|=Ae.COLOR_BUFFER_BIT}We&&(ke|=Ae.DEPTH_BUFFER_BIT),Qe&&(ke|=Ae.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),Ae.clear(ke)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Ve,!1),t.removeEventListener("webglcontextrestored",Nt,!1),t.removeEventListener("webglcontextcreationerror",Ui,!1),Fi.dispose(),ot.dispose(),Et.dispose(),bi.dispose(),ie.dispose(),it.dispose(),Re.dispose(),Zi.dispose(),Me.dispose(),vt.dispose(),st.dispose(),st.removeEventListener("sessionstart",Ne),st.removeEventListener("sessionend",Be),Le.stop()};function Ve(q){q.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),R=!0}function Nt(){console.log("THREE.WebGLRenderer: Context Restored."),R=!1;const q=yn.autoReset,We=Ht.enabled,Qe=Ht.autoUpdate,ke=Ht.needsUpdate,ve=Ht.type;ri(),yn.autoReset=q,Ht.enabled=We,Ht.autoUpdate=Qe,Ht.needsUpdate=ke,Ht.type=ve}function Ui(q){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",q.statusMessage)}function Ci(q){const We=q.target;We.removeEventListener("dispose",Ci),Mn(We)}function Mn(q){Si(q),bi.remove(q)}function Si(q){const We=bi.get(q).programs;We!==void 0&&(We.forEach(function(Qe){vt.releaseProgram(Qe)}),q.isShaderMaterial&&vt.releaseShaderCache(q))}this.renderBufferDirect=function(q,We,Qe,ke,ve,Lt){We===null&&(We=mt);const li=ve.isMesh&&ve.matrixWorld.determinant()<0,tt=Vr(q,We,Qe,ke,ve);si.setMaterial(ke,li);let Ct=Qe.index,tn=1;if(ke.wireframe===!0){if(Ct=Pe.getWireframeAttribute(Qe),Ct===void 0)return;tn=2}const In=Qe.drawRange,Ki=Qe.attributes.position;let Zs=In.start*tn,ms=(In.start+In.count)*tn;Lt!==null&&(Zs=Math.max(Zs,Lt.start*tn),ms=Math.min(ms,(Lt.start+Lt.count)*tn)),Ct!==null?(Zs=Math.max(Zs,0),ms=Math.min(ms,Ct.count)):Ki!=null&&(Zs=Math.max(Zs,0),ms=Math.min(ms,Ki.count));const ko=ms-Zs;if(ko<0||ko===1/0)return;Zi.setup(ve,ke,tt,Qe,Ct);let ps,$n=Ot;if(Ct!==null&&(ps=Ft.get(Ct),$n=nn,$n.setIndex(ps)),ve.isMesh)ke.wireframe===!0?(si.setLineWidth(ke.wireframeLinewidth*Jt()),$n.setMode(Ae.LINES)):$n.setMode(Ae.TRIANGLES);else if(ve.isLine){let sn=ke.linewidth;sn===void 0&&(sn=1),si.setLineWidth(sn*Jt()),ve.isLineSegments?$n.setMode(Ae.LINES):ve.isLineLoop?$n.setMode(Ae.LINE_LOOP):$n.setMode(Ae.LINE_STRIP)}else ve.isPoints?$n.setMode(Ae.POINTS):ve.isSprite&&$n.setMode(Ae.TRIANGLES);if(ve.isBatchedMesh)if(ve._multiDrawInstances!==null)iZ("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),$n.renderMultiDrawInstances(ve._multiDrawStarts,ve._multiDrawCounts,ve._multiDrawCount,ve._multiDrawInstances);else if(ci.get("WEBGL_multi_draw"))$n.renderMultiDraw(ve._multiDrawStarts,ve._multiDrawCounts,ve._multiDrawCount);else{const sn=ve._multiDrawStarts,mr=ve._multiDrawCounts,js=ve._multiDrawCount,ml=Ct?Ft.get(Ct).bytesPerElement:1,am=bi.get(ke).currentProgram.getUniforms();for(let Ho=0;Ho<js;Ho++)am.setValue(Ae,"_gl_DrawID",Ho),$n.render(sn[Ho]/ml,mr[Ho])}else if(ve.isInstancedMesh)$n.renderInstances(Zs,ko,ve.count);else if(Qe.isInstancedBufferGeometry){const sn=Qe._maxInstanceCount!==void 0?Qe._maxInstanceCount:1/0,mr=Math.min(Qe.instanceCount,sn);$n.renderInstances(Zs,ko,mr)}else $n.render(Zs,ko)};function oe(q,We,Qe){q.transparent===!0&&q.side===zm&&q.forceSinglePass===!1?(q.side=Kc,q.needsUpdate=!0,Gn(q,We,Qe),q.side=QF,q.needsUpdate=!0,Gn(q,We,Qe),q.side=zm):Gn(q,We,Qe)}this.compile=function(q,We,Qe=null){Qe===null&&(Qe=q),b=Et.get(Qe),b.init(We),S.push(b),Qe.traverseVisible(function(ve){ve.isLight&&ve.layers.test(We.layers)&&(b.pushLight(ve),ve.castShadow&&b.pushShadow(ve))}),q!==Qe&&q.traverseVisible(function(ve){ve.isLight&&ve.layers.test(We.layers)&&(b.pushLight(ve),ve.castShadow&&b.pushShadow(ve))}),b.setupLights();const ke=new Set;return q.traverse(function(ve){if(!(ve.isMesh||ve.isPoints||ve.isLine||ve.isSprite))return;const Lt=ve.material;if(Lt)if(Array.isArray(Lt))for(let li=0;li<Lt.length;li++){const tt=Lt[li];oe(tt,Qe,ve),ke.add(tt)}else oe(Lt,Qe,ve),ke.add(Lt)}),b=S.pop(),ke},this.compileAsync=function(q,We,Qe=null){const ke=this.compile(q,We,Qe);return new Promise(ve=>{function Lt(){if(ke.forEach(function(li){bi.get(li).currentProgram.isReady()&&ke.delete(li)}),ke.size===0){ve(q);return}setTimeout(Lt,10)}ci.get("KHR_parallel_shader_compile")!==null?Lt():setTimeout(Lt,10)})};let ae=null;function ce(q){ae&&ae(q)}function Ne(){Le.stop()}function Be(){Le.start()}const Le=new zAe;Le.setAnimationLoop(ce),typeof self<"u"&&Le.setContext(self),this.setAnimationLoop=function(q){ae=q,st.setAnimationLoop(q),q===null?Le.stop():Le.start()},st.addEventListener("sessionstart",Ne),st.addEventListener("sessionend",Be),this.render=function(q,We){if(We!==void 0&&We.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(R===!0)return;if(q.matrixWorldAutoUpdate===!0&&q.updateMatrixWorld(),We.parent===null&&We.matrixWorldAutoUpdate===!0&&We.updateMatrixWorld(),st.enabled===!0&&st.isPresenting===!0&&(st.cameraAutoUpdate===!0&&st.updateCamera(We),We=st.getCamera()),q.isScene===!0&&q.onBeforeRender(Z,q,We,w),b=Et.get(q,S.length),b.init(We),S.push(b),dt.multiplyMatrices(We.projectionMatrix,We.matrixWorldInverse),Ie.setFromProjectionMatrix(dt),je=this.localClippingEnabled,at=St.init(this.clippingPlanes,je),f=ot.get(q,U.length),f.init(),U.push(f),st.enabled===!0&&st.isPresenting===!0){const Lt=Z.xr.getDepthSensingMesh();Lt!==null&&pt(Lt,We,-1/0,Z.sortObjects)}pt(q,We,0,Z.sortObjects),f.finish(),Z.sortObjects===!0&&f.sort(le,Fe),Wt=st.enabled===!1||st.isPresenting===!1||st.hasDepthSensing()===!1,Wt&&Fi.addToRenderList(f,q),this.info.render.frame++,at===!0&&St.beginShadows();const Qe=b.state.shadowsArray;Ht.render(Qe,q,We),at===!0&&St.endShadows(),this.info.autoReset===!0&&this.info.reset();const ke=f.opaque,ve=f.transmissive;if(b.setupLights(),We.isArrayCamera){const Lt=We.cameras;if(ve.length>0)for(let li=0,tt=Lt.length;li<tt;li++){const Ct=Lt[li];mi(ke,ve,q,Ct)}Wt&&Fi.render(q);for(let li=0,tt=Lt.length;li<tt;li++){const Ct=Lt[li];jt(f,q,Ct,Ct.viewport)}}else ve.length>0&&mi(ke,ve,q,We),Wt&&Fi.render(q),jt(f,q,We);w!==null&&N===0&&(pe.updateMultisampleRenderTarget(w),pe.updateRenderTargetMipmap(w)),q.isScene===!0&&q.onAfterRender(Z,q,We),Zi.resetDefaultState(),Q=-1,C=null,S.pop(),S.length>0?(b=S[S.length-1],at===!0&&St.setGlobalState(Z.clippingPlanes,b.state.camera)):b=null,U.pop(),U.length>0?f=U[U.length-1]:f=null};function pt(q,We,Qe,ke){if(q.visible===!1)return;if(q.layers.test(We.layers)){if(q.isGroup)Qe=q.renderOrder;else if(q.isLOD)q.autoUpdate===!0&&q.update(We);else if(q.isLight)b.pushLight(q),q.castShadow&&b.pushShadow(q);else if(q.isSprite){if(!q.frustumCulled||Ie.intersectsSprite(q)){ke&&Ye.setFromMatrixPosition(q.matrixWorld).applyMatrix4(dt);const li=Re.update(q),tt=q.material;tt.visible&&f.push(q,li,tt,Qe,Ye.z,null)}}else if((q.isMesh||q.isLine||q.isPoints)&&(!q.frustumCulled||Ie.intersectsObject(q))){const li=Re.update(q),tt=q.material;if(ke&&(q.boundingSphere!==void 0?(q.boundingSphere===null&&q.computeBoundingSphere(),Ye.copy(q.boundingSphere.center)):(li.boundingSphere===null&&li.computeBoundingSphere(),Ye.copy(li.boundingSphere.center)),Ye.applyMatrix4(q.matrixWorld).applyMatrix4(dt)),Array.isArray(tt)){const Ct=li.groups;for(let tn=0,In=Ct.length;tn<In;tn++){const Ki=Ct[tn],Zs=tt[Ki.materialIndex];Zs&&Zs.visible&&f.push(q,li,Zs,Qe,Ye.z,Ki)}}else tt.visible&&f.push(q,li,tt,Qe,Ye.z,null)}}const Lt=q.children;for(let li=0,tt=Lt.length;li<tt;li++)pt(Lt[li],We,Qe,ke)}function jt(q,We,Qe,ke){const ve=q.opaque,Lt=q.transmissive,li=q.transparent;b.setupLightsView(Qe),at===!0&&St.setGlobalState(Z.clippingPlanes,Qe),ke&&si.viewport(v.copy(ke)),ve.length>0&&Ji(ve,We,Qe),Lt.length>0&&Ji(Lt,We,Qe),li.length>0&&Ji(li,We,Qe),si.buffers.depth.setTest(!0),si.buffers.depth.setMask(!0),si.buffers.color.setMask(!0),si.setPolygonOffset(!1)}function mi(q,We,Qe,ke){if((Qe.isScene===!0?Qe.overrideMaterial:null)!==null)return;b.state.transmissionRenderTarget[ke.id]===void 0&&(b.state.transmissionRenderTarget[ke.id]=new pN(1,1,{generateMipmaps:!0,type:ci.has("EXT_color_buffer_half_float")||ci.has("EXT_color_buffer_float")?Iv:Yf,minFilter:bS,samples:4,stencilBuffer:o,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:uo.workingColorSpace}));const Lt=b.state.transmissionRenderTarget[ke.id],li=ke.viewport||v;Lt.setSize(li.z*Z.transmissionResolutionScale,li.w*Z.transmissionResolutionScale);const tt=Z.getRenderTarget();Z.setRenderTarget(Lt),Z.getClearColor(k),E=Z.getClearAlpha(),E<1&&Z.setClearColor(16777215,.5),Z.clear(),Wt&&Fi.render(Qe);const Ct=Z.toneMapping;Z.toneMapping=UF;const tn=ke.viewport;if(ke.viewport!==void 0&&(ke.viewport=void 0),b.setupLightsView(ke),at===!0&&St.setGlobalState(Z.clippingPlanes,ke),Ji(q,Qe,ke),pe.updateMultisampleRenderTarget(Lt),pe.updateRenderTargetMipmap(Lt),ci.has("WEBGL_multisampled_render_to_texture")===!1){let In=!1;for(let Ki=0,Zs=We.length;Ki<Zs;Ki++){const ms=We[Ki],ko=ms.object,ps=ms.geometry,$n=ms.material,sn=ms.group;if($n.side===zm&&ko.layers.test(ke.layers)){const mr=$n.side;$n.side=Kc,$n.needsUpdate=!0,xn(ko,Qe,ke,ps,$n,sn),$n.side=mr,$n.needsUpdate=!0,In=!0}}In===!0&&(pe.updateMultisampleRenderTarget(Lt),pe.updateRenderTargetMipmap(Lt))}Z.setRenderTarget(tt),Z.setClearColor(k,E),tn!==void 0&&(ke.viewport=tn),Z.toneMapping=Ct}function Ji(q,We,Qe){const ke=We.isScene===!0?We.overrideMaterial:null;for(let ve=0,Lt=q.length;ve<Lt;ve++){const li=q[ve],tt=li.object,Ct=li.geometry,tn=ke===null?li.material:ke,In=li.group;tt.layers.test(Qe.layers)&&xn(tt,We,Qe,Ct,tn,In)}}function xn(q,We,Qe,ke,ve,Lt){q.onBeforeRender(Z,We,Qe,ke,ve,Lt),q.modelViewMatrix.multiplyMatrices(Qe.matrixWorldInverse,q.matrixWorld),q.normalMatrix.getNormalMatrix(q.modelViewMatrix),ve.onBeforeRender(Z,We,Qe,ke,q,Lt),ve.transparent===!0&&ve.side===zm&&ve.forceSinglePass===!1?(ve.side=Kc,ve.needsUpdate=!0,Z.renderBufferDirect(Qe,We,ke,ve,q,Lt),ve.side=QF,ve.needsUpdate=!0,Z.renderBufferDirect(Qe,We,ke,ve,q,Lt),ve.side=zm):Z.renderBufferDirect(Qe,We,ke,ve,q,Lt),q.onAfterRender(Z,We,Qe,ke,ve,Lt)}function Gn(q,We,Qe){We.isScene!==!0&&(We=mt);const ke=bi.get(q),ve=b.state.lights,Lt=b.state.shadowsArray,li=ve.state.version,tt=vt.getParameters(q,ve.state,Lt,We,Qe),Ct=vt.getProgramCacheKey(tt);let tn=ke.programs;ke.environment=q.isMeshStandardMaterial?We.environment:null,ke.fog=We.fog,ke.envMap=(q.isMeshStandardMaterial?it:ie).get(q.envMap||ke.environment),ke.envMapRotation=ke.environment!==null&&q.envMap===null?We.environmentRotation:q.envMapRotation,tn===void 0&&(q.addEventListener("dispose",Ci),tn=new Map,ke.programs=tn);let In=tn.get(Ct);if(In!==void 0){if(ke.currentProgram===In&&ke.lightsStateVersion===li)return As(q,tt),In}else tt.uniforms=vt.getUniforms(q),q.onBeforeCompile(tt,Z),In=vt.acquireProgram(tt,Ct),tn.set(Ct,In),ke.uniforms=tt.uniforms;const Ki=ke.uniforms;return(!q.isShaderMaterial&&!q.isRawShaderMaterial||q.clipping===!0)&&(Ki.clippingPlanes=St.uniform),As(q,tt),ke.needsLights=He(q),ke.lightsStateVersion=li,ke.needsLights&&(Ki.ambientLightColor.value=ve.state.ambient,Ki.lightProbe.value=ve.state.probe,Ki.directionalLights.value=ve.state.directional,Ki.directionalLightShadows.value=ve.state.directionalShadow,Ki.spotLights.value=ve.state.spot,Ki.spotLightShadows.value=ve.state.spotShadow,Ki.rectAreaLights.value=ve.state.rectArea,Ki.ltc_1.value=ve.state.rectAreaLTC1,Ki.ltc_2.value=ve.state.rectAreaLTC2,Ki.pointLights.value=ve.state.point,Ki.pointLightShadows.value=ve.state.pointShadow,Ki.hemisphereLights.value=ve.state.hemi,Ki.directionalShadowMap.value=ve.state.directionalShadowMap,Ki.directionalShadowMatrix.value=ve.state.directionalShadowMatrix,Ki.spotShadowMap.value=ve.state.spotShadowMap,Ki.spotLightMatrix.value=ve.state.spotLightMatrix,Ki.spotLightMap.value=ve.state.spotLightMap,Ki.pointShadowMap.value=ve.state.pointShadowMap,Ki.pointShadowMatrix.value=ve.state.pointShadowMatrix),ke.currentProgram=In,ke.uniformsList=null,In}function Fs(q){if(q.uniformsList===null){const We=q.currentProgram.getUniforms();q.uniformsList=rD.seqWithValue(We.seq,q.uniforms)}return q.uniformsList}function As(q,We){const Qe=bi.get(q);Qe.outputColorSpace=We.outputColorSpace,Qe.batching=We.batching,Qe.batchingColor=We.batchingColor,Qe.instancing=We.instancing,Qe.instancingColor=We.instancingColor,Qe.instancingMorph=We.instancingMorph,Qe.skinning=We.skinning,Qe.morphTargets=We.morphTargets,Qe.morphNormals=We.morphNormals,Qe.morphColors=We.morphColors,Qe.morphTargetsCount=We.morphTargetsCount,Qe.numClippingPlanes=We.numClippingPlanes,Qe.numIntersection=We.numClipIntersection,Qe.vertexAlphas=We.vertexAlphas,Qe.vertexTangents=We.vertexTangents,Qe.toneMapping=We.toneMapping}function Vr(q,We,Qe,ke,ve){We.isScene!==!0&&(We=mt),pe.resetTextureUnits();const Lt=We.fog,li=ke.isMeshStandardMaterial?We.environment:null,tt=w===null?Z.outputColorSpace:w.isXRRenderTarget===!0?w.texture.colorSpace:Fy,Ct=(ke.isMeshStandardMaterial?it:ie).get(ke.envMap||li),tn=ke.vertexColors===!0&&!!Qe.attributes.color&&Qe.attributes.color.itemSize===4,In=!!Qe.attributes.tangent&&(!!ke.normalMap||ke.anisotropy>0),Ki=!!Qe.morphAttributes.position,Zs=!!Qe.morphAttributes.normal,ms=!!Qe.morphAttributes.color;let ko=UF;ke.toneMapped&&(w===null||w.isXRRenderTarget===!0)&&(ko=Z.toneMapping);const ps=Qe.morphAttributes.position||Qe.morphAttributes.normal||Qe.morphAttributes.color,$n=ps!==void 0?ps.length:0,sn=bi.get(ke),mr=b.state.lights;if(at===!0&&(je===!0||q!==C)){const pr=q===C&&ke.id===Q;St.setState(ke,q,pr)}let js=!1;ke.version===sn.__version?(sn.needsLights&&sn.lightsStateVersion!==mr.state.version||sn.outputColorSpace!==tt||ve.isBatchedMesh&&sn.batching===!1||!ve.isBatchedMesh&&sn.batching===!0||ve.isBatchedMesh&&sn.batchingColor===!0&&ve.colorTexture===null||ve.isBatchedMesh&&sn.batchingColor===!1&&ve.colorTexture!==null||ve.isInstancedMesh&&sn.instancing===!1||!ve.isInstancedMesh&&sn.instancing===!0||ve.isSkinnedMesh&&sn.skinning===!1||!ve.isSkinnedMesh&&sn.skinning===!0||ve.isInstancedMesh&&sn.instancingColor===!0&&ve.instanceColor===null||ve.isInstancedMesh&&sn.instancingColor===!1&&ve.instanceColor!==null||ve.isInstancedMesh&&sn.instancingMorph===!0&&ve.morphTexture===null||ve.isInstancedMesh&&sn.instancingMorph===!1&&ve.morphTexture!==null||sn.envMap!==Ct||ke.fog===!0&&sn.fog!==Lt||sn.numClippingPlanes!==void 0&&(sn.numClippingPlanes!==St.numPlanes||sn.numIntersection!==St.numIntersection)||sn.vertexAlphas!==tn||sn.vertexTangents!==In||sn.morphTargets!==Ki||sn.morphNormals!==Zs||sn.morphColors!==ms||sn.toneMapping!==ko||sn.morphTargetsCount!==$n)&&(js=!0):(js=!0,sn.__version=ke.version);let ml=sn.currentProgram;js===!0&&(ml=Gn(ke,We,ve));let am=!1,Ho=!1,dm=!1;const xo=ml.getUniforms(),Ee=sn.uniforms;if(si.useProgram(ml.program)&&(am=!0,Ho=!0,dm=!0),ke.id!==Q&&(Q=ke.id,Ho=!0),am||C!==q){si.buffers.depth.getReversed()?(Se.copy(q.projectionMatrix),tXe(Se),iXe(Se),xo.setValue(Ae,"projectionMatrix",Se)):xo.setValue(Ae,"projectionMatrix",q.projectionMatrix),xo.setValue(Ae,"viewMatrix",q.matrixWorldInverse);const sr=xo.map.cameraPosition;sr!==void 0&&sr.setValue(Ae,Yt.setFromMatrixPosition(q.matrixWorld)),we.logarithmicDepthBuffer&&xo.setValue(Ae,"logDepthBufFC",2/(Math.log(q.far+1)/Math.LN2)),(ke.isMeshPhongMaterial||ke.isMeshToonMaterial||ke.isMeshLambertMaterial||ke.isMeshBasicMaterial||ke.isMeshStandardMaterial||ke.isShaderMaterial)&&xo.setValue(Ae,"isOrthographic",q.isOrthographicCamera===!0),C!==q&&(C=q,Ho=!0,dm=!0)}if(ve.isSkinnedMesh){xo.setOptional(Ae,ve,"bindMatrix"),xo.setOptional(Ae,ve,"bindMatrixInverse");const pr=ve.skeleton;pr&&(pr.boneTexture===null&&pr.computeBoneTexture(),xo.setValue(Ae,"boneTexture",pr.boneTexture,pe))}ve.isBatchedMesh&&(xo.setOptional(Ae,ve,"batchingTexture"),xo.setValue(Ae,"batchingTexture",ve._matricesTexture,pe),xo.setOptional(Ae,ve,"batchingIdTexture"),xo.setValue(Ae,"batchingIdTexture",ve._indirectTexture,pe),xo.setOptional(Ae,ve,"batchingColorTexture"),ve._colorsTexture!==null&&xo.setValue(Ae,"batchingColorTexture",ve._colorsTexture,pe));const nr=Qe.morphAttributes;if((nr.position!==void 0||nr.normal!==void 0||nr.color!==void 0)&&Dt.update(ve,Qe,ml),(Ho||sn.receiveShadow!==ve.receiveShadow)&&(sn.receiveShadow=ve.receiveShadow,xo.setValue(Ae,"receiveShadow",ve.receiveShadow)),ke.isMeshGouraudMaterial&&ke.envMap!==null&&(Ee.envMap.value=Ct,Ee.flipEnvMap.value=Ct.isCubeTexture&&Ct.isRenderTargetTexture===!1?-1:1),ke.isMeshStandardMaterial&&ke.envMap===null&&We.environment!==null&&(Ee.envMapIntensity.value=We.environmentIntensity),Ho&&(xo.setValue(Ae,"toneMappingExposure",Z.toneMappingExposure),sn.needsLights&&ir(Ee,dm),Lt&&ke.fog===!0&&Ke.refreshFogUniforms(Ee,Lt),Ke.refreshMaterialUniforms(Ee,ke,ee,de,b.state.transmissionRenderTarget[q.id]),rD.upload(Ae,Fs(sn),Ee,pe)),ke.isShaderMaterial&&ke.uniformsNeedUpdate===!0&&(rD.upload(Ae,Fs(sn),Ee,pe),ke.uniformsNeedUpdate=!1),ke.isSpriteMaterial&&xo.setValue(Ae,"center",ve.center),xo.setValue(Ae,"modelViewMatrix",ve.modelViewMatrix),xo.setValue(Ae,"normalMatrix",ve.normalMatrix),xo.setValue(Ae,"modelMatrix",ve.matrixWorld),ke.isShaderMaterial||ke.isRawShaderMaterial){const pr=ke.uniformsGroups;for(let sr=0,cm=pr.length;sr<cm;sr++){const nu=pr[sr];Me.update(nu,ml),Me.bind(nu,ml)}}return ml}function ir(q,We){q.ambientLightColor.needsUpdate=We,q.lightProbe.needsUpdate=We,q.directionalLights.needsUpdate=We,q.directionalLightShadows.needsUpdate=We,q.pointLights.needsUpdate=We,q.pointLightShadows.needsUpdate=We,q.spotLights.needsUpdate=We,q.spotLightShadows.needsUpdate=We,q.rectAreaLights.needsUpdate=We,q.hemisphereLights.needsUpdate=We}function He(q){return q.isMeshLambertMaterial||q.isMeshToonMaterial||q.isMeshPhongMaterial||q.isMeshStandardMaterial||q.isShadowMaterial||q.isShaderMaterial&&q.lights===!0}this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return N},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(q,We,Qe){bi.get(q.texture).__webglTexture=We,bi.get(q.depthTexture).__webglTexture=Qe;const ke=bi.get(q);ke.__hasExternalTextures=!0,ke.__autoAllocateDepthBuffer=Qe===void 0,ke.__autoAllocateDepthBuffer||ci.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),ke.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(q,We){const Qe=bi.get(q);Qe.__webglFramebuffer=We,Qe.__useDefaultFramebuffer=We===void 0};const xe=Ae.createFramebuffer();this.setRenderTarget=function(q,We=0,Qe=0){w=q,y=We,N=Qe;let ke=!0,ve=null,Lt=!1,li=!1;if(q){const Ct=bi.get(q);if(Ct.__useDefaultFramebuffer!==void 0)si.bindFramebuffer(Ae.FRAMEBUFFER,null),ke=!1;else if(Ct.__webglFramebuffer===void 0)pe.setupRenderTarget(q);else if(Ct.__hasExternalTextures)pe.rebindTextures(q,bi.get(q.texture).__webglTexture,bi.get(q.depthTexture).__webglTexture);else if(q.depthBuffer){const Ki=q.depthTexture;if(Ct.__boundDepthTexture!==Ki){if(Ki!==null&&bi.has(Ki)&&(q.width!==Ki.image.width||q.height!==Ki.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");pe.setupDepthRenderbuffer(q)}}const tn=q.texture;(tn.isData3DTexture||tn.isDataArrayTexture||tn.isCompressedArrayTexture)&&(li=!0);const In=bi.get(q).__webglFramebuffer;q.isWebGLCubeRenderTarget?(Array.isArray(In[We])?ve=In[We][Qe]:ve=In[We],Lt=!0):q.samples>0&&pe.useMultisampledRTT(q)===!1?ve=bi.get(q).__webglMultisampledFramebuffer:Array.isArray(In)?ve=In[Qe]:ve=In,v.copy(q.viewport),Y.copy(q.scissor),J=q.scissorTest}else v.copy(Ue).multiplyScalar(ee).floor(),Y.copy(ze).multiplyScalar(ee).floor(),J=Oe;if(Qe!==0&&(ve=xe),si.bindFramebuffer(Ae.FRAMEBUFFER,ve)&&ke&&si.drawBuffers(q,ve),si.viewport(v),si.scissor(Y),si.setScissorTest(J),Lt){const Ct=bi.get(q.texture);Ae.framebufferTexture2D(Ae.FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,Ae.TEXTURE_CUBE_MAP_POSITIVE_X+We,Ct.__webglTexture,Qe)}else if(li){const Ct=bi.get(q.texture),tn=We;Ae.framebufferTextureLayer(Ae.FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,Ct.__webglTexture,Qe,tn)}else if(q!==null&&Qe!==0){const Ct=bi.get(q.texture);Ae.framebufferTexture2D(Ae.FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,Ae.TEXTURE_2D,Ct.__webglTexture,Qe)}Q=-1},this.readRenderTargetPixels=function(q,We,Qe,ke,ve,Lt,li){if(!(q&&q.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let tt=bi.get(q).__webglFramebuffer;if(q.isWebGLCubeRenderTarget&&li!==void 0&&(tt=tt[li]),tt){si.bindFramebuffer(Ae.FRAMEBUFFER,tt);try{const Ct=q.texture,tn=Ct.format,In=Ct.type;if(!we.textureFormatReadable(tn)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!we.textureTypeReadable(In)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}We>=0&&We<=q.width-ke&&Qe>=0&&Qe<=q.height-ve&&Ae.readPixels(We,Qe,ke,ve,xi.convert(tn),xi.convert(In),Lt)}finally{const Ct=w!==null?bi.get(w).__webglFramebuffer:null;si.bindFramebuffer(Ae.FRAMEBUFFER,Ct)}}},this.readRenderTargetPixelsAsync=async function(q,We,Qe,ke,ve,Lt,li){if(!(q&&q.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let tt=bi.get(q).__webglFramebuffer;if(q.isWebGLCubeRenderTarget&&li!==void 0&&(tt=tt[li]),tt){const Ct=q.texture,tn=Ct.format,In=Ct.type;if(!we.textureFormatReadable(tn))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!we.textureTypeReadable(In))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(We>=0&&We<=q.width-ke&&Qe>=0&&Qe<=q.height-ve){si.bindFramebuffer(Ae.FRAMEBUFFER,tt);const Ki=Ae.createBuffer();Ae.bindBuffer(Ae.PIXEL_PACK_BUFFER,Ki),Ae.bufferData(Ae.PIXEL_PACK_BUFFER,Lt.byteLength,Ae.STREAM_READ),Ae.readPixels(We,Qe,ke,ve,xi.convert(tn),xi.convert(In),0);const Zs=w!==null?bi.get(w).__webglFramebuffer:null;si.bindFramebuffer(Ae.FRAMEBUFFER,Zs);const ms=Ae.fenceSync(Ae.SYNC_GPU_COMMANDS_COMPLETE,0);return Ae.flush(),await eXe(Ae,ms,4),Ae.bindBuffer(Ae.PIXEL_PACK_BUFFER,Ki),Ae.getBufferSubData(Ae.PIXEL_PACK_BUFFER,0,Lt),Ae.deleteBuffer(Ki),Ae.deleteSync(ms),Lt}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(q,We=null,Qe=0){q.isTexture!==!0&&(iZ("WebGLRenderer: copyFramebufferToTexture function signature has changed."),We=arguments[0]||null,q=arguments[1]);const ke=Math.pow(2,-Qe),ve=Math.floor(q.image.width*ke),Lt=Math.floor(q.image.height*ke),li=We!==null?We.x:0,tt=We!==null?We.y:0;pe.setTexture2D(q,0),Ae.copyTexSubImage2D(Ae.TEXTURE_2D,Qe,0,0,li,tt,ve,Lt),si.unbindTexture()};const me=Ae.createFramebuffer(),Zt=Ae.createFramebuffer();this.copyTextureToTexture=function(q,We,Qe=null,ke=null,ve=0,Lt=null){q.isTexture!==!0&&(iZ("WebGLRenderer: copyTextureToTexture function signature has changed."),ke=arguments[0]||null,q=arguments[1],We=arguments[2],Lt=arguments[3]||0,Qe=null),Lt===null&&(ve!==0?(iZ("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Lt=ve,ve=0):Lt=0);let li,tt,Ct,tn,In,Ki,Zs,ms,ko;const ps=q.isCompressedTexture?q.mipmaps[Lt]:q.image;if(Qe!==null)li=Qe.max.x-Qe.min.x,tt=Qe.max.y-Qe.min.y,Ct=Qe.isBox3?Qe.max.z-Qe.min.z:1,tn=Qe.min.x,In=Qe.min.y,Ki=Qe.isBox3?Qe.min.z:0;else{const nr=Math.pow(2,-ve);li=Math.floor(ps.width*nr),tt=Math.floor(ps.height*nr),q.isDataArrayTexture?Ct=ps.depth:q.isData3DTexture?Ct=Math.floor(ps.depth*nr):Ct=1,tn=0,In=0,Ki=0}ke!==null?(Zs=ke.x,ms=ke.y,ko=ke.z):(Zs=0,ms=0,ko=0);const $n=xi.convert(We.format),sn=xi.convert(We.type);let mr;We.isData3DTexture?(pe.setTexture3D(We,0),mr=Ae.TEXTURE_3D):We.isDataArrayTexture||We.isCompressedArrayTexture?(pe.setTexture2DArray(We,0),mr=Ae.TEXTURE_2D_ARRAY):(pe.setTexture2D(We,0),mr=Ae.TEXTURE_2D),Ae.pixelStorei(Ae.UNPACK_FLIP_Y_WEBGL,We.flipY),Ae.pixelStorei(Ae.UNPACK_PREMULTIPLY_ALPHA_WEBGL,We.premultiplyAlpha),Ae.pixelStorei(Ae.UNPACK_ALIGNMENT,We.unpackAlignment);const js=Ae.getParameter(Ae.UNPACK_ROW_LENGTH),ml=Ae.getParameter(Ae.UNPACK_IMAGE_HEIGHT),am=Ae.getParameter(Ae.UNPACK_SKIP_PIXELS),Ho=Ae.getParameter(Ae.UNPACK_SKIP_ROWS),dm=Ae.getParameter(Ae.UNPACK_SKIP_IMAGES);Ae.pixelStorei(Ae.UNPACK_ROW_LENGTH,ps.width),Ae.pixelStorei(Ae.UNPACK_IMAGE_HEIGHT,ps.height),Ae.pixelStorei(Ae.UNPACK_SKIP_PIXELS,tn),Ae.pixelStorei(Ae.UNPACK_SKIP_ROWS,In),Ae.pixelStorei(Ae.UNPACK_SKIP_IMAGES,Ki);const xo=q.isDataArrayTexture||q.isData3DTexture,Ee=We.isDataArrayTexture||We.isData3DTexture;if(q.isDepthTexture){const nr=bi.get(q),pr=bi.get(We),sr=bi.get(nr.__renderTarget),cm=bi.get(pr.__renderTarget);si.bindFramebuffer(Ae.READ_FRAMEBUFFER,sr.__webglFramebuffer),si.bindFramebuffer(Ae.DRAW_FRAMEBUFFER,cm.__webglFramebuffer);for(let nu=0;nu<Ct;nu++)xo&&(Ae.framebufferTextureLayer(Ae.READ_FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,bi.get(q).__webglTexture,ve,Ki+nu),Ae.framebufferTextureLayer(Ae.DRAW_FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,bi.get(We).__webglTexture,Lt,ko+nu)),Ae.blitFramebuffer(tn,In,li,tt,Zs,ms,li,tt,Ae.DEPTH_BUFFER_BIT,Ae.NEAREST);si.bindFramebuffer(Ae.READ_FRAMEBUFFER,null),si.bindFramebuffer(Ae.DRAW_FRAMEBUFFER,null)}else if(ve!==0||q.isRenderTargetTexture||bi.has(q)){const nr=bi.get(q),pr=bi.get(We);si.bindFramebuffer(Ae.READ_FRAMEBUFFER,me),si.bindFramebuffer(Ae.DRAW_FRAMEBUFFER,Zt);for(let sr=0;sr<Ct;sr++)xo?Ae.framebufferTextureLayer(Ae.READ_FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,nr.__webglTexture,ve,Ki+sr):Ae.framebufferTexture2D(Ae.READ_FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,Ae.TEXTURE_2D,nr.__webglTexture,ve),Ee?Ae.framebufferTextureLayer(Ae.DRAW_FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,pr.__webglTexture,Lt,ko+sr):Ae.framebufferTexture2D(Ae.DRAW_FRAMEBUFFER,Ae.COLOR_ATTACHMENT0,Ae.TEXTURE_2D,pr.__webglTexture,Lt),ve!==0?Ae.blitFramebuffer(tn,In,li,tt,Zs,ms,li,tt,Ae.COLOR_BUFFER_BIT,Ae.NEAREST):Ee?Ae.copyTexSubImage3D(mr,Lt,Zs,ms,ko+sr,tn,In,li,tt):Ae.copyTexSubImage2D(mr,Lt,Zs,ms,tn,In,li,tt);si.bindFramebuffer(Ae.READ_FRAMEBUFFER,null),si.bindFramebuffer(Ae.DRAW_FRAMEBUFFER,null)}else Ee?q.isDataTexture||q.isData3DTexture?Ae.texSubImage3D(mr,Lt,Zs,ms,ko,li,tt,Ct,$n,sn,ps.data):We.isCompressedArrayTexture?Ae.compressedTexSubImage3D(mr,Lt,Zs,ms,ko,li,tt,Ct,$n,ps.data):Ae.texSubImage3D(mr,Lt,Zs,ms,ko,li,tt,Ct,$n,sn,ps):q.isDataTexture?Ae.texSubImage2D(Ae.TEXTURE_2D,Lt,Zs,ms,li,tt,$n,sn,ps.data):q.isCompressedTexture?Ae.compressedTexSubImage2D(Ae.TEXTURE_2D,Lt,Zs,ms,ps.width,ps.height,$n,ps.data):Ae.texSubImage2D(Ae.TEXTURE_2D,Lt,Zs,ms,li,tt,$n,sn,ps);Ae.pixelStorei(Ae.UNPACK_ROW_LENGTH,js),Ae.pixelStorei(Ae.UNPACK_IMAGE_HEIGHT,ml),Ae.pixelStorei(Ae.UNPACK_SKIP_PIXELS,am),Ae.pixelStorei(Ae.UNPACK_SKIP_ROWS,Ho),Ae.pixelStorei(Ae.UNPACK_SKIP_IMAGES,dm),Lt===0&&We.generateMipmaps&&Ae.generateMipmap(mr),si.unbindTexture()},this.copyTextureToTexture3D=function(q,We,Qe=null,ke=null,ve=0){return q.isTexture!==!0&&(iZ("WebGLRenderer: copyTextureToTexture3D function signature has changed."),Qe=arguments[0]||null,ke=arguments[1]||null,q=arguments[2],We=arguments[3],ve=arguments[4]||0),iZ('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(q,We,Qe,ke,ve)},this.initRenderTarget=function(q){bi.get(q).__webglFramebuffer===void 0&&pe.setupRenderTarget(q)},this.initTexture=function(q){q.isCubeTexture?pe.setTextureCube(q,0):q.isData3DTexture?pe.setTexture3D(q,0):q.isDataArrayTexture||q.isCompressedArrayTexture?pe.setTexture2DArray(q,0):pe.setTexture2D(q,0),si.unbindTexture()},this.resetState=function(){y=0,N=0,w=null,si.reset(),Zi.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Nf}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorspace=uo._getDrawingBufferColorSpace(e),t.unpackColorSpace=uo._getUnpackColorSpace()}}class F3e{parse(e){const t=e.points.map(o=>[o.x,o.y,o.z]).flat(),i=e.cells||[],n=e.pointData||{};return{points:t,cells:i,pointData:n}}}class A3e{parse(e){const t=e.points.map(r=>[r.x,r.y,r.z]).flat(),i=e.polygons||[],n=e.pointData||{},o=e.normals||[];return{points:t,polygons:i,pointData:n,normals:o}}}class Z3e{parse(e){const t=e.data.points;console.log("points",t);const i=e.data.uvw,n=i[0],o=i[1],r=i[2],l=[];for(let a=0;a<n-1;a++)for(let d=0;d<o-1;d++)for(let c=0;c<r-1;c++){const h=a+d*n+c*n*o,u=h+1,m=h+n,p=m+1,g=h+n*o,f=u+n*o,b=m+n*o,U=p+n*o;l.push(h,u),l.push(u,p),l.push(p,m),l.push(m,h),l.push(g,f),l.push(f,U),l.push(U,b),l.push(b,g),l.push(h,g),l.push(g,b),l.push(b,m),l.push(m,h),l.push(u,f),l.push(f,U),l.push(U,p),l.push(p,u),l.push(h,u),l.push(u,f),l.push(f,g),l.push(g,h),l.push(m,p),l.push(p,U),l.push(U,b),l.push(b,m)}return{points:t,indices:l,uSize:n,vSize:o,wSize:r}}}class S3e{parse(e){return e.data}}class N3e{parse(e){return e.data}}class R3e{static createParser(e){switch(e){case"UNSTRUCTURED_GRID":return new F3e;case"POLYDATA":return new A3e;case"xyz":return new Z3e;case"bdf":return new S3e;case"cgns":return new N3e;default:console.log("2222222")}}}class V3e{render(e,t){const{points:i,cells:n,pointData:o}=e,r=this.createPoints(i);t.add(r);const l=this.createLines(i,n);if(t.add(l),o&&o["Displacement-magnitude"]){const a=o["Displacement-magnitude"],d=Math.min(...a),c=Math.max(...a),h=this.createColoredPoints(i,a,d,c);t.add(h)}if(o&&o.translation){const a=o.translation,d=this.createVectorArrows(i,a);t.add(d)}}createPoints(e){const t=new al;t.setAttribute("position",new ur(e,3));const i=new kB({color:16711680,size:10});return new XJ(t,i)}createLines(e,t){const i=new al;i.setAttribute("position",new ur(e,3));const n=[];for(const r of t)for(let l=0;l<r.length-1;l++)n.push(r[l],r[l+1]);i.setIndex(n);const o=new Gv({color:255});return new lse(i,o)}createColoredPoints(e,t,i,n){const o=new al;o.setAttribute("position",new ur(e,3));const r=[];for(let a=0;a<t.length;a++){const d=(t[a]-i)/(n-i),c=new ws;c.setHSL(d*.7,1,.5),r.push(c.r,c.g,c.b)}o.setAttribute("color",new ur(r,3));const l=new kB({size:10,vertexColors:!0});return new XJ(o,l)}createVectorArrows(e,t){const i=new Mg;for(let n=0;n<e.length;n+=3){const o=e[n],r=e[n+1],l=e[n+2],a=t[n],d=t[n+1],c=t[n+2],h=new et(a,d,c).normalize(),u=new _Ae(h,new et(o,r,l),Math.sqrt(a*a+d*d+c*c)*10,16711680);i.add(u)}return i}}class W3e{render(e,t){const{points:i,polygons:n,pointData:o,normals:r}=e,l=this.createPoints(i);t.add(l);const a=this.createPolygons(i,n);if(t.add(a),o&&o["Displacement-magnitude"]){const d=o["Displacement-magnitude"],c=Math.min(...d),h=Math.max(...d),u=this.createColoredPoints(i,d,c,h);t.add(u)}if(r&&r.length>0){const d=r.map(h=>[h.x,h.y,h.z]).flat(),c=this.createVectorArrows(i,d);t.add(c)}}createPoints(e){const t=new al;t.setAttribute("position",new ur(e,3));const i=new kB({color:16711680,size:10});return new XJ(t,i)}createPolygons(e,t){const i=new al;i.setAttribute("position",new ur(e,3));const n=[];for(const r of t){for(let l=0;l<r.length-1;l++)n.push(r[l],r[l+1]);n.push(r[r.length-1],r[0])}i.setIndex(n);const o=new Gv({color:255});return new lse(i,o)}createColoredPoints(e,t,i,n){const o=new al;o.setAttribute("position",new ur(e,3));const r=[];for(let a=0;a<t.length;a++){const d=(t[a]-i)/(n-i),c=new ws;c.setHSL(d*.7,1,.5),r.push(c.r,c.g,c.b)}o.setAttribute("color",new ur(r,3));const l=new kB({size:10,vertexColors:!0});return new XJ(o,l)}createVectorArrows(e,t){const i=new Mg;for(let n=0;n<e.length;n+=3){const o=e[n],r=e[n+1],l=e[n+2],a=t[n],d=t[n+1],c=t[n+2],h=new et(a,d,c).normalize(),u=new _Ae(h,new et(o,r,l),Math.sqrt(a*a+d*d+c*c)*10,16711680);i.add(u)}return i}}class y3e{render(e,t){let{points:i,indices:n}=e;console.log("points",i),i=Q3e(i,5);const r=new al;r.setAttribute("position",new ur(i,3)),r.setIndex(n);const l=new Gv({color:0}),a=new lse(r,l);t.add(a);const d=new dse(.1),c=new b3({color:16711680});for(let h=0;h<i.length;h+=3){const u=i[h],m=i[h+1],p=i[h+2],g=new Dh(d,c);g.position.set(u,m,p),t.add(g)}}}const Q3e=(s,e=1)=>{const t=new et(1/0,1/0,1/0),i=new et(-1/0,-1/0,-1/0);for(let l=0;l<s.length;l+=3)t.x=Math.min(t.x,s[l]),t.y=Math.min(t.y,s[l+1]),t.z=Math.min(t.z,s[l+2]),i.x=Math.max(i.x,s[l]),i.y=Math.max(i.y,s[l+1]),i.z=Math.max(i.z,s[l+2]);const n=new et().subVectors(i,t),o=Math.max(n.x,n.y,n.z),r=[];for(let l=0;l<s.length;l+=3){const a=((s[l]-t.x)/o*2-1)*e,d=((s[l+1]-t.y)/o*2-1)*e,c=((s[l+2]-t.z)/o*2-1)*e;r.push(a,d,c)}return r};class M3e{constructor(e,t){this.updateProgress=e,this.onComplete=t,this.meshGroup=new Mg,this.defaultMaterial=new JAe({color:2200782,side:zm,flatShading:!0,transparent:!0,opacity:.8})}async render(e,t){this.clearScene(t),t.add(this.meshGroup);try{await this.updateProgressAsync("开始渲染BDF模型...");const{vertices:i,indices:n}=e;await this.updateProgressAsync("创建几何体...");const o=new al;o.setAttribute("position",new $c(new Float32Array(i),3)),n&&n.length>0&&o.setIndex(new $c(new Uint32Array(n),1)),await this.updateProgressAsync("优化几何体..."),o.computeVertexNormals(),o.computeBoundingSphere(),await this.updateProgressAsync("创建网格...");const r=new Dh(o,this.defaultMaterial);this.meshGroup.add(r),this.onComplete&&this.onComplete()}catch(i){console.error("BDF渲染错误:",i),this.onComplete&&this.onComplete(i)}}async updateProgressAsync(e){this.updateProgress&&(this.updateProgress(e),await new Promise(t=>requestAnimationFrame(t)))}clearScene(e){this.meshGroup.traverse(t=>{t.isMesh&&(t.geometry.dispose(),t.material.dispose())}),e.remove(this.meshGroup),this.meshGroup=new Mg}}class w3e{constructor(e,t){this.updateProgress=e,this.onComplete=t,this.chunkSize=5e4,this.meshGroup=new Mg,this.defaultMaterial=new JAe({color:2200782,side:zm,flatShading:!0,vertexColors:!1})}async render(e,t){this.clearScene(t),t.add(this.meshGroup);try{const i=Object.keys(e).filter(n=>n!=="CGNSLibraryVersion");for(const n of i){const o=e[n],r=Object.keys(o);for(const l of r)await this.processZone(o[l],`${n}/${l}`)}this.onComplete&&this.onComplete()}catch(i){console.error("渲染过程中出错:",i),this.onComplete&&this.onComplete(i)}}async processZone(e,t){await this.updateProgressAsync(`正在处理区域 ${t}...`);const{vertices:i,indices:n}=this.prepareZoneData(e),o=new al;o.setAttribute("position",new $c(i,3)),n&&n.length>0&&o.setIndex(new $c(n,1)),this.postProcessGeometry(o,e);const r=new Dh(o,this.getZoneMaterial(e));r.name=t,this.meshGroup.add(r)}prepareZoneData(e){const t=e.vertices instanceof Float32Array?e.vertices:new Float32Array(e.vertices);let i=null;return e.indices&&e.indices.length>0&&(i=e.indices instanceof Uint32Array?e.indices:new Uint32Array(e.indices)),{vertices:t,indices:i}}postProcessGeometry(e,t){e.computeVertexNormals(),e.computeBoundingSphere(),t.dim===2&&e.rotateX(-Math.PI/2),e.normalizeNormals()}getZoneMaterial(e){const t=this.defaultMaterial.clone();return e.type==="STRUCTURED"&&(t.wireframe=!0,t.wireframeLinewidth=1),t}async updateProgressAsync(e){this.updateProgress&&(this.updateProgress(e),await new Promise(t=>requestAnimationFrame(t)))}clearScene(e){this.meshGroup.traverse(t=>{t.isMesh&&(t.geometry.dispose(),t.material.dispose())}),e.remove(this.meshGroup),this.meshGroup=new Mg}}const Bce={type:"change"},hse={type:"start"},KAe={type:"end"},Ix=new f3,Lce=new iU,T3e=Math.cos(70*qJe.DEG2RAD),vl=new et,Sc=2*Math.PI,_o={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Mj=1e-6;class C3e extends vXe{constructor(e,t=null){super(e,t),this.state=_o.NONE,this.enabled=!0,this.target=new et,this.cursor=new et,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:N1.ROTATE,MIDDLE:N1.DOLLY,RIGHT:N1.PAN},this.touches={ONE:pW.ROTATE,TWO:pW.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new et,this._lastQuaternion=new gN,this._lastTargetPosition=new et,this._quat=new gN().setFromUnitVectors(e.up,new et(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new rce,this._sphericalDelta=new rce,this._scale=1,this._panOffset=new et,this._rotateStart=new rs,this._rotateEnd=new rs,this._rotateDelta=new rs,this._panStart=new rs,this._panEnd=new rs,this._panDelta=new rs,this._dollyStart=new rs,this._dollyEnd=new rs,this._dollyDelta=new rs,this._dollyDirection=new et,this._mouse=new rs,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=L3e.bind(this),this._onPointerDown=B3e.bind(this),this._onPointerUp=v3e.bind(this),this._onContextMenu=J3e.bind(this),this._onMouseWheel=I3e.bind(this),this._onKeyDown=E3e.bind(this),this._onTouchStart=D3e.bind(this),this._onTouchMove=G3e.bind(this),this._onMouseDown=k3e.bind(this),this._onMouseMove=x3e.bind(this),this._interceptControlDown=X3e.bind(this),this._interceptControlUp=Y3e.bind(this),this.domElement!==null&&this.connect(),this.update()}connect(){this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(Bce),this.update(),this.state=_o.NONE}update(e=null){const t=this.object.position;vl.copy(t).sub(this.target),vl.applyQuaternion(this._quat),this._spherical.setFromVector3(vl),this.autoRotate&&this.state===_o.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,n=this.maxAzimuthAngle;isFinite(i)&&isFinite(n)&&(i<-Math.PI?i+=Sc:i>Math.PI&&(i-=Sc),n<-Math.PI?n+=Sc:n>Math.PI&&(n-=Sc),i<=n?this._spherical.theta=Math.max(i,Math.min(n,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+n)/2?Math.max(i,this._spherical.theta):Math.min(n,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let o=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const r=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),o=r!=this._spherical.radius}if(vl.setFromSpherical(this._spherical),vl.applyQuaternion(this._quatInverse),t.copy(this.target).add(vl),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let r=null;if(this.object.isPerspectiveCamera){const l=vl.length();r=this._clampDistance(l*this._scale);const a=l-r;this.object.position.addScaledVector(this._dollyDirection,a),this.object.updateMatrixWorld(),o=!!a}else if(this.object.isOrthographicCamera){const l=new et(this._mouse.x,this._mouse.y,0);l.unproject(this.object);const a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),o=a!==this.object.zoom;const d=new et(this._mouse.x,this._mouse.y,0);d.unproject(this.object),this.object.position.sub(d).add(l),this.object.updateMatrixWorld(),r=vl.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;r!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(r).add(this.object.position):(Ix.origin.copy(this.object.position),Ix.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(Ix.direction))<T3e?this.object.lookAt(this.target):(Lce.setFromNormalAndCoplanarPoint(this.object.up,this.target),Ix.intersectPlane(Lce,this.target))))}else if(this.object.isOrthographicCamera){const r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),r!==this.object.zoom&&(this.object.updateProjectionMatrix(),o=!0)}return this._scale=1,this._performCursorZoom=!1,o||this._lastPosition.distanceToSquared(this.object.position)>Mj||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Mj||this._lastTargetPosition.distanceToSquared(this.target)>Mj?(this.dispatchEvent(Bce),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?Sc/60*this.autoRotateSpeed*e:Sc/60/60*this.autoRotateSpeed}_getZoomScale(e){const t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){vl.setFromMatrixColumn(t,0),vl.multiplyScalar(-e),this._panOffset.add(vl)}_panUp(e,t){this.screenSpacePanning===!0?vl.setFromMatrixColumn(t,1):(vl.setFromMatrixColumn(t,0),vl.crossVectors(this.object.up,vl)),vl.multiplyScalar(e),this._panOffset.add(vl)}_pan(e,t){const i=this.domElement;if(this.object.isPerspectiveCamera){const n=this.object.position;vl.copy(n).sub(this.target);let o=vl.length();o*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*o/i.clientHeight,this.object.matrix),this._panUp(2*t*o/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),n=e-i.left,o=t-i.top,r=i.width,l=i.height;this._mouse.x=n/r*2-1,this._mouse.y=-(o/l)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(Sc*this._rotateDelta.x/t.clientHeight),this._rotateUp(Sc*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(Sc*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-Sc*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(Sc*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-Sc*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),n=.5*(e.pageY+t.y);this._rotateStart.set(i,n)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),n=.5*(e.pageY+t.y);this._panStart.set(i,n)}}_handleTouchStartDolly(e){const t=this._getSecondPointerPosition(e),i=e.pageX-t.x,n=e.pageY-t.y,o=Math.sqrt(i*i+n*n);this._dollyStart.set(0,o)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{const i=this._getSecondPointerPosition(e),n=.5*(e.pageX+i.x),o=.5*(e.pageY+i.y);this._rotateEnd.set(n,o)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(Sc*this._rotateDelta.x/t.clientHeight),this._rotateUp(Sc*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),n=.5*(e.pageY+t.y);this._panEnd.set(i,n)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){const t=this._getSecondPointerPosition(e),i=e.pageX-t.x,n=e.pageY-t.y,o=Math.sqrt(i*i+n*n);this._dollyEnd.set(0,o),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const r=(e.pageX+t.x)*.5,l=(e.pageY+t.y)*.5;this._updateZoomParameters(r,l)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let t=this._pointerPositions[e.pointerId];t===void 0&&(t=new rs,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){const t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){const t=e.deltaMode,i={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:i.deltaY*=16;break;case 2:i.deltaY*=100;break}return e.ctrlKey&&!this._controlActive&&(i.deltaY*=10),i}}function B3e(s){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(s.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(s)&&(this._addPointer(s),s.pointerType==="touch"?this._onTouchStart(s):this._onMouseDown(s)))}function L3e(s){this.enabled!==!1&&(s.pointerType==="touch"?this._onTouchMove(s):this._onMouseMove(s))}function v3e(s){switch(this._removePointer(s),this._pointers.length){case 0:this.domElement.releasePointerCapture(s.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(KAe),this.state=_o.NONE;break;case 1:const e=this._pointers[0],t=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:t.x,pageY:t.y});break}}function k3e(s){let e;switch(s.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case N1.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(s),this.state=_o.DOLLY;break;case N1.ROTATE:if(s.ctrlKey||s.metaKey||s.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(s),this.state=_o.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(s),this.state=_o.ROTATE}break;case N1.PAN:if(s.ctrlKey||s.metaKey||s.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(s),this.state=_o.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(s),this.state=_o.PAN}break;default:this.state=_o.NONE}this.state!==_o.NONE&&this.dispatchEvent(hse)}function x3e(s){switch(this.state){case _o.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(s);break;case _o.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(s);break;case _o.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(s);break}}function I3e(s){this.enabled===!1||this.enableZoom===!1||this.state!==_o.NONE||(s.preventDefault(),this.dispatchEvent(hse),this._handleMouseWheel(this._customWheelEvent(s)),this.dispatchEvent(KAe))}function E3e(s){this.enabled!==!1&&this._handleKeyDown(s)}function D3e(s){switch(this._trackPointer(s),this._pointers.length){case 1:switch(this.touches.ONE){case pW.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(s),this.state=_o.TOUCH_ROTATE;break;case pW.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(s),this.state=_o.TOUCH_PAN;break;default:this.state=_o.NONE}break;case 2:switch(this.touches.TWO){case pW.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(s),this.state=_o.TOUCH_DOLLY_PAN;break;case pW.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(s),this.state=_o.TOUCH_DOLLY_ROTATE;break;default:this.state=_o.NONE}break;default:this.state=_o.NONE}this.state!==_o.NONE&&this.dispatchEvent(hse)}function G3e(s){switch(this._trackPointer(s),this.state){case _o.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(s),this.update();break;case _o.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(s),this.update();break;case _o.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(s),this.update();break;case _o.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(s),this.update();break;default:this.state=_o.NONE}}function J3e(s){this.enabled!==!1&&s.preventDefault()}function X3e(s){s.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function Y3e(s){s.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function _3e(){const s=new yXe;return s.background=new ws(230/255,231/255,233/255),s}function z3e(){const s=new Iu(75,window.innerWidth/window.innerHeight,.1,1e3);return s.position.set(100,100,300),s.lookAt(0,0,0),s}function O3e(s){const e=new U3e({antialias:!0});console.log("container.clientWidth",s.clientWidth);const t=s.clientWidth||775,i=s.clientHeight||410;return e.setSize(t,i),s.appendChild(e.domElement),e}function j3e(s,e){const t=new C3e(s,e.domElement);return t.enableDamping=!0,t.dampingFactor=.05,t.screenSpacePanning=!0,t.minDistance=10,t.maxDistance=8e3,t}const P3e=(s,e,t,i)=>{const n=()=>{requestAnimationFrame(n),i.update(),t.render(s,e)};n()},H3e=s=>{s&&s.dispose()};const K3e={__name:"ThreeScene",props:{data:{type:Object,required:!0},height:{type:String,required:!0}},setup(s){const e=s,t=X(null),i=X(0);let n,o,r,l;const a=()=>{n=_3e(),o=z3e(),r=O3e(t.value),l=j3e(o,r)},d=(b,U)=>{i.value=Math.floor(b/U*100)},c=b=>{if(!b)return;const S=R3e.createParser(b.data.datasetType).parse(b);let Z;switch(b.data.datasetType){case"UNSTRUCTURED_GRID":Z=new V3e;break;case"POLYDATA":Z=new W3e;break;case"xyz":Z=new y3e;break;case"bdf":Z=new M3e(d,()=>{g(n,o)});break;case"cgns":Z=new w3e(d,()=>{f(n,o)});break;default:console.log("11111")}if(Z.render(S,n),b.datasetType==="UNSTRUCTURED_GRID"){u(n,o);return}if(b.datasetType==="POLYDATA"){m(n,o);return}if(b.data.datasetType==="xyz"){p(n,o);return}if(b.data.datasetType==="bdf"){g(n,o);return}if(b.data.datasetType==="cgns"){f(n,o);return}};Rd(()=>e.data,b=>{if(b){for(;n.children.length>0;)n.remove(n.children[0]);i.value=0,c(b)}},{immediate:!0}),ul(()=>{Es(()=>{a(),P3e(n,o,r,l),window.addEventListener("resize",h)})}),hy(()=>{H3e(r),window.removeEventListener("resize",h)});const h=()=>{const b=t.value.clientWidth,U=t.value.clientHeight;o.aspect=b/U,o.updateProjectionMatrix(),r.setSize(b,U)},u=(b,U)=>{const S=new Ng().setFromObject(b),Z=new et;S.getSize(Z);const R=Math.max(Z.x,Z.y,Z.z),y=U.fov*(Math.PI/180);let N=Math.abs(R/Math.sin(y/2));const w=new et;S.getCenter(w),U.position.set(w.x,w.y,N),U.lookAt(w)},m=(b,U)=>{const S=new Ng().setFromObject(b);S.set(new et(-100,-100,-100),new et(100,100,100));const Z=new et;S.getSize(Z),console.log("Polydata bounding box:",S),console.log("Polydata size:",Z);const R=Math.max(Z.x,Z.y,Z.z),y=U.fov*(Math.PI/180);let N=Math.abs(R/Math.sin(y/2));const w=new et;S.getCenter(w),U.position.set(w.x,w.y,N*.8),U.lookAt(w)},p=(b,U)=>{const S=new Ng().setFromObject(b),Z=new et;S.getSize(Z),console.log("XYZ bounding box:",S),console.log("XYZ size:",Z);const R=Math.max(Z.x,Z.y,Z.z),y=U.fov*(Math.PI/180);let N=Math.abs(R/Math.sin(y/2));const w=new et;S.getCenter(w),U.position.set(w.x,w.y,N*.4),U.lookAt(w),U.updateProjectionMatrix()},g=(b,U)=>{const S=new oce(16777215,.5);b.add(S);const Z=new sce(16777215,.8);Z.position.set(1,1,1),b.add(Z);const R=new Ng().setFromObject(b),y=new et;R.getSize(y),console.log("BDF bounding box:",R),console.log("BDF size:",y);const N=Math.max(y.x,y.y,y.z),w=U.fov*(Math.PI/180);let Q=Math.abs(N/Math.sin(w/2));const C=new et;R.getCenter(C),U.position.set(C.x,C.y,Q*.8),U.lookAt(C),U.updateProjectionMatrix()},f=(b,U)=>{const S=new oce(16777215,.5);b.add(S);const Z=new sce(16777215,.8);Z.position.set(1,1,1),b.add(Z);const R=new Ng().setFromObject(b),y=new et;R.getSize(y),console.log("JSON bounding box:",R),console.log("JSON size:",y);const N=Math.max(y.x,y.y,y.z),w=Math.min(75,45+N/10);U.fov=w,U.updateProjectionMatrix();const Q=U.fov*(Math.PI/180);let C=Math.abs(N/Math.sin(Q/2));const v=new et;R.getCenter(v),U.position.set(v.x,v.y,C*.8),U.lookAt(v),U.updateProjectionMatrix(),console.log("Adjusted camera position:",U.position),console.log("Adjusted camera fov:",U.fov)};return(b,U)=>(he(),$e("div",{ref_key:"threeContainer",ref:t,class:"three-container",style:yJ({height:s.height})},null,4))}},A3={__name:"index",props:{data:{type:Object,required:!0},height:{type:Object,required:!0}},setup(s){return X(null),ul(()=>{}),hy(()=>{}),(e,t)=>(he(),It(K3e,{data:s.data,height:s.height},null,8,["data","height"]))}},q3e={class:"XFpdding",style:{height:"400px"}},$3e=["onClick"],e9e=["src"],t9e={class:"eldesign classtable",style:{"margin-top":"10px"}},i9e={style:{display:"flex","flex-direction":"column"}},n9e={style:{"line-height":"15px"}},s9e={style:{"flex-grow":"1",height:"300px"},"element-loading-text":"拼命加载中..."},o9e={class:"eldesign classtable",style:{"margin-top":"10px"}},r9e={class:"eldesign classtable",style:{"margin-top":"10px",height:"340px",overflow:"auto"}},l9e={style:{display:"flex"}},a9e={class:"eldesign classtable",style:{"margin-top":"10px"}},vce={__name:"ADflow",setup(s,{expose:e}){const t=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAZCAYAAAArK+5dAAAAAXNSR0IArs4c6QAAAptJREFUSEu91ltIFFEYB/D/mc1Md90VtotI2nZhgx6MnX3o8hAkXV6EKfAtCiJq8ymQfYh6EYJKfJDdiC6SBqEUQuhGFEEp1BYOnjO7SlAuaEYXsc2kVXd0dU6M5ODWVtYMzePM+f6/832cA0NgwePxeFa4XK7yeDw+8GMcsSAffr8/DMBNKT30z4DP59siCIKXEOLWNM3GOf9MCBkFUEwIiQDIANhEKX27GJnvQBTF416v93CublKpFEZGRh4AqOWcJwRBSOrrOOd2ABsBrFtUd5VSWvMT4Pf7O3p7e6Vfjau1tRUtLS1dqVTqpCzLxpxFUbxGCDmxqC6jaZpHUZQPC+/mO/gToK9Jp9MIBoNQFOWcIAgNqqquBtDEOXcQQooAFADQu2qilJ75a2ChIBqNIhQKjamq2pOrY1VVkUwmaxRFGda/L7mDpZ627u5uvdODlNKO/wvIsix1RiKYnJxa6mZzrhscHERn5F6zNjtzMRaLJYwRtbe3S1WnLkMt3WUK0IuF6XE4+0KNjLFaAwiHw9KxxseYcW81DSybeIeiV82nKaX1BlBXVycF2xLIOPW7Y+7JG38Ne+L2UcbYTQMIBAJSw1OOucISc+kA8j9RFA7fr6SUdhlAdXW1dCNRDi3PYRooeP8E9tEXG2RZHjKA3ZV7pbtfd5gO1wMK33QiPxm3U0qnDMBbsU3qWb7fEsAx0Jbs67qzKuuiFa8XpSF3lSWA8+WVgdizh5uzgMzKCmnCc8ASoFipf8Tk5/PjMEakrtkupcv2mQbI3Axc7MItxtiRLCC9do+kluw0DQjqGJz9l84zxs5mAdPuCmnWUWYasE1/Qf7HaIAxdt0AfD5fqc1m85pO/x7AOZf1I2oAVgXnyrHkt+V3G/wGgT4mKcVKfYkAAAAASUVORK5CYII=",self.location).href;let i=X("300px"),n=X(!1),o=X(),r=X(""),l=X(0),a=X("");X(!0);let d=X(120),c=X(180);X(200);let h=X(0),u=X(),m=X(),p=X(),g=X(1),f=X(1),b=X(1),U=X(1),S=X(1),Z=X("x"),R=X(""),y=X(1),N=X("RANS"),w=X([{label:"RANS",value:"RANS"},{label:"Euler",value:"Euler"}]),Q=X(1),C=X([{label:"二维",value:1},{label:"三维",value:0}]),v=X(1),Y=X([{label:"x",value:1},{label:"y",value:2},{label:"z",value:3}]),J=X([{label:"x",value:"x"},{label:"y",value:"y"},{label:"z",value:"z"}]),k=X([{code:"mach",value:.734,name:"马赫数Ma",type:1,flag:1},{code:"reynolds",value:65e5,name:"雷诺数Re",type:1,flag:1},{code:"alpha",value:2.66482,name:"攻角AoA",type:1,flag:1}]),E=X([{code:"cl",value:"0.0",name:"升力系数Cl",type:2,flag:1},{code:"cd",value:"0.0",name:"阻力系数Cd",type:2,flag:1},{code:"cmz",value:"0.0",name:"力矩系数CmZ",type:2,flag:1},{code:" ",value:"0.0",name:"体积",type:2,flag:1}]),K=X([{code:"cl",value:"0.0",name:"升力系数Cl",type:2,flag:1},{code:"cd",value:"0.0",name:"阻力系数Cd",type:2,flag:1},{code:"cmz",value:"0.0",name:"力矩系数CmZ",type:2,flag:1},{code:" ",value:"0.0",name:"体积",type:2,flag:1}]),de=X([{code:"cl",value:"0.0",name:"升力系数Cl",type:2,flag:1},{code:"cd",value:"0.0",name:"阻力系数Cd",type:2,flag:1},{code:"cmx",value:"0.0",name:"力矩系数CmX",type:2,flag:1},{code:"cmy",value:"0.0",name:"力矩系数CmY",type:2,flag:1},{code:"cmz",value:"0.0",name:"力矩系数CmZ",type:2,flag:1},{code:" ",value:"0.0",name:"体积",type:2,flag:1}]),ee=X({gridfile:"",fid:"",countp:"1",NewtonKrylov:1,ANK:1,proname:"CRM",temperature:"288.15",length:1,area:1,momx:.25,momy:0,momz:0,mgcycle:"sg",ncycles:500,l2convergence:1e-5,l2convergencecoarse:1e-4}),le=X([{label:"CRM",value:"CRM"}]);X([{label:"巡航工况",value:"cruise"}]);let Fe=X([{id:"0",name:"网格文件",imgSrc:jGe},{id:"1",name:"来流参数",imgSrc:gAe},{id:"2",name:"设置参数",imgSrc:Pne},{id:"3",name:"分析参数",imgSrc:fAe}]),Ue=uy(null),ze=X({lockReconnect:!1,timeout:60*1e3,heartBeatInterval:30*1e3,timeoutObj:null,serverTimeoutObj:null,timeoutnum:null});const Oe=Ke=>{h.value=Ke},Ie=({column:Ke})=>Ke.property==="name"?(console.log("yanse",Ke.property),"header-blue"):Ke.property==="value"?"header-green":Ke.property==="flag"?"header-yellow":"";let at=X(!0);const je=Ke=>{Ke===1?at.value=!0:at.value=!1},Se=Ke=>{Ke===1?E.value=K.value:E.value=de.value},dt=(Ke,ot)=>(console.log("Data:",ot),Array.isArray(ot)?(Ke=ot.map(Et=>{const St=Et.code||" ",Ht=Et.name||" ",Fi=Et.value===null||Et.value===void 0||Et.value===""?" ":Et.value,Dt=Et.flag===null||Et.flag===void 0?" ":Et.flag;return`${St},${Ht},${Fi},${Dt}`}).join(";"),Ke):(console.error("Data should be an array"),Ke)),Yt=(Ke,ot)=>{u.value=Ke,ot&&(m.value=ot),console.log("getadflow:",u.value,m.value);const Et={transCode:"MDO0049",pid:u.value,wid:m.value};Dn(Et).then(St=>{St.hasOwnProperty("adid")&&(Ye(St),je(y.value),console.log("adid flow:",p.value),Gr.emit("adidFromadflow",p),we(St.fid))}).catch(St=>{vi.error("ADflow初始化失败")})},Ye=Ke=>{u.value=Ke.pid,p.value=Ke.adid,ee.value.gridfile=Ke.gridfile,ee.value.fid=Ke.fid,ee.value.proname=Ke.proname,Q.value=Ke.isairfoil,S.value=Ke.writetecplotsurfacesolution,N.value=Ke.equationtype,v.value=Ke.liftindex,ee.value.temperature=Ke.temperature,ee.value.cl=Ke.cl,ee.value.cd=Ke.cd,ee.value.cmz=Ke.cmz,ee.value.resrho=Ke.resrho,ee.value.length=Ke.length,ee.value.area=Ke.area,ee.value.momx=Ke.momx,ee.value.momy=Ke.momy,ee.value.momz=Ke.momz,ee.value.mgcycle=Ke.mgcycle,ee.value.ncycles=Ke.ncycles,ee.value.l2convergence=Ke.l2convergence,ee.value.l2convergencecoarse=Ke.l2convergencecoarse,k.value=Ke.inParams,E.value=Ke.outParams,y.value=Ke.writeslicesolution,Z.value=Ke.spandirection,R.value=Ke.slices},mt=(Ke,ot)=>{ot&&(m.value=ot),u.value=Ke;const Et={transCode:"MDO0050",pid:u.value,wid:m.value,gridfile:ee.value.gridfile,fid:ee.value.fid,proname:ee.value.proname,isairfoil:Q.value,writetecplotsurfacesolution:S.value,equationtype:N.value,liftindex:v.value,temperature:ee.value.temperature,cl:f.value,resrho:g.value,cd:b.value,cmz:U.value,length:ee.value.length,area:ee.value.area,momx:ee.value.momx,momy:ee.value.momy,momz:ee.value.momz,mgcycle:ee.value.mgcycle,ncycles:ee.value.ncycles,l2convergence:ee.value.l2convergence,l2convergencecoarse:ee.value.l2convergencecoarse,writeslicesolution:y.value,spandirection:Z.value,slices:R.value,checked:1,inParams:dt([],k.value),outParams:dt([],E.value)};Dn(Et).then(St=>{vi({message:"保存成功",type:"success"}),Yt(u.value,m.value)}).catch(St=>{vi.error("保存失败")})},Wt=Ke=>{r.value=Ke},Jt=Ke=>{l.value=Ke},Ae=i3(()=>l.value>0&&l.value<=100),Yi=async Ke=>{n.value=!0;try{const ot=await fetch("https://www.adicn.com/airopt/TransServlet",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channelNo:"service",clientToken:"e47b87eec69545559d1e81e56626da68",transCode:"MDO0061",userId:"5f06c8bc77234f969d13e160b54c27e3",fid:Ke})})}catch(ot){n.value=!1,console.error("请求失败:",ot.response||ot)}},ci=async Ke=>{try{const Et=await(await fetch("https://www.adicn.com/airopt/TransServlet",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channelNo:"service",clientToken:"e47b87eec69545559d1e81e56626da68",transCode:"MDO0062",userId:"5f06c8bc77234f969d13e160b54c27e3",fid:Ke})})).json();console.log("接口返回的数据:",Et),o.value=Et,n.value=!1}catch(ot){n.value=!1,console.error("请求失败:",ot.response||ot)}},we=Ke=>{var St;if(((St=Ue.value)==null?void 0:St.readyState)===1)return;const ot="wss://www.adicn.com/airoptwebsocket?projectId="+Ke,Et=new WebSocket(ot);Ue.value=Et,Et.onopen=si,Et.onmessage=yn,Et.onerror=bi,Et.onclose=pe},si=Ke=>{console.log("cgnsWebSocket连接成功",Ke),Ft(),Yi(ee.value.fid)},yn=Ke=>{try{if(JSON.parse(Ke.data).status===0){console.log("转换成功,准备关闭"),Pe(),Ue.value.onclose=null,Ue.value.onerror=null,Ue.value.close(1e3,"Normal closure"),Ue.value=null,ci(ee.value.fid);return}}catch{Ke.data==="建立服务端连接成功!"?console.log("WebSocket连接已建立"):Ke.data==="服务端已经接收到消息,msg=heartCheck"?console.log("心跳确认"):console.warn("未知的非JSON消息:",Ke.data)}it()},bi=Ke=>{console.log("连接错误",Ke),Ue.close(),ie()},pe=Ke=>{console.log("断开连接",Ke),Ke.code!==1e3&&ie()},ie=()=>{var Ke,ot;ze.value.lockReconnect||((Ke=Ue.value)==null?void 0:Ke.readyState)===1||!((ot=ee.value)!=null&&ot.fid)||(console.log("尝试重连..."),ze.value.lockReconnect=!0,clearTimeout(ze.value.timeoutnum),ze.value.timeoutnum=setTimeout(()=>{var Et;(!Ue.value||((Et=Ue.value)==null?void 0:Et.readyState)>1)&&we(ee.value.fid),ze.value.lockReconnect=!1},1e4))},it=()=>{clearTimeout(ze.value.timeoutObj),clearTimeout(ze.value.serverTimeoutObj),Ft()},Ft=()=>{clearTimeout(ze.value.timeoutObj),clearTimeout(ze.value.serverTimeoutObj),!(!Ue.value||Ue.value.readyState!==1)&&(ze.value.timeoutObj=setTimeout(()=>{var Ke;((Ke=Ue.value)==null?void 0:Ke.readyState)===1&&(Ue.value.send("heartCheck"),ze.value.serverTimeoutObj=setTimeout(()=>{var ot;((ot=Ue.value)==null?void 0:ot.readyState)===1&&Ue.value.close(1006,"Heartbeat timeout")},ze.value.timeout))},ze.value.heartBeatInterval))},Pe=()=>{clearTimeout(ze.value.timeoutObj),clearTimeout(ze.value.serverTimeoutObj),clearTimeout(ze.value.timeoutnum),ze.value.lockReconnect=!0},Re=Ke=>{setTimeout(()=>{l.value=0},1e3),ee.value.gridfile=Ke.fname,ee.value.fid=Ke.bfid,console.log("文件上传成功,bfid:",Ke.bfid,"fname:",Ke.fname),we(Ke.bfid)},vt=Ke=>{a.value=Ke};return e({getadflow:Yt,getadflowAssign:Ye,getadflowsave:mt}),(Ke,ot)=>{const Et=At("el-input"),St=At("el-col"),Ht=At("el-row"),Fi=At("el-progress"),Dt=At("el-form-item"),Ot=At("el-table-column"),nn=At("el-checkbox"),xi=At("el-table"),Zi=At("el-option"),Me=At("el-radio"),ri=At("el-radio-group"),st=Dne("loading");return he(),$e("div",q3e,[re("ul",null,[(he(!0),$e(zt,null,Kt(W(Fe),(Ve,Nt)=>(he(),$e("li",{class:gn(["item",{active:W(h)===Nt}]),key:Nt,onClick:Ui=>Oe(Nt)},[re("img",{src:Ve.imgSrc,style:{width:"22px"}},null,8,e9e),Qt(" "+bs(Ve.name),1)],10,$3e))),128))]),es(re("div",t9e,[re("div",i9e,[M(Dt,{label:"网格文件:","label-width":W(d),style:{width:"100%"}},{default:B(()=>[M(Ht,{style:{width:"100%"}},{default:B(()=>[M(St,{span:23},{default:B(()=>[M(Et,{modelValue:W(ee).gridfile,"onUpdate:modelValue":ot[0]||(ot[0]=Ve=>W(ee).gridfile=Ve),readonly:"",step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1}),M(St,{span:1,style:{display:"flex","align-items":"center","margin-left":"-35px"}},{default:B(()=>[M(xv,{projectId:124,solverType:"exampleSolver",accept:".cgns",upId:"adflow",name:"点击选择文件",imgSrc:W(t),onUploadSuccess:Re,onUpdateFileName:Wt,onUpdatePercentage:Jt,onUploadStatus:vt},null,8,["imgSrc"])]),_:1})]),_:1}),W(Ae)?(he(),It(Ht,{key:0,style:{width:"100%","margin-top":"10px"}},{default:B(()=>[M(St,{span:20},{default:B(()=>[M(Fi,{percentage:W(l)},null,8,["percentage"])]),_:1}),M(St,{span:4},{default:B(()=>[re("div",n9e,bs(W(a)),1)]),_:1})]),_:1})):An("",!0)]),_:1},8,["label-width"]),es((he(),$e("div",s9e,[M(A3,{data:W(o),height:W(i)},null,8,["data","height"])])),[[st,W(n)]])])],512),[[us,W(h)=="0"]]),es(re("div",null,[re("div",o9e,[M(xi,{data:W(k),border:"",style:{width:"100%"},"header-cell-class-name":Ie},{default:B(()=>[M(Ot,{type:"index",width:"70",label:"编号"}),M(Ot,{prop:"name",label:"参数名称"}),M(Ot,{prop:"value",label:"参数值"},{default:B(({row:Ve})=>[M(Et,{modelValue:Ve.value,"onUpdate:modelValue":Nt=>Ve.value=Nt,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(Ot,{prop:"flag",label:"启用",width:"100"},{default:B(Ve=>[M(nn,{"false-label":0,"true-label":1,label:!1,modelValue:Ve.row.flag,"onUpdate:modelValue":Nt=>Ve.row.flag=Nt},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[us,W(h)=="1"]]),es(re("div",r9e,[M(Dt,{label:"分析对象:","label-width":W(c)},{default:B(()=>[M(W(ln),{modelValue:W(ee).proname,"onUpdate:modelValue":ot[1]||(ot[1]=Ve=>W(ee).proname=Ve),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(le),Ve=>(he(),It(Zi,{key:Ve.value,label:Ve.label,value:Ve.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(Dt,{label:"计算进程数:","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).countp,"onUpdate:modelValue":ot[2]||(ot[2]=Ve=>W(ee).countp=Ve)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"Newton-Krylov求解:","label-width":W(c)},{default:B(()=>[M(ri,{modelValue:W(ee).NewtonKrylov,"onUpdate:modelValue":ot[3]||(ot[3]=Ve=>W(ee).NewtonKrylov=Ve)},{default:B(()=>[M(Me,{value:1,label:1},{default:B(()=>[Qt("是")]),_:1}),M(Me,{value:0,label:0},{default:B(()=>[Qt("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"ANK求解:","label-width":W(c)},{default:B(()=>[M(ri,{modelValue:W(ee).ANK,"onUpdate:modelValue":ot[4]||(ot[4]=Ve=>W(ee).ANK=Ve)},{default:B(()=>[M(Me,{value:1,label:1},{default:B(()=>[Qt("是")]),_:1}),M(Me,{value:0,label:0},{default:B(()=>[Qt("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"计算维数:","label-width":W(c)},{default:B(()=>[M(W(ln),{modelValue:W(Q),"onUpdate:modelValue":ot[5]||(ot[5]=Ve=>Xt(Q)?Q.value=Ve:Q=Ve),"suffix-icon":W(Ln),placeholder:"请选择",onChange:Se},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(C),Ve=>(he(),It(Zi,{key:Ve.value,label:Ve.label,value:Ve.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(Dt,{label:"控制方程:","label-width":W(c)},{default:B(()=>[M(W(ln),{modelValue:W(N),"onUpdate:modelValue":ot[6]||(ot[6]=Ve=>Xt(N)?N.value=Ve:N=Ve),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(w),Ve=>(he(),It(Zi,{key:Ve.value,label:Ve.label,value:Ve.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(Dt,{label:"升力定义方向:","label-width":W(c)},{default:B(()=>[M(W(ln),{modelValue:W(v),"onUpdate:modelValue":ot[7]||(ot[7]=Ve=>Xt(v)?v.value=Ve:v=Ve),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Y),Ve=>(he(),It(Zi,{key:Ve.value,label:Ve.label,value:Ve.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(Dt,{label:"特征长度(m):","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).length,"onUpdate:modelValue":ot[8]||(ot[8]=Ve=>W(ee).length=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"参考温度(K):","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).temperature,"onUpdate:modelValue":ot[9]||(ot[9]=Ve=>W(ee).temperature=Ve),step:1,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"参考面积(m²):","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).area,"onUpdate:modelValue":ot[10]||(ot[10]=Ve=>W(ee).area=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"力矩中心(m):","label-width":W(c)},{default:B(()=>[re("div",l9e,[M(Et,{style:{"margin-right":"10px"},modelValue:W(ee).momx,"onUpdate:modelValue":ot[11]||(ot[11]=Ve=>W(ee).momx=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"]),M(Et,{style:{"margin-right":"10px"},modelValue:W(ee).momy,"onUpdate:modelValue":ot[12]||(ot[12]=Ve=>W(ee).momy=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"]),M(Et,{modelValue:W(ee).momz,"onUpdate:modelValue":ot[13]||(ot[13]=Ve=>W(ee).momz=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])])]),_:1},8,["label-width"]),M(Dt,{label:"多重网格:","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).mgcycle,"onUpdate:modelValue":ot[14]||(ot[14]=Ve=>W(ee).mgcycle=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"计算步数:","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).ncycles,"onUpdate:modelValue":ot[15]||(ot[15]=Ve=>W(ee).ncycles=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"监控变量:","label-width":W(c)},{default:B(()=>[M(Ht,null,{default:B(()=>[M(St,{span:12},{default:B(()=>[M(nn,{modelValue:W(f),"onUpdate:modelValue":ot[16]||(ot[16]=Ve=>Xt(f)?f.value=Ve:f=Ve),"false-label":0,"true-label":1,label:"升力系数Cl",style:{height:"32px"}},null,8,["modelValue"]),M(nn,{modelValue:W(g),"onUpdate:modelValue":ot[17]||(ot[17]=Ve=>Xt(g)?g.value=Ve:g=Ve),"false-label":0,"true-label":1,label:"密度残差Resrho",style:{height:"32px"}},null,8,["modelValue"])]),_:1}),M(St,{span:12},{default:B(()=>[M(nn,{modelValue:W(b),"onUpdate:modelValue":ot[18]||(ot[18]=Ve=>Xt(b)?b.value=Ve:b=Ve),"false-label":0,"true-label":1,label:"阻力系数Cd",style:{height:"32px"}},null,8,["modelValue"]),M(nn,{modelValue:W(U),"onUpdate:modelValue":ot[19]||(ot[19]=Ve=>Xt(U)?U.value=Ve:U=Ve),"false-label":0,"true-label":1,label:"力矩系数Cm",style:{height:"32px"}},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"]),M(Dt,{label:"细网格收敛残差:","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).l2convergence,"onUpdate:modelValue":ot[20]||(ot[20]=Ve=>W(ee).l2convergence=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"粗网格收敛残差:","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(ee).l2convergencecoarse,"onUpdate:modelValue":ot[21]||(ot[21]=Ve=>W(ee).l2convergencecoarse=Ve),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"输出物面信息:","label-width":W(c)},{default:B(()=>[M(ri,{modelValue:W(S),"onUpdate:modelValue":ot[22]||(ot[22]=Ve=>Xt(S)?S.value=Ve:S=Ve)},{default:B(()=>[M(Me,{value:1,label:1},{default:B(()=>[Qt("是")]),_:1}),M(Me,{value:0,label:0},{default:B(()=>[Qt("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(Dt,{label:"输出切面信息:","label-width":W(c)},{default:B(()=>[M(ri,{modelValue:W(y),"onUpdate:modelValue":ot[23]||(ot[23]=Ve=>Xt(y)?y.value=Ve:y=Ve),onChange:je},{default:B(()=>[M(Me,{value:1,label:1},{default:B(()=>[Qt("是")]),_:1}),M(Me,{value:0,label:0},{default:B(()=>[Qt("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),es(M(Dt,{label:"切面法相方向:","label-width":W(c)},{default:B(()=>[M(W(ln),{modelValue:W(Z),"onUpdate:modelValue":ot[24]||(ot[24]=Ve=>Xt(Z)?Z.value=Ve:Z=Ve),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(J),Ve=>(he(),It(Zi,{key:Ve.value,label:Ve.label,value:Ve.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),[[us,W(at)]]),es(M(Dt,{label:"切面展向位置:","label-width":W(c)},{default:B(()=>[M(Et,{modelValue:W(R),"onUpdate:modelValue":ot[25]||(ot[25]=Ve=>Xt(R)?R.value=Ve:R=Ve),step:100,min:0,max:1e3,"controls-position":"right",placeholder:"多个位置以逗号分隔"},null,8,["modelValue"])]),_:1},8,["label-width"]),[[us,W(at)]])],512),[[us,W(h)=="2"]]),es(re("div",null,[re("div",a9e,[M(xi,{data:W(E),border:"",style:{width:"100%"},"header-cell-class-name":Ie},{default:B(()=>[M(Ot,{type:"index",width:"70",label:"编号"}),M(Ot,{prop:"name",label:"参数名称"}),M(Ot,{prop:"value",label:"参数值"},{default:B(({row:Ve})=>[M(Et,{modelValue:Ve.value,"onUpdate:modelValue":Nt=>Ve.value=Nt,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(Ot,{prop:"flag",label:"启用",width:"100"},{default:B(Ve=>[M(nn,{"false-label":0,"true-label":1,label:!1,modelValue:Ve.row.flag,"onUpdate:modelValue":Nt=>Ve.row.flag=Nt},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[us,W(h)=="3"]])])}}},d9e={class:"XFpdding",style:{height:"400px"}},c9e=["onClick"],h9e=["src"],u9e={class:"eldesign classtable",style:{"margin-top":"10px"}},m9e={class:"eldesign classtable",style:{"margin-top":"10px"}},p9e={class:"eldesign classtable",style:{"margin-top":"10px"}},g9e={class:"cheinput"},f9e={class:"cheinput"},b9e={class:"cheinput"},kce={__name:"Xfoil",setup(s,{expose:e}){X(100);let t=X(170);X(250);let i=X(0),n=X(!0),o=X(!0),r=X(!0),l=X("1"),a=X(),d=X(),c=X(),h=X({anobj:"CRM",iter:100,ppar:200,cpwr:"op.dat",yxzb:"airfoil.dat",pacc:"output.dat"}),u=X([{label:"CRM",value:"CRM"}]),m=X([{id:"0",name:"来流参数",imgSrc:gAe},{id:"1",name:"设置参数",imgSrc:Pne},{id:"2",name:"分析参数",imgSrc:fAe}]),p=X([{code:"alpha",value:.1,name:"AoA",flag:1},{code:"mach",value:.1,name:"MA",flag:1},{code:"reynolds",value:65e5,name:"Re",flag:1}]),g=X([{code:"cl",value:"0.0",name:"升力系数Cl",flag:1},{code:"cd",value:"0.00436",name:"阻力系数Cd",flag:1},{code:"cdp",value:"0.1",name:"压阻力系数Cdp",flag:1},{code:"cm",value:"0.1",name:"力矩系数Cm",flag:1},{code:"xtr_upper",value:"0.1",name:"上表面转捩点位置xtr-upper",flag:1},{code:"xtr_lower",value:"0.1",name:"下表面转捩点位置xtr-lower",flag:1}]);const f=({column:y})=>y.property==="name"?(console.log("yanse",y.property),"header-blue"):y.property==="value"?"header-green":y.property==="flag"?"header-yellow":"",b=y=>{i.value=y},U=(y,N)=>(console.log("Data:",N),Array.isArray(N)?(y=N.map(w=>{const Q=w.code||" ",C=w.name||" ",v=w.value===null||w.value===void 0||w.value===""?" ":w.value,Y=w.flag||" ";return`${Q},${C},${v},${Y}`}).join(";"),y):(console.error("Data should be an array"),y)),S=(y,N)=>{a.value=y,N&&(d.value=N);const w={transCode:"MDO0046",pid:a.value,wid:d.value};Dn(w).then(Q=>{Q.hasOwnProperty("xfid")&&(Z(Q),Gr.emit("xfidFromxfoil",c))}).catch(Q=>{vi.error("Xfoil初始化失败")})},Z=y=>{a.value=y.pid,c.value=y.xfid,h.value.iter=y.iter,h.value.ppar=y.ppar,h.value.cpwr=y.cpwr,h.value.yxzb=y.yxzb,h.value.pacc=y.pacc,l.value=String(y.analyzed),p.value=y.inParams,g.value=y.outParams};return e({getxfoil:S,getxfoilAssign:Z,getxfoilsave:(y,N)=>{N&&(d.value=N),a.value=y;const w={transCode:"MDO0047",pid:a.value,wid:d.value,iter:h.value.iter,ppar:h.value.ppar,cpwr:h.value.cpwr,yxzb:h.value.yxzb,pacc:h.value.pacc,analyzed:l.value,checked:1,inParams:U([],p.value),outParams:U([],g.value)};Dn(w).then(Q=>{vi({message:"保存成功",type:"success"}),S(a.value,d.value)}).catch(Q=>{vi.error("保存失败")})}}),(y,N)=>{const w=At("el-table-column"),Q=At("el-input"),C=At("el-checkbox"),v=At("el-table"),Y=At("el-option"),J=At("el-form-item");return he(),$e("div",d9e,[re("ul",null,[(he(!0),$e(zt,null,Kt(W(m),(k,E)=>(he(),$e("li",{class:gn(["item",{active:W(i)===E}]),key:E,onClick:K=>b(E)},[re("img",{src:k.imgSrc,style:{width:"22px"}},null,8,h9e),Qt(" "+bs(k.name),1)],10,c9e))),128))]),es(re("div",null,[re("div",u9e,[M(v,{data:W(p),border:"",style:{width:"100%"},"header-cell-class-name":f},{default:B(()=>[M(w,{type:"index",width:"70",label:"编号"}),M(w,{prop:"name",label:"参数名称"}),M(w,{prop:"value",label:"参数值"},{default:B(({row:k})=>[M(Q,{modelValue:k.value,"onUpdate:modelValue":E=>k.value=E,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(w,{prop:"flag",label:"启用",width:"100"},{default:B(k=>[M(C,{"false-label":-1,"true-label":1,label:!1,modelValue:k.row.flag,"onUpdate:modelValue":E=>k.row.flag=E},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[us,W(i)=="0"]]),es(re("div",null,[re("div",m9e,[M(v,{data:W(g),border:"",style:{width:"100%"},"header-cell-class-name":f},{default:B(()=>[M(w,{type:"index",width:"70",label:"编号"}),M(w,{prop:"name",label:"参数名称","show-overflow-tooltip":""}),M(w,{prop:"value",label:"参数值"},{default:B(({row:k})=>[M(Q,{modelValue:k.value,"onUpdate:modelValue":E=>k.value=E,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(w,{prop:"flag",label:"启用",width:"100"},{default:B(k=>[M(C,{"false-label":-1,"true-label":1,label:!1,modelValue:k.row.flag,"onUpdate:modelValue":E=>k.row.flag=E},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[us,W(i)=="2"]]),es(re("div",null,[re("div",p9e,[M(J,{label:"分析对象:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(h).anobj,"onUpdate:modelValue":N[0]||(N[0]=k=>W(h).anobj=k),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(u),k=>(he(),It(Y,{key:k.value,label:k.label,value:k.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(J,{label:"迭代次数:","label-width":W(t)},{default:B(()=>[M(Q,{modelValue:W(h).iter,"onUpdate:modelValue":N[1]||(N[1]=k=>W(h).iter=k),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"表面求解点个数:","label-width":W(t)},{default:B(()=>[M(Q,{modelValue:W(h).ppar,"onUpdate:modelValue":N[2]||(N[2]=k=>W(h).ppar=k),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),re("div",g9e,[M(J,{label:"压力分布:","label-width":W(t)},{default:B(()=>[M(Q,{modelValue:W(h).cpwr,"onUpdate:modelValue":N[3]||(N[3]=k=>W(h).cpwr=k),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(C,{modelValue:W(n),"onUpdate:modelValue":N[4]||(N[4]=k=>Xt(n)?n.value=k:n=k),style:{width:"40px",height:"40px"}},null,8,["modelValue"])]),re("div",f9e,[M(J,{label:"翼型坐标:","label-width":W(t)},{default:B(()=>[M(Q,{modelValue:W(h).yxzb,"onUpdate:modelValue":N[5]||(N[5]=k=>W(h).yxzb=k),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(C,{modelValue:W(o),"onUpdate:modelValue":N[6]||(N[6]=k=>Xt(o)?o.value=k:o=k),style:{width:"40px",height:"40px"}},null,8,["modelValue"])]),re("div",b9e,[M(J,{label:"力和力矩:","label-width":W(t)},{default:B(()=>[M(Q,{modelValue:W(h).pacc,"onUpdate:modelValue":N[7]||(N[7]=k=>W(h).pacc=k),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(C,{modelValue:W(r),"onUpdate:modelValue":N[8]||(N[8]=k=>Xt(r)?r.value=k:r=k),style:{width:"40px",height:"40px"}},null,8,["modelValue"])])])],512),[[us,W(i)=="1"]])])}}},U9e={class:"XFpdding",style:{height:"400px"}},F9e={class:"numberinput lefttext"},A9e={style:{display:"flex"}},Z9e={class:"cstleft"},S9e={class:"cstleft",style:{"margin-left":"20px"}},N9e={class:"classtable"},xce={__name:"csts",setup(s,{expose:e}){X(100);let t=X(180),i=X("8"),n=X(""),o=X(),r=X(""),l=X({uppern1:"0.5",lowern1:"1",uppern2:"0.5",lowern2:"1"}),a=X(""),d=X(""),c=X([{date:"上表面CST参数",X1:"0.173482",X2:"0.151492",X3:"0.180515",X4:"0.121639",X5:"0.182491",X6:"0.118110",X7:"0.157365",X8:"0.136958",X9:"0.146738"},{date:"下表面CST参数",X1:"0.173482",X2:"0.151492",X3:"0.180515",X4:"0.121639",X5:"0.182491",X6:"0.118110",X7:"0.157365",X8:"0.136958",X9:"0.146738"}]),h=X([{prop:"X1",label:"X1"},{prop:"X2",label:"X2"},{prop:"X3",label:"X3"},{prop:"X4",label:"X4"},{prop:"X5",label:"X5"},{prop:"X6",label:"X6"},{prop:"X7",label:"X7"},{prop:"X8",label:"X8"},{prop:"X9",label:"X9"}]);const u=({columnIndex:U})=>U!==0?"header-blue":"",m=()=>{let U=Number(i.value);if(!U)return;const S=Array.from({length:U+1},(Z,R)=>({label:`X${R+1}`,prop:`X${R+1}`}));c.value=c.value.map(Z=>{let R={...Z};return S.forEach(y=>{y.prop in R||(R[y.prop]=null)}),Object.keys(R).forEach(y=>{y.startsWith("X")&&!S.find(N=>N.prop===y)&&delete R[y]}),R}),h.value=S},p=()=>{const U=c.value[0],S=c.value[1];let Z=[],R=[];for(let y in U)y!=="date"&&Z.push(U[y]);a.value=Z.join(",");for(let y in S)y!=="date"&&R.push(S[y]);d.value=R.join(",")},g=(U,S)=>{n.value=U,o.value=S,console.log("getcst:",n.value);const Z={transCode:"MDO0040",pid:n.value,wid:o.value};Dn(Z).then(R=>{R.hasOwnProperty("cstid")&&f(R)}).catch(R=>{vi.error("CST初始化失败")})},f=U=>{n.value=U.pid,r.value=U.cstid,i.value=U.cstn,l.value.uppern1=U.uppern1,l.value.lowern1=U.lowern1,l.value.uppern2=U.uppern2,l.value.lowern2=U.lowern2,m();let S=U.upperb?U.upperb.split(","):[],Z=U.lowerb?U.lowerb.split(","):[];c.value.forEach((R,y)=>{y===0?h.value.forEach((N,w)=>{w<S.length&&(R[N.prop]=S[w])}):y===1&&h.value.forEach((N,w)=>{w<Z.length&&(R[N.prop]=Z[w])})})};return e({getcst:g,getcstAssign:f,getcstsave:(U,S)=>{S&&(o.value=S),n.value=U,p();const Z={transCode:"MDO0041",pid:n.value,wid:o.value,cstn:i.value,uppern1:l.value.uppern1,lowern1:l.value.lowern1,uppern2:l.value.uppern2,lowern2:l.value.lowern2,upperb:a.value,lowerb:d.value,checked:1};Dn(Z).then(R=>{vi({message:"保存成功",type:"success"})}).catch(R=>{vi.error("保存失败")})}}),(U,S)=>{const Z=At("el-input-number"),R=At("el-form-item"),y=At("el-input"),N=At("el-table-column"),w=At("el-table"),Q=At("el-form");return he(),$e("div",U9e,[re("div",F9e,[M(Q,null,{default:B(()=>[re("div",null,[M(R,{label:"CST阶数:","label-width":W(t)},{default:B(()=>[M(Z,{modelValue:W(i),"onUpdate:modelValue":S[0]||(S[0]=C=>Xt(i)?i.value=C:i=C),step:1,min:0,max:20,"controls-position":"right",onChange:m},null,8,["modelValue"])]),_:1},8,["label-width"])]),re("div",A9e,[re("div",Z9e,[M(R,{label:"上表面类函数参数:","label-width":W(t)},{default:B(()=>[M(y,{modelValue:W(l).uppern1,"onUpdate:modelValue":S[1]||(S[1]=C=>W(l).uppern1=C),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:B(()=>[Qt("N1:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(R,{label:"下表面类函数参数:","label-width":W(t)},{default:B(()=>[M(y,{modelValue:W(l).lowern1,"onUpdate:modelValue":S[2]||(S[2]=C=>W(l).lowern1=C),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:B(()=>[Qt("N1:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),re("div",S9e,[M(R,{label:"上表面类函数参数:","label-width":W(t)},{default:B(()=>[M(y,{modelValue:W(l).uppern2,"onUpdate:modelValue":S[3]||(S[3]=C=>W(l).uppern2=C),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:B(()=>[Qt("N2:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(R,{label:"下表面类函数参数:","label-width":W(t)},{default:B(()=>[M(y,{modelValue:W(l).lowern2,"onUpdate:modelValue":S[4]||(S[4]=C=>W(l).lowern2=C),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:B(()=>[Qt("N2:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"])])]),re("div",N9e,[M(w,{data:W(c),style:{width:"100%"},border:"true","header-cell-class-name":u},{default:B(()=>[M(N,{prop:"date",label:"",width:"150"}),(he(!0),$e(zt,null,Kt(W(h),(C,v)=>(he(),It(N,{key:v,prop:C.prop,label:C.label},{default:B(({row:Y})=>[M(y,{modelValue:Y[C.prop],"onUpdate:modelValue":J=>Y[C.prop]=J},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop","label"]))),128))]),_:1},8,["data"])])]),_:1})])])}}},R9e={class:"XFpdding",style:{height:"400px",overflow:"auto"}},V9e={style:{"line-height":"15px"}},W9e={class:"classtable",style:{"margin-top":"20px"}},y9e={style:{height:"260px",overflow:"hidden"},"element-loading-text":"拼命加载中..."},Ice={__name:"ffds",setup(s,{expose:e}){let t=X("200"),i=X(),n=X(0),o=X(""),r=X(!1),l=X(),a=X(),d=X(),c=X(),h=X({fname:"",nx:10,ny:2,nz:2}),u=X(1),m=X(),p=X([{rowname:"Y1Z1",X1:0,X2:0,X3:0,X4:0,X5:0,X6:0,X7:0,X8:0,X9:0},{rowname:"Y1Z2",X1:0,X2:0,X3:0,X4:0,X5:0,X6:0,X7:0,X8:0,X9:0},{rowname:"Y2Z1",X1:0,X2:0,X3:0,X4:0,X5:0,X6:0,X7:0,X8:0,X9:0},{rowname:"Y2Z2",X1:0,X2:0,X3:0,X4:0,X5:0,X6:0,X7:0,X8:0,X9:0}]),g=X([{prop:"X1",label:"X1"},{prop:"X2",label:"X2"},{prop:"X3",label:"X3"},{prop:"X4",label:"X4"},{prop:"X5",label:"X5"},{prop:"X6",label:"X6"},{prop:"X7",label:"X7"},{prop:"X8",label:"X8"},{prop:"X9",label:"X9"}]);const f=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAAAXNSR0IArs4c6QAABCpJREFUaEPtmUtoE0EYx7+ZVPvQ6BYPPkBsQVoQxGRTELyYnrz0oSehB2sv7U0UikeTipcqhSqCtCBWkRZPGtqLekh68AHNbLcoQkFstJK0oBjb2EbN7thvSULS3TxqmzJFB0I2yc7u/zffN99jQ2CLDyKSfofDUUMp9SiK0lGsLqEAZFmeIYTUaJpWq6pqqBgIYQBkWfYQQrwomnPeoyiKcVxoCAHgcDjcNpvNnyE2mrRCdNMBUAyl9DQh5BDn3AEAEiFESgnhnIcIIegeUc75lK7rAUrpPXSdTLHFWiHLAkkzZl2o0Aqkftc0rYdS6l4Rfq/YOQXOK8oKaQCXy3UaAB43Nzev+f7BYBAikQjOCwAArrqPc67iSlNKQzabzXAFTdMkznnq5aCUtiatZHnPYqyQBpBl+TyuHor5mzE6OgqDg4MQDofRPXATDuW7TjJk+le7zqo5Ba2wYQB443A4bECMjY3hR1XTtDO5wqHT6RyilLYXWqxCVthQgJQYBOnq6jLcasVl+nVdv5kJkrJ2IfHJ3/NaoSQAKWH53MrtdkvxeFxKJBJG0NB1Hd+N46RbGXsFvyOEXGSMPbECLimAlVuhaxW58lmnYZSzcseSA2S61cjICMRisTXrT0a5IcaYqUbaNIA1q86Y4PV6MTD8B1jPIq5r7r9pAcaYkZhEGJgYGWOBlQr1PkYxHCldlpsYhbe0tIBeni4iReAwNNCfUaypqlVVNeorS4BAIADd3d3wreGKMMJRSNliCOzTDxAg3bFZAmC8vnH7Lnw/ekEogG3Radj5/hG6U1q3JUBfXx88GHsFsfpzQgGUz7+GqtlnUcZYdd49gO7zXI1A7PBZoQAqwuNQGR5XGWPOvABYSb74XAbLB08JBVA144PtX9RxRVHceQGwK/tA6iB+4KRQAPbp+1C2+DGrpLDcAw0NDfCjthV+7TkmFMCud4NAf0SyHrmYAPx+PzQ2NsJifTsk7IeEApAmewES8Y7MdtUEMDw8DG1tbbBwpBO0qn3CABAtDtLkdWx2GoPBID48MIYJYGBgwGgHo87LwG0VwgDYlubAcCFKnRMTE7lLCY/HA95rvQaASCMjC6fLCEsLdHZ2wp2HPlg40iWSftj+dQp2zPiysrAlQFNTEzwefytcFrZKYpYALpcLXoYSsFTbKpQFKmefQvnc66wkZglQV1cHU7H9oiYxH2MMH4GmhykK2e12mJdOwM+9x4WygFUSs7QAfilwErukKEp/XguIClAdvIrSzqx+QmdyITxLtCSGbeTuN7dMWTinC22FVjJnKYGN/FZoJXMC/LbXCJfEsJWs/PQ0pChK7erQaNoDWMD9kuqFCqFly/PYB5iSWNYewA8rjYyXc/5Xf/KVmphS2p9ZhZpcqNQCSnV9If7oXg/cf4D1rN5GzN3yFvgDeHmLUMPmZkgAAAAASUVORK5CYII=",self.location).href;let b=X("260px");const U=i3(()=>n.value>0&&n.value<=100),S=k=>{n.value=k},Z=k=>{o.value=k},R=({columnIndex:k})=>k!==0?"header-blue":"",y=()=>{console.log("generateTable");const k=Number(h.value.nx),E=Number(h.value.ny),K=Number(h.value.nz);console.log("xCount",k,"yCount",E,"zCount",K);let de=[],ee=[];switch(u.value){case 0:de=Array.from({length:k},(le,Fe)=>({label:`X${Fe+1}`,prop:`X${Fe+1}`})),ee=Array.from({length:E*K},(le,Fe)=>{const Ue=Math.floor(Fe/K),ze=Fe%K;return{label:`Y${Ue+1}Z${ze+1}`,prop:`Y${Ue+1}Z${ze+1}`}});break;case 1:de=Array.from({length:k},(le,Fe)=>({label:`X${Fe+1}`,prop:`X${Fe+1}`})),ee=Array.from({length:K*E},(le,Fe)=>{const Ue=Math.floor(Fe/E),ze=Fe%E;return{label:`Z${Ue+1}Y${ze+1}`,prop:`Z${Ue+1}Y${ze+1}`}});break;case 2:de=Array.from({length:E},(le,Fe)=>({label:`Y${Fe+1}`,prop:`Y${Fe+1}`})),ee=Array.from({length:k*K},(le,Fe)=>{const Ue=Math.floor(Fe/K),ze=Fe%K;return{label:`X${Ue+1}Z${ze+1}`,prop:`X${Ue+1}Z${ze+1}`}});break;case 3:de=Array.from({length:E},(le,Fe)=>({label:`Y${Fe+1}`,prop:`Y${Fe+1}`})),ee=Array.from({length:K*k},(le,Fe)=>{const Ue=Math.floor(Fe/k),ze=Fe%k;return{label:`Z${Ue+1}X${ze+1}`,prop:`Z${Ue+1}X${ze+1}`}});break;case 4:de=Array.from({length:K},(le,Fe)=>({label:`Z${Fe+1}`,prop:`Z${Fe+1}`})),ee=Array.from({length:k*E},(le,Fe)=>{const Ue=Math.floor(Fe/E),ze=Fe%E;return{label:`X${Ue+1}Y${ze+1}`,prop:`X${Ue+1}Y${ze+1}`}});break;case 5:de=Array.from({length:K},(le,Fe)=>({label:`Z${Fe+1}`,prop:`Z${Fe+1}`})),ee=Array.from({length:E*k},(le,Fe)=>{const Ue=Math.floor(Fe/k),ze=Fe%k;return{label:`Y${Ue+1}X${ze+1}`,prop:`Y${Ue+1}X${ze+1}`}});break;default:console.error("无效的 order 值:",u.value);break}g.value=de,p.value=[];for(let le=1;le<=ee.length;le++){let Fe={rowname:ee[le-1].label};de.forEach(Ue=>{Fe[Ue.prop]=0}),p.value.push(Fe)}},N=async k=>{r.value=!0;try{const K=await(await fetch(`https://www.adicn.com/airopt/getXyz?fid=${k}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channelNo:"service",clientToken:"e47b87eec69545559d1e81e56626da68",transCode:"MDO0060",userId:"5f06c8bc77234f969d13e160b54c27e3"})})).json();console.log("接口返回的数据:",K),i.value=K,r.value=!1}catch(E){r.value=!1,console.error("请求失败:",E.response||E)}},w=k=>{setTimeout(()=>{n.value=0},1e3),h.value.fname=k.fname,d.value=k.bfid,console.log("文件上传成功,bfid:",k.bfid,"fname:",k.fname),N(k.bfid)},Q=()=>{let k=[];p.value.forEach(E=>{g.value.forEach(K=>{let de=E[K.prop];(de==null||de==="")&&(de=" "),k.push(de)})}),m.value=k.join(",")},C=()=>{if(!m.value)return;const k=m.value.split(",");console.log("ffdchaxun",k);let E=0;p.value.forEach(K=>{g.value.forEach(de=>{E<k.length&&(K[de.prop]=k[E]===" "?"":k[E],E++)})})},v=(k,E)=>{l.value=k,a.value=E;const K={transCode:"MDO0043",pid:l.value,wid:a.value};Dn(K).then(de=>{de.hasOwnProperty("ffdid")&&(N(de.fid),Y(de))}).catch(de=>{vi.error(de.returnMsg)})},Y=k=>{l.value=k.pid,c.value=k.ffdid,h.value.fname=k.fname,h.value.nx=k.nx,h.value.ny=k.ny,h.value.nz=k.nz,u.value=Number(k.order),m.value=k.vars,y(),C()};return e({getffds:v,getffdsAssign:Y,getffdsave:(k,E)=>{E&&(a.value=E),l.value=k,Q();const K={transCode:"MDO0044",pid:l.value,wid:a.value,fid:d.value,fname:h.value.fname,nx:h.value.nx,ny:h.value.ny,nz:h.value.nz,order:u.value,vars:m.value,checked:1};Dn(K).then(de=>{vi({message:"保存成功",type:"success"})}).catch(de=>{vi.error("保存失败")})}}),(k,E)=>{const K=At("el-input"),de=At("el-progress"),ee=At("el-col"),le=At("el-row"),Fe=At("el-form-item"),Ue=At("el-radio"),ze=At("el-radio-group"),Oe=At("el-input-number"),Ie=At("el-table-column"),at=At("el-table"),je=Dne("loading");return he(),$e("div",R9e,[re("div",null,[M(Fe,{label:"FFD包围盒:","label-width":W(t)},{default:B(()=>[M(K,{modelValue:W(h).fname,"onUpdate:modelValue":E[0]||(E[0]=Se=>W(h).fname=Se),max:20,"controls-position":"right"},{append:B(()=>[M(xv,{projectId:123,solverType:"exampleSolver",accept:".xyz",upId:"ffds",name:"点击选择文件",imgSrc:W(f),onUpdatePercentage:S,onUploadSuccess:w,onUploadStatus:Z},null,8,["imgSrc"])]),_:1},8,["modelValue"]),W(U)?(he(),It(le,{key:0,style:{width:"100%","margin-top":"10px"}},{default:B(()=>[M(ee,{span:20},{default:B(()=>[M(de,{percentage:W(n)},null,8,["percentage"])]),_:1}),M(ee,{span:4},{default:B(()=>[re("div",V9e,bs(W(o)),1)]),_:1})]),_:1})):An("",!0)]),_:1},8,["label-width"]),M(Fe,{label:"参考坐标系:","label-width":W(t)},{default:B(()=>[M(ze,{modelValue:W(u),"onUpdate:modelValue":E[1]||(E[1]=Se=>Xt(u)?u.value=Se:u=Se)},{default:B(()=>[M(Ue,{value:0,label:0},{default:B(()=>[Qt("x-y-z")]),_:1}),M(Ue,{value:1,label:1},{default:B(()=>[Qt("x-z-y")]),_:1}),M(Ue,{value:2,label:2},{default:B(()=>[Qt("y-x-z")]),_:1}),M(Ue,{value:3,label:3},{default:B(()=>[Qt("y-z-x")]),_:1}),M(Ue,{value:4,label:4},{default:B(()=>[Qt("z-x-y")]),_:1}),M(Ue,{value:5,label:5},{default:B(()=>[Qt("z-y-x")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),M(Fe,{label:"控制点数(X,Y,Z):","label-width":W(t)},{default:B(()=>[M(le,{style:{width:"100%"},gutter:5},{default:B(()=>[M(ee,{span:6},{default:B(()=>[M(Oe,{style:{width:"120px"},modelValue:W(h).nx,"onUpdate:modelValue":E[2]||(E[2]=Se=>W(h).nx=Se),"controls-position":"right"},null,8,["modelValue"])]),_:1}),M(ee,{span:6},{default:B(()=>[M(Oe,{style:{width:"120px"},modelValue:W(h).ny,"onUpdate:modelValue":E[3]||(E[3]=Se=>W(h).ny=Se),"controls-position":"right"},null,8,["modelValue"])]),_:1}),M(ee,{span:6},{default:B(()=>[M(Oe,{style:{width:"120px"},modelValue:W(h).nz,"onUpdate:modelValue":E[4]||(E[4]=Se=>W(h).nz=Se),"controls-position":"right"},null,8,["modelValue"])]),_:1}),M(ee,{span:6},{default:B(()=>[M(W(Ai),{onClick:y,style:{width:"100%"}},{default:B(()=>[Qt("应用")]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),re("div",W9e,[M(at,{data:W(p),style:{width:"100%","margin-bottom":"20px"},border:"","header-cell-class-name":R},{default:B(()=>[M(Ie,{prop:"rowname",label:"",width:"100"}),(he(!0),$e(zt,null,Kt(W(g),(Se,dt)=>(he(),It(Ie,{key:dt,prop:Se.prop,label:Se.label},{default:B(({row:Yt})=>[M(K,{modelValue:Yt[Se.prop],"onUpdate:modelValue":Ye=>Yt[Se.prop]=Ye},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop","label"]))),128))]),_:1},8,["data"])]),es((he(),$e("div",y9e,[M(A3,{data:W(i),height:W(b)},null,8,["data","height"])])),[[je,W(r)]])])}}};const bp=s=>(n3("data-v-2c1eab00"),s=s(),s3(),s),Q9e={class:"cloudsecond"},M9e={style:{display:"flex","flex-direction":"row",width:"100%"}},w9e={style:{width:"30%","padding-left":"10px"}},T9e={class:"classtable tabledomain"},C9e={style:{height:"450px",overflow:"auto"}},B9e=bp(()=>re("span",{class:"collapse-title"},"标量",-1)),L9e=bp(()=>re("span",{class:"collapse-title"},"云图间隔",-1)),v9e=bp(()=>re("span",{class:"collapse-title"},"数据范围",-1)),k9e=bp(()=>re("span",{class:"collapse-title"},"色卡颜色范围",-1)),x9e={class:"numberinput"},I9e=bp(()=>re("i",{style:{"font-style":"italic","font-size":"24px"}},"I",-1)),E9e=bp(()=>re("b",{style:{"font-weight":"bold","font-size":"24px"}},"B",-1)),D9e=bp(()=>re("i",{style:{"font-style":"italic","font-size":"24px"}},"I",-1)),G9e=bp(()=>re("b",{style:{"font-weight":"bold","font-size":"24px"}},"B",-1)),J9e=bp(()=>re("span",{class:"collapse-title"},"标量",-1)),X9e=bp(()=>re("span",{class:"collapse-title"},"云图间隔",-1)),Y9e=bp(()=>re("span",{class:"collapse-title"},"数据范围",-1)),_9e={__name:"Cloudsecond",props:{activesd:{type:Object,required:!0}},setup(s){const e=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAZCAYAAAArK+5dAAAAAXNSR0IArs4c6QAAAptJREFUSEu91ltIFFEYB/D/mc1Md90VtotI2nZhgx6MnX3o8hAkXV6EKfAtCiJq8ymQfYh6EYJKfJDdiC6SBqEUQuhGFEEp1BYOnjO7SlAuaEYXsc2kVXd0dU6M5ODWVtYMzePM+f6/832cA0NgwePxeFa4XK7yeDw+8GMcsSAffr8/DMBNKT30z4DP59siCIKXEOLWNM3GOf9MCBkFUEwIiQDIANhEKX27GJnvQBTF416v93CublKpFEZGRh4AqOWcJwRBSOrrOOd2ABsBrFtUd5VSWvMT4Pf7O3p7e6Vfjau1tRUtLS1dqVTqpCzLxpxFUbxGCDmxqC6jaZpHUZQPC+/mO/gToK9Jp9MIBoNQFOWcIAgNqqquBtDEOXcQQooAFADQu2qilJ75a2ChIBqNIhQKjamq2pOrY1VVkUwmaxRFGda/L7mDpZ627u5uvdODlNKO/wvIsix1RiKYnJxa6mZzrhscHERn5F6zNjtzMRaLJYwRtbe3S1WnLkMt3WUK0IuF6XE4+0KNjLFaAwiHw9KxxseYcW81DSybeIeiV82nKaX1BlBXVycF2xLIOPW7Y+7JG38Ne+L2UcbYTQMIBAJSw1OOucISc+kA8j9RFA7fr6SUdhlAdXW1dCNRDi3PYRooeP8E9tEXG2RZHjKA3ZV7pbtfd5gO1wMK33QiPxm3U0qnDMBbsU3qWb7fEsAx0Jbs67qzKuuiFa8XpSF3lSWA8+WVgdizh5uzgMzKCmnCc8ASoFipf8Tk5/PjMEakrtkupcv2mQbI3Axc7MItxtiRLCC9do+kluw0DQjqGJz9l84zxs5mAdPuCmnWUWYasE1/Qf7HaIAxdt0AfD5fqc1m85pO/x7AOZf1I2oAVgXnyrHkt+V3G/wGgT4mKcVKfYkAAAAASUVORK5CYII=",self.location).href;let t=X(80),i=X(140),n=X(100),o=X(""),r=X(""),l=X([]),a=X([{label:"文件1",value:"x1"},{label:"文件2",value:"x2"},{label:"文件3",value:"x3"},{label:"文件4",value:"x4"}]),d=X(["显示全部","隐藏全部","倒转互换"]),c=X(["显示","隐藏","表面绘制"]),h=X([{rowname:"Z1",state:"1",type:"2",area:"3"},{rowname:"Z2",state:"1",type:"2",area:"3"},{rowname:"Z3",state:"1",type:"2",area:"3"},{rowname:"Z4",state:"1",type:"2",area:"3"}]),u=X([{label:"状态",prop:"state"},{label:"绘制类型",prop:"type"},{label:"平面范围",prop:"area"}]);X("1");let m=X([{label:"00",value:"00"}]);X("当前时间步");let p=X([{label:"当前时间步",value:"当前时间步"},{label:"所有时间步",value:"所有时间步"},{label:"固定值",value:"固定值"}]);X("竖直");let g=X([{label:"竖直",value:"竖直"},{label:"水平",value:"水平"}]);X("微软雅黑");let f=X([{label:"微软雅黑",value:"微软雅黑"}]);X("15");let b=X([{label:"15",value:"15"}]);X("科学计数法");let U=X([{label:"整型",value:"整型"},{label:"浮点型",value:"浮点型"},{label:"科学计数法",value:"科学计数法"},{label:"(最适)浮点型",value:"(最适)浮点型"}]);X("使用变量名");let S=X([{label:"使用变量名",value:"使用变量名"},{label:"使用文本",value:"使用文本"}]);X("Arial");let Z=X([{label:"Arial",value:"Arial"}]);X("1");let R=X([{label:"00",value:"00"}]),y=X(["1","2","3","4"]),N=X(["1","2","3"]),w=X({name:"00",type:"00",scalarname:"00",jzcheck:"1",dycheck:"1",name2:"00",check3:"1",dataAreaType:"当前时间步",max:"0.00",min:"0.00",maxcv:"34, 103, 177, 1",mincv:"232, 0, 0, 1"}),Q=X("#2267B1"),C=X("#E80000");const v=(ee,le=1)=>{let Fe=parseInt(ee.slice(1,3),16),Ue=parseInt(ee.slice(3,5),16),ze=parseInt(ee.slice(5,7),16);return`${Fe}, ${Ue}, ${ze}, ${le}`},Y=()=>{w.value.maxcv=v(Q.value)},J=()=>{w.value.mincv=v(C.value)};let k=X({check1:"1",orientation:"竖直",X:"0.8",Y:"0.05",width:"0.8",height:"0.05",skipc:"2",font:"微软雅黑",fontsize:"15",dataformat:"科学计数法",jingdu:"2",check2:"1",texttitle:"使用变量名",titlefont:"Arial",fontsize2:"20"}),E=X({name:"00",type:"00",scalarname2:"00",cengji:"00",max:"0.00",min:"0.00"});const K=({column:ee})=>ee.property==="state"?(console.log("yanse",ee.property),"header-blue"):ee.property==="type"?"header-green":ee.property==="area"?"header-yellow":"",de=ee=>{o.value=ee.fname,r.value=ee.bfid,console.log("文件上传成功,bfid:",ee.bfid,"fname:",ee.fname)};return(ee,le)=>{const Fe=At("el-input"),Ue=At("el-col"),ze=At("el-row"),Oe=At("el-form-item"),Ie=At("el-checkbox"),at=At("el-checkbox-group"),je=At("el-card"),Se=At("el-button"),dt=At("el-table-column"),Yt=At("el-table"),Ye=At("el-option"),mt=At("el-select"),Wt=At("el-form"),Jt=At("el-collapse-item"),Ae=At("el-color-picker"),Yi=At("el-collapse"),ci=At("el-input-number");return he(),$e("div",Q9e,[es(re("div",null,[M(Oe,{label:"添加文件:","label-width":W(t),"label-position":"left"},{default:B(()=>[M(ze,{style:{width:"100%"}},{default:B(()=>[M(Ue,{span:24},{default:B(()=>[M(Fe,{modelValue:W(o),"onUpdate:modelValue":le[0]||(le[0]=we=>Xt(o)?o.value=we:o=we),readonly:"",step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1}),M(Ue,{span:1,style:{display:"flex","align-items":"center","margin-left":"-35px"}},{default:B(()=>[M(xv,{projectId:123,solverType:"exampleSolver",accept:".cgns,.xyz,.bdf",upId:"uniqueId1",name:"点击选择文件",imgSrc:W(e),onUploadSuccess:de},null,8,["imgSrc"])]),_:1})]),_:1})]),_:1},8,["label-width"]),re("div",M9e,[M(je,{shadow:"hover",style:{width:"70%"}},{default:B(()=>[M(at,{modelValue:W(l),"onUpdate:modelValue":le[1]||(le[1]=we=>Xt(l)?l.value=we:l=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(a),we=>(he(),It(Ie,{key:we.value,label:we.value,style:{display:"block"}},{default:B(()=>[Qt(bs(we.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),re("div",w9e,[M(Se,{style:{width:"100%"}},{default:B(()=>[Qt("删除选中文件")]),_:1}),M(Se,{style:{"background-color":"transparent","margin-left":"0",width:"100%"}},{default:B(()=>[Qt("删除全部文件")]),_:1})])])],512),[[us,s.activesd.fileselect]]),es(re("div",null,[re("div",null,[M(ze,{style:{"margin-bottom":"10px"},gutter:20},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(d),(we,si)=>(he(),It(Ue,{key:si,span:8},{default:B(()=>[M(Se,{style:{width:"100%"}},{default:B(()=>[Qt(bs(we),1)]),_:2},1024)]),_:2},1024))),128))]),_:1}),M(ze,{style:{"margin-bottom":"10px"},gutter:20},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(c),(we,si)=>(he(),It(Ue,{key:si,span:8},{default:B(()=>[M(Se,{style:{width:"100%"}},{default:B(()=>[Qt(bs(we),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),re("div",T9e,[M(Yt,{data:W(h),style:{width:"100%"},border:"true","header-cell-class-name":K},{default:B(()=>[M(dt,{prop:"rowname",label:"域名称"}),(he(!0),$e(zt,null,Kt(W(u),(we,si)=>(he(),It(dt,{key:si,prop:we.prop,label:we.label},{default:B(({row:yn})=>[M(Fe,{modelValue:yn[we.prop],"onUpdate:modelValue":bi=>yn[we.prop]=bi},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop","label"]))),128))]),_:1},8,["data"])])],512),[[us,s.activesd.domain]]),es(re("div",C9e,[re("div",null,[M(Yi,{modelValue:W(y),"onUpdate:modelValue":le[16]||(le[16]=we=>Xt(y)?y.value=we:y=we)},{default:B(()=>[M(Jt,{name:"1"},{title:B(()=>[B9e]),default:B(()=>[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"名称:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(w).name,"onUpdate:modelValue":le[2]||(le[2]=we=>W(w).name=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"类型:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(w).type,"onUpdate:modelValue":le[3]||(le[3]=we=>W(w).type=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"标量名:","label-width":W(i)},{default:B(()=>[M(mt,{modelValue:W(w).scalarname,"onUpdate:modelValue":le[4]||(le[4]=we=>W(w).scalarname=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(m),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"","label-width":W(i)},{default:B(()=>[M(ze,null,{default:B(()=>[M(Ue,{span:12},{default:B(()=>[M(Ie,{label:"极值",modelValue:W(w).jzcheck,"onUpdate:modelValue":le[5]||(le[5]=we=>W(w).jzcheck=we)},null,8,["modelValue"])]),_:1}),M(Ue,{span:12},{default:B(()=>[M(Ie,{label:"单元值离散到点",modelValue:W(w).dycheck,"onUpdate:modelValue":le[6]||(le[6]=we=>W(w).dycheck=we)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"])]),_:1})]),_:1}),M(Jt,{name:"2"},{title:B(()=>[L9e]),default:B(()=>[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"名称:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(w).name2,"onUpdate:modelValue":le[7]||(le[7]=we=>W(w).name2=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:" ","label-width":W(i)},{default:B(()=>[M(ze,null,{default:B(()=>[M(Ue,{span:24},{default:B(()=>[M(Ie,{label:"平滑云图",modelValue:W(w).check3,"onUpdate:modelValue":le[8]||(le[8]=we=>W(w).check3=we)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"])]),_:1})]),_:1}),M(Jt,{name:"3"},{title:B(()=>[v9e]),default:B(()=>[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"数据范围类型:","label-width":W(i)},{default:B(()=>[M(mt,{modelValue:W(w).dataAreaType,"onUpdate:modelValue":le[9]||(le[9]=we=>W(w).dataAreaType=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(p),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"最大值:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(w).max,"onUpdate:modelValue":le[10]||(le[10]=we=>W(w).max=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"最小值:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(w).min,"onUpdate:modelValue":le[11]||(le[11]=we=>W(w).min=we)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1}),M(Jt,{name:"4"},{title:B(()=>[k9e]),default:B(()=>[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"最大值:","label-width":W(i)},{default:B(()=>[M(ze,{style:{width:"100%"}},{default:B(()=>[M(Ue,{span:22},{default:B(()=>[M(Fe,{modelValue:W(w).maxcv,"onUpdate:modelValue":le[12]||(le[12]=we=>W(w).maxcv=we)},null,8,["modelValue"])]),_:1}),M(Ue,{span:2},{default:B(()=>[M(Ae,{modelValue:W(Q),"onUpdate:modelValue":le[13]||(le[13]=we=>Xt(Q)?Q.value=we:Q=we),onChange:Y},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"]),M(Oe,{label:"最小值:","label-width":W(i)},{default:B(()=>[M(ze,{style:{width:"100%"}},{default:B(()=>[M(Ue,{span:22},{default:B(()=>[M(Fe,{modelValue:W(w).mincv,"onUpdate:modelValue":le[14]||(le[14]=we=>W(w).mincv=we)},null,8,["modelValue"])]),_:1}),M(Ue,{span:2},{default:B(()=>[M(Ae,{modelValue:W(C),"onUpdate:modelValue":le[15]||(le[15]=we=>Xt(C)?C.value=we:C=we),onChange:J},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])],512),[[us,s.activesd.cloud]]),es(re("div",x9e,[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"","label-width":W(i)},{default:B(()=>[M(Ie,{label:"显示色卡",modelValue:W(k).check1,"onUpdate:modelValue":le[17]||(le[17]=we=>W(k).check1=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"朝向:","label-width":W(i)},{default:B(()=>[M(mt,{modelValue:W(k).orientation,"onUpdate:modelValue":le[18]||(le[18]=we=>W(k).orientation=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(g),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(ze,{gutter:10},{default:B(()=>[M(Ue,{span:10},{default:B(()=>[M(Oe,{label:"X(0-1):","label-width":W(n)},{default:B(()=>[M(Fe,{modelValue:W(k).X,"onUpdate:modelValue":le[19]||(le[19]=we=>W(k).X=we)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),M(Ue,{span:10},{default:B(()=>[M(Oe,{label:"Y(0-1):","label-width":W(n)},{default:B(()=>[M(Fe,{modelValue:W(k).Y,"onUpdate:modelValue":le[20]||(le[20]=we=>W(k).Y=we)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),M(Ue,{span:4},{default:B(()=>[M(Se,{style:{width:"100%"}},{default:B(()=>[Qt("更新")]),_:1})]),_:1})]),_:1}),M(ze,{gutter:10},{default:B(()=>[M(Ue,{span:10},{default:B(()=>[M(Oe,{label:"宽度(0-1):","label-width":W(n)},{default:B(()=>[M(Fe,{modelValue:W(k).width,"onUpdate:modelValue":le[21]||(le[21]=we=>W(k).width=we)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),M(Ue,{span:10},{default:B(()=>[M(Oe,{label:"高度(0-1):","label-width":W(n)},{default:B(()=>[M(Fe,{modelValue:W(k).height,"onUpdate:modelValue":le[22]||(le[22]=we=>W(k).height=we)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),M(Ue,{span:4},{default:B(()=>[M(Se,{style:{width:"100%"}},{default:B(()=>[Qt("更新")]),_:1})]),_:1})]),_:1}),M(Oe,{label:"跳过层级:","label-width":W(i)},{default:B(()=>[M(ci,{modelValue:W(k).skipc,"onUpdate:modelValue":le[23]||(le[23]=we=>W(k).skipc=we),"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"字体:","label-width":W(i)},{default:B(()=>[M(ze,{style:{width:"100%"},gutter:"10"},{default:B(()=>[M(Ue,{span:20},{default:B(()=>[M(mt,{modelValue:W(k).font,"onUpdate:modelValue":le[24]||(le[24]=we=>W(k).font=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(f),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),M(Ue,{span:2},{default:B(()=>[M(Se,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:B(()=>[I9e]),_:1})]),_:1}),M(Ue,{span:2},{default:B(()=>[M(Se,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:B(()=>[E9e]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),M(Oe,{label:"字体大小:","label-width":W(i)},{default:B(()=>[M(mt,{modelValue:W(k).fontsize,"onUpdate:modelValue":le[25]||(le[25]=we=>W(k).fontsize=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(b),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"数据格式:","label-width":W(i)},{default:B(()=>[M(mt,{modelValue:W(k).dataformat,"onUpdate:modelValue":le[26]||(le[26]=we=>W(k).dataformat=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(U),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"精度:","label-width":W(i)},{default:B(()=>[M(ci,{modelValue:W(k).jingdu,"onUpdate:modelValue":le[27]||(le[27]=we=>W(k).jingdu=we),"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"","label-width":W(i)},{default:B(()=>[M(Ie,{label:"显示标题",modelValue:W(k).check2,"onUpdate:modelValue":le[28]||(le[28]=we=>W(k).check2=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"标题文本:","label-width":W(i)},{default:B(()=>[M(ze,null,{default:B(()=>[M(Ue,{span:12},{default:B(()=>[M(mt,{modelValue:W(k).texttitle,"onUpdate:modelValue":le[29]||(le[29]=we=>W(k).texttitle=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(S),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),M(Ue,{span:12},{default:B(()=>[M(Fe)]),_:1})]),_:1})]),_:1},8,["label-width"]),M(Oe,{label:"标题字体:","label-width":W(i)},{default:B(()=>[M(ze,{style:{width:"100%"},gutter:"10"},{default:B(()=>[M(Ue,{span:20},{default:B(()=>[M(mt,{modelValue:W(k).titlefont,"onUpdate:modelValue":le[30]||(le[30]=we=>W(k).titlefont=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Z),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),M(Ue,{span:2},{default:B(()=>[M(Se,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:B(()=>[D9e]),_:1})]),_:1}),M(Ue,{span:2},{default:B(()=>[M(Se,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:B(()=>[G9e]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),M(Oe,{label:"字体大小:","label-width":W(i)},{default:B(()=>[M(mt,{modelValue:W(k).fontsize2,"onUpdate:modelValue":le[31]||(le[31]=we=>W(k).fontsize2=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(b),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1})],512),[[us,s.activesd.colorchart]]),es(re("div",null,[M(Yi,{modelValue:W(N),"onUpdate:modelValue":le[38]||(le[38]=we=>Xt(N)?N.value=we:N=we)},{default:B(()=>[M(Jt,{name:"1"},{title:B(()=>[J9e]),default:B(()=>[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"名称:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(E).name,"onUpdate:modelValue":le[32]||(le[32]=we=>W(E).name=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"类型:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(E).type,"onUpdate:modelValue":le[33]||(le[33]=we=>W(E).type=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"标量名:","label-width":W(i)},{default:B(()=>[M(mt,{modelValue:W(E).scalarname2,"onUpdate:modelValue":le[34]||(le[34]=we=>W(E).scalarname2=we)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(R),we=>(he(),It(Ye,{key:we.value,label:we.label,value:we.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1}),M(Jt,{name:"2"},{title:B(()=>[X9e]),default:B(()=>[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"层级:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(E).cengji,"onUpdate:modelValue":le[35]||(le[35]=we=>W(E).cengji=we)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1}),M(Jt,{name:"3"},{title:B(()=>[Y9e]),default:B(()=>[M(Wt,{"label-position":"left"},{default:B(()=>[M(Oe,{label:"最大值:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(E).max,"onUpdate:modelValue":le[36]||(le[36]=we=>W(E).max=we)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(Oe,{label:"最小值:","label-width":W(i)},{default:B(()=>[M(Fe,{modelValue:W(E).min,"onUpdate:modelValue":le[37]||(le[37]=we=>W(E).min=we)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],512),[[us,s.activesd.isoline]])])}}},z9e=gp(_9e,[["__scopeId","data-v-2c1eab00"]]),O9e={class:"XFpdding"},j9e=["onClick"],P9e=["src"],H9e={key:0,class:"eldesign classtable",style:{"margin-top":"10px"}},K9e={__name:"FSI",setup(s,{expose:e}){let t=X(0),i=X(190),n=X(),o=X(),r=X(),l=X({stepmax:2,outputsteps:0,method:"MELD",aerogroup:"wall",skin:1,spar:1}),a=X([{id:"0",name:"设置参数",imgSrc:Pne}]);const d=m=>{t.value=m},c=(m,p)=>{n.value=m,p&&(o.value=p);const g={transCode:"MDO0069",pid:n.value,wid:o.value};Dn(g).then(f=>{f.hasOwnProperty("fsiid")&&h(f)}).catch(f=>{vi.error("fsi初始化失败")})},h=m=>{n.value=m.pid,r.value=m.fsiid,l.value.stepmax=m.stepmax,l.value.outputsteps=m.outputsteps,l.value.method=m.method,l.value.aerogroup=m.aerogroup,l.value.skin=m.skin,l.value.spar=m.spar};return e({getfsi:c,getfsiAssign:h,getfsisave:(m,p)=>{p&&(o.value=p),n.value=m;const g={transCode:"MDO0070",pid:n.value,wid:o.value,stepmax:l.value.stepmax,outputsteps:l.value.outputsteps,method:l.value.method,aerogroup:l.value.aerogroup,skin:l.value.skin,spar:l.value.spar};Dn(g).then(f=>{vi({message:"保存成功",type:"success"})}).catch(f=>{vi.error("保存失败")})}}),(m,p)=>{const g=At("el-input"),f=At("el-form-item"),b=At("el-option"),U=At("el-checkbox"),S=At("el-form");return he(),$e("div",O9e,[re("ul",null,[(he(!0),$e(zt,null,Kt(W(a),(Z,R)=>(he(),$e("li",{class:gn(["item",{active:W(t)===R}]),key:R,onClick:y=>d(R)},[re("img",{src:Z.imgSrc},null,8,P9e),Qt(" "+bs(Z.name),1)],10,j9e))),128))]),W(t)=="0"?(he(),$e("div",H9e,[M(S,null,{default:B(()=>[M(f,{label:"最大耦合迭代步:","label-width":W(i)},{default:B(()=>[M(g,{modelValue:W(l).stepmax,"onUpdate:modelValue":p[0]||(p[0]=Z=>W(l).stepmax=Z)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(f,{label:"输出每轮迭代结果:","label-width":W(i)},{default:B(()=>[M(g,{modelValue:W(l).outputsteps,"onUpdate:modelValue":p[1]||(p[1]=Z=>W(l).outputsteps=Z)},null,8,["modelValue"])]),_:1},8,["label-width"]),M(f,{label:"数据插值方法:","label-width":W(i)},{default:B(()=>[M(W(ln),{modelValue:W(l).method,"onUpdate:modelValue":p[2]||(p[2]=Z=>W(l).method=Z)},{default:B(()=>[M(b,{label:"MELD",value:"MELD"})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(f,{label:"气动耦合区域:","label-width":W(i)},{default:B(()=>[M(W(ln),{modelValue:W(l).aerogroup,"onUpdate:modelValue":p[3]||(p[3]=Z=>W(l).aerogroup=Z)},{default:B(()=>[M(b,{label:"wall",value:"wall"})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),M(f,{label:"结构耦合区域","label-width":W(i)},{default:B(()=>[M(U,{modelValue:W(l).skin,"onUpdate:modelValue":p[4]||(p[4]=Z=>W(l).skin=Z),"true-label":1,"false-label":0},{default:B(()=>[Qt("Skin")]),_:1},8,["modelValue"]),M(U,{modelValue:W(l).spar,"onUpdate:modelValue":p[5]||(p[5]=Z=>W(l).spar=Z),"true-label":1,"false-label":0},{default:B(()=>[Qt("Spar")]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])):An("",!0)])}}},q9e=""+new URL("flight1-a24af376.png",import.meta.url).href,$9e=""+new URL("flight2-b27bd10a.png",import.meta.url).href,eOe=""+new URL("flight3-a2c3ba85.png",import.meta.url).href,tOe=""+new URL("flight4-236fe6b6.png",import.meta.url).href;const Jv=s=>(n3("data-v-da4b51a8"),s=s(),s3(),s),iOe={class:"XFpdding",style:{height:"470px"}},nOe=["onClick"],sOe=["src"],oOe={class:"eldesign classtable",style:{"margin-top":"10px"}},rOe=Jv(()=>re("span",{class:"collapse-title"},"飞行包线",-1)),lOe=Jv(()=>re("span",{class:"collapse-title"},"起飞着陆",-1)),aOe={class:"eldesign classtable",style:{"margin-top":"10px"}},dOe=Jv(()=>re("span",{class:"collapse-title"},"静稳定性",-1)),cOe=Jv(()=>re("span",{class:"collapse-title"},"动稳定性",-1)),hOe=Jv(()=>re("span",{style:{"padding-left":"20px"}},"纵向",-1)),uOe={class:"eldesign classtable",style:{"margin-top":"10px"}},mOe={class:"eldesign classtable",style:{"margin-top":"10px"}},pOe={__name:"Flight",setup(s){let e=X(0),t=X(176),i=X(["1","2"]),n=X(["1","2"]);X({maxIter:2,result:1,interpolation:"MELD",aeroRegion:"wall"});let o=X([{id:"0",name:"飞行性能",imgSrc:q9e},{id:"1",name:"操稳特性",imgSrc:$9e},{id:"2",name:"重量特性",imgSrc:eOe},{id:"3",name:"推力特性",imgSrc:tOe}]);const r=u=>{console.log("dayin",u),e.value=u,console.log("currentTab1",e.value)};let l=X([{value:80,name:"最小平飞速度",flag:1},{value:270,name:"最大平飞速度",flag:1},{value:0,name:"升限",flag:1},{value:0,name:"爬升率",flag:1}]),a=X([{value:1353.5816,name:"航程",flag:1},{value:2.4344,name:"航时",flag:1},{value:2600,name:"起飞场长",flag:1},{value:2e3,name:"着陆场长",flag:1}]),d=X([{value:16700,name:"空重",flag:1},{value:18600,name:"最大起飞重量",flag:1}]),c=X([{value:1298e-9,name:"耗油率",flag:1},{value:.85,name:"螺旋桨效率",flag:1}]);const h=({column:u})=>u.property==="name"?(console.log("yanse",u.property),"header-blue"):u.property==="value"?"header-green":u.property==="flag"?"header-yellow":"";return(u,m)=>{const p=At("el-table-column"),g=At("el-input"),f=At("el-checkbox"),b=At("el-table"),U=At("el-collapse-item"),S=At("el-collapse"),Z=At("el-form-item"),R=At("el-form");return he(),$e("div",iOe,[re("ul",null,[(he(!0),$e(zt,null,Kt(W(o),(y,N)=>(he(),$e("li",{class:gn(["item",{active:W(e)===N}]),key:N,onClick:w=>r(N)},[re("img",{src:y.imgSrc,style:{width:"22px"}},null,8,sOe),Qt(" "+bs(y.name),1)],10,nOe))),128))]),es(re("div",oOe,[M(S,{modelValue:W(i),"onUpdate:modelValue":m[0]||(m[0]=y=>Xt(i)?i.value=y:i=y)},{default:B(()=>[M(U,{name:"1"},{title:B(()=>[rOe]),default:B(()=>[M(b,{data:W(l),border:"",style:{width:"100%"},"header-cell-class-name":h},{default:B(()=>[M(p,{type:"index",width:"70",label:"编号"}),M(p,{prop:"name",label:"参数名称"}),M(p,{prop:"value",label:"参数值"},{default:B(({row:y})=>[M(g,{modelValue:y.value,"onUpdate:modelValue":N=>y.value=N,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(p,{prop:"flag",label:"启用",width:"100"},{default:B(y=>[M(f,{"false-label":0,"true-label":1,label:!1,modelValue:y.row.flag,"onUpdate:modelValue":N=>y.row.flag=N},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])]),_:1}),M(U,{name:"2"},{title:B(()=>[lOe]),default:B(()=>[M(b,{data:W(a),border:"",style:{width:"100%"},"header-cell-class-name":h},{default:B(()=>[M(p,{type:"index",width:"70",label:"编号"}),M(p,{prop:"name",label:"参数名称"}),M(p,{prop:"value",label:"参数值"},{default:B(({row:y})=>[M(g,{modelValue:y.value,"onUpdate:modelValue":N=>y.value=N,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(p,{prop:"flag",label:"启用",width:"100"},{default:B(y=>[M(f,{"false-label":0,"true-label":1,label:!1,modelValue:y.row.flag,"onUpdate:modelValue":N=>y.row.flag=N},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])]),_:1})]),_:1},8,["modelValue"])],512),[[us,W(e)=="0"]]),es(re("div",aOe,[M(S,{modelValue:W(n),"onUpdate:modelValue":m[1]||(m[1]=y=>Xt(n)?n.value=y:n=y)},{default:B(()=>[M(U,{title:"静稳定性",name:"1"},{title:B(()=>[dOe]),default:B(()=>[M(Z,{label:"纵向静稳定导数:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"]),M(Z,{label:"航向静稳定导数:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"])]),_:1}),M(U,{title:"动稳定性",name:"2"},{title:B(()=>[cOe]),default:B(()=>[hOe,M(R,null,{default:B(()=>[M(Z,{label:"长周期模态","label-width":W(t)},null,8,["label-width"]),M(Z,{label:"阻尼比:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"]),M(Z,{label:"频率:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"])]),_:1}),M(R,null,{default:B(()=>[M(Z,{label:"短周期模态","label-width":W(t)},null,8,["label-width"]),M(Z,{label:"阻尼比:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"]),M(Z,{label:"频率:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"])]),_:1}),M(Z,{label:"横航向","label-width":W(t)},null,8,["label-width"]),M(R,null,{default:B(()=>[M(Z,{label:"螺旋模态","label-width":W(t)},null,8,["label-width"]),M(Z,{label:"时间常数:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"]),M(Z,{label:"运动周期:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"]),M(Z,{label:"滚转模态","label-width":W(t)},null,8,["label-width"]),M(Z,{label:"时间常数:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"]),M(Z,{label:"荷兰滚模态","label-width":W(t)},null,8,["label-width"]),M(Z,{label:"阻尼比:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"]),M(Z,{label:"固有频率:","label-width":W(t)},{default:B(()=>[M(g)]),_:1},8,["label-width"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],512),[[us,W(e)=="1"]]),es(re("div",uOe,[M(b,{data:W(d),border:"",style:{width:"100%",height:"400px"},"header-cell-class-name":h},{default:B(()=>[M(p,{type:"index",width:"70",label:"编号"}),M(p,{prop:"name",label:"参数名称"}),M(p,{prop:"value",label:"参数值"},{default:B(({row:y})=>[M(g,{modelValue:y.value,"onUpdate:modelValue":N=>y.value=N,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(p,{prop:"flag",label:"启用",width:"100"},{default:B(y=>[M(f,{"false-label":0,"true-label":1,label:!1,modelValue:y.row.flag,"onUpdate:modelValue":N=>y.row.flag=N},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])],512),[[us,W(e)=="2"]]),es(re("div",mOe,[M(b,{data:W(c),border:"",style:{width:"100%",height:"400px"},"header-cell-class-name":h},{default:B(()=>[M(p,{type:"index",width:"70",label:"编号"}),M(p,{prop:"name",label:"参数名称"}),M(p,{prop:"value",label:"参数值"},{default:B(({row:y})=>[M(g,{modelValue:y.value,"onUpdate:modelValue":N=>y.value=N,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(p,{prop:"flag",label:"启用",width:"100"},{default:B(y=>[M(f,{"false-label":0,"true-label":1,label:!1,modelValue:y.row.flag,"onUpdate:modelValue":N=>y.row.flag=N},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])],512),[[us,W(e)=="3"]])])}}},gOe=gp(pOe,[["__scopeId","data-v-da4b51a8"]]);function Fh(s,e=0){return s[s.length-(1+e)]}function fOe(s){if(s.length===0)throw new Error("Invalid tail call");return[s.slice(0,s.length-1),s[s.length-1]]}function lo(s,e,t=(i,n)=>i===n){if(s===e)return!0;if(!s||!e||s.length!==e.length)return!1;for(let i=0,n=s.length;i<n;i++)if(!t(s[i],e[i]))return!1;return!0}function bOe(s,e){const t=s.length-1;e<t&&(s[e]=s[t]),s.pop()}function xB(s,e,t){return UOe(s.length,i=>t(s[i],e))}function UOe(s,e){let t=0,i=s-1;for(;t<=i;){const n=(t+i)/2|0,o=e(n);if(o<0)t=n+1;else if(o>0)i=n-1;else return n}return-(t+1)}function jK(s,e,t){if(s=s|0,s>=e.length)throw new TypeError("invalid index");const i=e[Math.floor(e.length*Math.random())],n=[],o=[],r=[];for(const l of e){const a=t(l,i);a<0?n.push(l):a>0?o.push(l):r.push(l)}return s<n.length?jK(s,n,t):s<n.length+r.length?r[0]:jK(s-(n.length+r.length),o,t)}function Ece(s,e){const t=[];let i;for(const n of s.slice(0).sort(e))!i||e(i[0],n)!==0?(i=[n],t.push(i)):i.push(n);return t}function*use(s,e){let t,i;for(const n of s)i!==void 0&&e(i,n)?t.push(n):(t&&(yield t),t=[n]),i=n;t&&(yield t)}function qAe(s,e){for(let t=0;t<=s.length;t++)e(t===0?void 0:s[t-1],t===s.length?void 0:s[t])}function FOe(s,e){for(let t=0;t<s.length;t++)e(t===0?void 0:s[t-1],s[t],t+1===s.length?void 0:s[t+1])}function Hu(s){return s.filter(e=>!!e)}function Dce(s){let e=0;for(let t=0;t<s.length;t++)s[t]&&(s[e]=s[t],e+=1);s.length=e}function $Ae(s){return!Array.isArray(s)||s.length===0}function ba(s){return Array.isArray(s)&&s.length>0}function _f(s,e=t=>t){const t=new Set;return s.filter(i=>{const n=e(i);return t.has(n)?!1:(t.add(n),!0)})}function mse(s,e){return s.length>0?s[0]:e}function cd(s,e){let t=typeof e=="number"?s:0;typeof e=="number"?t=s:(t=0,e=s);const i=[];if(t<=e)for(let n=t;n<e;n++)i.push(n);else for(let n=t;n>e;n--)i.push(n);return i}function Z3(s,e,t){const i=s.slice(0,e),n=s.slice(e);return i.concat(t,n)}function wj(s,e){const t=s.indexOf(e);t>-1&&(s.splice(t,1),s.unshift(e))}function Ex(s,e){const t=s.indexOf(e);t>-1&&(s.splice(t,1),s.push(e))}function PK(s,e){for(const t of e)s.push(t)}function pse(s){return Array.isArray(s)?s:[s]}function AOe(s,e,t){const i=eZe(s,e),n=s.length,o=t.length;s.length=n+o;for(let r=n-1;r>=i;r--)s[r+o]=s[r];for(let r=0;r<o;r++)s[r+i]=t[r]}function Gce(s,e,t,i){const n=eZe(s,e);let o=s.splice(n,t);return o===void 0&&(o=[]),AOe(s,n,i),o}function eZe(s,e){return e<0?Math.max(e+s.length,0):Math.min(e,s.length)}var IB;(function(s){function e(o){return o<0}s.isLessThan=e;function t(o){return o<=0}s.isLessThanOrEqual=t;function i(o){return o>0}s.isGreaterThan=i;function n(o){return o===0}s.isNeitherLessOrGreaterThan=n,s.greaterThan=1,s.lessThan=-1,s.neitherLessOrGreaterThan=0})(IB||(IB={}));function Ja(s,e){return(t,i)=>e(s(t),s(i))}function ZOe(...s){return(e,t)=>{for(const i of s){const n=i(e,t);if(!IB.isNeitherLessOrGreaterThan(n))return n}return IB.neitherLessOrGreaterThan}}const ju=(s,e)=>s-e,SOe=(s,e)=>ju(s?1:0,e?1:0);function tZe(s){return(e,t)=>-s(e,t)}class zf{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t<this.items.length&&e(this.items[t]);)t++;const i=t===this.firstIdx?null:this.items.slice(this.firstIdx,t);return this.firstIdx=t,i}takeFromEndWhile(e){let t=this.lastIdx;for(;t>=0&&e(this.items[t]);)t--;const i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){const t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}const r1=class r1{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate(t=>(e.push(t),!0)),e}filter(e){return new r1(t=>this.iterate(i=>e(i)?t(i):!0))}map(e){return new r1(t=>this.iterate(i=>t(e(i))))}findLast(e){let t;return this.iterate(i=>(e(i)&&(t=i),!0)),t}findLastMaxBy(e){let t,i=!0;return this.iterate(n=>((i||IB.isGreaterThan(e(n,t)))&&(i=!1,t=n),!0)),t}};r1.empty=new r1(e=>{});let vS=r1;class YJ{constructor(e){this._indexMap=e}static createSortPermutation(e,t){const i=Array.from(e.keys()).sort((n,o)=>t(e[n],e[o]));return new YJ(i)}apply(e){return e.map((t,i)=>e[this._indexMap[i]])}inverse(){const e=this._indexMap.slice();for(let t=0;t<this._indexMap.length;t++)e[this._indexMap[t]]=t;return new YJ(e)}}function Vd(s){return typeof s=="string"}function _r(s){return typeof s=="object"&&s!==null&&!Array.isArray(s)&&!(s instanceof RegExp)&&!(s instanceof Date)}function NOe(s){const e=Object.getPrototypeOf(Uint8Array);return typeof s=="object"&&s instanceof e}function wF(s){return typeof s=="number"&&!isNaN(s)}function Jce(s){return!!s&&typeof s[Symbol.iterator]=="function"}function iZe(s){return s===!0||s===!1}function fa(s){return typeof s>"u"}function Lg(s){return!Xc(s)}function Xc(s){return fa(s)||s===null}function vn(s,e){if(!s)throw new Error(e?`Unexpected type, expected '${e}'`:"Unexpected type")}function YU(s){if(Xc(s))throw new Error("Assertion Failed: argument is undefined or null");return s}function EB(s){return typeof s=="function"}function ROe(s,e){const t=Math.min(s.length,e.length);for(let i=0;i<t;i++)VOe(s[i],e[i])}function VOe(s,e){if(Vd(e)){if(typeof s!==e)throw new Error(`argument does not match constraint: typeof ${e}`)}else if(EB(e)){try{if(s instanceof e)return}catch{}if(!Xc(s)&&s.constructor===e||e.length===1&&e.call(void 0,s)===!0)return;throw new Error("argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}function $0(s){if(!s||typeof s!="object"||s instanceof RegExp)return s;const e=Array.isArray(s)?[]:{};return Object.entries(s).forEach(([t,i])=>{e[t]=i&&typeof i=="object"?$0(i):i}),e}function WOe(s){if(!s||typeof s!="object")return s;const e=[s];for(;e.length>0;){const t=e.shift();Object.freeze(t);for(const i in t)if(nZe.call(t,i)){const n=t[i];typeof n=="object"&&!Object.isFrozen(n)&&!NOe(n)&&e.push(n)}}return s}const nZe=Object.prototype.hasOwnProperty;function sZe(s,e){return HK(s,e,new Set)}function HK(s,e,t){if(Xc(s))return s;const i=e(s);if(typeof i<"u")return i;if(Array.isArray(s)){const n=[];for(const o of s)n.push(HK(o,e,t));return n}if(_r(s)){if(t.has(s))throw new Error("Cannot clone recursive data-structure");t.add(s);const n={};for(const o in s)nZe.call(s,o)&&(n[o]=HK(s[o],e,t));return t.delete(s),n}return s}function S3(s,e,t=!0){return _r(s)?(_r(e)&&Object.keys(e).forEach(i=>{i in s?t&&(_r(s[i])&&_r(e[i])?S3(s[i],e[i],t):s[i]=e[i]):s[i]=e[i]}),s):e}function lc(s,e){if(s===e)return!0;if(s==null||e===null||e===void 0||typeof s!=typeof e||typeof s!="object"||Array.isArray(s)!==Array.isArray(e))return!1;let t,i;if(Array.isArray(s)){if(s.length!==e.length)return!1;for(t=0;t<s.length;t++)if(!lc(s[t],e[t]))return!1}else{const n=[];for(i in s)n.push(i);n.sort();const o=[];for(i in e)o.push(i);if(o.sort(),!lc(n,o))return!1;for(t=0;t<n.length;t++)if(!lc(s[n[t]],e[n[t]]))return!1}return!0}function yOe(s){let e=[];for(;Object.prototype!==s;)e=e.concat(Object.getOwnPropertyNames(s)),s=Object.getPrototypeOf(s);return e}function KK(s){const e=[];for(const t of yOe(s))typeof s[t]=="function"&&e.push(t);return e}function QOe(s,e){const t=n=>function(){const o=Array.prototype.slice.call(arguments,0);return e(n,o)},i={};for(const n of s)i[n]=t(n);return i}function oZe(){return globalThis._VSCODE_NLS_MESSAGES}function gse(){return globalThis._VSCODE_NLS_LANGUAGE}const MOe=gse()==="pseudo"||typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function _J(s,e){let t;return e.length===0?t=s:t=s.replace(/\{(\d+)\}/g,(i,n)=>{const o=n[0],r=e[o];let l=i;return typeof r=="string"?l=r:(typeof r=="number"||typeof r=="boolean"||r===void 0||r===null)&&(l=String(r)),l}),MOe&&(t="["+t.replace(/[aouei]/g,"$&$&")+"]"),t}function F(s,e,...t){return _J(typeof s=="number"?rZe(s,e):e,t)}function rZe(s,e){var i;const t=(i=oZe())==null?void 0:i[s];if(typeof t!="string"){if(typeof e=="string")return e;throw new Error(`!!! NLS MISSING: ${s} !!!`)}return t}function Ni(s,e,...t){let i;typeof s=="number"?i=rZe(s,e):i=e;const n=_J(i,t);return{value:n,original:e===i?n:_J(e,t)}}const fW="en";let zJ=!1,OJ=!1,lD=!1,lZe=!1,fse=!1,bse=!1,aZe=!1,Dx,aD=fW,Xce=fW,wOe,Rm;const vf=globalThis;let Ca;var sUe;typeof vf.vscode<"u"&&typeof vf.vscode.process<"u"?Ca=vf.vscode.process:typeof process<"u"&&typeof((sUe=process==null?void 0:process.versions)==null?void 0:sUe.node)=="string"&&(Ca=process);var oUe;const TOe=typeof((oUe=Ca==null?void 0:Ca.versions)==null?void 0:oUe.electron)=="string",COe=TOe&&(Ca==null?void 0:Ca.type)==="renderer";var rUe;if(typeof Ca=="object"){zJ=Ca.platform==="win32",OJ=Ca.platform==="darwin",lD=Ca.platform==="linux",lD&&Ca.env.SNAP&&Ca.env.SNAP_REVISION,Ca.env.CI||Ca.env.BUILD_ARTIFACTSTAGINGDIRECTORY,Dx=fW,aD=fW;const s=Ca.env.VSCODE_NLS_CONFIG;if(s)try{const e=JSON.parse(s);Dx=e.userLocale,Xce=e.osLocale,aD=e.resolvedLanguage||fW,wOe=(rUe=e.languagePack)==null?void 0:rUe.translationsConfigFile}catch{}lZe=!0}else typeof navigator=="object"&&!COe?(Rm=navigator.userAgent,zJ=Rm.indexOf("Windows")>=0,OJ=Rm.indexOf("Macintosh")>=0,bse=(Rm.indexOf("Macintosh")>=0||Rm.indexOf("iPad")>=0||Rm.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,lD=Rm.indexOf("Linux")>=0,aZe=(Rm==null?void 0:Rm.indexOf("Mobi"))>=0,fse=!0,aD=gse()||fW,Dx=navigator.language.toLowerCase(),Xce=Dx):console.error("Unable to resolve platform.");const Tl=zJ,hn=OJ,_a=lD,$m=lZe,jN=fse,BOe=fse&&typeof vf.importScripts=="function",LOe=BOe?vf.origin:void 0,lp=bse,dZe=aZe,Eg=Rm,vOe=aD,kOe=typeof vf.postMessage=="function"&&!vf.importScripts,cZe=(()=>{if(kOe){const s=[];vf.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=s.length;i<n;i++){const o=s[i];if(o.id===t.data.vscodeScheduleAsyncWork){s.splice(i,1),o.callback();return}}});let e=0;return t=>{const i=++e;s.push({id:i,callback:t}),vf.postMessage({vscodeScheduleAsyncWork:i},"*")}}return s=>setTimeout(s)})(),rc=OJ||bse?2:zJ?1:3;let Yce=!0,_ce=!1;function hZe(){if(!_ce){_ce=!0;const s=new Uint8Array(2);s[0]=1,s[1]=2,Yce=new Uint16Array(s.buffer)[0]===512+1}return Yce}const uZe=!!(Eg&&Eg.indexOf("Chrome")>=0),xOe=!!(Eg&&Eg.indexOf("Firefox")>=0),IOe=!!(!uZe&&Eg&&Eg.indexOf("Safari")>=0),EOe=!!(Eg&&Eg.indexOf("Edg/")>=0),DOe=!!(Eg&&Eg.indexOf("Android")>=0),Yl={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}};var Zn;(function(s){function e(Z){return Z&&typeof Z=="object"&&typeof Z[Symbol.iterator]=="function"}s.is=e;const t=Object.freeze([]);function i(){return t}s.empty=i;function*n(Z){yield Z}s.single=n;function o(Z){return e(Z)?Z:n(Z)}s.wrap=o;function r(Z){return Z||t}s.from=r;function*l(Z){for(let R=Z.length-1;R>=0;R--)yield Z[R]}s.reverse=l;function a(Z){return!Z||Z[Symbol.iterator]().next().done===!0}s.isEmpty=a;function d(Z){return Z[Symbol.iterator]().next().value}s.first=d;function c(Z,R){let y=0;for(const N of Z)if(R(N,y++))return!0;return!1}s.some=c;function h(Z,R){for(const y of Z)if(R(y))return y}s.find=h;function*u(Z,R){for(const y of Z)R(y)&&(yield y)}s.filter=u;function*m(Z,R){let y=0;for(const N of Z)yield R(N,y++)}s.map=m;function*p(Z,R){let y=0;for(const N of Z)yield*R(N,y++)}s.flatMap=p;function*g(...Z){for(const R of Z)yield*R}s.concat=g;function f(Z,R,y){let N=y;for(const w of Z)N=R(N,w);return N}s.reduce=f;function*b(Z,R,y=Z.length){for(R<0&&(R+=Z.length),y<0?y+=Z.length:y>Z.length&&(y=Z.length);R<y;R++)yield Z[R]}s.slice=b;function U(Z,R=Number.POSITIVE_INFINITY){const y=[];if(R===0)return[y,Z];const N=Z[Symbol.iterator]();for(let w=0;w<R;w++){const Q=N.next();if(Q.done)return[y,s.empty()];y.push(Q.value)}return[y,{[Symbol.iterator](){return N}}]}s.consume=U;async function S(Z){const R=[];for await(const y of Z)R.push(y);return Promise.resolve(R)}s.asyncToArray=S})(Zn||(Zn={}));var dF;let Wr=(dF=class{constructor(e){this.element=e,this.next=dF.Undefined,this.prev=dF.Undefined}},dF.Undefined=new dF(void 0),dF);class Ia{constructor(){this._first=Wr.Undefined,this._last=Wr.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===Wr.Undefined}clear(){let e=this._first;for(;e!==Wr.Undefined;){const t=e.next;e.prev=Wr.Undefined,e.next=Wr.Undefined,e=t}this._first=Wr.Undefined,this._last=Wr.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const i=new Wr(e);if(this._first===Wr.Undefined)this._first=i,this._last=i;else if(t){const o=this._last;this._last=i,i.prev=o,o.next=i}else{const o=this._first;this._first=i,i.next=o,o.prev=i}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(i))}}shift(){if(this._first!==Wr.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==Wr.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==Wr.Undefined&&e.next!==Wr.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===Wr.Undefined&&e.next===Wr.Undefined?(this._first=Wr.Undefined,this._last=Wr.Undefined):e.next===Wr.Undefined?(this._last=this._last.prev,this._last.next=Wr.Undefined):e.prev===Wr.Undefined&&(this._first=this._first.next,this._first.prev=Wr.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==Wr.Undefined;)yield e.element,e=e.next}}const jJ="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function GOe(s=""){let e="(-?\\d*\\.\\d\\w*)|([^";for(const t of jJ)s.indexOf(t)>=0||(e+="\\"+t);return e+="\\s]+)",new RegExp(e,"g")}const Use=GOe();function Fse(s){let e=Use;if(s&&s instanceof RegExp)if(s.global)e=s;else{let t="g";s.ignoreCase&&(t+="i"),s.multiline&&(t+="m"),s.unicode&&(t+="u"),e=new RegExp(s.source,t)}return e.lastIndex=0,e}const mZe=new Ia;mZe.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function DB(s,e,t,i,n){if(e=Fse(e),n||(n=Zn.first(mZe)),t.length>n.maxLen){let d=s-n.maxLen/2;return d<0?d=0:i+=d,t=t.substring(d,s+n.maxLen/2),DB(s,e,t,i,n)}const o=Date.now(),r=s-1-i;let l=-1,a=null;for(let d=1;!(Date.now()-o>=n.timeBudget);d++){const c=r-n.windowSize*d;e.lastIndex=Math.max(0,c);const h=JOe(e,t,r,l);if(!h&&a||(a=h,c<=0))break;l=c}if(a){const d={word:a[0],startColumn:i+1+a.index,endColumn:i+1+a.index+a[0].length};return e.lastIndex=0,d}return null}function JOe(s,e,t,i){let n;for(;n=s.exec(e);){const o=n.index||0;if(o<=t&&s.lastIndex>=t)return n;if(i>0&&o>i)return null}return null}const Gp=8;class pZe{constructor(e){this._values=e}hasChanged(e){return this._values[e]}}class gZe{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}class no{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return N3(e,t)}compute(e,t,i){return i}}class zC{constructor(e,t){this.newValue=e,this.didChange=t}}function N3(s,e){if(typeof s!="object"||typeof e!="object"||!s||!e)return new zC(e,s!==e);if(Array.isArray(s)||Array.isArray(e)){const i=Array.isArray(s)&&Array.isArray(e)&&lo(s,e);return new zC(e,!i)}let t=!1;for(const i in e)if(e.hasOwnProperty(i)){const n=N3(s[i],e[i]);n.didChange&&(s[i]=n.newValue,t=!0)}return new zC(s,t)}class Xv{constructor(e){this.schema=void 0,this.id=e,this.name="_never_",this.defaultValue=void 0}applyUpdate(e,t){return N3(e,t)}validate(e){return this.defaultValue}}class dM{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return N3(e,t)}validate(e){return typeof e>"u"?this.defaultValue:e}compute(e,t,i){return i}}function $t(s,e){return typeof s>"u"?e:s==="false"?!1:!!s}class Tn extends dM{constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="boolean",n.default=i),super(e,t,i,n)}validate(e){return $t(e,this.defaultValue)}}function sZ(s,e,t,i){if(typeof s>"u")return e;let n=parseInt(s,10);return isNaN(n)?e:(n=Math.max(t,n),n=Math.min(i,n),n|0)}class Ms extends dM{static clampedInt(e,t,i,n){return sZ(e,t,i,n)}constructor(e,t,i,n,o,r=void 0){typeof r<"u"&&(r.type="integer",r.default=i,r.minimum=n,r.maximum=o),super(e,t,i,r),this.minimum=n,this.maximum=o}validate(e){return Ms.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}function XOe(s,e,t,i){if(typeof s>"u")return e;const n=Oc.float(s,e);return Oc.clamp(n,t,i)}class Oc extends dM{static clamp(e,t,i){return e<t?t:e>i?i:e}static float(e,t){if(typeof e=="number")return e;if(typeof e>"u")return t;const i=parseFloat(e);return isNaN(i)?t:i}constructor(e,t,i,n,o){typeof o<"u"&&(o.type="number",o.default=i),super(e,t,i,o),this.validationFn=n}validate(e){return this.validationFn(Oc.float(e,this.defaultValue))}}class pa extends dM{static string(e,t){return typeof e!="string"?t:e}constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="string",n.default=i),super(e,t,i,n)}validate(e){return pa.string(e,this.defaultValue)}}function No(s,e,t,i){return typeof s!="string"?e:i&&s in i?i[s]:t.indexOf(s)===-1?e:s}class Ao extends dM{constructor(e,t,i,n,o=void 0){typeof o<"u"&&(o.type="string",o.enum=n,o.default=i),super(e,t,i,o),this._allowedValues=n}validate(e){return No(e,this.defaultValue,this._allowedValues)}}class Gx extends no{constructor(e,t,i,n,o,r,l=void 0){typeof l<"u"&&(l.type="string",l.enum=o,l.default=n),super(e,t,i,l),this._allowedValues=o,this._convert=r}validate(e){return typeof e!="string"?this.defaultValue:this._allowedValues.indexOf(e)===-1?this.defaultValue:this._convert(e)}}function YOe(s){switch(s){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}class _Oe extends no{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[F("accessibilitySupport.auto","Use platform APIs to detect when a Screen Reader is attached."),F("accessibilitySupport.on","Optimize for usage with a Screen Reader."),F("accessibilitySupport.off","Assume a screen reader is not attached.")],default:"auto",tags:["accessibility"],description:F("accessibilitySupport","Controls if the UI should run in a mode where it is optimized for screen readers.")})}validate(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(e,t,i){return i===0?e.accessibilitySupport:i}}class zOe extends no{constructor(){const e={insertSpace:!0,ignoreEmptyLines:!0};super(23,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:F("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:F("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertSpace:$t(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:$t(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function OOe(s){switch(s){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}var sl;(function(s){s[s.Line=1]="Line",s[s.Block=2]="Block",s[s.Underline=3]="Underline",s[s.LineThin=4]="LineThin",s[s.BlockOutline=5]="BlockOutline",s[s.UnderlineThin=6]="UnderlineThin"})(sl||(sl={}));function jOe(s){switch(s){case"line":return sl.Line;case"block":return sl.Block;case"underline":return sl.Underline;case"line-thin":return sl.LineThin;case"block-outline":return sl.BlockOutline;case"underline-thin":return sl.UnderlineThin}}class POe extends Xv{constructor(){super(143)}compute(e,t,i){const n=["monaco-editor"];return t.get(39)&&n.push(t.get(39)),e.extraEditorClassName&&n.push(e.extraEditorClassName),t.get(74)==="default"?n.push("mouse-default"):t.get(74)==="copy"&&n.push("mouse-copy"),t.get(112)&&n.push("showUnused"),t.get(141)&&n.push("showDeprecated"),n.join(" ")}}class HOe extends Tn{constructor(){super(37,"emptySelectionClipboard",!0,{description:F("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}compute(e,t,i){return i&&e.emptySelectionClipboard}}class KOe extends no{constructor(){const e={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(41,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:F("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:e.seedSearchStringFromSelection,enumDescriptions:[F("editor.find.seedSearchStringFromSelection.never","Never seed search string from the editor selection."),F("editor.find.seedSearchStringFromSelection.always","Always seed search string from the editor selection, including word at cursor position."),F("editor.find.seedSearchStringFromSelection.selection","Only seed search string from the editor selection.")],description:F("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[F("editor.find.autoFindInSelection.never","Never turn on Find in Selection automatically (default)."),F("editor.find.autoFindInSelection.always","Always turn on Find in Selection automatically."),F("editor.find.autoFindInSelection.multiline","Turn on Find in Selection automatically when multiple lines of content are selected.")],description:F("find.autoFindInSelection","Controls the condition for turning on Find in Selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:F("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:hn},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:F("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:F("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{cursorMoveOnType:$t(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof e.seedSearchStringFromSelection=="boolean"?e.seedSearchStringFromSelection?"always":"never":No(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:typeof e.autoFindInSelection=="boolean"?e.autoFindInSelection?"always":"never":No(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:$t(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:$t(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:$t(t.loop,this.defaultValue.loop)}}}const j0=class j0 extends no{constructor(){super(51,"fontLigatures",j0.OFF,{anyOf:[{type:"boolean",description:F("fontLigatures","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")},{type:"string",description:F("fontFeatureSettings","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")}],description:F("fontLigaturesGeneral","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"||e.length===0?j0.OFF:e==="true"?j0.ON:e:e?j0.ON:j0.OFF}};j0.OFF='"liga" off, "calt" off',j0.ON='"liga" on, "calt" on';let TF=j0;const P0=class P0 extends no{constructor(){super(54,"fontVariations",P0.OFF,{anyOf:[{type:"boolean",description:F("fontVariations","Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.")},{type:"string",description:F("fontVariationSettings","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.")}],description:F("fontVariationsGeneral","Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?P0.OFF:e==="true"?P0.TRANSLATE:e:e?P0.TRANSLATE:P0.OFF}compute(e,t,i){return e.fontInfo.fontVariationSettings}};P0.OFF="normal",P0.TRANSLATE="translate";let GB=P0;class qOe extends Xv{constructor(){super(50)}compute(e,t,i){return e.fontInfo}}class $Oe extends dM{constructor(){super(52,"fontSize",Xa.fontSize,{type:"number",minimum:6,maximum:100,default:Xa.fontSize,description:F("fontSize","Controls the font size in pixels.")})}validate(e){const t=Oc.float(e,this.defaultValue);return t===0?Xa.fontSize:Oc.clamp(t,6,100)}compute(e,t,i){return e.fontInfo.fontSize}}const Hp=class Hp extends no{constructor(){super(53,"fontWeight",Xa.fontWeight,{anyOf:[{type:"number",minimum:Hp.MINIMUM_VALUE,maximum:Hp.MAXIMUM_VALUE,errorMessage:F("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:Hp.SUGGESTION_VALUES}],default:Xa.fontWeight,description:F("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}validate(e){return e==="normal"||e==="bold"?e:String(Ms.clampedInt(e,Xa.fontWeight,Hp.MINIMUM_VALUE,Hp.MAXIMUM_VALUE))}};Hp.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"],Hp.MINIMUM_VALUE=1,Hp.MAXIMUM_VALUE=1e3;let qK=Hp;class eje extends no{constructor(){const e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",multipleTests:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:"",alternativeTestsCommand:""},t={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[F("editor.gotoLocation.multiple.peek","Show Peek view of the results (default)"),F("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a Peek view"),F("editor.gotoLocation.multiple.goto","Go to the primary result and enable Peek-less navigation to others")]},i=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];super(58,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:F("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":{description:F("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleTypeDefinitions":{description:F("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleDeclarations":{description:F("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleImplementations":{description:F("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleReferences":{description:F("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist."),...t},"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,enum:i,description:F("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,enum:i,description:F("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,enum:i,description:F("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,enum:i,description:F("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,enum:i,description:F("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{multiple:No(t.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:t.multipleDefinitions??No(t.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:t.multipleTypeDefinitions??No(t.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:t.multipleDeclarations??No(t.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:t.multipleImplementations??No(t.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:t.multipleReferences??No(t.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),multipleTests:t.multipleTests??No(t.multipleTests,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:pa.string(t.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:pa.string(t.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:pa.string(t.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:pa.string(t.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:pa.string(t.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand),alternativeTestsCommand:pa.string(t.alternativeTestsCommand,this.defaultValue.alternativeTestsCommand)}}}class tje extends no{constructor(){const e={enabled:!0,delay:300,hidingDelay:300,sticky:!0,above:!0};super(60,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:F("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,minimum:0,maximum:1e4,description:F("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:F("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")},"editor.hover.hidingDelay":{type:"integer",minimum:0,default:e.hidingDelay,description:F("hover.hidingDelay","Controls the delay in milliseconds after which the hover is hidden. Requires `editor.hover.sticky` to be enabled.")},"editor.hover.above":{type:"boolean",default:e.above,description:F("hover.above","Prefer showing hovers above the line, if there's space.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),delay:Ms.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:$t(t.sticky,this.defaultValue.sticky),hidingDelay:Ms.clampedInt(t.hidingDelay,this.defaultValue.hidingDelay,0,6e5),above:$t(t.above,this.defaultValue.above)}}}class y1 extends Xv{constructor(){super(146)}compute(e,t,i){return y1.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio,glyphMarginDecorationLaneCount:e.glyphMarginDecorationLaneCount})}static computeContainedMinimapLineCount(e){const t=e.height/e.lineHeight,i=Math.floor(e.paddingTop/e.lineHeight);let n=Math.floor(e.paddingBottom/e.lineHeight);e.scrollBeyondLastLine&&(n=Math.max(n,t-1));const o=(i+e.viewLineCount+n)/(e.pixelRatio*e.height),r=Math.floor(e.viewLineCount/o);return{typicalViewportLineCount:t,extraLinesBeforeFirstLine:i,extraLinesBeyondLastLine:n,desiredRatio:o,minimapLineCount:r}}static _computeMinimapLayout(e,t){const i=e.outerWidth,n=e.outerHeight,o=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(o*n),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:n};const r=t.stableMinimapLayoutInput,l=r&&e.outerHeight===r.outerHeight&&e.lineHeight===r.lineHeight&&e.typicalHalfwidthCharacterWidth===r.typicalHalfwidthCharacterWidth&&e.pixelRatio===r.pixelRatio&&e.scrollBeyondLastLine===r.scrollBeyondLastLine&&e.paddingTop===r.paddingTop&&e.paddingBottom===r.paddingBottom&&e.minimap.enabled===r.minimap.enabled&&e.minimap.side===r.minimap.side&&e.minimap.size===r.minimap.size&&e.minimap.showSlider===r.minimap.showSlider&&e.minimap.renderCharacters===r.minimap.renderCharacters&&e.minimap.maxColumn===r.minimap.maxColumn&&e.minimap.scale===r.minimap.scale&&e.verticalScrollbarWidth===r.verticalScrollbarWidth&&e.isViewportWrapping===r.isViewportWrapping,a=e.lineHeight,d=e.typicalHalfwidthCharacterWidth,c=e.scrollBeyondLastLine,h=e.minimap.renderCharacters;let u=o>=2?Math.round(e.minimap.scale*2):e.minimap.scale;const m=e.minimap.maxColumn,p=e.minimap.size,g=e.minimap.side,f=e.verticalScrollbarWidth,b=e.viewLineCount,U=e.remainingWidth,S=e.isViewportWrapping,Z=h?2:3;let R=Math.floor(o*n);const y=R/o;let N=!1,w=!1,Q=Z*u,C=u/o,v=1;if(p==="fill"||p==="fit"){const{typicalViewportLineCount:ee,extraLinesBeforeFirstLine:le,extraLinesBeyondLastLine:Fe,desiredRatio:Ue,minimapLineCount:ze}=y1.computeContainedMinimapLineCount({viewLineCount:b,scrollBeyondLastLine:c,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:n,lineHeight:a,pixelRatio:o});if(b/ze>1)N=!0,w=!0,u=1,Q=1,C=u/o;else{let Ie=!1,at=u+1;if(p==="fit"){const je=Math.ceil((le+b+Fe)*Q);S&&l&&U<=t.stableFitRemainingWidth?(Ie=!0,at=t.stableFitMaxMinimapScale):Ie=je>R}if(p==="fill"||Ie){N=!0;const je=u;Q=Math.min(a*o,Math.max(1,Math.floor(1/Ue))),S&&l&&U<=t.stableFitRemainingWidth&&(at=t.stableFitMaxMinimapScale),u=Math.min(at,Math.max(1,Math.floor(Q/Z))),u>je&&(v=Math.min(2,u/je)),C=u/o/v,R=Math.ceil(Math.max(ee,le+b+Fe)*Q),S?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=U,t.stableFitMaxMinimapScale=u):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0)}}}const Y=Math.floor(m*C),J=Math.min(Y,Math.max(0,Math.floor((U-f-2)*C/(d+C)))+Gp);let k=Math.floor(o*J);const E=k/o;k=Math.floor(k*v);const K=h?1:2,de=g==="left"?0:i-J-f;return{renderMinimap:K,minimapLeft:de,minimapWidth:J,minimapHeightIsEditorHeight:N,minimapIsSampling:w,minimapScale:u,minimapLineHeight:Q,minimapCanvasInnerWidth:k,minimapCanvasInnerHeight:R,minimapCanvasOuterWidth:E,minimapCanvasOuterHeight:y}}static computeLayout(e,t){const i=t.outerWidth|0,n=t.outerHeight|0,o=t.lineHeight|0,r=t.lineNumbersDigitCount|0,l=t.typicalHalfwidthCharacterWidth,a=t.maxDigitWidth,d=t.pixelRatio,c=t.viewLineCount,h=e.get(138),u=h==="inherit"?e.get(137):h,m=u==="inherit"?e.get(133):u,p=e.get(136),g=t.isDominatedByLongLines,f=e.get(57),b=e.get(68).renderType!==0,U=e.get(69),S=e.get(106),Z=e.get(84),R=e.get(73),y=e.get(104),N=y.verticalScrollbarSize,w=y.verticalHasArrows,Q=y.arrowSize,C=y.horizontalScrollbarSize,v=e.get(43),Y=e.get(111)!=="never";let J=e.get(66);v&&Y&&(J+=16);let k=0;if(b){const dt=Math.max(r,U);k=Math.round(dt*a)}let E=0;f&&(E=o*t.glyphMarginDecorationLaneCount);let K=0,de=K+E,ee=de+k,le=ee+J;const Fe=i-E-k-J;let Ue=!1,ze=!1,Oe=-1;u==="inherit"&&g?(Ue=!0,ze=!0):m==="on"||m==="bounded"?ze=!0:m==="wordWrapColumn"&&(Oe=p);const Ie=y1._computeMinimapLayout({outerWidth:i,outerHeight:n,lineHeight:o,typicalHalfwidthCharacterWidth:l,pixelRatio:d,scrollBeyondLastLine:S,paddingTop:Z.top,paddingBottom:Z.bottom,minimap:R,verticalScrollbarWidth:N,viewLineCount:c,remainingWidth:Fe,isViewportWrapping:ze},t.memory||new gZe);Ie.renderMinimap!==0&&Ie.minimapLeft===0&&(K+=Ie.minimapWidth,de+=Ie.minimapWidth,ee+=Ie.minimapWidth,le+=Ie.minimapWidth);const at=Fe-Ie.minimapWidth,je=Math.max(1,Math.floor((at-N-2)/l)),Se=w?Q:0;return ze&&(Oe=Math.max(1,je),m==="bounded"&&(Oe=Math.min(Oe,p))),{width:i,height:n,glyphMarginLeft:K,glyphMarginWidth:E,glyphMarginDecorationLaneCount:t.glyphMarginDecorationLaneCount,lineNumbersLeft:de,lineNumbersWidth:k,decorationsLeft:ee,decorationsWidth:J,contentLeft:le,contentWidth:at,minimap:Ie,viewportColumn:je,isWordWrapMinified:Ue,isViewportWrapping:ze,wrappingColumn:Oe,verticalScrollbarWidth:N,horizontalScrollbarHeight:C,overviewRuler:{top:Se,width:N,height:n-2*Se,right:0}}}}class ije extends no{constructor(){super(140,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[F("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),F("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],type:"string",enum:["simple","advanced"],default:"simple",description:F("wrappingStrategy","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.")}})}validate(e){return No(e,"simple",["simple","advanced"])}compute(e,t,i){return t.get(2)===2?"advanced":i}}var Bu;(function(s){s.Off="off",s.OnCode="onCode",s.On="on"})(Bu||(Bu={}));class nje extends no{constructor(){const e={enabled:Bu.OnCode};super(65,"lightbulb",e,{"editor.lightbulb.enabled":{type:"string",tags:["experimental"],enum:[Bu.Off,Bu.OnCode,Bu.On],default:e.enabled,enumDescriptions:[F("editor.lightbulb.enabled.off","Disable the code action menu."),F("editor.lightbulb.enabled.onCode","Show the code action menu when the cursor is on lines with code."),F("editor.lightbulb.enabled.on","Show the code action menu when the cursor is on lines with code or on empty lines.")],description:F("enabled","Enables the Code Action lightbulb in the editor.")}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{enabled:No(e.enabled,this.defaultValue.enabled,[Bu.Off,Bu.OnCode,Bu.On])}}}class sje extends no{constructor(){const e={enabled:!0,maxLineCount:5,defaultModel:"outlineModel",scrollWithEditor:!0};super(116,"stickyScroll",e,{"editor.stickyScroll.enabled":{type:"boolean",default:e.enabled,description:F("editor.stickyScroll.enabled","Shows the nested current scopes during the scroll at the top of the editor."),tags:["experimental"]},"editor.stickyScroll.maxLineCount":{type:"number",default:e.maxLineCount,minimum:1,maximum:20,description:F("editor.stickyScroll.maxLineCount","Defines the maximum number of sticky lines to show.")},"editor.stickyScroll.defaultModel":{type:"string",enum:["outlineModel","foldingProviderModel","indentationModel"],default:e.defaultModel,description:F("editor.stickyScroll.defaultModel","Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.")},"editor.stickyScroll.scrollWithEditor":{type:"boolean",default:e.scrollWithEditor,description:F("editor.stickyScroll.scrollWithEditor","Enable scrolling of Sticky Scroll with the editor's horizontal scrollbar.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),maxLineCount:Ms.clampedInt(t.maxLineCount,this.defaultValue.maxLineCount,1,20),defaultModel:No(t.defaultModel,this.defaultValue.defaultModel,["outlineModel","foldingProviderModel","indentationModel"]),scrollWithEditor:$t(t.scrollWithEditor,this.defaultValue.scrollWithEditor)}}}class oje extends no{constructor(){const e={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(142,"inlayHints",e,{"editor.inlayHints.enabled":{type:"string",default:e.enabled,description:F("inlayHints.enable","Enables the inlay hints in the editor."),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[F("editor.inlayHints.on","Inlay hints are enabled"),F("editor.inlayHints.onUnlessPressed","Inlay hints are showing by default and hide when holding {0}",hn?"Ctrl+Option":"Ctrl+Alt"),F("editor.inlayHints.offUnlessPressed","Inlay hints are hidden by default and show when holding {0}",hn?"Ctrl+Option":"Ctrl+Alt"),F("editor.inlayHints.off","Inlay hints are disabled")]},"editor.inlayHints.fontSize":{type:"number",default:e.fontSize,markdownDescription:F("inlayHints.fontSize","Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.","`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:e.fontFamily,markdownDescription:F("inlayHints.fontFamily","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:e.padding,description:F("inlayHints.padding","Enables the padding around the inlay hints in the editor.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return typeof t.enabled=="boolean"&&(t.enabled=t.enabled?"on":"off"),{enabled:No(t.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:Ms.clampedInt(t.fontSize,this.defaultValue.fontSize,0,100),fontFamily:pa.string(t.fontFamily,this.defaultValue.fontFamily),padding:$t(t.padding,this.defaultValue.padding)}}}class rje extends no{constructor(){super(66,"lineDecorationsWidth",10)}validate(e){return typeof e=="string"&&/^\d+(\.\d+)?ch$/.test(e)?-parseFloat(e.substring(0,e.length-2)):Ms.clampedInt(e,this.defaultValue,0,1e3)}compute(e,t,i){return i<0?Ms.clampedInt(-i*e.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):i}}class lje extends Oc{constructor(){super(67,"lineHeight",Xa.lineHeight,e=>Oc.clamp(e,0,150),{markdownDescription:F("lineHeight",`Controls the line height.
- - Use 0 to automatically compute the line height from the font size.
- - Values between 0 and 8 will be used as a multiplier with the font size.
- - Values greater than or equal to 8 will be used as effective values.`)})}compute(e,t,i){return e.fontInfo.lineHeight}}class aje extends no{constructor(){const e={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1,showRegionSectionHeaders:!0,showMarkSectionHeaders:!0,sectionHeaderFontSize:9,sectionHeaderLetterSpacing:1};super(73,"minimap",e,{"editor.minimap.enabled":{type:"boolean",default:e.enabled,description:F("minimap.enabled","Controls whether the minimap is shown.")},"editor.minimap.autohide":{type:"boolean",default:e.autohide,description:F("minimap.autohide","Controls whether the minimap is hidden automatically.")},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[F("minimap.size.proportional","The minimap has the same size as the editor contents (and might scroll)."),F("minimap.size.fill","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."),F("minimap.size.fit","The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],default:e.size,description:F("minimap.size","Controls the size of the minimap.")},"editor.minimap.side":{type:"string",enum:["left","right"],default:e.side,description:F("minimap.side","Controls the side where to render the minimap.")},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:e.showSlider,description:F("minimap.showSlider","Controls when the minimap slider is shown.")},"editor.minimap.scale":{type:"number",default:e.scale,minimum:1,maximum:3,enum:[1,2,3],description:F("minimap.scale","Scale of content drawn in the minimap: 1, 2 or 3.")},"editor.minimap.renderCharacters":{type:"boolean",default:e.renderCharacters,description:F("minimap.renderCharacters","Render the actual characters on a line as opposed to color blocks.")},"editor.minimap.maxColumn":{type:"number",default:e.maxColumn,description:F("minimap.maxColumn","Limit the width of the minimap to render at most a certain number of columns.")},"editor.minimap.showRegionSectionHeaders":{type:"boolean",default:e.showRegionSectionHeaders,description:F("minimap.showRegionSectionHeaders","Controls whether named regions are shown as section headers in the minimap.")},"editor.minimap.showMarkSectionHeaders":{type:"boolean",default:e.showMarkSectionHeaders,description:F("minimap.showMarkSectionHeaders","Controls whether MARK: comments are shown as section headers in the minimap.")},"editor.minimap.sectionHeaderFontSize":{type:"number",default:e.sectionHeaderFontSize,description:F("minimap.sectionHeaderFontSize","Controls the font size of section headers in the minimap.")},"editor.minimap.sectionHeaderLetterSpacing":{type:"number",default:e.sectionHeaderLetterSpacing,description:F("minimap.sectionHeaderLetterSpacing","Controls the amount of space (in pixels) between characters of section header. This helps the readability of the header in small font sizes.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),autohide:$t(t.autohide,this.defaultValue.autohide),size:No(t.size,this.defaultValue.size,["proportional","fill","fit"]),side:No(t.side,this.defaultValue.side,["right","left"]),showSlider:No(t.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:$t(t.renderCharacters,this.defaultValue.renderCharacters),scale:Ms.clampedInt(t.scale,1,1,3),maxColumn:Ms.clampedInt(t.maxColumn,this.defaultValue.maxColumn,1,1e4),showRegionSectionHeaders:$t(t.showRegionSectionHeaders,this.defaultValue.showRegionSectionHeaders),showMarkSectionHeaders:$t(t.showMarkSectionHeaders,this.defaultValue.showMarkSectionHeaders),sectionHeaderFontSize:Oc.clamp(t.sectionHeaderFontSize??this.defaultValue.sectionHeaderFontSize,4,32),sectionHeaderLetterSpacing:Oc.clamp(t.sectionHeaderLetterSpacing??this.defaultValue.sectionHeaderLetterSpacing,0,5)}}}function dje(s){return s==="ctrlCmd"?hn?"metaKey":"ctrlKey":"altKey"}class cje extends no{constructor(){super(84,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:F("padding.top","Controls the amount of space between the top edge of the editor and the first line.")},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:F("padding.bottom","Controls the amount of space between the bottom edge of the editor and the last line.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{top:Ms.clampedInt(t.top,0,0,1e3),bottom:Ms.clampedInt(t.bottom,0,0,1e3)}}}class hje extends no{constructor(){const e={enabled:!0,cycle:!0};super(86,"parameterHints",e,{"editor.parameterHints.enabled":{type:"boolean",default:e.enabled,description:F("parameterHints.enabled","Enables a pop-up that shows parameter documentation and type information as you type.")},"editor.parameterHints.cycle":{type:"boolean",default:e.cycle,description:F("parameterHints.cycle","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),cycle:$t(t.cycle,this.defaultValue.cycle)}}}class uje extends Xv{constructor(){super(144)}compute(e,t,i){return e.pixelRatio}}class mje extends no{constructor(){super(88,"placeholder",void 0)}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e:this.defaultValue}}class pje extends no{constructor(){const e={other:"on",comments:"off",strings:"off"},t=[{type:"boolean"},{type:"string",enum:["on","inline","off"],enumDescriptions:[F("on","Quick suggestions show inside the suggest widget"),F("inline","Quick suggestions show as ghost text"),F("off","Quick suggestions are disabled")]}];super(90,"quickSuggestions",e,{type:"object",additionalProperties:!1,properties:{strings:{anyOf:t,default:e.strings,description:F("quickSuggestions.strings","Enable quick suggestions inside strings.")},comments:{anyOf:t,default:e.comments,description:F("quickSuggestions.comments","Enable quick suggestions inside comments.")},other:{anyOf:t,default:e.other,description:F("quickSuggestions.other","Enable quick suggestions outside of strings and comments.")}},default:e,markdownDescription:F("quickSuggestions","Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the {0}-setting which controls if suggestions are triggered by special characters.","`#editor.suggestOnTriggerCharacters#`")}),this.defaultValue=e}validate(e){if(typeof e=="boolean"){const d=e?"on":"off";return{comments:d,strings:d,other:d}}if(!e||typeof e!="object")return this.defaultValue;const{other:t,comments:i,strings:n}=e,o=["on","inline","off"];let r,l,a;return typeof t=="boolean"?r=t?"on":"off":r=No(t,this.defaultValue.other,o),typeof i=="boolean"?l=i?"on":"off":l=No(i,this.defaultValue.comments,o),typeof n=="boolean"?a=n?"on":"off":a=No(n,this.defaultValue.strings,o),{other:r,comments:l,strings:a}}}class gje extends no{constructor(){super(68,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[F("lineNumbers.off","Line numbers are not rendered."),F("lineNumbers.on","Line numbers are rendered as absolute number."),F("lineNumbers.relative","Line numbers are rendered as distance in lines to cursor position."),F("lineNumbers.interval","Line numbers are rendered every 10 lines.")],default:"on",description:F("lineNumbers","Controls the display of line numbers.")})}validate(e){let t=this.defaultValue.renderType,i=this.defaultValue.renderFn;return typeof e<"u"&&(typeof e=="function"?(t=4,i=e):e==="interval"?t=3:e==="relative"?t=2:e==="on"?t=1:t=0),{renderType:t,renderFn:i}}}function PJ(s){const e=s.get(99);return e==="editable"?s.get(92):e!=="on"}class fje extends no{constructor(){const e=[],t={type:"number",description:F("rulers.size","Number of monospace characters at which this editor ruler will render.")};super(103,"rulers",e,{type:"array",items:{anyOf:[t,{type:["object"],properties:{column:t,color:{type:"string",description:F("rulers.color","Color of this editor ruler."),format:"color-hex"}}}]},default:e,description:F("rulers","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")})}validate(e){if(Array.isArray(e)){const t=[];for(const i of e)if(typeof i=="number")t.push({column:Ms.clampedInt(i,0,0,1e4),color:null});else if(i&&typeof i=="object"){const n=i;t.push({column:Ms.clampedInt(n.column,0,0,1e4),color:n.color})}return t.sort((i,n)=>i.column-n.column),t}return this.defaultValue}}class bje extends no{constructor(){super(93,"readOnlyMessage",void 0)}validate(e){return!e||typeof e!="object"?this.defaultValue:e}}function zce(s,e){if(typeof s!="string")return e;switch(s){case"hidden":return 2;case"visible":return 3;default:return 1}}let Uje=class extends no{constructor(){const e={vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1,ignoreHorizontalScrollbarInContentHeight:!1};super(104,"scrollbar",e,{"editor.scrollbar.vertical":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[F("scrollbar.vertical.auto","The vertical scrollbar will be visible only when necessary."),F("scrollbar.vertical.visible","The vertical scrollbar will always be visible."),F("scrollbar.vertical.fit","The vertical scrollbar will always be hidden.")],default:"auto",description:F("scrollbar.vertical","Controls the visibility of the vertical scrollbar.")},"editor.scrollbar.horizontal":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[F("scrollbar.horizontal.auto","The horizontal scrollbar will be visible only when necessary."),F("scrollbar.horizontal.visible","The horizontal scrollbar will always be visible."),F("scrollbar.horizontal.fit","The horizontal scrollbar will always be hidden.")],default:"auto",description:F("scrollbar.horizontal","Controls the visibility of the horizontal scrollbar.")},"editor.scrollbar.verticalScrollbarSize":{type:"number",default:e.verticalScrollbarSize,description:F("scrollbar.verticalScrollbarSize","The width of the vertical scrollbar.")},"editor.scrollbar.horizontalScrollbarSize":{type:"number",default:e.horizontalScrollbarSize,description:F("scrollbar.horizontalScrollbarSize","The height of the horizontal scrollbar.")},"editor.scrollbar.scrollByPage":{type:"boolean",default:e.scrollByPage,description:F("scrollbar.scrollByPage","Controls whether clicks scroll by page or jump to click position.")},"editor.scrollbar.ignoreHorizontalScrollbarInContentHeight":{type:"boolean",default:e.ignoreHorizontalScrollbarInContentHeight,description:F("scrollbar.ignoreHorizontalScrollbarInContentHeight","When set, the horizontal scrollbar will not increase the size of the editor's content.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e,i=Ms.clampedInt(t.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),n=Ms.clampedInt(t.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:Ms.clampedInt(t.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:zce(t.vertical,this.defaultValue.vertical),horizontal:zce(t.horizontal,this.defaultValue.horizontal),useShadows:$t(t.useShadows,this.defaultValue.useShadows),verticalHasArrows:$t(t.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:$t(t.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:$t(t.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:$t(t.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:i,horizontalSliderSize:Ms.clampedInt(t.horizontalSliderSize,i,0,1e3),verticalScrollbarSize:n,verticalSliderSize:Ms.clampedInt(t.verticalSliderSize,n,0,1e3),scrollByPage:$t(t.scrollByPage,this.defaultValue.scrollByPage),ignoreHorizontalScrollbarInContentHeight:$t(t.ignoreHorizontalScrollbarInContentHeight,this.defaultValue.ignoreHorizontalScrollbarInContentHeight)}}};const Tc="inUntrustedWorkspace",fd={allowedCharacters:"editor.unicodeHighlight.allowedCharacters",invisibleCharacters:"editor.unicodeHighlight.invisibleCharacters",nonBasicASCII:"editor.unicodeHighlight.nonBasicASCII",ambiguousCharacters:"editor.unicodeHighlight.ambiguousCharacters",includeComments:"editor.unicodeHighlight.includeComments",includeStrings:"editor.unicodeHighlight.includeStrings",allowedLocales:"editor.unicodeHighlight.allowedLocales"};class Fje extends no{constructor(){const e={nonBasicASCII:Tc,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:Tc,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(126,"unicodeHighlight",e,{[fd.nonBasicASCII]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,Tc],default:e.nonBasicASCII,description:F("unicodeHighlight.nonBasicASCII","Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.")},[fd.invisibleCharacters]:{restricted:!0,type:"boolean",default:e.invisibleCharacters,description:F("unicodeHighlight.invisibleCharacters","Controls whether characters that just reserve space or have no width at all are highlighted.")},[fd.ambiguousCharacters]:{restricted:!0,type:"boolean",default:e.ambiguousCharacters,description:F("unicodeHighlight.ambiguousCharacters","Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.")},[fd.includeComments]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,Tc],default:e.includeComments,description:F("unicodeHighlight.includeComments","Controls whether characters in comments should also be subject to Unicode highlighting.")},[fd.includeStrings]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,Tc],default:e.includeStrings,description:F("unicodeHighlight.includeStrings","Controls whether characters in strings should also be subject to Unicode highlighting.")},[fd.allowedCharacters]:{restricted:!0,type:"object",default:e.allowedCharacters,description:F("unicodeHighlight.allowedCharacters","Defines allowed characters that are not being highlighted."),additionalProperties:{type:"boolean"}},[fd.allowedLocales]:{restricted:!0,type:"object",additionalProperties:{type:"boolean"},default:e.allowedLocales,description:F("unicodeHighlight.allowedLocales","Unicode characters that are common in allowed locales are not being highlighted.")}})}applyUpdate(e,t){let i=!1;t.allowedCharacters&&e&&(lc(e.allowedCharacters,t.allowedCharacters)||(e={...e,allowedCharacters:t.allowedCharacters},i=!0)),t.allowedLocales&&e&&(lc(e.allowedLocales,t.allowedLocales)||(e={...e,allowedLocales:t.allowedLocales},i=!0));const n=super.applyUpdate(e,t);return i?new zC(n.newValue,!0):n}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{nonBasicASCII:Q1(t.nonBasicASCII,Tc,[!0,!1,Tc]),invisibleCharacters:$t(t.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:$t(t.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:Q1(t.includeComments,Tc,[!0,!1,Tc]),includeStrings:Q1(t.includeStrings,Tc,[!0,!1,Tc]),allowedCharacters:this.validateBooleanMap(e.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(e.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(e,t){if(typeof e!="object"||!e)return t;const i={};for(const[n,o]of Object.entries(e))o===!0&&(i[n]=!0);return i}}class Aje extends no{constructor(){const e={enabled:!0,mode:"subwordSmart",showToolbar:"onHover",suppressSuggestions:!1,keepOnBlur:!1,fontFamily:"default"};super(62,"inlineSuggest",e,{"editor.inlineSuggest.enabled":{type:"boolean",default:e.enabled,description:F("inlineSuggest.enabled","Controls whether to automatically show inline suggestions in the editor.")},"editor.inlineSuggest.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover","never"],enumDescriptions:[F("inlineSuggest.showToolbar.always","Show the inline suggestion toolbar whenever an inline suggestion is shown."),F("inlineSuggest.showToolbar.onHover","Show the inline suggestion toolbar when hovering over an inline suggestion."),F("inlineSuggest.showToolbar.never","Never show the inline suggestion toolbar.")],description:F("inlineSuggest.showToolbar","Controls when to show the inline suggestion toolbar.")},"editor.inlineSuggest.suppressSuggestions":{type:"boolean",default:e.suppressSuggestions,description:F("inlineSuggest.suppressSuggestions","Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.")},"editor.inlineSuggest.fontFamily":{type:"string",default:e.fontFamily,description:F("inlineSuggest.fontFamily","Controls the font family of the inline suggestions.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),mode:No(t.mode,this.defaultValue.mode,["prefix","subword","subwordSmart"]),showToolbar:No(t.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),suppressSuggestions:$t(t.suppressSuggestions,this.defaultValue.suppressSuggestions),keepOnBlur:$t(t.keepOnBlur,this.defaultValue.keepOnBlur),fontFamily:pa.string(t.fontFamily,this.defaultValue.fontFamily)}}}class Zje extends no{constructor(){const e={enabled:!1,showToolbar:"onHover",fontFamily:"default",keepOnBlur:!1};super(63,"experimentalInlineEdit",e,{"editor.experimentalInlineEdit.enabled":{type:"boolean",default:e.enabled,description:F("inlineEdit.enabled","Controls whether to show inline edits in the editor.")},"editor.experimentalInlineEdit.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover","never"],enumDescriptions:[F("inlineEdit.showToolbar.always","Show the inline edit toolbar whenever an inline suggestion is shown."),F("inlineEdit.showToolbar.onHover","Show the inline edit toolbar when hovering over an inline suggestion."),F("inlineEdit.showToolbar.never","Never show the inline edit toolbar.")],description:F("inlineEdit.showToolbar","Controls when to show the inline edit toolbar.")},"editor.experimentalInlineEdit.fontFamily":{type:"string",default:e.fontFamily,description:F("inlineEdit.fontFamily","Controls the font family of the inline edit.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),showToolbar:No(t.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),fontFamily:pa.string(t.fontFamily,this.defaultValue.fontFamily),keepOnBlur:$t(t.keepOnBlur,this.defaultValue.keepOnBlur)}}}class Sje extends no{constructor(){const e={enabled:Yl.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:Yl.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(15,"bracketPairColorization",e,{"editor.bracketPairColorization.enabled":{type:"boolean",default:e.enabled,markdownDescription:F("bracketPairColorization.enabled","Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.","`#workbench.colorCustomizations#`")},"editor.bracketPairColorization.independentColorPoolPerBracketType":{type:"boolean",default:e.independentColorPoolPerBracketType,description:F("bracketPairColorization.independentColorPoolPerBracketType","Controls whether each bracket type has its own independent color pool.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:$t(t.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}class Nje extends no{constructor(){const e={bracketPairs:!1,bracketPairsHorizontal:"active",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(16,"guides",e,{"editor.guides.bracketPairs":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[F("editor.guides.bracketPairs.true","Enables bracket pair guides."),F("editor.guides.bracketPairs.active","Enables bracket pair guides only for the active bracket pair."),F("editor.guides.bracketPairs.false","Disables bracket pair guides.")],default:e.bracketPairs,description:F("editor.guides.bracketPairs","Controls whether bracket pair guides are enabled or not.")},"editor.guides.bracketPairsHorizontal":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[F("editor.guides.bracketPairsHorizontal.true","Enables horizontal guides as addition to vertical bracket pair guides."),F("editor.guides.bracketPairsHorizontal.active","Enables horizontal guides only for the active bracket pair."),F("editor.guides.bracketPairsHorizontal.false","Disables horizontal bracket pair guides.")],default:e.bracketPairsHorizontal,description:F("editor.guides.bracketPairsHorizontal","Controls whether horizontal bracket pair guides are enabled or not.")},"editor.guides.highlightActiveBracketPair":{type:"boolean",default:e.highlightActiveBracketPair,description:F("editor.guides.highlightActiveBracketPair","Controls whether the editor should highlight the active bracket pair.")},"editor.guides.indentation":{type:"boolean",default:e.indentation,description:F("editor.guides.indentation","Controls whether the editor should render indent guides.")},"editor.guides.highlightActiveIndentation":{type:["boolean","string"],enum:[!0,"always",!1],enumDescriptions:[F("editor.guides.highlightActiveIndentation.true","Highlights the active indent guide."),F("editor.guides.highlightActiveIndentation.always","Highlights the active indent guide even if bracket guides are highlighted."),F("editor.guides.highlightActiveIndentation.false","Do not highlight the active indent guide.")],default:e.highlightActiveIndentation,description:F("editor.guides.highlightActiveIndentation","Controls whether the editor should highlight the active indent guide.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{bracketPairs:Q1(t.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,"active"]),bracketPairsHorizontal:Q1(t.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,"active"]),highlightActiveBracketPair:$t(t.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:$t(t.indentation,this.defaultValue.indentation),highlightActiveIndentation:Q1(t.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,"always"])}}}function Q1(s,e,t){const i=t.indexOf(s);return i===-1?e:t[i]}class Rje extends no{constructor(){const e={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!1,localityBonus:!1,shareSuggestSelections:!1,selectionMode:"always",showIcons:!0,showStatusBar:!1,preview:!1,previewMode:"subwordSmart",showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showDeprecated:!0,matchOnWordStartOnly:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};super(119,"suggest",e,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[F("suggest.insertMode.insert","Insert suggestion without overwriting text right of the cursor."),F("suggest.insertMode.replace","Insert suggestion and overwrite text right of the cursor.")],default:e.insertMode,description:F("suggest.insertMode","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")},"editor.suggest.filterGraceful":{type:"boolean",default:e.filterGraceful,description:F("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:e.localityBonus,description:F("suggest.localityBonus","Controls whether sorting favors words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:e.shareSuggestSelections,markdownDescription:F("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.selectionMode":{type:"string",enum:["always","never","whenTriggerCharacter","whenQuickSuggestion"],enumDescriptions:[F("suggest.insertMode.always","Always select a suggestion when automatically triggering IntelliSense."),F("suggest.insertMode.never","Never select a suggestion when automatically triggering IntelliSense."),F("suggest.insertMode.whenTriggerCharacter","Select a suggestion only when triggering IntelliSense from a trigger character."),F("suggest.insertMode.whenQuickSuggestion","Select a suggestion only when triggering IntelliSense as you type.")],default:e.selectionMode,markdownDescription:F("suggest.selectionMode","Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions ({0} and {1}) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.","`#editor.quickSuggestions#`","`#editor.suggestOnTriggerCharacters#`")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:e.snippetsPreventQuickSuggestions,description:F("suggest.snippetsPreventQuickSuggestions","Controls whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:e.showIcons,description:F("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.showStatusBar":{type:"boolean",default:e.showStatusBar,description:F("suggest.showStatusBar","Controls the visibility of the status bar at the bottom of the suggest widget.")},"editor.suggest.preview":{type:"boolean",default:e.preview,description:F("suggest.preview","Controls whether to preview the suggestion outcome in the editor.")},"editor.suggest.showInlineDetails":{type:"boolean",default:e.showInlineDetails,description:F("suggest.showInlineDetails","Controls whether suggest details show inline with the label or only in the details widget.")},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:F("suggest.maxVisibleSuggestions.dep","This setting is deprecated. The suggest widget can now be resized.")},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:F("deprecated","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showMethods","When enabled IntelliSense shows `method`-suggestions.")},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showFunctions","When enabled IntelliSense shows `function`-suggestions.")},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showConstructors","When enabled IntelliSense shows `constructor`-suggestions.")},"editor.suggest.showDeprecated":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showDeprecated","When enabled IntelliSense shows `deprecated`-suggestions.")},"editor.suggest.matchOnWordStartOnly":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.matchOnWordStartOnly","When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.")},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showFields","When enabled IntelliSense shows `field`-suggestions.")},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showVariables","When enabled IntelliSense shows `variable`-suggestions.")},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showClasss","When enabled IntelliSense shows `class`-suggestions.")},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showStructs","When enabled IntelliSense shows `struct`-suggestions.")},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showInterfaces","When enabled IntelliSense shows `interface`-suggestions.")},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showModules","When enabled IntelliSense shows `module`-suggestions.")},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showPropertys","When enabled IntelliSense shows `property`-suggestions.")},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showEvents","When enabled IntelliSense shows `event`-suggestions.")},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showOperators","When enabled IntelliSense shows `operator`-suggestions.")},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showUnits","When enabled IntelliSense shows `unit`-suggestions.")},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showValues","When enabled IntelliSense shows `value`-suggestions.")},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showConstants","When enabled IntelliSense shows `constant`-suggestions.")},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showEnums","When enabled IntelliSense shows `enum`-suggestions.")},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showEnumMembers","When enabled IntelliSense shows `enumMember`-suggestions.")},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showKeywords","When enabled IntelliSense shows `keyword`-suggestions.")},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showTexts","When enabled IntelliSense shows `text`-suggestions.")},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showColors","When enabled IntelliSense shows `color`-suggestions.")},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showFiles","When enabled IntelliSense shows `file`-suggestions.")},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showReferences","When enabled IntelliSense shows `reference`-suggestions.")},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showCustomcolors","When enabled IntelliSense shows `customcolor`-suggestions.")},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showFolders","When enabled IntelliSense shows `folder`-suggestions.")},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showTypeParameters","When enabled IntelliSense shows `typeParameter`-suggestions.")},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showSnippets","When enabled IntelliSense shows `snippet`-suggestions.")},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showUsers","When enabled IntelliSense shows `user`-suggestions.")},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:F("editor.suggest.showIssues","When enabled IntelliSense shows `issues`-suggestions.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertMode:No(t.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:$t(t.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:$t(t.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:$t(t.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:$t(t.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:No(t.selectionMode,this.defaultValue.selectionMode,["always","never","whenQuickSuggestion","whenTriggerCharacter"]),showIcons:$t(t.showIcons,this.defaultValue.showIcons),showStatusBar:$t(t.showStatusBar,this.defaultValue.showStatusBar),preview:$t(t.preview,this.defaultValue.preview),previewMode:No(t.previewMode,this.defaultValue.previewMode,["prefix","subword","subwordSmart"]),showInlineDetails:$t(t.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:$t(t.showMethods,this.defaultValue.showMethods),showFunctions:$t(t.showFunctions,this.defaultValue.showFunctions),showConstructors:$t(t.showConstructors,this.defaultValue.showConstructors),showDeprecated:$t(t.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:$t(t.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:$t(t.showFields,this.defaultValue.showFields),showVariables:$t(t.showVariables,this.defaultValue.showVariables),showClasses:$t(t.showClasses,this.defaultValue.showClasses),showStructs:$t(t.showStructs,this.defaultValue.showStructs),showInterfaces:$t(t.showInterfaces,this.defaultValue.showInterfaces),showModules:$t(t.showModules,this.defaultValue.showModules),showProperties:$t(t.showProperties,this.defaultValue.showProperties),showEvents:$t(t.showEvents,this.defaultValue.showEvents),showOperators:$t(t.showOperators,this.defaultValue.showOperators),showUnits:$t(t.showUnits,this.defaultValue.showUnits),showValues:$t(t.showValues,this.defaultValue.showValues),showConstants:$t(t.showConstants,this.defaultValue.showConstants),showEnums:$t(t.showEnums,this.defaultValue.showEnums),showEnumMembers:$t(t.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:$t(t.showKeywords,this.defaultValue.showKeywords),showWords:$t(t.showWords,this.defaultValue.showWords),showColors:$t(t.showColors,this.defaultValue.showColors),showFiles:$t(t.showFiles,this.defaultValue.showFiles),showReferences:$t(t.showReferences,this.defaultValue.showReferences),showFolders:$t(t.showFolders,this.defaultValue.showFolders),showTypeParameters:$t(t.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:$t(t.showSnippets,this.defaultValue.showSnippets),showUsers:$t(t.showUsers,this.defaultValue.showUsers),showIssues:$t(t.showIssues,this.defaultValue.showIssues)}}}class Vje extends no{constructor(){super(114,"smartSelect",{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:F("selectLeadingAndTrailingWhitespace","Whether leading and trailing whitespace should always be selected."),default:!0,type:"boolean"},"editor.smartSelect.selectSubwords":{description:F("selectSubwords","Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected."),default:!0,type:"boolean"}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{selectLeadingAndTrailingWhitespace:$t(e.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace),selectSubwords:$t(e.selectSubwords,this.defaultValue.selectSubwords)}}}class Wje extends no{constructor(){const e=[];super(131,"wordSegmenterLocales",e,{anyOf:[{description:F("wordSegmenterLocales","Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.)."),type:"string"},{description:F("wordSegmenterLocales","Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.)."),type:"array",items:{type:"string"}}]})}validate(e){if(typeof e=="string"&&(e=[e]),Array.isArray(e)){const t=[];for(const i of e)if(typeof i=="string")try{Intl.Segmenter.supportedLocalesOf(i).length>0&&t.push(i)}catch{}return t}return this.defaultValue}}class yje extends no{constructor(){super(139,"wrappingIndent",1,{"editor.wrappingIndent":{type:"string",enum:["none","same","indent","deepIndent"],enumDescriptions:[F("wrappingIndent.none","No indentation. Wrapped lines begin at column 1."),F("wrappingIndent.same","Wrapped lines get the same indentation as the parent."),F("wrappingIndent.indent","Wrapped lines get +1 indentation toward the parent."),F("wrappingIndent.deepIndent","Wrapped lines get +2 indentation toward the parent.")],description:F("wrappingIndent","Controls the indentation of wrapped lines."),default:"same"}})}validate(e){switch(e){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}return 1}compute(e,t,i){return t.get(2)===2?0:i}}class Qje extends Xv{constructor(){super(147)}compute(e,t,i){const n=t.get(146);return{isDominatedByLongLines:e.isDominatedByLongLines,isWordWrapMinified:n.isWordWrapMinified,isViewportWrapping:n.isViewportWrapping,wrappingColumn:n.wrappingColumn}}}class Mje extends no{constructor(){const e={enabled:!0,showDropSelector:"afterDrop"};super(36,"dropIntoEditor",e,{"editor.dropIntoEditor.enabled":{type:"boolean",default:e.enabled,markdownDescription:F("dropIntoEditor.enabled","Controls whether you can drag and drop a file into a text editor by holding down the `Shift` key (instead of opening the file in an editor).")},"editor.dropIntoEditor.showDropSelector":{type:"string",markdownDescription:F("dropIntoEditor.showDropSelector","Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped."),enum:["afterDrop","never"],enumDescriptions:[F("dropIntoEditor.showDropSelector.afterDrop","Show the drop selector widget after a file is dropped into the editor."),F("dropIntoEditor.showDropSelector.never","Never show the drop selector widget. Instead the default drop provider is always used.")],default:"afterDrop"}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),showDropSelector:No(t.showDropSelector,this.defaultValue.showDropSelector,["afterDrop","never"])}}}class wje extends no{constructor(){const e={enabled:!0,showPasteSelector:"afterPaste"};super(85,"pasteAs",e,{"editor.pasteAs.enabled":{type:"boolean",default:e.enabled,markdownDescription:F("pasteAs.enabled","Controls whether you can paste content in different ways.")},"editor.pasteAs.showPasteSelector":{type:"string",markdownDescription:F("pasteAs.showPasteSelector","Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted."),enum:["afterPaste","never"],enumDescriptions:[F("pasteAs.showPasteSelector.afterPaste","Show the paste selector widget after content is pasted into the editor."),F("pasteAs.showPasteSelector.never","Never show the paste selector widget. Instead the default pasting behavior is always used.")],default:"afterPaste"}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:$t(t.enabled,this.defaultValue.enabled),showPasteSelector:No(t.showPasteSelector,this.defaultValue.showPasteSelector,["afterPaste","never"])}}}const Tje="Consolas, 'Courier New', monospace",Cje="Menlo, Monaco, 'Courier New', monospace",Bje="'Droid Sans Mono', 'monospace', monospace",Xa={fontFamily:hn?Cje:_a?Bje:Tje,fontWeight:"normal",fontSize:hn?12:14,lineHeight:0,letterSpacing:0},bW=[];function bt(s){return bW[s.id]=s,s}const Up={acceptSuggestionOnCommitCharacter:bt(new Tn(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:F("acceptSuggestionOnCommitCharacter","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")})),acceptSuggestionOnEnter:bt(new Ao(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",F("acceptSuggestionOnEnterSmart","Only accept a suggestion with `Enter` when it makes a textual change."),""],markdownDescription:F("acceptSuggestionOnEnter","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")})),accessibilitySupport:bt(new _Oe),accessibilityPageSize:bt(new Ms(3,"accessibilityPageSize",10,1,1073741824,{description:F("accessibilityPageSize","Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default."),tags:["accessibility"]})),ariaLabel:bt(new pa(4,"ariaLabel",F("editorViewAccessibleLabel","Editor content"))),ariaRequired:bt(new Tn(5,"ariaRequired",!1,void 0)),screenReaderAnnounceInlineSuggestion:bt(new Tn(8,"screenReaderAnnounceInlineSuggestion",!0,{description:F("screenReaderAnnounceInlineSuggestion","Control whether inline suggestions are announced by a screen reader."),tags:["accessibility"]})),autoClosingBrackets:bt(new Ao(6,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",F("editor.autoClosingBrackets.languageDefined","Use language configurations to determine when to autoclose brackets."),F("editor.autoClosingBrackets.beforeWhitespace","Autoclose brackets only when the cursor is to the left of whitespace."),""],description:F("autoClosingBrackets","Controls whether the editor should automatically close brackets after the user adds an opening bracket.")})),autoClosingComments:bt(new Ao(7,"autoClosingComments","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",F("editor.autoClosingComments.languageDefined","Use language configurations to determine when to autoclose comments."),F("editor.autoClosingComments.beforeWhitespace","Autoclose comments only when the cursor is to the left of whitespace."),""],description:F("autoClosingComments","Controls whether the editor should automatically close comments after the user adds an opening comment.")})),autoClosingDelete:bt(new Ao(9,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",F("editor.autoClosingDelete.auto","Remove adjacent closing quotes or brackets only if they were automatically inserted."),""],description:F("autoClosingDelete","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.")})),autoClosingOvertype:bt(new Ao(10,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",F("editor.autoClosingOvertype.auto","Type over closing quotes or brackets only if they were automatically inserted."),""],description:F("autoClosingOvertype","Controls whether the editor should type over closing quotes or brackets.")})),autoClosingQuotes:bt(new Ao(11,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",F("editor.autoClosingQuotes.languageDefined","Use language configurations to determine when to autoclose quotes."),F("editor.autoClosingQuotes.beforeWhitespace","Autoclose quotes only when the cursor is to the left of whitespace."),""],description:F("autoClosingQuotes","Controls whether the editor should automatically close quotes after the user adds an opening quote.")})),autoIndent:bt(new Gx(12,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],YOe,{enumDescriptions:[F("editor.autoIndent.none","The editor will not insert indentation automatically."),F("editor.autoIndent.keep","The editor will keep the current line's indentation."),F("editor.autoIndent.brackets","The editor will keep the current line's indentation and honor language defined brackets."),F("editor.autoIndent.advanced","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."),F("editor.autoIndent.full","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],description:F("autoIndent","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")})),automaticLayout:bt(new Tn(13,"automaticLayout",!1)),autoSurround:bt(new Ao(14,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[F("editor.autoSurround.languageDefined","Use language configurations to determine when to automatically surround selections."),F("editor.autoSurround.quotes","Surround with quotes but not brackets."),F("editor.autoSurround.brackets","Surround with brackets but not quotes."),""],description:F("autoSurround","Controls whether the editor should automatically surround selections when typing quotes or brackets.")})),bracketPairColorization:bt(new Sje),bracketPairGuides:bt(new Nje),stickyTabStops:bt(new Tn(117,"stickyTabStops",!1,{description:F("stickyTabStops","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.")})),codeLens:bt(new Tn(17,"codeLens",!0,{description:F("codeLens","Controls whether the editor shows CodeLens.")})),codeLensFontFamily:bt(new pa(18,"codeLensFontFamily","",{description:F("codeLensFontFamily","Controls the font family for CodeLens.")})),codeLensFontSize:bt(new Ms(19,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,markdownDescription:F("codeLensFontSize","Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.")})),colorDecorators:bt(new Tn(20,"colorDecorators",!0,{description:F("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")})),colorDecoratorActivatedOn:bt(new Ao(149,"colorDecoratorsActivatedOn","clickAndHover",["clickAndHover","hover","click"],{enumDescriptions:[F("editor.colorDecoratorActivatedOn.clickAndHover","Make the color picker appear both on click and hover of the color decorator"),F("editor.colorDecoratorActivatedOn.hover","Make the color picker appear on hover of the color decorator"),F("editor.colorDecoratorActivatedOn.click","Make the color picker appear on click of the color decorator")],description:F("colorDecoratorActivatedOn","Controls the condition to make a color picker appear from a color decorator")})),colorDecoratorsLimit:bt(new Ms(21,"colorDecoratorsLimit",500,1,1e6,{markdownDescription:F("colorDecoratorsLimit","Controls the max number of color decorators that can be rendered in an editor at once.")})),columnSelection:bt(new Tn(22,"columnSelection",!1,{description:F("columnSelection","Enable that the selection with the mouse and keys is doing column selection.")})),comments:bt(new zOe),contextmenu:bt(new Tn(24,"contextmenu",!0)),copyWithSyntaxHighlighting:bt(new Tn(25,"copyWithSyntaxHighlighting",!0,{description:F("copyWithSyntaxHighlighting","Controls whether syntax highlighting should be copied into the clipboard.")})),cursorBlinking:bt(new Gx(26,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],OOe,{description:F("cursorBlinking","Control the cursor animation style.")})),cursorSmoothCaretAnimation:bt(new Ao(27,"cursorSmoothCaretAnimation","off",["off","explicit","on"],{enumDescriptions:[F("cursorSmoothCaretAnimation.off","Smooth caret animation is disabled."),F("cursorSmoothCaretAnimation.explicit","Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture."),F("cursorSmoothCaretAnimation.on","Smooth caret animation is always enabled.")],description:F("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")})),cursorStyle:bt(new Gx(28,"cursorStyle",sl.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],jOe,{description:F("cursorStyle","Controls the cursor style.")})),cursorSurroundingLines:bt(new Ms(29,"cursorSurroundingLines",0,0,1073741824,{description:F("cursorSurroundingLines","Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.")})),cursorSurroundingLinesStyle:bt(new Ao(30,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[F("cursorSurroundingLinesStyle.default","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."),F("cursorSurroundingLinesStyle.all","`cursorSurroundingLines` is enforced always.")],markdownDescription:F("cursorSurroundingLinesStyle","Controls when `#editor.cursorSurroundingLines#` should be enforced.")})),cursorWidth:bt(new Ms(31,"cursorWidth",0,0,1073741824,{markdownDescription:F("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")})),disableLayerHinting:bt(new Tn(32,"disableLayerHinting",!1)),disableMonospaceOptimizations:bt(new Tn(33,"disableMonospaceOptimizations",!1)),domReadOnly:bt(new Tn(34,"domReadOnly",!1)),dragAndDrop:bt(new Tn(35,"dragAndDrop",!0,{description:F("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")})),emptySelectionClipboard:bt(new HOe),dropIntoEditor:bt(new Mje),stickyScroll:bt(new sje),experimentalWhitespaceRendering:bt(new Ao(38,"experimentalWhitespaceRendering","svg",["svg","font","off"],{enumDescriptions:[F("experimentalWhitespaceRendering.svg","Use a new rendering method with svgs."),F("experimentalWhitespaceRendering.font","Use a new rendering method with font characters."),F("experimentalWhitespaceRendering.off","Use the stable rendering method.")],description:F("experimentalWhitespaceRendering","Controls whether whitespace is rendered with a new, experimental method.")})),extraEditorClassName:bt(new pa(39,"extraEditorClassName","")),fastScrollSensitivity:bt(new Oc(40,"fastScrollSensitivity",5,s=>s<=0?5:s,{markdownDescription:F("fastScrollSensitivity","Scrolling speed multiplier when pressing `Alt`.")})),find:bt(new KOe),fixedOverflowWidgets:bt(new Tn(42,"fixedOverflowWidgets",!1)),folding:bt(new Tn(43,"folding",!0,{description:F("folding","Controls whether the editor has code folding enabled.")})),foldingStrategy:bt(new Ao(44,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[F("foldingStrategy.auto","Use a language-specific folding strategy if available, else the indentation-based one."),F("foldingStrategy.indentation","Use the indentation-based folding strategy.")],description:F("foldingStrategy","Controls the strategy for computing folding ranges.")})),foldingHighlight:bt(new Tn(45,"foldingHighlight",!0,{description:F("foldingHighlight","Controls whether the editor should highlight folded ranges.")})),foldingImportsByDefault:bt(new Tn(46,"foldingImportsByDefault",!1,{description:F("foldingImportsByDefault","Controls whether the editor automatically collapses import ranges.")})),foldingMaximumRegions:bt(new Ms(47,"foldingMaximumRegions",5e3,10,65e3,{description:F("foldingMaximumRegions","The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.")})),unfoldOnClickAfterEndOfLine:bt(new Tn(48,"unfoldOnClickAfterEndOfLine",!1,{description:F("unfoldOnClickAfterEndOfLine","Controls whether clicking on the empty content after a folded line will unfold the line.")})),fontFamily:bt(new pa(49,"fontFamily",Xa.fontFamily,{description:F("fontFamily","Controls the font family.")})),fontInfo:bt(new qOe),fontLigatures2:bt(new TF),fontSize:bt(new $Oe),fontWeight:bt(new qK),fontVariations:bt(new GB),formatOnPaste:bt(new Tn(55,"formatOnPaste",!1,{description:F("formatOnPaste","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")})),formatOnType:bt(new Tn(56,"formatOnType",!1,{description:F("formatOnType","Controls whether the editor should automatically format the line after typing.")})),glyphMargin:bt(new Tn(57,"glyphMargin",!0,{description:F("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")})),gotoLocation:bt(new eje),hideCursorInOverviewRuler:bt(new Tn(59,"hideCursorInOverviewRuler",!1,{description:F("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")})),hover:bt(new tje),inDiffEditor:bt(new Tn(61,"inDiffEditor",!1)),letterSpacing:bt(new Oc(64,"letterSpacing",Xa.letterSpacing,s=>Oc.clamp(s,-5,20),{description:F("letterSpacing","Controls the letter spacing in pixels.")})),lightbulb:bt(new nje),lineDecorationsWidth:bt(new rje),lineHeight:bt(new lje),lineNumbers:bt(new gje),lineNumbersMinChars:bt(new Ms(69,"lineNumbersMinChars",5,1,300)),linkedEditing:bt(new Tn(70,"linkedEditing",!1,{description:F("linkedEditing","Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.")})),links:bt(new Tn(71,"links",!0,{description:F("links","Controls whether the editor should detect links and make them clickable.")})),matchBrackets:bt(new Ao(72,"matchBrackets","always",["always","near","never"],{description:F("matchBrackets","Highlight matching brackets.")})),minimap:bt(new aje),mouseStyle:bt(new Ao(74,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:bt(new Oc(75,"mouseWheelScrollSensitivity",1,s=>s===0?1:s,{markdownDescription:F("mouseWheelScrollSensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")})),mouseWheelZoom:bt(new Tn(76,"mouseWheelZoom",!1,{markdownDescription:hn?F("mouseWheelZoom.mac","Zoom the font of the editor when using mouse wheel and holding `Cmd`."):F("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")})),multiCursorMergeOverlapping:bt(new Tn(77,"multiCursorMergeOverlapping",!0,{description:F("multiCursorMergeOverlapping","Merge multiple cursors when they are overlapping.")})),multiCursorModifier:bt(new Gx(78,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],dje,{markdownEnumDescriptions:[F("multiCursorModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),F("multiCursorModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],markdownDescription:F({key:"multiCursorModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")})),multiCursorPaste:bt(new Ao(79,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[F("multiCursorPaste.spread","Each cursor pastes a single line of the text."),F("multiCursorPaste.full","Each cursor pastes the full text.")],markdownDescription:F("multiCursorPaste","Controls pasting when the line count of the pasted text matches the cursor count.")})),multiCursorLimit:bt(new Ms(80,"multiCursorLimit",1e4,1,1e5,{markdownDescription:F("multiCursorLimit","Controls the max number of cursors that can be in an active editor at once.")})),occurrencesHighlight:bt(new Ao(81,"occurrencesHighlight","singleFile",["off","singleFile","multiFile"],{markdownEnumDescriptions:[F("occurrencesHighlight.off","Does not highlight occurrences."),F("occurrencesHighlight.singleFile","Highlights occurrences only in the current file."),F("occurrencesHighlight.multiFile","Experimental: Highlights occurrences across all valid open files.")],markdownDescription:F("occurrencesHighlight","Controls whether occurrences should be highlighted across open files.")})),overviewRulerBorder:bt(new Tn(82,"overviewRulerBorder",!0,{description:F("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")})),overviewRulerLanes:bt(new Ms(83,"overviewRulerLanes",3,0,3)),padding:bt(new cje),pasteAs:bt(new wje),parameterHints:bt(new hje),peekWidgetDefaultFocus:bt(new Ao(87,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[F("peekWidgetDefaultFocus.tree","Focus the tree when opening peek"),F("peekWidgetDefaultFocus.editor","Focus the editor when opening peek")],description:F("peekWidgetDefaultFocus","Controls whether to focus the inline editor or the tree in the peek widget.")})),placeholder:bt(new mje),definitionLinkOpensInPeek:bt(new Tn(89,"definitionLinkOpensInPeek",!1,{description:F("definitionLinkOpensInPeek","Controls whether the Go to Definition mouse gesture always opens the peek widget.")})),quickSuggestions:bt(new pje),quickSuggestionsDelay:bt(new Ms(91,"quickSuggestionsDelay",10,0,1073741824,{description:F("quickSuggestionsDelay","Controls the delay in milliseconds after which quick suggestions will show up.")})),readOnly:bt(new Tn(92,"readOnly",!1)),readOnlyMessage:bt(new bje),renameOnType:bt(new Tn(94,"renameOnType",!1,{description:F("renameOnType","Controls whether the editor auto renames on type."),markdownDeprecationMessage:F("renameOnTypeDeprecate","Deprecated, use `editor.linkedEditing` instead.")})),renderControlCharacters:bt(new Tn(95,"renderControlCharacters",!0,{description:F("renderControlCharacters","Controls whether the editor should render control characters."),restricted:!0})),renderFinalNewline:bt(new Ao(96,"renderFinalNewline",_a?"dimmed":"on",["off","on","dimmed"],{description:F("renderFinalNewline","Render last line number when the file ends with a newline.")})),renderLineHighlight:bt(new Ao(97,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",F("renderLineHighlight.all","Highlights both the gutter and the current line.")],description:F("renderLineHighlight","Controls how the editor should render the current line highlight.")})),renderLineHighlightOnlyWhenFocus:bt(new Tn(98,"renderLineHighlightOnlyWhenFocus",!1,{description:F("renderLineHighlightOnlyWhenFocus","Controls if the editor should render the current line highlight only when the editor is focused.")})),renderValidationDecorations:bt(new Ao(99,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:bt(new Ao(100,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",F("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),F("renderWhitespace.selection","Render whitespace characters only on selected text."),F("renderWhitespace.trailing","Render only trailing whitespace characters."),""],description:F("renderWhitespace","Controls how the editor should render whitespace characters.")})),revealHorizontalRightPadding:bt(new Ms(101,"revealHorizontalRightPadding",15,0,1e3)),roundedSelection:bt(new Tn(102,"roundedSelection",!0,{description:F("roundedSelection","Controls whether selections should have rounded corners.")})),rulers:bt(new fje),scrollbar:bt(new Uje),scrollBeyondLastColumn:bt(new Ms(105,"scrollBeyondLastColumn",4,0,1073741824,{description:F("scrollBeyondLastColumn","Controls the number of extra characters beyond which the editor will scroll horizontally.")})),scrollBeyondLastLine:bt(new Tn(106,"scrollBeyondLastLine",!0,{description:F("scrollBeyondLastLine","Controls whether the editor will scroll beyond the last line.")})),scrollPredominantAxis:bt(new Tn(107,"scrollPredominantAxis",!0,{description:F("scrollPredominantAxis","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")})),selectionClipboard:bt(new Tn(108,"selectionClipboard",!0,{description:F("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:_a})),selectionHighlight:bt(new Tn(109,"selectionHighlight",!0,{description:F("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")})),selectOnLineNumbers:bt(new Tn(110,"selectOnLineNumbers",!0)),showFoldingControls:bt(new Ao(111,"showFoldingControls","mouseover",["always","never","mouseover"],{enumDescriptions:[F("showFoldingControls.always","Always show the folding controls."),F("showFoldingControls.never","Never show the folding controls and reduce the gutter size."),F("showFoldingControls.mouseover","Only show the folding controls when the mouse is over the gutter.")],description:F("showFoldingControls","Controls when the folding controls on the gutter are shown.")})),showUnused:bt(new Tn(112,"showUnused",!0,{description:F("showUnused","Controls fading out of unused code.")})),showDeprecated:bt(new Tn(141,"showDeprecated",!0,{description:F("showDeprecated","Controls strikethrough deprecated variables.")})),inlayHints:bt(new oje),snippetSuggestions:bt(new Ao(113,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[F("snippetSuggestions.top","Show snippet suggestions on top of other suggestions."),F("snippetSuggestions.bottom","Show snippet suggestions below other suggestions."),F("snippetSuggestions.inline","Show snippets suggestions with other suggestions."),F("snippetSuggestions.none","Do not show snippet suggestions.")],description:F("snippetSuggestions","Controls whether snippets are shown with other suggestions and how they are sorted.")})),smartSelect:bt(new Vje),smoothScrolling:bt(new Tn(115,"smoothScrolling",!1,{description:F("smoothScrolling","Controls whether the editor will scroll using an animation.")})),stopRenderingLineAfter:bt(new Ms(118,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:bt(new Rje),inlineSuggest:bt(new Aje),inlineEdit:bt(new Zje),inlineCompletionsAccessibilityVerbose:bt(new Tn(150,"inlineCompletionsAccessibilityVerbose",!1,{description:F("inlineCompletionsAccessibilityVerbose","Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.")})),suggestFontSize:bt(new Ms(120,"suggestFontSize",0,0,1e3,{markdownDescription:F("suggestFontSize","Font size for the suggest widget. When set to {0}, the value of {1} is used.","`0`","`#editor.fontSize#`")})),suggestLineHeight:bt(new Ms(121,"suggestLineHeight",0,0,1e3,{markdownDescription:F("suggestLineHeight","Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.","`0`","`#editor.lineHeight#`")})),suggestOnTriggerCharacters:bt(new Tn(122,"suggestOnTriggerCharacters",!0,{description:F("suggestOnTriggerCharacters","Controls whether suggestions should automatically show up when typing trigger characters.")})),suggestSelection:bt(new Ao(123,"suggestSelection","first",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[F("suggestSelection.first","Always select the first suggestion."),F("suggestSelection.recentlyUsed","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."),F("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],description:F("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")})),tabCompletion:bt(new Ao(124,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[F("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),F("tabCompletion.off","Disable tab completions."),F("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:F("tabCompletion","Enables tab completions.")})),tabIndex:bt(new Ms(125,"tabIndex",0,-1,1073741824)),unicodeHighlight:bt(new Fje),unusualLineTerminators:bt(new Ao(127,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[F("unusualLineTerminators.auto","Unusual line terminators are automatically removed."),F("unusualLineTerminators.off","Unusual line terminators are ignored."),F("unusualLineTerminators.prompt","Unusual line terminators prompt to be removed.")],description:F("unusualLineTerminators","Remove unusual line terminators that might cause problems.")})),useShadowDOM:bt(new Tn(128,"useShadowDOM",!0)),useTabStops:bt(new Tn(129,"useTabStops",!0,{description:F("useTabStops","Spaces and tabs are inserted and deleted in alignment with tab stops.")})),wordBreak:bt(new Ao(130,"wordBreak","normal",["normal","keepAll"],{markdownEnumDescriptions:[F("wordBreak.normal","Use the default line break rule."),F("wordBreak.keepAll","Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.")],description:F("wordBreak","Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.")})),wordSegmenterLocales:bt(new Wje),wordSeparators:bt(new pa(132,"wordSeparators",jJ,{description:F("wordSeparators","Characters that will be used as word separators when doing word related navigations or operations.")})),wordWrap:bt(new Ao(133,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[F("wordWrap.off","Lines will never wrap."),F("wordWrap.on","Lines will wrap at the viewport width."),F({key:"wordWrap.wordWrapColumn",comment:["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at `#editor.wordWrapColumn#`."),F({key:"wordWrap.bounded",comment:["- viewport means the edge of the visible window size.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],description:F({key:"wordWrap",comment:["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Controls how lines should wrap.")})),wordWrapBreakAfterCharacters:bt(new pa(134,"wordWrapBreakAfterCharacters"," })]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」")),wordWrapBreakBeforeCharacters:bt(new pa(135,"wordWrapBreakBeforeCharacters","([{‘“〈《「『【〔([{「£¥$£¥++")),wordWrapColumn:bt(new Ms(136,"wordWrapColumn",80,1,1073741824,{markdownDescription:F({key:"wordWrapColumn",comment:["- `editor.wordWrap` refers to a different setting and should not be localized.","- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]},"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")})),wordWrapOverride1:bt(new Ao(137,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:bt(new Ao(138,"wordWrapOverride2","inherit",["off","on","inherit"])),editorClassName:bt(new POe),defaultColorDecorators:bt(new Tn(148,"defaultColorDecorators",!1,{markdownDescription:F("defaultColorDecorators","Controls whether inline color decorations should be shown using the default document color provider")})),pixelRatio:bt(new uje),tabFocusMode:bt(new Tn(145,"tabFocusMode",!1,{markdownDescription:F("tabFocusMode","Controls whether the editor receives tabs or defers them to the workbench for navigation.")})),layoutInfo:bt(new y1),wrappingInfo:bt(new Qje),wrappingIndent:bt(new yje),wrappingStrategy:bt(new ije)};class Lje{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Zy.isErrorNoTelemetry(e)?new Zy(e.message+`
- `+e.stack):new Error(e.message+`
- `+e.stack):e},0)}}emit(e){this.listeners.forEach(t=>{t(e)})}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}}const fZe=new Lje;function wi(s){$h(s)||fZe.onUnexpectedError(s)}function vo(s){$h(s)||fZe.onUnexpectedExternalError(s)}function Oce(s){if(s instanceof Error){const{name:e,message:t}=s,i=s.stacktrace||s.stack;return{$isError:!0,name:e,message:t,stack:i,noTelemetry:Zy.isErrorNoTelemetry(s)}}return s}const HJ="Canceled";function $h(s){return s instanceof Ku?!0:s instanceof Error&&s.name===HJ&&s.message===HJ}class Ku extends Error{constructor(){super(HJ),this.name=this.message}}function vje(){const s=new Error(HJ);return s.name=s.message,s}function Xh(s){return s?new Error(`Illegal argument: ${s}`):new Error("Illegal argument")}function Ase(s){return s?new Error(`Illegal state: ${s}`):new Error("Illegal state")}class kje extends Error{constructor(e){super("NotSupported"),e&&(this.message=e)}}class Zy extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof Zy)return e;const t=new Zy;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}}class _n extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,_n.prototype)}}function CF(s,e){const t=this;let i=!1,n;return function(){if(i)return n;if(i=!0,e)try{n=s.apply(t,arguments)}finally{e()}else n=s.apply(t,arguments);return n}}function R3(s){return typeof s=="object"&&s!==null&&typeof s.dispose=="function"&&s.dispose.length===0}function Ws(s){if(Zn.is(s)){const e=[];for(const t of s)if(t)try{t.dispose()}catch(i){e.push(i)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(s)?[]:s}else if(s)return s.dispose(),s}function Pu(...s){return ei(()=>Ws(s))}function ei(s){return{dispose:CF(()=>{s()})}}const Z_=class Z_{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{Ws(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?Z_.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}deleteAndLeak(e){e&&this._toDispose.has(e)&&this._toDispose.delete(e)}};Z_.DISABLE_DISPOSED_WARNING=!1;let De=Z_;const cae=class cae{constructor(){this._store=new De,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};cae.None=Object.freeze({dispose(){}});let be=cae;class Lr{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||((t=this._value)==null||t.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,(e=this._value)==null||e.dispose(),this._value=void 0}}class xje{constructor(e){this._disposable=e,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}class Ije{constructor(e){this.object=e}dispose(){}}class Zse{constructor(){this._store=new Map,this._isDisposed=!1}dispose(){this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{Ws(this._store.values())}finally{this._store.clear()}}get(e){return this._store.get(e)}set(e,t,i=!1){var n;this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),i||(n=this._store.get(e))==null||n.dispose(),this._store.set(e,t)}deleteAndDispose(e){var t;(t=this._store.get(e))==null||t.dispose(),this._store.delete(e)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}const Eje=globalThis.performance&&typeof globalThis.performance.now=="function";class jr{static create(e){return new jr(e)}constructor(e){this._now=Eje&&e===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}var Ut;(function(s){s.None=()=>be.None;function e(J,k){return u(J,()=>{},0,void 0,!0,void 0,k)}s.defer=e;function t(J){return(k,E=null,K)=>{let de=!1,ee;return ee=J(le=>{if(!de)return ee?ee.dispose():de=!0,k.call(E,le)},null,K),de&&ee.dispose(),ee}}s.once=t;function i(J,k){return s.once(s.filter(J,k))}s.onceIf=i;function n(J,k,E){return c((K,de=null,ee)=>J(le=>K.call(de,k(le)),null,ee),E)}s.map=n;function o(J,k,E){return c((K,de=null,ee)=>J(le=>{k(le),K.call(de,le)},null,ee),E)}s.forEach=o;function r(J,k,E){return c((K,de=null,ee)=>J(le=>k(le)&&K.call(de,le),null,ee),E)}s.filter=r;function l(J){return J}s.signal=l;function a(...J){return(k,E=null,K)=>{const de=Pu(...J.map(ee=>ee(le=>k.call(E,le))));return h(de,K)}}s.any=a;function d(J,k,E,K){let de=E;return n(J,ee=>(de=k(de,ee),de),K)}s.reduce=d;function c(J,k){let E;const K={onWillAddFirstListener(){E=J(de.fire,de)},onDidRemoveLastListener(){E==null||E.dispose()}},de=new fe(K);return k==null||k.add(de),de.event}function h(J,k){return k instanceof Array?k.push(J):k&&k.add(J),J}function u(J,k,E=100,K=!1,de=!1,ee,le){let Fe,Ue,ze,Oe=0,Ie;const at={leakWarningThreshold:ee,onWillAddFirstListener(){Fe=J(Se=>{Oe++,Ue=k(Ue,Se),K&&!ze&&(je.fire(Ue),Ue=void 0),Ie=()=>{const dt=Ue;Ue=void 0,ze=void 0,(!K||Oe>1)&&je.fire(dt),Oe=0},typeof E=="number"?(clearTimeout(ze),ze=setTimeout(Ie,E)):ze===void 0&&(ze=0,queueMicrotask(Ie))})},onWillRemoveListener(){de&&Oe>0&&(Ie==null||Ie())},onDidRemoveLastListener(){Ie=void 0,Fe.dispose()}},je=new fe(at);return le==null||le.add(je),je.event}s.debounce=u;function m(J,k=0,E){return s.debounce(J,(K,de)=>K?(K.push(de),K):[de],k,void 0,!0,void 0,E)}s.accumulate=m;function p(J,k=(K,de)=>K===de,E){let K=!0,de;return r(J,ee=>{const le=K||!k(ee,de);return K=!1,de=ee,le},E)}s.latch=p;function g(J,k,E){return[s.filter(J,k,E),s.filter(J,K=>!k(K),E)]}s.split=g;function f(J,k=!1,E=[],K){let de=E.slice(),ee=J(Ue=>{de?de.push(Ue):Fe.fire(Ue)});K&&K.add(ee);const le=()=>{de==null||de.forEach(Ue=>Fe.fire(Ue)),de=null},Fe=new fe({onWillAddFirstListener(){ee||(ee=J(Ue=>Fe.fire(Ue)),K&&K.add(ee))},onDidAddFirstListener(){de&&(k?setTimeout(le):le())},onDidRemoveLastListener(){ee&&ee.dispose(),ee=null}});return K&&K.add(Fe),Fe.event}s.buffer=f;function b(J,k){return(K,de,ee)=>{const le=k(new S);return J(function(Fe){const Ue=le.evaluate(Fe);Ue!==U&&K.call(de,Ue)},void 0,ee)}}s.chain=b;const U=Symbol("HaltChainable");class S{constructor(){this.steps=[]}map(k){return this.steps.push(k),this}forEach(k){return this.steps.push(E=>(k(E),E)),this}filter(k){return this.steps.push(E=>k(E)?E:U),this}reduce(k,E){let K=E;return this.steps.push(de=>(K=k(K,de),K)),this}latch(k=(E,K)=>E===K){let E=!0,K;return this.steps.push(de=>{const ee=E||!k(de,K);return E=!1,K=de,ee?de:U}),this}evaluate(k){for(const E of this.steps)if(k=E(k),k===U)break;return k}}function Z(J,k,E=K=>K){const K=(...Fe)=>le.fire(E(...Fe)),de=()=>J.on(k,K),ee=()=>J.removeListener(k,K),le=new fe({onWillAddFirstListener:de,onDidRemoveLastListener:ee});return le.event}s.fromNodeEventEmitter=Z;function R(J,k,E=K=>K){const K=(...Fe)=>le.fire(E(...Fe)),de=()=>J.addEventListener(k,K),ee=()=>J.removeEventListener(k,K),le=new fe({onWillAddFirstListener:de,onDidRemoveLastListener:ee});return le.event}s.fromDOMEventEmitter=R;function y(J){return new Promise(k=>t(J)(k))}s.toPromise=y;function N(J){const k=new fe;return J.then(E=>{k.fire(E)},()=>{k.fire(void 0)}).finally(()=>{k.dispose()}),k.event}s.fromPromise=N;function w(J,k){return J(E=>k.fire(E))}s.forward=w;function Q(J,k,E){return k(E),J(K=>k(K))}s.runAndSubscribe=Q;class C{constructor(k,E){this._observable=k,this._counter=0,this._hasChanged=!1;const K={onWillAddFirstListener:()=>{k.addObserver(this),this._observable.reportChanges()},onDidRemoveLastListener:()=>{k.removeObserver(this)}};this.emitter=new fe(K),E&&E.add(this.emitter)}beginUpdate(k){this._counter++}handlePossibleChange(k){}handleChange(k,E){this._hasChanged=!0}endUpdate(k){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function v(J,k){return new C(J,k).emitter.event}s.fromObservable=v;function Y(J){return(k,E,K)=>{let de=0,ee=!1;const le={beginUpdate(){de++},endUpdate(){de--,de===0&&(J.reportChanges(),ee&&(ee=!1,k.call(E)))},handlePossibleChange(){},handleChange(){ee=!0}};J.addObserver(le),J.reportChanges();const Fe={dispose(){J.removeObserver(le)}};return K instanceof De?K.add(Fe):Array.isArray(K)&&K.push(Fe),Fe}}s.fromObservableLight=Y})(Ut||(Ut={}));const l1=class l1{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${l1._idPool++}`,l1.all.add(this)}start(e){this._stopWatch=new jr,this.listenerCount=e}stop(){if(this._stopWatch){const e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}};l1.all=new Set,l1._idPool=0;let $K=l1,Dje=-1;const S_=class S_{constructor(e,t,i=(S_._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e,this.threshold=t,this.name=i,this._warnCountdown=0}dispose(){var e;(e=this._stacks)==null||e.clear()}check(e,t){const i=this.threshold;if(i<=0||t<i)return;this._stacks||(this._stacks=new Map);const n=this._stacks.get(e.value)||0;if(this._stacks.set(e.value,n+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=i*.5;const[o,r]=this.getMostFrequentStack(),l=`[${this.name}] potential listener LEAK detected, having ${t} listeners already. MOST frequent listener (${r}):`;console.warn(l),console.warn(o);const a=new Gje(l,o);this._errorHandler(a)}return()=>{const o=this._stacks.get(e.value)||0;this._stacks.set(e.value,o-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,t=0;for(const[i,n]of this._stacks)(!e||t<n)&&(e=[i,n],t=n);return e}};S_._idPool=1;let e7=S_;class Sse{static create(){const e=new Error;return new Sse(e.stack??"")}constructor(e){this.value=e}print(){console.warn(this.value.split(`
- `).slice(2).join(`
- `))}}class Gje extends Error{constructor(e,t){super(e),this.name="ListenerLeakError",this.stack=t}}class Jje extends Error{constructor(e,t){super(e),this.name="ListenerRefusalError",this.stack=t}}class Tj{constructor(e){this.value=e}}const Xje=2;let fe=class{constructor(e){var t,i,n,o;this._size=0,this._options=e,this._leakageMon=(t=this._options)!=null&&t.leakWarningThreshold?new e7((e==null?void 0:e.onListenerError)??wi,((i=this._options)==null?void 0:i.leakWarningThreshold)??Dje):void 0,this._perfMon=(n=this._options)!=null&&n._profName?new $K(this._options._profName):void 0,this._deliveryQueue=(o=this._options)==null?void 0:o.deliveryQueue}dispose(){var e,t,i,n;this._disposed||(this._disposed=!0,((e=this._deliveryQueue)==null?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),(i=(t=this._options)==null?void 0:t.onDidRemoveLastListener)==null||i.call(t),(n=this._leakageMon)==null||n.dispose())}get event(){return this._event??(this._event=(e,t,i)=>{var l,a,d,c,h;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){const u=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(u);const m=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],p=new Jje(`${u}. HINT: Stack shows most frequent listener (${m[1]}-times)`,m[0]);return(((l=this._options)==null?void 0:l.onListenerError)||wi)(p),be.None}if(this._disposed)return be.None;t&&(e=e.bind(t));const n=new Tj(e);let o;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(n.stack=Sse.create(),o=this._leakageMon.check(n.stack,this._size+1)),this._listeners?this._listeners instanceof Tj?(this._deliveryQueue??(this._deliveryQueue=new bZe),this._listeners=[this._listeners,n]):this._listeners.push(n):((d=(a=this._options)==null?void 0:a.onWillAddFirstListener)==null||d.call(a,this),this._listeners=n,(h=(c=this._options)==null?void 0:c.onDidAddFirstListener)==null||h.call(c,this)),this._size++;const r=ei(()=>{o==null||o(),this._removeListener(n)});return i instanceof De?i.add(r):Array.isArray(i)&&i.push(r),r}),this._event}_removeListener(e){var o,r,l,a;if((r=(o=this._options)==null?void 0:o.onWillRemoveListener)==null||r.call(o,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(a=(l=this._options)==null?void 0:l.onDidRemoveLastListener)==null||a.call(l,this),this._size=0;return}const t=this._listeners,i=t.indexOf(e);if(i===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,t[i]=void 0;const n=this._deliveryQueue.current===this;if(this._size*Xje<=t.length){let d=0;for(let c=0;c<t.length;c++)t[c]?t[d++]=t[c]:n&&(this._deliveryQueue.end--,d<this._deliveryQueue.i&&this._deliveryQueue.i--);t.length=d}}_deliver(e,t){var n;if(!e)return;const i=((n=this._options)==null?void 0:n.onListenerError)||wi;if(!i){e.value(t);return}try{e.value(t)}catch(o){i(o)}}_deliverQueue(e){const t=e.current._listeners;for(;e.i<e.end;)this._deliver(t[e.i++],e.value);e.reset()}fire(e){var t,i,n,o;if((t=this._deliveryQueue)!=null&&t.current&&(this._deliverQueue(this._deliveryQueue),(i=this._perfMon)==null||i.stop()),(n=this._perfMon)==null||n.start(this._size),this._listeners)if(this._listeners instanceof Tj)this._deliver(this._listeners,e);else{const r=this._deliveryQueue;r.enqueue(this,e,this._listeners.length),this._deliverQueue(r)}(o=this._perfMon)==null||o.stop()}hasListeners(){return this._size>0}};const Yje=()=>new bZe;class bZe{constructor(){this.i=-1,this.end=0}enqueue(e,t,i){this.i=0,this.end=i,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class fN extends fe{constructor(e){super(e),this._isPaused=0,this._eventQueue=new Ia,this._mergeFn=e==null?void 0:e.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const e=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(e))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(e){this._size&&(this._isPaused!==0?this._eventQueue.push(e):super.fire(e))}}class UZe extends fN{constructor(e){super(e),this._delay=e.delay??100}fire(e){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(e)}}class _je extends fe{constructor(e){super(e),this._queuedEvents=[],this._mergeFn=e==null?void 0:e.merge}fire(e){this.hasListeners()&&(this._queuedEvents.push(e),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(t=>super.fire(t)),this._queuedEvents=[]}))}}class zje{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new fe({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(e){const t={event:e,listener:null};return this.events.push(t),this.hasListeners&&this.hook(t),ei(CF(()=>{this.hasListeners&&this.unhook(t);const n=this.events.indexOf(t);this.events.splice(n,1)}))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(e=>this.hook(e))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(e=>this.unhook(e))}hook(e){e.listener=e.event(t=>this.emitter.fire(t))}unhook(e){var t;(t=e.listener)==null||t.dispose(),e.listener=null}dispose(){var e;this.emitter.dispose();for(const t of this.events)(e=t.listener)==null||e.dispose();this.events=[]}}class Yv{constructor(){this.data=[]}wrapEvent(e,t,i){return(n,o,r)=>e(l=>{const a=this.data[this.data.length-1];if(!t){a?a.buffers.push(()=>n.call(o,l)):n.call(o,l);return}const d=a;if(!d){n.call(o,t(i,l));return}d.items??(d.items=[]),d.items.push(l),d.buffers.length===0&&a.buffers.push(()=>{d.reducedResult??(d.reducedResult=i?d.items.reduce(t,i):d.items.reduce(t)),n.call(o,d.reducedResult)})},void 0,r)}bufferEvents(e){const t={buffers:new Array};this.data.push(t);const i=e();return this.data.pop(),t.buffers.forEach(n=>n()),i}}class jce{constructor(){this.listening=!1,this.inputEvent=Ut.None,this.inputEventListener=be.None,this.emitter=new fe({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}const FZe=Object.freeze(function(s,e){const t=setTimeout(s.bind(e),0);return{dispose(){clearTimeout(t)}}});var Gi;(function(s){function e(t){return t===s.None||t===s.Cancelled||t instanceof dD?!0:!t||typeof t!="object"?!1:typeof t.isCancellationRequested=="boolean"&&typeof t.onCancellationRequested=="function"}s.isCancellationToken=e,s.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Ut.None}),s.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:FZe})})(Gi||(Gi={}));class dD{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?FZe:(this._emitter||(this._emitter=new fe),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}let go=class{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new dD),this._token}cancel(){this._token?this._token instanceof dD&&this._token.cancel():this._token=Gi.Cancelled}dispose(e=!1){var t;e&&this.cancel(),(t=this._parentListener)==null||t.dispose(),this._token?this._token instanceof dD&&this._token.dispose():this._token=Gi.None}};function t7(s){const e=new go;return s.add({dispose(){e.cancel()}}),e.token}class Nse{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const cD=new Nse,i7=new Nse,n7=new Nse,AZe=new Array(230),Oje=Object.create(null),jje=Object.create(null),Rse=[];for(let s=0;s<=193;s++)Rse[s]=-1;(function(){const s="",e=[[1,0,"None",0,"unknown",0,"VK_UNKNOWN",s,s],[1,1,"Hyper",0,s,0,s,s,s],[1,2,"Super",0,s,0,s,s,s],[1,3,"Fn",0,s,0,s,s,s],[1,4,"FnLock",0,s,0,s,s,s],[1,5,"Suspend",0,s,0,s,s,s],[1,6,"Resume",0,s,0,s,s,s],[1,7,"Turbo",0,s,0,s,s,s],[1,8,"Sleep",0,s,0,"VK_SLEEP",s,s],[1,9,"WakeUp",0,s,0,s,s,s],[0,10,"KeyA",31,"A",65,"VK_A",s,s],[0,11,"KeyB",32,"B",66,"VK_B",s,s],[0,12,"KeyC",33,"C",67,"VK_C",s,s],[0,13,"KeyD",34,"D",68,"VK_D",s,s],[0,14,"KeyE",35,"E",69,"VK_E",s,s],[0,15,"KeyF",36,"F",70,"VK_F",s,s],[0,16,"KeyG",37,"G",71,"VK_G",s,s],[0,17,"KeyH",38,"H",72,"VK_H",s,s],[0,18,"KeyI",39,"I",73,"VK_I",s,s],[0,19,"KeyJ",40,"J",74,"VK_J",s,s],[0,20,"KeyK",41,"K",75,"VK_K",s,s],[0,21,"KeyL",42,"L",76,"VK_L",s,s],[0,22,"KeyM",43,"M",77,"VK_M",s,s],[0,23,"KeyN",44,"N",78,"VK_N",s,s],[0,24,"KeyO",45,"O",79,"VK_O",s,s],[0,25,"KeyP",46,"P",80,"VK_P",s,s],[0,26,"KeyQ",47,"Q",81,"VK_Q",s,s],[0,27,"KeyR",48,"R",82,"VK_R",s,s],[0,28,"KeyS",49,"S",83,"VK_S",s,s],[0,29,"KeyT",50,"T",84,"VK_T",s,s],[0,30,"KeyU",51,"U",85,"VK_U",s,s],[0,31,"KeyV",52,"V",86,"VK_V",s,s],[0,32,"KeyW",53,"W",87,"VK_W",s,s],[0,33,"KeyX",54,"X",88,"VK_X",s,s],[0,34,"KeyY",55,"Y",89,"VK_Y",s,s],[0,35,"KeyZ",56,"Z",90,"VK_Z",s,s],[0,36,"Digit1",22,"1",49,"VK_1",s,s],[0,37,"Digit2",23,"2",50,"VK_2",s,s],[0,38,"Digit3",24,"3",51,"VK_3",s,s],[0,39,"Digit4",25,"4",52,"VK_4",s,s],[0,40,"Digit5",26,"5",53,"VK_5",s,s],[0,41,"Digit6",27,"6",54,"VK_6",s,s],[0,42,"Digit7",28,"7",55,"VK_7",s,s],[0,43,"Digit8",29,"8",56,"VK_8",s,s],[0,44,"Digit9",30,"9",57,"VK_9",s,s],[0,45,"Digit0",21,"0",48,"VK_0",s,s],[1,46,"Enter",3,"Enter",13,"VK_RETURN",s,s],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE",s,s],[1,48,"Backspace",1,"Backspace",8,"VK_BACK",s,s],[1,49,"Tab",2,"Tab",9,"VK_TAB",s,s],[1,50,"Space",10,"Space",32,"VK_SPACE",s,s],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,s,0,s,s,s],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",s,s],[1,64,"F1",59,"F1",112,"VK_F1",s,s],[1,65,"F2",60,"F2",113,"VK_F2",s,s],[1,66,"F3",61,"F3",114,"VK_F3",s,s],[1,67,"F4",62,"F4",115,"VK_F4",s,s],[1,68,"F5",63,"F5",116,"VK_F5",s,s],[1,69,"F6",64,"F6",117,"VK_F6",s,s],[1,70,"F7",65,"F7",118,"VK_F7",s,s],[1,71,"F8",66,"F8",119,"VK_F8",s,s],[1,72,"F9",67,"F9",120,"VK_F9",s,s],[1,73,"F10",68,"F10",121,"VK_F10",s,s],[1,74,"F11",69,"F11",122,"VK_F11",s,s],[1,75,"F12",70,"F12",123,"VK_F12",s,s],[1,76,"PrintScreen",0,s,0,s,s,s],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL",s,s],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",s,s],[1,79,"Insert",19,"Insert",45,"VK_INSERT",s,s],[1,80,"Home",14,"Home",36,"VK_HOME",s,s],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",s,s],[1,82,"Delete",20,"Delete",46,"VK_DELETE",s,s],[1,83,"End",13,"End",35,"VK_END",s,s],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT",s,s],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",s],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",s],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",s],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",s],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK",s,s],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE",s,s],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY",s,s],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT",s,s],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD",s,s],[1,94,"NumpadEnter",3,s,0,s,s,s],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1",s,s],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2",s,s],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3",s,s],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4",s,s],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5",s,s],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6",s,s],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7",s,s],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8",s,s],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9",s,s],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0",s,s],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL",s,s],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102",s,s],[1,107,"ContextMenu",58,"ContextMenu",93,s,s,s],[1,108,"Power",0,s,0,s,s,s],[1,109,"NumpadEqual",0,s,0,s,s,s],[1,110,"F13",71,"F13",124,"VK_F13",s,s],[1,111,"F14",72,"F14",125,"VK_F14",s,s],[1,112,"F15",73,"F15",126,"VK_F15",s,s],[1,113,"F16",74,"F16",127,"VK_F16",s,s],[1,114,"F17",75,"F17",128,"VK_F17",s,s],[1,115,"F18",76,"F18",129,"VK_F18",s,s],[1,116,"F19",77,"F19",130,"VK_F19",s,s],[1,117,"F20",78,"F20",131,"VK_F20",s,s],[1,118,"F21",79,"F21",132,"VK_F21",s,s],[1,119,"F22",80,"F22",133,"VK_F22",s,s],[1,120,"F23",81,"F23",134,"VK_F23",s,s],[1,121,"F24",82,"F24",135,"VK_F24",s,s],[1,122,"Open",0,s,0,s,s,s],[1,123,"Help",0,s,0,s,s,s],[1,124,"Select",0,s,0,s,s,s],[1,125,"Again",0,s,0,s,s,s],[1,126,"Undo",0,s,0,s,s,s],[1,127,"Cut",0,s,0,s,s,s],[1,128,"Copy",0,s,0,s,s,s],[1,129,"Paste",0,s,0,s,s,s],[1,130,"Find",0,s,0,s,s,s],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE",s,s],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP",s,s],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN",s,s],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR",s,s],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1",s,s],[1,136,"KanaMode",0,s,0,s,s,s],[0,137,"IntlYen",0,s,0,s,s,s],[1,138,"Convert",0,s,0,s,s,s],[1,139,"NonConvert",0,s,0,s,s,s],[1,140,"Lang1",0,s,0,s,s,s],[1,141,"Lang2",0,s,0,s,s,s],[1,142,"Lang3",0,s,0,s,s,s],[1,143,"Lang4",0,s,0,s,s,s],[1,144,"Lang5",0,s,0,s,s,s],[1,145,"Abort",0,s,0,s,s,s],[1,146,"Props",0,s,0,s,s,s],[1,147,"NumpadParenLeft",0,s,0,s,s,s],[1,148,"NumpadParenRight",0,s,0,s,s,s],[1,149,"NumpadBackspace",0,s,0,s,s,s],[1,150,"NumpadMemoryStore",0,s,0,s,s,s],[1,151,"NumpadMemoryRecall",0,s,0,s,s,s],[1,152,"NumpadMemoryClear",0,s,0,s,s,s],[1,153,"NumpadMemoryAdd",0,s,0,s,s,s],[1,154,"NumpadMemorySubtract",0,s,0,s,s,s],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR",s,s],[1,156,"NumpadClearEntry",0,s,0,s,s,s],[1,0,s,5,"Ctrl",17,"VK_CONTROL",s,s],[1,0,s,4,"Shift",16,"VK_SHIFT",s,s],[1,0,s,6,"Alt",18,"VK_MENU",s,s],[1,0,s,57,"Meta",91,"VK_COMMAND",s,s],[1,157,"ControlLeft",5,s,0,"VK_LCONTROL",s,s],[1,158,"ShiftLeft",4,s,0,"VK_LSHIFT",s,s],[1,159,"AltLeft",6,s,0,"VK_LMENU",s,s],[1,160,"MetaLeft",57,s,0,"VK_LWIN",s,s],[1,161,"ControlRight",5,s,0,"VK_RCONTROL",s,s],[1,162,"ShiftRight",4,s,0,"VK_RSHIFT",s,s],[1,163,"AltRight",6,s,0,"VK_RMENU",s,s],[1,164,"MetaRight",57,s,0,"VK_RWIN",s,s],[1,165,"BrightnessUp",0,s,0,s,s,s],[1,166,"BrightnessDown",0,s,0,s,s,s],[1,167,"MediaPlay",0,s,0,s,s,s],[1,168,"MediaRecord",0,s,0,s,s,s],[1,169,"MediaFastForward",0,s,0,s,s,s],[1,170,"MediaRewind",0,s,0,s,s,s],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",s,s],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",s,s],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP",s,s],[1,174,"Eject",0,s,0,s,s,s],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",s,s],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",s,s],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",s,s],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",s,s],[1,179,"LaunchApp1",0,s,0,"VK_MEDIA_LAUNCH_APP1",s,s],[1,180,"SelectTask",0,s,0,s,s,s],[1,181,"LaunchScreenSaver",0,s,0,s,s,s],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH",s,s],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME",s,s],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK",s,s],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD",s,s],[1,186,"BrowserStop",0,s,0,"VK_BROWSER_STOP",s,s],[1,187,"BrowserRefresh",0,s,0,"VK_BROWSER_REFRESH",s,s],[1,188,"BrowserFavorites",0,s,0,"VK_BROWSER_FAVORITES",s,s],[1,189,"ZoomToggle",0,s,0,s,s,s],[1,190,"MailReply",0,s,0,s,s,s],[1,191,"MailForward",0,s,0,s,s,s],[1,192,"MailSend",0,s,0,s,s,s],[1,0,s,114,"KeyInComposition",229,s,s,s],[1,0,s,116,"ABNT_C2",194,"VK_ABNT_C2",s,s],[1,0,s,96,"OEM_8",223,"VK_OEM_8",s,s],[1,0,s,0,s,0,"VK_KANA",s,s],[1,0,s,0,s,0,"VK_HANGUL",s,s],[1,0,s,0,s,0,"VK_JUNJA",s,s],[1,0,s,0,s,0,"VK_FINAL",s,s],[1,0,s,0,s,0,"VK_HANJA",s,s],[1,0,s,0,s,0,"VK_KANJI",s,s],[1,0,s,0,s,0,"VK_CONVERT",s,s],[1,0,s,0,s,0,"VK_NONCONVERT",s,s],[1,0,s,0,s,0,"VK_ACCEPT",s,s],[1,0,s,0,s,0,"VK_MODECHANGE",s,s],[1,0,s,0,s,0,"VK_SELECT",s,s],[1,0,s,0,s,0,"VK_PRINT",s,s],[1,0,s,0,s,0,"VK_EXECUTE",s,s],[1,0,s,0,s,0,"VK_SNAPSHOT",s,s],[1,0,s,0,s,0,"VK_HELP",s,s],[1,0,s,0,s,0,"VK_APPS",s,s],[1,0,s,0,s,0,"VK_PROCESSKEY",s,s],[1,0,s,0,s,0,"VK_PACKET",s,s],[1,0,s,0,s,0,"VK_DBE_SBCSCHAR",s,s],[1,0,s,0,s,0,"VK_DBE_DBCSCHAR",s,s],[1,0,s,0,s,0,"VK_ATTN",s,s],[1,0,s,0,s,0,"VK_CRSEL",s,s],[1,0,s,0,s,0,"VK_EXSEL",s,s],[1,0,s,0,s,0,"VK_EREOF",s,s],[1,0,s,0,s,0,"VK_PLAY",s,s],[1,0,s,0,s,0,"VK_ZOOM",s,s],[1,0,s,0,s,0,"VK_NONAME",s,s],[1,0,s,0,s,0,"VK_PA1",s,s],[1,0,s,0,s,0,"VK_OEM_CLEAR",s,s]],t=[],i=[];for(const n of e){const[o,r,l,a,d,c,h,u,m]=n;if(i[r]||(i[r]=!0,Oje[l]=r,jje[l.toLowerCase()]=r,o&&(Rse[r]=a)),!t[a]){if(t[a]=!0,!d)throw new Error(`String representation missing for key code ${a} around scan code ${l}`);cD.define(a,d),i7.define(a,u||d),n7.define(a,m||u||d)}c&&(AZe[c]=a)}})();var df;(function(s){function e(l){return cD.keyCodeToStr(l)}s.toString=e;function t(l){return cD.strToKeyCode(l)}s.fromString=t;function i(l){return i7.keyCodeToStr(l)}s.toUserSettingsUS=i;function n(l){return n7.keyCodeToStr(l)}s.toUserSettingsGeneral=n;function o(l){return i7.strToKeyCode(l)||n7.strToKeyCode(l)}s.fromUserSettings=o;function r(l){if(l>=98&&l<=113)return null;switch(l){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return cD.keyCodeToStr(l)}s.toElectronAccelerator=r})(df||(df={}));function dr(s,e){const t=(e&65535)<<16>>>0;return(s|t)>>>0}let M1;const Cj=globalThis.vscode;var lUe;if(typeof Cj<"u"&&typeof Cj.process<"u"){const s=Cj.process;M1={get platform(){return s.platform},get arch(){return s.arch},get env(){return s.env},cwd(){return s.cwd()}}}else typeof process<"u"&&typeof((lUe=process==null?void 0:process.versions)==null?void 0:lUe.node)=="string"?M1={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:M1={get platform(){return Tl?"win32":hn?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};const KJ=M1.cwd,s7=M1.env,Pje=M1.platform,Hje=65,Kje=97,qje=90,$je=122,FF=46,aa=47,Wc=92,Nb=58,ePe=63;class ZZe extends Error{constructor(e,t,i){let n;typeof t=="string"&&t.indexOf("not ")===0?(n="must not be",t=t.replace(/^not /,"")):n="must be";const o=e.indexOf(".")!==-1?"property":"argument";let r=`The "${e}" ${o} ${n} of type ${t}`;r+=`. Received type ${typeof i}`,super(r),this.code="ERR_INVALID_ARG_TYPE"}}function tPe(s,e){if(s===null||typeof s!="object")throw new ZZe(e,"Object",s)}function Jr(s,e){if(typeof s!="string")throw new ZZe(e,"string",s)}const rb=Pje==="win32";function ls(s){return s===aa||s===Wc}function o7(s){return s===aa}function Rb(s){return s>=Hje&&s<=qje||s>=Kje&&s<=$je}function qJ(s,e,t,i){let n="",o=0,r=-1,l=0,a=0;for(let d=0;d<=s.length;++d){if(d<s.length)a=s.charCodeAt(d);else{if(i(a))break;a=aa}if(i(a)){if(!(r===d-1||l===1))if(l===2){if(n.length<2||o!==2||n.charCodeAt(n.length-1)!==FF||n.charCodeAt(n.length-2)!==FF){if(n.length>2){const c=n.lastIndexOf(t);c===-1?(n="",o=0):(n=n.slice(0,c),o=n.length-1-n.lastIndexOf(t)),r=d,l=0;continue}else if(n.length!==0){n="",o=0,r=d,l=0;continue}}e&&(n+=n.length>0?`${t}..`:"..",o=2)}else n.length>0?n+=`${t}${s.slice(r+1,d)}`:n=s.slice(r+1,d),o=d-r-1;r=d,l=0}else a===FF&&l!==-1?++l:l=-1}return n}function iPe(s){return s?`${s[0]==="."?"":"."}${s}`:""}function SZe(s,e){tPe(e,"pathObject");const t=e.dir||e.root,i=e.base||`${e.name||""}${iPe(e.ext)}`;return t?t===e.root?`${t}${i}`:`${t}${s}${i}`:i}const Nd={resolve(...s){let e="",t="",i=!1;for(let n=s.length-1;n>=-1;n--){let o;if(n>=0){if(o=s[n],Jr(o,`paths[${n}]`),o.length===0)continue}else e.length===0?o=KJ():(o=s7[`=${e}`]||KJ(),(o===void 0||o.slice(0,2).toLowerCase()!==e.toLowerCase()&&o.charCodeAt(2)===Wc)&&(o=`${e}\\`));const r=o.length;let l=0,a="",d=!1;const c=o.charCodeAt(0);if(r===1)ls(c)&&(l=1,d=!0);else if(ls(c))if(d=!0,ls(o.charCodeAt(1))){let h=2,u=h;for(;h<r&&!ls(o.charCodeAt(h));)h++;if(h<r&&h!==u){const m=o.slice(u,h);for(u=h;h<r&&ls(o.charCodeAt(h));)h++;if(h<r&&h!==u){for(u=h;h<r&&!ls(o.charCodeAt(h));)h++;(h===r||h!==u)&&(a=`\\\\${m}\\${o.slice(u,h)}`,l=h)}}}else l=1;else Rb(c)&&o.charCodeAt(1)===Nb&&(a=o.slice(0,2),l=2,r>2&&ls(o.charCodeAt(2))&&(d=!0,l=3));if(a.length>0)if(e.length>0){if(a.toLowerCase()!==e.toLowerCase())continue}else e=a;if(i){if(e.length>0)break}else if(t=`${o.slice(l)}\\${t}`,i=d,d&&e.length>0)break}return t=qJ(t,!i,"\\",ls),i?`${e}\\${t}`:`${e}${t}`||"."},normalize(s){Jr(s,"path");const e=s.length;if(e===0)return".";let t=0,i,n=!1;const o=s.charCodeAt(0);if(e===1)return o7(o)?"\\":s;if(ls(o))if(n=!0,ls(s.charCodeAt(1))){let l=2,a=l;for(;l<e&&!ls(s.charCodeAt(l));)l++;if(l<e&&l!==a){const d=s.slice(a,l);for(a=l;l<e&&ls(s.charCodeAt(l));)l++;if(l<e&&l!==a){for(a=l;l<e&&!ls(s.charCodeAt(l));)l++;if(l===e)return`\\\\${d}\\${s.slice(a)}\\`;l!==a&&(i=`\\\\${d}\\${s.slice(a,l)}`,t=l)}}}else t=1;else Rb(o)&&s.charCodeAt(1)===Nb&&(i=s.slice(0,2),t=2,e>2&&ls(s.charCodeAt(2))&&(n=!0,t=3));let r=t<e?qJ(s.slice(t),!n,"\\",ls):"";return r.length===0&&!n&&(r="."),r.length>0&&ls(s.charCodeAt(e-1))&&(r+="\\"),i===void 0?n?`\\${r}`:r:n?`${i}\\${r}`:`${i}${r}`},isAbsolute(s){Jr(s,"path");const e=s.length;if(e===0)return!1;const t=s.charCodeAt(0);return ls(t)||e>2&&Rb(t)&&s.charCodeAt(1)===Nb&&ls(s.charCodeAt(2))},join(...s){if(s.length===0)return".";let e,t;for(let o=0;o<s.length;++o){const r=s[o];Jr(r,"path"),r.length>0&&(e===void 0?e=t=r:e+=`\\${r}`)}if(e===void 0)return".";let i=!0,n=0;if(typeof t=="string"&&ls(t.charCodeAt(0))){++n;const o=t.length;o>1&&ls(t.charCodeAt(1))&&(++n,o>2&&(ls(t.charCodeAt(2))?++n:i=!1))}if(i){for(;n<e.length&&ls(e.charCodeAt(n));)n++;n>=2&&(e=`\\${e.slice(n)}`)}return Nd.normalize(e)},relative(s,e){if(Jr(s,"from"),Jr(e,"to"),s===e)return"";const t=Nd.resolve(s),i=Nd.resolve(e);if(t===i||(s=t.toLowerCase(),e=i.toLowerCase(),s===e))return"";let n=0;for(;n<s.length&&s.charCodeAt(n)===Wc;)n++;let o=s.length;for(;o-1>n&&s.charCodeAt(o-1)===Wc;)o--;const r=o-n;let l=0;for(;l<e.length&&e.charCodeAt(l)===Wc;)l++;let a=e.length;for(;a-1>l&&e.charCodeAt(a-1)===Wc;)a--;const d=a-l,c=r<d?r:d;let h=-1,u=0;for(;u<c;u++){const p=s.charCodeAt(n+u);if(p!==e.charCodeAt(l+u))break;p===Wc&&(h=u)}if(u!==c){if(h===-1)return i}else{if(d>c){if(e.charCodeAt(l+u)===Wc)return i.slice(l+u+1);if(u===2)return i.slice(l+u)}r>c&&(s.charCodeAt(n+u)===Wc?h=u:u===2&&(h=3)),h===-1&&(h=0)}let m="";for(u=n+h+1;u<=o;++u)(u===o||s.charCodeAt(u)===Wc)&&(m+=m.length===0?"..":"\\..");return l+=h,m.length>0?`${m}${i.slice(l,a)}`:(i.charCodeAt(l)===Wc&&++l,i.slice(l,a))},toNamespacedPath(s){if(typeof s!="string"||s.length===0)return s;const e=Nd.resolve(s);if(e.length<=2)return s;if(e.charCodeAt(0)===Wc){if(e.charCodeAt(1)===Wc){const t=e.charCodeAt(2);if(t!==ePe&&t!==FF)return`\\\\?\\UNC\\${e.slice(2)}`}}else if(Rb(e.charCodeAt(0))&&e.charCodeAt(1)===Nb&&e.charCodeAt(2)===Wc)return`\\\\?\\${e}`;return s},dirname(s){Jr(s,"path");const e=s.length;if(e===0)return".";let t=-1,i=0;const n=s.charCodeAt(0);if(e===1)return ls(n)?s:".";if(ls(n)){if(t=i=1,ls(s.charCodeAt(1))){let l=2,a=l;for(;l<e&&!ls(s.charCodeAt(l));)l++;if(l<e&&l!==a){for(a=l;l<e&&ls(s.charCodeAt(l));)l++;if(l<e&&l!==a){for(a=l;l<e&&!ls(s.charCodeAt(l));)l++;if(l===e)return s;l!==a&&(t=i=l+1)}}}}else Rb(n)&&s.charCodeAt(1)===Nb&&(t=e>2&&ls(s.charCodeAt(2))?3:2,i=t);let o=-1,r=!0;for(let l=e-1;l>=i;--l)if(ls(s.charCodeAt(l))){if(!r){o=l;break}}else r=!1;if(o===-1){if(t===-1)return".";o=t}return s.slice(0,o)},basename(s,e){e!==void 0&&Jr(e,"suffix"),Jr(s,"path");let t=0,i=-1,n=!0,o;if(s.length>=2&&Rb(s.charCodeAt(0))&&s.charCodeAt(1)===Nb&&(t=2),e!==void 0&&e.length>0&&e.length<=s.length){if(e===s)return"";let r=e.length-1,l=-1;for(o=s.length-1;o>=t;--o){const a=s.charCodeAt(o);if(ls(a)){if(!n){t=o+1;break}}else l===-1&&(n=!1,l=o+1),r>=0&&(a===e.charCodeAt(r)?--r===-1&&(i=o):(r=-1,i=l))}return t===i?i=l:i===-1&&(i=s.length),s.slice(t,i)}for(o=s.length-1;o>=t;--o)if(ls(s.charCodeAt(o))){if(!n){t=o+1;break}}else i===-1&&(n=!1,i=o+1);return i===-1?"":s.slice(t,i)},extname(s){Jr(s,"path");let e=0,t=-1,i=0,n=-1,o=!0,r=0;s.length>=2&&s.charCodeAt(1)===Nb&&Rb(s.charCodeAt(0))&&(e=i=2);for(let l=s.length-1;l>=e;--l){const a=s.charCodeAt(l);if(ls(a)){if(!o){i=l+1;break}continue}n===-1&&(o=!1,n=l+1),a===FF?t===-1?t=l:r!==1&&(r=1):t!==-1&&(r=-1)}return t===-1||n===-1||r===0||r===1&&t===n-1&&t===i+1?"":s.slice(t,n)},format:SZe.bind(null,"\\"),parse(s){Jr(s,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;const t=s.length;let i=0,n=s.charCodeAt(0);if(t===1)return ls(n)?(e.root=e.dir=s,e):(e.base=e.name=s,e);if(ls(n)){if(i=1,ls(s.charCodeAt(1))){let h=2,u=h;for(;h<t&&!ls(s.charCodeAt(h));)h++;if(h<t&&h!==u){for(u=h;h<t&&ls(s.charCodeAt(h));)h++;if(h<t&&h!==u){for(u=h;h<t&&!ls(s.charCodeAt(h));)h++;h===t?i=h:h!==u&&(i=h+1)}}}}else if(Rb(n)&&s.charCodeAt(1)===Nb){if(t<=2)return e.root=e.dir=s,e;if(i=2,ls(s.charCodeAt(2))){if(t===3)return e.root=e.dir=s,e;i=3}}i>0&&(e.root=s.slice(0,i));let o=-1,r=i,l=-1,a=!0,d=s.length-1,c=0;for(;d>=i;--d){if(n=s.charCodeAt(d),ls(n)){if(!a){r=d+1;break}continue}l===-1&&(a=!1,l=d+1),n===FF?o===-1?o=d:c!==1&&(c=1):o!==-1&&(c=-1)}return l!==-1&&(o===-1||c===0||c===1&&o===l-1&&o===r+1?e.base=e.name=s.slice(r,l):(e.name=s.slice(r,o),e.base=s.slice(r,l),e.ext=s.slice(o,l))),r>0&&r!==i?e.dir=s.slice(0,r-1):e.dir=e.root,e},sep:"\\",delimiter:";",win32:null,posix:null},nPe=(()=>{if(rb){const s=/\\/g;return()=>{const e=KJ().replace(s,"/");return e.slice(e.indexOf("/"))}}return()=>KJ()})(),$o={resolve(...s){let e="",t=!1;for(let i=s.length-1;i>=-1&&!t;i--){const n=i>=0?s[i]:nPe();Jr(n,`paths[${i}]`),n.length!==0&&(e=`${n}/${e}`,t=n.charCodeAt(0)===aa)}return e=qJ(e,!t,"/",o7),t?`/${e}`:e.length>0?e:"."},normalize(s){if(Jr(s,"path"),s.length===0)return".";const e=s.charCodeAt(0)===aa,t=s.charCodeAt(s.length-1)===aa;return s=qJ(s,!e,"/",o7),s.length===0?e?"/":t?"./":".":(t&&(s+="/"),e?`/${s}`:s)},isAbsolute(s){return Jr(s,"path"),s.length>0&&s.charCodeAt(0)===aa},join(...s){if(s.length===0)return".";let e;for(let t=0;t<s.length;++t){const i=s[t];Jr(i,"path"),i.length>0&&(e===void 0?e=i:e+=`/${i}`)}return e===void 0?".":$o.normalize(e)},relative(s,e){if(Jr(s,"from"),Jr(e,"to"),s===e||(s=$o.resolve(s),e=$o.resolve(e),s===e))return"";const t=1,i=s.length,n=i-t,o=1,r=e.length-o,l=n<r?n:r;let a=-1,d=0;for(;d<l;d++){const h=s.charCodeAt(t+d);if(h!==e.charCodeAt(o+d))break;h===aa&&(a=d)}if(d===l)if(r>l){if(e.charCodeAt(o+d)===aa)return e.slice(o+d+1);if(d===0)return e.slice(o+d)}else n>l&&(s.charCodeAt(t+d)===aa?a=d:d===0&&(a=0));let c="";for(d=t+a+1;d<=i;++d)(d===i||s.charCodeAt(d)===aa)&&(c+=c.length===0?"..":"/..");return`${c}${e.slice(o+a)}`},toNamespacedPath(s){return s},dirname(s){if(Jr(s,"path"),s.length===0)return".";const e=s.charCodeAt(0)===aa;let t=-1,i=!0;for(let n=s.length-1;n>=1;--n)if(s.charCodeAt(n)===aa){if(!i){t=n;break}}else i=!1;return t===-1?e?"/":".":e&&t===1?"//":s.slice(0,t)},basename(s,e){e!==void 0&&Jr(e,"ext"),Jr(s,"path");let t=0,i=-1,n=!0,o;if(e!==void 0&&e.length>0&&e.length<=s.length){if(e===s)return"";let r=e.length-1,l=-1;for(o=s.length-1;o>=0;--o){const a=s.charCodeAt(o);if(a===aa){if(!n){t=o+1;break}}else l===-1&&(n=!1,l=o+1),r>=0&&(a===e.charCodeAt(r)?--r===-1&&(i=o):(r=-1,i=l))}return t===i?i=l:i===-1&&(i=s.length),s.slice(t,i)}for(o=s.length-1;o>=0;--o)if(s.charCodeAt(o)===aa){if(!n){t=o+1;break}}else i===-1&&(n=!1,i=o+1);return i===-1?"":s.slice(t,i)},extname(s){Jr(s,"path");let e=-1,t=0,i=-1,n=!0,o=0;for(let r=s.length-1;r>=0;--r){const l=s.charCodeAt(r);if(l===aa){if(!n){t=r+1;break}continue}i===-1&&(n=!1,i=r+1),l===FF?e===-1?e=r:o!==1&&(o=1):e!==-1&&(o=-1)}return e===-1||i===-1||o===0||o===1&&e===i-1&&e===t+1?"":s.slice(e,i)},format:SZe.bind(null,"/"),parse(s){Jr(s,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;const t=s.charCodeAt(0)===aa;let i;t?(e.root="/",i=1):i=0;let n=-1,o=0,r=-1,l=!0,a=s.length-1,d=0;for(;a>=i;--a){const c=s.charCodeAt(a);if(c===aa){if(!l){o=a+1;break}continue}r===-1&&(l=!1,r=a+1),c===FF?n===-1?n=a:d!==1&&(d=1):n!==-1&&(d=-1)}if(r!==-1){const c=o===0&&t?1:o;n===-1||d===0||d===1&&n===r-1&&n===o+1?e.base=e.name=s.slice(c,r):(e.name=s.slice(c,n),e.base=s.slice(c,r),e.ext=s.slice(n,r))}return o>0?e.dir=s.slice(0,o-1):t&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};$o.win32=Nd.win32=Nd;$o.posix=Nd.posix=$o;const NZe=rb?Nd.normalize:$o.normalize,sPe=rb?Nd.join:$o.join,oPe=rb?Nd.resolve:$o.resolve,rPe=rb?Nd.relative:$o.relative,RZe=rb?Nd.dirname:$o.dirname,AF=rb?Nd.basename:$o.basename,lPe=rb?Nd.extname:$o.extname,ep=rb?Nd.sep:$o.sep,aPe=/^\w[\w\d+.-]*$/,dPe=/^\//,cPe=/^\/\//;function hPe(s,e){if(!s.scheme&&e)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${s.authority}", path: "${s.path}", query: "${s.query}", fragment: "${s.fragment}"}`);if(s.scheme&&!aPe.test(s.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(s.path){if(s.authority){if(!dPe.test(s.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(cPe.test(s.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function uPe(s,e){return!s&&!e?"file":s}function mPe(s,e){switch(s){case"https":case"http":case"file":e?e[0]!==Xm&&(e=Xm+e):e=Xm;break}return e}const Ko="",Xm="/",pPe=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class ni{static isUri(e){return e instanceof ni?!0:e?typeof e.authority=="string"&&typeof e.fragment=="string"&&typeof e.path=="string"&&typeof e.query=="string"&&typeof e.scheme=="string"&&typeof e.fsPath=="string"&&typeof e.with=="function"&&typeof e.toString=="function":!1}constructor(e,t,i,n,o,r=!1){typeof e=="object"?(this.scheme=e.scheme||Ko,this.authority=e.authority||Ko,this.path=e.path||Ko,this.query=e.query||Ko,this.fragment=e.fragment||Ko):(this.scheme=uPe(e,r),this.authority=t||Ko,this.path=mPe(this.scheme,i||Ko),this.query=n||Ko,this.fragment=o||Ko,hPe(this,r))}get fsPath(){return $J(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:i,path:n,query:o,fragment:r}=e;return t===void 0?t=this.scheme:t===null&&(t=Ko),i===void 0?i=this.authority:i===null&&(i=Ko),n===void 0?n=this.path:n===null&&(n=Ko),o===void 0?o=this.query:o===null&&(o=Ko),r===void 0?r=this.fragment:r===null&&(r=Ko),t===this.scheme&&i===this.authority&&n===this.path&&o===this.query&&r===this.fragment?this:new LR(t,i,n,o,r)}static parse(e,t=!1){const i=pPe.exec(e);return i?new LR(i[2]||Ko,Jx(i[4]||Ko),Jx(i[5]||Ko),Jx(i[7]||Ko),Jx(i[9]||Ko),t):new LR(Ko,Ko,Ko,Ko,Ko)}static file(e){let t=Ko;if(Tl&&(e=e.replace(/\\/g,Xm)),e[0]===Xm&&e[1]===Xm){const i=e.indexOf(Xm,2);i===-1?(t=e.substring(2),e=Xm):(t=e.substring(2,i),e=e.substring(i)||Xm)}return new LR("file",t,e,Ko,Ko)}static from(e,t){return new LR(e.scheme,e.authority,e.path,e.query,e.fragment,t)}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let i;return Tl&&e.scheme==="file"?i=ni.file(Nd.join($J(e,!0),...t)).path:i=$o.join(e.path,...t),e.with({path:i})}toString(e=!1){return r7(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof ni)return e;{const t=new LR(e);return t._formatted=e.external??null,t._fsPath=e._sep===VZe?e.fsPath??null:null,t}}else return e}}const VZe=Tl?1:void 0;let LR=class extends ni{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=$J(this,!1)),this._fsPath}toString(e=!1){return e?r7(this,!0):(this._formatted||(this._formatted=r7(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=VZe),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}};const WZe={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function Pce(s,e,t){let i,n=-1;for(let o=0;o<s.length;o++){const r=s.charCodeAt(o);if(r>=97&&r<=122||r>=65&&r<=90||r>=48&&r<=57||r===45||r===46||r===95||r===126||e&&r===47||t&&r===91||t&&r===93||t&&r===58)n!==-1&&(i+=encodeURIComponent(s.substring(n,o)),n=-1),i!==void 0&&(i+=s.charAt(o));else{i===void 0&&(i=s.substr(0,o));const l=WZe[r];l!==void 0?(n!==-1&&(i+=encodeURIComponent(s.substring(n,o)),n=-1),i+=l):n===-1&&(n=o)}}return n!==-1&&(i+=encodeURIComponent(s.substring(n))),i!==void 0?i:s}function gPe(s){let e;for(let t=0;t<s.length;t++){const i=s.charCodeAt(t);i===35||i===63?(e===void 0&&(e=s.substr(0,t)),e+=WZe[i]):e!==void 0&&(e+=s[t])}return e!==void 0?e:s}function $J(s,e){let t;return s.authority&&s.path.length>1&&s.scheme==="file"?t=`//${s.authority}${s.path}`:s.path.charCodeAt(0)===47&&(s.path.charCodeAt(1)>=65&&s.path.charCodeAt(1)<=90||s.path.charCodeAt(1)>=97&&s.path.charCodeAt(1)<=122)&&s.path.charCodeAt(2)===58?e?t=s.path.substr(1):t=s.path[1].toLowerCase()+s.path.substr(2):t=s.path,Tl&&(t=t.replace(/\//g,"\\")),t}function r7(s,e){const t=e?gPe:Pce;let i="",{scheme:n,authority:o,path:r,query:l,fragment:a}=s;if(n&&(i+=n,i+=":"),(o||n==="file")&&(i+=Xm,i+=Xm),o){let d=o.indexOf("@");if(d!==-1){const c=o.substr(0,d);o=o.substr(d+1),d=c.lastIndexOf(":"),d===-1?i+=t(c,!1,!1):(i+=t(c.substr(0,d),!1,!1),i+=":",i+=t(c.substr(d+1),!1,!0)),i+="@"}o=o.toLowerCase(),d=o.lastIndexOf(":"),d===-1?i+=t(o,!1,!0):(i+=t(o.substr(0,d),!1,!0),i+=o.substr(d))}if(r){if(r.length>=3&&r.charCodeAt(0)===47&&r.charCodeAt(2)===58){const d=r.charCodeAt(1);d>=65&&d<=90&&(r=`/${String.fromCharCode(d+32)}:${r.substr(3)}`)}else if(r.length>=2&&r.charCodeAt(1)===58){const d=r.charCodeAt(0);d>=65&&d<=90&&(r=`${String.fromCharCode(d+32)}:${r.substr(2)}`)}i+=t(r,!0,!1)}return l&&(i+="?",i+=t(l,!1,!1)),a&&(i+="#",i+=e?a:Pce(a,!1,!1)),i}function yZe(s){try{return decodeURIComponent(s)}catch{return s.length>3?s.substr(0,3)+yZe(s.substr(3)):s}}const Hce=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function Jx(s){return s.match(Hce)?s.replace(Hce,e=>yZe(e)):s}let ge=class oZ{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new oZ(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return oZ.equals(this,e)}static equals(e,t){return!e&&!t?!0:!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return oZ.isBefore(this,e)}static isBefore(e,t){return e.lineNumber<t.lineNumber?!0:t.lineNumber<e.lineNumber?!1:e.column<t.column}isBeforeOrEqual(e){return oZ.isBeforeOrEqual(this,e)}static isBeforeOrEqual(e,t){return e.lineNumber<t.lineNumber?!0:t.lineNumber<e.lineNumber?!1:e.column<=t.column}static compare(e,t){const i=e.lineNumber|0,n=t.lineNumber|0;if(i===n){const o=e.column|0,r=t.column|0;return o-r}return i-n}clone(){return new oZ(this.lineNumber,this.column)}toString(){return"("+this.lineNumber+","+this.column+")"}static lift(e){return new oZ(e.lineNumber,e.column)}static isIPosition(e){return e&&typeof e.lineNumber=="number"&&typeof e.column=="number"}toJSON(){return{lineNumber:this.lineNumber,column:this.column}}},z=class qr{constructor(e,t,i,n){e>i||e===i&&t>n?(this.startLineNumber=i,this.startColumn=n,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=i,this.endColumn=n)}isEmpty(){return qr.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return qr.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<e.startColumn||t.lineNumber===e.endLineNumber&&t.column>e.endColumn)}static strictContainsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<=e.startColumn||t.lineNumber===e.endLineNumber&&t.column>=e.endColumn)}containsRange(e){return qr.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>e.endColumn)}strictContainsRange(e){return qr.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)}plusRange(e){return qr.plusRange(this,e)}static plusRange(e,t){let i,n,o,r;return t.startLineNumber<e.startLineNumber?(i=t.startLineNumber,n=t.startColumn):t.startLineNumber===e.startLineNumber?(i=t.startLineNumber,n=Math.min(t.startColumn,e.startColumn)):(i=e.startLineNumber,n=e.startColumn),t.endLineNumber>e.endLineNumber?(o=t.endLineNumber,r=t.endColumn):t.endLineNumber===e.endLineNumber?(o=t.endLineNumber,r=Math.max(t.endColumn,e.endColumn)):(o=e.endLineNumber,r=e.endColumn),new qr(i,n,o,r)}intersectRanges(e){return qr.intersectRanges(this,e)}static intersectRanges(e,t){let i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,r=e.endColumn;const l=t.startLineNumber,a=t.startColumn,d=t.endLineNumber,c=t.endColumn;return i<l?(i=l,n=a):i===l&&(n=Math.max(n,a)),o>d?(o=d,r=c):o===d&&(r=Math.min(r,c)),i>o||i===o&&n>r?null:new qr(i,n,o,r)}equalsRange(e){return qr.equalsRange(this,e)}static equalsRange(e,t){return!e&&!t?!0:!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return qr.getEndPosition(this)}static getEndPosition(e){return new ge(e.endLineNumber,e.endColumn)}getStartPosition(){return qr.getStartPosition(this)}static getStartPosition(e){return new ge(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new qr(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new qr(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return qr.collapseToStart(this)}static collapseToStart(e){return new qr(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return qr.collapseToEnd(this)}static collapseToEnd(e){return new qr(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new qr(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}static fromPositions(e,t=e){return new qr(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new qr(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&typeof e.startLineNumber=="number"&&typeof e.startColumn=="number"&&typeof e.endLineNumber=="number"&&typeof e.endColumn=="number"}static areIntersectingOrTouching(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<e.startColumn)}static areIntersecting(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<=t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<=e.startColumn)}static compareRangesUsingStarts(e,t){if(e&&t){const o=e.startLineNumber|0,r=t.startLineNumber|0;if(o===r){const l=e.startColumn|0,a=t.startColumn|0;if(l===a){const d=e.endLineNumber|0,c=t.endLineNumber|0;if(d===c){const h=e.endColumn|0,u=t.endColumn|0;return h-u}return d-c}return l-a}return o-r}return(e?1:0)-(t?1:0)}static compareRangesUsingEnds(e,t){return e.endLineNumber===t.endLineNumber?e.endColumn===t.endColumn?e.startLineNumber===t.startLineNumber?e.startColumn-t.startColumn:e.startLineNumber-t.startLineNumber:e.endColumn-t.endColumn:e.endLineNumber-t.endLineNumber}static spansMultipleLines(e){return e.endLineNumber>e.startLineNumber}toJSON(){return this}},_t=class mu extends z{constructor(e,t,i,n){super(e,t,i,n),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=i,this.positionColumn=n}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return mu.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return this.getDirection()===0?new mu(this.startLineNumber,this.startColumn,e,t):new mu(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new ge(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new ge(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,t){return this.getDirection()===0?new mu(e,t,this.endLineNumber,this.endColumn):new mu(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new mu(e.lineNumber,e.column,t.lineNumber,t.column)}static fromRange(e,t){return t===0?new mu(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new mu(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new mu(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;i++)if(!this.selectionsEqual(e[i],t[i]))return!1;return!0}static isISelection(e){return e&&typeof e.selectionStartLineNumber=="number"&&typeof e.selectionStartColumn=="number"&&typeof e.positionLineNumber=="number"&&typeof e.positionColumn=="number"}static createWithDirection(e,t,i,n,o){return o===0?new mu(e,t,i,n):new mu(i,n,e,t)}};const l7=Object.create(null);function D(s,e){if(Vd(e)){const t=l7[e];if(t===void 0)throw new Error(`${s} references an unknown codicon: ${e}`);e=t}return l7[s]=e,{id:s}}function QZe(){return l7}const fPe={add:D("add",6e4),plus:D("plus",6e4),gistNew:D("gist-new",6e4),repoCreate:D("repo-create",6e4),lightbulb:D("lightbulb",60001),lightBulb:D("light-bulb",60001),repo:D("repo",60002),repoDelete:D("repo-delete",60002),gistFork:D("gist-fork",60003),repoForked:D("repo-forked",60003),gitPullRequest:D("git-pull-request",60004),gitPullRequestAbandoned:D("git-pull-request-abandoned",60004),recordKeys:D("record-keys",60005),keyboard:D("keyboard",60005),tag:D("tag",60006),gitPullRequestLabel:D("git-pull-request-label",60006),tagAdd:D("tag-add",60006),tagRemove:D("tag-remove",60006),person:D("person",60007),personFollow:D("person-follow",60007),personOutline:D("person-outline",60007),personFilled:D("person-filled",60007),gitBranch:D("git-branch",60008),gitBranchCreate:D("git-branch-create",60008),gitBranchDelete:D("git-branch-delete",60008),sourceControl:D("source-control",60008),mirror:D("mirror",60009),mirrorPublic:D("mirror-public",60009),star:D("star",60010),starAdd:D("star-add",60010),starDelete:D("star-delete",60010),starEmpty:D("star-empty",60010),comment:D("comment",60011),commentAdd:D("comment-add",60011),alert:D("alert",60012),warning:D("warning",60012),search:D("search",60013),searchSave:D("search-save",60013),logOut:D("log-out",60014),signOut:D("sign-out",60014),logIn:D("log-in",60015),signIn:D("sign-in",60015),eye:D("eye",60016),eyeUnwatch:D("eye-unwatch",60016),eyeWatch:D("eye-watch",60016),circleFilled:D("circle-filled",60017),primitiveDot:D("primitive-dot",60017),closeDirty:D("close-dirty",60017),debugBreakpoint:D("debug-breakpoint",60017),debugBreakpointDisabled:D("debug-breakpoint-disabled",60017),debugHint:D("debug-hint",60017),terminalDecorationSuccess:D("terminal-decoration-success",60017),primitiveSquare:D("primitive-square",60018),edit:D("edit",60019),pencil:D("pencil",60019),info:D("info",60020),issueOpened:D("issue-opened",60020),gistPrivate:D("gist-private",60021),gitForkPrivate:D("git-fork-private",60021),lock:D("lock",60021),mirrorPrivate:D("mirror-private",60021),close:D("close",60022),removeClose:D("remove-close",60022),x:D("x",60022),repoSync:D("repo-sync",60023),sync:D("sync",60023),clone:D("clone",60024),desktopDownload:D("desktop-download",60024),beaker:D("beaker",60025),microscope:D("microscope",60025),vm:D("vm",60026),deviceDesktop:D("device-desktop",60026),file:D("file",60027),fileText:D("file-text",60027),more:D("more",60028),ellipsis:D("ellipsis",60028),kebabHorizontal:D("kebab-horizontal",60028),mailReply:D("mail-reply",60029),reply:D("reply",60029),organization:D("organization",60030),organizationFilled:D("organization-filled",60030),organizationOutline:D("organization-outline",60030),newFile:D("new-file",60031),fileAdd:D("file-add",60031),newFolder:D("new-folder",60032),fileDirectoryCreate:D("file-directory-create",60032),trash:D("trash",60033),trashcan:D("trashcan",60033),history:D("history",60034),clock:D("clock",60034),folder:D("folder",60035),fileDirectory:D("file-directory",60035),symbolFolder:D("symbol-folder",60035),logoGithub:D("logo-github",60036),markGithub:D("mark-github",60036),github:D("github",60036),terminal:D("terminal",60037),console:D("console",60037),repl:D("repl",60037),zap:D("zap",60038),symbolEvent:D("symbol-event",60038),error:D("error",60039),stop:D("stop",60039),variable:D("variable",60040),symbolVariable:D("symbol-variable",60040),array:D("array",60042),symbolArray:D("symbol-array",60042),symbolModule:D("symbol-module",60043),symbolPackage:D("symbol-package",60043),symbolNamespace:D("symbol-namespace",60043),symbolObject:D("symbol-object",60043),symbolMethod:D("symbol-method",60044),symbolFunction:D("symbol-function",60044),symbolConstructor:D("symbol-constructor",60044),symbolBoolean:D("symbol-boolean",60047),symbolNull:D("symbol-null",60047),symbolNumeric:D("symbol-numeric",60048),symbolNumber:D("symbol-number",60048),symbolStructure:D("symbol-structure",60049),symbolStruct:D("symbol-struct",60049),symbolParameter:D("symbol-parameter",60050),symbolTypeParameter:D("symbol-type-parameter",60050),symbolKey:D("symbol-key",60051),symbolText:D("symbol-text",60051),symbolReference:D("symbol-reference",60052),goToFile:D("go-to-file",60052),symbolEnum:D("symbol-enum",60053),symbolValue:D("symbol-value",60053),symbolRuler:D("symbol-ruler",60054),symbolUnit:D("symbol-unit",60054),activateBreakpoints:D("activate-breakpoints",60055),archive:D("archive",60056),arrowBoth:D("arrow-both",60057),arrowDown:D("arrow-down",60058),arrowLeft:D("arrow-left",60059),arrowRight:D("arrow-right",60060),arrowSmallDown:D("arrow-small-down",60061),arrowSmallLeft:D("arrow-small-left",60062),arrowSmallRight:D("arrow-small-right",60063),arrowSmallUp:D("arrow-small-up",60064),arrowUp:D("arrow-up",60065),bell:D("bell",60066),bold:D("bold",60067),book:D("book",60068),bookmark:D("bookmark",60069),debugBreakpointConditionalUnverified:D("debug-breakpoint-conditional-unverified",60070),debugBreakpointConditional:D("debug-breakpoint-conditional",60071),debugBreakpointConditionalDisabled:D("debug-breakpoint-conditional-disabled",60071),debugBreakpointDataUnverified:D("debug-breakpoint-data-unverified",60072),debugBreakpointData:D("debug-breakpoint-data",60073),debugBreakpointDataDisabled:D("debug-breakpoint-data-disabled",60073),debugBreakpointLogUnverified:D("debug-breakpoint-log-unverified",60074),debugBreakpointLog:D("debug-breakpoint-log",60075),debugBreakpointLogDisabled:D("debug-breakpoint-log-disabled",60075),briefcase:D("briefcase",60076),broadcast:D("broadcast",60077),browser:D("browser",60078),bug:D("bug",60079),calendar:D("calendar",60080),caseSensitive:D("case-sensitive",60081),check:D("check",60082),checklist:D("checklist",60083),chevronDown:D("chevron-down",60084),chevronLeft:D("chevron-left",60085),chevronRight:D("chevron-right",60086),chevronUp:D("chevron-up",60087),chromeClose:D("chrome-close",60088),chromeMaximize:D("chrome-maximize",60089),chromeMinimize:D("chrome-minimize",60090),chromeRestore:D("chrome-restore",60091),circleOutline:D("circle-outline",60092),circle:D("circle",60092),debugBreakpointUnverified:D("debug-breakpoint-unverified",60092),terminalDecorationIncomplete:D("terminal-decoration-incomplete",60092),circleSlash:D("circle-slash",60093),circuitBoard:D("circuit-board",60094),clearAll:D("clear-all",60095),clippy:D("clippy",60096),closeAll:D("close-all",60097),cloudDownload:D("cloud-download",60098),cloudUpload:D("cloud-upload",60099),code:D("code",60100),collapseAll:D("collapse-all",60101),colorMode:D("color-mode",60102),commentDiscussion:D("comment-discussion",60103),creditCard:D("credit-card",60105),dash:D("dash",60108),dashboard:D("dashboard",60109),database:D("database",60110),debugContinue:D("debug-continue",60111),debugDisconnect:D("debug-disconnect",60112),debugPause:D("debug-pause",60113),debugRestart:D("debug-restart",60114),debugStart:D("debug-start",60115),debugStepInto:D("debug-step-into",60116),debugStepOut:D("debug-step-out",60117),debugStepOver:D("debug-step-over",60118),debugStop:D("debug-stop",60119),debug:D("debug",60120),deviceCameraVideo:D("device-camera-video",60121),deviceCamera:D("device-camera",60122),deviceMobile:D("device-mobile",60123),diffAdded:D("diff-added",60124),diffIgnored:D("diff-ignored",60125),diffModified:D("diff-modified",60126),diffRemoved:D("diff-removed",60127),diffRenamed:D("diff-renamed",60128),diff:D("diff",60129),diffSidebyside:D("diff-sidebyside",60129),discard:D("discard",60130),editorLayout:D("editor-layout",60131),emptyWindow:D("empty-window",60132),exclude:D("exclude",60133),extensions:D("extensions",60134),eyeClosed:D("eye-closed",60135),fileBinary:D("file-binary",60136),fileCode:D("file-code",60137),fileMedia:D("file-media",60138),filePdf:D("file-pdf",60139),fileSubmodule:D("file-submodule",60140),fileSymlinkDirectory:D("file-symlink-directory",60141),fileSymlinkFile:D("file-symlink-file",60142),fileZip:D("file-zip",60143),files:D("files",60144),filter:D("filter",60145),flame:D("flame",60146),foldDown:D("fold-down",60147),foldUp:D("fold-up",60148),fold:D("fold",60149),folderActive:D("folder-active",60150),folderOpened:D("folder-opened",60151),gear:D("gear",60152),gift:D("gift",60153),gistSecret:D("gist-secret",60154),gist:D("gist",60155),gitCommit:D("git-commit",60156),gitCompare:D("git-compare",60157),compareChanges:D("compare-changes",60157),gitMerge:D("git-merge",60158),githubAction:D("github-action",60159),githubAlt:D("github-alt",60160),globe:D("globe",60161),grabber:D("grabber",60162),graph:D("graph",60163),gripper:D("gripper",60164),heart:D("heart",60165),home:D("home",60166),horizontalRule:D("horizontal-rule",60167),hubot:D("hubot",60168),inbox:D("inbox",60169),issueReopened:D("issue-reopened",60171),issues:D("issues",60172),italic:D("italic",60173),jersey:D("jersey",60174),json:D("json",60175),kebabVertical:D("kebab-vertical",60176),key:D("key",60177),law:D("law",60178),lightbulbAutofix:D("lightbulb-autofix",60179),linkExternal:D("link-external",60180),link:D("link",60181),listOrdered:D("list-ordered",60182),listUnordered:D("list-unordered",60183),liveShare:D("live-share",60184),loading:D("loading",60185),location:D("location",60186),mailRead:D("mail-read",60187),mail:D("mail",60188),markdown:D("markdown",60189),megaphone:D("megaphone",60190),mention:D("mention",60191),milestone:D("milestone",60192),gitPullRequestMilestone:D("git-pull-request-milestone",60192),mortarBoard:D("mortar-board",60193),move:D("move",60194),multipleWindows:D("multiple-windows",60195),mute:D("mute",60196),noNewline:D("no-newline",60197),note:D("note",60198),octoface:D("octoface",60199),openPreview:D("open-preview",60200),package:D("package",60201),paintcan:D("paintcan",60202),pin:D("pin",60203),play:D("play",60204),run:D("run",60204),plug:D("plug",60205),preserveCase:D("preserve-case",60206),preview:D("preview",60207),project:D("project",60208),pulse:D("pulse",60209),question:D("question",60210),quote:D("quote",60211),radioTower:D("radio-tower",60212),reactions:D("reactions",60213),references:D("references",60214),refresh:D("refresh",60215),regex:D("regex",60216),remoteExplorer:D("remote-explorer",60217),remote:D("remote",60218),remove:D("remove",60219),replaceAll:D("replace-all",60220),replace:D("replace",60221),repoClone:D("repo-clone",60222),repoForcePush:D("repo-force-push",60223),repoPull:D("repo-pull",60224),repoPush:D("repo-push",60225),report:D("report",60226),requestChanges:D("request-changes",60227),rocket:D("rocket",60228),rootFolderOpened:D("root-folder-opened",60229),rootFolder:D("root-folder",60230),rss:D("rss",60231),ruby:D("ruby",60232),saveAll:D("save-all",60233),saveAs:D("save-as",60234),save:D("save",60235),screenFull:D("screen-full",60236),screenNormal:D("screen-normal",60237),searchStop:D("search-stop",60238),server:D("server",60240),settingsGear:D("settings-gear",60241),settings:D("settings",60242),shield:D("shield",60243),smiley:D("smiley",60244),sortPrecedence:D("sort-precedence",60245),splitHorizontal:D("split-horizontal",60246),splitVertical:D("split-vertical",60247),squirrel:D("squirrel",60248),starFull:D("star-full",60249),starHalf:D("star-half",60250),symbolClass:D("symbol-class",60251),symbolColor:D("symbol-color",60252),symbolConstant:D("symbol-constant",60253),symbolEnumMember:D("symbol-enum-member",60254),symbolField:D("symbol-field",60255),symbolFile:D("symbol-file",60256),symbolInterface:D("symbol-interface",60257),symbolKeyword:D("symbol-keyword",60258),symbolMisc:D("symbol-misc",60259),symbolOperator:D("symbol-operator",60260),symbolProperty:D("symbol-property",60261),wrench:D("wrench",60261),wrenchSubaction:D("wrench-subaction",60261),symbolSnippet:D("symbol-snippet",60262),tasklist:D("tasklist",60263),telescope:D("telescope",60264),textSize:D("text-size",60265),threeBars:D("three-bars",60266),thumbsdown:D("thumbsdown",60267),thumbsup:D("thumbsup",60268),tools:D("tools",60269),triangleDown:D("triangle-down",60270),triangleLeft:D("triangle-left",60271),triangleRight:D("triangle-right",60272),triangleUp:D("triangle-up",60273),twitter:D("twitter",60274),unfold:D("unfold",60275),unlock:D("unlock",60276),unmute:D("unmute",60277),unverified:D("unverified",60278),verified:D("verified",60279),versions:D("versions",60280),vmActive:D("vm-active",60281),vmOutline:D("vm-outline",60282),vmRunning:D("vm-running",60283),watch:D("watch",60284),whitespace:D("whitespace",60285),wholeWord:D("whole-word",60286),window:D("window",60287),wordWrap:D("word-wrap",60288),zoomIn:D("zoom-in",60289),zoomOut:D("zoom-out",60290),listFilter:D("list-filter",60291),listFlat:D("list-flat",60292),listSelection:D("list-selection",60293),selection:D("selection",60293),listTree:D("list-tree",60294),debugBreakpointFunctionUnverified:D("debug-breakpoint-function-unverified",60295),debugBreakpointFunction:D("debug-breakpoint-function",60296),debugBreakpointFunctionDisabled:D("debug-breakpoint-function-disabled",60296),debugStackframeActive:D("debug-stackframe-active",60297),circleSmallFilled:D("circle-small-filled",60298),debugStackframeDot:D("debug-stackframe-dot",60298),terminalDecorationMark:D("terminal-decoration-mark",60298),debugStackframe:D("debug-stackframe",60299),debugStackframeFocused:D("debug-stackframe-focused",60299),debugBreakpointUnsupported:D("debug-breakpoint-unsupported",60300),symbolString:D("symbol-string",60301),debugReverseContinue:D("debug-reverse-continue",60302),debugStepBack:D("debug-step-back",60303),debugRestartFrame:D("debug-restart-frame",60304),debugAlt:D("debug-alt",60305),callIncoming:D("call-incoming",60306),callOutgoing:D("call-outgoing",60307),menu:D("menu",60308),expandAll:D("expand-all",60309),feedback:D("feedback",60310),gitPullRequestReviewer:D("git-pull-request-reviewer",60310),groupByRefType:D("group-by-ref-type",60311),ungroupByRefType:D("ungroup-by-ref-type",60312),account:D("account",60313),gitPullRequestAssignee:D("git-pull-request-assignee",60313),bellDot:D("bell-dot",60314),debugConsole:D("debug-console",60315),library:D("library",60316),output:D("output",60317),runAll:D("run-all",60318),syncIgnored:D("sync-ignored",60319),pinned:D("pinned",60320),githubInverted:D("github-inverted",60321),serverProcess:D("server-process",60322),serverEnvironment:D("server-environment",60323),pass:D("pass",60324),issueClosed:D("issue-closed",60324),stopCircle:D("stop-circle",60325),playCircle:D("play-circle",60326),record:D("record",60327),debugAltSmall:D("debug-alt-small",60328),vmConnect:D("vm-connect",60329),cloud:D("cloud",60330),merge:D("merge",60331),export:D("export",60332),graphLeft:D("graph-left",60333),magnet:D("magnet",60334),notebook:D("notebook",60335),redo:D("redo",60336),checkAll:D("check-all",60337),pinnedDirty:D("pinned-dirty",60338),passFilled:D("pass-filled",60339),circleLargeFilled:D("circle-large-filled",60340),circleLarge:D("circle-large",60341),circleLargeOutline:D("circle-large-outline",60341),combine:D("combine",60342),gather:D("gather",60342),table:D("table",60343),variableGroup:D("variable-group",60344),typeHierarchy:D("type-hierarchy",60345),typeHierarchySub:D("type-hierarchy-sub",60346),typeHierarchySuper:D("type-hierarchy-super",60347),gitPullRequestCreate:D("git-pull-request-create",60348),runAbove:D("run-above",60349),runBelow:D("run-below",60350),notebookTemplate:D("notebook-template",60351),debugRerun:D("debug-rerun",60352),workspaceTrusted:D("workspace-trusted",60353),workspaceUntrusted:D("workspace-untrusted",60354),workspaceUnknown:D("workspace-unknown",60355),terminalCmd:D("terminal-cmd",60356),terminalDebian:D("terminal-debian",60357),terminalLinux:D("terminal-linux",60358),terminalPowershell:D("terminal-powershell",60359),terminalTmux:D("terminal-tmux",60360),terminalUbuntu:D("terminal-ubuntu",60361),terminalBash:D("terminal-bash",60362),arrowSwap:D("arrow-swap",60363),copy:D("copy",60364),personAdd:D("person-add",60365),filterFilled:D("filter-filled",60366),wand:D("wand",60367),debugLineByLine:D("debug-line-by-line",60368),inspect:D("inspect",60369),layers:D("layers",60370),layersDot:D("layers-dot",60371),layersActive:D("layers-active",60372),compass:D("compass",60373),compassDot:D("compass-dot",60374),compassActive:D("compass-active",60375),azure:D("azure",60376),issueDraft:D("issue-draft",60377),gitPullRequestClosed:D("git-pull-request-closed",60378),gitPullRequestDraft:D("git-pull-request-draft",60379),debugAll:D("debug-all",60380),debugCoverage:D("debug-coverage",60381),runErrors:D("run-errors",60382),folderLibrary:D("folder-library",60383),debugContinueSmall:D("debug-continue-small",60384),beakerStop:D("beaker-stop",60385),graphLine:D("graph-line",60386),graphScatter:D("graph-scatter",60387),pieChart:D("pie-chart",60388),bracket:D("bracket",60175),bracketDot:D("bracket-dot",60389),bracketError:D("bracket-error",60390),lockSmall:D("lock-small",60391),azureDevops:D("azure-devops",60392),verifiedFilled:D("verified-filled",60393),newline:D("newline",60394),layout:D("layout",60395),layoutActivitybarLeft:D("layout-activitybar-left",60396),layoutActivitybarRight:D("layout-activitybar-right",60397),layoutPanelLeft:D("layout-panel-left",60398),layoutPanelCenter:D("layout-panel-center",60399),layoutPanelJustify:D("layout-panel-justify",60400),layoutPanelRight:D("layout-panel-right",60401),layoutPanel:D("layout-panel",60402),layoutSidebarLeft:D("layout-sidebar-left",60403),layoutSidebarRight:D("layout-sidebar-right",60404),layoutStatusbar:D("layout-statusbar",60405),layoutMenubar:D("layout-menubar",60406),layoutCentered:D("layout-centered",60407),target:D("target",60408),indent:D("indent",60409),recordSmall:D("record-small",60410),errorSmall:D("error-small",60411),terminalDecorationError:D("terminal-decoration-error",60411),arrowCircleDown:D("arrow-circle-down",60412),arrowCircleLeft:D("arrow-circle-left",60413),arrowCircleRight:D("arrow-circle-right",60414),arrowCircleUp:D("arrow-circle-up",60415),layoutSidebarRightOff:D("layout-sidebar-right-off",60416),layoutPanelOff:D("layout-panel-off",60417),layoutSidebarLeftOff:D("layout-sidebar-left-off",60418),blank:D("blank",60419),heartFilled:D("heart-filled",60420),map:D("map",60421),mapHorizontal:D("map-horizontal",60421),foldHorizontal:D("fold-horizontal",60421),mapFilled:D("map-filled",60422),mapHorizontalFilled:D("map-horizontal-filled",60422),foldHorizontalFilled:D("fold-horizontal-filled",60422),circleSmall:D("circle-small",60423),bellSlash:D("bell-slash",60424),bellSlashDot:D("bell-slash-dot",60425),commentUnresolved:D("comment-unresolved",60426),gitPullRequestGoToChanges:D("git-pull-request-go-to-changes",60427),gitPullRequestNewChanges:D("git-pull-request-new-changes",60428),searchFuzzy:D("search-fuzzy",60429),commentDraft:D("comment-draft",60430),send:D("send",60431),sparkle:D("sparkle",60432),insert:D("insert",60433),mic:D("mic",60434),thumbsdownFilled:D("thumbsdown-filled",60435),thumbsupFilled:D("thumbsup-filled",60436),coffee:D("coffee",60437),snake:D("snake",60438),game:D("game",60439),vr:D("vr",60440),chip:D("chip",60441),piano:D("piano",60442),music:D("music",60443),micFilled:D("mic-filled",60444),repoFetch:D("repo-fetch",60445),copilot:D("copilot",60446),lightbulbSparkle:D("lightbulb-sparkle",60447),robot:D("robot",60448),sparkleFilled:D("sparkle-filled",60449),diffSingle:D("diff-single",60450),diffMultiple:D("diff-multiple",60451),surroundWith:D("surround-with",60452),share:D("share",60453),gitStash:D("git-stash",60454),gitStashApply:D("git-stash-apply",60455),gitStashPop:D("git-stash-pop",60456),vscode:D("vscode",60457),vscodeInsiders:D("vscode-insiders",60458),codeOss:D("code-oss",60459),runCoverage:D("run-coverage",60460),runAllCoverage:D("run-all-coverage",60461),coverage:D("coverage",60462),githubProject:D("github-project",60463),mapVertical:D("map-vertical",60464),foldVertical:D("fold-vertical",60464),mapVerticalFilled:D("map-vertical-filled",60465),foldVerticalFilled:D("fold-vertical-filled",60465),goToSearch:D("go-to-search",60466),percentage:D("percentage",60467),sortPercentage:D("sort-percentage",60467),attach:D("attach",60468)},bPe={dialogError:D("dialog-error","error"),dialogWarning:D("dialog-warning","warning"),dialogInfo:D("dialog-info","info"),dialogClose:D("dialog-close","close"),treeItemExpanded:D("tree-item-expanded","chevron-down"),treeFilterOnTypeOn:D("tree-filter-on-type-on","list-filter"),treeFilterOnTypeOff:D("tree-filter-on-type-off","list-selection"),treeFilterClear:D("tree-filter-clear","close"),treeItemLoading:D("tree-item-loading","loading"),menuSelection:D("menu-selection","check"),menuSubmenu:D("menu-submenu","chevron-right"),menuBarMore:D("menubar-more","more"),scrollbarButtonLeft:D("scrollbar-button-left","triangle-left"),scrollbarButtonRight:D("scrollbar-button-right","triangle-right"),scrollbarButtonUp:D("scrollbar-button-up","triangle-up"),scrollbarButtonDown:D("scrollbar-button-down","triangle-down"),toolBarMore:D("toolbar-more","more"),quickInputBack:D("quick-input-back","arrow-left"),dropDownButton:D("drop-down-button",60084),symbolCustomColor:D("symbol-customcolor",60252),exportIcon:D("export",60332),workspaceUnspecified:D("workspace-unspecified",60355),newLine:D("newline",60394),thumbsDownFilled:D("thumbsdown-filled",60435),thumbsUpFilled:D("thumbsup-filled",60436),gitFetch:D("git-fetch",60445),lightbulbSparkleAutofix:D("lightbulb-sparkle-autofix",60447),debugBreakpointPending:D("debug-breakpoint-pending",60377)},ct={...fPe,...bPe};let MZe=class{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}register(e,t){return this._tokenizationSupports.set(e,t),this.handleChange([e]),ei(()=>{this._tokenizationSupports.get(e)===t&&(this._tokenizationSupports.delete(e),this.handleChange([e]))})}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,t){var n;(n=this._factories.get(e))==null||n.dispose();const i=new UPe(this,e,t);return this._factories.set(e,i),ei(()=>{const o=this._factories.get(e);!o||o!==i||(this._factories.delete(e),o.dispose())})}async getOrCreate(e){const t=this.get(e);if(t)return t;const i=this._factories.get(e);return!i||i.isResolved?null:(await i.resolve(),this.get(e))}isResolved(e){if(this.get(e))return!0;const i=this._factories.get(e);return!!(!i||i.isResolved)}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}};class UPe extends be{get isResolved(){return this._isResolved}constructor(e,t,i){super(),this._registry=e,this._languageId=t,this._factory=i,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}async resolve(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise}async _create(){const e=await this._factory.tokenizationSupport;this._isResolved=!0,e&&!this._isDisposed&&this._register(this._registry.register(this._languageId,e))}}let JB=class{constructor(e,t,i){this.offset=e,this.type=t,this.language=i,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}};class Vse{constructor(e,t){this.tokens=e,this.endState=t,this._tokenizationResultBrand=void 0}}class V3{constructor(e,t){this.tokens=e,this.endState=t,this._encodedTokenizationResultBrand=void 0}}var ic;(function(s){s[s.Increase=0]="Increase",s[s.Decrease=1]="Decrease"})(ic||(ic={}));var XB;(function(s){const e=new Map;e.set(0,ct.symbolMethod),e.set(1,ct.symbolFunction),e.set(2,ct.symbolConstructor),e.set(3,ct.symbolField),e.set(4,ct.symbolVariable),e.set(5,ct.symbolClass),e.set(6,ct.symbolStruct),e.set(7,ct.symbolInterface),e.set(8,ct.symbolModule),e.set(9,ct.symbolProperty),e.set(10,ct.symbolEvent),e.set(11,ct.symbolOperator),e.set(12,ct.symbolUnit),e.set(13,ct.symbolValue),e.set(15,ct.symbolEnum),e.set(14,ct.symbolConstant),e.set(15,ct.symbolEnum),e.set(16,ct.symbolEnumMember),e.set(17,ct.symbolKeyword),e.set(27,ct.symbolSnippet),e.set(18,ct.symbolText),e.set(19,ct.symbolColor),e.set(20,ct.symbolFile),e.set(21,ct.symbolReference),e.set(22,ct.symbolCustomColor),e.set(23,ct.symbolFolder),e.set(24,ct.symbolTypeParameter),e.set(25,ct.account),e.set(26,ct.issues);function t(o){let r=e.get(o);return r||(console.info("No codicon found for CompletionItemKind "+o),r=ct.symbolProperty),r}s.toIcon=t;const i=new Map;i.set("method",0),i.set("function",1),i.set("constructor",2),i.set("field",3),i.set("variable",4),i.set("class",5),i.set("struct",6),i.set("interface",7),i.set("module",8),i.set("property",9),i.set("event",10),i.set("operator",11),i.set("unit",12),i.set("value",13),i.set("constant",14),i.set("enum",15),i.set("enum-member",16),i.set("enumMember",16),i.set("keyword",17),i.set("snippet",27),i.set("text",18),i.set("color",19),i.set("file",20),i.set("reference",21),i.set("customcolor",22),i.set("folder",23),i.set("type-parameter",24),i.set("typeParameter",24),i.set("account",25),i.set("issue",26);function n(o,r){let l=i.get(o);return typeof l>"u"&&!r&&(l=9),l}s.fromString=n})(XB||(XB={}));var tp;(function(s){s[s.Automatic=0]="Automatic",s[s.Explicit=1]="Explicit"})(tp||(tp={}));class wZe{constructor(e,t,i,n){this.range=e,this.text=t,this.completionKind=i,this.isSnippetText=n}equals(e){return z.lift(this.range).equalsRange(e.range)&&this.text===e.text&&this.completionKind===e.completionKind&&this.isSnippetText===e.isSnippetText}}var YB;(function(s){s[s.Automatic=0]="Automatic",s[s.PasteAs=1]="PasteAs"})(YB||(YB={}));var vg;(function(s){s[s.Invoke=1]="Invoke",s[s.TriggerCharacter=2]="TriggerCharacter",s[s.ContentChange=3]="ContentChange"})(vg||(vg={}));var Sy;(function(s){s[s.Text=0]="Text",s[s.Read=1]="Read",s[s.Write=2]="Write"})(Sy||(Sy={}));function FPe(s){return s&&ni.isUri(s.uri)&&z.isIRange(s.range)&&(z.isIRange(s.originSelectionRange)||z.isIRange(s.targetSelectionRange))}const APe={17:F("Array","array"),16:F("Boolean","boolean"),4:F("Class","class"),13:F("Constant","constant"),8:F("Constructor","constructor"),9:F("Enum","enumeration"),21:F("EnumMember","enumeration member"),23:F("Event","event"),7:F("Field","field"),0:F("File","file"),11:F("Function","function"),10:F("Interface","interface"),19:F("Key","key"),5:F("Method","method"),1:F("Module","module"),2:F("Namespace","namespace"),20:F("Null","null"),15:F("Number","number"),18:F("Object","object"),24:F("Operator","operator"),3:F("Package","package"),6:F("Property","property"),14:F("String","string"),22:F("Struct","struct"),25:F("TypeParameter","type parameter"),12:F("Variable","variable")};function ZPe(s,e){return F("symbolAriaLabel","{0} ({1})",s,APe[e])}var eX;(function(s){const e=new Map;e.set(0,ct.symbolFile),e.set(1,ct.symbolModule),e.set(2,ct.symbolNamespace),e.set(3,ct.symbolPackage),e.set(4,ct.symbolClass),e.set(5,ct.symbolMethod),e.set(6,ct.symbolProperty),e.set(7,ct.symbolField),e.set(8,ct.symbolConstructor),e.set(9,ct.symbolEnum),e.set(10,ct.symbolInterface),e.set(11,ct.symbolFunction),e.set(12,ct.symbolVariable),e.set(13,ct.symbolConstant),e.set(14,ct.symbolString),e.set(15,ct.symbolNumber),e.set(16,ct.symbolBoolean),e.set(17,ct.symbolArray),e.set(18,ct.symbolObject),e.set(19,ct.symbolKey),e.set(20,ct.symbolNull),e.set(21,ct.symbolEnumMember),e.set(22,ct.symbolStruct),e.set(23,ct.symbolEvent),e.set(24,ct.symbolOperator),e.set(25,ct.symbolTypeParameter);function t(i){let n=e.get(i);return n||(console.info("No codicon found for SymbolKind "+i),n=ct.symbolProperty),n}s.toIcon=t})(eX||(eX={}));const Zu=class Zu{static fromValue(e){switch(e){case"comment":return Zu.Comment;case"imports":return Zu.Imports;case"region":return Zu.Region}return new Zu(e)}constructor(e){this.value=e}};Zu.Comment=new Zu("comment"),Zu.Imports=new Zu("imports"),Zu.Region=new Zu("region");let BF=Zu;var a7;(function(s){s[s.AIGenerated=1]="AIGenerated"})(a7||(a7={}));var _B;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(_B||(_B={}));var d7;(function(s){function e(t){return!t||typeof t!="object"?!1:typeof t.id=="string"&&typeof t.title=="string"}s.is=e})(d7||(d7={}));var tX;(function(s){s[s.Type=1]="Type",s[s.Parameter=2]="Parameter"})(tX||(tX={}));class SPe{constructor(e){this.createSupport=e,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(e=>{e&&e.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}const Ro=new MZe,c7=new MZe;var iX;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(iX||(iX={}));var h7;(function(s){s[s.Unknown=0]="Unknown",s[s.Disabled=1]="Disabled",s[s.Enabled=2]="Enabled"})(h7||(h7={}));var u7;(function(s){s[s.Invoke=1]="Invoke",s[s.Auto=2]="Auto"})(u7||(u7={}));var m7;(function(s){s[s.None=0]="None",s[s.KeepWhitespace=1]="KeepWhitespace",s[s.InsertAsSnippet=4]="InsertAsSnippet"})(m7||(m7={}));var p7;(function(s){s[s.Method=0]="Method",s[s.Function=1]="Function",s[s.Constructor=2]="Constructor",s[s.Field=3]="Field",s[s.Variable=4]="Variable",s[s.Class=5]="Class",s[s.Struct=6]="Struct",s[s.Interface=7]="Interface",s[s.Module=8]="Module",s[s.Property=9]="Property",s[s.Event=10]="Event",s[s.Operator=11]="Operator",s[s.Unit=12]="Unit",s[s.Value=13]="Value",s[s.Constant=14]="Constant",s[s.Enum=15]="Enum",s[s.EnumMember=16]="EnumMember",s[s.Keyword=17]="Keyword",s[s.Text=18]="Text",s[s.Color=19]="Color",s[s.File=20]="File",s[s.Reference=21]="Reference",s[s.Customcolor=22]="Customcolor",s[s.Folder=23]="Folder",s[s.TypeParameter=24]="TypeParameter",s[s.User=25]="User",s[s.Issue=26]="Issue",s[s.Snippet=27]="Snippet"})(p7||(p7={}));var g7;(function(s){s[s.Deprecated=1]="Deprecated"})(g7||(g7={}));var f7;(function(s){s[s.Invoke=0]="Invoke",s[s.TriggerCharacter=1]="TriggerCharacter",s[s.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(f7||(f7={}));var b7;(function(s){s[s.EXACT=0]="EXACT",s[s.ABOVE=1]="ABOVE",s[s.BELOW=2]="BELOW"})(b7||(b7={}));var U7;(function(s){s[s.NotSet=0]="NotSet",s[s.ContentFlush=1]="ContentFlush",s[s.RecoverFromMarkers=2]="RecoverFromMarkers",s[s.Explicit=3]="Explicit",s[s.Paste=4]="Paste",s[s.Undo=5]="Undo",s[s.Redo=6]="Redo"})(U7||(U7={}));var F7;(function(s){s[s.LF=1]="LF",s[s.CRLF=2]="CRLF"})(F7||(F7={}));var A7;(function(s){s[s.Text=0]="Text",s[s.Read=1]="Read",s[s.Write=2]="Write"})(A7||(A7={}));var Z7;(function(s){s[s.None=0]="None",s[s.Keep=1]="Keep",s[s.Brackets=2]="Brackets",s[s.Advanced=3]="Advanced",s[s.Full=4]="Full"})(Z7||(Z7={}));var S7;(function(s){s[s.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",s[s.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",s[s.accessibilitySupport=2]="accessibilitySupport",s[s.accessibilityPageSize=3]="accessibilityPageSize",s[s.ariaLabel=4]="ariaLabel",s[s.ariaRequired=5]="ariaRequired",s[s.autoClosingBrackets=6]="autoClosingBrackets",s[s.autoClosingComments=7]="autoClosingComments",s[s.screenReaderAnnounceInlineSuggestion=8]="screenReaderAnnounceInlineSuggestion",s[s.autoClosingDelete=9]="autoClosingDelete",s[s.autoClosingOvertype=10]="autoClosingOvertype",s[s.autoClosingQuotes=11]="autoClosingQuotes",s[s.autoIndent=12]="autoIndent",s[s.automaticLayout=13]="automaticLayout",s[s.autoSurround=14]="autoSurround",s[s.bracketPairColorization=15]="bracketPairColorization",s[s.guides=16]="guides",s[s.codeLens=17]="codeLens",s[s.codeLensFontFamily=18]="codeLensFontFamily",s[s.codeLensFontSize=19]="codeLensFontSize",s[s.colorDecorators=20]="colorDecorators",s[s.colorDecoratorsLimit=21]="colorDecoratorsLimit",s[s.columnSelection=22]="columnSelection",s[s.comments=23]="comments",s[s.contextmenu=24]="contextmenu",s[s.copyWithSyntaxHighlighting=25]="copyWithSyntaxHighlighting",s[s.cursorBlinking=26]="cursorBlinking",s[s.cursorSmoothCaretAnimation=27]="cursorSmoothCaretAnimation",s[s.cursorStyle=28]="cursorStyle",s[s.cursorSurroundingLines=29]="cursorSurroundingLines",s[s.cursorSurroundingLinesStyle=30]="cursorSurroundingLinesStyle",s[s.cursorWidth=31]="cursorWidth",s[s.disableLayerHinting=32]="disableLayerHinting",s[s.disableMonospaceOptimizations=33]="disableMonospaceOptimizations",s[s.domReadOnly=34]="domReadOnly",s[s.dragAndDrop=35]="dragAndDrop",s[s.dropIntoEditor=36]="dropIntoEditor",s[s.emptySelectionClipboard=37]="emptySelectionClipboard",s[s.experimentalWhitespaceRendering=38]="experimentalWhitespaceRendering",s[s.extraEditorClassName=39]="extraEditorClassName",s[s.fastScrollSensitivity=40]="fastScrollSensitivity",s[s.find=41]="find",s[s.fixedOverflowWidgets=42]="fixedOverflowWidgets",s[s.folding=43]="folding",s[s.foldingStrategy=44]="foldingStrategy",s[s.foldingHighlight=45]="foldingHighlight",s[s.foldingImportsByDefault=46]="foldingImportsByDefault",s[s.foldingMaximumRegions=47]="foldingMaximumRegions",s[s.unfoldOnClickAfterEndOfLine=48]="unfoldOnClickAfterEndOfLine",s[s.fontFamily=49]="fontFamily",s[s.fontInfo=50]="fontInfo",s[s.fontLigatures=51]="fontLigatures",s[s.fontSize=52]="fontSize",s[s.fontWeight=53]="fontWeight",s[s.fontVariations=54]="fontVariations",s[s.formatOnPaste=55]="formatOnPaste",s[s.formatOnType=56]="formatOnType",s[s.glyphMargin=57]="glyphMargin",s[s.gotoLocation=58]="gotoLocation",s[s.hideCursorInOverviewRuler=59]="hideCursorInOverviewRuler",s[s.hover=60]="hover",s[s.inDiffEditor=61]="inDiffEditor",s[s.inlineSuggest=62]="inlineSuggest",s[s.inlineEdit=63]="inlineEdit",s[s.letterSpacing=64]="letterSpacing",s[s.lightbulb=65]="lightbulb",s[s.lineDecorationsWidth=66]="lineDecorationsWidth",s[s.lineHeight=67]="lineHeight",s[s.lineNumbers=68]="lineNumbers",s[s.lineNumbersMinChars=69]="lineNumbersMinChars",s[s.linkedEditing=70]="linkedEditing",s[s.links=71]="links",s[s.matchBrackets=72]="matchBrackets",s[s.minimap=73]="minimap",s[s.mouseStyle=74]="mouseStyle",s[s.mouseWheelScrollSensitivity=75]="mouseWheelScrollSensitivity",s[s.mouseWheelZoom=76]="mouseWheelZoom",s[s.multiCursorMergeOverlapping=77]="multiCursorMergeOverlapping",s[s.multiCursorModifier=78]="multiCursorModifier",s[s.multiCursorPaste=79]="multiCursorPaste",s[s.multiCursorLimit=80]="multiCursorLimit",s[s.occurrencesHighlight=81]="occurrencesHighlight",s[s.overviewRulerBorder=82]="overviewRulerBorder",s[s.overviewRulerLanes=83]="overviewRulerLanes",s[s.padding=84]="padding",s[s.pasteAs=85]="pasteAs",s[s.parameterHints=86]="parameterHints",s[s.peekWidgetDefaultFocus=87]="peekWidgetDefaultFocus",s[s.placeholder=88]="placeholder",s[s.definitionLinkOpensInPeek=89]="definitionLinkOpensInPeek",s[s.quickSuggestions=90]="quickSuggestions",s[s.quickSuggestionsDelay=91]="quickSuggestionsDelay",s[s.readOnly=92]="readOnly",s[s.readOnlyMessage=93]="readOnlyMessage",s[s.renameOnType=94]="renameOnType",s[s.renderControlCharacters=95]="renderControlCharacters",s[s.renderFinalNewline=96]="renderFinalNewline",s[s.renderLineHighlight=97]="renderLineHighlight",s[s.renderLineHighlightOnlyWhenFocus=98]="renderLineHighlightOnlyWhenFocus",s[s.renderValidationDecorations=99]="renderValidationDecorations",s[s.renderWhitespace=100]="renderWhitespace",s[s.revealHorizontalRightPadding=101]="revealHorizontalRightPadding",s[s.roundedSelection=102]="roundedSelection",s[s.rulers=103]="rulers",s[s.scrollbar=104]="scrollbar",s[s.scrollBeyondLastColumn=105]="scrollBeyondLastColumn",s[s.scrollBeyondLastLine=106]="scrollBeyondLastLine",s[s.scrollPredominantAxis=107]="scrollPredominantAxis",s[s.selectionClipboard=108]="selectionClipboard",s[s.selectionHighlight=109]="selectionHighlight",s[s.selectOnLineNumbers=110]="selectOnLineNumbers",s[s.showFoldingControls=111]="showFoldingControls",s[s.showUnused=112]="showUnused",s[s.snippetSuggestions=113]="snippetSuggestions",s[s.smartSelect=114]="smartSelect",s[s.smoothScrolling=115]="smoothScrolling",s[s.stickyScroll=116]="stickyScroll",s[s.stickyTabStops=117]="stickyTabStops",s[s.stopRenderingLineAfter=118]="stopRenderingLineAfter",s[s.suggest=119]="suggest",s[s.suggestFontSize=120]="suggestFontSize",s[s.suggestLineHeight=121]="suggestLineHeight",s[s.suggestOnTriggerCharacters=122]="suggestOnTriggerCharacters",s[s.suggestSelection=123]="suggestSelection",s[s.tabCompletion=124]="tabCompletion",s[s.tabIndex=125]="tabIndex",s[s.unicodeHighlighting=126]="unicodeHighlighting",s[s.unusualLineTerminators=127]="unusualLineTerminators",s[s.useShadowDOM=128]="useShadowDOM",s[s.useTabStops=129]="useTabStops",s[s.wordBreak=130]="wordBreak",s[s.wordSegmenterLocales=131]="wordSegmenterLocales",s[s.wordSeparators=132]="wordSeparators",s[s.wordWrap=133]="wordWrap",s[s.wordWrapBreakAfterCharacters=134]="wordWrapBreakAfterCharacters",s[s.wordWrapBreakBeforeCharacters=135]="wordWrapBreakBeforeCharacters",s[s.wordWrapColumn=136]="wordWrapColumn",s[s.wordWrapOverride1=137]="wordWrapOverride1",s[s.wordWrapOverride2=138]="wordWrapOverride2",s[s.wrappingIndent=139]="wrappingIndent",s[s.wrappingStrategy=140]="wrappingStrategy",s[s.showDeprecated=141]="showDeprecated",s[s.inlayHints=142]="inlayHints",s[s.editorClassName=143]="editorClassName",s[s.pixelRatio=144]="pixelRatio",s[s.tabFocusMode=145]="tabFocusMode",s[s.layoutInfo=146]="layoutInfo",s[s.wrappingInfo=147]="wrappingInfo",s[s.defaultColorDecorators=148]="defaultColorDecorators",s[s.colorDecoratorsActivatedOn=149]="colorDecoratorsActivatedOn",s[s.inlineCompletionsAccessibilityVerbose=150]="inlineCompletionsAccessibilityVerbose"})(S7||(S7={}));var N7;(function(s){s[s.TextDefined=0]="TextDefined",s[s.LF=1]="LF",s[s.CRLF=2]="CRLF"})(N7||(N7={}));var R7;(function(s){s[s.LF=0]="LF",s[s.CRLF=1]="CRLF"})(R7||(R7={}));var V7;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=3]="Right"})(V7||(V7={}));var W7;(function(s){s[s.Increase=0]="Increase",s[s.Decrease=1]="Decrease"})(W7||(W7={}));var y7;(function(s){s[s.None=0]="None",s[s.Indent=1]="Indent",s[s.IndentOutdent=2]="IndentOutdent",s[s.Outdent=3]="Outdent"})(y7||(y7={}));var Q7;(function(s){s[s.Both=0]="Both",s[s.Right=1]="Right",s[s.Left=2]="Left",s[s.None=3]="None"})(Q7||(Q7={}));var M7;(function(s){s[s.Type=1]="Type",s[s.Parameter=2]="Parameter"})(M7||(M7={}));var w7;(function(s){s[s.Automatic=0]="Automatic",s[s.Explicit=1]="Explicit"})(w7||(w7={}));var T7;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(T7||(T7={}));var C7;(function(s){s[s.DependsOnKbLayout=-1]="DependsOnKbLayout",s[s.Unknown=0]="Unknown",s[s.Backspace=1]="Backspace",s[s.Tab=2]="Tab",s[s.Enter=3]="Enter",s[s.Shift=4]="Shift",s[s.Ctrl=5]="Ctrl",s[s.Alt=6]="Alt",s[s.PauseBreak=7]="PauseBreak",s[s.CapsLock=8]="CapsLock",s[s.Escape=9]="Escape",s[s.Space=10]="Space",s[s.PageUp=11]="PageUp",s[s.PageDown=12]="PageDown",s[s.End=13]="End",s[s.Home=14]="Home",s[s.LeftArrow=15]="LeftArrow",s[s.UpArrow=16]="UpArrow",s[s.RightArrow=17]="RightArrow",s[s.DownArrow=18]="DownArrow",s[s.Insert=19]="Insert",s[s.Delete=20]="Delete",s[s.Digit0=21]="Digit0",s[s.Digit1=22]="Digit1",s[s.Digit2=23]="Digit2",s[s.Digit3=24]="Digit3",s[s.Digit4=25]="Digit4",s[s.Digit5=26]="Digit5",s[s.Digit6=27]="Digit6",s[s.Digit7=28]="Digit7",s[s.Digit8=29]="Digit8",s[s.Digit9=30]="Digit9",s[s.KeyA=31]="KeyA",s[s.KeyB=32]="KeyB",s[s.KeyC=33]="KeyC",s[s.KeyD=34]="KeyD",s[s.KeyE=35]="KeyE",s[s.KeyF=36]="KeyF",s[s.KeyG=37]="KeyG",s[s.KeyH=38]="KeyH",s[s.KeyI=39]="KeyI",s[s.KeyJ=40]="KeyJ",s[s.KeyK=41]="KeyK",s[s.KeyL=42]="KeyL",s[s.KeyM=43]="KeyM",s[s.KeyN=44]="KeyN",s[s.KeyO=45]="KeyO",s[s.KeyP=46]="KeyP",s[s.KeyQ=47]="KeyQ",s[s.KeyR=48]="KeyR",s[s.KeyS=49]="KeyS",s[s.KeyT=50]="KeyT",s[s.KeyU=51]="KeyU",s[s.KeyV=52]="KeyV",s[s.KeyW=53]="KeyW",s[s.KeyX=54]="KeyX",s[s.KeyY=55]="KeyY",s[s.KeyZ=56]="KeyZ",s[s.Meta=57]="Meta",s[s.ContextMenu=58]="ContextMenu",s[s.F1=59]="F1",s[s.F2=60]="F2",s[s.F3=61]="F3",s[s.F4=62]="F4",s[s.F5=63]="F5",s[s.F6=64]="F6",s[s.F7=65]="F7",s[s.F8=66]="F8",s[s.F9=67]="F9",s[s.F10=68]="F10",s[s.F11=69]="F11",s[s.F12=70]="F12",s[s.F13=71]="F13",s[s.F14=72]="F14",s[s.F15=73]="F15",s[s.F16=74]="F16",s[s.F17=75]="F17",s[s.F18=76]="F18",s[s.F19=77]="F19",s[s.F20=78]="F20",s[s.F21=79]="F21",s[s.F22=80]="F22",s[s.F23=81]="F23",s[s.F24=82]="F24",s[s.NumLock=83]="NumLock",s[s.ScrollLock=84]="ScrollLock",s[s.Semicolon=85]="Semicolon",s[s.Equal=86]="Equal",s[s.Comma=87]="Comma",s[s.Minus=88]="Minus",s[s.Period=89]="Period",s[s.Slash=90]="Slash",s[s.Backquote=91]="Backquote",s[s.BracketLeft=92]="BracketLeft",s[s.Backslash=93]="Backslash",s[s.BracketRight=94]="BracketRight",s[s.Quote=95]="Quote",s[s.OEM_8=96]="OEM_8",s[s.IntlBackslash=97]="IntlBackslash",s[s.Numpad0=98]="Numpad0",s[s.Numpad1=99]="Numpad1",s[s.Numpad2=100]="Numpad2",s[s.Numpad3=101]="Numpad3",s[s.Numpad4=102]="Numpad4",s[s.Numpad5=103]="Numpad5",s[s.Numpad6=104]="Numpad6",s[s.Numpad7=105]="Numpad7",s[s.Numpad8=106]="Numpad8",s[s.Numpad9=107]="Numpad9",s[s.NumpadMultiply=108]="NumpadMultiply",s[s.NumpadAdd=109]="NumpadAdd",s[s.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",s[s.NumpadSubtract=111]="NumpadSubtract",s[s.NumpadDecimal=112]="NumpadDecimal",s[s.NumpadDivide=113]="NumpadDivide",s[s.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",s[s.ABNT_C1=115]="ABNT_C1",s[s.ABNT_C2=116]="ABNT_C2",s[s.AudioVolumeMute=117]="AudioVolumeMute",s[s.AudioVolumeUp=118]="AudioVolumeUp",s[s.AudioVolumeDown=119]="AudioVolumeDown",s[s.BrowserSearch=120]="BrowserSearch",s[s.BrowserHome=121]="BrowserHome",s[s.BrowserBack=122]="BrowserBack",s[s.BrowserForward=123]="BrowserForward",s[s.MediaTrackNext=124]="MediaTrackNext",s[s.MediaTrackPrevious=125]="MediaTrackPrevious",s[s.MediaStop=126]="MediaStop",s[s.MediaPlayPause=127]="MediaPlayPause",s[s.LaunchMediaPlayer=128]="LaunchMediaPlayer",s[s.LaunchMail=129]="LaunchMail",s[s.LaunchApp2=130]="LaunchApp2",s[s.Clear=131]="Clear",s[s.MAX_VALUE=132]="MAX_VALUE"})(C7||(C7={}));var B7;(function(s){s[s.Hint=1]="Hint",s[s.Info=2]="Info",s[s.Warning=4]="Warning",s[s.Error=8]="Error"})(B7||(B7={}));var L7;(function(s){s[s.Unnecessary=1]="Unnecessary",s[s.Deprecated=2]="Deprecated"})(L7||(L7={}));var v7;(function(s){s[s.Inline=1]="Inline",s[s.Gutter=2]="Gutter"})(v7||(v7={}));var k7;(function(s){s[s.Normal=1]="Normal",s[s.Underlined=2]="Underlined"})(k7||(k7={}));var x7;(function(s){s[s.UNKNOWN=0]="UNKNOWN",s[s.TEXTAREA=1]="TEXTAREA",s[s.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",s[s.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",s[s.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",s[s.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",s[s.CONTENT_TEXT=6]="CONTENT_TEXT",s[s.CONTENT_EMPTY=7]="CONTENT_EMPTY",s[s.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",s[s.CONTENT_WIDGET=9]="CONTENT_WIDGET",s[s.OVERVIEW_RULER=10]="OVERVIEW_RULER",s[s.SCROLLBAR=11]="SCROLLBAR",s[s.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",s[s.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(x7||(x7={}));var I7;(function(s){s[s.AIGenerated=1]="AIGenerated"})(I7||(I7={}));var E7;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(E7||(E7={}));var D7;(function(s){s[s.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",s[s.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",s[s.TOP_CENTER=2]="TOP_CENTER"})(D7||(D7={}));var G7;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=4]="Right",s[s.Full=7]="Full"})(G7||(G7={}));var J7;(function(s){s[s.Word=0]="Word",s[s.Line=1]="Line",s[s.Suggest=2]="Suggest"})(J7||(J7={}));var X7;(function(s){s[s.Left=0]="Left",s[s.Right=1]="Right",s[s.None=2]="None",s[s.LeftOfInjectedText=3]="LeftOfInjectedText",s[s.RightOfInjectedText=4]="RightOfInjectedText"})(X7||(X7={}));var Y7;(function(s){s[s.Off=0]="Off",s[s.On=1]="On",s[s.Relative=2]="Relative",s[s.Interval=3]="Interval",s[s.Custom=4]="Custom"})(Y7||(Y7={}));var _7;(function(s){s[s.None=0]="None",s[s.Text=1]="Text",s[s.Blocks=2]="Blocks"})(_7||(_7={}));var z7;(function(s){s[s.Smooth=0]="Smooth",s[s.Immediate=1]="Immediate"})(z7||(z7={}));var O7;(function(s){s[s.Auto=1]="Auto",s[s.Hidden=2]="Hidden",s[s.Visible=3]="Visible"})(O7||(O7={}));var j7;(function(s){s[s.LTR=0]="LTR",s[s.RTL=1]="RTL"})(j7||(j7={}));var P7;(function(s){s.Off="off",s.OnCode="onCode",s.On="on"})(P7||(P7={}));var H7;(function(s){s[s.Invoke=1]="Invoke",s[s.TriggerCharacter=2]="TriggerCharacter",s[s.ContentChange=3]="ContentChange"})(H7||(H7={}));var K7;(function(s){s[s.File=0]="File",s[s.Module=1]="Module",s[s.Namespace=2]="Namespace",s[s.Package=3]="Package",s[s.Class=4]="Class",s[s.Method=5]="Method",s[s.Property=6]="Property",s[s.Field=7]="Field",s[s.Constructor=8]="Constructor",s[s.Enum=9]="Enum",s[s.Interface=10]="Interface",s[s.Function=11]="Function",s[s.Variable=12]="Variable",s[s.Constant=13]="Constant",s[s.String=14]="String",s[s.Number=15]="Number",s[s.Boolean=16]="Boolean",s[s.Array=17]="Array",s[s.Object=18]="Object",s[s.Key=19]="Key",s[s.Null=20]="Null",s[s.EnumMember=21]="EnumMember",s[s.Struct=22]="Struct",s[s.Event=23]="Event",s[s.Operator=24]="Operator",s[s.TypeParameter=25]="TypeParameter"})(K7||(K7={}));var q7;(function(s){s[s.Deprecated=1]="Deprecated"})(q7||(q7={}));var $7;(function(s){s[s.Hidden=0]="Hidden",s[s.Blink=1]="Blink",s[s.Smooth=2]="Smooth",s[s.Phase=3]="Phase",s[s.Expand=4]="Expand",s[s.Solid=5]="Solid"})($7||($7={}));var e8;(function(s){s[s.Line=1]="Line",s[s.Block=2]="Block",s[s.Underline=3]="Underline",s[s.LineThin=4]="LineThin",s[s.BlockOutline=5]="BlockOutline",s[s.UnderlineThin=6]="UnderlineThin"})(e8||(e8={}));var t8;(function(s){s[s.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",s[s.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",s[s.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",s[s.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(t8||(t8={}));var i8;(function(s){s[s.None=0]="None",s[s.Same=1]="Same",s[s.Indent=2]="Indent",s[s.DeepIndent=3]="DeepIndent"})(i8||(i8={}));var cF;let NPe=(cF=class{static chord(e,t){return dr(e,t)}},cF.CtrlCmd=2048,cF.Shift=1024,cF.Alt=512,cF.WinCtrl=256,cF);function TZe(){return{editor:void 0,languages:void 0,CancellationTokenSource:go,Emitter:fe,KeyCode:C7,KeyMod:NPe,Position:ge,Range:z,Selection:_t,SelectionDirection:j7,MarkerSeverity:B7,MarkerTag:L7,Uri:ni,Token:JB}}function RPe(s,e){const t=s;typeof t.vscodeWindowId!="number"&&Object.defineProperty(t,"vscodeWindowId",{get:()=>e})}const Us=window;function CZe(s){return s}class VPe{constructor(e,t){this.lastCache=void 0,this.lastArgKey=void 0,typeof e=="function"?(this._fn=e,this._computeKey=CZe):(this._fn=t,this._computeKey=e.getCacheKey)}get(e){const t=this._computeKey(e);return this.lastArgKey!==t&&(this.lastArgKey=t,this.lastCache=this._fn(e)),this.lastCache}}class Kce{get cachedValues(){return this._map}constructor(e,t){this._map=new Map,this._map2=new Map,typeof e=="function"?(this._fn=e,this._computeKey=CZe):(this._fn=t,this._computeKey=e.getCacheKey)}get(e){const t=this._computeKey(e);if(this._map2.has(t))return this._map2.get(t);const i=this._fn(e);return this._map.set(e,i),this._map2.set(t,i),i}}class qu{constructor(e){this.executor=e,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}function BZe(s){return!s||typeof s!="string"?!0:s.trim().length===0}const WPe=/{(\d+)}/g;function bN(s,...e){return e.length===0?s:s.replace(WPe,function(t,i){const n=parseInt(i,10);return isNaN(n)||n<0||n>=e.length?t:e[n]})}function yPe(s){return s.replace(/[<>"'&]/g,e=>{switch(e){case"<":return"<";case">":return">";case'"':return""";case"'":return"'";case"&":return"&"}return e})}function OC(s){return s.replace(/[<>&]/g,function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}})}function nh(s){return s.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function QPe(s,e=" "){const t=_v(s,e);return LZe(t,e)}function _v(s,e){if(!s||!e)return s;const t=e.length;if(t===0||s.length===0)return s;let i=0;for(;s.indexOf(e,i)===i;)i=i+t;return s.substring(i)}function LZe(s,e){if(!s||!e)return s;const t=e.length,i=s.length;if(t===0||i===0)return s;let n=i,o=-1;for(;o=s.lastIndexOf(e,n-1),!(o===-1||o+t!==n);){if(o===0)return"";n=o}return s.substring(0,n)}function MPe(s){return s.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function wPe(s){return s.replace(/\*/g,"")}function vZe(s,e,t={}){if(!s)throw new Error("Cannot create regex from empty string");e||(s=nh(s)),t.wholeWord&&(/\B/.test(s.charAt(0))||(s="\\b"+s),/\B/.test(s.charAt(s.length-1))||(s=s+"\\b"));let i="";return t.global&&(i+="g"),t.matchCase||(i+="i"),t.multiline&&(i+="m"),t.unicode&&(i+="u"),new RegExp(s,i)}function TPe(s){return s.source==="^"||s.source==="^$"||s.source==="$"||s.source==="^\\s*$"?!1:!!(s.exec("")&&s.lastIndex===0)}function Kg(s){return s.split(/\r\n|\r|\n/)}function CPe(s){const e=[],t=s.split(/(\r\n|\r|\n)/);for(let i=0;i<Math.ceil(t.length/2);i++)e.push(t[2*i]+(t[2*i+1]??""));return e}function Ua(s){for(let e=0,t=s.length;e<t;e++){const i=s.charCodeAt(e);if(i!==32&&i!==9)return e}return-1}function Rs(s,e=0,t=s.length){for(let i=e;i<t;i++){const n=s.charCodeAt(i);if(n!==32&&n!==9)return s.substring(e,i)}return s.substring(e,t)}function ip(s,e=s.length-1){for(let t=e;t>=0;t--){const i=s.charCodeAt(t);if(i!==32&&i!==9)return t}return-1}function zB(s,e){return s<e?-1:s>e?1:0}function Wse(s,e,t=0,i=s.length,n=0,o=e.length){for(;t<i&&n<o;t++,n++){const a=s.charCodeAt(t),d=e.charCodeAt(n);if(a<d)return-1;if(a>d)return 1}const r=i-t,l=o-n;return r<l?-1:r>l?1:0}function n8(s,e){return zv(s,e,0,s.length,0,e.length)}function zv(s,e,t=0,i=s.length,n=0,o=e.length){for(;t<i&&n<o;t++,n++){let a=s.charCodeAt(t),d=e.charCodeAt(n);if(a===d)continue;if(a>=128||d>=128)return Wse(s.toLowerCase(),e.toLowerCase(),t,i,n,o);_U(a)&&(a-=32),_U(d)&&(d-=32);const c=a-d;if(c!==0)return c}const r=i-t,l=o-n;return r<l?-1:r>l?1:0}function Xx(s){return s>=48&&s<=57}function _U(s){return s>=97&&s<=122}function ug(s){return s>=65&&s<=90}function UW(s,e){return s.length===e.length&&zv(s,e)===0}function yse(s,e){const t=e.length;return e.length>s.length?!1:zv(s,e,0,t)===0}function LF(s,e){const t=Math.min(s.length,e.length);let i;for(i=0;i<t;i++)if(s.charCodeAt(i)!==e.charCodeAt(i))return i;return t}function nX(s,e){const t=Math.min(s.length,e.length);let i;const n=s.length-1,o=e.length-1;for(i=0;i<t;i++)if(s.charCodeAt(n-i)!==e.charCodeAt(o-i))return i;return t}function Mr(s){return 55296<=s&&s<=56319}function UN(s){return 56320<=s&&s<=57343}function Qse(s,e){return(s-55296<<10)+(e-56320)+65536}function sX(s,e,t){const i=s.charCodeAt(t);if(Mr(i)&&t+1<e){const n=s.charCodeAt(t+1);if(UN(n))return Qse(i,n)}return i}function BPe(s,e){const t=s.charCodeAt(e-1);if(UN(t)&&e>1){const i=s.charCodeAt(e-2);if(Mr(i))return Qse(i,t)}return t}class Mse{get offset(){return this._offset}constructor(e,t=0){this._str=e,this._len=e.length,this._offset=t}setOffset(e){this._offset=e}prevCodePoint(){const e=BPe(this._str,this._offset);return this._offset-=e>=65536?2:1,e}nextCodePoint(){const e=sX(this._str,this._len,this._offset);return this._offset+=e>=65536?2:1,e}eol(){return this._offset>=this._len}}class oX{get offset(){return this._iterator.offset}constructor(e,t=0){this._iterator=new Mse(e,t)}nextGraphemeLength(){const e=rX.getInstance(),t=this._iterator,i=t.offset;let n=e.getGraphemeBreakType(t.nextCodePoint());for(;!t.eol();){const o=t.offset,r=e.getGraphemeBreakType(t.nextCodePoint());if(qce(n,r)){t.setOffset(o);break}n=r}return t.offset-i}prevGraphemeLength(){const e=rX.getInstance(),t=this._iterator,i=t.offset;let n=e.getGraphemeBreakType(t.prevCodePoint());for(;t.offset>0;){const o=t.offset,r=e.getGraphemeBreakType(t.prevCodePoint());if(qce(r,n)){t.setOffset(o);break}n=r}return i-t.offset}eol(){return this._iterator.eol()}}function wse(s,e){return new oX(s,e).nextGraphemeLength()}function kZe(s,e){return new oX(s,e).prevGraphemeLength()}function LPe(s,e){e>0&&UN(s.charCodeAt(e))&&e--;const t=e+wse(s,e);return[t-kZe(s,t),t]}let Bj;function vPe(){return/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/}function Ny(s){return Bj||(Bj=vPe()),Bj.test(s)}const kPe=/^[\t\n\r\x20-\x7E]*$/;function Ov(s){return kPe.test(s)}const xZe=/[\u2028\u2029]/;function IZe(s){return xZe.test(s)}function vF(s){return s>=11904&&s<=55215||s>=63744&&s<=64255||s>=65281&&s<=65374}function Tse(s){return s>=127462&&s<=127487||s===8986||s===8987||s===9200||s===9203||s>=9728&&s<=10175||s===11088||s===11093||s>=127744&&s<=128591||s>=128640&&s<=128764||s>=128992&&s<=129008||s>=129280&&s<=129535||s>=129648&&s<=129782}const xPe=String.fromCharCode(65279);function Cse(s){return!!(s&&s.length>0&&s.charCodeAt(0)===65279)}function IPe(s,e=!1){return s?(e&&(s=s.replace(/\\./g,"")),s.toLowerCase()!==s):!1}function EZe(s){return s=s%(2*26),s<26?String.fromCharCode(97+s):String.fromCharCode(65+s-26)}function qce(s,e){return s===0?e!==5&&e!==7:s===2&&e===3?!1:s===4||s===2||s===3||e===4||e===2||e===3?!0:!(s===8&&(e===8||e===9||e===11||e===12)||(s===11||s===9)&&(e===9||e===10)||(s===12||s===10)&&e===10||e===5||e===13||e===7||s===1||s===13&&e===14||s===6&&e===6)}const aS=class aS{static getInstance(){return aS._INSTANCE||(aS._INSTANCE=new aS),aS._INSTANCE}constructor(){this._data=EPe()}getGraphemeBreakType(e){if(e<32)return e===10?3:e===13?2:4;if(e<127)return 0;const t=this._data,i=t.length/3;let n=1;for(;n<=i;)if(e<t[3*n])n=2*n;else if(e>t[3*n+1])n=2*n+1;else return t[3*n+2];return 0}};aS._INSTANCE=null;let rX=aS;function EPe(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}function DPe(s,e){if(s===0)return 0;const t=GPe(s,e);if(t!==void 0)return t;const i=new Mse(e,s);return i.prevCodePoint(),i.offset}function GPe(s,e){const t=new Mse(e,s);let i=t.prevCodePoint();for(;JPe(i)||i===65039||i===8419;){if(t.offset===0)return;i=t.prevCodePoint()}if(!Tse(i))return;let n=t.offset;return n>0&&t.prevCodePoint()===8205&&(n=t.offset),n}function JPe(s){return 127995<=s&&s<=127999}const DZe=" ",Kp=class Kp{static getInstance(e){return Kp.cache.get(Array.from(e))}static getLocales(){return Kp._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}};Kp.ambiguousCharacterData=new qu(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),Kp.cache=new VPe({getCacheKey:JSON.stringify},e=>{function t(c){const h=new Map;for(let u=0;u<c.length;u+=2)h.set(c[u],c[u+1]);return h}function i(c,h){const u=new Map(c);for(const[m,p]of h)u.set(m,p);return u}function n(c,h){if(!c)return h;const u=new Map;for(const[m,p]of c)h.has(m)&&u.set(m,p);return u}const o=Kp.ambiguousCharacterData.value;let r=e.filter(c=>!c.startsWith("_")&&c in o);r.length===0&&(r=["_default"]);let l;for(const c of r){const h=t(o[c]);l=n(l,h)}const a=t(o._common),d=i(a,l);return new Kp(d)}),Kp._locales=new qu(()=>Object.keys(Kp.ambiguousCharacterData.value).filter(e=>!e.startsWith("_")));let OB=Kp;const a1=class a1{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(a1.getRawData())),this._data}static isInvisibleCharacter(e){return a1.getData().has(e)}static get codePoints(){return a1.getData()}};a1._data=void 0;let kS=a1;const N_=class N_{constructor(){this.mapWindowIdToZoomFactor=new Map}getZoomFactor(e){return this.mapWindowIdToZoomFactor.get(this.getWindowId(e))??1}getWindowId(e){return e.vscodeWindowId}};N_.INSTANCE=new N_;let s8=N_;function GZe(s,e,t){typeof e=="string"&&(e=s.matchMedia(e)),e.addEventListener("change",t)}function XPe(s){return s8.INSTANCE.getZoomFactor(s)}const cM=navigator.userAgent,zh=cM.indexOf("Firefox")>=0,xS=cM.indexOf("AppleWebKit")>=0,jv=cM.indexOf("Chrome")>=0,Of=!jv&&cM.indexOf("Safari")>=0,JZe=!jv&&!Of&&xS;cM.indexOf("Electron/")>=0;const $ce=cM.indexOf("Android")>=0;let hD=!1;if(typeof Us.matchMedia=="function"){const s=Us.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=Us.matchMedia("(display-mode: fullscreen)");hD=s.matches,GZe(Us,s,({matches:t})=>{hD&&e.matches||(hD=t)})}function YPe(){return hD}const Bse={clipboard:{writeText:$m||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:$m||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:(()=>$m||YPe()?0:navigator.keyboard||Of?1:2)(),touch:"ontouchstart"in Us||navigator.maxTouchPoints>0,pointerEvents:Us.PointerEvent&&("ontouchstart"in Us||navigator.maxTouchPoints>0)};function o8(s,e){if(typeof s=="number"){if(s===0)return null;const t=(s&65535)>>>0,i=(s&4294901760)>>>16;return i!==0?new Lj([Yx(t,e),Yx(i,e)]):new Lj([Yx(t,e)])}else{const t=[];for(let i=0;i<s.length;i++)t.push(Yx(s[i],e));return new Lj(t)}}function Yx(s,e){const t=!!(s&2048),i=!!(s&256),n=e===2?i:t,o=!!(s&1024),r=!!(s&512),l=e===2?t:i,a=s&255;return new jf(n,o,r,l,a)}class jf{constructor(e,t,i,n,o){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyCode=o}equals(e){return e instanceof jf&&this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}isModifierKey(){return this.keyCode===0||this.keyCode===5||this.keyCode===57||this.keyCode===6||this.keyCode===4}isDuplicateModifierCase(){return this.ctrlKey&&this.keyCode===5||this.shiftKey&&this.keyCode===4||this.altKey&&this.keyCode===6||this.metaKey&&this.keyCode===57}}class Lj{constructor(e){if(e.length===0)throw Xh("chords");this.chords=e}}class _Pe{constructor(e,t,i,n,o,r){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyLabel=o,this.keyAriaLabel=r}}class zPe{}function OPe(s){if(s.charCode){const t=String.fromCharCode(s.charCode).toUpperCase();return df.fromString(t)}const e=s.keyCode;if(e===3)return 7;if(zh)switch(e){case 59:return 85;case 60:if(_a)return 97;break;case 61:return 86;case 107:return 109;case 109:return 111;case 173:return 88;case 224:if(hn)return 57;break}else if(xS){if(hn&&e===93)return 57;if(!hn&&e===92)return 57}return AZe[e]||0}const jPe=hn?256:2048,PPe=512,HPe=1024,KPe=hn?2048:256;class Ts{constructor(e){var i;this._standardKeyboardEventBrand=!0;const t=e;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.altGraphKey=(i=t.getModifierState)==null?void 0:i.call(t,"AltGraph"),this.keyCode=OPe(t),this.code=t.code,this.ctrlKey=this.ctrlKey||this.keyCode===5,this.altKey=this.altKey||this.keyCode===6,this.shiftKey=this.shiftKey||this.keyCode===4,this.metaKey=this.metaKey||this.keyCode===57,this._asKeybinding=this._computeKeybinding(),this._asKeyCodeChord=this._computeKeyCodeChord()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeyCodeChord(){return this._asKeyCodeChord}equals(e){return this._asKeybinding===e}_computeKeybinding(){let e=0;this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode);let t=0;return this.ctrlKey&&(t|=jPe),this.altKey&&(t|=PPe),this.shiftKey&&(t|=HPe),this.metaKey&&(t|=KPe),t|=e,t}_computeKeyCodeChord(){let e=0;return this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode),new jf(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,e)}}const ehe=new WeakMap;function qPe(s){if(!s.parent||s.parent===s)return null;try{const e=s.location,t=s.parent.location;if(e.origin!=="null"&&t.origin!=="null"&&e.origin!==t.origin)return null}catch{return null}return s.parent}class $Pe{static getSameOriginWindowChain(e){let t=ehe.get(e);if(!t){t=[],ehe.set(e,t);let i=e,n;do n=qPe(i),n?t.push({window:new WeakRef(i),iframeElement:i.frameElement||null}):t.push({window:new WeakRef(i),iframeElement:null}),i=n;while(i)}return t.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(e,t){if(!t||e===t)return{top:0,left:0};let i=0,n=0;const o=this.getSameOriginWindowChain(e);for(const r of o){const l=r.window.deref();if(i+=(l==null?void 0:l.scrollY)??0,n+=(l==null?void 0:l.scrollX)??0,l===t||!r.iframeElement)break;const a=r.iframeElement.getBoundingClientRect();i+=a.top,n+=a.left}return{top:i,left:n}}}class _u{constructor(e,t){this.timestamp=Date.now(),this.browserEvent=t,this.leftButton=t.button===0,this.middleButton=t.button===1,this.rightButton=t.button===2,this.buttons=t.buttons,this.target=t.target,this.detail=t.detail||1,t.type==="dblclick"&&(this.detail=2),this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,typeof t.pageX=="number"?(this.posx=t.pageX,this.posy=t.pageY):(this.posx=t.clientX+this.target.ownerDocument.body.scrollLeft+this.target.ownerDocument.documentElement.scrollLeft,this.posy=t.clientY+this.target.ownerDocument.body.scrollTop+this.target.ownerDocument.documentElement.scrollTop);const i=$Pe.getPositionOfChildWindowRelativeToAncestorWindow(e,t.view);this.posx-=i.left,this.posy-=i.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}class FN{constructor(e,t=0,i=0){var o;this.browserEvent=e||null,this.target=e?e.target||e.targetNode||e.srcElement:null,this.deltaY=i,this.deltaX=t;let n=!1;if(jv){const r=navigator.userAgent.match(/Chrome\/(\d+)/);n=(r?parseInt(r[1]):123)<=122}if(e){const r=e,l=e,a=((o=e.view)==null?void 0:o.devicePixelRatio)||1;if(typeof r.wheelDeltaY<"u")n?this.deltaY=r.wheelDeltaY/(120*a):this.deltaY=r.wheelDeltaY/120;else if(typeof l.VERTICAL_AXIS<"u"&&l.axis===l.VERTICAL_AXIS)this.deltaY=-l.detail/3;else if(e.type==="wheel"){const d=e;d.deltaMode===d.DOM_DELTA_LINE?zh&&!hn?this.deltaY=-e.deltaY/3:this.deltaY=-e.deltaY:this.deltaY=-e.deltaY/40}if(typeof r.wheelDeltaX<"u")Of&&Tl?this.deltaX=-(r.wheelDeltaX/120):n?this.deltaX=r.wheelDeltaX/(120*a):this.deltaX=r.wheelDeltaX/120;else if(typeof l.HORIZONTAL_AXIS<"u"&&l.axis===l.HORIZONTAL_AXIS)this.deltaX=-e.detail/3;else if(e.type==="wheel"){const d=e;d.deltaMode===d.DOM_DELTA_LINE?zh&&!hn?this.deltaX=-e.deltaX/3:this.deltaX=-e.deltaX:this.deltaX=-e.deltaX/40}this.deltaY===0&&this.deltaX===0&&e.wheelDelta&&(n?this.deltaY=e.wheelDelta/(120*a):this.deltaY=e.wheelDelta/120)}}preventDefault(){var e;(e=this.browserEvent)==null||e.preventDefault()}stopPropagation(){var e;(e=this.browserEvent)==null||e.stopPropagation()}}const XZe=Symbol("MicrotaskDelay");function r8(s){return!!s&&typeof s.then=="function"}function Tr(s){const e=new go,t=s(e.token),i=new Promise((n,o)=>{const r=e.token.onCancellationRequested(()=>{r.dispose(),o(new Ku)});Promise.resolve(t).then(l=>{r.dispose(),e.dispose(),n(l)},l=>{r.dispose(),e.dispose(),o(l)})});return new class{cancel(){e.cancel(),e.dispose()}then(n,o){return i.then(n,o)}catch(n){return this.then(void 0,n)}finally(n){return i.finally(n)}}}function Pv(s,e,t){return new Promise((i,n)=>{const o=e.onCancellationRequested(()=>{o.dispose(),i(t)});s.then(i,n).finally(()=>o.dispose())})}class eHe{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(e){if(this.isDisposed)return Promise.reject(new Error("Throttler is disposed"));if(this.activePromise){if(this.queuedPromiseFactory=e,!this.queuedPromise){const t=()=>{if(this.queuedPromise=null,this.isDisposed)return;const i=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,i};this.queuedPromise=new Promise(i=>{this.activePromise.then(t,t).then(i)})}return new Promise((t,i)=>{this.queuedPromise.then(t,i)})}return this.activePromise=e(),new Promise((t,i)=>{this.activePromise.then(n=>{this.activePromise=null,t(n)},n=>{this.activePromise=null,i(n)})})}dispose(){this.isDisposed=!0}}const tHe=(s,e)=>{let t=!0;const i=setTimeout(()=>{t=!1,e()},s);return{isTriggered:()=>t,dispose:()=>{clearTimeout(i),t=!1}}},iHe=s=>{let e=!0;return queueMicrotask(()=>{e&&(e=!1,s())}),{isTriggered:()=>e,dispose:()=>{e=!1}}};class Oh{constructor(e){this.defaultDelay=e,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(e,t=this.defaultDelay){this.task=e,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((n,o)=>{this.doResolve=n,this.doReject=o}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const n=this.task;return this.task=null,n()}}));const i=()=>{var n;this.deferred=null,(n=this.doResolve)==null||n.call(this,null)};return this.deferred=t===XZe?iHe(i):tHe(t,i),this.completionPromise}isTriggered(){var e;return!!((e=this.deferred)!=null&&e.isTriggered())}cancel(){var e;this.cancelTimeout(),this.completionPromise&&((e=this.doReject)==null||e.call(this,new Ku),this.completionPromise=null)}cancelTimeout(){var e;(e=this.deferred)==null||e.dispose(),this.deferred=null}dispose(){this.cancel()}}class YZe{constructor(e){this.delayer=new Oh(e),this.throttler=new eHe}trigger(e,t){return this.delayer.trigger(()=>this.throttler.queue(e),t)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}function Pf(s,e){return e?new Promise((t,i)=>{const n=setTimeout(()=>{o.dispose(),t()},s),o=e.onCancellationRequested(()=>{clearTimeout(n),o.dispose(),i(new Ku)})}):Tr(t=>Pf(s,t))}function kF(s,e=0,t){const i=setTimeout(()=>{s(),t&&n.dispose()},e),n=ei(()=>{clearTimeout(i),t==null||t.deleteAndLeak(n)});return t==null||t.add(n),n}function Lse(s,e=i=>!!i,t=null){let i=0;const n=s.length,o=()=>{if(i>=n)return Promise.resolve(t);const r=s[i++];return Promise.resolve(r()).then(a=>e(a)?Promise.resolve(a):o())};return o()}class om{constructor(e,t){this._isDisposed=!1,this._token=-1,typeof e=="function"&&typeof t=="number"&&this.setIfNotSet(e,t)}dispose(){this.cancel(),this._isDisposed=!0}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,t){if(this._isDisposed)throw new _n("Calling 'cancelAndSet' on a disposed TimeoutTimer");this.cancel(),this._token=setTimeout(()=>{this._token=-1,e()},t)}setIfNotSet(e,t){if(this._isDisposed)throw new _n("Calling 'setIfNotSet' on a disposed TimeoutTimer");this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,e()},t))}}class vse{constructor(){this.disposable=void 0,this.isDisposed=!1}cancel(){var e;(e=this.disposable)==null||e.dispose(),this.disposable=void 0}cancelAndSet(e,t,i=globalThis){if(this.isDisposed)throw new _n("Calling 'cancelAndSet' on a disposed IntervalTimer");this.cancel();const n=i.setInterval(()=>{e()},t);this.disposable=ei(()=>{i.clearInterval(n),this.disposable=void 0})}dispose(){this.cancel(),this.isDisposed=!0}}class cs{constructor(e,t){this.timeoutToken=-1,this.runner=e,this.timeout=t,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(e=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)}get delay(){return this.timeout}set delay(e){this.timeout=e}isScheduled(){return this.timeoutToken!==-1}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var e;(e=this.runner)==null||e.call(this)}}let _Ze,jC;(function(){typeof globalThis.requestIdleCallback!="function"||typeof globalThis.cancelIdleCallback!="function"?jC=(s,e)=>{cZe(()=>{if(t)return;const i=Date.now()+15;e(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,i-Date.now())}}))});let t=!1;return{dispose(){t||(t=!0)}}}:jC=(s,e,t)=>{const i=s.requestIdleCallback(e,typeof t=="number"?{timeout:t}:void 0);let n=!1;return{dispose(){n||(n=!0,s.cancelIdleCallback(i))}}},_Ze=s=>jC(globalThis,s)})();class zZe{constructor(e,t){this._didRun=!1,this._executor=()=>{try{this._value=t()}catch(i){this._error=i}finally{this._didRun=!0}},this._handle=jC(e,()=>this._executor())}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}class nHe extends zZe{constructor(e){super(globalThis,e)}}class hM{get isRejected(){var e;return((e=this.outcome)==null?void 0:e.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((e,t)=>{this.completeCallback=e,this.errorCallback=t})}complete(e){return new Promise(t=>{this.completeCallback(e),this.outcome={outcome:0,value:e},t()})}error(e){return new Promise(t=>{this.errorCallback(e),this.outcome={outcome:1,value:e},t()})}cancel(){return this.error(new Ku)}}var l8;(function(s){async function e(i){let n;const o=await Promise.all(i.map(r=>r.then(l=>l,l=>{n||(n=l)})));if(typeof n<"u")throw n;return o}s.settled=e;function t(i){return new Promise(async(n,o)=>{try{await i(n,o)}catch(r){o(r)}})}s.withAsyncBody=t})(l8||(l8={}));const Pd=class Pd{static fromArray(e){return new Pd(t=>{t.emitMany(e)})}static fromPromise(e){return new Pd(async t=>{t.emitMany(await e)})}static fromPromises(e){return new Pd(async t=>{await Promise.all(e.map(async i=>t.emitOne(await i)))})}static merge(e){return new Pd(async t=>{await Promise.all(e.map(async i=>{for await(const n of i)t.emitOne(n)}))})}constructor(e,t){this._state=0,this._results=[],this._error=null,this._onReturn=t,this._onStateChanged=new fe,queueMicrotask(async()=>{const i={emitOne:n=>this.emitOne(n),emitMany:n=>this.emitMany(n),reject:n=>this.reject(n)};try{await Promise.resolve(e(i)),this.resolve()}catch(n){this.reject(n)}finally{i.emitOne=void 0,i.emitMany=void 0,i.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e<this._results.length)return{done:!1,value:this._results[e++]};if(this._state===1)return{done:!0,value:void 0};await Ut.toPromise(this._onStateChanged.event)}while(!0)},return:async()=>{var t;return(t=this._onReturn)==null||t.call(this),{done:!0,value:void 0}}}}static map(e,t){return new Pd(async i=>{for await(const n of e)i.emitOne(t(n))})}map(e){return Pd.map(this,e)}static filter(e,t){return new Pd(async i=>{for await(const n of e)t(n)&&i.emitOne(n)})}filter(e){return Pd.filter(this,e)}static coalesce(e){return Pd.filter(e,t=>!!t)}coalesce(){return Pd.coalesce(this)}static async toPromise(e){const t=[];for await(const i of e)t.push(i);return t}toPromise(){return Pd.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};Pd.EMPTY=Pd.fromArray([]);let jc=Pd;class sHe extends jc{constructor(e,t){super(t),this._source=e}cancel(){this._source.cancel()}}function oHe(s){const e=new go,t=s(e.token);return new sHe(e,async i=>{const n=e.token.onCancellationRequested(()=>{n.dispose(),e.dispose(),i.reject(new Ku)});try{for await(const o of t){if(e.token.isCancellationRequested)return;i.emitOne(o)}n.dispose(),e.dispose()}catch(o){n.dispose(),e.dispose(),i.reject(o)}})}/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */const{entries:OZe,setPrototypeOf:the,isFrozen:rHe,getPrototypeOf:lHe,getOwnPropertyDescriptor:aHe}=Object;let{freeze:gc,seal:$u,create:jZe}=Object,{apply:a8,construct:d8}=typeof Reflect<"u"&&Reflect;gc||(gc=function(e){return e});$u||($u=function(e){return e});a8||(a8=function(e,t,i){return e.apply(t,i)});d8||(d8=function(e,t){return new e(...t)});const _x=jh(Array.prototype.forEach),ihe=jh(Array.prototype.pop),rw=jh(Array.prototype.push),uD=jh(String.prototype.toLowerCase),vj=jh(String.prototype.toString),nhe=jh(String.prototype.match),lw=jh(String.prototype.replace),dHe=jh(String.prototype.indexOf),cHe=jh(String.prototype.trim),Tm=jh(Object.prototype.hasOwnProperty),Gd=jh(RegExp.prototype.test),aw=hHe(TypeError);function jh(s){return function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return a8(s,e,i)}}function hHe(s){return function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return d8(s,t)}}function ys(s,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:uD;the&&the(s,null);let i=e.length;for(;i--;){let n=e[i];if(typeof n=="string"){const o=t(n);o!==n&&(rHe(e)||(e[i]=o),n=o)}s[n]=!0}return s}function uHe(s){for(let e=0;e<s.length;e++)Tm(s,e)||(s[e]=null);return s}function rZ(s){const e=jZe(null);for(const[t,i]of OZe(s))Tm(s,t)&&(Array.isArray(i)?e[t]=uHe(i):i&&typeof i=="object"&&i.constructor===Object?e[t]=rZ(i):e[t]=i);return e}function dw(s,e){for(;s!==null;){const i=aHe(s,e);if(i){if(i.get)return jh(i.get);if(typeof i.value=="function")return jh(i.value)}s=lHe(s)}function t(){return null}return t}const she=gc(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),kj=gc(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),xj=gc(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),mHe=gc(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Ij=gc(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),pHe=gc(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),ohe=gc(["#text"]),rhe=gc(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Ej=gc(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),lhe=gc(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),zx=gc(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),gHe=$u(/\{\{[\w\W]*|[\w\W]*\}\}/gm),fHe=$u(/<%[\w\W]*|[\w\W]*%>/gm),bHe=$u(/\${[\w\W]*}/gm),UHe=$u(/^data-[\-\w.\u00B7-\uFFFF]/),FHe=$u(/^aria-[\-\w]+$/),PZe=$u(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),AHe=$u(/^(?:\w+script|data):/i),ZHe=$u(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),HZe=$u(/^html$/i),SHe=$u(/^[a-z][.\w]*(-[.\w]+)+$/i);var ahe=Object.freeze({__proto__:null,MUSTACHE_EXPR:gHe,ERB_EXPR:fHe,TMPLIT_EXPR:bHe,DATA_ATTR:UHe,ARIA_ATTR:FHe,IS_ALLOWED_URI:PZe,IS_SCRIPT_OR_DATA:AHe,ATTR_WHITESPACE:ZHe,DOCTYPE_NAME:HZe,CUSTOM_ELEMENT:SHe});const cw={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},NHe=function(){return typeof window>"u"?null:window},RHe=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let i=null;const n="data-tt-policy-suffix";t&&t.hasAttribute(n)&&(i=t.getAttribute(n));const o="dompurify"+(i?"#"+i:"");try{return e.createPolicy(o,{createHTML(r){return r},createScriptURL(r){return r}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function KZe(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:NHe();const e=xe=>KZe(xe);if(e.version="3.1.7",e.removed=[],!s||!s.document||s.document.nodeType!==cw.document)return e.isSupported=!1,e;let{document:t}=s;const i=t,n=i.currentScript,{DocumentFragment:o,HTMLTemplateElement:r,Node:l,Element:a,NodeFilter:d,NamedNodeMap:c=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:h,DOMParser:u,trustedTypes:m}=s,p=a.prototype,g=dw(p,"cloneNode"),f=dw(p,"remove"),b=dw(p,"nextSibling"),U=dw(p,"childNodes"),S=dw(p,"parentNode");if(typeof r=="function"){const xe=t.createElement("template");xe.content&&xe.content.ownerDocument&&(t=xe.content.ownerDocument)}let Z,R="";const{implementation:y,createNodeIterator:N,createDocumentFragment:w,getElementsByTagName:Q}=t,{importNode:C}=i;let v={};e.isSupported=typeof OZe=="function"&&typeof S=="function"&&y&&y.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Y,ERB_EXPR:J,TMPLIT_EXPR:k,DATA_ATTR:E,ARIA_ATTR:K,IS_SCRIPT_OR_DATA:de,ATTR_WHITESPACE:ee,CUSTOM_ELEMENT:le}=ahe;let{IS_ALLOWED_URI:Fe}=ahe,Ue=null;const ze=ys({},[...she,...kj,...xj,...Ij,...ohe]);let Oe=null;const Ie=ys({},[...rhe,...Ej,...lhe,...zx]);let at=Object.seal(jZe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),je=null,Se=null,dt=!0,Yt=!0,Ye=!1,mt=!0,Wt=!1,Jt=!0,Ae=!1,Yi=!1,ci=!1,we=!1,si=!1,yn=!1,bi=!0,pe=!1;const ie="user-content-";let it=!0,Ft=!1,Pe={},Re=null;const vt=ys({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ke=null;const ot=ys({},["audio","video","img","source","image","track"]);let Et=null;const St=ys({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ht="http://www.w3.org/1998/Math/MathML",Fi="http://www.w3.org/2000/svg",Dt="http://www.w3.org/1999/xhtml";let Ot=Dt,nn=!1,xi=null;const Zi=ys({},[Ht,Fi,Dt],vj);let Me=null;const ri=["application/xhtml+xml","text/html"],st="text/html";let Ve=null,Nt=null;const Ui=t.createElement("form"),Ci=function(me){return me instanceof RegExp||me instanceof Function},Mn=function(){let me=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Nt&&Nt===me)){if((!me||typeof me!="object")&&(me={}),me=rZ(me),Me=ri.indexOf(me.PARSER_MEDIA_TYPE)===-1?st:me.PARSER_MEDIA_TYPE,Ve=Me==="application/xhtml+xml"?vj:uD,Ue=Tm(me,"ALLOWED_TAGS")?ys({},me.ALLOWED_TAGS,Ve):ze,Oe=Tm(me,"ALLOWED_ATTR")?ys({},me.ALLOWED_ATTR,Ve):Ie,xi=Tm(me,"ALLOWED_NAMESPACES")?ys({},me.ALLOWED_NAMESPACES,vj):Zi,Et=Tm(me,"ADD_URI_SAFE_ATTR")?ys(rZ(St),me.ADD_URI_SAFE_ATTR,Ve):St,Ke=Tm(me,"ADD_DATA_URI_TAGS")?ys(rZ(ot),me.ADD_DATA_URI_TAGS,Ve):ot,Re=Tm(me,"FORBID_CONTENTS")?ys({},me.FORBID_CONTENTS,Ve):vt,je=Tm(me,"FORBID_TAGS")?ys({},me.FORBID_TAGS,Ve):{},Se=Tm(me,"FORBID_ATTR")?ys({},me.FORBID_ATTR,Ve):{},Pe=Tm(me,"USE_PROFILES")?me.USE_PROFILES:!1,dt=me.ALLOW_ARIA_ATTR!==!1,Yt=me.ALLOW_DATA_ATTR!==!1,Ye=me.ALLOW_UNKNOWN_PROTOCOLS||!1,mt=me.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Wt=me.SAFE_FOR_TEMPLATES||!1,Jt=me.SAFE_FOR_XML!==!1,Ae=me.WHOLE_DOCUMENT||!1,we=me.RETURN_DOM||!1,si=me.RETURN_DOM_FRAGMENT||!1,yn=me.RETURN_TRUSTED_TYPE||!1,ci=me.FORCE_BODY||!1,bi=me.SANITIZE_DOM!==!1,pe=me.SANITIZE_NAMED_PROPS||!1,it=me.KEEP_CONTENT!==!1,Ft=me.IN_PLACE||!1,Fe=me.ALLOWED_URI_REGEXP||PZe,Ot=me.NAMESPACE||Dt,at=me.CUSTOM_ELEMENT_HANDLING||{},me.CUSTOM_ELEMENT_HANDLING&&Ci(me.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(at.tagNameCheck=me.CUSTOM_ELEMENT_HANDLING.tagNameCheck),me.CUSTOM_ELEMENT_HANDLING&&Ci(me.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(at.attributeNameCheck=me.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),me.CUSTOM_ELEMENT_HANDLING&&typeof me.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(at.allowCustomizedBuiltInElements=me.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Wt&&(Yt=!1),si&&(we=!0),Pe&&(Ue=ys({},ohe),Oe=[],Pe.html===!0&&(ys(Ue,she),ys(Oe,rhe)),Pe.svg===!0&&(ys(Ue,kj),ys(Oe,Ej),ys(Oe,zx)),Pe.svgFilters===!0&&(ys(Ue,xj),ys(Oe,Ej),ys(Oe,zx)),Pe.mathMl===!0&&(ys(Ue,Ij),ys(Oe,lhe),ys(Oe,zx))),me.ADD_TAGS&&(Ue===ze&&(Ue=rZ(Ue)),ys(Ue,me.ADD_TAGS,Ve)),me.ADD_ATTR&&(Oe===Ie&&(Oe=rZ(Oe)),ys(Oe,me.ADD_ATTR,Ve)),me.ADD_URI_SAFE_ATTR&&ys(Et,me.ADD_URI_SAFE_ATTR,Ve),me.FORBID_CONTENTS&&(Re===vt&&(Re=rZ(Re)),ys(Re,me.FORBID_CONTENTS,Ve)),it&&(Ue["#text"]=!0),Ae&&ys(Ue,["html","head","body"]),Ue.table&&(ys(Ue,["tbody"]),delete je.tbody),me.TRUSTED_TYPES_POLICY){if(typeof me.TRUSTED_TYPES_POLICY.createHTML!="function")throw aw('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof me.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw aw('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');Z=me.TRUSTED_TYPES_POLICY,R=Z.createHTML("")}else Z===void 0&&(Z=RHe(m,n)),Z!==null&&typeof R=="string"&&(R=Z.createHTML(""));gc&&gc(me),Nt=me}},Si=ys({},["mi","mo","mn","ms","mtext"]),oe=ys({},["annotation-xml"]),ae=ys({},["title","style","font","a","script"]),ce=ys({},[...kj,...xj,...mHe]),Ne=ys({},[...Ij,...pHe]),Be=function(me){let Zt=S(me);(!Zt||!Zt.tagName)&&(Zt={namespaceURI:Ot,tagName:"template"});const q=uD(me.tagName),We=uD(Zt.tagName);return xi[me.namespaceURI]?me.namespaceURI===Fi?Zt.namespaceURI===Dt?q==="svg":Zt.namespaceURI===Ht?q==="svg"&&(We==="annotation-xml"||Si[We]):!!ce[q]:me.namespaceURI===Ht?Zt.namespaceURI===Dt?q==="math":Zt.namespaceURI===Fi?q==="math"&&oe[We]:!!Ne[q]:me.namespaceURI===Dt?Zt.namespaceURI===Fi&&!oe[We]||Zt.namespaceURI===Ht&&!Si[We]?!1:!Ne[q]&&(ae[q]||!ce[q]):!!(Me==="application/xhtml+xml"&&xi[me.namespaceURI]):!1},Le=function(me){rw(e.removed,{element:me});try{S(me).removeChild(me)}catch{f(me)}},pt=function(me,Zt){try{rw(e.removed,{attribute:Zt.getAttributeNode(me),from:Zt})}catch{rw(e.removed,{attribute:null,from:Zt})}if(Zt.removeAttribute(me),me==="is"&&!Oe[me])if(we||si)try{Le(Zt)}catch{}else try{Zt.setAttribute(me,"")}catch{}},jt=function(me){let Zt=null,q=null;if(ci)me="<remove></remove>"+me;else{const ke=nhe(me,/^[\r\n\t ]+/);q=ke&&ke[0]}Me==="application/xhtml+xml"&&Ot===Dt&&(me='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+me+"</body></html>");const We=Z?Z.createHTML(me):me;if(Ot===Dt)try{Zt=new u().parseFromString(We,Me)}catch{}if(!Zt||!Zt.documentElement){Zt=y.createDocument(Ot,"template",null);try{Zt.documentElement.innerHTML=nn?R:We}catch{}}const Qe=Zt.body||Zt.documentElement;return me&&q&&Qe.insertBefore(t.createTextNode(q),Qe.childNodes[0]||null),Ot===Dt?Q.call(Zt,Ae?"html":"body")[0]:Ae?Zt.documentElement:Qe},mi=function(me){return N.call(me.ownerDocument||me,me,d.SHOW_ELEMENT|d.SHOW_COMMENT|d.SHOW_TEXT|d.SHOW_PROCESSING_INSTRUCTION|d.SHOW_CDATA_SECTION,null)},Ji=function(me){return me instanceof h&&(typeof me.nodeName!="string"||typeof me.textContent!="string"||typeof me.removeChild!="function"||!(me.attributes instanceof c)||typeof me.removeAttribute!="function"||typeof me.setAttribute!="function"||typeof me.namespaceURI!="string"||typeof me.insertBefore!="function"||typeof me.hasChildNodes!="function")},xn=function(me){return typeof l=="function"&&me instanceof l},Gn=function(me,Zt,q){v[me]&&_x(v[me],We=>{We.call(e,Zt,q,Nt)})},Fs=function(me){let Zt=null;if(Gn("beforeSanitizeElements",me,null),Ji(me))return Le(me),!0;const q=Ve(me.nodeName);if(Gn("uponSanitizeElement",me,{tagName:q,allowedTags:Ue}),me.hasChildNodes()&&!xn(me.firstElementChild)&&Gd(/<[/\w]/g,me.innerHTML)&&Gd(/<[/\w]/g,me.textContent)||me.nodeType===cw.progressingInstruction||Jt&&me.nodeType===cw.comment&&Gd(/<[/\w]/g,me.data))return Le(me),!0;if(!Ue[q]||je[q]){if(!je[q]&&Vr(q)&&(at.tagNameCheck instanceof RegExp&&Gd(at.tagNameCheck,q)||at.tagNameCheck instanceof Function&&at.tagNameCheck(q)))return!1;if(it&&!Re[q]){const We=S(me)||me.parentNode,Qe=U(me)||me.childNodes;if(Qe&&We){const ke=Qe.length;for(let ve=ke-1;ve>=0;--ve){const Lt=g(Qe[ve],!0);Lt.__removalCount=(me.__removalCount||0)+1,We.insertBefore(Lt,b(me))}}}return Le(me),!0}return me instanceof a&&!Be(me)||(q==="noscript"||q==="noembed"||q==="noframes")&&Gd(/<\/no(script|embed|frames)/i,me.innerHTML)?(Le(me),!0):(Wt&&me.nodeType===cw.text&&(Zt=me.textContent,_x([Y,J,k],We=>{Zt=lw(Zt,We," ")}),me.textContent!==Zt&&(rw(e.removed,{element:me.cloneNode()}),me.textContent=Zt)),Gn("afterSanitizeElements",me,null),!1)},As=function(me,Zt,q){if(bi&&(Zt==="id"||Zt==="name")&&(q in t||q in Ui))return!1;if(!(Yt&&!Se[Zt]&&Gd(E,Zt))){if(!(dt&&Gd(K,Zt))){if(!Oe[Zt]||Se[Zt]){if(!(Vr(me)&&(at.tagNameCheck instanceof RegExp&&Gd(at.tagNameCheck,me)||at.tagNameCheck instanceof Function&&at.tagNameCheck(me))&&(at.attributeNameCheck instanceof RegExp&&Gd(at.attributeNameCheck,Zt)||at.attributeNameCheck instanceof Function&&at.attributeNameCheck(Zt))||Zt==="is"&&at.allowCustomizedBuiltInElements&&(at.tagNameCheck instanceof RegExp&&Gd(at.tagNameCheck,q)||at.tagNameCheck instanceof Function&&at.tagNameCheck(q))))return!1}else if(!Et[Zt]){if(!Gd(Fe,lw(q,ee,""))){if(!((Zt==="src"||Zt==="xlink:href"||Zt==="href")&&me!=="script"&&dHe(q,"data:")===0&&Ke[me])){if(!(Ye&&!Gd(de,lw(q,ee,"")))){if(q)return!1}}}}}}return!0},Vr=function(me){return me!=="annotation-xml"&&nhe(me,le)},ir=function(me){Gn("beforeSanitizeAttributes",me,null);const{attributes:Zt}=me;if(!Zt)return;const q={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Oe};let We=Zt.length;for(;We--;){const Qe=Zt[We],{name:ke,namespaceURI:ve,value:Lt}=Qe,li=Ve(ke);let tt=ke==="value"?Lt:cHe(Lt);if(q.attrName=li,q.attrValue=tt,q.keepAttr=!0,q.forceKeepAttr=void 0,Gn("uponSanitizeAttribute",me,q),tt=q.attrValue,q.forceKeepAttr||(pt(ke,me),!q.keepAttr))continue;if(!mt&&Gd(/\/>/i,tt)){pt(ke,me);continue}Wt&&_x([Y,J,k],tn=>{tt=lw(tt,tn," ")});const Ct=Ve(me.nodeName);if(As(Ct,li,tt)){if(pe&&(li==="id"||li==="name")&&(pt(ke,me),tt=ie+tt),Jt&&Gd(/((--!?|])>)|<\/(style|title)/i,tt)){pt(ke,me);continue}if(Z&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!ve)switch(m.getAttributeType(Ct,li)){case"TrustedHTML":{tt=Z.createHTML(tt);break}case"TrustedScriptURL":{tt=Z.createScriptURL(tt);break}}try{ve?me.setAttributeNS(ve,ke,tt):me.setAttribute(ke,tt),Ji(me)?Le(me):ihe(e.removed)}catch{}}}Gn("afterSanitizeAttributes",me,null)},He=function xe(me){let Zt=null;const q=mi(me);for(Gn("beforeSanitizeShadowDOM",me,null);Zt=q.nextNode();)Gn("uponSanitizeShadowNode",Zt,null),!Fs(Zt)&&(Zt.content instanceof o&&xe(Zt.content),ir(Zt));Gn("afterSanitizeShadowDOM",me,null)};return e.sanitize=function(xe){let me=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Zt=null,q=null,We=null,Qe=null;if(nn=!xe,nn&&(xe="<!-->"),typeof xe!="string"&&!xn(xe))if(typeof xe.toString=="function"){if(xe=xe.toString(),typeof xe!="string")throw aw("dirty is not a string, aborting")}else throw aw("toString is not a function");if(!e.isSupported)return xe;if(Yi||Mn(me),e.removed=[],typeof xe=="string"&&(Ft=!1),Ft){if(xe.nodeName){const Lt=Ve(xe.nodeName);if(!Ue[Lt]||je[Lt])throw aw("root node is forbidden and cannot be sanitized in-place")}}else if(xe instanceof l)Zt=jt("<!---->"),q=Zt.ownerDocument.importNode(xe,!0),q.nodeType===cw.element&&q.nodeName==="BODY"||q.nodeName==="HTML"?Zt=q:Zt.appendChild(q);else{if(!we&&!Wt&&!Ae&&xe.indexOf("<")===-1)return Z&&yn?Z.createHTML(xe):xe;if(Zt=jt(xe),!Zt)return we?null:yn?R:""}Zt&&ci&&Le(Zt.firstChild);const ke=mi(Ft?xe:Zt);for(;We=ke.nextNode();)Fs(We)||(We.content instanceof o&&He(We.content),ir(We));if(Ft)return xe;if(we){if(si)for(Qe=w.call(Zt.ownerDocument);Zt.firstChild;)Qe.appendChild(Zt.firstChild);else Qe=Zt;return(Oe.shadowroot||Oe.shadowrootmode)&&(Qe=C.call(i,Qe,!0)),Qe}let ve=Ae?Zt.outerHTML:Zt.innerHTML;return Ae&&Ue["!doctype"]&&Zt.ownerDocument&&Zt.ownerDocument.doctype&&Zt.ownerDocument.doctype.name&&Gd(HZe,Zt.ownerDocument.doctype.name)&&(ve="<!DOCTYPE "+Zt.ownerDocument.doctype.name+`>
- `+ve),Wt&&_x([Y,J,k],Lt=>{ve=lw(ve,Lt," ")}),Z&&yn?Z.createHTML(ve):ve},e.setConfig=function(){let xe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Mn(xe),Yi=!0},e.clearConfig=function(){Nt=null,Yi=!1},e.isValidAttribute=function(xe,me,Zt){Nt||Mn({});const q=Ve(xe),We=Ve(me);return As(q,We,Zt)},e.addHook=function(xe,me){typeof me=="function"&&(v[xe]=v[xe]||[],rw(v[xe],me))},e.removeHook=function(xe){if(v[xe])return ihe(v[xe])},e.removeHooks=function(xe){v[xe]&&(v[xe]=[])},e.removeAllHooks=function(){v={}},e}var qg=KZe();qg.version;qg.isSupported;const qZe=qg.sanitize;qg.setConfig;qg.clearConfig;qg.isValidAttribute;const $Ze=qg.addHook,eSe=qg.removeHook;qg.removeHooks;qg.removeAllHooks;var Ti;(function(s){s.inMemory="inmemory",s.vscode="vscode",s.internal="private",s.walkThrough="walkThrough",s.walkThroughSnippet="walkThroughSnippet",s.http="http",s.https="https",s.file="file",s.mailto="mailto",s.untitled="untitled",s.data="data",s.command="command",s.vscodeRemote="vscode-remote",s.vscodeRemoteResource="vscode-remote-resource",s.vscodeManagedRemoteResource="vscode-managed-remote-resource",s.vscodeUserData="vscode-userdata",s.vscodeCustomEditor="vscode-custom-editor",s.vscodeNotebookCell="vscode-notebook-cell",s.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",s.vscodeNotebookCellMetadataDiff="vscode-notebook-cell-metadata-diff",s.vscodeNotebookCellOutput="vscode-notebook-cell-output",s.vscodeNotebookCellOutputDiff="vscode-notebook-cell-output-diff",s.vscodeNotebookMetadata="vscode-notebook-metadata",s.vscodeInteractiveInput="vscode-interactive-input",s.vscodeSettings="vscode-settings",s.vscodeWorkspaceTrust="vscode-workspace-trust",s.vscodeTerminal="vscode-terminal",s.vscodeChatCodeBlock="vscode-chat-code-block",s.vscodeChatCodeCompareBlock="vscode-chat-code-compare-block",s.vscodeChatSesssion="vscode-chat-editor",s.webviewPanel="webview-panel",s.vscodeWebview="vscode-webview",s.extension="extension",s.vscodeFileResource="vscode-file",s.tmp="tmp",s.vsls="vsls",s.vscodeSourceControl="vscode-scm",s.commentsInput="comment",s.codeSetting="code-setting",s.outputChannel="output"})(Ti||(Ti={}));function W3(s,e){return ni.isUri(s)?UW(s.scheme,e):yse(s,e+":")}function c8(s,...e){return e.some(t=>W3(s,t))}const VHe="tkn";class WHe{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._serverRootPath="/"}setPreferredWebSchema(e){this._preferredWebSchema=e}get _remoteResourcesPath(){return $o.join(this._serverRootPath,Ti.vscodeRemoteResource)}rewrite(e){if(this._delegate)try{return this._delegate(e)}catch(l){return wi(l),e}const t=e.authority;let i=this._hosts[t];i&&i.indexOf(":")!==-1&&i.indexOf("[")===-1&&(i=`[${i}]`);const n=this._ports[t],o=this._connectionTokens[t];let r=`path=${encodeURIComponent(e.path)}`;return typeof o=="string"&&(r+=`&${VHe}=${encodeURIComponent(o)}`),ni.from({scheme:jN?this._preferredWebSchema:Ti.vscodeRemoteResource,authority:`${i}:${n}`,path:this._remoteResourcesPath,query:r})}}const tSe=new WHe,yHe="vscode-app",mB=class mB{asBrowserUri(e){const t=this.toUri(e);return this.uriToBrowserUri(t)}uriToBrowserUri(e){return e.scheme===Ti.vscodeRemote?tSe.rewrite(e):e.scheme===Ti.file&&($m||LOe===`${Ti.vscodeFileResource}://${mB.FALLBACK_AUTHORITY}`)?e.with({scheme:Ti.vscodeFileResource,authority:e.authority||mB.FALLBACK_AUTHORITY,query:null,fragment:null}):e}toUri(e,t){if(ni.isUri(e))return e;if(globalThis._VSCODE_FILE_ROOT){const i=globalThis._VSCODE_FILE_ROOT;if(/^\w[\w\d+.-]*:\/\//.test(i))return ni.joinPath(ni.parse(i,!0),e);const n=sPe(i,e);return ni.file(n)}return ni.parse(t.toUrl(e))}};mB.FALLBACK_AUTHORITY=yHe;let h8=mB;const y3=new h8;var u8;(function(s){const e=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);s.CoopAndCoep=Object.freeze(e.get("3"));const t="vscode-coi";function i(o){let r;typeof o=="string"?r=new URL(o).searchParams:o instanceof URL?r=o.searchParams:ni.isUri(o)&&(r=new URL(o.toString(!0)).searchParams);const l=r==null?void 0:r.get(t);if(l)return e.get(l)}s.getHeadersFromQuery=i;function n(o,r,l){if(!globalThis.crossOriginIsolated)return;const a=r&&l?"3":l?"2":"1";o instanceof URLSearchParams?o.set(t,a):o[t]=a}s.addSearchParam=n})(u8||(u8={}));function Q3(s){return M3(s,0)}function M3(s,e){switch(typeof s){case"object":return s===null?Rf(349,e):Array.isArray(s)?MHe(s,e):wHe(s,e);case"string":return kse(s,e);case"boolean":return QHe(s,e);case"number":return Rf(s,e);case"undefined":return Rf(937,e);default:return Rf(617,e)}}function Rf(s,e){return(e<<5)-e+s|0}function QHe(s,e){return Rf(s?433:863,e)}function kse(s,e){e=Rf(149417,e);for(let t=0,i=s.length;t<i;t++)e=Rf(s.charCodeAt(t),e);return e}function MHe(s,e){return e=Rf(104579,e),s.reduce((t,i)=>M3(i,t),e)}function wHe(s,e){return e=Rf(181387,e),Object.keys(s).sort().reduce((t,i)=>(t=kse(i,t),M3(s[i],t)),e)}function Dj(s,e,t=32){const i=t-e,n=~((1<<i)-1);return(s<<e|(n&s)>>>i)>>>0}function dhe(s,e=0,t=s.byteLength,i=0){for(let n=0;n<t;n++)s[e+n]=i}function THe(s,e,t="0"){for(;s.length<e;)s=t+s;return s}function hw(s,e=32){return s instanceof ArrayBuffer?Array.from(new Uint8Array(s)).map(t=>t.toString(16).padStart(2,"0")).join(""):THe((s>>>0).toString(16),e/4)}const R_=class R_{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(64+3),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(t===0)return;const i=this._buff;let n=this._buffLen,o=this._leftoverHighSurrogate,r,l;for(o!==0?(r=o,l=-1,o=0):(r=e.charCodeAt(0),l=0);;){let a=r;if(Mr(r))if(l+1<t){const d=e.charCodeAt(l+1);UN(d)?(l++,a=Qse(r,d)):a=65533}else{o=r;break}else UN(r)&&(a=65533);if(n=this._push(i,n,a),l++,l<t)r=e.charCodeAt(l);else break}this._buffLen=n,this._leftoverHighSurrogate=o}_push(e,t,i){return i<128?e[t++]=i:i<2048?(e[t++]=192|(i&1984)>>>6,e[t++]=128|(i&63)>>>0):i<65536?(e[t++]=224|(i&61440)>>>12,e[t++]=128|(i&4032)>>>6,e[t++]=128|(i&63)>>>0):(e[t++]=240|(i&1835008)>>>18,e[t++]=128|(i&258048)>>>12,e[t++]=128|(i&4032)>>>6,e[t++]=128|(i&63)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64+0],e[1]=e[64+1],e[2]=e[64+2]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),hw(this._h0)+hw(this._h1)+hw(this._h2)+hw(this._h3)+hw(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,dhe(this._buff,this._buffLen),this._buffLen>56&&(this._step(),dhe(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=R_._bigBlock32,t=this._buffDV;for(let h=0;h<64;h+=4)e.setUint32(h,t.getUint32(h,!1),!1);for(let h=64;h<320;h+=4)e.setUint32(h,Dj(e.getUint32(h-12,!1)^e.getUint32(h-32,!1)^e.getUint32(h-56,!1)^e.getUint32(h-64,!1),1),!1);let i=this._h0,n=this._h1,o=this._h2,r=this._h3,l=this._h4,a,d,c;for(let h=0;h<80;h++)h<20?(a=n&o|~n&r,d=1518500249):h<40?(a=n^o^r,d=1859775393):h<60?(a=n&o|n&r|o&r,d=2400959708):(a=n^o^r,d=3395469782),c=Dj(i,5)+a+l+d+e.getUint32(h*4,!1)&4294967295,l=r,r=o,o=Dj(n,30),n=i,i=c;this._h0=this._h0+i&4294967295,this._h1=this._h1+n&4294967295,this._h2=this._h2+o&4294967295,this._h3=this._h3+r&4294967295,this._h4=this._h4+l&4294967295}};R_._bigBlock32=new DataView(new ArrayBuffer(320));let m8=R_;const{registerWindow:kCt,getWindow:ai,getDocument:xCt,getWindows:iSe,getWindowsCount:CHe,getWindowId:lX,getWindowById:che,hasWindow:ICt,onDidRegisterWindow:w3,onWillUnregisterWindow:BHe,onDidUnregisterWindow:LHe}=function(){const s=new Map;RPe(Us,1);const e={window:Us,disposables:new De};s.set(Us.vscodeWindowId,e);const t=new fe,i=new fe,n=new fe;function o(r,l){return(typeof r=="number"?s.get(r):void 0)??(l?e:void 0)}return{onDidRegisterWindow:t.event,onWillUnregisterWindow:n.event,onDidUnregisterWindow:i.event,registerWindow(r){if(s.has(r.vscodeWindowId))return be.None;const l=new De,a={window:r,disposables:l.add(new De)};return s.set(r.vscodeWindowId,a),l.add(ei(()=>{s.delete(r.vscodeWindowId),i.fire(r)})),l.add(Te(r,ut.BEFORE_UNLOAD,()=>{n.fire(r)})),t.fire(a),l},getWindows(){return s.values()},getWindowsCount(){return s.size},getWindowId(r){return r.vscodeWindowId},hasWindow(r){return s.has(r)},getWindowById:o,getWindow(r){var d;const l=r;if((d=l==null?void 0:l.ownerDocument)!=null&&d.defaultView)return l.ownerDocument.defaultView.window;const a=r;return a!=null&&a.view?a.view.window:Us},getDocument(r){return ai(r).document}}}();function dl(s){for(;s.firstChild;)s.firstChild.remove()}class vHe{constructor(e,t,i,n){this._node=e,this._type=t,this._handler=i,this._options=n||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function Te(s,e,t,i){return new vHe(s,e,t,i)}function nSe(s,e){return function(t){return e(new _u(s,t))}}function kHe(s){return function(e){return s(new Ts(e))}}const Fo=function(e,t,i,n){let o=i;return t==="click"||t==="mousedown"||t==="contextmenu"?o=nSe(ai(e),i):(t==="keydown"||t==="keypress"||t==="keyup")&&(o=kHe(i)),Te(e,t,o,n)},xHe=function(e,t,i){const n=nSe(ai(e),t);return IHe(e,n,i)};function IHe(s,e,t){return Te(s,lp&&Bse.pointerEvents?ut.POINTER_DOWN:ut.MOUSE_DOWN,e,t)}function RT(s,e,t){return jC(s,e,t)}class Gj extends zZe{constructor(e,t){super(e,t)}}let aX,fc;class xse extends vse{constructor(e){super(),this.defaultTarget=e&&ai(e)}cancelAndSet(e,t,i){return super.cancelAndSet(e,t,i??this.defaultTarget)}}class Jj{constructor(e,t=0){this._runner=e,this.priority=t,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(e){wi(e)}}static sort(e,t){return t.priority-e.priority}}(function(){const s=new Map,e=new Map,t=new Map,i=new Map,n=o=>{t.set(o,!1);const r=s.get(o)??[];for(e.set(o,r),s.set(o,[]),i.set(o,!0);r.length>0;)r.sort(Jj.sort),r.shift().execute();i.set(o,!1)};fc=(o,r,l=0)=>{const a=lX(o),d=new Jj(r,l);let c=s.get(a);return c||(c=[],s.set(a,c)),c.push(d),t.get(a)||(t.set(a,!0),o.requestAnimationFrame(()=>n(a))),d},aX=(o,r,l)=>{const a=lX(o);if(i.get(a)){const d=new Jj(r,l);let c=e.get(a);return c||(c=[],e.set(a,c)),c.push(d),d}else return fc(o,r,l)}})();function T3(s){return ai(s).getComputedStyle(s,null)}function Hf(s,e){const t=ai(s),i=t.document;if(s!==i.body)return new ns(s.clientWidth,s.clientHeight);if(lp&&(t!=null&&t.visualViewport))return new ns(t.visualViewport.width,t.visualViewport.height);if(t!=null&&t.innerWidth&&t.innerHeight)return new ns(t.innerWidth,t.innerHeight);if(i.body&&i.body.clientWidth&&i.body.clientHeight)return new ns(i.body.clientWidth,i.body.clientHeight);if(i.documentElement&&i.documentElement.clientWidth&&i.documentElement.clientHeight)return new ns(i.documentElement.clientWidth,i.documentElement.clientHeight);if(e)return Hf(e);throw new Error("Unable to figure out browser width and height")}class Yo{static convertToPixels(e,t){return parseFloat(t)||0}static getDimension(e,t,i){const n=T3(e),o=n?n.getPropertyValue(t):"0";return Yo.convertToPixels(e,o)}static getBorderLeftWidth(e){return Yo.getDimension(e,"border-left-width","borderLeftWidth")}static getBorderRightWidth(e){return Yo.getDimension(e,"border-right-width","borderRightWidth")}static getBorderTopWidth(e){return Yo.getDimension(e,"border-top-width","borderTopWidth")}static getBorderBottomWidth(e){return Yo.getDimension(e,"border-bottom-width","borderBottomWidth")}static getPaddingLeft(e){return Yo.getDimension(e,"padding-left","paddingLeft")}static getPaddingRight(e){return Yo.getDimension(e,"padding-right","paddingRight")}static getPaddingTop(e){return Yo.getDimension(e,"padding-top","paddingTop")}static getPaddingBottom(e){return Yo.getDimension(e,"padding-bottom","paddingBottom")}static getMarginLeft(e){return Yo.getDimension(e,"margin-left","marginLeft")}static getMarginTop(e){return Yo.getDimension(e,"margin-top","marginTop")}static getMarginRight(e){return Yo.getDimension(e,"margin-right","marginRight")}static getMarginBottom(e){return Yo.getDimension(e,"margin-bottom","marginBottom")}}const dS=class dS{constructor(e,t){this.width=e,this.height=t}with(e=this.width,t=this.height){return e!==this.width||t!==this.height?new dS(e,t):this}static is(e){return typeof e=="object"&&typeof e.height=="number"&&typeof e.width=="number"}static lift(e){return e instanceof dS?e:new dS(e.width,e.height)}static equals(e,t){return e===t?!0:!e||!t?!1:e.width===t.width&&e.height===t.height}};dS.None=new dS(0,0);let ns=dS;function sSe(s){let e=s.offsetParent,t=s.offsetTop,i=s.offsetLeft;for(;(s=s.parentNode)!==null&&s!==s.ownerDocument.body&&s!==s.ownerDocument.documentElement;){t-=s.scrollTop;const n=rSe(s)?null:T3(s);n&&(i-=n.direction!=="rtl"?s.scrollLeft:-s.scrollLeft),s===e&&(i+=Yo.getBorderLeftWidth(s),t+=Yo.getBorderTopWidth(s),t+=s.offsetTop,i+=s.offsetLeft,e=s.offsetParent)}return{left:i,top:t}}function EHe(s,e,t){typeof e=="number"&&(s.style.width=`${e}px`),typeof t=="number"&&(s.style.height=`${t}px`)}function Lo(s){const e=s.getBoundingClientRect(),t=ai(s);return{left:e.left+t.scrollX,top:e.top+t.scrollY,width:e.width,height:e.height}}function oSe(s){let e=s,t=1;do{const i=T3(e).zoom;i!=null&&i!=="1"&&(t*=i),e=e.parentElement}while(e!==null&&e!==e.ownerDocument.documentElement);return t}function qd(s){const e=Yo.getMarginLeft(s)+Yo.getMarginRight(s);return s.offsetWidth+e}function Xj(s){const e=Yo.getBorderLeftWidth(s)+Yo.getBorderRightWidth(s),t=Yo.getPaddingLeft(s)+Yo.getPaddingRight(s);return s.offsetWidth-e-t}function DHe(s){const e=Yo.getBorderTopWidth(s)+Yo.getBorderBottomWidth(s),t=Yo.getPaddingTop(s)+Yo.getPaddingBottom(s);return s.offsetHeight-e-t}function Vf(s){const e=Yo.getMarginTop(s)+Yo.getMarginBottom(s);return s.offsetHeight+e}function wr(s,e){return!!(e!=null&&e.contains(s))}function GHe(s,e,t){for(;s&&s.nodeType===s.ELEMENT_NODE;){if(s.classList.contains(e))return s;if(t){if(typeof t=="string"){if(s.classList.contains(t))return null}else if(s===t)return null}s=s.parentNode}return null}function Yj(s,e,t){return!!GHe(s,e,t)}function rSe(s){return s&&!!s.host&&!!s.mode}function dX(s){return!!AN(s)}function AN(s){var e;for(;s.parentNode;){if(s===((e=s.ownerDocument)==null?void 0:e.body))return null;s=s.parentNode}return rSe(s)?s:null}function Ql(){let s=uM().activeElement;for(;s!=null&&s.shadowRoot;)s=s.shadowRoot.activeElement;return s}function C3(s){return Ql()===s}function lSe(s){return wr(Ql(),s)}function uM(){return CHe()<=1?Us.document:Array.from(iSe()).map(({window:e})=>e.document).find(e=>e.hasFocus())??Us.document}function VT(){var e;return((e=uM().defaultView)==null?void 0:e.window)??Us}const Ise=new Map;function aSe(){return new JHe}class JHe{constructor(){this._currentCssStyle="",this._styleSheet=void 0}setStyle(e){e!==this._currentCssStyle&&(this._currentCssStyle=e,this._styleSheet?this._styleSheet.innerText=e:this._styleSheet=sh(Us.document.head,t=>t.innerText=e))}dispose(){this._styleSheet&&(this._styleSheet.remove(),this._styleSheet=void 0)}}function sh(s=Us.document.head,e,t){const i=document.createElement("style");if(i.type="text/css",i.media="screen",e==null||e(i),s.appendChild(i),t&&t.add(ei(()=>i.remove())),s===Us.document.head){const n=new Set;Ise.set(i,n);for(const{window:o,disposables:r}of iSe()){if(o===Us)continue;const l=r.add(XHe(i,n,o));t==null||t.add(l)}}return i}function XHe(s,e,t){var o,r;const i=new De,n=s.cloneNode(!0);t.document.head.appendChild(n),i.add(ei(()=>n.remove()));for(const l of cSe(s))(r=n.sheet)==null||r.insertRule(l.cssText,(o=n.sheet)==null?void 0:o.cssRules.length);return i.add(YHe.observe(s,i,{childList:!0})(()=>{n.textContent=s.textContent})),e.add(n),i.add(ei(()=>e.delete(n))),i}const YHe=new class{constructor(){this.mutationObservers=new Map}observe(s,e,t){let i=this.mutationObservers.get(s);i||(i=new Map,this.mutationObservers.set(s,i));const n=Q3(t);let o=i.get(n);if(o)o.users+=1;else{const r=new fe,l=new MutationObserver(d=>r.fire(d));l.observe(s,t);const a=o={users:1,observer:l,onDidMutate:r.event};e.add(ei(()=>{a.users-=1,a.users===0&&(r.dispose(),l.disconnect(),i==null||i.delete(n),(i==null?void 0:i.size)===0&&this.mutationObservers.delete(s))})),i.set(n,o)}return o.onDidMutate}};let _j=null;function dSe(){return _j||(_j=sh()),_j}function cSe(s){var e,t;return(e=s==null?void 0:s.sheet)!=null&&e.rules?s.sheet.rules:(t=s==null?void 0:s.sheet)!=null&&t.cssRules?s.sheet.cssRules:[]}function cX(s,e,t=dSe()){var i;if(!(!t||!e)){(i=t.sheet)==null||i.insertRule(`${s} {${e}}`,0);for(const n of Ise.get(t)??[])cX(s,e,n)}}function p8(s,e=dSe()){var n;if(!e)return;const t=cSe(e),i=[];for(let o=0;o<t.length;o++){const r=t[o];_He(r)&&r.selectorText.indexOf(s)!==-1&&i.push(o)}for(let o=i.length-1;o>=0;o--)(n=e.sheet)==null||n.deleteRule(i[o]);for(const o of Ise.get(e)??[])p8(s,o)}function _He(s){return typeof s.selectorText=="string"}function Cr(s){return s instanceof HTMLElement||s instanceof ai(s).HTMLElement}function hhe(s){return s instanceof HTMLAnchorElement||s instanceof ai(s).HTMLAnchorElement}function zHe(s){return s instanceof SVGElement||s instanceof ai(s).SVGElement}function Ese(s){return s instanceof MouseEvent||s instanceof ai(s).MouseEvent}function ef(s){return s instanceof KeyboardEvent||s instanceof ai(s).KeyboardEvent}const ut={CLICK:"click",AUXCLICK:"auxclick",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",POINTER_LEAVE:"pointerleave",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",PAGE_SHOW:"pageshow",PAGE_HIDE:"pagehide",PASTE:"paste",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:xS?"webkitAnimationStart":"animationstart",ANIMATION_END:xS?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:xS?"webkitAnimationIteration":"animationiteration"};function OHe(s){const e=s;return!!(e&&typeof e.preventDefault=="function"&&typeof e.stopPropagation=="function")}const Un={stop:(s,e)=>(s.preventDefault(),e&&s.stopPropagation(),s)};function jHe(s){const e=[];for(let t=0;s&&s.nodeType===s.ELEMENT_NODE;t++)e[t]=s.scrollTop,s=s.parentNode;return e}function PHe(s,e){for(let t=0;s&&s.nodeType===s.ELEMENT_NODE;t++)s.scrollTop!==e[t]&&(s.scrollTop=e[t]),s=s.parentNode}class hX extends be{static hasFocusWithin(e){if(Cr(e)){const t=AN(e),i=t?t.activeElement:e.ownerDocument.activeElement;return wr(i,e)}else{const t=e;return wr(t.document.activeElement,t.document)}}constructor(e){super(),this._onDidFocus=this._register(new fe),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new fe),this.onDidBlur=this._onDidBlur.event;let t=hX.hasFocusWithin(e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},o=()=>{t&&(i=!0,(Cr(e)?ai(e):e).setTimeout(()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{hX.hasFocusWithin(e)!==t&&(t?o():n())},this._register(Te(e,ut.FOCUS,n,!0)),this._register(Te(e,ut.BLUR,o,!0)),Cr(e)&&(this._register(Te(e,ut.FOCUS_IN,()=>this._refreshStateHandler())),this._register(Te(e,ut.FOCUS_OUT,()=>this._refreshStateHandler())))}}function ap(s){return new hX(s)}function HHe(s,e){return s.after(e),e}function nt(s,...e){if(s.append(...e),e.length===1&&typeof e[0]!="string")return e[0]}function Dse(s,e){return s.insertBefore(e,s.firstChild),e}function cl(s,...e){s.innerText="",nt(s,...e)}const KHe=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var jB;(function(s){s.HTML="http://www.w3.org/1999/xhtml",s.SVG="http://www.w3.org/2000/svg"})(jB||(jB={}));function hSe(s,e,t,...i){const n=KHe.exec(e);if(!n)throw new Error("Bad use of emmet");const o=n[1]||"div";let r;return s!==jB.HTML?r=document.createElementNS(s,o):r=document.createElement(o),n[3]&&(r.id=n[3]),n[4]&&(r.className=n[4].replace(/\./g," ").trim()),t&&Object.entries(t).forEach(([l,a])=>{typeof a>"u"||(/^on\w+$/.test(l)?r[l]=a:l==="selected"?a&&r.setAttribute(l,"true"):r.setAttribute(l,a))}),r.append(...i),r}function gt(s,e,...t){return hSe(jB.HTML,s,e,...t)}gt.SVG=function(s,e,...t){return hSe(jB.SVG,s,e,...t)};function qHe(s,...e){s?nc(...e):La(...e)}function nc(...s){for(const e of s)e.style.display="",e.removeAttribute("aria-hidden")}function La(...s){for(const e of s)e.style.display="none",e.setAttribute("aria-hidden","true")}function uhe(s,e){const t=s.devicePixelRatio*e;return Math.max(1,Math.floor(t))/s.devicePixelRatio}function uSe(s){Us.open(s,"_blank","noopener")}function $He(s,e){const t=()=>{e(),i=fc(s,t)};let i=fc(s,t);return ei(()=>i.dispose())}tSe.setPreferredWebSchema(/^https:/.test(Us.location.href)?"https":"http");function Kf(s){return s?`url('${y3.uriToBrowserUri(s).toString(!0).replace(/'/g,"%27")}')`:"url('')"}function zj(s){return`'${s.replace(/'/g,"%27")}'`}function kf(s,e){if(s!==void 0){const t=s.match(/^\s*var\((.+)\)$/);if(t){const i=t[1].split(",",2);return i.length===2&&(e=kf(i[1].trim(),e)),`var(${i[0]}, ${e})`}return s}return e}function e4e(s,e=!1){const t=document.createElement("a");return $Ze("afterSanitizeAttributes",i=>{for(const n of["href","src"])if(i.hasAttribute(n)){const o=i.getAttribute(n);if(n==="href"&&o.startsWith("#"))continue;if(t.href=o,!s.includes(t.protocol.replace(/:$/,""))){if(e&&n==="src"&&t.href.startsWith("data:"))continue;i.removeAttribute(n)}}}),ei(()=>{eSe("afterSanitizeAttributes")})}const t4e=Object.freeze(["a","abbr","b","bdo","blockquote","br","caption","cite","code","col","colgroup","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","h1","h2","h3","h4","h5","h6","hr","i","img","input","ins","kbd","label","li","mark","ol","p","pre","q","rp","rt","ruby","samp","small","small","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","time","tr","tt","u","ul","var","video","wbr"]);class Wf extends fe{constructor(){super(),this._subscriptions=new De,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(Ut.runAndSubscribe(w3,({window:e,disposables:t})=>this.registerListeners(e,t),{window:Us,disposables:this._subscriptions}))}registerListeners(e,t){t.add(Te(e,"keydown",i=>{if(i.defaultPrevented)return;const n=new Ts(i);if(!(n.keyCode===6&&i.repeat)){if(i.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(i.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(i.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(i.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else if(n.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=i.altKey,this._keyStatus.ctrlKey=i.ctrlKey,this._keyStatus.metaKey=i.metaKey,this._keyStatus.shiftKey=i.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=i,this.fire(this._keyStatus))}},!0)),t.add(Te(e,"keyup",i=>{i.defaultPrevented||(!i.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!i.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!i.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!i.shiftKey&&this._keyStatus.shiftKey?this._keyStatus.lastKeyReleased="shift":this._keyStatus.lastKeyReleased=void 0,this._keyStatus.lastKeyPressed!==this._keyStatus.lastKeyReleased&&(this._keyStatus.lastKeyPressed=void 0),this._keyStatus.altKey=i.altKey,this._keyStatus.ctrlKey=i.ctrlKey,this._keyStatus.metaKey=i.metaKey,this._keyStatus.shiftKey=i.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=i,this.fire(this._keyStatus)))},!0)),t.add(Te(e.document.body,"mousedown",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),t.add(Te(e.document.body,"mouseup",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),t.add(Te(e.document.body,"mousemove",i=>{i.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),t.add(Te(e,"blur",()=>{this.resetKeyStatus()}))}get keyStatus(){return this._keyStatus}resetKeyStatus(){this.doResetKeyStatus(),this.fire(this._keyStatus)}doResetKeyStatus(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}static getInstance(){return Wf.instance||(Wf.instance=new Wf),Wf.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}class i4e extends be{constructor(e,t){super(),this.element=e,this.callbacks=t,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this.callbacks.onDragStart&&this._register(Te(this.element,ut.DRAG_START,e=>{var t,i;(i=(t=this.callbacks).onDragStart)==null||i.call(t,e)})),this.callbacks.onDrag&&this._register(Te(this.element,ut.DRAG,e=>{var t,i;(i=(t=this.callbacks).onDrag)==null||i.call(t,e)})),this._register(Te(this.element,ut.DRAG_ENTER,e=>{var t,i;this.counter++,this.dragStartTime=e.timeStamp,(i=(t=this.callbacks).onDragEnter)==null||i.call(t,e)})),this._register(Te(this.element,ut.DRAG_OVER,e=>{var t,i;e.preventDefault(),(i=(t=this.callbacks).onDragOver)==null||i.call(t,e,e.timeStamp-this.dragStartTime)})),this._register(Te(this.element,ut.DRAG_LEAVE,e=>{var t,i;this.counter--,this.counter===0&&(this.dragStartTime=0,(i=(t=this.callbacks).onDragLeave)==null||i.call(t,e))})),this._register(Te(this.element,ut.DRAG_END,e=>{var t,i;this.counter=0,this.dragStartTime=0,(i=(t=this.callbacks).onDragEnd)==null||i.call(t,e)})),this._register(Te(this.element,ut.DROP,e=>{var t,i;this.counter=0,this.dragStartTime=0,(i=(t=this.callbacks).onDrop)==null||i.call(t,e)}))}}const mSe=/(?<tag>[\w\-]+)?(?:#(?<id>[\w\-]+))?(?<class>(?:\.(?:[\w\-]+))*)(?:@(?<name>(?:[\w\_])+))?/;function an(s,...e){let t,i;Array.isArray(e[0])?(t={},i=e[0]):(t=e[0]||{},i=e[1]);const n=mSe.exec(s);if(!n||!n.groups)throw new Error("Bad use of h");const o=n.groups.tag||"div",r=document.createElement(o);n.groups.id&&(r.id=n.groups.id);const l=[];if(n.groups.class)for(const d of n.groups.class.split("."))d!==""&&l.push(d);if(t.className!==void 0)for(const d of t.className.split("."))d!==""&&l.push(d);l.length>0&&(r.className=l.join(" "));const a={};if(n.groups.name&&(a[n.groups.name]=r),i)for(const d of i)Cr(d)?r.appendChild(d):typeof d=="string"?r.append(d):"root"in d&&(Object.assign(a,d),r.appendChild(d.root));for(const[d,c]of Object.entries(t))if(d!=="className")if(d==="style")for(const[h,u]of Object.entries(c))r.style.setProperty(uX(h),typeof u=="number"?u+"px":""+u);else d==="tabIndex"?r.tabIndex=c:r.setAttribute(uX(d),c.toString());return a.root=r,a}function vR(s,...e){let t,i;Array.isArray(e[0])?(t={},i=e[0]):(t=e[0]||{},i=e[1]);const n=mSe.exec(s);if(!n||!n.groups)throw new Error("Bad use of h");const o=n.groups.tag||"div",r=document.createElementNS("http://www.w3.org/2000/svg",o);n.groups.id&&(r.id=n.groups.id);const l=[];if(n.groups.class)for(const d of n.groups.class.split("."))d!==""&&l.push(d);if(t.className!==void 0)for(const d of t.className.split("."))d!==""&&l.push(d);l.length>0&&(r.className=l.join(" "));const a={};if(n.groups.name&&(a[n.groups.name]=r),i)for(const d of i)Cr(d)?r.appendChild(d):typeof d=="string"?r.append(d):"root"in d&&(Object.assign(a,d),r.appendChild(d.root));for(const[d,c]of Object.entries(t))if(d!=="className")if(d==="style")for(const[h,u]of Object.entries(c))r.style.setProperty(uX(h),typeof u=="number"?u+"px":""+u);else d==="tabIndex"?r.tabIndex=c:r.setAttribute(uX(d),c.toString());return a.root=r,a}function uX(s){return s.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}class n4e extends be{constructor(e){super(),this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(e,!0),this._mediaQueryList=null,this._handleChange(e,!1)}_handleChange(e,t){var i;(i=this._mediaQueryList)==null||i.removeEventListener("change",this._listener),this._mediaQueryList=e.matchMedia(`(resolution: ${e.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),t&&this._onDidChange.fire()}}class s4e extends be{get value(){return this._value}constructor(e){super(),this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio(e);const t=this._register(new n4e(e));this._register(t.onDidChange(()=>{this._value=this._getPixelRatio(e),this._onDidChange.fire(this._value)}))}_getPixelRatio(e){const t=document.createElement("canvas").getContext("2d"),i=e.devicePixelRatio||1,n=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return i/n}}class o4e{constructor(){this.mapWindowIdToPixelRatioMonitor=new Map}_getOrCreatePixelRatioMonitor(e){const t=lX(e);let i=this.mapWindowIdToPixelRatioMonitor.get(t);return i||(i=new s4e(e),this.mapWindowIdToPixelRatioMonitor.set(t,i),Ut.once(LHe)(({vscodeWindowId:n})=>{n===t&&(i==null||i.dispose(),this.mapWindowIdToPixelRatioMonitor.delete(t))})),i}getInstance(e){return this._getOrCreatePixelRatioMonitor(e)}}const PB=new o4e;class pSe{constructor(e){this.domNode=e,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingLeft="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(e){const t=bm(e);this._maxWidth!==t&&(this._maxWidth=t,this.domNode.style.maxWidth=this._maxWidth)}setWidth(e){const t=bm(e);this._width!==t&&(this._width=t,this.domNode.style.width=this._width)}setHeight(e){const t=bm(e);this._height!==t&&(this._height=t,this.domNode.style.height=this._height)}setTop(e){const t=bm(e);this._top!==t&&(this._top=t,this.domNode.style.top=this._top)}setLeft(e){const t=bm(e);this._left!==t&&(this._left=t,this.domNode.style.left=this._left)}setBottom(e){const t=bm(e);this._bottom!==t&&(this._bottom=t,this.domNode.style.bottom=this._bottom)}setRight(e){const t=bm(e);this._right!==t&&(this._right=t,this.domNode.style.right=this._right)}setPaddingLeft(e){const t=bm(e);this._paddingLeft!==t&&(this._paddingLeft=t,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(e){const t=bm(e);this._fontSize!==t&&(this._fontSize=t,this.domNode.style.fontSize=this._fontSize)}setFontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(e){this._fontFeatureSettings!==e&&(this._fontFeatureSettings=e,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(e){this._fontVariationSettings!==e&&(this._fontVariationSettings=e,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(e){this._textDecoration!==e&&(this._textDecoration=e,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(e){const t=bm(e);this._lineHeight!==t&&(this._lineHeight=t,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(e){const t=bm(e);this._letterSpacing!==t&&(this._letterSpacing=t,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(e){this._className!==e&&(this._className=e,this.domNode.className=this._className)}toggleClassName(e,t){this.domNode.classList.toggle(e,t),this._className=this.domNode.className}setDisplay(e){this._display!==e&&(this._display=e,this.domNode.style.display=this._display)}setPosition(e){this._position!==e&&(this._position=e,this.domNode.style.position=this._position)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this.domNode.style.visibility=this._visibility)}setColor(e){this._color!==e&&(this._color=e,this.domNode.style.color=this._color)}setBackgroundColor(e){this._backgroundColor!==e&&(this._backgroundColor=e,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(e){this._layerHint!==e&&(this._layerHint=e,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(e){this._boxShadow!==e&&(this._boxShadow=e,this.domNode.style.boxShadow=e)}setContain(e){this._contain!==e&&(this._contain=e,this.domNode.style.contain=this._contain)}setAttribute(e,t){this.domNode.setAttribute(e,t)}removeAttribute(e){this.domNode.removeAttribute(e)}appendChild(e){this.domNode.appendChild(e.domNode)}removeChild(e){this.domNode.removeChild(e.domNode)}}function bm(s){return typeof s=="number"?`${s}px`:s}function Kn(s){return new pSe(s)}function hl(s,e){s instanceof pSe?(s.setFontFamily(e.getMassagedFontFamily()),s.setFontWeight(e.fontWeight),s.setFontSize(e.fontSize),s.setFontFeatureSettings(e.fontFeatureSettings),s.setFontVariationSettings(e.fontVariationSettings),s.setLineHeight(e.lineHeight),s.setLetterSpacing(e.letterSpacing)):(s.style.fontFamily=e.getMassagedFontFamily(),s.style.fontWeight=e.fontWeight,s.style.fontSize=e.fontSize+"px",s.style.fontFeatureSettings=e.fontFeatureSettings,s.style.fontVariationSettings=e.fontVariationSettings,s.style.lineHeight=e.lineHeight+"px",s.style.letterSpacing=e.letterSpacing+"px")}class r4e{constructor(e,t){this.chr=e,this.type=t,this.width=0}fulfill(e){this.width=e}}class Gse{constructor(e,t){this._bareFontInfo=e,this._requests=t,this._container=null,this._testElements=null}read(e){var t;this._createDomElements(),e.document.body.appendChild(this._container),this._readFromDomElements(),(t=this._container)==null||t.remove(),this._container=null,this._testElements=null}_createDomElements(){const e=document.createElement("div");e.style.position="absolute",e.style.top="-50000px",e.style.width="50000px";const t=document.createElement("div");hl(t,this._bareFontInfo),e.appendChild(t);const i=document.createElement("div");hl(i,this._bareFontInfo),i.style.fontWeight="bold",e.appendChild(i);const n=document.createElement("div");hl(n,this._bareFontInfo),n.style.fontStyle="italic",e.appendChild(n);const o=[];for(const r of this._requests){let l;r.type===0&&(l=t),r.type===2&&(l=i),r.type===1&&(l=n),l.appendChild(document.createElement("br"));const a=document.createElement("span");Gse._render(a,r),l.appendChild(a),o.push(a)}this._container=e,this._testElements=o}static _render(e,t){if(t.chr===" "){let i=" ";for(let n=0;n<8;n++)i+=i;e.innerText=i}else{let i=t.chr;for(let n=0;n<8;n++)i+=i;e.textContent=i}}_readFromDomElements(){for(let e=0,t=this._requests.length;e<t;e++){const i=this._requests[e],n=this._testElements[e];i.fulfill(n.offsetWidth/256)}}}function l4e(s,e,t){new Gse(e,t).read(s)}const kh=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new fe,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(s){s=Math.min(Math.max(-5,s),20),this._zoomLevel!==s&&(this._zoomLevel=s,this._onDidChangeZoomLevel.fire(this._zoomLevel))}},a4e=hn?1.5:1.35,Oj=8;class IS{static createFromValidatedSettings(e,t,i){const n=e.get(49),o=e.get(53),r=e.get(52),l=e.get(51),a=e.get(54),d=e.get(67),c=e.get(64);return IS._create(n,o,r,l,a,d,c,t,i)}static _create(e,t,i,n,o,r,l,a,d){r===0?r=a4e*i:r<Oj&&(r=r*i),r=Math.round(r),r<Oj&&(r=Oj);const c=1+(d?0:kh.getZoomLevel()*.1);return i*=c,r*=c,o===GB.TRANSLATE&&(t==="normal"||t==="bold"?o=GB.OFF:(o=`'wght' ${parseInt(t,10)}`,t="normal")),new IS({pixelRatio:a,fontFamily:e,fontWeight:t,fontSize:i,fontFeatureSettings:n,fontVariationSettings:o,lineHeight:r,letterSpacing:l})}constructor(e){this._bareFontInfoBrand=void 0,this.pixelRatio=e.pixelRatio,this.fontFamily=String(e.fontFamily),this.fontWeight=String(e.fontWeight),this.fontSize=e.fontSize,this.fontFeatureSettings=e.fontFeatureSettings,this.fontVariationSettings=e.fontVariationSettings,this.lineHeight=e.lineHeight|0,this.letterSpacing=e.letterSpacing}getId(){return`${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`}getMassagedFontFamily(){const e=Xa.fontFamily,t=IS._wrapInQuotes(this.fontFamily);return e&&this.fontFamily!==e?`${t}, ${e}`:t}static _wrapInQuotes(e){return/[,"']/.test(e)?e:/[+ ]/.test(e)?`"${e}"`:e}}const d4e=2;class g8 extends IS{constructor(e,t){super(e),this._editorStylingBrand=void 0,this.version=d4e,this.isTrusted=t,this.isMonospace=e.isMonospace,this.typicalHalfwidthCharacterWidth=e.typicalHalfwidthCharacterWidth,this.typicalFullwidthCharacterWidth=e.typicalFullwidthCharacterWidth,this.canUseHalfwidthRightwardsArrow=e.canUseHalfwidthRightwardsArrow,this.spaceWidth=e.spaceWidth,this.middotWidth=e.middotWidth,this.wsmiddotWidth=e.wsmiddotWidth,this.maxDigitWidth=e.maxDigitWidth}equals(e){return this.fontFamily===e.fontFamily&&this.fontWeight===e.fontWeight&&this.fontSize===e.fontSize&&this.fontFeatureSettings===e.fontFeatureSettings&&this.fontVariationSettings===e.fontVariationSettings&&this.lineHeight===e.lineHeight&&this.letterSpacing===e.letterSpacing&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.typicalFullwidthCharacterWidth===e.typicalFullwidthCharacterWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.maxDigitWidth===e.maxDigitWidth}}class c4e extends be{constructor(){super(...arguments),this._cache=new Map,this._evictUntrustedReadingsTimeout=-1,this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event}dispose(){this._evictUntrustedReadingsTimeout!==-1&&(clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),super.dispose()}clearAllFontInfos(){this._cache.clear(),this._onDidChange.fire()}_ensureCache(e){const t=lX(e);let i=this._cache.get(t);return i||(i=new h4e,this._cache.set(t,i)),i}_writeToCache(e,t,i){this._ensureCache(e).put(t,i),!i.isTrusted&&this._evictUntrustedReadingsTimeout===-1&&(this._evictUntrustedReadingsTimeout=e.setTimeout(()=>{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings(e)},5e3))}_evictUntrustedReadings(e){const t=this._ensureCache(e),i=t.getValues();let n=!1;for(const o of i)o.isTrusted||(n=!0,t.remove(o));n&&this._onDidChange.fire()}readFontInfo(e,t){const i=this._ensureCache(e);if(!i.has(t)){let n=this._actualReadFontInfo(e,t);(n.typicalHalfwidthCharacterWidth<=2||n.typicalFullwidthCharacterWidth<=2||n.spaceWidth<=2||n.maxDigitWidth<=2)&&(n=new g8({pixelRatio:PB.getInstance(e).value,fontFamily:n.fontFamily,fontWeight:n.fontWeight,fontSize:n.fontSize,fontFeatureSettings:n.fontFeatureSettings,fontVariationSettings:n.fontVariationSettings,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,isMonospace:n.isMonospace,typicalHalfwidthCharacterWidth:Math.max(n.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(n.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:n.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(n.spaceWidth,5),middotWidth:Math.max(n.middotWidth,5),wsmiddotWidth:Math.max(n.wsmiddotWidth,5),maxDigitWidth:Math.max(n.maxDigitWidth,5)},!1)),this._writeToCache(e,t,n)}return i.get(t)}_createRequest(e,t,i,n){const o=new r4e(e,t);return i.push(o),n==null||n.push(o),o}_actualReadFontInfo(e,t){const i=[],n=[],o=this._createRequest("n",0,i,n),r=this._createRequest("m",0,i,null),l=this._createRequest(" ",0,i,n),a=this._createRequest("0",0,i,n),d=this._createRequest("1",0,i,n),c=this._createRequest("2",0,i,n),h=this._createRequest("3",0,i,n),u=this._createRequest("4",0,i,n),m=this._createRequest("5",0,i,n),p=this._createRequest("6",0,i,n),g=this._createRequest("7",0,i,n),f=this._createRequest("8",0,i,n),b=this._createRequest("9",0,i,n),U=this._createRequest("→",0,i,n),S=this._createRequest("→",0,i,null),Z=this._createRequest("·",0,i,n),R=this._createRequest(String.fromCharCode(11825),0,i,null),y="|/-_ilm%";for(let v=0,Y=y.length;v<Y;v++)this._createRequest(y.charAt(v),0,i,n),this._createRequest(y.charAt(v),1,i,n),this._createRequest(y.charAt(v),2,i,n);l4e(e,t,i);const N=Math.max(a.width,d.width,c.width,h.width,u.width,m.width,p.width,g.width,f.width,b.width);let w=t.fontFeatureSettings===TF.OFF;const Q=n[0].width;for(let v=1,Y=n.length;w&&v<Y;v++){const J=Q-n[v].width;if(J<-.001||J>.001){w=!1;break}}let C=!0;return w&&S.width!==Q&&(C=!1),S.width>U.width&&(C=!1),new g8({pixelRatio:PB.getInstance(e).value,fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,fontVariationSettings:t.fontVariationSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:w,typicalHalfwidthCharacterWidth:o.width,typicalFullwidthCharacterWidth:r.width,canUseHalfwidthRightwardsArrow:C,spaceWidth:l.width,middotWidth:Z.width,wsmiddotWidth:R.width,maxDigitWidth:N},!0)}}class h4e{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(e){const t=e.getId();return!!this._values[t]}get(e){const t=e.getId();return this._values[t]}put(e,t){const i=e.getId();this._keys[i]=e,this._values[i]=t}remove(e){const t=e.getId();delete this._keys[t],delete this._values[t]}getValues(){return Object.keys(this._keys).map(e=>this._values[e])}}const f8=new c4e;var Pm;(function(s){s.serviceIds=new Map,s.DI_TARGET="$di$target",s.DI_DEPENDENCIES="$di$dependencies";function e(t){return t[s.DI_DEPENDENCIES]||[]}s.getServiceDependencies=e})(Pm||(Pm={}));const ti=un("instantiationService");function u4e(s,e,t){e[Pm.DI_TARGET]===e?e[Pm.DI_DEPENDENCIES].push({id:s,index:t}):(e[Pm.DI_DEPENDENCIES]=[{id:s,index:t}],e[Pm.DI_TARGET]=e)}function un(s){if(Pm.serviceIds.has(s))return Pm.serviceIds.get(s);const e=function(t,i,n){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");u4e(e,t,n)};return e.toString=()=>s,Pm.serviceIds.set(s,e),e}const kn=un("codeEditorService"),zs=un("modelService"),Td=un("textModelService");class ac extends be{constructor(e,t="",i="",n=!0,o){super(),this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._id=e,this._label=t,this._cssClass=i,this._enabled=n,this._actionCallback=o}get id(){return this._id}get label(){return this._label}set label(e){this._setLabel(e)}_setLabel(e){this._label!==e&&(this._label=e,this._onDidChange.fire({label:e}))}get tooltip(){return this._tooltip||""}set tooltip(e){this._setTooltip(e)}_setTooltip(e){this._tooltip!==e&&(this._tooltip=e,this._onDidChange.fire({tooltip:e}))}get class(){return this._cssClass}set class(e){this._setClass(e)}_setClass(e){this._cssClass!==e&&(this._cssClass=e,this._onDidChange.fire({class:e}))}get enabled(){return this._enabled}set enabled(e){this._setEnabled(e)}_setEnabled(e){this._enabled!==e&&(this._enabled=e,this._onDidChange.fire({enabled:e}))}get checked(){return this._checked}set checked(e){this._setChecked(e)}_setChecked(e){this._checked!==e&&(this._checked=e,this._onDidChange.fire({checked:e}))}async run(e,t){this._actionCallback&&await this._actionCallback(e)}}class ZN extends be{constructor(){super(...arguments),this._onWillRun=this._register(new fe),this.onWillRun=this._onWillRun.event,this._onDidRun=this._register(new fe),this.onDidRun=this._onDidRun.event}async run(e,t){if(!e.enabled)return;this._onWillRun.fire({action:e});let i;try{await this.runAction(e,t)}catch(n){i=n}this._onDidRun.fire({action:e,error:i})}async runAction(e,t){await e.run(t)}}const pB=class pB{constructor(){this.id=pB.ID,this.label="",this.tooltip="",this.class="separator",this.enabled=!1,this.checked=!1}static join(...e){let t=[];for(const i of e)i.length&&(t.length?t=[...t,new pB,...i]:t=i);return t}async run(){}};pB.ID="vs.actions.separator";let Br=pB;class Ry{get actions(){return this._actions}constructor(e,t,i,n){this.tooltip="",this.enabled=!0,this.checked=void 0,this.id=e,this.label=t,this.class=n,this._actions=i}async run(){}}const V_=class V_ extends ac{constructor(){super(V_.ID,F("submenu.empty","(empty)"),void 0,!1)}};V_.ID="vs.actions.empty";let b8=V_;function ES(s){return{id:s.id,label:s.label,tooltip:s.tooltip??s.label,class:s.class,enabled:s.enabled??!0,checked:s.checked,run:async(...e)=>s.run(...e)}}var U8;(function(s){function e(t){return t&&typeof t=="object"&&typeof t.id=="string"}s.isThemeColor=e})(U8||(U8={}));var ui;(function(s){s.iconNameSegment="[A-Za-z0-9]+",s.iconNameExpression="[A-Za-z0-9-]+",s.iconModifierExpression="~[A-Za-z]+",s.iconNameCharacter="[A-Za-z0-9~-]";const e=new RegExp(`^(${s.iconNameExpression})(${s.iconModifierExpression})?$`);function t(u){const m=e.exec(u.id);if(!m)return t(ct.error);const[,p,g]=m,f=["codicon","codicon-"+p];return g&&f.push("codicon-modifier-"+g.substring(1)),f}s.asClassNameArray=t;function i(u){return t(u).join(" ")}s.asClassName=i;function n(u){return"."+t(u).join(".")}s.asCSSSelector=n;function o(u){return u&&typeof u=="object"&&typeof u.id=="string"&&(typeof u.color>"u"||U8.isThemeColor(u.color))}s.isThemeIcon=o;const r=new RegExp(`^\\$\\((${s.iconNameExpression}(?:${s.iconModifierExpression})?)\\)$`);function l(u){const m=r.exec(u);if(!m)return;const[,p]=m;return{id:p}}s.fromString=l;function a(u){return{id:u}}s.fromId=a;function d(u,m){let p=u.id;const g=p.lastIndexOf("~");return g!==-1&&(p=p.substring(0,g)),m&&(p=`${p}~${m}`),{id:p}}s.modify=d;function c(u){const m=u.id.lastIndexOf("~");if(m!==-1)return u.id.substring(m+1)}s.getModifier=c;function h(u,m){var p,g;return u.id===m.id&&((p=u.color)==null?void 0:p.id)===((g=m.color)==null?void 0:g.id)}s.isEqual=h})(ui||(ui={}));const ks=un("commandService"),Sn=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new fe,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(s,e){if(!s)throw new Error("invalid command");if(typeof s=="string"){if(!e)throw new Error("invalid command");return this.registerCommand({id:s,handler:e})}if(s.metadata&&Array.isArray(s.metadata.args)){const r=[];for(const a of s.metadata.args)r.push(a.constraint);const l=s.handler;s.handler=function(a,...d){return ROe(d,r),l(a,...d)}}const{id:t}=s;let i=this._commands.get(t);i||(i=new Ia,this._commands.set(t,i));const n=i.unshift(s),o=ei(()=>{n();const r=this._commands.get(t);r!=null&&r.isEmpty()&&this._commands.delete(t)});return this._onDidRegisterCommand.fire(t),o}registerCommandAlias(s,e){return Sn.registerCommand(s,(t,...i)=>t.get(ks).executeCommand(e,...i))}getCommand(s){const e=this._commands.get(s);if(!(!e||e.isEmpty()))return Zn.first(e)}getCommands(){const s=new Map;for(const e of this._commands.keys()){const t=this.getCommand(e);t&&s.set(e,t)}return s}};Sn.registerCommand("noop",()=>{});function jj(...s){switch(s.length){case 1:return F("contextkey.scanner.hint.didYouMean1","Did you mean {0}?",s[0]);case 2:return F("contextkey.scanner.hint.didYouMean2","Did you mean {0} or {1}?",s[0],s[1]);case 3:return F("contextkey.scanner.hint.didYouMean3","Did you mean {0}, {1} or {2}?",s[0],s[1],s[2]);default:return}}const m4e=F("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote","Did you forget to open or close the quote?"),p4e=F("contextkey.scanner.hint.didYouForgetToEscapeSlash","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'.");var hF;let uw=(hF=class{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return e.lexeme;case 18:return e.lexeme;case 19:return e.lexeme;case 20:return"EOF";default:throw Ase(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const t=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:t})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const t=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:t})}else this._match(126)?this._addToken(9):this._error(jj("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(jj("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(jj("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return this._isAtEnd()||this._input.charCodeAt(this._current)!==e?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){const t=this._start,i=this._input.substring(this._start,this._current),n={type:19,offset:this._start,lexeme:i};this._errors.push({offset:t,lexeme:i,additionalInfo:e}),this._tokens.push(n)}_string(){this.stringRe.lastIndex=this._start;const e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;const t=this._input.substring(this._start,this._current),i=hF._keywords.get(t);i?this._addToken(i):this._tokens.push({type:17,lexeme:t,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(m4e);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let e=this._current,t=!1,i=!1;for(;;){if(e>=this._input.length){this._current=e,this._error(p4e);return}const o=this._input.charCodeAt(e);if(t)t=!1;else if(o===47&&!i){e++;break}else o===91?i=!0:o===92?t=!0:o===93&&(i=!1);e++}for(;e<this._input.length&&hF._regexFlags.has(this._input.charCodeAt(e));)e++;this._current=e;const n=this._input.substring(this._start,this._current);this._tokens.push({type:10,lexeme:n,offset:this._start})}_isAtEnd(){return this._current>=this._input.length}},hF._regexFlags=new Set(["i","g","s","m","y","u"].map(e=>e.charCodeAt(0))),hF._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]),hF);const Pl=new Map;Pl.set("false",!1);Pl.set("true",!0);Pl.set("isMac",hn);Pl.set("isLinux",_a);Pl.set("isWindows",Tl);Pl.set("isWeb",jN);Pl.set("isMacNative",hn&&!jN);Pl.set("isEdge",EOe);Pl.set("isFirefox",xOe);Pl.set("isChrome",uZe);Pl.set("isSafari",IOe);const g4e=Object.prototype.hasOwnProperty,f4e={regexParsingWithErrorRecovery:!0},b4e=F("contextkey.parser.error.emptyString","Empty context key expression"),U4e=F("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),F4e=F("contextkey.parser.error.noInAfterNot","'in' after 'not'."),mhe=F("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),A4e=F("contextkey.parser.error.unexpectedToken","Unexpected token"),Z4e=F("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),S4e=F("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),N4e=F("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?");var Ff;let R4e=(Ff=class{constructor(e=f4e){this._config=e,this._scanner=new uw,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(e){if(e===""){this._parsingErrors.push({message:b4e,offset:0,lexeme:"",additionalInfo:U4e});return}this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{const t=this._expr();if(!this._isAtEnd()){const i=this._peek(),n=i.type===17?Z4e:void 0;throw this._parsingErrors.push({message:A4e,offset:i.offset,lexeme:uw.getLexeme(i),additionalInfo:n}),Ff._parseError}return t}catch(t){if(t!==Ff._parseError)throw t;return}}_expr(){return this._or()}_or(){const e=[this._and()];for(;this._matchOne(16);){const t=this._and();e.push(t)}return e.length===1?e[0]:Ge.or(...e)}_and(){const e=[this._term()];for(;this._matchOne(15);){const t=this._term();e.push(t)}return e.length===1?e[0]:Ge.and(...e)}_term(){if(this._matchOne(2)){const e=this._peek();switch(e.type){case 11:return this._advance(),za.INSTANCE;case 12:return this._advance(),yd.INSTANCE;case 0:{this._advance();const t=this._expr();return this._consume(1,mhe),t==null?void 0:t.negate()}case 17:return this._advance(),HN.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){const e=this._peek();switch(e.type){case 11:return this._advance(),Ge.true();case 12:return this._advance(),Ge.false();case 0:{this._advance();const t=this._expr();return this._consume(1,mhe),t}case 17:{const t=e.lexeme;if(this._advance(),this._matchOne(9)){const n=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),n.type!==10)throw this._errExpectedButGot("REGEX",n);const o=n.lexeme,r=o.lastIndexOf("/"),l=r===o.length-1?void 0:this._removeFlagsGY(o.substring(r+1));let a;try{a=new RegExp(o.substring(1,r),l)}catch{throw this._errExpectedButGot("REGEX",n)}return HB.create(t,a)}switch(n.type){case 10:case 19:{const o=[n.lexeme];this._advance();let r=this._peek(),l=0;for(let u=0;u<n.lexeme.length;u++)n.lexeme.charCodeAt(u)===40?l++:n.lexeme.charCodeAt(u)===41&&l--;for(;!this._isAtEnd()&&r.type!==15&&r.type!==16;){switch(r.type){case 0:l++;break;case 1:l--;break;case 10:case 18:for(let u=0;u<r.lexeme.length;u++)r.lexeme.charCodeAt(u)===40?l++:n.lexeme.charCodeAt(u)===41&&l--}if(l<0)break;o.push(uw.getLexeme(r)),this._advance(),r=this._peek()}const a=o.join(""),d=a.lastIndexOf("/"),c=d===a.length-1?void 0:this._removeFlagsGY(a.substring(d+1));let h;try{h=new RegExp(a.substring(1,d),c)}catch{throw this._errExpectedButGot("REGEX",n)}return Ge.regex(t,h)}case 18:{const o=n.lexeme;this._advance();let r=null;if(!BZe(o)){const l=o.indexOf("/"),a=o.lastIndexOf("/");if(l!==a&&l>=0){const d=o.slice(l+1,a),c=o[a+1]==="i"?"i":"";try{r=new RegExp(d,c)}catch{throw this._errExpectedButGot("REGEX",n)}}}if(r===null)throw this._errExpectedButGot("REGEX",n);return HB.create(t,r)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,F4e);const n=this._value();return Ge.notIn(t,n)}switch(this._peek().type){case 3:{this._advance();const n=this._value();if(this._previous().type===18)return Ge.equals(t,n);switch(n){case"true":return Ge.has(t);case"false":return Ge.not(t);default:return Ge.equals(t,n)}}case 4:{this._advance();const n=this._value();if(this._previous().type===18)return Ge.notEquals(t,n);switch(n){case"true":return Ge.not(t);case"false":return Ge.has(t);default:return Ge.notEquals(t,n)}}case 5:return this._advance(),E3.create(t,this._value());case 6:return this._advance(),D3.create(t,this._value());case 7:return this._advance(),x3.create(t,this._value());case 8:return this._advance(),I3.create(t,this._value());case 13:return this._advance(),Ge.in(t,this._value());default:return Ge.has(t)}}case 20:throw this._parsingErrors.push({message:S4e,offset:e.offset,lexeme:"",additionalInfo:N4e}),Ff._parseError;default:throw this._errExpectedButGot(`true | false | KEY
- | KEY '=~' REGEX
- | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){const e=this._peek();switch(e.type){case 17:case 18:return this._advance(),e.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(e){return e.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(e){return this._check(e)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(e,t){if(this._check(e))return this._advance();throw this._errExpectedButGot(t,this._peek())}_errExpectedButGot(e,t,i){const n=F("contextkey.parser.error.expectedButGot",`Expected: {0}
- Received: '{1}'.`,e,uw.getLexeme(t)),o=t.offset,r=uw.getLexeme(t);return this._parsingErrors.push({message:n,offset:o,lexeme:r,additionalInfo:i}),Ff._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}},Ff._parseError=new Error,Ff);const hae=class hae{static false(){return za.INSTANCE}static true(){return yd.INSTANCE}static has(e){return PN.create(e)}static equals(e,t){return mM.create(e,t)}static notEquals(e,t){return v3.create(e,t)}static regex(e,t){return HB.create(e,t)}static in(e,t){return B3.create(e,t)}static notIn(e,t){return L3.create(e,t)}static not(e){return HN.create(e)}static and(...e){return US.create(e,null,!0)}static or(...e){return cf.create(e,null,!0)}static deserialize(e){return e==null?void 0:this._parser.parse(e)}};hae._parser=new R4e({regexParsingWithErrorRecovery:!1});let Ge=hae;function V4e(s,e){const t=s?s.substituteConstants():void 0,i=e?e.substituteConstants():void 0;return!t&&!i?!0:!t||!i?!1:t.equals(i)}function PC(s,e){return s.cmp(e)}const W_=class W_{constructor(){this.type=0}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}negate(){return yd.INSTANCE}};W_.INSTANCE=new W_;let za=W_;const y_=class y_{constructor(){this.type=1}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}negate(){return za.INSTANCE}};y_.INSTANCE=new y_;let yd=y_;class PN{static create(e,t=null){const i=Pl.get(e);return typeof i=="boolean"?i?yd.INSTANCE:za.INSTANCE:new PN(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=2}cmp(e){return e.type!==this.type?this.type-e.type:fSe(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){const e=Pl.get(this.key);return typeof e=="boolean"?e?yd.INSTANCE:za.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=HN.create(this.key,this)),this.negated}}class mM{static create(e,t,i=null){if(typeof t=="boolean")return t?PN.create(e,i):HN.create(e,i);const n=Pl.get(e);return typeof n=="boolean"?t===(n?"true":"false")?yd.INSTANCE:za.INSTANCE:new mM(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=4}cmp(e){return e.type!==this.type?this.type-e.type:KN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){const e=Pl.get(this.key);if(typeof e=="boolean"){const t=e?"true":"false";return this.value===t?yd.INSTANCE:za.INSTANCE}return this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=v3.create(this.key,this.value,this)),this.negated}}class B3{static create(e,t){return new B3(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=10,this.negated=null}cmp(e){return e.type!==this.type?this.type-e.type:KN(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type?this.key===e.key&&this.valueKey===e.valueKey:!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.valueKey),i=e.getValue(this.key);return Array.isArray(t)?t.includes(i):typeof i=="string"&&typeof t=="object"&&t!==null?g4e.call(t,i):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=L3.create(this.key,this.valueKey)),this.negated}}class L3{static create(e,t){return new L3(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=11,this._negated=B3.create(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type?this._negated.equals(e._negated):!1}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}class v3{static create(e,t,i=null){if(typeof t=="boolean")return t?HN.create(e,i):PN.create(e,i);const n=Pl.get(e);return typeof n=="boolean"?t===(n?"true":"false")?za.INSTANCE:yd.INSTANCE:new v3(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=5}cmp(e){return e.type!==this.type?this.type-e.type:KN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){const e=Pl.get(this.key);if(typeof e=="boolean"){const t=e?"true":"false";return this.value===t?za.INSTANCE:yd.INSTANCE}return this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=mM.create(this.key,this.value,this)),this.negated}}class HN{static create(e,t=null){const i=Pl.get(e);return typeof i=="boolean"?i?za.INSTANCE:yd.INSTANCE:new HN(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=3}cmp(e){return e.type!==this.type?this.type-e.type:fSe(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){const e=Pl.get(this.key);return typeof e=="boolean"?e?za.INSTANCE:yd.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=PN.create(this.key,this)),this.negated}}function k3(s,e){if(typeof s=="string"){const t=parseFloat(s);isNaN(t)||(s=t)}return typeof s=="string"||typeof s=="number"?e(s):za.INSTANCE}class x3{static create(e,t,i=null){return k3(t,n=>new x3(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=12}cmp(e){return e.type!==this.type?this.type-e.type:KN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=D3.create(this.key,this.value,this)),this.negated}}class I3{static create(e,t,i=null){return k3(t,n=>new I3(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=13}cmp(e){return e.type!==this.type?this.type-e.type:KN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=E3.create(this.key,this.value,this)),this.negated}}class E3{static create(e,t,i=null){return k3(t,n=>new E3(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=14}cmp(e){return e.type!==this.type?this.type-e.type:KN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<this.value}serialize(){return`${this.key} < ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=I3.create(this.key,this.value,this)),this.negated}}class D3{static create(e,t,i=null){return k3(t,n=>new D3(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=15}cmp(e){return e.type!==this.type?this.type-e.type:KN(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=x3.create(this.key,this.value,this)),this.negated}}class HB{static create(e,t){return new HB(e,t)}constructor(e,t){this.key=e,this.regexp=t,this.type=7,this.negated=null}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.key<e.key)return-1;if(this.key>e.key)return 1;const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return t<i?-1:t>i?1:0}equals(e){if(e.type===this.type){const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return this.key===e.key&&t===i}return!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.key);return this.regexp?this.regexp.test(t):!1}serialize(){const e=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Jse.create(this)),this.negated}}class Jse{static create(e){return new Jse(e)}constructor(e){this._actual=e,this.type=8}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type?this._actual.equals(e._actual):!1}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}function gSe(s){let e=null;for(let t=0,i=s.length;t<i;t++){const n=s[t].substituteConstants();if(s[t]!==n&&e===null){e=[];for(let o=0;o<t;o++)e[o]=s[o]}e!==null&&(e[t]=n)}return e===null?s:e}class US{static create(e,t,i){return US._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=6}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const n=PC(this.expr[t],e.expr[t]);if(n!==0)return n}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}substituteConstants(){const e=gSe(this.expr);return e===this.expr?this:US.create(e,this.negated,!1)}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].evaluate(e))return!1;return!0}static _normalizeArr(e,t,i){const n=[];let o=!1;for(const r of e)if(r){if(r.type===1){o=!0;continue}if(r.type===0)return za.INSTANCE;if(r.type===6){n.push(...r.expr);continue}n.push(r)}if(n.length===0&&o)return yd.INSTANCE;if(n.length!==0){if(n.length===1)return n[0];n.sort(PC);for(let r=1;r<n.length;r++)n[r-1].equals(n[r])&&(n.splice(r,1),r--);if(n.length===1)return n[0];for(;n.length>1;){const r=n[n.length-1];if(r.type!==9)break;n.pop();const l=n.pop(),a=n.length===0,d=cf.create(r.expr.map(c=>US.create([c,l],null,i)),null,a);d&&(n.push(d),n.sort(PC))}if(n.length===1)return n[0];if(i){for(let r=0;r<n.length;r++)for(let l=r+1;l<n.length;l++)if(n[r].negate().equals(n[l]))return za.INSTANCE;if(n.length===1)return n[0]}return new US(n,t)}}serialize(){return this.expr.map(e=>e.serialize()).join(" && ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());this.negated=cf.create(e,this,!0)}return this.negated}}class cf{static create(e,t,i){return cf._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=9}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const n=PC(this.expr[t],e.expr[t]);if(n!==0)return n}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}substituteConstants(){const e=gSe(this.expr);return e===this.expr?this:cf.create(e,this.negated,!1)}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(this.expr[t].evaluate(e))return!0;return!1}static _normalizeArr(e,t,i){let n=[],o=!1;if(e){for(let r=0,l=e.length;r<l;r++){const a=e[r];if(a){if(a.type===0){o=!0;continue}if(a.type===1)return yd.INSTANCE;if(a.type===9){n=n.concat(a.expr);continue}n.push(a)}}if(n.length===0&&o)return za.INSTANCE;n.sort(PC)}if(n.length!==0){if(n.length===1)return n[0];for(let r=1;r<n.length;r++)n[r-1].equals(n[r])&&(n.splice(r,1),r--);if(n.length===1)return n[0];if(i){for(let r=0;r<n.length;r++)for(let l=r+1;l<n.length;l++)if(n[r].negate().equals(n[l]))return yd.INSTANCE;if(n.length===1)return n[0]}return new cf(n,t)}}serialize(){return this.expr.map(e=>e.serialize()).join(" || ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());for(;e.length>1;){const t=e.shift(),i=e.shift(),n=[];for(const o of ghe(t))for(const r of ghe(i))n.push(US.create([o,r],null,!1));e.unshift(cf.create(n,null,!1))}this.negated=cf.create(e,this,!0)}return this.negated}}const d1=class d1 extends PN{static all(){return d1._info.values()}constructor(e,t,i){super(e,null),this._defaultValue=t,typeof i=="object"?d1._info.push({...i,key:e}):i!==!0&&d1._info.push({key:e,description:i,type:t!=null?typeof t:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return mM.create(this.key,e)}};d1._info=[];let yt=d1;const fi=un("contextKeyService");function fSe(s,e){return s<e?-1:s>e?1:0}function KN(s,e,t,i){return s<t?-1:s>t?1:e<i?-1:e>i?1:0}function F8(s,e){if(s.type===0||e.type===1)return!0;if(s.type===9)return e.type===9?phe(s.expr,e.expr):!1;if(e.type===9){for(const t of e.expr)if(F8(s,t))return!0;return!1}if(s.type===6){if(e.type===6)return phe(e.expr,s.expr);for(const t of s.expr)if(F8(t,e))return!0;return!1}return s.equals(e)}function phe(s,e){let t=0,i=0;for(;t<s.length&&i<e.length;){const n=s[t].cmp(e[i]);if(n<0)return!1;n===0&&t++,i++}return t===s.length}function ghe(s){return s.type===9?s.expr:[s]}function Pj(s,e){if(!s)throw new Error(e?`Assertion failed (${e})`:"Assertion Failed")}function G3(s,e="Unreachable"){throw new Error(e)}function fhe(s){s||wi(new _n("Soft Assertion Failed"))}function SN(s){if(!s()){debugger;s(),wi(new _n("Assertion Failed"))}}function Xse(s,e){let t=0;for(;t<s.length-1;){const i=s[t],n=s[t+1];if(!e(i,n))return!1;t++}return!0}class W4e{constructor(){this.data=new Map}add(e,t){Pj(Vd(e)),Pj(_r(t)),Pj(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,t)}as(e){return this.data.get(e)||null}}const fo=new W4e;class Yse{constructor(){this._coreKeybindings=new Ia,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(e){if(rc===1){if(e&&e.win)return e.win}else if(rc===2){if(e&&e.mac)return e.mac}else if(e&&e.linux)return e.linux;return e}registerKeybindingRule(e){const t=Yse.bindToCurrentPlatform(e),i=new De;if(t&&t.primary){const n=o8(t.primary,rc);n&&i.add(this._registerDefaultKeybinding(n,e.id,e.args,e.weight,0,e.when))}if(t&&Array.isArray(t.secondary))for(let n=0,o=t.secondary.length;n<o;n++){const r=t.secondary[n],l=o8(r,rc);l&&i.add(this._registerDefaultKeybinding(l,e.id,e.args,e.weight,-n-1,e.when))}return i}registerCommandAndKeybindingRule(e){return Pu(this.registerKeybindingRule(e),Sn.registerCommand(e))}_registerDefaultKeybinding(e,t,i,n,o,r){const l=this._coreKeybindings.push({keybinding:e,command:t,commandArgs:i,when:r,weight1:n,weight2:o,extensionId:null,isBuiltinExtension:!1});return this._cachedMergedKeybindings=null,ei(()=>{l(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(Q4e)),this._cachedMergedKeybindings.slice(0)}}const Oa=new Yse,y4e={EditorModes:"platform.keybindingsRegistry"};fo.add(y4e.EditorModes,Oa);function Q4e(s,e){if(s.weight1!==e.weight1)return s.weight1-e.weight1;if(s.command&&e.command){if(s.command<e.command)return-1;if(s.command>e.command)return 1}return s.weight2-e.weight2}var M4e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},bhe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},mD;function w1(s){return s.command!==void 0}function w4e(s){return s.submenu!==void 0}const ne=class ne{constructor(e){if(ne._instances.has(e))throw new TypeError(`MenuId with identifier '${e}' already exists. Use MenuId.for(ident) or a unique identifier`);ne._instances.set(e,this),this.id=e}};ne._instances=new Map,ne.CommandPalette=new ne("CommandPalette"),ne.DebugBreakpointsContext=new ne("DebugBreakpointsContext"),ne.DebugCallStackContext=new ne("DebugCallStackContext"),ne.DebugConsoleContext=new ne("DebugConsoleContext"),ne.DebugVariablesContext=new ne("DebugVariablesContext"),ne.NotebookVariablesContext=new ne("NotebookVariablesContext"),ne.DebugHoverContext=new ne("DebugHoverContext"),ne.DebugWatchContext=new ne("DebugWatchContext"),ne.DebugToolBar=new ne("DebugToolBar"),ne.DebugToolBarStop=new ne("DebugToolBarStop"),ne.DebugCallStackToolbar=new ne("DebugCallStackToolbar"),ne.DebugCreateConfiguration=new ne("DebugCreateConfiguration"),ne.EditorContext=new ne("EditorContext"),ne.SimpleEditorContext=new ne("SimpleEditorContext"),ne.EditorContent=new ne("EditorContent"),ne.EditorLineNumberContext=new ne("EditorLineNumberContext"),ne.EditorContextCopy=new ne("EditorContextCopy"),ne.EditorContextPeek=new ne("EditorContextPeek"),ne.EditorContextShare=new ne("EditorContextShare"),ne.EditorTitle=new ne("EditorTitle"),ne.EditorTitleRun=new ne("EditorTitleRun"),ne.EditorTitleContext=new ne("EditorTitleContext"),ne.EditorTitleContextShare=new ne("EditorTitleContextShare"),ne.EmptyEditorGroup=new ne("EmptyEditorGroup"),ne.EmptyEditorGroupContext=new ne("EmptyEditorGroupContext"),ne.EditorTabsBarContext=new ne("EditorTabsBarContext"),ne.EditorTabsBarShowTabsSubmenu=new ne("EditorTabsBarShowTabsSubmenu"),ne.EditorTabsBarShowTabsZenModeSubmenu=new ne("EditorTabsBarShowTabsZenModeSubmenu"),ne.EditorActionsPositionSubmenu=new ne("EditorActionsPositionSubmenu"),ne.ExplorerContext=new ne("ExplorerContext"),ne.ExplorerContextShare=new ne("ExplorerContextShare"),ne.ExtensionContext=new ne("ExtensionContext"),ne.GlobalActivity=new ne("GlobalActivity"),ne.CommandCenter=new ne("CommandCenter"),ne.CommandCenterCenter=new ne("CommandCenterCenter"),ne.LayoutControlMenuSubmenu=new ne("LayoutControlMenuSubmenu"),ne.LayoutControlMenu=new ne("LayoutControlMenu"),ne.MenubarMainMenu=new ne("MenubarMainMenu"),ne.MenubarAppearanceMenu=new ne("MenubarAppearanceMenu"),ne.MenubarDebugMenu=new ne("MenubarDebugMenu"),ne.MenubarEditMenu=new ne("MenubarEditMenu"),ne.MenubarCopy=new ne("MenubarCopy"),ne.MenubarFileMenu=new ne("MenubarFileMenu"),ne.MenubarGoMenu=new ne("MenubarGoMenu"),ne.MenubarHelpMenu=new ne("MenubarHelpMenu"),ne.MenubarLayoutMenu=new ne("MenubarLayoutMenu"),ne.MenubarNewBreakpointMenu=new ne("MenubarNewBreakpointMenu"),ne.PanelAlignmentMenu=new ne("PanelAlignmentMenu"),ne.PanelPositionMenu=new ne("PanelPositionMenu"),ne.ActivityBarPositionMenu=new ne("ActivityBarPositionMenu"),ne.MenubarPreferencesMenu=new ne("MenubarPreferencesMenu"),ne.MenubarRecentMenu=new ne("MenubarRecentMenu"),ne.MenubarSelectionMenu=new ne("MenubarSelectionMenu"),ne.MenubarShare=new ne("MenubarShare"),ne.MenubarSwitchEditorMenu=new ne("MenubarSwitchEditorMenu"),ne.MenubarSwitchGroupMenu=new ne("MenubarSwitchGroupMenu"),ne.MenubarTerminalMenu=new ne("MenubarTerminalMenu"),ne.MenubarViewMenu=new ne("MenubarViewMenu"),ne.MenubarHomeMenu=new ne("MenubarHomeMenu"),ne.OpenEditorsContext=new ne("OpenEditorsContext"),ne.OpenEditorsContextShare=new ne("OpenEditorsContextShare"),ne.ProblemsPanelContext=new ne("ProblemsPanelContext"),ne.SCMInputBox=new ne("SCMInputBox"),ne.SCMChangesSeparator=new ne("SCMChangesSeparator"),ne.SCMChangesContext=new ne("SCMChangesContext"),ne.SCMIncomingChanges=new ne("SCMIncomingChanges"),ne.SCMIncomingChangesContext=new ne("SCMIncomingChangesContext"),ne.SCMIncomingChangesSetting=new ne("SCMIncomingChangesSetting"),ne.SCMOutgoingChanges=new ne("SCMOutgoingChanges"),ne.SCMOutgoingChangesContext=new ne("SCMOutgoingChangesContext"),ne.SCMOutgoingChangesSetting=new ne("SCMOutgoingChangesSetting"),ne.SCMIncomingChangesAllChangesContext=new ne("SCMIncomingChangesAllChangesContext"),ne.SCMIncomingChangesHistoryItemContext=new ne("SCMIncomingChangesHistoryItemContext"),ne.SCMOutgoingChangesAllChangesContext=new ne("SCMOutgoingChangesAllChangesContext"),ne.SCMOutgoingChangesHistoryItemContext=new ne("SCMOutgoingChangesHistoryItemContext"),ne.SCMChangeContext=new ne("SCMChangeContext"),ne.SCMResourceContext=new ne("SCMResourceContext"),ne.SCMResourceContextShare=new ne("SCMResourceContextShare"),ne.SCMResourceFolderContext=new ne("SCMResourceFolderContext"),ne.SCMResourceGroupContext=new ne("SCMResourceGroupContext"),ne.SCMSourceControl=new ne("SCMSourceControl"),ne.SCMSourceControlInline=new ne("SCMSourceControlInline"),ne.SCMSourceControlTitle=new ne("SCMSourceControlTitle"),ne.SCMHistoryTitle=new ne("SCMHistoryTitle"),ne.SCMTitle=new ne("SCMTitle"),ne.SearchContext=new ne("SearchContext"),ne.SearchActionMenu=new ne("SearchActionContext"),ne.StatusBarWindowIndicatorMenu=new ne("StatusBarWindowIndicatorMenu"),ne.StatusBarRemoteIndicatorMenu=new ne("StatusBarRemoteIndicatorMenu"),ne.StickyScrollContext=new ne("StickyScrollContext"),ne.TestItem=new ne("TestItem"),ne.TestItemGutter=new ne("TestItemGutter"),ne.TestProfilesContext=new ne("TestProfilesContext"),ne.TestMessageContext=new ne("TestMessageContext"),ne.TestMessageContent=new ne("TestMessageContent"),ne.TestPeekElement=new ne("TestPeekElement"),ne.TestPeekTitle=new ne("TestPeekTitle"),ne.TestCallStack=new ne("TestCallStack"),ne.TouchBarContext=new ne("TouchBarContext"),ne.TitleBarContext=new ne("TitleBarContext"),ne.TitleBarTitleContext=new ne("TitleBarTitleContext"),ne.TunnelContext=new ne("TunnelContext"),ne.TunnelPrivacy=new ne("TunnelPrivacy"),ne.TunnelProtocol=new ne("TunnelProtocol"),ne.TunnelPortInline=new ne("TunnelInline"),ne.TunnelTitle=new ne("TunnelTitle"),ne.TunnelLocalAddressInline=new ne("TunnelLocalAddressInline"),ne.TunnelOriginInline=new ne("TunnelOriginInline"),ne.ViewItemContext=new ne("ViewItemContext"),ne.ViewContainerTitle=new ne("ViewContainerTitle"),ne.ViewContainerTitleContext=new ne("ViewContainerTitleContext"),ne.ViewTitle=new ne("ViewTitle"),ne.ViewTitleContext=new ne("ViewTitleContext"),ne.CommentEditorActions=new ne("CommentEditorActions"),ne.CommentThreadTitle=new ne("CommentThreadTitle"),ne.CommentThreadActions=new ne("CommentThreadActions"),ne.CommentThreadAdditionalActions=new ne("CommentThreadAdditionalActions"),ne.CommentThreadTitleContext=new ne("CommentThreadTitleContext"),ne.CommentThreadCommentContext=new ne("CommentThreadCommentContext"),ne.CommentTitle=new ne("CommentTitle"),ne.CommentActions=new ne("CommentActions"),ne.CommentsViewThreadActions=new ne("CommentsViewThreadActions"),ne.InteractiveToolbar=new ne("InteractiveToolbar"),ne.InteractiveCellTitle=new ne("InteractiveCellTitle"),ne.InteractiveCellDelete=new ne("InteractiveCellDelete"),ne.InteractiveCellExecute=new ne("InteractiveCellExecute"),ne.InteractiveInputExecute=new ne("InteractiveInputExecute"),ne.InteractiveInputConfig=new ne("InteractiveInputConfig"),ne.ReplInputExecute=new ne("ReplInputExecute"),ne.IssueReporter=new ne("IssueReporter"),ne.NotebookToolbar=new ne("NotebookToolbar"),ne.NotebookStickyScrollContext=new ne("NotebookStickyScrollContext"),ne.NotebookCellTitle=new ne("NotebookCellTitle"),ne.NotebookCellDelete=new ne("NotebookCellDelete"),ne.NotebookCellInsert=new ne("NotebookCellInsert"),ne.NotebookCellBetween=new ne("NotebookCellBetween"),ne.NotebookCellListTop=new ne("NotebookCellTop"),ne.NotebookCellExecute=new ne("NotebookCellExecute"),ne.NotebookCellExecuteGoTo=new ne("NotebookCellExecuteGoTo"),ne.NotebookCellExecutePrimary=new ne("NotebookCellExecutePrimary"),ne.NotebookDiffCellInputTitle=new ne("NotebookDiffCellInputTitle"),ne.NotebookDiffCellMetadataTitle=new ne("NotebookDiffCellMetadataTitle"),ne.NotebookDiffCellOutputsTitle=new ne("NotebookDiffCellOutputsTitle"),ne.NotebookOutputToolbar=new ne("NotebookOutputToolbar"),ne.NotebookOutlineFilter=new ne("NotebookOutlineFilter"),ne.NotebookOutlineActionMenu=new ne("NotebookOutlineActionMenu"),ne.NotebookEditorLayoutConfigure=new ne("NotebookEditorLayoutConfigure"),ne.NotebookKernelSource=new ne("NotebookKernelSource"),ne.BulkEditTitle=new ne("BulkEditTitle"),ne.BulkEditContext=new ne("BulkEditContext"),ne.TimelineItemContext=new ne("TimelineItemContext"),ne.TimelineTitle=new ne("TimelineTitle"),ne.TimelineTitleContext=new ne("TimelineTitleContext"),ne.TimelineFilterSubMenu=new ne("TimelineFilterSubMenu"),ne.AccountsContext=new ne("AccountsContext"),ne.SidebarTitle=new ne("SidebarTitle"),ne.PanelTitle=new ne("PanelTitle"),ne.AuxiliaryBarTitle=new ne("AuxiliaryBarTitle"),ne.AuxiliaryBarHeader=new ne("AuxiliaryBarHeader"),ne.TerminalInstanceContext=new ne("TerminalInstanceContext"),ne.TerminalEditorInstanceContext=new ne("TerminalEditorInstanceContext"),ne.TerminalNewDropdownContext=new ne("TerminalNewDropdownContext"),ne.TerminalTabContext=new ne("TerminalTabContext"),ne.TerminalTabEmptyAreaContext=new ne("TerminalTabEmptyAreaContext"),ne.TerminalStickyScrollContext=new ne("TerminalStickyScrollContext"),ne.WebviewContext=new ne("WebviewContext"),ne.InlineCompletionsActions=new ne("InlineCompletionsActions"),ne.InlineEditsActions=new ne("InlineEditsActions"),ne.InlineEditActions=new ne("InlineEditActions"),ne.NewFile=new ne("NewFile"),ne.MergeInput1Toolbar=new ne("MergeToolbar1Toolbar"),ne.MergeInput2Toolbar=new ne("MergeToolbar2Toolbar"),ne.MergeBaseToolbar=new ne("MergeBaseToolbar"),ne.MergeInputResultToolbar=new ne("MergeToolbarResultToolbar"),ne.InlineSuggestionToolbar=new ne("InlineSuggestionToolbar"),ne.InlineEditToolbar=new ne("InlineEditToolbar"),ne.ChatContext=new ne("ChatContext"),ne.ChatCodeBlock=new ne("ChatCodeblock"),ne.ChatCompareBlock=new ne("ChatCompareBlock"),ne.ChatMessageTitle=new ne("ChatMessageTitle"),ne.ChatExecute=new ne("ChatExecute"),ne.ChatExecuteSecondary=new ne("ChatExecuteSecondary"),ne.ChatInputSide=new ne("ChatInputSide"),ne.AccessibleView=new ne("AccessibleView"),ne.MultiDiffEditorFileToolbar=new ne("MultiDiffEditorFileToolbar"),ne.DiffEditorHunkToolbar=new ne("DiffEditorHunkToolbar"),ne.DiffEditorSelectionToolbar=new ne("DiffEditorSelectionToolbar");let Gt=ne;const ah=un("menuService"),gB=class gB{static for(e){let t=this._all.get(e);return t||(t=new gB(e),this._all.set(e,t)),t}static merge(e){const t=new Set;for(const i of e)i instanceof gB&&t.add(i.id);return t}constructor(e){this.id=e,this.has=t=>t===e}};gB._all=new Map;let YZ=gB;const zr=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new _je({merge:YZ.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(s){return this._commands.set(s.id,s),this._onDidChangeMenu.fire(YZ.for(Gt.CommandPalette)),ei(()=>{this._commands.delete(s.id)&&this._onDidChangeMenu.fire(YZ.for(Gt.CommandPalette))})}getCommand(s){return this._commands.get(s)}getCommands(){const s=new Map;return this._commands.forEach((e,t)=>s.set(t,e)),s}appendMenuItem(s,e){let t=this._menuItems.get(s);t||(t=new Ia,this._menuItems.set(s,t));const i=t.push(e);return this._onDidChangeMenu.fire(YZ.for(s)),ei(()=>{i(),this._onDidChangeMenu.fire(YZ.for(s))})}appendMenuItems(s){const e=new De;for(const{id:t,item:i}of s)e.add(this.appendMenuItem(t,i));return e}getMenuItems(s){let e;return this._menuItems.has(s)?e=[...this._menuItems.get(s)]:e=[],s===Gt.CommandPalette&&this._appendImplicitItems(e),e}_appendImplicitItems(s){const e=new Set;for(const t of s)w1(t)&&(e.add(t.command.id),t.alt&&e.add(t.alt.id));this._commands.forEach((t,i)=>{e.has(i)||s.push({command:t})})}};class T1 extends Ry{constructor(e,t,i){super(`submenuitem.${e.submenu.id}`,typeof e.title=="string"?e.title:e.title.value,i,"submenu"),this.item=e,this.hideActions=t}}let dc=mD=class{static label(e,t){return t!=null&&t.renderShortTitle&&e.shortTitle?typeof e.shortTitle=="string"?e.shortTitle:e.shortTitle.value:typeof e.title=="string"?e.title:e.title.value}constructor(e,t,i,n,o,r,l){var d;this.hideActions=n,this.menuKeybinding=o,this._commandService=l,this.id=e.id,this.label=mD.label(e,i),this.tooltip=(typeof e.tooltip=="string"?e.tooltip:(d=e.tooltip)==null?void 0:d.value)??"",this.enabled=!e.precondition||r.contextMatchesRules(e.precondition),this.checked=void 0;let a;if(e.toggled){const c=e.toggled.condition?e.toggled:{condition:e.toggled};this.checked=r.contextMatchesRules(c.condition),this.checked&&c.tooltip&&(this.tooltip=typeof c.tooltip=="string"?c.tooltip:c.tooltip.value),this.checked&&ui.isThemeIcon(c.icon)&&(a=c.icon),this.checked&&c.title&&(this.label=typeof c.title=="string"?c.title:c.title.value)}a||(a=ui.isThemeIcon(e.icon)?e.icon:void 0),this.item=e,this.alt=t?new mD(t,void 0,i,n,void 0,r,l):void 0,this._options=i,this.class=a&&ui.asClassName(a)}run(...e){var i,n;let t=[];return(i=this._options)!=null&&i.arg&&(t=[...t,this._options.arg]),(n=this._options)!=null&&n.shouldForwardArgs&&(t=[...t,...e]),this._commandService.executeCommand(this.id,...t)}};dc=mD=M4e([bhe(5,fi),bhe(6,ks)],dc);class Ha{constructor(e){this.desc=e}}function Cs(s){const e=[],t=new s,{f1:i,menu:n,keybinding:o,...r}=t.desc;if(Sn.getCommand(r.id))throw new Error(`Cannot register two commands with the same id: ${r.id}`);if(e.push(Sn.registerCommand({id:r.id,handler:(l,...a)=>t.run(l,...a),metadata:r.metadata})),Array.isArray(n))for(const l of n)e.push(zr.appendMenuItem(l.id,{command:{...r,precondition:l.precondition===null?void 0:r.precondition},...l}));else n&&e.push(zr.appendMenuItem(n.id,{command:{...r,precondition:n.precondition===null?void 0:r.precondition},...n}));if(i&&(e.push(zr.appendMenuItem(Gt.CommandPalette,{command:r,when:r.precondition})),e.push(zr.addCommand(r))),Array.isArray(o))for(const l of o)e.push(Oa.registerKeybindingRule({...l,id:r.id,when:r.precondition?Ge.and(r.precondition,l.when):l.when}));else o&&e.push(Oa.registerKeybindingRule({...o,id:r.id,when:r.precondition?Ge.and(r.precondition,o.when):o.when}));return{dispose(){Ws(e)}}}const $l=un("telemetryService"),Cl=un("logService");var Ud;(function(s){s[s.Off=0]="Off",s[s.Trace=1]="Trace",s[s.Debug=2]="Debug",s[s.Info=3]="Info",s[s.Warning=4]="Warning",s[s.Error=5]="Error"})(Ud||(Ud={}));const bSe=Ud.Info;class USe extends be{constructor(){super(...arguments),this.level=bSe,this._onDidChangeLogLevel=this._register(new fe),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(e){this.level!==e&&(this.level=e,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(e){return this.level!==Ud.Off&&this.level<=e}}class T4e extends USe{constructor(e=bSe,t=!0){super(),this.useColors=t,this.setLevel(e)}trace(e,...t){this.checkLogLevel(Ud.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",e,...t):console.log(e,...t))}debug(e,...t){this.checkLogLevel(Ud.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",e,...t):console.log(e,...t))}info(e,...t){this.checkLogLevel(Ud.Info)&&(this.useColors?console.log("%c INFO","color: #33f",e,...t):console.log(e,...t))}warn(e,...t){this.checkLogLevel(Ud.Warning)&&(this.useColors?console.log("%c WARN","color: #993",e,...t):console.log(e,...t))}error(e,...t){this.checkLogLevel(Ud.Error)&&(this.useColors?console.log("%c ERR","color: #f33",e,...t):console.error(e,...t))}}class C4e extends USe{constructor(e){super(),this.loggers=e,e.length&&this.setLevel(e[0].getLevel())}setLevel(e){for(const t of this.loggers)t.setLevel(e);super.setLevel(e)}trace(e,...t){for(const i of this.loggers)i.trace(e,...t)}debug(e,...t){for(const i of this.loggers)i.debug(e,...t)}info(e,...t){for(const i of this.loggers)i.info(e,...t)}warn(e,...t){for(const i of this.loggers)i.warn(e,...t)}error(e,...t){for(const i of this.loggers)i.error(e,...t)}dispose(){for(const e of this.loggers)e.dispose();super.dispose()}}function B4e(s){switch(s){case Ud.Trace:return"trace";case Ud.Debug:return"debug";case Ud.Info:return"info";case Ud.Warning:return"warn";case Ud.Error:return"error";case Ud.Off:return"off"}}new yt("logLevel",B4e(Ud.Info));class J3{constructor(e){this.id=e.id,this.precondition=e.precondition,this._kbOpts=e.kbOpts,this._menuOpts=e.menuOpts,this.metadata=e.metadata}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const e=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const t of e){let i=t.kbExpr;this.precondition&&(i?i=Ge.and(i,this.precondition):i=this.precondition);const n={id:this.id,weight:t.weight,args:t.args,when:i,primary:t.primary,secondary:t.secondary,win:t.win,linux:t.linux,mac:t.mac};Oa.registerKeybindingRule(n)}}Sn.registerCommand({id:this.id,handler:(e,t)=>this.runCommand(e,t),metadata:this.metadata})}_registerMenuItem(e){zr.appendMenuItem(e.menuId,{group:e.group,command:{id:this.id,title:e.title,icon:e.icon,precondition:this.precondition},when:e.when,order:e.order})}}class pM extends J3{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t,i,n){return this._implementations.push({priority:e,name:t,implementation:i,when:n}),this._implementations.sort((o,r)=>r.priority-o.priority),{dispose:()=>{for(let o=0;o<this._implementations.length;o++)if(this._implementations[o].implementation===i){this._implementations.splice(o,1);return}}}}runCommand(e,t){const i=e.get(Cl),n=e.get(fi);i.trace(`Executing Command '${this.id}' which has ${this._implementations.length} bound.`);for(const o of this._implementations){if(o.when){const l=n.getContext(Ql());if(!o.when.evaluate(l))continue}const r=o.implementation(e,t);if(r)return i.trace(`Command '${this.id}' was handled by '${o.name}'.`),typeof r=="boolean"?void 0:r}i.trace(`The Command '${this.id}' was not handled by any implementation.`)}}class FSe extends J3{constructor(e,t){super(t),this.command=e}runCommand(e,t){return this.command.runCommand(e,t)}}class Nr extends J3{static bindToContribution(e){return class extends Nr{constructor(i){super(i),this._callback=i.handler}runEditorCommand(i,n,o){const r=e(n);r&&this._callback(r,o)}}}static runEditorCommand(e,t,i,n){const o=e.get(kn),r=o.getFocusedCodeEditor()||o.getActiveCodeEditor();if(r)return r.invokeWithinContext(l=>{if(l.get(fi).contextMatchesRules(i??void 0))return n(l,r,t)})}runCommand(e,t){return Nr.runEditorCommand(e,t,this.precondition,(i,n,o)=>this.runEditorCommand(i,n,o))}}class Tt extends Nr{static convertOptions(e){let t;Array.isArray(e.menuOpts)?t=e.menuOpts:e.menuOpts?t=[e.menuOpts]:t=[];function i(n){return n.menuId||(n.menuId=Gt.EditorContext),n.title||(n.title=e.label),n.when=Ge.and(e.precondition,n.when),n}return Array.isArray(e.contextMenuOpts)?t.push(...e.contextMenuOpts.map(i)):e.contextMenuOpts&&t.push(i(e.contextMenuOpts)),e.menuOpts=t,e}constructor(e){super(Tt.convertOptions(e)),this.label=e.label,this.alias=e.alias}runEditorCommand(e,t,i){return this.reportTelemetry(e,t),this.run(e,t,i||{})}reportTelemetry(e,t){e.get($l).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}class ASe extends Tt{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t){return this._implementations.push([e,t]),this._implementations.sort((i,n)=>n[0]-i[0]),{dispose:()=>{for(let i=0;i<this._implementations.length;i++)if(this._implementations[i][1]===t){this._implementations.splice(i,1);return}}}}run(e,t,i){for(const n of this._implementations){const o=n[1](e,t,i);if(o)return typeof o=="boolean"?void 0:o}}}class Fp extends Ha{run(e,...t){const i=e.get(kn),n=i.getFocusedCodeEditor()||i.getActiveCodeEditor();if(n)return n.invokeWithinContext(o=>{var d;const r=o.get(fi),l=o.get(Cl);if(!r.contextMatchesRules(this.desc.precondition??void 0)){l.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,(d=this.desc.precondition)==null?void 0:d.serialize());return}return this.runEditorCommand(o,n,...t)})}}function Cd(s,e){Sn.registerCommand(s,function(t,...i){const n=t.get(ti),[o,r]=i;vn(ni.isUri(o)),vn(ge.isIPosition(r));const l=t.get(zs).getModel(o);if(l){const a=ge.lift(r);return n.invokeFunction(e,l,a,...i.slice(2))}return t.get(Td).createModelReference(o).then(a=>new Promise((d,c)=>{try{const h=n.invokeFunction(e,a.object.textEditorModel,ge.lift(r),i.slice(2));d(h)}catch(h){c(h)}}).finally(()=>{a.dispose()}))})}function Vt(s){return xh.INSTANCE.registerEditorCommand(s),s}function lt(s){const e=new s;return xh.INSTANCE.registerEditorAction(e),e}function ZSe(s){return xh.INSTANCE.registerEditorAction(s),s}function L4e(s){xh.INSTANCE.registerEditorAction(s)}function Wn(s,e,t){xh.INSTANCE.registerEditorContribution(s,e,t)}var DS;(function(s){function e(r){return xh.INSTANCE.getEditorCommand(r)}s.getEditorCommand=e;function t(){return xh.INSTANCE.getEditorActions()}s.getEditorActions=t;function i(){return xh.INSTANCE.getEditorContributions()}s.getEditorContributions=i;function n(r){return xh.INSTANCE.getEditorContributions().filter(l=>r.indexOf(l.id)>=0)}s.getSomeEditorContributions=n;function o(){return xh.INSTANCE.getDiffEditorContributions()}s.getDiffEditorContributions=o})(DS||(DS={}));const v4e={EditorCommonContributions:"editor.contributions"},Q_=class Q_{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(e,t,i){this.editorContributions.push({id:e,ctor:t,instantiation:i})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(e){e.register(),this.editorActions.push(e)}getEditorActions(){return this.editorActions}registerEditorCommand(e){e.register(),this.editorCommands[e.id]=e}getEditorCommand(e){return this.editorCommands[e]||null}};Q_.INSTANCE=new Q_;let xh=Q_;fo.add(v4e.EditorCommonContributions,xh.INSTANCE);function Hv(s){return s.register(),s}const SSe=Hv(new pM({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:Gt.MenubarEditMenu,group:"1_do",title:F({key:"miUndo",comment:["&& denotes a mnemonic"]},"&&Undo"),order:1},{menuId:Gt.CommandPalette,group:"",title:F("undo","Undo"),order:1}]}));Hv(new FSe(SSe,{id:"default:undo",precondition:void 0}));const NSe=Hv(new pM({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:Gt.MenubarEditMenu,group:"1_do",title:F({key:"miRedo",comment:["&& denotes a mnemonic"]},"&&Redo"),order:2},{menuId:Gt.CommandPalette,group:"",title:F("redo","Redo"),order:1}]}));Hv(new FSe(NSe,{id:"default:redo",precondition:void 0}));const k4e=Hv(new pM({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:Gt.MenubarSelectionMenu,group:"1_basic",title:F({key:"miSelectAll",comment:["&& denotes a mnemonic"]},"&&Select All"),order:1},{menuId:Gt.CommandPalette,group:"",title:F("selectAll","Select All"),order:1}]})),Uhe="default",x4e="$initialize";let Fhe=!1;function A8(s){jN&&(Fhe||(Fhe=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(s.message))}class I4e{constructor(e,t,i,n,o){this.vsWorker=e,this.req=t,this.channel=i,this.method=n,this.args=o,this.type=0}}class Ahe{constructor(e,t,i,n){this.vsWorker=e,this.seq=t,this.res=i,this.err=n,this.type=1}}class E4e{constructor(e,t,i,n,o){this.vsWorker=e,this.req=t,this.channel=i,this.eventName=n,this.arg=o,this.type=2}}class D4e{constructor(e,t,i){this.vsWorker=e,this.req=t,this.event=i,this.type=3}}class G4e{constructor(e,t){this.vsWorker=e,this.req=t,this.type=4}}class J4e{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}sendMessage(e,t,i){const n=String(++this._lastSentReq);return new Promise((o,r)=>{this._pendingReplies[n]={resolve:o,reject:r},this._send(new I4e(this._workerId,n,e,t,i))})}listen(e,t,i){let n=null;const o=new fe({onWillAddFirstListener:()=>{n=String(++this._lastSentReq),this._pendingEmitters.set(n,o),this._send(new E4e(this._workerId,n,e,t,i))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(n),this._send(new G4e(this._workerId,n)),n=null}});return o.event}handleMessage(e){!e||!e.vsWorker||this._workerId!==-1&&e.vsWorker!==this._workerId||this._handleMessage(e)}createProxyToRemoteChannel(e,t){const i={get:(n,o)=>(typeof o=="string"&&!n[o]&&(VSe(o)?n[o]=r=>this.listen(e,o,r):RSe(o)?n[o]=this.listen(e,o,void 0):o.charCodeAt(0)===36&&(n[o]=async(...r)=>(await(t==null?void 0:t()),this.sendMessage(e,o,r)))),n[o])};return new Proxy(Object.create(null),i)}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq]){console.warn("Got reply to unknown seq");return}const t=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let i=e.err;e.err.$isError&&(i=new Error,i.name=e.err.name,i.message=e.err.message,i.stack=e.err.stack),t.reject(i);return}t.resolve(e.res)}_handleRequestMessage(e){const t=e.req;this._handler.handleMessage(e.channel,e.method,e.args).then(n=>{this._send(new Ahe(this._workerId,t,n,void 0))},n=>{n.detail instanceof Error&&(n.detail=Oce(n.detail)),this._send(new Ahe(this._workerId,t,void 0,Oce(n)))})}_handleSubscribeEventMessage(e){const t=e.req,i=this._handler.handleEvent(e.channel,e.eventName,e.arg)(n=>{this._send(new D4e(this._workerId,t,n))});this._pendingEvents.set(t,i)}_handleEventMessage(e){if(!this._pendingEmitters.has(e.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(e.req).fire(e.event)}_handleUnsubscribeEventMessage(e){if(!this._pendingEvents.has(e.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)}_send(e){const t=[];if(e.type===0)for(let i=0;i<e.args.length;i++)e.args[i]instanceof ArrayBuffer&&t.push(e.args[i]);else e.type===1&&e.res instanceof ArrayBuffer&&t.push(e.res);this._handler.sendMessage(e,t)}}class X4e extends be{constructor(e,t){super(),this._localChannels=new Map,this._worker=this._register(e.create({amdModuleId:"vs/base/common/worker/simpleWorker",esmModuleLocation:t.esmModuleLocation,label:t.label},o=>{this._protocol.handleMessage(o)},o=>{wi(o)})),this._protocol=new J4e({sendMessage:(o,r)=>{this._worker.postMessage(o,r)},handleMessage:(o,r,l)=>this._handleMessage(o,r,l),handleEvent:(o,r,l)=>this._handleEvent(o,r,l)}),this._protocol.setWorkerId(this._worker.getId());let i=null;const n=globalThis.require;typeof n<"u"&&typeof n.getConfig=="function"?i=n.getConfig():typeof globalThis.requirejs<"u"&&(i=globalThis.requirejs.s.contexts._.config),this._onModuleLoaded=this._protocol.sendMessage(Uhe,x4e,[this._worker.getId(),JSON.parse(JSON.stringify(i)),t.amdModuleId]),this.proxy=this._protocol.createProxyToRemoteChannel(Uhe,async()=>{await this._onModuleLoaded}),this._onModuleLoaded.catch(o=>{this._onError("Worker failed to load "+t.amdModuleId,o)})}_handleMessage(e,t,i){const n=this._localChannels.get(e);if(!n)return Promise.reject(new Error(`Missing channel ${e} on main thread`));if(typeof n[t]!="function")return Promise.reject(new Error(`Missing method ${t} on main thread channel ${e}`));try{return Promise.resolve(n[t].apply(n,i))}catch(o){return Promise.reject(o)}}_handleEvent(e,t,i){const n=this._localChannels.get(e);if(!n)throw new Error(`Missing channel ${e} on main thread`);if(VSe(t)){const o=n[t].call(n,i);if(typeof o!="function")throw new Error(`Missing dynamic event ${t} on main thread channel ${e}.`);return o}if(RSe(t)){const o=n[t];if(typeof o!="function")throw new Error(`Missing event ${t} on main thread channel ${e}.`);return o}throw new Error(`Malformed event name ${t}`)}setChannel(e,t){this._localChannels.set(e,t)}_onError(e,t){console.error(e),console.info(t)}}function RSe(s){return s[0]==="o"&&s[1]==="n"&&ug(s.charCodeAt(2))}function VSe(s){return/^onDynamic/.test(s)&&ug(s.charCodeAt(9))}function lb(s,e){var i;const t=globalThis.MonacoEnvironment;if(t!=null&&t.createTrustedTypesPolicy)try{return t.createTrustedTypesPolicy(s,e)}catch(n){wi(n);return}try{return(i=globalThis.trustedTypes)==null?void 0:i.createPolicy(s,e)}catch(n){wi(n);return}}let FW;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?FW=globalThis.workerttPolicy:FW=lb("defaultWorkerFactory",{createScriptURL:s=>s});function Y4e(s,e){const t=globalThis.MonacoEnvironment;if(t){if(typeof t.getWorker=="function")return t.getWorker("workerMain.js",e);if(typeof t.getWorkerUrl=="function"){const i=t.getWorkerUrl("workerMain.js",e);return new Worker(FW?FW.createScriptURL(i):i,{name:e,type:"module"})}}if(s){const i=_4e(e,s.toString(!0)),n=new Worker(FW?FW.createScriptURL(i):i,{name:e,type:"module"});return z4e(n)}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function _4e(s,e,t){if(!(/^((http:)|(https:)|(file:)|(vscode-file:))/.test(e)&&e.substring(0,globalThis.origin.length)!==globalThis.origin)){const o=e.lastIndexOf("?"),r=e.lastIndexOf("#",o),l=o>0?new URLSearchParams(e.substring(o+1,~r?r:void 0)):new URLSearchParams;u8.addSearchParam(l,!0,!0),l.toString()?e=`${e}?${l.toString()}#${s}`:e=`${e}#${s}`}const n=new Blob([Hu([`/*${s}*/`,t?`globalThis.MonacoEnvironment = { baseUrl: '${t}' };`:void 0,`globalThis._VSCODE_NLS_MESSAGES = ${JSON.stringify(oZe())};`,`globalThis._VSCODE_NLS_LANGUAGE = ${JSON.stringify(gse())};`,`globalThis._VSCODE_FILE_ROOT = '${globalThis._VSCODE_FILE_ROOT}';`,"const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });","globalThis.workerttPolicy = ttPolicy;",`await import(ttPolicy?.createScriptURL('${e}') ?? '${e}');`,"globalThis.postMessage({ type: 'vscode-worker-ready' });",`/*${s}*/`]).join("")],{type:"application/javascript"});return URL.createObjectURL(n)}function z4e(s){return new Promise((e,t)=>{s.onmessage=function(i){i.data.type==="vscode-worker-ready"&&(s.onmessage=null,e(s))},s.onerror=t})}function O4e(s){return typeof s.then=="function"}class j4e extends be{constructor(e,t,i,n,o,r){super(),this.id=i,this.label=n;const l=Y4e(e,n);O4e(l)?this.worker=l:this.worker=Promise.resolve(l),this.postMessage(t,[]),this.worker.then(a=>{a.onmessage=function(d){o(d.data)},a.onmessageerror=r,typeof a.addEventListener=="function"&&a.addEventListener("error",r)}),this._register(ei(()=>{var a;(a=this.worker)==null||a.then(d=>{d.onmessage=null,d.onmessageerror=null,d.removeEventListener("error",r),d.terminate()}),this.worker=null}))}getId(){return this.id}postMessage(e,t){var i;(i=this.worker)==null||i.then(n=>{try{n.postMessage(e,t)}catch(o){wi(o),wi(new Error(`FAILED to post message to '${this.label}'-worker`,{cause:o}))}})}}class P4e{constructor(e,t){this.amdModuleId=e,this.label=t,this.esmModuleLocation=y3.asBrowserUri(`${e}.esm.js`)}}const M_=class M_{constructor(){this._webWorkerFailedBeforeError=!1}create(e,t,i){const n=++M_.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new j4e(e.esmModuleLocation,e.amdModuleId,n,e.label||"anonymous"+n,t,o=>{A8(o),this._webWorkerFailedBeforeError=o,i(o)})}};M_.LAST_WORKER_ID=0;let Z8=M_;function H4e(s,e){const t=typeof s=="string"?new P4e(s,e):s;return new X4e(new Z8,t)}var ar;(function(s){s[s.None=0]="None",s[s.Indent=1]="Indent",s[s.IndentOutdent=2]="IndentOutdent",s[s.Outdent=3]="Outdent"})(ar||(ar={}));class Hj{constructor(e){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=e.open,this.close=e.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(e.notIn))for(let t=0,i=e.notIn.length;t<i;t++)switch(e.notIn[t]){case"string":this._inString=!1;break;case"comment":this._inComment=!1;break;case"regex":this._inRegEx=!1;break}}isOK(e){switch(e){case 0:return!0;case 1:return this._inComment;case 2:return this._inString;case 3:return this._inRegEx}}shouldAutoClose(e,t){if(e.getTokenCount()===0)return!0;const i=e.findTokenIndexAtOffset(t-2),n=e.getStandardTokenType(i);return this.isOK(n)}_findNeutralCharacterInRange(e,t){for(let i=e;i<=t;i++){const n=String.fromCharCode(i);if(!this.open.includes(n)&&!this.close.includes(n))return n}return null}findNeutralCharacter(){return this._neutralCharacterSearched||(this._neutralCharacterSearched=!0,this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(48,57)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(97,122)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(65,90))),this._neutralCharacter}}class K4e{constructor(e){this.autoClosingPairsOpenByStart=new Map,this.autoClosingPairsOpenByEnd=new Map,this.autoClosingPairsCloseByStart=new Map,this.autoClosingPairsCloseByEnd=new Map,this.autoClosingPairsCloseSingleChar=new Map;for(const t of e)mw(this.autoClosingPairsOpenByStart,t.open.charAt(0),t),mw(this.autoClosingPairsOpenByEnd,t.open.charAt(t.open.length-1),t),mw(this.autoClosingPairsCloseByStart,t.close.charAt(0),t),mw(this.autoClosingPairsCloseByEnd,t.close.charAt(t.close.length-1),t),t.close.length===1&&t.open.length===1&&mw(this.autoClosingPairsCloseSingleChar,t.close,t)}}function mw(s,e,t){s.has(e)?s.get(e).push(t):s.set(e,[t])}const c1=class c1{constructor(e){if(e.autoClosingPairs?this._autoClosingPairs=e.autoClosingPairs.map(t=>new Hj(t)):e.brackets?this._autoClosingPairs=e.brackets.map(t=>new Hj({open:t[0],close:t[1]})):this._autoClosingPairs=[],e.__electricCharacterSupport&&e.__electricCharacterSupport.docComment){const t=e.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new Hj({open:t.open,close:t.close||""}))}this._autoCloseBeforeForQuotes=typeof e.autoCloseBefore=="string"?e.autoCloseBefore:c1.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets=typeof e.autoCloseBefore=="string"?e.autoCloseBefore:c1.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=e.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(e){return e?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}};c1.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=`;:.,=}])>
- `,c1.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS=`'"\`;:.,=}])>
- `;let S8=c1;function FS(s,e){const t=s.getCount(),i=s.findTokenIndexAtOffset(e),n=s.getLanguageId(i);let o=i;for(;o+1<t&&s.getLanguageId(o+1)===n;)o++;let r=i;for(;r>0&&s.getLanguageId(r-1)===n;)r--;return new q4e(s,n,r,o+1,s.getStartOffset(r),s.getEndOffset(o))}class q4e{constructor(e,t,i,n,o,r){this._scopedLineTokensBrand=void 0,this._actual=e,this.languageId=t,this._firstTokenIndex=i,this._lastTokenIndex=n,this.firstCharOffset=o,this._lastCharOffset=r,this.languageIdCodec=e.languageIdCodec}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getLineLength(){return this._lastCharOffset-this.firstCharOffset}getActualLineContentBefore(e){return this._actual.getLineContent().substring(0,this.firstCharOffset+e)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}toIViewLineTokens(){return this._actual.sliceAndInflate(this.firstCharOffset,this._lastCharOffset,0)}}function Jp(s){return(s&3)!==0}const Zhe=typeof Buffer<"u";let Kj;class X3{static wrap(e){return Zhe&&!Buffer.isBuffer(e)&&(e=Buffer.from(e.buffer,e.byteOffset,e.byteLength)),new X3(e)}constructor(e){this.buffer=e,this.byteLength=this.buffer.byteLength}toString(){return Zhe?this.buffer.toString():(Kj||(Kj=new TextDecoder),Kj.decode(this.buffer))}}function $4e(s,e){return s[e+0]<<0>>>0|s[e+1]<<8>>>0}function eKe(s,e,t){s[t+0]=e&255,e=e>>>8,s[t+1]=e&255}function km(s,e){return s[e]*2**24+s[e+1]*2**16+s[e+2]*2**8+s[e+3]}function xm(s,e,t){s[t+3]=e,e=e>>>8,s[t+2]=e,e=e>>>8,s[t+1]=e,e=e>>>8,s[t]=e}function She(s,e){return s[e]}function Nhe(s,e,t){s[t]=e}let qj;function WSe(){return qj||(qj=new TextDecoder("UTF-16LE")),qj}let $j;function tKe(){return $j||($j=new TextDecoder("UTF-16BE")),$j}let eP;function ySe(){return eP||(eP=hZe()?WSe():tKe()),eP}function iKe(s,e,t){const i=new Uint16Array(s.buffer,e,t);return t>0&&(i[0]===65279||i[0]===65534)?nKe(s,e,t):WSe().decode(i)}function nKe(s,e,t){const i=[];let n=0;for(let o=0;o<t;o++){const r=$4e(s,e);e+=2,i[n++]=String.fromCharCode(r)}return i.join("")}class gM{constructor(e){this._capacity=e|0,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}reset(){this._completedStrings=null,this._bufferLength=0}build(){return this._completedStrings!==null?(this._flushBuffer(),this._completedStrings.join("")):this._buildBuffer()}_buildBuffer(){if(this._bufferLength===0)return"";const e=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return ySe().decode(e)}_flushBuffer(){const e=this._buildBuffer();this._bufferLength=0,this._completedStrings===null?this._completedStrings=[e]:this._completedStrings[this._completedStrings.length]=e}appendCharCode(e){const t=this._capacity-this._bufferLength;t<=1&&(t===0||Mr(e))&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendASCIICharCode(e){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendString(e){const t=e.length;if(this._bufferLength+t>=this._capacity){this._flushBuffer(),this._completedStrings[this._completedStrings.length]=e;return}for(let i=0;i<t;i++)this._buffer[this._bufferLength++]=e.charCodeAt(i)}}class mX{constructor(e,t,i,n,o,r){this._richEditBracketBrand=void 0,this.languageId=e,this.index=t,this.open=i,this.close=n,this.forwardRegex=o,this.reversedRegex=r,this._openSet=mX._toSet(this.open),this._closeSet=mX._toSet(this.close)}isOpen(e){return this._openSet.has(e)}isClose(e){return this._closeSet.has(e)}static _toSet(e){const t=new Set;for(const i of e)t.add(i);return t}}function sKe(s){const e=s.length;s=s.map(r=>[r[0].toLowerCase(),r[1].toLowerCase()]);const t=[];for(let r=0;r<e;r++)t[r]=r;const i=(r,l)=>{const[a,d]=r,[c,h]=l;return a===c||a===h||d===c||d===h},n=(r,l)=>{const a=Math.min(r,l),d=Math.max(r,l);for(let c=0;c<e;c++)t[c]===d&&(t[c]=a)};for(let r=0;r<e;r++){const l=s[r];for(let a=r+1;a<e;a++){const d=s[a];i(l,d)&&n(t[r],t[a])}}const o=[];for(let r=0;r<e;r++){const l=[],a=[];for(let d=0;d<e;d++)if(t[d]===r){const[c,h]=s[d];l.push(c),a.push(h)}l.length>0&&o.push({open:l,close:a})}return o}class oKe{constructor(e,t){this._richEditBracketsBrand=void 0;const i=sKe(t);this.brackets=i.map((n,o)=>new mX(e,o,n.open,n.close,rKe(n.open,n.close,i,o),lKe(n.open,n.close,i,o))),this.forwardRegex=aKe(this.brackets),this.reversedRegex=dKe(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const n of this.brackets){for(const o of n.open)this.textIsBracket[o]=n,this.textIsOpenBracket[o]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,o.length);for(const o of n.close)this.textIsBracket[o]=n,this.textIsOpenBracket[o]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,o.length)}}}function QSe(s,e,t,i){for(let n=0,o=e.length;n<o;n++){if(n===t)continue;const r=e[n];for(const l of r.open)l.indexOf(s)>=0&&i.push(l);for(const l of r.close)l.indexOf(s)>=0&&i.push(l)}}function MSe(s,e){return s.length-e.length}function Y3(s){if(s.length<=1)return s;const e=[],t=new Set;for(const i of s)t.has(i)||(e.push(i),t.add(i));return e}function rKe(s,e,t,i){let n=[];n=n.concat(s),n=n.concat(e);for(let o=0,r=n.length;o<r;o++)QSe(n[o],t,i,n);return n=Y3(n),n.sort(MSe),n.reverse(),Kv(n)}function lKe(s,e,t,i){let n=[];n=n.concat(s),n=n.concat(e);for(let o=0,r=n.length;o<r;o++)QSe(n[o],t,i,n);return n=Y3(n),n.sort(MSe),n.reverse(),Kv(n.map(_se))}function aKe(s){let e=[];for(const t of s){for(const i of t.open)e.push(i);for(const i of t.close)e.push(i)}return e=Y3(e),Kv(e)}function dKe(s){let e=[];for(const t of s){for(const i of t.open)e.push(i);for(const i of t.close)e.push(i)}return e=Y3(e),Kv(e.map(_se))}function cKe(s){const e=/^[\w ]+$/.test(s);return s=nh(s),e?`\\b${s}\\b`:s}function Kv(s,e){const t=`(${s.map(cKe).join(")|(")})`;return vZe(t,!0,e)}const _se=function(){function s(i){const n=new Uint16Array(i.length);let o=0;for(let r=i.length-1;r>=0;r--)n[o++]=i.charCodeAt(r);return ySe().decode(n)}let e=null,t=null;return function(n){return e!==n&&(e=n,t=s(e)),t}}();class pu{static _findPrevBracketInText(e,t,i,n){const o=i.match(e);if(!o)return null;const r=i.length-(o.index||0),l=o[0].length,a=n+r;return new z(t,a-l+1,t,a+1)}static findPrevBracketInRange(e,t,i,n,o){const l=_se(i).substring(i.length-o,i.length-n);return this._findPrevBracketInText(e,t,l,n)}static findNextBracketInText(e,t,i,n){const o=i.match(e);if(!o)return null;const r=o.index||0,l=o[0].length;if(l===0)return null;const a=n+r;return new z(t,a+1,t,a+1+l)}static findNextBracketInRange(e,t,i,n,o){const r=i.substring(n,o);return this.findNextBracketInText(e,t,r,n)}}class hKe{constructor(e){this._richEditBrackets=e}getElectricCharacters(){const e=[];if(this._richEditBrackets)for(const t of this._richEditBrackets.brackets)for(const i of t.close){const n=i.charAt(i.length-1);e.push(n)}return _f(e)}onElectricCharacter(e,t,i){if(!this._richEditBrackets||this._richEditBrackets.brackets.length===0)return null;const n=t.findTokenIndexAtOffset(i-1);if(Jp(t.getStandardTokenType(n)))return null;const o=this._richEditBrackets.reversedRegex,r=t.getLineContent().substring(0,i-1)+e,l=pu.findPrevBracketInRange(o,1,r,0,r.length);if(!l)return null;const a=r.substring(l.startColumn-1,l.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[a])return null;const c=t.getActualLineContentBefore(l.startColumn-1);return/^\s*$/.test(c)?{matchOpenBracket:a}:null}}function Ox(s){return s.global&&(s.lastIndex=0),!0}class uKe{constructor(e){this._indentationRules=e}shouldIncrease(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&Ox(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(e))}shouldDecrease(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&Ox(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(e))}shouldIndentNextLine(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&Ox(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(e))}shouldIgnore(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&Ox(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(e))}getIndentMetadata(e){let t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}class AW{constructor(e){e=e||{},e.brackets=e.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],e.brackets.forEach(t=>{const i=AW._createOpenBracketRegExp(t[0]),n=AW._createCloseBracketRegExp(t[1]);i&&n&&this._brackets.push({open:t[0],openRegExp:i,close:t[1],closeRegExp:n})}),this._regExpRules=e.onEnterRules||[]}onEnter(e,t,i,n){if(e>=3)for(let o=0,r=this._regExpRules.length;o<r;o++){const l=this._regExpRules[o];if([{reg:l.beforeText,text:i},{reg:l.afterText,text:n},{reg:l.previousLineText,text:t}].every(d=>d.reg?(d.reg.lastIndex=0,d.reg.test(d.text)):!0))return l.action}if(e>=2&&i.length>0&&n.length>0)for(let o=0,r=this._brackets.length;o<r;o++){const l=this._brackets[o];if(l.openRegExp.test(i)&&l.closeRegExp.test(n))return{indentAction:ar.IndentOutdent}}if(e>=2&&i.length>0){for(let o=0,r=this._brackets.length;o<r;o++)if(this._brackets[o].openRegExp.test(i))return{indentAction:ar.Indent}}return null}static _createOpenBracketRegExp(e){let t=nh(e);return/\B/.test(t.charAt(0))||(t="\\b"+t),t+="\\s*$",AW._safeRegExp(t)}static _createCloseBracketRegExp(e){let t=nh(e);return/\B/.test(t.charAt(t.length-1))||(t=t+"\\b"),t="^\\s*"+t,AW._safeRegExp(t)}static _safeRegExp(e){try{return new RegExp(e)}catch(t){return wi(t),null}}}const Hi=un("configurationService");function N8(s,e){const t=Object.create(null);for(const i in s)wSe(t,i,s[i],e);return t}function wSe(s,e,t,i){const n=e.split("."),o=n.pop();let r=s;for(let l=0;l<n.length;l++){const a=n[l];let d=r[a];switch(typeof d){case"undefined":d=r[a]=Object.create(null);break;case"object":if(d===null){i(`Ignoring ${e} as ${n.slice(0,l+1).join(".")} is null`);return}break;default:i(`Ignoring ${e} as ${n.slice(0,l+1).join(".")} is ${JSON.stringify(d)}`);return}r=d}if(typeof r=="object"&&r!==null)try{r[o]=t}catch{i(`Ignoring ${e} as ${n.join(".")} is ${JSON.stringify(r)}`)}else i(`Ignoring ${e} as ${n.join(".")} is ${JSON.stringify(r)}`)}function mKe(s,e){const t=e.split(".");TSe(s,t)}function TSe(s,e){const t=e.shift();if(e.length===0){delete s[t];return}if(Object.keys(s).indexOf(t)!==-1){const i=s[t];typeof i=="object"&&!Array.isArray(i)&&(TSe(i,e),Object.keys(i).length===0&&delete s[t])}}function Rhe(s,e,t){function i(r,l){let a=r;for(const d of l){if(typeof a!="object"||a===null)return;a=a[d]}return a}const n=e.split("."),o=i(s,n);return typeof o>"u"?t:o}function pKe(s){return s.replace(/[\[\]]/g,"")}const ao=un("languageService");class mg{constructor(e,t=[],i=!1){this.ctor=e,this.staticArguments=t,this.supportsDelayedInstantiation=i}}const CSe=[];function Fn(s,e,t){e instanceof mg||(e=new mg(e,[],!!t)),CSe.push([s,e])}function Vhe(){return CSe}const Bo=Object.freeze({text:"text/plain",binary:"application/octet-stream",unknown:"application/unknown",markdown:"text/markdown",latex:"text/latex",uriList:"text/uri-list"}),_3={JSONContribution:"base.contributions.json"};function gKe(s){return s.length>0&&s.charAt(s.length-1)==="#"?s.substring(0,s.length-1):s}class fKe{constructor(){this._onDidChangeSchema=new fe,this.schemasById={}}registerSchema(e,t){this.schemasById[gKe(e)]=t,this._onDidChangeSchema.fire(e)}notifySchemaChanged(e){this._onDidChangeSchema.fire(e)}}const bKe=new fKe;fo.add(_3.JSONContribution,bKe);const rm={Configuration:"base.contributions.configuration"},pw="vscode://schemas/settings/resourceLanguage",Whe=fo.as(_3.JSONContribution);class UKe{constructor(){this.registeredConfigurationDefaults=[],this.overrideIdentifiers=new Set,this._onDidSchemaChange=new fe,this._onDidUpdateConfiguration=new fe,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:F("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},Whe.registerSchema(pw,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(e,t=!0){this.registerConfigurations([e],t)}registerConfigurations(e,t=!0){const i=new Set;this.doRegisterConfigurations(e,t,i),Whe.registerSchema(pw,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:i})}registerDefaultConfigurations(e){const t=new Set;this.doRegisterDefaultConfigurations(e,t),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:t,defaultsOverrides:!0})}doRegisterDefaultConfigurations(e,t){this.registeredConfigurationDefaults.push(...e);const i=[];for(const{overrides:n,source:o}of e)for(const r in n){t.add(r);const l=this.configurationDefaultsOverrides.get(r)??this.configurationDefaultsOverrides.set(r,{configurationDefaultOverrides:[]}).get(r),a=n[r];if(l.configurationDefaultOverrides.push({value:a,source:o}),xF.test(r)){const d=this.mergeDefaultConfigurationsForOverrideIdentifier(r,a,o,l.configurationDefaultOverrideValue);if(!d)continue;l.configurationDefaultOverrideValue=d,this.updateDefaultOverrideProperty(r,d,o),i.push(...pX(r))}else{const d=this.mergeDefaultConfigurationsForConfigurationProperty(r,a,o,l.configurationDefaultOverrideValue);if(!d)continue;l.configurationDefaultOverrideValue=d;const c=this.configurationProperties[r];c&&(this.updatePropertyDefaultValue(r,c),this.updateSchema(r,c))}}this.doRegisterOverrideIdentifiers(i)}updateDefaultOverrideProperty(e,t,i){const n={type:"object",default:t.value,description:F("defaultLanguageConfiguration.description","Configure settings to be overridden for the {0} language.",pKe(e)),$ref:pw,defaultDefaultValue:t.value,source:i,defaultValueSource:i};this.configurationProperties[e]=n,this.defaultLanguageConfigurationOverridesNode.properties[e]=n}mergeDefaultConfigurationsForOverrideIdentifier(e,t,i,n){const o=(n==null?void 0:n.value)||{},r=(n==null?void 0:n.source)??new Map;if(!(r instanceof Map)){console.error("objectConfigurationSources is not a Map");return}for(const l of Object.keys(t)){const a=t[l];if(_r(a)&&(fa(o[l])||_r(o[l]))){if(o[l]={...o[l]??{},...a},i)for(const c in a)r.set(`${l}.${c}`,i)}else o[l]=a,i?r.set(l,i):r.delete(l)}return{value:o,source:r}}mergeDefaultConfigurationsForConfigurationProperty(e,t,i,n){const o=this.configurationProperties[e],r=(n==null?void 0:n.value)??(o==null?void 0:o.defaultDefaultValue);let l=i;if(_r(t)&&(o!==void 0&&o.type==="object"||o===void 0&&(fa(r)||_r(r)))){if(l=(n==null?void 0:n.source)??new Map,!(l instanceof Map)){console.error("defaultValueSource is not a Map");return}for(const d in t)i&&l.set(`${e}.${d}`,i);t={..._r(r)?r:{},...t}}return{value:t,source:l}}registerOverrideIdentifiers(e){this.doRegisterOverrideIdentifiers(e),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(e){for(const t of e)this.overrideIdentifiers.add(t);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(e,t,i){e.forEach(n=>{this.validateAndRegisterProperties(n,t,n.extensionInfo,n.restrictedProperties,void 0,i),this.configurationContributors.push(n),this.registerJSONConfiguration(n)})}validateAndRegisterProperties(e,t=!0,i,n,o=3,r){var d;o=Xc(e.scope)?o:e.scope;const l=e.properties;if(l)for(const c in l){const h=l[c];if(t&&ZKe(c,h)){delete l[c];continue}if(h.source=i,h.defaultDefaultValue=l[c].default,this.updatePropertyDefaultValue(c,h),xF.test(c)?h.scope=void 0:(h.scope=Xc(h.scope)?o:h.scope,h.restricted=Xc(h.restricted)?!!(n!=null&&n.includes(c)):h.restricted),l[c].hasOwnProperty("included")&&!l[c].included){this.excludedConfigurationProperties[c]=l[c],delete l[c];continue}else this.configurationProperties[c]=l[c],(d=l[c].policy)!=null&&d.name&&this.policyConfigurations.set(l[c].policy.name,c);!l[c].deprecationMessage&&l[c].markdownDeprecationMessage&&(l[c].deprecationMessage=l[c].markdownDeprecationMessage),r.add(c)}const a=e.allOf;if(a)for(const c of a)this.validateAndRegisterProperties(c,t,i,n,o,r)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(e){const t=i=>{const n=i.properties;if(n)for(const r in n)this.updateSchema(r,n[r]);const o=i.allOf;o==null||o.forEach(t)};t(e)}updateSchema(e,t){switch(t.scope){case 1:break;case 2:break;case 6:break;case 3:break;case 4:break;case 5:this.resourceLanguageSettingsSchema.properties[e]=t;break}}updateOverridePropertyPatternKey(){for(const e of this.overrideIdentifiers.values()){const t=`[${e}]`,i={type:"object",description:F("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:F("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:pw};this.updatePropertyDefaultValue(t,i)}}registerOverridePropertyPatternKey(){F("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),F("overrideSettings.errorMessage","This setting does not support per-language configuration."),this._onDidSchemaChange.fire()}updatePropertyDefaultValue(e,t){var r;const i=(r=this.configurationDefaultsOverrides.get(e))==null?void 0:r.configurationDefaultOverrideValue;let n,o;i&&(!t.disallowConfigurationDefault||!i.source)&&(n=i.value,o=i.source),fa(n)&&(n=t.defaultDefaultValue,o=void 0),fa(n)&&(n=AKe(t.type)),t.default=n,t.defaultValueSource=o}}const BSe="\\[([^\\]]+)\\]",yhe=new RegExp(BSe,"g"),FKe=`^(${BSe})+$`,xF=new RegExp(FKe);function pX(s){const e=[];if(xF.test(s)){let t=yhe.exec(s);for(;t!=null&&t.length;){const i=t[1].trim();i&&e.push(i),t=yhe.exec(s)}}return _f(e)}function AKe(s){switch(Array.isArray(s)?s[0]:s){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}const pD=new UKe;fo.add(rm.Configuration,pD);function ZKe(s,e){var t,i,n,o;return s.trim()?xF.test(s)?F("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",s):pD.getConfigurationProperties()[s]!==void 0?F("config.property.duplicate","Cannot register '{0}'. This property is already registered.",s):(t=e.policy)!=null&&t.name&&pD.getPolicyConfigurations().get((i=e.policy)==null?void 0:i.name)!==void 0?F("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",s,(n=e.policy)==null?void 0:n.name,pD.getPolicyConfigurations().get((o=e.policy)==null?void 0:o.name)):null:F("config.property.empty","Cannot register an empty property")}const SKe={ModesRegistry:"editor.modesRegistry"};class NKe{constructor(){this._onDidChangeLanguages=new fe,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(e){return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let t=0,i=this._languages.length;t<i;t++)if(this._languages[t]===e){this._languages.splice(t,1);return}}}}getLanguages(){return this._languages}}const Vy=new NKe;fo.add(SKe.ModesRegistry,Vy);const Ya="plaintext",RKe=".txt";Vy.registerLanguage({id:Ya,extensions:[RKe],aliases:[F("plainText.alias","Plain Text"),"text"],mimetypes:[Bo.text]});fo.as(rm.Configuration).registerDefaultConfigurations([{overrides:{"[plaintext]":{"editor.unicodeHighlight.ambiguousCharacters":!1,"editor.unicodeHighlight.invisibleCharacters":!1}}}]);class VKe{constructor(e,t){this.languageId=e;const i=t.brackets?Qhe(t.brackets):[],n=new Kce(l=>{const a=new Set;return{info:new WKe(this,l,a),closing:a}}),o=new Kce(l=>{const a=new Set,d=new Set;return{info:new yKe(this,l,a,d),opening:a,openingColorized:d}});for(const[l,a]of i){const d=n.get(l),c=o.get(a);d.closing.add(c.info),c.opening.add(d.info)}const r=t.colorizedBracketPairs?Qhe(t.colorizedBracketPairs):i.filter(l=>!(l[0]==="<"&&l[1]===">"));for(const[l,a]of r){const d=n.get(l),c=o.get(a);d.closing.add(c.info),c.openingColorized.add(d.info),c.opening.add(d.info)}this._openingBrackets=new Map([...n.cachedValues].map(([l,a])=>[l,a.info])),this._closingBrackets=new Map([...o.cachedValues].map(([l,a])=>[l,a.info]))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(e){return this._openingBrackets.get(e)}getClosingBracketInfo(e){return this._closingBrackets.get(e)}getBracketInfo(e){return this.getOpeningBracketInfo(e)||this.getClosingBracketInfo(e)}getBracketRegExp(e){const t=Array.from([...this._openingBrackets.keys(),...this._closingBrackets.keys()]);return Kv(t,e)}}function Qhe(s){return s.filter(([e,t])=>e!==""&&t!=="")}class LSe{constructor(e,t){this.config=e,this.bracketText=t}get languageId(){return this.config.languageId}}class WKe extends LSe{constructor(e,t,i){super(e,t),this.openedBrackets=i,this.isOpeningBracket=!0}}class yKe extends LSe{constructor(e,t,i,n){super(e,t),this.openingBrackets=i,this.openingColorizedBrackets=n,this.isOpeningBracket=!1}closes(e){return e.config!==this.config?!1:this.openingBrackets.has(e)}closesColorized(e){return e.config!==this.config?!1:this.openingColorizedBrackets.has(e)}getOpeningBrackets(){return[...this.openingBrackets]}}var QKe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Mhe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class tP{constructor(e){this.languageId=e}affects(e){return this.languageId?this.languageId===e:!0}}const bo=un("languageConfigurationService");let R8=class extends be{constructor(e,t){super(),this.configurationService=e,this.languageService=t,this._registry=this._register(new CKe),this.onDidChangeEmitter=this._register(new fe),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;const i=new Set(Object.values(V8));this._register(this.configurationService.onDidChangeConfiguration(n=>{const o=n.change.keys.some(l=>i.has(l)),r=n.change.overrides.filter(([l,a])=>a.some(d=>i.has(d))).map(([l])=>l);if(o)this.configurations.clear(),this.onDidChangeEmitter.fire(new tP(void 0));else for(const l of r)this.languageService.isRegisteredLanguageId(l)&&(this.configurations.delete(l),this.onDidChangeEmitter.fire(new tP(l)))})),this._register(this._registry.onDidChange(n=>{this.configurations.delete(n.languageId),this.onDidChangeEmitter.fire(new tP(n.languageId))}))}register(e,t,i){return this._registry.register(e,t,i)}getLanguageConfiguration(e){let t=this.configurations.get(e);return t||(t=MKe(e,this._registry,this.configurationService,this.languageService),this.configurations.set(e,t)),t}};R8=QKe([Mhe(0,Hi),Mhe(1,ao)],R8);function MKe(s,e,t,i){let n=e.getLanguageConfiguration(s);if(!n){if(!i.isRegisteredLanguageId(s))return new C1(s,{});n=new C1(s,{})}const o=wKe(n.languageId,t),r=kSe([n.underlyingConfig,o]);return new C1(n.languageId,r)}const V8={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function wKe(s,e){const t=e.getValue(V8.brackets,{overrideIdentifier:s}),i=e.getValue(V8.colorizedBracketPairs,{overrideIdentifier:s});return{brackets:whe(t),colorizedBracketPairs:whe(i)}}function whe(s){if(Array.isArray(s))return s.map(e=>{if(!(!Array.isArray(e)||e.length!==2))return[e[0],e[1]]}).filter(e=>!!e)}function vSe(s,e,t){const i=s.getLineContent(e);let n=Rs(i);return n.length>t-1&&(n=n.substring(0,t-1)),n}class TKe{constructor(e){this.languageId=e,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(e,t){const i=new The(e,t,++this._order);return this._entries.push(i),this._resolved=null,ei(()=>{for(let n=0;n<this._entries.length;n++)if(this._entries[n]===i){this._entries.splice(n,1),this._resolved=null;break}})}getResolvedConfiguration(){if(!this._resolved){const e=this._resolve();e&&(this._resolved=new C1(this.languageId,e))}return this._resolved}_resolve(){return this._entries.length===0?null:(this._entries.sort(The.cmp),kSe(this._entries.map(e=>e.configuration)))}}function kSe(s){let e={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(const t of s)e={comments:t.comments||e.comments,brackets:t.brackets||e.brackets,wordPattern:t.wordPattern||e.wordPattern,indentationRules:t.indentationRules||e.indentationRules,onEnterRules:t.onEnterRules||e.onEnterRules,autoClosingPairs:t.autoClosingPairs||e.autoClosingPairs,surroundingPairs:t.surroundingPairs||e.surroundingPairs,autoCloseBefore:t.autoCloseBefore||e.autoCloseBefore,folding:t.folding||e.folding,colorizedBracketPairs:t.colorizedBracketPairs||e.colorizedBracketPairs,__electricCharacterSupport:t.__electricCharacterSupport||e.__electricCharacterSupport};return e}class The{constructor(e,t,i){this.configuration=e,this.priority=t,this.order=i}static cmp(e,t){return e.priority===t.priority?e.order-t.order:e.priority-t.priority}}class Che{constructor(e){this.languageId=e}}class CKe extends be{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,this._register(this.register(Ya,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(e,t,i=0){let n=this._entries.get(e);n||(n=new TKe(e),this._entries.set(e,n));const o=n.register(t,i);return this._onDidChange.fire(new Che(e)),ei(()=>{o.dispose(),this._onDidChange.fire(new Che(e))})}getLanguageConfiguration(e){const t=this._entries.get(e);return(t==null?void 0:t.getResolvedConfiguration())||null}}class C1{constructor(e,t){this.languageId=e,this.underlyingConfig=t,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new AW(this.underlyingConfig):null,this.comments=C1._handleComments(this.underlyingConfig),this.characterPair=new S8(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||Use,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new uKe(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new VKe(e,this.underlyingConfig)}getWordDefinition(){return Fse(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new oKe(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new hKe(this.brackets)),this._electricCharacter}onEnter(e,t,i,n){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,i,n):null}getAutoClosingPairs(){return new K4e(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(e){return this.characterPair.getAutoCloseBeforeSet(e)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(e){const t=e.comments;if(!t)return null;const i={};if(t.lineComment&&(i.lineCommentToken=t.lineComment),t.blockComment){const[n,o]=t.blockComment;i.blockCommentStartToken=n,i.blockCommentEndToken=o}return i}}Fn(bo,R8,1);class Db{constructor(e,t,i,n){this.originalStart=e,this.originalLength=t,this.modifiedStart=i,this.modifiedLength=n}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}class Bhe{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let i=0,n=e.length;i<n;i++)t[i]=e.charCodeAt(i);return t}}function BKe(s,e,t){return new Rg(new Bhe(s),new Bhe(e)).ComputeDiff(t).changes}class kR{static Assert(e,t){if(!e)throw new Error(t)}}class xR{static Copy(e,t,i,n,o){for(let r=0;r<o;r++)i[n+r]=e[t+r]}static Copy2(e,t,i,n,o){for(let r=0;r<o;r++)i[n+r]=e[t+r]}}class Lhe{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new Db(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class Rg{constructor(e,t,i=null){this.ContinueProcessingPredicate=i,this._originalSequence=e,this._modifiedSequence=t;const[n,o,r]=Rg._getElements(e),[l,a,d]=Rg._getElements(t);this._hasStrings=r&&d,this._originalStringElements=n,this._originalElementsOrHash=o,this._modifiedStringElements=l,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&typeof e[0]=="string"}static _getElements(e){const t=e.getElements();if(Rg._isStringArray(t)){const i=new Int32Array(t.length);for(let n=0,o=t.length;n<o;n++)i[n]=kse(t[n],0);return[t,i,!0]}return t instanceof Int32Array?[[],t,!1]:[[],new Int32Array(t),!1]}ElementsAreEqual(e,t){return this._originalElementsOrHash[e]!==this._modifiedElementsOrHash[t]?!1:this._hasStrings?this._originalStringElements[e]===this._modifiedStringElements[t]:!0}ElementsAreStrictEqual(e,t){if(!this.ElementsAreEqual(e,t))return!1;const i=Rg._getStrictElement(this._originalSequence,e),n=Rg._getStrictElement(this._modifiedSequence,t);return i===n}static _getStrictElement(e,t){return typeof e.getStrictElement=="function"?e.getStrictElement(t):null}OriginalElementsAreEqual(e,t){return this._originalElementsOrHash[e]!==this._originalElementsOrHash[t]?!1:this._hasStrings?this._originalStringElements[e]===this._originalStringElements[t]:!0}ModifiedElementsAreEqual(e,t){return this._modifiedElementsOrHash[e]!==this._modifiedElementsOrHash[t]?!1:this._hasStrings?this._modifiedStringElements[e]===this._modifiedStringElements[t]:!0}ComputeDiff(e){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,e)}_ComputeDiff(e,t,i,n,o){const r=[!1];let l=this.ComputeDiffRecursive(e,t,i,n,r);return o&&(l=this.PrettifyChanges(l)),{quitEarly:r[0],changes:l}}ComputeDiffRecursive(e,t,i,n,o){for(o[0]=!1;e<=t&&i<=n&&this.ElementsAreEqual(e,i);)e++,i++;for(;t>=e&&n>=i&&this.ElementsAreEqual(t,n);)t--,n--;if(e>t||i>n){let h;return i<=n?(kR.Assert(e===t+1,"originalStart should only be one more than originalEnd"),h=[new Db(e,0,i,n-i+1)]):e<=t?(kR.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),h=[new Db(e,t-e+1,i,0)]):(kR.Assert(e===t+1,"originalStart should only be one more than originalEnd"),kR.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),h=[]),h}const r=[0],l=[0],a=this.ComputeRecursionPoint(e,t,i,n,r,l,o),d=r[0],c=l[0];if(a!==null)return a;if(!o[0]){const h=this.ComputeDiffRecursive(e,d,i,c,o);let u=[];return o[0]?u=[new Db(d+1,t-(d+1)+1,c+1,n-(c+1)+1)]:u=this.ComputeDiffRecursive(d+1,t,c+1,n,o),this.ConcatenateChanges(h,u)}return[new Db(e,t-e+1,i,n-i+1)]}WALKTRACE(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g,f,b,U){let S=null,Z=null,R=new Lhe,y=t,N=i,w=m[0]-f[0]-n,Q=-1073741824,C=this.m_forwardHistory.length-1;do{const v=w+e;v===y||v<N&&d[v-1]<d[v+1]?(h=d[v+1],p=h-w-n,h<Q&&R.MarkNextChange(),Q=h,R.AddModifiedElement(h+1,p),w=v+1-e):(h=d[v-1]+1,p=h-w-n,h<Q&&R.MarkNextChange(),Q=h-1,R.AddOriginalElement(h,p+1),w=v-1-e),C>=0&&(d=this.m_forwardHistory[C],e=d[0],y=1,N=d.length-1)}while(--C>=-1);if(S=R.getReverseChanges(),U[0]){let v=m[0]+1,Y=f[0]+1;if(S!==null&&S.length>0){const J=S[S.length-1];v=Math.max(v,J.getOriginalEnd()),Y=Math.max(Y,J.getModifiedEnd())}Z=[new Db(v,u-v+1,Y,g-Y+1)]}else{R=new Lhe,y=r,N=l,w=m[0]-f[0]-a,Q=1073741824,C=b?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const v=w+o;v===y||v<N&&c[v-1]>=c[v+1]?(h=c[v+1]-1,p=h-w-a,h>Q&&R.MarkNextChange(),Q=h+1,R.AddOriginalElement(h+1,p+1),w=v+1-o):(h=c[v-1],p=h-w-a,h>Q&&R.MarkNextChange(),Q=h,R.AddModifiedElement(h+1,p+1),w=v-1-o),C>=0&&(c=this.m_reverseHistory[C],o=c[0],y=1,N=c.length-1)}while(--C>=-1);Z=R.getChanges()}return this.ConcatenateChanges(S,Z)}ComputeRecursionPoint(e,t,i,n,o,r,l){let a=0,d=0,c=0,h=0,u=0,m=0;e--,i--,o[0]=0,r[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const p=t-e+(n-i),g=p+1,f=new Int32Array(g),b=new Int32Array(g),U=n-i,S=t-e,Z=e-i,R=t-n,N=(S-U)%2===0;f[U]=e,b[S]=t,l[0]=!1;for(let w=1;w<=p/2+1;w++){let Q=0,C=0;c=this.ClipDiagonalBound(U-w,w,U,g),h=this.ClipDiagonalBound(U+w,w,U,g);for(let Y=c;Y<=h;Y+=2){Y===c||Y<h&&f[Y-1]<f[Y+1]?a=f[Y+1]:a=f[Y-1]+1,d=a-(Y-U)-Z;const J=a;for(;a<t&&d<n&&this.ElementsAreEqual(a+1,d+1);)a++,d++;if(f[Y]=a,a+d>Q+C&&(Q=a,C=d),!N&&Math.abs(Y-S)<=w-1&&a>=b[Y])return o[0]=a,r[0]=d,J<=b[Y]&&1447>0&&w<=1447+1?this.WALKTRACE(U,c,h,Z,S,u,m,R,f,b,a,t,o,d,n,r,N,l):null}const v=(Q-e+(C-i)-w)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(Q,v))return l[0]=!0,o[0]=Q,r[0]=C,v>0&&1447>0&&w<=1447+1?this.WALKTRACE(U,c,h,Z,S,u,m,R,f,b,a,t,o,d,n,r,N,l):(e++,i++,[new Db(e,t-e+1,i,n-i+1)]);u=this.ClipDiagonalBound(S-w,w,S,g),m=this.ClipDiagonalBound(S+w,w,S,g);for(let Y=u;Y<=m;Y+=2){Y===u||Y<m&&b[Y-1]>=b[Y+1]?a=b[Y+1]-1:a=b[Y-1],d=a-(Y-S)-R;const J=a;for(;a>e&&d>i&&this.ElementsAreEqual(a,d);)a--,d--;if(b[Y]=a,N&&Math.abs(Y-U)<=w&&a<=f[Y])return o[0]=a,r[0]=d,J>=f[Y]&&1447>0&&w<=1447+1?this.WALKTRACE(U,c,h,Z,S,u,m,R,f,b,a,t,o,d,n,r,N,l):null}if(w<=1447){let Y=new Int32Array(h-c+2);Y[0]=U-c+1,xR.Copy2(f,c,Y,1,h-c+1),this.m_forwardHistory.push(Y),Y=new Int32Array(m-u+2),Y[0]=S-u+1,xR.Copy2(b,u,Y,1,m-u+1),this.m_reverseHistory.push(Y)}}return this.WALKTRACE(U,c,h,Z,S,u,m,R,f,b,a,t,o,d,n,r,N,l)}PrettifyChanges(e){for(let t=0;t<e.length;t++){const i=e[t],n=t<e.length-1?e[t+1].originalStart:this._originalElementsOrHash.length,o=t<e.length-1?e[t+1].modifiedStart:this._modifiedElementsOrHash.length,r=i.originalLength>0,l=i.modifiedLength>0;for(;i.originalStart+i.originalLength<n&&i.modifiedStart+i.modifiedLength<o&&(!r||this.OriginalElementsAreEqual(i.originalStart,i.originalStart+i.originalLength))&&(!l||this.ModifiedElementsAreEqual(i.modifiedStart,i.modifiedStart+i.modifiedLength));){const d=this.ElementsAreStrictEqual(i.originalStart,i.modifiedStart);if(this.ElementsAreStrictEqual(i.originalStart+i.originalLength,i.modifiedStart+i.modifiedLength)&&!d)break;i.originalStart++,i.modifiedStart++}const a=[null];if(t<e.length-1&&this.ChangesOverlap(e[t],e[t+1],a)){e[t]=a[0],e.splice(t+1,1),t--;continue}}for(let t=e.length-1;t>=0;t--){const i=e[t];let n=0,o=0;if(t>0){const h=e[t-1];n=h.originalStart+h.originalLength,o=h.modifiedStart+h.modifiedLength}const r=i.originalLength>0,l=i.modifiedLength>0;let a=0,d=this._boundaryScore(i.originalStart,i.originalLength,i.modifiedStart,i.modifiedLength);for(let h=1;;h++){const u=i.originalStart-h,m=i.modifiedStart-h;if(u<n||m<o||r&&!this.OriginalElementsAreEqual(u,u+i.originalLength)||l&&!this.ModifiedElementsAreEqual(m,m+i.modifiedLength))break;const g=(u===n&&m===o?5:0)+this._boundaryScore(u,i.originalLength,m,i.modifiedLength);g>d&&(d=g,a=h)}i.originalStart-=a,i.modifiedStart-=a;const c=[null];if(t>0&&this.ChangesOverlap(e[t-1],e[t],c)){e[t-1]=c[0],e.splice(t,1),t++;continue}}if(this._hasStrings)for(let t=1,i=e.length;t<i;t++){const n=e[t-1],o=e[t],r=o.originalStart-n.originalStart-n.originalLength,l=n.originalStart,a=o.originalStart+o.originalLength,d=a-l,c=n.modifiedStart,h=o.modifiedStart+o.modifiedLength,u=h-c;if(r<5&&d<20&&u<20){const m=this._findBetterContiguousSequence(l,d,c,u,r);if(m){const[p,g]=m;(p!==n.originalStart+n.originalLength||g!==n.modifiedStart+n.modifiedLength)&&(n.originalLength=p-n.originalStart,n.modifiedLength=g-n.modifiedStart,o.originalStart=p+r,o.modifiedStart=g+r,o.originalLength=a-o.originalStart,o.modifiedLength=h-o.modifiedStart)}}}return e}_findBetterContiguousSequence(e,t,i,n,o){if(t<o||n<o)return null;const r=e+t-o+1,l=i+n-o+1;let a=0,d=0,c=0;for(let h=e;h<r;h++)for(let u=i;u<l;u++){const m=this._contiguousSequenceScore(h,u,o);m>0&&m>a&&(a=m,d=h,c=u)}return a>0?[d,c]:null}_contiguousSequenceScore(e,t,i){let n=0;for(let o=0;o<i;o++){if(!this.ElementsAreEqual(e+o,t+o))return 0;n+=this._originalStringElements[e+o].length}return n}_OriginalIsBoundary(e){return e<=0||e>=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._OriginalIsBoundary(i-1)||this._OriginalIsBoundary(i))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._ModifiedIsBoundary(i-1)||this._ModifiedIsBoundary(i))return!0}return!1}_boundaryScore(e,t,i,n){const o=this._OriginalRegionIsBoundary(e,t)?1:0,r=this._ModifiedRegionIsBoundary(i,n)?1:0;return o+r}ConcatenateChanges(e,t){const i=[];if(e.length===0||t.length===0)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],i)){const n=new Array(e.length+t.length-1);return xR.Copy(e,0,n,0,e.length-1),n[e.length-1]=i[0],xR.Copy(t,1,n,e.length,t.length-1),n}else{const n=new Array(e.length+t.length);return xR.Copy(e,0,n,0,e.length),xR.Copy(t,0,n,e.length,t.length),n}}ChangesOverlap(e,t,i){if(kR.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),kR.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const n=e.originalStart;let o=e.originalLength;const r=e.modifiedStart;let l=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(o=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(l=t.modifiedStart+t.modifiedLength-e.modifiedStart),i[0]=new Db(n,o,r,l),!0}else return i[0]=null,!1}ClipDiagonalBound(e,t,i,n){if(e>=0&&e<n)return e;const o=i,r=n-i-1,l=t%2===0;if(e<0){const a=o%2===0;return l===a?0:1}else{const a=r%2===0;return l===a?n-1:n-2}}}function gX(s){return s<0?0:s>255?255:s|0}function IR(s){return s<0?0:s>4294967295?4294967295:s|0}class fM{constructor(e){const t=gX(e);this._defaultValue=t,this._asciiMap=fM._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){const t=new Uint8Array(256);return t.fill(e),t}set(e,t){const i=gX(t);e>=0&&e<256?this._asciiMap[e]=i:this._map.set(e,i)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class fX{constructor(){this._actual=new fM(0)}add(e){this._actual.set(e,1)}has(e){return this._actual.get(e)===1}clear(){return this._actual.clear()}}class LKe{constructor(e,t,i){const n=new Uint8Array(e*t);for(let o=0,r=e*t;o<r;o++)n[o]=i;this._data=n,this.rows=e,this.cols=t}get(e,t){return this._data[e*this.cols+t]}set(e,t,i){this._data[e*this.cols+t]=i}}class vKe{constructor(e){let t=0,i=0;for(let o=0,r=e.length;o<r;o++){const[l,a,d]=e[o];a>t&&(t=a),l>i&&(i=l),d>i&&(i=d)}t++,i++;const n=new LKe(i,t,0);for(let o=0,r=e.length;o<r;o++){const[l,a,d]=e[o];n.set(l,a,d)}this._states=n,this._maxCharCode=t}nextState(e,t){return t<0||t>=this._maxCharCode?0:this._states.get(e,t)}}let iP=null;function kKe(){return iP===null&&(iP=new vKe([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),iP}let gw=null;function xKe(){if(gw===null){gw=new fM(0);const s=` <>'"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…`;for(let t=0;t<s.length;t++)gw.set(s.charCodeAt(t),1);const e=".,;:";for(let t=0;t<e.length;t++)gw.set(e.charCodeAt(t),2)}return gw}class bX{static _createLink(e,t,i,n,o){let r=o-1;do{const l=t.charCodeAt(r);if(e.get(l)!==2)break;r--}while(r>n);if(n>0){const l=t.charCodeAt(n-1),a=t.charCodeAt(r);(l===40&&a===41||l===91&&a===93||l===123&&a===125)&&r--}return{range:{startLineNumber:i,startColumn:n+1,endLineNumber:i,endColumn:r+2},url:t.substring(n,r+1)}}static computeLinks(e,t=kKe()){const i=xKe(),n=[];for(let o=1,r=e.getLineCount();o<=r;o++){const l=e.getLineContent(o),a=l.length;let d=0,c=0,h=0,u=1,m=!1,p=!1,g=!1,f=!1;for(;d<a;){let b=!1;const U=l.charCodeAt(d);if(u===13){let S;switch(U){case 40:m=!0,S=0;break;case 41:S=m?0:1;break;case 91:g=!0,p=!0,S=0;break;case 93:g=!1,S=p?0:1;break;case 123:f=!0,S=0;break;case 125:S=f?0:1;break;case 39:case 34:case 96:h===U?S=1:h===39||h===34||h===96?S=0:S=1;break;case 42:S=h===42?1:0;break;case 124:S=h===124?1:0;break;case 32:S=g?0:1;break;default:S=i.get(U)}S===1&&(n.push(bX._createLink(i,l,o,c,d)),b=!0)}else if(u===12){let S;U===91?(p=!0,S=0):S=i.get(U),S===1?b=!0:u=13}else u=t.nextState(u,U),u===0&&(b=!0);b&&(u=1,m=!1,p=!1,f=!1,c=d+1,h=U),d++}u===13&&n.push(bX._createLink(i,l,o,c,a))}return n}}function IKe(s){return!s||typeof s.getLineCount!="function"||typeof s.getLineContent!="function"?[]:bX.computeLinks(s)}const w_=class w_{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(e,t,i,n,o){if(e&&t){const r=this.doNavigateValueSet(t,o);if(r)return{range:e,value:r}}if(i&&n){const r=this.doNavigateValueSet(n,o);if(r)return{range:i,value:r}}return null}doNavigateValueSet(e,t){const i=this.numberReplace(e,t);return i!==null?i:this.textReplace(e,t)}numberReplace(e,t){const i=Math.pow(10,e.length-(e.lastIndexOf(".")+1));let n=Number(e);const o=parseFloat(e);return!isNaN(n)&&!isNaN(o)&&n===o?n===0&&!t?null:(n=Math.floor(n*i),n+=t?i:-i,String(n/i)):null}textReplace(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}valueSetsReplace(e,t,i){let n=null;for(let o=0,r=e.length;n===null&&o<r;o++)n=this.valueSetReplace(e[o],t,i);return n}valueSetReplace(e,t,i){let n=e.indexOf(t);return n>=0?(n+=i?1:-1,n<0?n=e.length-1:n%=e.length,e[n]):null}};w_.INSTANCE=new w_;let W8=w_;const fB=class fB{static getChannel(e){return e.getChannel(fB.CHANNEL_NAME)}static setChannel(e,t){e.setChannel(fB.CHANNEL_NAME,t)}};fB.CHANNEL_NAME="editorWorkerHost";let y8=fB;var vhe,khe;class EKe{constructor(e,t){this.uri=e,this.value=t}}function DKe(s){return Array.isArray(s)}const cS=class cS{constructor(e,t){if(this[vhe]="ResourceMap",e instanceof cS)this.map=new Map(e.map),this.toKey=t??cS.defaultToKey;else if(DKe(e)){this.map=new Map,this.toKey=t??cS.defaultToKey;for(const[i,n]of e)this.set(i,n)}else this.map=new Map,this.toKey=e??cS.defaultToKey}set(e,t){return this.map.set(this.toKey(e),new EKe(e,t)),this}get(e){var t;return(t=this.map.get(this.toKey(e)))==null?void 0:t.value}has(e){return this.map.has(this.toKey(e))}get size(){return this.map.size}clear(){this.map.clear()}delete(e){return this.map.delete(this.toKey(e))}forEach(e,t){typeof t<"u"&&(e=e.bind(t));for(const[i,n]of this.map)e(n.value,n.uri,this)}*values(){for(const e of this.map.values())yield e.value}*keys(){for(const e of this.map.values())yield e.uri}*entries(){for(const e of this.map.values())yield[e.uri,e.value]}*[(vhe=Symbol.toStringTag,Symbol.iterator)](){for(const[,e]of this.map)yield[e.uri,e.value]}};cS.defaultToKey=e=>e.toString();let Or=cS;class GKe{constructor(){this[khe]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var e;return(e=this._head)==null?void 0:e.value}get last(){var e;return(e=this._tail)==null?void 0:e.value}has(e){return this._map.has(e)}get(e,t=0){const i=this._map.get(e);if(i)return t!==0&&this.touch(i,t),i.value}set(e,t,i=0){let n=this._map.get(e);if(n)n.value=t,i!==0&&this.touch(n,i);else{switch(n={key:e,value:t,next:void 0,previous:void 0},i){case 0:this.addItemLast(n);break;case 1:this.addItemFirst(n);break;case 2:this.addItemLast(n);break;default:this.addItemLast(n);break}this._map.set(e,n),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){const i=this._state;let n=this._head;for(;n;){if(t?e.bind(t)(n.value,n.key,this):e(n.value,n.key,this),this._state!==i)throw new Error("LinkedMap got modified during iteration.");n=n.next}}keys(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator](){return n},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const o={value:i.key,done:!1};return i=i.next,o}else return{value:void 0,done:!0}}};return n}values(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator](){return n},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const o={value:i.value,done:!1};return i=i.next,o}else return{value:void 0,done:!0}}};return n}entries(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator](){return n},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const o={value:[i.key,i.value],done:!1};return i=i.next,o}else return{value:void 0,done:!0}}};return n}[(khe=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,i=this.size;for(;t&&i>e;)this._map.delete(t.key),t=t.next,i--;this._head=t,this._size=i,t&&(t.previous=void 0),this._state++}trimNew(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._tail,i=this.size;for(;t&&i>e;)this._map.delete(t.key),t=t.previous,i--;this._tail=t,this._size=i,t&&(t.next=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const t=e.next,i=e.previous;if(!t||!i)throw new Error("Invalid list");t.previous=i,i.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(t!==1&&t!==2)){if(t===1){if(e===this._head)return;const i=e.next,n=e.previous;e===this._tail?(n.next=void 0,this._tail=n):(i.previous=n,n.next=i),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===2){if(e===this._tail)return;const i=e.next,n=e.previous;e===this._head?(i.previous=void 0,this._head=i):(i.previous=n,n.next=i),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){const e=[];return this.forEach((t,i)=>{e.push([i,t])}),e}fromJSON(e){this.clear();for(const[t,i]of e)this.set(t,i)}}class JKe extends GKe{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get(e,t=2){return super.get(e,t)}peek(e){return super.get(e,0)}set(e,t){return super.set(e,t,2),this}checkTrim(){this.size>this._limit&&this.trim(Math.round(this._limit*this._ratio))}}class $g extends JKe{constructor(e,t=1){super(e,t)}trim(e){this.trimOld(e)}set(e,t){return super.set(e,t),this.checkTrim(),this}}class XKe{constructor(e){if(this._m1=new Map,this._m2=new Map,e)for(const[t,i]of e)this.set(t,i)}clear(){this._m1.clear(),this._m2.clear()}set(e,t){this._m1.set(e,t),this._m2.set(t,e)}get(e){return this._m1.get(e)}getKey(e){return this._m2.get(e)}delete(e){const t=this._m1.get(e);return t===void 0?!1:(this._m1.delete(e),this._m2.delete(t),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}class zse{constructor(){this.map=new Map}add(e,t){let i=this.map.get(e);i||(i=new Set,this.map.set(e,i)),i.add(t)}delete(e,t){const i=this.map.get(e);i&&(i.delete(t),i.size===0&&this.map.delete(e))}forEach(e,t){const i=this.map.get(e);i&&i.forEach(t)}get(e){const t=this.map.get(e);return t||new Set}}class YKe extends fM{constructor(e,t){super(0),this._segmenter=null,this._cachedLine=null,this._cachedSegments=[],this.intlSegmenterLocales=t,this.intlSegmenterLocales.length>0?this._segmenter=new Intl.Segmenter(this.intlSegmenterLocales,{granularity:"word"}):this._segmenter=null;for(let i=0,n=e.length;i<n;i++)this.set(e.charCodeAt(i),2);this.set(32,1),this.set(9,1)}findPrevIntlWordBeforeOrAtOffset(e,t){let i=null;for(const n of this._getIntlSegmenterWordsOnLine(e)){if(n.index>t)break;i=n}return i}findNextIntlWordAtOrAfterOffset(e,t){for(const i of this._getIntlSegmenterWordsOnLine(e))if(!(i.index<t))return i;return null}_getIntlSegmenterWordsOnLine(e){return this._segmenter?this._cachedLine===e?this._cachedSegments:(this._cachedLine=e,this._cachedSegments=this._filterWordSegments(this._segmenter.segment(e)),this._cachedSegments):[]}_filterWordSegments(e){const t=[];for(const i of e)this._isWordLike(i)&&t.push(i);return t}_isWordLike(e){return!!e.isWordLike}}const xhe=new $g(10);function Ph(s,e){const t=`${s}/${e.join(",")}`;let i=xhe.get(t);return i||(i=new YKe(s,e),xhe.set(t,i)),i}var eh;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=4]="Right",s[s.Full=7]="Full"})(eh||(eh={}));var em;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=3]="Right"})(em||(em={}));var zu;(function(s){s[s.Both=0]="Both",s[s.Right=1]="Right",s[s.Left=2]="Left",s[s.None=3]="None"})(zu||(zu={}));class gD{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(e){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,e.tabSize|0),e.indentSize==="tabSize"?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,e.indentSize|0),this._indentSizeIsTabSize=!1),this.insertSpaces=!!e.insertSpaces,this.defaultEOL=e.defaultEOL|0,this.trimAutoWhitespace=!!e.trimAutoWhitespace,this.bracketPairColorizationOptions=e.bracketPairColorizationOptions}equals(e){return this.tabSize===e.tabSize&&this._indentSizeIsTabSize===e._indentSizeIsTabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace&&lc(this.bracketPairColorizationOptions,e.bracketPairColorizationOptions)}createChangeEvent(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}class KB{constructor(e,t){this._findMatchBrand=void 0,this.range=e,this.matches=t}}function _Ke(s){return s&&typeof s.read=="function"}class nP{constructor(e,t,i,n,o,r){this.identifier=e,this.range=t,this.text=i,this.forceMoveMarkers=n,this.isAutoWhitespaceEdit=o,this._isTracked=r}}class zKe{constructor(e,t,i){this.regex=e,this.wordSeparators=t,this.simpleSearch=i}}class OKe{constructor(e,t,i){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=i}}function xSe(s){return!s.isTooLargeForSyncing()&&!s.isForSimpleWidget}const jKe=999;class lZ{constructor(e,t,i,n){this.searchString=e,this.isRegex=t,this.matchCase=i,this.wordSeparators=n}parseSearchRequest(){if(this.searchString==="")return null;let e;this.isRegex?e=PKe(this.searchString):e=this.searchString.indexOf(`
- `)>=0;let t=null;try{t=vZe(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0,unicode:!0})}catch{return null}if(!t)return null;let i=!this.isRegex&&!e;return i&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(i=this.matchCase),new zKe(t,this.wordSeparators?Ph(this.wordSeparators,[]):null,i?this.searchString:null)}}function PKe(s){if(!s||s.length===0)return!1;for(let e=0,t=s.length;e<t;e++){const i=s.charCodeAt(e);if(i===10)return!0;if(i===92){if(e++,e>=t)break;const n=s.charCodeAt(e);if(n===110||n===114||n===87)return!0}}return!1}function _Z(s,e,t){if(!t)return new KB(s,null);const i=[];for(let n=0,o=e.length;n<o;n++)i[n]=e[n];return new KB(s,i)}class Ihe{constructor(e){const t=[];let i=0;for(let n=0,o=e.length;n<o;n++)e.charCodeAt(n)===10&&(t[i++]=n);this._lineFeedsOffsets=t}findLineFeedCountBeforeOffset(e){const t=this._lineFeedsOffsets;let i=0,n=t.length-1;if(n===-1||e<=t[0])return 0;for(;i<n;){const o=i+((n-i)/2>>0);t[o]>=e?n=o-1:t[o+1]>=e?(i=o,n=o):i=o+1}return i+1}}class jx{static findMatches(e,t,i,n,o){const r=t.parseSearchRequest();return r?r.regex.multiline?this._doFindMatchesMultiline(e,i,new ZW(r.wordSeparators,r.regex),n,o):this._doFindMatchesLineByLine(e,i,r,n,o):[]}static _getMultilineMatchRange(e,t,i,n,o,r){let l,a=0;n?(a=n.findLineFeedCountBeforeOffset(o),l=t+o+a):l=t+o;let d;if(n){const m=n.findLineFeedCountBeforeOffset(o+r.length)-a;d=l+r.length+m}else d=l+r.length;const c=e.getPositionAt(l),h=e.getPositionAt(d);return new z(c.lineNumber,c.column,h.lineNumber,h.column)}static _doFindMatchesMultiline(e,t,i,n,o){const r=e.getOffsetAt(t.getStartPosition()),l=e.getValueInRange(t,1),a=e.getEOL()===`\r
- `?new Ihe(l):null,d=[];let c=0,h;for(i.reset(0);h=i.next(l);)if(d[c++]=_Z(this._getMultilineMatchRange(e,r,l,a,h.index,h[0]),h,n),c>=o)return d;return d}static _doFindMatchesLineByLine(e,t,i,n,o){const r=[];let l=0;if(t.startLineNumber===t.endLineNumber){const d=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return l=this._findMatchesInLine(i,d,t.startLineNumber,t.startColumn-1,l,r,n,o),r}const a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);l=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,l,r,n,o);for(let d=t.startLineNumber+1;d<t.endLineNumber&&l<o;d++)l=this._findMatchesInLine(i,e.getLineContent(d),d,0,l,r,n,o);if(l<o){const d=e.getLineContent(t.endLineNumber).substring(0,t.endColumn-1);l=this._findMatchesInLine(i,d,t.endLineNumber,0,l,r,n,o)}return r}static _findMatchesInLine(e,t,i,n,o,r,l,a){const d=e.wordSeparators;if(!l&&e.simpleSearch){const u=e.simpleSearch,m=u.length,p=t.length;let g=-m;for(;(g=t.indexOf(u,g+m))!==-1;)if((!d||Ose(d,t,p,g,m))&&(r[o++]=new KB(new z(i,g+1+n,i,g+1+m+n),null),o>=a))return o;return o}const c=new ZW(e.wordSeparators,e.regex);let h;c.reset(0);do if(h=c.next(t),h&&(r[o++]=_Z(new z(i,h.index+1+n,i,h.index+1+h[0].length+n),h,l),o>=a))return o;while(h);return o}static findNextMatch(e,t,i,n){const o=t.parseSearchRequest();if(!o)return null;const r=new ZW(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindNextMatchMultiline(e,i,r,n):this._doFindNextMatchLineByLine(e,i,r,n)}static _doFindNextMatchMultiline(e,t,i,n){const o=new ge(t.lineNumber,1),r=e.getOffsetAt(o),l=e.getLineCount(),a=e.getValueInRange(new z(o.lineNumber,o.column,l,e.getLineMaxColumn(l)),1),d=e.getEOL()===`\r
- `?new Ihe(a):null;i.reset(t.column-1);const c=i.next(a);return c?_Z(this._getMultilineMatchRange(e,r,a,d,c.index,c[0]),c,n):t.lineNumber!==1||t.column!==1?this._doFindNextMatchMultiline(e,new ge(1,1),i,n):null}static _doFindNextMatchLineByLine(e,t,i,n){const o=e.getLineCount(),r=t.lineNumber,l=e.getLineContent(r),a=this._findFirstMatchInLine(i,l,r,t.column,n);if(a)return a;for(let d=1;d<=o;d++){const c=(r+d-1)%o,h=e.getLineContent(c+1),u=this._findFirstMatchInLine(i,h,c+1,1,n);if(u)return u}return null}static _findFirstMatchInLine(e,t,i,n,o){e.reset(n-1);const r=e.next(t);return r?_Z(new z(i,r.index+1,i,r.index+1+r[0].length),r,o):null}static findPreviousMatch(e,t,i,n){const o=t.parseSearchRequest();if(!o)return null;const r=new ZW(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindPreviousMatchMultiline(e,i,r,n):this._doFindPreviousMatchLineByLine(e,i,r,n)}static _doFindPreviousMatchMultiline(e,t,i,n){const o=this._doFindMatchesMultiline(e,new z(1,1,t.lineNumber,t.column),i,n,10*jKe);if(o.length>0)return o[o.length-1];const r=e.getLineCount();return t.lineNumber!==r||t.column!==e.getLineMaxColumn(r)?this._doFindPreviousMatchMultiline(e,new ge(r,e.getLineMaxColumn(r)),i,n):null}static _doFindPreviousMatchLineByLine(e,t,i,n){const o=e.getLineCount(),r=t.lineNumber,l=e.getLineContent(r).substring(0,t.column-1),a=this._findLastMatchInLine(i,l,r,n);if(a)return a;for(let d=1;d<=o;d++){const c=(o+r-d-1)%o,h=e.getLineContent(c+1),u=this._findLastMatchInLine(i,h,c+1,n);if(u)return u}return null}static _findLastMatchInLine(e,t,i,n){let o=null,r;for(e.reset(0);r=e.next(t);)o=_Z(new z(i,r.index+1,i,r.index+1+r[0].length),r,n);return o}}function HKe(s,e,t,i,n){if(i===0)return!0;const o=e.charCodeAt(i-1);if(s.get(o)!==0||o===13||o===10)return!0;if(n>0){const r=e.charCodeAt(i);if(s.get(r)!==0)return!0}return!1}function KKe(s,e,t,i,n){if(i+n===t)return!0;const o=e.charCodeAt(i+n);if(s.get(o)!==0||o===13||o===10)return!0;if(n>0){const r=e.charCodeAt(i+n-1);if(s.get(r)!==0)return!0}return!1}function Ose(s,e,t,i,n){return HKe(s,e,t,i,n)&&KKe(s,e,t,i,n)}class ZW{constructor(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){const t=e.length;let i;do{if(this._prevMatchStartIndex+this._prevMatchLength===t||(i=this._searchRegex.exec(e),!i))return null;const n=i.index,o=i[0].length;if(n===this._prevMatchStartIndex&&o===this._prevMatchLength){if(o===0){sX(e,t,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=n,this._prevMatchLength=o,!this._wordSeparators||Ose(this._wordSeparators,e,t,n,o))return i}while(i);return null}}class jse{static computeUnicodeHighlights(e,t,i){const n=i?i.startLineNumber:1,o=i?i.endLineNumber:e.getLineCount(),r=new Ehe(t),l=r.getCandidateCodePoints();let a;l==="allNonBasicAscii"?a=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):a=new RegExp(`${qKe(Array.from(l))}`,"g");const d=new ZW(null,a),c=[];let h=!1,u,m=0,p=0,g=0;e:for(let f=n,b=o;f<=b;f++){const U=e.getLineContent(f),S=U.length;d.reset(0);do if(u=d.next(U),u){let Z=u.index,R=u.index+u[0].length;if(Z>0){const Q=U.charCodeAt(Z-1);Mr(Q)&&Z--}if(R+1<S){const Q=U.charCodeAt(R-1);Mr(Q)&&R++}const y=U.substring(Z,R);let N=DB(Z+1,Use,U,0);N&&N.endColumn<=Z+1&&(N=null);const w=r.shouldHighlightNonBasicASCII(y,N?N.word:null);if(w!==0){w===3?m++:w===2?p++:w===1?g++:G3();const Q=1e3;if(c.length>=Q){h=!0;break e}c.push(new z(f,Z+1,f,R+1))}}while(u)}return{ranges:c,hasMore:h,ambiguousCharacterCount:m,invisibleCharacterCount:p,nonBasicAsciiCharacterCount:g}}static computeUnicodeHighlightReason(e,t){const i=new Ehe(t);switch(i.shouldHighlightNonBasicASCII(e,null)){case 0:return null;case 2:return{kind:1};case 3:{const o=e.codePointAt(0),r=i.ambiguousCharacters.getPrimaryConfusable(o),l=OB.getLocales().filter(a=>!OB.getInstance(new Set([...t.allowedLocales,a])).isAmbiguous(o));return{kind:0,confusableWith:String.fromCodePoint(r),notAmbiguousInLocales:l}}case 1:return{kind:2}}}}function qKe(s,e){return`[${nh(s.map(i=>String.fromCodePoint(i)).join(""))}]`}class Ehe{constructor(e){this.options=e,this.allowedCodePoints=new Set(e.allowedCodePoints),this.ambiguousCharacters=OB.getInstance(new Set(e.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const e=new Set;if(this.options.invisibleCharacters)for(const t of kS.codePoints)Dhe(String.fromCodePoint(t))||e.add(t);if(this.options.ambiguousCharacters)for(const t of this.ambiguousCharacters.getConfusableCodePoints())e.add(t);for(const t of this.allowedCodePoints)e.delete(t);return e}shouldHighlightNonBasicASCII(e,t){const i=e.codePointAt(0);if(this.allowedCodePoints.has(i))return 0;if(this.options.nonBasicASCII)return 1;let n=!1,o=!1;if(t)for(const r of t){const l=r.codePointAt(0),a=Ov(r);n=n||a,!a&&!this.ambiguousCharacters.isAmbiguous(l)&&!kS.isInvisibleCharacter(l)&&(o=!0)}return!n&&o?0:this.options.invisibleCharacters&&!Dhe(e)&&kS.isInvisibleCharacter(i)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(i)?3:0}}function Dhe(s){return s===" "||s===`
- `||s===" "}class fD{constructor(e,t,i){this.changes=e,this.moves=t,this.hitTimeout=i}}class ISe{constructor(e,t){this.lineRangeMapping=e,this.changes=t}}class $i{static addRange(e,t){let i=0;for(;i<t.length&&t[i].endExclusive<e.start;)i++;let n=i;for(;n<t.length&&t[n].start<=e.endExclusive;)n++;if(i===n)t.splice(i,0,e);else{const o=Math.min(e.start,t[i].start),r=Math.max(e.endExclusive,t[n-1].endExclusive);t.splice(i,n-i,new $i(o,r))}}static tryCreate(e,t){if(!(e>t))return new $i(e,t)}static ofLength(e){return new $i(0,e)}static ofStartAndLength(e,t){return new $i(e,e+t)}constructor(e,t){if(this.start=e,this.endExclusive=t,e>t)throw new _n(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(e){return new $i(this.start+e,this.endExclusive+e)}deltaStart(e){return new $i(this.start+e,this.endExclusive)}deltaEnd(e){return new $i(this.start,this.endExclusive+e)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}contains(e){return this.start<=e&&e<this.endExclusive}join(e){return new $i(Math.min(this.start,e.start),Math.max(this.endExclusive,e.endExclusive))}intersect(e){const t=Math.max(this.start,e.start),i=Math.min(this.endExclusive,e.endExclusive);if(t<=i)return new $i(t,i)}intersects(e){const t=Math.max(this.start,e.start),i=Math.min(this.endExclusive,e.endExclusive);return t<i}isBefore(e){return this.endExclusive<=e.start}isAfter(e){return this.start>=e.endExclusive}slice(e){return e.slice(this.start,this.endExclusive)}substring(e){return e.substring(this.start,this.endExclusive)}clip(e){if(this.isEmpty)throw new _n(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,e))}clipCyclic(e){if(this.isEmpty)throw new _n(`Invalid clipping range: ${this.toString()}`);return e<this.start?this.endExclusive-(this.start-e)%this.length:e>=this.endExclusive?this.start+(e-this.start)%this.length:e}forEach(e){for(let t=this.start;t<this.endExclusive;t++)e(t)}}class Pse{constructor(){this._sortedRanges=[]}addRange(e){let t=0;for(;t<this._sortedRanges.length&&this._sortedRanges[t].endExclusive<e.start;)t++;let i=t;for(;i<this._sortedRanges.length&&this._sortedRanges[i].start<=e.endExclusive;)i++;if(t===i)this._sortedRanges.splice(t,0,e);else{const n=Math.min(e.start,this._sortedRanges[t].start),o=Math.max(e.endExclusive,this._sortedRanges[i-1].endExclusive);this._sortedRanges.splice(t,i-t,new $i(n,o))}}toString(){return this._sortedRanges.map(e=>e.toString()).join(", ")}intersectsStrict(e){let t=0;for(;t<this._sortedRanges.length&&this._sortedRanges[t].endExclusive<=e.start;)t++;return t<this._sortedRanges.length&&this._sortedRanges[t].start<e.endExclusive}intersectWithRange(e){const t=new Pse;for(const i of this._sortedRanges){const n=i.intersect(e);n&&t.addRange(n)}return t}intersectWithRangeLength(e){return this.intersectWithRange(e).length}get length(){return this._sortedRanges.reduce((e,t)=>e+t.length,0)}}function qB(s,e){const t=$Ke(s,e);if(t!==-1)return s[t]}function $Ke(s,e,t=s.length-1){for(let i=t;i>=0;i--){const n=s[i];if(e(n))return i}return-1}function Wy(s,e){const t=$B(s,e);return t===-1?void 0:s[t]}function $B(s,e,t=0,i=s.length){let n=t,o=i;for(;n<o;){const r=Math.floor((n+o)/2);e(s[r])?n=r+1:o=r}return n-1}function e7e(s,e){const t=eL(s,e);return t===s.length?void 0:s[t]}function eL(s,e,t=0,i=s.length){let n=t,o=i;for(;n<o;){const r=Math.floor((n+o)/2);e(s[r])?o=r:n=r+1}return n}const T_=class T_{constructor(e){this._array=e,this._findLastMonotonousLastIdx=0}findLastMonotonous(e){if(T_.assertInvariants){if(this._prevFindLastPredicate){for(const i of this._array)if(this._prevFindLastPredicate(i)&&!e(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=e}const t=$B(this._array,e,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=t+1,t===-1?void 0:this._array[t]}};T_.assertInvariants=!1;let UX=T_;function Hse(s,e){if(s.length===0)return;let t=s[0];for(let i=1;i<s.length;i++){const n=s[i];e(n,t)>0&&(t=n)}return t}function t7e(s,e){if(s.length===0)return;let t=s[0];for(let i=1;i<s.length;i++){const n=s[i];e(n,t)>=0&&(t=n)}return t}function i7e(s,e){return Hse(s,(t,i)=>-e(t,i))}function n7e(s,e){if(s.length===0)return-1;let t=0;for(let i=1;i<s.length;i++){const n=s[i];e(n,s[t])>0&&(t=i)}return t}function s7e(s,e){for(const t of s){const i=e(t);if(i!==void 0)return i}}let Ii=class W0{static fromRangeInclusive(e){return new W0(e.startLineNumber,e.endLineNumber+1)}static joinMany(e){if(e.length===0)return[];let t=new Ih(e[0].slice());for(let i=1;i<e.length;i++)t=t.getUnion(new Ih(e[i].slice()));return t.ranges}static join(e){if(e.length===0)throw new _n("lineRanges cannot be empty");let t=e[0].startLineNumber,i=e[0].endLineNumberExclusive;for(let n=1;n<e.length;n++)t=Math.min(t,e[n].startLineNumber),i=Math.max(i,e[n].endLineNumberExclusive);return new W0(t,i)}static ofLength(e,t){return new W0(e,e+t)}static deserialize(e){return new W0(e[0],e[1])}constructor(e,t){if(e>t)throw new _n(`startLineNumber ${e} cannot be after endLineNumberExclusive ${t}`);this.startLineNumber=e,this.endLineNumberExclusive=t}contains(e){return this.startLineNumber<=e&&e<this.endLineNumberExclusive}get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}delta(e){return new W0(this.startLineNumber+e,this.endLineNumberExclusive+e)}deltaLength(e){return new W0(this.startLineNumber,this.endLineNumberExclusive+e)}get length(){return this.endLineNumberExclusive-this.startLineNumber}join(e){return new W0(Math.min(this.startLineNumber,e.startLineNumber),Math.max(this.endLineNumberExclusive,e.endLineNumberExclusive))}toString(){return`[${this.startLineNumber},${this.endLineNumberExclusive})`}intersect(e){const t=Math.max(this.startLineNumber,e.startLineNumber),i=Math.min(this.endLineNumberExclusive,e.endLineNumberExclusive);if(t<=i)return new W0(t,i)}intersectsStrict(e){return this.startLineNumber<e.endLineNumberExclusive&&e.startLineNumber<this.endLineNumberExclusive}overlapOrTouch(e){return this.startLineNumber<=e.endLineNumberExclusive&&e.startLineNumber<=this.endLineNumberExclusive}equals(e){return this.startLineNumber===e.startLineNumber&&this.endLineNumberExclusive===e.endLineNumberExclusive}toInclusiveRange(){return this.isEmpty?null:new z(this.startLineNumber,1,this.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER)}toExclusiveRange(){return new z(this.startLineNumber,1,this.endLineNumberExclusive,1)}mapToLineArray(e){const t=[];for(let i=this.startLineNumber;i<this.endLineNumberExclusive;i++)t.push(e(i));return t}forEach(e){for(let t=this.startLineNumber;t<this.endLineNumberExclusive;t++)e(t)}serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}includes(e){return this.startLineNumber<=e&&e<this.endLineNumberExclusive}toOffsetRange(){return new $i(this.startLineNumber-1,this.endLineNumberExclusive-1)}};class Ih{constructor(e=[]){this._normalizedRanges=e}get ranges(){return this._normalizedRanges}addRange(e){if(e.length===0)return;const t=eL(this._normalizedRanges,n=>n.endLineNumberExclusive>=e.startLineNumber),i=$B(this._normalizedRanges,n=>n.startLineNumber<=e.endLineNumberExclusive)+1;if(t===i)this._normalizedRanges.splice(t,0,e);else if(t===i-1){const n=this._normalizedRanges[t];this._normalizedRanges[t]=n.join(e)}else{const n=this._normalizedRanges[t].join(this._normalizedRanges[i-1]).join(e);this._normalizedRanges.splice(t,i-t,n)}}contains(e){const t=Wy(this._normalizedRanges,i=>i.startLineNumber<=e);return!!t&&t.endLineNumberExclusive>e}intersects(e){const t=Wy(this._normalizedRanges,i=>i.startLineNumber<e.endLineNumberExclusive);return!!t&&t.endLineNumberExclusive>e.startLineNumber}getUnion(e){if(this._normalizedRanges.length===0)return e;if(e._normalizedRanges.length===0)return this;const t=[];let i=0,n=0,o=null;for(;i<this._normalizedRanges.length||n<e._normalizedRanges.length;){let r=null;if(i<this._normalizedRanges.length&&n<e._normalizedRanges.length){const l=this._normalizedRanges[i],a=e._normalizedRanges[n];l.startLineNumber<a.startLineNumber?(r=l,i++):(r=a,n++)}else i<this._normalizedRanges.length?(r=this._normalizedRanges[i],i++):(r=e._normalizedRanges[n],n++);o===null?o=r:o.endLineNumberExclusive>=r.startLineNumber?o=new Ii(o.startLineNumber,Math.max(o.endLineNumberExclusive,r.endLineNumberExclusive)):(t.push(o),o=r)}return o!==null&&t.push(o),new Ih(t)}subtractFrom(e){const t=eL(this._normalizedRanges,r=>r.endLineNumberExclusive>=e.startLineNumber),i=$B(this._normalizedRanges,r=>r.startLineNumber<=e.endLineNumberExclusive)+1;if(t===i)return new Ih([e]);const n=[];let o=e.startLineNumber;for(let r=t;r<i;r++){const l=this._normalizedRanges[r];l.startLineNumber>o&&n.push(new Ii(o,l.startLineNumber)),o=l.endLineNumberExclusive}return o<e.endLineNumberExclusive&&n.push(new Ii(o,e.endLineNumberExclusive)),new Ih(n)}toString(){return this._normalizedRanges.map(e=>e.toString()).join(", ")}getIntersection(e){const t=[];let i=0,n=0;for(;i<this._normalizedRanges.length&&n<e._normalizedRanges.length;){const o=this._normalizedRanges[i],r=e._normalizedRanges[n],l=o.intersect(r);l&&!l.isEmpty&&t.push(l),o.endLineNumberExclusive<r.endLineNumberExclusive?i++:n++}return new Ih(t)}getWithDelta(e){return new Ih(this._normalizedRanges.map(t=>t.delta(e)))}}const pU=class pU{static betweenPositions(e,t){return e.lineNumber===t.lineNumber?new pU(0,t.column-e.column):new pU(t.lineNumber-e.lineNumber,t.column-1)}static ofRange(e){return pU.betweenPositions(e.getStartPosition(),e.getEndPosition())}static ofText(e){let t=0,i=0;for(const n of e)n===`
- `?(t++,i=0):i++;return new pU(t,i)}constructor(e,t){this.lineCount=e,this.columnCount=t}isGreaterThanOrEqualTo(e){return this.lineCount!==e.lineCount?this.lineCount>e.lineCount:this.columnCount>=e.columnCount}createRange(e){return this.lineCount===0?new z(e.lineNumber,e.column,e.lineNumber,e.column+this.columnCount):new z(e.lineNumber,e.column,e.lineNumber+this.lineCount,this.columnCount+1)}addToPosition(e){return this.lineCount===0?new ge(e.lineNumber,e.column+this.columnCount):new ge(e.lineNumber+this.lineCount,this.columnCount+1)}toString(){return`${this.lineCount},${this.columnCount}`}};pU.zero=new pU(0,0);let tm=pU;class o7e{constructor(e){this.text=e,this.lineStartOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let t=0;t<e.length;t++)e.charAt(t)===`
- `&&this.lineStartOffsetByLineIdx.push(t+1)}getOffset(e){return this.lineStartOffsetByLineIdx[e.lineNumber-1]+e.column-1}getOffsetRange(e){return new $i(this.getOffset(e.getStartPosition()),this.getOffset(e.getEndPosition()))}get textLength(){const e=this.lineStartOffsetByLineIdx.length-1;return new tm(e,this.text.length-this.lineStartOffsetByLineIdx[e])}}class Kse{constructor(e){this.edits=e,SN(()=>Xse(e,(t,i)=>t.range.getEndPosition().isBeforeOrEqual(i.range.getStartPosition())))}apply(e){let t="",i=new ge(1,1);for(const o of this.edits){const r=o.range,l=r.getStartPosition(),a=r.getEndPosition(),d=Ghe(i,l);d.isEmpty()||(t+=e.getValueOfRange(d)),t+=o.text,i=a}const n=Ghe(i,e.endPositionExclusive);return n.isEmpty()||(t+=e.getValueOfRange(n)),t}applyToString(e){const t=new r7e(e);return this.apply(t)}getNewRanges(){const e=[];let t=0,i=0,n=0;for(const o of this.edits){const r=tm.ofText(o.text),l=ge.lift({lineNumber:o.range.startLineNumber+i,column:o.range.startColumn+(o.range.startLineNumber===t?n:0)}),a=r.createRange(l);e.push(a),i=a.endLineNumber-o.range.endLineNumber,n=a.endColumn-o.range.endColumn,t=o.range.endLineNumber}return e}}class Dg{constructor(e,t){this.range=e,this.text=t}toSingleEditOperation(){return{range:this.range,text:this.text}}}function Ghe(s,e){if(s.lineNumber===e.lineNumber&&s.column===Number.MAX_SAFE_INTEGER)return z.fromPositions(e,e);if(!s.isBeforeOrEqual(e))throw new _n("start must be before end");return new z(s.lineNumber,s.column,e.lineNumber,e.column)}class ESe{get endPositionExclusive(){return this.length.addToPosition(new ge(1,1))}}class r7e extends ESe{constructor(e){super(),this.value=e,this._t=new o7e(this.value)}getValueOfRange(e){return this._t.getOffsetRange(e).substring(this.value)}get length(){return this._t.textLength}}class ga{static inverse(e,t,i){const n=[];let o=1,r=1;for(const a of e){const d=new ga(new Ii(o,a.original.startLineNumber),new Ii(r,a.modified.startLineNumber));d.modified.isEmpty||n.push(d),o=a.original.endLineNumberExclusive,r=a.modified.endLineNumberExclusive}const l=new ga(new Ii(o,t+1),new Ii(r,i+1));return l.modified.isEmpty||n.push(l),n}static clip(e,t,i){const n=[];for(const o of e){const r=o.original.intersect(t),l=o.modified.intersect(i);r&&!r.isEmpty&&l&&!l.isEmpty&&n.push(new ga(r,l))}return n}constructor(e,t){this.original=e,this.modified=t}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new ga(this.modified,this.original)}join(e){return new ga(this.original.join(e.original),this.modified.join(e.modified))}toRangeMapping(){const e=this.original.toInclusiveRange(),t=this.modified.toInclusiveRange();if(e&&t)return new Dc(e,t);if(this.original.startLineNumber===1||this.modified.startLineNumber===1){if(!(this.modified.startLineNumber===1&&this.original.startLineNumber===1))throw new _n("not a valid diff");return new Dc(new z(this.original.startLineNumber,1,this.original.endLineNumberExclusive,1),new z(this.modified.startLineNumber,1,this.modified.endLineNumberExclusive,1))}else return new Dc(new z(this.original.startLineNumber-1,Number.MAX_SAFE_INTEGER,this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),new z(this.modified.startLineNumber-1,Number.MAX_SAFE_INTEGER,this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER))}toRangeMapping2(e,t){if(Jhe(this.original.endLineNumberExclusive,e)&&Jhe(this.modified.endLineNumberExclusive,t))return new Dc(new z(this.original.startLineNumber,1,this.original.endLineNumberExclusive,1),new z(this.modified.startLineNumber,1,this.modified.endLineNumberExclusive,1));if(!this.original.isEmpty&&!this.modified.isEmpty)return new Dc(z.fromPositions(new ge(this.original.startLineNumber,1),ER(new ge(this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),e)),z.fromPositions(new ge(this.modified.startLineNumber,1),ER(new ge(this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),t)));if(this.original.startLineNumber>1&&this.modified.startLineNumber>1)return new Dc(z.fromPositions(ER(new ge(this.original.startLineNumber-1,Number.MAX_SAFE_INTEGER),e),ER(new ge(this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),e)),z.fromPositions(ER(new ge(this.modified.startLineNumber-1,Number.MAX_SAFE_INTEGER),t),ER(new ge(this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),t)));throw new _n}}function ER(s,e){if(s.lineNumber<1)return new ge(1,1);if(s.lineNumber>e.length)return new ge(e.length,e[e.length-1].length+1);const t=e[s.lineNumber-1];return s.column>t.length+1?new ge(s.lineNumber,t.length+1):s}function Jhe(s,e){return s>=1&&s<=e.length}class th extends ga{static fromRangeMappings(e){const t=Ii.join(e.map(n=>Ii.fromRangeInclusive(n.originalRange))),i=Ii.join(e.map(n=>Ii.fromRangeInclusive(n.modifiedRange)));return new th(t,i,e)}constructor(e,t,i){super(e,t),this.innerChanges=i}flip(){var e;return new th(this.modified,this.original,(e=this.innerChanges)==null?void 0:e.map(t=>t.flip()))}withInnerChangesFromLineRanges(){return new th(this.original,this.modified,[this.toRangeMapping()])}}class Dc{static assertSorted(e){for(let t=1;t<e.length;t++){const i=e[t-1],n=e[t];if(!(i.originalRange.getEndPosition().isBeforeOrEqual(n.originalRange.getStartPosition())&&i.modifiedRange.getEndPosition().isBeforeOrEqual(n.modifiedRange.getStartPosition())))throw new _n("Range mappings must be sorted")}}constructor(e,t){this.originalRange=e,this.modifiedRange=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new Dc(this.modifiedRange,this.originalRange)}toTextEdit(e){const t=e.getValueOfRange(this.modifiedRange);return new Dg(this.originalRange,t)}}const l7e=3;class a7e{computeDiff(e,t,i){var a;const o=new h7e(e,t,{maxComputationTime:i.maxComputationTimeMs,shouldIgnoreTrimWhitespace:i.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),r=[];let l=null;for(const d of o.changes){let c;d.originalEndLineNumber===0?c=new Ii(d.originalStartLineNumber+1,d.originalStartLineNumber+1):c=new Ii(d.originalStartLineNumber,d.originalEndLineNumber+1);let h;d.modifiedEndLineNumber===0?h=new Ii(d.modifiedStartLineNumber+1,d.modifiedStartLineNumber+1):h=new Ii(d.modifiedStartLineNumber,d.modifiedEndLineNumber+1);let u=new th(c,h,(a=d.charChanges)==null?void 0:a.map(m=>new Dc(new z(m.originalStartLineNumber,m.originalStartColumn,m.originalEndLineNumber,m.originalEndColumn),new z(m.modifiedStartLineNumber,m.modifiedStartColumn,m.modifiedEndLineNumber,m.modifiedEndColumn))));l&&(l.modified.endLineNumberExclusive===u.modified.startLineNumber||l.original.endLineNumberExclusive===u.original.startLineNumber)&&(u=new th(l.original.join(u.original),l.modified.join(u.modified),l.innerChanges&&u.innerChanges?l.innerChanges.concat(u.innerChanges):void 0),r.pop()),r.push(u),l=u}return SN(()=>Xse(r,(d,c)=>c.original.startLineNumber-d.original.endLineNumberExclusive===c.modified.startLineNumber-d.modified.endLineNumberExclusive&&d.original.endLineNumberExclusive<c.original.startLineNumber&&d.modified.endLineNumberExclusive<c.modified.startLineNumber)),new fD(r,[],o.quitEarly)}}function DSe(s,e,t,i){return new Rg(s,e,t).ComputeDiff(i)}let Xhe=class{constructor(e){const t=[],i=[];for(let n=0,o=e.length;n<o;n++)t[n]=Q8(e[n],1),i[n]=M8(e[n],1);this.lines=e,this._startColumns=t,this._endColumns=i}getElements(){const e=[];for(let t=0,i=this.lines.length;t<i;t++)e[t]=this.lines[t].substring(this._startColumns[t]-1,this._endColumns[t]-1);return e}getStrictElement(e){return this.lines[e]}getStartLineNumber(e){return e+1}getEndLineNumber(e){return e+1}createCharSequence(e,t,i){const n=[],o=[],r=[];let l=0;for(let a=t;a<=i;a++){const d=this.lines[a],c=e?this._startColumns[a]:1,h=e?this._endColumns[a]:d.length+1;for(let u=c;u<h;u++)n[l]=d.charCodeAt(u-1),o[l]=a+1,r[l]=u,l++;!e&&a<i&&(n[l]=10,o[l]=a+1,r[l]=d.length+1,l++)}return new d7e(n,o,r)}};class d7e{constructor(e,t,i){this._charCodes=e,this._lineNumbers=t,this._columns=i}toString(){return"["+this._charCodes.map((e,t)=>(e===10?"\\n":String.fromCharCode(e))+`-(${this._lineNumbers[t]},${this._columns[t]})`).join(", ")+"]"}_assertIndex(e,t){if(e<0||e>=t.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return e===-1?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),this._charCodes[e]===10?this._lineNumbers[e]+1:this._lineNumbers[e])}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return e===-1?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),this._charCodes[e]===10?1:this._columns[e]+1)}}class B1{constructor(e,t,i,n,o,r,l,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=i,this.originalEndColumn=n,this.modifiedStartLineNumber=o,this.modifiedStartColumn=r,this.modifiedEndLineNumber=l,this.modifiedEndColumn=a}static createFromDiffChange(e,t,i){const n=t.getStartLineNumber(e.originalStart),o=t.getStartColumn(e.originalStart),r=t.getEndLineNumber(e.originalStart+e.originalLength-1),l=t.getEndColumn(e.originalStart+e.originalLength-1),a=i.getStartLineNumber(e.modifiedStart),d=i.getStartColumn(e.modifiedStart),c=i.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),h=i.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new B1(n,o,r,l,a,d,c,h)}}function c7e(s){if(s.length<=1)return s;const e=[s[0]];let t=e[0];for(let i=1,n=s.length;i<n;i++){const o=s[i],r=o.originalStart-(t.originalStart+t.originalLength),l=o.modifiedStart-(t.modifiedStart+t.modifiedLength);Math.min(r,l)<l7e?(t.originalLength=o.originalStart+o.originalLength-t.originalStart,t.modifiedLength=o.modifiedStart+o.modifiedLength-t.modifiedStart):(e.push(o),t=o)}return e}class HC{constructor(e,t,i,n,o){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=i,this.modifiedEndLineNumber=n,this.charChanges=o}static createFromDiffResult(e,t,i,n,o,r,l){let a,d,c,h,u;if(t.originalLength===0?(a=i.getStartLineNumber(t.originalStart)-1,d=0):(a=i.getStartLineNumber(t.originalStart),d=i.getEndLineNumber(t.originalStart+t.originalLength-1)),t.modifiedLength===0?(c=n.getStartLineNumber(t.modifiedStart)-1,h=0):(c=n.getStartLineNumber(t.modifiedStart),h=n.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),r&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&o()){const m=i.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),p=n.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);if(m.getElements().length>0&&p.getElements().length>0){let g=DSe(m,p,o,!0).changes;l&&(g=c7e(g)),u=[];for(let f=0,b=g.length;f<b;f++)u.push(B1.createFromDiffChange(g[f],m,p))}}return new HC(a,d,c,h,u)}}class h7e{constructor(e,t,i){this.shouldComputeCharChanges=i.shouldComputeCharChanges,this.shouldPostProcessCharChanges=i.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=i.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=i.shouldMakePrettyDiff,this.originalLines=e,this.modifiedLines=t,this.original=new Xhe(e),this.modified=new Xhe(t),this.continueLineDiff=Yhe(i.maxComputationTime),this.continueCharDiff=Yhe(i.maxComputationTime===0?0:Math.min(i.maxComputationTime,5e3))}computeDiff(){if(this.original.lines.length===1&&this.original.lines[0].length===0)return this.modified.lines.length===1&&this.modified.lines[0].length===0?{quitEarly:!1,changes:[]}:{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:void 0}]};if(this.modified.lines.length===1&&this.modified.lines[0].length===0)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:void 0}]};const e=DSe(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),t=e.changes,i=e.quitEarly;if(this.shouldIgnoreTrimWhitespace){const l=[];for(let a=0,d=t.length;a<d;a++)l.push(HC.createFromDiffResult(this.shouldIgnoreTrimWhitespace,t[a],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:i,changes:l}}const n=[];let o=0,r=0;for(let l=-1,a=t.length;l<a;l++){const d=l+1<a?t[l+1]:null,c=d?d.originalStart:this.originalLines.length,h=d?d.modifiedStart:this.modifiedLines.length;for(;o<c&&r<h;){const u=this.originalLines[o],m=this.modifiedLines[r];if(u!==m){{let p=Q8(u,1),g=Q8(m,1);for(;p>1&&g>1;){const f=u.charCodeAt(p-2),b=m.charCodeAt(g-2);if(f!==b)break;p--,g--}(p>1||g>1)&&this._pushTrimWhitespaceCharChange(n,o+1,1,p,r+1,1,g)}{let p=M8(u,1),g=M8(m,1);const f=u.length+1,b=m.length+1;for(;p<f&&g<b;){const U=u.charCodeAt(p-1),S=u.charCodeAt(g-1);if(U!==S)break;p++,g++}(p<f||g<b)&&this._pushTrimWhitespaceCharChange(n,o+1,p,f,r+1,g,b)}}o++,r++}d&&(n.push(HC.createFromDiffResult(this.shouldIgnoreTrimWhitespace,d,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),o+=d.originalLength,r+=d.modifiedLength)}return{quitEarly:i,changes:n}}_pushTrimWhitespaceCharChange(e,t,i,n,o,r,l){if(this._mergeTrimWhitespaceCharChange(e,t,i,n,o,r,l))return;let a;this.shouldComputeCharChanges&&(a=[new B1(t,i,t,n,o,r,o,l)]),e.push(new HC(t,t,o,o,a))}_mergeTrimWhitespaceCharChange(e,t,i,n,o,r,l){const a=e.length;if(a===0)return!1;const d=e[a-1];return d.originalEndLineNumber===0||d.modifiedEndLineNumber===0?!1:d.originalEndLineNumber===t&&d.modifiedEndLineNumber===o?(this.shouldComputeCharChanges&&d.charChanges&&d.charChanges.push(new B1(t,i,t,n,o,r,o,l)),!0):d.originalEndLineNumber+1===t&&d.modifiedEndLineNumber+1===o?(d.originalEndLineNumber=t,d.modifiedEndLineNumber=o,this.shouldComputeCharChanges&&d.charChanges&&d.charChanges.push(new B1(t,i,t,n,o,r,o,l)),!0):!1}}function Q8(s,e){const t=Ua(s);return t===-1?e:t+1}function M8(s,e){const t=ip(s);return t===-1?e:t+2}function Yhe(s){if(s===0)return()=>!0;const e=Date.now();return()=>Date.now()-e<s}class xf{static trivial(e,t){return new xf([new Qr($i.ofLength(e.length),$i.ofLength(t.length))],!1)}static trivialTimedOut(e,t){return new xf([new Qr($i.ofLength(e.length),$i.ofLength(t.length))],!0)}constructor(e,t){this.diffs=e,this.hitTimeout=t}}class Qr{static invert(e,t){const i=[];return qAe(e,(n,o)=>{i.push(Qr.fromOffsetPairs(n?n.getEndExclusives():yf.zero,o?o.getStarts():new yf(t,(n?n.seq2Range.endExclusive-n.seq1Range.endExclusive:0)+t)))}),i}static fromOffsetPairs(e,t){return new Qr(new $i(e.offset1,t.offset1),new $i(e.offset2,t.offset2))}static assertSorted(e){let t;for(const i of e){if(t&&!(t.seq1Range.endExclusive<=i.seq1Range.start&&t.seq2Range.endExclusive<=i.seq2Range.start))throw new _n("Sequence diffs must be sorted");t=i}}constructor(e,t){this.seq1Range=e,this.seq2Range=t}swap(){return new Qr(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(e){return new Qr(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return e===0?this:new Qr(this.seq1Range.delta(e),this.seq2Range.delta(e))}deltaStart(e){return e===0?this:new Qr(this.seq1Range.deltaStart(e),this.seq2Range.deltaStart(e))}deltaEnd(e){return e===0?this:new Qr(this.seq1Range.deltaEnd(e),this.seq2Range.deltaEnd(e))}intersect(e){const t=this.seq1Range.intersect(e.seq1Range),i=this.seq2Range.intersect(e.seq2Range);if(!(!t||!i))return new Qr(t,i)}getStarts(){return new yf(this.seq1Range.start,this.seq2Range.start)}getEndExclusives(){return new yf(this.seq1Range.endExclusive,this.seq2Range.endExclusive)}}const hS=class hS{constructor(e,t){this.offset1=e,this.offset2=t}toString(){return`${this.offset1} <-> ${this.offset2}`}delta(e){return e===0?this:new hS(this.offset1+e,this.offset2+e)}equals(e){return this.offset1===e.offset1&&this.offset2===e.offset2}};hS.zero=new hS(0,0),hS.max=new hS(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);let yf=hS;const C_=class C_{isValid(){return!0}};C_.instance=new C_;let tL=C_;class u7e{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new _n("timeout must be positive")}isValid(){if(!(Date.now()-this.startTime<this.timeout)&&this.valid){this.valid=!1;debugger}return this.valid}}class sP{constructor(e,t){this.width=e,this.height=t,this.array=[],this.array=new Array(e*t)}get(e,t){return this.array[e+t*this.width]}set(e,t,i){this.array[e+t*this.width]=i}}function w8(s){return s===32||s===9}const bB=class bB{static getKey(e){let t=this.chrKeys.get(e);return t===void 0&&(t=this.chrKeys.size,this.chrKeys.set(e,t)),t}constructor(e,t,i){this.range=e,this.lines=t,this.source=i,this.histogram=[];let n=0;for(let o=e.startLineNumber-1;o<e.endLineNumberExclusive-1;o++){const r=t[o];for(let a=0;a<r.length;a++){n++;const d=r[a],c=bB.getKey(d);this.histogram[c]=(this.histogram[c]||0)+1}n++;const l=bB.getKey(`
- `);this.histogram[l]=(this.histogram[l]||0)+1}this.totalCount=n}computeSimilarity(e){let t=0;const i=Math.max(this.histogram.length,e.histogram.length);for(let n=0;n<i;n++)t+=Math.abs((this.histogram[n]??0)-(e.histogram[n]??0));return 1-t/(this.totalCount+e.totalCount)}};bB.chrKeys=new Map;let FX=bB;class m7e{compute(e,t,i=tL.instance,n){if(e.length===0||t.length===0)return xf.trivial(e,t);const o=new sP(e.length,t.length),r=new sP(e.length,t.length),l=new sP(e.length,t.length);for(let p=0;p<e.length;p++)for(let g=0;g<t.length;g++){if(!i.isValid())return xf.trivialTimedOut(e,t);const f=p===0?0:o.get(p-1,g),b=g===0?0:o.get(p,g-1);let U;e.getElement(p)===t.getElement(g)?(p===0||g===0?U=0:U=o.get(p-1,g-1),p>0&&g>0&&r.get(p-1,g-1)===3&&(U+=l.get(p-1,g-1)),U+=n?n(p,g):1):U=-1;const S=Math.max(f,b,U);if(S===U){const Z=p>0&&g>0?l.get(p-1,g-1):0;l.set(p,g,Z+1),r.set(p,g,3)}else S===f?(l.set(p,g,0),r.set(p,g,1)):S===b&&(l.set(p,g,0),r.set(p,g,2));o.set(p,g,S)}const a=[];let d=e.length,c=t.length;function h(p,g){(p+1!==d||g+1!==c)&&a.push(new Qr(new $i(p+1,d),new $i(g+1,c))),d=p,c=g}let u=e.length-1,m=t.length-1;for(;u>=0&&m>=0;)r.get(u,m)===3?(h(u,m),u--,m--):r.get(u,m)===1?u--:m--;return h(-1,-1),a.reverse(),new xf(a,!1)}}class GSe{compute(e,t,i=tL.instance){if(e.length===0||t.length===0)return xf.trivial(e,t);const n=e,o=t;function r(g,f){for(;g<n.length&&f<o.length&&n.getElement(g)===o.getElement(f);)g++,f++;return g}let l=0;const a=new p7e;a.set(0,r(0,0));const d=new g7e;d.set(0,a.get(0)===0?null:new _he(null,0,0,a.get(0)));let c=0;e:for(;;){if(l++,!i.isValid())return xf.trivialTimedOut(n,o);const g=-Math.min(l,o.length+l%2),f=Math.min(l,n.length+l%2);for(c=g;c<=f;c+=2){const b=c===f?-1:a.get(c+1),U=c===g?-1:a.get(c-1)+1,S=Math.min(Math.max(b,U),n.length),Z=S-c;if(S>n.length||Z>o.length)continue;const R=r(S,Z);a.set(c,R);const y=S===b?d.get(c+1):d.get(c-1);if(d.set(c,R!==S?new _he(y,S,Z,R-S):y),a.get(c)===n.length&&a.get(c)-c===o.length)break e}}let h=d.get(c);const u=[];let m=n.length,p=o.length;for(;;){const g=h?h.x+h.length:0,f=h?h.y+h.length:0;if((g!==m||f!==p)&&u.push(new Qr(new $i(g,m),new $i(f,p))),!h)break;m=h.x,p=h.y,h=h.prev}return u.reverse(),new xf(u,!1)}}class _he{constructor(e,t,i,n){this.prev=e,this.x=t,this.y=i,this.length=n}}class p7e{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){if(e<0){if(e=-e-1,e>=this.negativeArr.length){const i=this.negativeArr;this.negativeArr=new Int32Array(i.length*2),this.negativeArr.set(i)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){const i=this.positiveArr;this.positiveArr=new Int32Array(i.length*2),this.positiveArr.set(i)}this.positiveArr[e]=t}}}class g7e{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t}}class AX{constructor(e,t,i){this.lines=e,this.range=t,this.considerWhitespaceChanges=i,this.elements=[],this.firstElementOffsetByLineIdx=[],this.lineStartOffsets=[],this.trimmedWsLengthsByLineIdx=[],this.firstElementOffsetByLineIdx.push(0);for(let n=this.range.startLineNumber;n<=this.range.endLineNumber;n++){let o=e[n-1],r=0;n===this.range.startLineNumber&&this.range.startColumn>1&&(r=this.range.startColumn-1,o=o.substring(r)),this.lineStartOffsets.push(r);let l=0;if(!i){const d=o.trimStart();l=o.length-d.length,o=d.trimEnd()}this.trimmedWsLengthsByLineIdx.push(l);const a=n===this.range.endLineNumber?Math.min(this.range.endColumn-1-r-l,o.length):o.length;for(let d=0;d<a;d++)this.elements.push(o.charCodeAt(d));n<this.range.endLineNumber&&(this.elements.push(`
- `.charCodeAt(0)),this.firstElementOffsetByLineIdx.push(this.elements.length))}}toString(){return`Slice: "${this.text}"`}get text(){return this.getText(new $i(0,this.length))}getText(e){return this.elements.slice(e.start,e.endExclusive).map(t=>String.fromCharCode(t)).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const t=Ohe(e>0?this.elements[e-1]:-1),i=Ohe(e<this.elements.length?this.elements[e]:-1);if(t===7&&i===8)return 0;if(t===8)return 150;let n=0;return t!==i&&(n+=10,t===0&&i===1&&(n+=1)),n+=zhe(t),n+=zhe(i),n}translateOffset(e,t="right"){const i=$B(this.firstElementOffsetByLineIdx,o=>o<=e),n=e-this.firstElementOffsetByLineIdx[i];return new ge(this.range.startLineNumber+i,1+this.lineStartOffsets[i]+n+(n===0&&t==="left"?0:this.trimmedWsLengthsByLineIdx[i]))}translateRange(e){const t=this.translateOffset(e.start,"right"),i=this.translateOffset(e.endExclusive,"left");return i.isBefore(t)?z.fromPositions(i,i):z.fromPositions(t,i)}findWordContaining(e){if(e<0||e>=this.elements.length||!oP(this.elements[e]))return;let t=e;for(;t>0&&oP(this.elements[t-1]);)t--;let i=e;for(;i<this.elements.length&&oP(this.elements[i]);)i++;return new $i(t,i)}countLinesIn(e){return this.translateOffset(e.endExclusive).lineNumber-this.translateOffset(e.start).lineNumber}isStronglyEqual(e,t){return this.elements[e]===this.elements[t]}extendToFullLines(e){const t=Wy(this.firstElementOffsetByLineIdx,n=>n<=e.start)??0,i=e7e(this.firstElementOffsetByLineIdx,n=>e.endExclusive<=n)??this.elements.length;return new $i(t,i)}}function oP(s){return s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57}const f7e={0:0,1:0,2:0,3:10,4:2,5:30,6:3,7:10,8:10};function zhe(s){return f7e[s]}function Ohe(s){return s===10?8:s===13?7:w8(s)?6:s>=97&&s<=122?0:s>=65&&s<=90?1:s>=48&&s<=57?2:s===-1?3:s===44||s===59?5:4}function b7e(s,e,t,i,n,o){let{moves:r,excludedChanges:l}=F7e(s,e,t,o);if(!o.isValid())return[];const a=s.filter(c=>!l.has(c)),d=A7e(a,i,n,e,t,o);return PK(r,d),r=Z7e(r),r=r.filter(c=>{const h=c.original.toOffsetRange().slice(e).map(m=>m.trim());return h.join(`
- `).length>=15&&U7e(h,m=>m.length>=2)>=2}),r=S7e(s,r),r}function U7e(s,e){let t=0;for(const i of s)e(i)&&t++;return t}function F7e(s,e,t,i){const n=[],o=s.filter(a=>a.modified.isEmpty&&a.original.length>=3).map(a=>new FX(a.original,e,a)),r=new Set(s.filter(a=>a.original.isEmpty&&a.modified.length>=3).map(a=>new FX(a.modified,t,a))),l=new Set;for(const a of o){let d=-1,c;for(const h of r){const u=a.computeSimilarity(h);u>d&&(d=u,c=h)}if(d>.9&&c&&(r.delete(c),n.push(new ga(a.range,c.range)),l.add(a.source),l.add(c.source)),!i.isValid())return{moves:n,excludedChanges:l}}return{moves:n,excludedChanges:l}}function A7e(s,e,t,i,n,o){const r=[],l=new zse;for(const u of s)for(let m=u.original.startLineNumber;m<u.original.endLineNumberExclusive-2;m++){const p=`${e[m-1]}:${e[m+1-1]}:${e[m+2-1]}`;l.add(p,{range:new Ii(m,m+3)})}const a=[];s.sort(Ja(u=>u.modified.startLineNumber,ju));for(const u of s){let m=[];for(let p=u.modified.startLineNumber;p<u.modified.endLineNumberExclusive-2;p++){const g=`${t[p-1]}:${t[p+1-1]}:${t[p+2-1]}`,f=new Ii(p,p+3),b=[];l.forEach(g,({range:U})=>{for(const Z of m)if(Z.originalLineRange.endLineNumberExclusive+1===U.endLineNumberExclusive&&Z.modifiedLineRange.endLineNumberExclusive+1===f.endLineNumberExclusive){Z.originalLineRange=new Ii(Z.originalLineRange.startLineNumber,U.endLineNumberExclusive),Z.modifiedLineRange=new Ii(Z.modifiedLineRange.startLineNumber,f.endLineNumberExclusive),b.push(Z);return}const S={modifiedLineRange:f,originalLineRange:U};a.push(S),b.push(S)}),m=b}if(!o.isValid())return[]}a.sort(tZe(Ja(u=>u.modifiedLineRange.length,ju)));const d=new Ih,c=new Ih;for(const u of a){const m=u.modifiedLineRange.startLineNumber-u.originalLineRange.startLineNumber,p=d.subtractFrom(u.modifiedLineRange),g=c.subtractFrom(u.originalLineRange).getWithDelta(m),f=p.getIntersection(g);for(const b of f.ranges){if(b.length<3)continue;const U=b,S=b.delta(-m);r.push(new ga(S,U)),d.addRange(U),c.addRange(S)}}r.sort(Ja(u=>u.original.startLineNumber,ju));const h=new UX(s);for(let u=0;u<r.length;u++){const m=r[u],p=h.findLastMonotonous(y=>y.original.startLineNumber<=m.original.startLineNumber),g=Wy(s,y=>y.modified.startLineNumber<=m.modified.startLineNumber),f=Math.max(m.original.startLineNumber-p.original.startLineNumber,m.modified.startLineNumber-g.modified.startLineNumber),b=h.findLastMonotonous(y=>y.original.startLineNumber<m.original.endLineNumberExclusive),U=Wy(s,y=>y.modified.startLineNumber<m.modified.endLineNumberExclusive),S=Math.max(b.original.endLineNumberExclusive-m.original.endLineNumberExclusive,U.modified.endLineNumberExclusive-m.modified.endLineNumberExclusive);let Z;for(Z=0;Z<f;Z++){const y=m.original.startLineNumber-Z-1,N=m.modified.startLineNumber-Z-1;if(y>i.length||N>n.length||d.contains(N)||c.contains(y)||!jhe(i[y-1],n[N-1],o))break}Z>0&&(c.addRange(new Ii(m.original.startLineNumber-Z,m.original.startLineNumber)),d.addRange(new Ii(m.modified.startLineNumber-Z,m.modified.startLineNumber)));let R;for(R=0;R<S;R++){const y=m.original.endLineNumberExclusive+R,N=m.modified.endLineNumberExclusive+R;if(y>i.length||N>n.length||d.contains(N)||c.contains(y)||!jhe(i[y-1],n[N-1],o))break}R>0&&(c.addRange(new Ii(m.original.endLineNumberExclusive,m.original.endLineNumberExclusive+R)),d.addRange(new Ii(m.modified.endLineNumberExclusive,m.modified.endLineNumberExclusive+R))),(Z>0||R>0)&&(r[u]=new ga(new Ii(m.original.startLineNumber-Z,m.original.endLineNumberExclusive+R),new Ii(m.modified.startLineNumber-Z,m.modified.endLineNumberExclusive+R)))}return r}function jhe(s,e,t){if(s.trim()===e.trim())return!0;if(s.length>300&&e.length>300)return!1;const n=new GSe().compute(new AX([s],new z(1,1,1,s.length),!1),new AX([e],new z(1,1,1,e.length),!1),t);let o=0;const r=Qr.invert(n.diffs,s.length);for(const c of r)c.seq1Range.forEach(h=>{w8(s.charCodeAt(h))||o++});function l(c){let h=0;for(let u=0;u<s.length;u++)w8(c.charCodeAt(u))||h++;return h}const a=l(s.length>e.length?s:e);return o/a>.6&&a>10}function Z7e(s){if(s.length===0)return s;s.sort(Ja(t=>t.original.startLineNumber,ju));const e=[s[0]];for(let t=1;t<s.length;t++){const i=e[e.length-1],n=s[t],o=n.original.startLineNumber-i.original.endLineNumberExclusive,r=n.modified.startLineNumber-i.modified.endLineNumberExclusive;if(o>=0&&r>=0&&o+r<=2){e[e.length-1]=i.join(n);continue}e.push(n)}return e}function S7e(s,e){const t=new UX(s);return e=e.filter(i=>{const n=t.findLastMonotonous(l=>l.original.startLineNumber<i.original.endLineNumberExclusive)||new ga(new Ii(1,1),new Ii(1,1)),o=Wy(s,l=>l.modified.startLineNumber<i.modified.endLineNumberExclusive);return n!==o}),e}function T8(s,e,t){let i=t;return i=Phe(s,e,i),i=Phe(s,e,i),i=N7e(s,e,i),i}function Phe(s,e,t){if(t.length===0)return t;const i=[];i.push(t[0]);for(let o=1;o<t.length;o++){const r=i[i.length-1];let l=t[o];if(l.seq1Range.isEmpty||l.seq2Range.isEmpty){const a=l.seq1Range.start-r.seq1Range.endExclusive;let d;for(d=1;d<=a&&!(s.getElement(l.seq1Range.start-d)!==s.getElement(l.seq1Range.endExclusive-d)||e.getElement(l.seq2Range.start-d)!==e.getElement(l.seq2Range.endExclusive-d));d++);if(d--,d===a){i[i.length-1]=new Qr(new $i(r.seq1Range.start,l.seq1Range.endExclusive-a),new $i(r.seq2Range.start,l.seq2Range.endExclusive-a));continue}l=l.delta(-d)}i.push(l)}const n=[];for(let o=0;o<i.length-1;o++){const r=i[o+1];let l=i[o];if(l.seq1Range.isEmpty||l.seq2Range.isEmpty){const a=r.seq1Range.start-l.seq1Range.endExclusive;let d;for(d=0;d<a&&!(!s.isStronglyEqual(l.seq1Range.start+d,l.seq1Range.endExclusive+d)||!e.isStronglyEqual(l.seq2Range.start+d,l.seq2Range.endExclusive+d));d++);if(d===a){i[o+1]=new Qr(new $i(l.seq1Range.start+a,r.seq1Range.endExclusive),new $i(l.seq2Range.start+a,r.seq2Range.endExclusive));continue}d>0&&(l=l.delta(d))}n.push(l)}return i.length>0&&n.push(i[i.length-1]),n}function N7e(s,e,t){if(!s.getBoundaryScore||!e.getBoundaryScore)return t;for(let i=0;i<t.length;i++){const n=i>0?t[i-1]:void 0,o=t[i],r=i+1<t.length?t[i+1]:void 0,l=new $i(n?n.seq1Range.endExclusive+1:0,r?r.seq1Range.start-1:s.length),a=new $i(n?n.seq2Range.endExclusive+1:0,r?r.seq2Range.start-1:e.length);o.seq1Range.isEmpty?t[i]=Hhe(o,s,e,l,a):o.seq2Range.isEmpty&&(t[i]=Hhe(o.swap(),e,s,a,l).swap())}return t}function Hhe(s,e,t,i,n){let r=1;for(;s.seq1Range.start-r>=i.start&&s.seq2Range.start-r>=n.start&&t.isStronglyEqual(s.seq2Range.start-r,s.seq2Range.endExclusive-r)&&r<100;)r++;r--;let l=0;for(;s.seq1Range.start+l<i.endExclusive&&s.seq2Range.endExclusive+l<n.endExclusive&&t.isStronglyEqual(s.seq2Range.start+l,s.seq2Range.endExclusive+l)&&l<100;)l++;if(r===0&&l===0)return s;let a=0,d=-1;for(let c=-r;c<=l;c++){const h=s.seq2Range.start+c,u=s.seq2Range.endExclusive+c,m=s.seq1Range.start+c,p=e.getBoundaryScore(m)+t.getBoundaryScore(h)+t.getBoundaryScore(u);p>d&&(d=p,a=c)}return s.delta(a)}function R7e(s,e,t){const i=[];for(const n of t){const o=i[i.length-1];if(!o){i.push(n);continue}n.seq1Range.start-o.seq1Range.endExclusive<=2||n.seq2Range.start-o.seq2Range.endExclusive<=2?i[i.length-1]=new Qr(o.seq1Range.join(n.seq1Range),o.seq2Range.join(n.seq2Range)):i.push(n)}return i}function V7e(s,e,t){const i=Qr.invert(t,s.length),n=[];let o=new yf(0,0);function r(a,d){if(a.offset1<o.offset1||a.offset2<o.offset2)return;const c=s.findWordContaining(a.offset1),h=e.findWordContaining(a.offset2);if(!c||!h)return;let u=new Qr(c,h);const m=u.intersect(d);let p=m.seq1Range.length,g=m.seq2Range.length;for(;i.length>0;){const f=i[0];if(!(f.seq1Range.intersects(u.seq1Range)||f.seq2Range.intersects(u.seq2Range)))break;const U=s.findWordContaining(f.seq1Range.start),S=e.findWordContaining(f.seq2Range.start),Z=new Qr(U,S),R=Z.intersect(f);if(p+=R.seq1Range.length,g+=R.seq2Range.length,u=u.join(Z),u.seq1Range.endExclusive>=f.seq1Range.endExclusive)i.shift();else break}p+g<(u.seq1Range.length+u.seq2Range.length)*2/3&&n.push(u),o=u.getEndExclusives()}for(;i.length>0;){const a=i.shift();a.seq1Range.isEmpty||(r(a.getStarts(),a),r(a.getEndExclusives().delta(-1),a))}return W7e(t,n)}function W7e(s,e){const t=[];for(;s.length>0||e.length>0;){const i=s[0],n=e[0];let o;i&&(!n||i.seq1Range.start<n.seq1Range.start)?o=s.shift():o=e.shift(),t.length>0&&t[t.length-1].seq1Range.endExclusive>=o.seq1Range.start?t[t.length-1]=t[t.length-1].join(o):t.push(o)}return t}function y7e(s,e,t){let i=t;if(i.length===0)return i;let n=0,o;do{o=!1;const r=[i[0]];for(let l=1;l<i.length;l++){let c=function(u,m){const p=new $i(d.seq1Range.endExclusive,a.seq1Range.start);return s.getText(p).replace(/\s/g,"").length<=4&&(u.seq1Range.length+u.seq2Range.length>5||m.seq1Range.length+m.seq2Range.length>5)};const a=i[l],d=r[r.length-1];c(d,a)?(o=!0,r[r.length-1]=r[r.length-1].join(a)):r.push(a)}i=r}while(n++<10&&o);return i}function Q7e(s,e,t){let i=t;if(i.length===0)return i;let n=0,o;do{o=!1;const l=[i[0]];for(let a=1;a<i.length;a++){let h=function(m,p){const g=new $i(c.seq1Range.endExclusive,d.seq1Range.start);if(s.countLinesIn(g)>5||g.length>500)return!1;const b=s.getText(g).trim();if(b.length>20||b.split(/\r\n|\r|\n/).length>1)return!1;const U=s.countLinesIn(m.seq1Range),S=m.seq1Range.length,Z=e.countLinesIn(m.seq2Range),R=m.seq2Range.length,y=s.countLinesIn(p.seq1Range),N=p.seq1Range.length,w=e.countLinesIn(p.seq2Range),Q=p.seq2Range.length,C=2*40+50;function v(Y){return Math.min(Y,C)}return Math.pow(Math.pow(v(U*40+S),1.5)+Math.pow(v(Z*40+R),1.5),1.5)+Math.pow(Math.pow(v(y*40+N),1.5)+Math.pow(v(w*40+Q),1.5),1.5)>(C**1.5)**1.5*1.3};const d=i[a],c=l[l.length-1];h(c,d)?(o=!0,l[l.length-1]=l[l.length-1].join(d)):l.push(d)}i=l}while(n++<10&&o);const r=[];return FOe(i,(l,a,d)=>{let c=a;function h(b){return b.length>0&&b.trim().length<=3&&a.seq1Range.length+a.seq2Range.length>100}const u=s.extendToFullLines(a.seq1Range),m=s.getText(new $i(u.start,a.seq1Range.start));h(m)&&(c=c.deltaStart(-m.length));const p=s.getText(new $i(a.seq1Range.endExclusive,u.endExclusive));h(p)&&(c=c.deltaEnd(p.length));const g=Qr.fromOffsetPairs(l?l.getEndExclusives():yf.zero,d?d.getStarts():yf.max),f=c.intersect(g);r.length>0&&f.getStarts().equals(r[r.length-1].getEndExclusives())?r[r.length-1]=r[r.length-1].join(f):r.push(f)}),r}class Khe{constructor(e,t){this.trimmedHash=e,this.lines=t}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const t=e===0?0:qhe(this.lines[e-1]),i=e===this.lines.length?0:qhe(this.lines[e]);return 1e3-(t+i)}getText(e){return this.lines.slice(e.start,e.endExclusive).join(`
- `)}isStronglyEqual(e,t){return this.lines[e]===this.lines[t]}}function qhe(s){let e=0;for(;e<s.length&&(s.charCodeAt(e)===32||s.charCodeAt(e)===9);)e++;return e}class JSe{constructor(){this.dynamicProgrammingDiffing=new m7e,this.myersDiffingAlgorithm=new GSe}computeDiff(e,t,i){if(e.length<=1&&lo(e,t,(R,y)=>R===y))return new fD([],[],!1);if(e.length===1&&e[0].length===0||t.length===1&&t[0].length===0)return new fD([new th(new Ii(1,e.length+1),new Ii(1,t.length+1),[new Dc(new z(1,1,e.length,e[e.length-1].length+1),new z(1,1,t.length,t[t.length-1].length+1))])],[],!1);const n=i.maxComputationTimeMs===0?tL.instance:new u7e(i.maxComputationTimeMs),o=!i.ignoreTrimWhitespace,r=new Map;function l(R){let y=r.get(R);return y===void 0&&(y=r.size,r.set(R,y)),y}const a=e.map(R=>l(R.trim())),d=t.map(R=>l(R.trim())),c=new Khe(a,e),h=new Khe(d,t),u=(()=>c.length+h.length<1700?this.dynamicProgrammingDiffing.compute(c,h,n,(R,y)=>e[R]===t[y]?t[y].length===0?.1:1+Math.log(1+t[y].length):.99):this.myersDiffingAlgorithm.compute(c,h,n))();let m=u.diffs,p=u.hitTimeout;m=T8(c,h,m),m=y7e(c,h,m);const g=[],f=R=>{if(o)for(let y=0;y<R;y++){const N=b+y,w=U+y;if(e[N]!==t[w]){const Q=this.refineDiff(e,t,new Qr(new $i(N,N+1),new $i(w,w+1)),n,o);for(const C of Q.mappings)g.push(C);Q.hitTimeout&&(p=!0)}}};let b=0,U=0;for(const R of m){SN(()=>R.seq1Range.start-b===R.seq2Range.start-U);const y=R.seq1Range.start-b;f(y),b=R.seq1Range.endExclusive,U=R.seq2Range.endExclusive;const N=this.refineDiff(e,t,R,n,o);N.hitTimeout&&(p=!0);for(const w of N.mappings)g.push(w)}f(e.length-b);const S=$he(g,e,t);let Z=[];return i.computeMoves&&(Z=this.computeMoves(S,e,t,a,d,n,o)),SN(()=>{function R(N,w){if(N.lineNumber<1||N.lineNumber>w.length)return!1;const Q=w[N.lineNumber-1];return!(N.column<1||N.column>Q.length+1)}function y(N,w){return!(N.startLineNumber<1||N.startLineNumber>w.length+1||N.endLineNumberExclusive<1||N.endLineNumberExclusive>w.length+1)}for(const N of S){if(!N.innerChanges)return!1;for(const w of N.innerChanges)if(!(R(w.modifiedRange.getStartPosition(),t)&&R(w.modifiedRange.getEndPosition(),t)&&R(w.originalRange.getStartPosition(),e)&&R(w.originalRange.getEndPosition(),e)))return!1;if(!y(N.modified,t)||!y(N.original,e))return!1}return!0}),new fD(S,Z,p)}computeMoves(e,t,i,n,o,r,l){return b7e(e,t,i,n,o,r).map(c=>{const h=this.refineDiff(t,i,new Qr(c.original.toOffsetRange(),c.modified.toOffsetRange()),r,l),u=$he(h.mappings,t,i,!0);return new ISe(c,u)})}refineDiff(e,t,i,n,o){const l=w7e(i).toRangeMapping2(e,t),a=new AX(e,l.originalRange,o),d=new AX(t,l.modifiedRange,o),c=a.length+d.length<500?this.dynamicProgrammingDiffing.compute(a,d,n):this.myersDiffingAlgorithm.compute(a,d,n);let h=c.diffs;return h=T8(a,d,h),h=V7e(a,d,h),h=R7e(a,d,h),h=Q7e(a,d,h),{mappings:h.map(m=>new Dc(a.translateRange(m.seq1Range),d.translateRange(m.seq2Range))),hitTimeout:c.hitTimeout}}}function $he(s,e,t,i=!1){const n=[];for(const o of use(s.map(r=>M7e(r,e,t)),(r,l)=>r.original.overlapOrTouch(l.original)||r.modified.overlapOrTouch(l.modified))){const r=o[0],l=o[o.length-1];n.push(new th(r.original.join(l.original),r.modified.join(l.modified),o.map(a=>a.innerChanges[0])))}return SN(()=>!i&&n.length>0&&(n[0].modified.startLineNumber!==n[0].original.startLineNumber||t.length-n[n.length-1].modified.endLineNumberExclusive!==e.length-n[n.length-1].original.endLineNumberExclusive)?!1:Xse(n,(o,r)=>r.original.startLineNumber-o.original.endLineNumberExclusive===r.modified.startLineNumber-o.modified.endLineNumberExclusive&&o.original.endLineNumberExclusive<r.original.startLineNumber&&o.modified.endLineNumberExclusive<r.modified.startLineNumber)),n}function M7e(s,e,t){let i=0,n=0;s.modifiedRange.endColumn===1&&s.originalRange.endColumn===1&&s.originalRange.startLineNumber+i<=s.originalRange.endLineNumber&&s.modifiedRange.startLineNumber+i<=s.modifiedRange.endLineNumber&&(n=-1),s.modifiedRange.startColumn-1>=t[s.modifiedRange.startLineNumber-1].length&&s.originalRange.startColumn-1>=e[s.originalRange.startLineNumber-1].length&&s.originalRange.startLineNumber<=s.originalRange.endLineNumber+n&&s.modifiedRange.startLineNumber<=s.modifiedRange.endLineNumber+n&&(i=1);const o=new Ii(s.originalRange.startLineNumber+i,s.originalRange.endLineNumber+1+n),r=new Ii(s.modifiedRange.startLineNumber+i,s.modifiedRange.endLineNumber+1+n);return new th(o,r,[s])}function w7e(s){return new ga(new Ii(s.seq1Range.start+1,s.seq1Range.endExclusive+1),new Ii(s.seq2Range.start+1,s.seq2Range.endExclusive+1))}const eue={getLegacy:()=>new a7e,getDefault:()=>new JSe};function ZF(s,e){const t=Math.pow(10,e);return Math.round(s*t)/t}class Qn{constructor(e,t,i,n=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,e))|0,this.g=Math.min(255,Math.max(0,t))|0,this.b=Math.min(255,Math.max(0,i))|0,this.a=ZF(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}class Eu{constructor(e,t,i,n){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=ZF(Math.max(Math.min(1,t),0),3),this.l=ZF(Math.max(Math.min(1,i),0),3),this.a=ZF(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,o=e.a,r=Math.max(t,i,n),l=Math.min(t,i,n);let a=0,d=0;const c=(l+r)/2,h=r-l;if(h>0){switch(d=Math.min(c<=.5?h/(2*c):h/(2-2*c),1),r){case t:a=(i-n)/h+(i<n?6:0);break;case i:a=(n-t)/h+2;break;case n:a=(t-i)/h+4;break}a*=60,a=Math.round(a)}return new Eu(a,d,c,o)}static _hue2rgb(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<1/2?t:i<2/3?e+(t-e)*(2/3-i)*6:e}static toRGBA(e){const t=e.h/360,{s:i,l:n,a:o}=e;let r,l,a;if(i===0)r=l=a=n;else{const d=n<.5?n*(1+i):n+i-n*i,c=2*n-d;r=Eu._hue2rgb(c,d,t+1/3),l=Eu._hue2rgb(c,d,t),a=Eu._hue2rgb(c,d,t-1/3)}return new Qn(Math.round(r*255),Math.round(l*255),Math.round(a*255),o)}}class wg{constructor(e,t,i,n){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=ZF(Math.max(Math.min(1,t),0),3),this.v=ZF(Math.max(Math.min(1,i),0),3),this.a=ZF(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,o=Math.max(t,i,n),r=Math.min(t,i,n),l=o-r,a=o===0?0:l/o;let d;return l===0?d=0:o===t?d=((i-n)/l%6+6)%6:o===i?d=(n-t)/l+2:d=(t-i)/l+4,new wg(Math.round(d*60),a,o,e.a)}static toRGBA(e){const{h:t,s:i,v:n,a:o}=e,r=n*i,l=r*(1-Math.abs(t/60%2-1)),a=n-r;let[d,c,h]=[0,0,0];return t<60?(d=r,c=l):t<120?(d=l,c=r):t<180?(c=r,h=l):t<240?(c=l,h=r):t<300?(d=l,h=r):t<=360&&(d=r,h=l),d=Math.round((d+a)*255),c=Math.round((c+a)*255),h=Math.round((h+a)*255),new Qn(d,c,h,o)}}const wo=class wo{static fromHex(e){return wo.Format.CSS.parseHex(e)||wo.red}static equals(e,t){return!e&&!t?!0:!e||!t?!1:e.equals(t)}get hsla(){return this._hsla?this._hsla:Eu.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:wg.fromRGBA(this.rgba)}constructor(e){if(e)if(e instanceof Qn)this.rgba=e;else if(e instanceof Eu)this._hsla=e,this.rgba=Eu.toRGBA(e);else if(e instanceof wg)this._hsva=e,this.rgba=wg.toRGBA(e);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(e){return!!e&&Qn.equals(this.rgba,e.rgba)&&Eu.equals(this.hsla,e.hsla)&&wg.equals(this.hsva,e.hsva)}getRelativeLuminance(){const e=wo._relativeLuminanceForComponent(this.rgba.r),t=wo._relativeLuminanceForComponent(this.rgba.g),i=wo._relativeLuminanceForComponent(this.rgba.b),n=.2126*e+.7152*t+.0722*i;return ZF(n,4)}static _relativeLuminanceForComponent(e){const t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(e){const t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return t>i}isDarkerThan(e){const t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return t<i}lighten(e){return new wo(new Eu(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*e,this.hsla.a))}darken(e){return new wo(new Eu(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*e,this.hsla.a))}transparent(e){const{r:t,g:i,b:n,a:o}=this.rgba;return new wo(new Qn(t,i,n,o*e))}isTransparent(){return this.rgba.a===0}isOpaque(){return this.rgba.a===1}opposite(){return new wo(new Qn(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}makeOpaque(e){if(this.isOpaque()||e.rgba.a!==1)return this;const{r:t,g:i,b:n,a:o}=this.rgba;return new wo(new Qn(e.rgba.r-o*(e.rgba.r-t),e.rgba.g-o*(e.rgba.g-i),e.rgba.b-o*(e.rgba.b-n),1))}toString(){return this._toString||(this._toString=wo.Format.CSS.format(this)),this._toString}static getLighterColor(e,t,i){if(e.isLighterThan(t))return e;i=i||.5;const n=e.getRelativeLuminance(),o=t.getRelativeLuminance();return i=i*(o-n)/o,e.lighten(i)}static getDarkerColor(e,t,i){if(e.isDarkerThan(t))return e;i=i||.5;const n=e.getRelativeLuminance(),o=t.getRelativeLuminance();return i=i*(n-o)/n,e.darken(i)}};wo.white=new wo(new Qn(255,255,255,1)),wo.black=new wo(new Qn(0,0,0,1)),wo.red=new wo(new Qn(255,0,0,1)),wo.blue=new wo(new Qn(0,0,255,1)),wo.green=new wo(new Qn(0,255,0,1)),wo.cyan=new wo(new Qn(0,255,255,1)),wo.lightgrey=new wo(new Qn(211,211,211,1)),wo.transparent=new wo(new Qn(0,0,0,0));let Je=wo;(function(s){(function(e){(function(t){function i(m){return m.rgba.a===1?`rgb(${m.rgba.r}, ${m.rgba.g}, ${m.rgba.b})`:s.Format.CSS.formatRGBA(m)}t.formatRGB=i;function n(m){return`rgba(${m.rgba.r}, ${m.rgba.g}, ${m.rgba.b}, ${+m.rgba.a.toFixed(2)})`}t.formatRGBA=n;function o(m){return m.hsla.a===1?`hsl(${m.hsla.h}, ${(m.hsla.s*100).toFixed(2)}%, ${(m.hsla.l*100).toFixed(2)}%)`:s.Format.CSS.formatHSLA(m)}t.formatHSL=o;function r(m){return`hsla(${m.hsla.h}, ${(m.hsla.s*100).toFixed(2)}%, ${(m.hsla.l*100).toFixed(2)}%, ${m.hsla.a.toFixed(2)})`}t.formatHSLA=r;function l(m){const p=m.toString(16);return p.length!==2?"0"+p:p}function a(m){return`#${l(m.rgba.r)}${l(m.rgba.g)}${l(m.rgba.b)}`}t.formatHex=a;function d(m,p=!1){return p&&m.rgba.a===1?s.Format.CSS.formatHex(m):`#${l(m.rgba.r)}${l(m.rgba.g)}${l(m.rgba.b)}${l(Math.round(m.rgba.a*255))}`}t.formatHexA=d;function c(m){return m.isOpaque()?s.Format.CSS.formatHex(m):s.Format.CSS.formatRGBA(m)}t.format=c;function h(m){const p=m.length;if(p===0||m.charCodeAt(0)!==35)return null;if(p===7){const g=16*u(m.charCodeAt(1))+u(m.charCodeAt(2)),f=16*u(m.charCodeAt(3))+u(m.charCodeAt(4)),b=16*u(m.charCodeAt(5))+u(m.charCodeAt(6));return new s(new Qn(g,f,b,1))}if(p===9){const g=16*u(m.charCodeAt(1))+u(m.charCodeAt(2)),f=16*u(m.charCodeAt(3))+u(m.charCodeAt(4)),b=16*u(m.charCodeAt(5))+u(m.charCodeAt(6)),U=16*u(m.charCodeAt(7))+u(m.charCodeAt(8));return new s(new Qn(g,f,b,U/255))}if(p===4){const g=u(m.charCodeAt(1)),f=u(m.charCodeAt(2)),b=u(m.charCodeAt(3));return new s(new Qn(16*g+g,16*f+f,16*b+b))}if(p===5){const g=u(m.charCodeAt(1)),f=u(m.charCodeAt(2)),b=u(m.charCodeAt(3)),U=u(m.charCodeAt(4));return new s(new Qn(16*g+g,16*f+f,16*b+b,(16*U+U)/255))}return null}t.parseHex=h;function u(m){switch(m){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}})(e.CSS||(e.CSS={}))})(s.Format||(s.Format={}))})(Je||(Je={}));function XSe(s){const e=[];for(const t of s){const i=Number(t);(i||i===0&&t.replace(/\s/g,"")!=="")&&e.push(i)}return e}function qse(s,e,t,i){return{red:s/255,blue:t/255,green:e/255,alpha:i}}function fw(s,e){const t=e.index,i=e[0].length;if(!t)return;const n=s.positionAt(t);return{startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:n.lineNumber,endColumn:n.column+i}}function T7e(s,e){if(!s)return;const t=Je.Format.CSS.parseHex(e);if(t)return{range:s,color:qse(t.rgba.r,t.rgba.g,t.rgba.b,t.rgba.a)}}function tue(s,e,t){if(!s||e.length!==1)return;const n=e[0].values(),o=XSe(n);return{range:s,color:qse(o[0],o[1],o[2],t?o[3]:1)}}function iue(s,e,t){if(!s||e.length!==1)return;const n=e[0].values(),o=XSe(n),r=new Je(new Eu(o[0],o[1]/100,o[2]/100,t?o[3]:1));return{range:s,color:qse(r.rgba.r,r.rgba.g,r.rgba.b,r.rgba.a)}}function bw(s,e){return typeof s=="string"?[...s.matchAll(e)]:s.findMatches(e)}function C7e(s){const e=[],i=bw(s,/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm);if(i.length>0)for(const n of i){const o=n.filter(d=>d!==void 0),r=o[1],l=o[2];if(!l)continue;let a;if(r==="rgb"){const d=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;a=tue(fw(s,n),bw(l,d),!1)}else if(r==="rgba"){const d=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;a=tue(fw(s,n),bw(l,d),!0)}else if(r==="hsl"){const d=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;a=iue(fw(s,n),bw(l,d),!1)}else if(r==="hsla"){const d=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;a=iue(fw(s,n),bw(l,d),!0)}else r==="#"&&(a=T7e(fw(s,n),r+l));a&&e.push(a)}return e}function B7e(s){return!s||typeof s.getValue!="function"||typeof s.positionAt!="function"?[]:C7e(s)}const nue=new RegExp("\\bMARK:\\s*(.*)$","d"),L7e=/^-+|-+$/g;function v7e(s,e){var i;let t=[];if(e.findRegionSectionHeaders&&((i=e.foldingRules)!=null&&i.markers)){const n=k7e(s,e);t=t.concat(n)}if(e.findMarkSectionHeaders){const n=x7e(s);t=t.concat(n)}return t}function k7e(s,e){const t=[],i=s.getLineCount();for(let n=1;n<=i;n++){const o=s.getLineContent(n),r=o.match(e.foldingRules.markers.start);if(r){const l={startLineNumber:n,startColumn:r[0].length+1,endLineNumber:n,endColumn:o.length+1};if(l.endColumn>l.startColumn){const a={range:l,...YSe(o.substring(r[0].length)),shouldBeInComments:!1};(a.text||a.hasSeparatorLine)&&t.push(a)}}}return t}function x7e(s){const e=[],t=s.getLineCount();for(let i=1;i<=t;i++){const n=s.getLineContent(i);I7e(n,i,e)}return e}function I7e(s,e,t){nue.lastIndex=0;const i=nue.exec(s);if(i){const n=i.indices[1][0]+1,o=i.indices[1][1]+1,r={startLineNumber:e,startColumn:n,endLineNumber:e,endColumn:o};if(r.endColumn>r.startColumn){const l={range:r,...YSe(i[1]),shouldBeInComments:!0};(l.text||l.hasSeparatorLine)&&t.push(l)}}}function YSe(s){s=s.trim();const e=s.startsWith("-");return s=s.replace(L7e,""),{text:s,hasSeparatorLine:e}}class E7e{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=IR(e);const i=this.values,n=this.prefixSum,o=t.length;return o===0?!1:(this.values=new Uint32Array(i.length+o),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e),e+o),this.values.set(t,e),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(e,t){return e=IR(e),t=IR(t),this.values[e]===t?!1:(this.values[e]=t,e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),!0)}removeValues(e,t){e=IR(e),t=IR(t);const i=this.values,n=this.prefixSum;if(e>=i.length)return!1;const o=i.length-e;return t>=o&&(t=o),t===0?!1:(this.values=new Uint32Array(i.length-t),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(e){return e<0?0:(e=IR(e),this._getPrefixSum(e))}_getPrefixSum(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;t===0&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let i=t;i<=e;i++)this.prefixSum[i]=this.prefixSum[i-1]+this.values[i];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalSum();let t=0,i=this.values.length-1,n=0,o=0,r=0;for(;t<=i;)if(n=t+(i-t)/2|0,o=this.prefixSum[n],r=o-this.values[n],e<r)i=n-1;else if(e>=o)t=n+1;else break;return new _Se(n,e-r)}}class D7e{constructor(e){this._values=e,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(e){return this._ensureValid(),e===0?0:this._prefixSum[e-1]}getIndexOf(e){this._ensureValid();const t=this._indexBySum[e],i=t>0?this._prefixSum[t-1]:0;return new _Se(t,e-i)}removeValues(e,t){this._values.splice(e,t),this._invalidate(e)}insertValues(e,t){this._values=Z3(this._values,e,t),this._invalidate(e)}_invalidate(e){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,e-1)}_ensureValid(){if(!this._isValid){for(let e=this._validEndIndex+1,t=this._values.length;e<t;e++){const i=this._values[e],n=e>0?this._prefixSum[e-1]:0;this._prefixSum[e]=n+i;for(let o=0;o<i;o++)this._indexBySum[n+o]=e}this._prefixSum.length=this._values.length,this._indexBySum.length=this._prefixSum[this._prefixSum.length-1],this._isValid=!0,this._validEndIndex=this._values.length-1}}setValue(e,t){this._values[e]!==t&&(this._values[e]=t,this._invalidate(e))}}class _Se{constructor(e,t){this.index=e,this.remainder=t,this._prefixSumIndexOfResultBrand=void 0,this.index=e,this.remainder=t}}class G7e{constructor(e,t,i,n){this._uri=e,this._lines=t,this._eol=i,this._versionId=n,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return this._cachedTextValue===null&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const i of t)this._acceptDeleteRange(i.range),this._acceptInsertText(new ge(i.range.startLineNumber,i.range.startColumn),i.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,i=new Uint32Array(t);for(let n=0;n<t;n++)i[n]=this._lines[n].length+e;this._lineStarts=new E7e(i)}}_setLineText(e,t){this._lines[e]=t,this._lineStarts&&this._lineStarts.setValue(e,this._lines[e].length+this._eol.length)}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.startLineNumber-1].substring(e.endColumn-1));return}this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.endLineNumber-1].substring(e.endColumn-1)),this._lines.splice(e.startLineNumber,e.endLineNumber-e.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t){if(t.length===0)return;const i=Kg(t);if(i.length===1){this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]+this._lines[e.lineNumber-1].substring(e.column-1));return}i[i.length-1]+=this._lines[e.lineNumber-1].substring(e.column-1),this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]);const n=new Uint32Array(i.length-1);for(let o=1;o<i.length;o++)this._lines.splice(e.lineNumber+o-1,0,i[o]),n[o-1]=i[o].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(e.lineNumber,n)}}const sue=60*1e3;class J7e extends be{constructor(e,t,i=!1){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=e,this._modelService=t,!i){const n=new vse;n.cancelAndSet(()=>this._checkStopModelSync(),Math.round(sue/2)),this._register(n)}}dispose(){for(const e in this._syncedModels)Ws(this._syncedModels[e]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(e,t=!1){for(const i of e){const n=i.toString();this._syncedModels[n]||this._beginModelSync(i,t),this._syncedModels[n]&&(this._syncedModelsLastUsedTime[n]=new Date().getTime())}}_checkStopModelSync(){const e=new Date().getTime(),t=[];for(const i in this._syncedModelsLastUsedTime)e-this._syncedModelsLastUsedTime[i]>sue&&t.push(i);for(const i of t)this._stopModelSync(i)}_beginModelSync(e,t){const i=this._modelService.getModel(e);if(!i||!t&&i.isTooLargeForSyncing())return;const n=e.toString();this._proxy.$acceptNewModel({url:i.uri.toString(),lines:i.getLinesContent(),EOL:i.getEOL(),versionId:i.getVersionId()});const o=new De;o.add(i.onDidChangeContent(r=>{this._proxy.$acceptModelChanged(n.toString(),r)})),o.add(i.onWillDispose(()=>{this._stopModelSync(n)})),o.add(ei(()=>{this._proxy.$acceptRemovedModel(n)})),this._syncedModels[n]=o}_stopModelSync(e){const t=this._syncedModels[e];delete this._syncedModels[e],delete this._syncedModelsLastUsedTime[e],Ws(t)}}class X7e{constructor(){this._models=Object.create(null)}getModel(e){return this._models[e]}getModels(){const e=[];return Object.keys(this._models).forEach(t=>e.push(this._models[t])),e}$acceptNewModel(e){this._models[e.url]=new Y7e(ni.parse(e.url),e.lines,e.EOL,e.versionId)}$acceptModelChanged(e,t){if(!this._models[e])return;this._models[e].onEvents(t)}$acceptRemovedModel(e){this._models[e]&&delete this._models[e]}}class Y7e extends G7e{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(e){const t=[];for(let i=0;i<this._lines.length;i++){const n=this._lines[i],o=this.offsetAt(new ge(i+1,1)),r=n.matchAll(e);for(const l of r)(l.index||l.index===0)&&(l.index=l.index+o),t.push(l)}return t}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(e){return this._lines[e-1]}getWordAtPosition(e,t){const i=DB(e.column,Fse(t),this._lines[e.lineNumber-1],0);return i?new z(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn):null}words(e){const t=this._lines,i=this._wordenize.bind(this);let n=0,o="",r=0,l=[];return{*[Symbol.iterator](){for(;;)if(r<l.length){const a=o.substring(l[r].start,l[r].end);r+=1,yield a}else if(n<t.length)o=t[n],l=i(o,e),r=0,n+=1;else break}}}getLineWords(e,t){const i=this._lines[e-1],n=this._wordenize(i,t),o=[];for(const r of n)o.push({word:i.substring(r.start,r.end),startColumn:r.start+1,endColumn:r.end+1});return o}_wordenize(e,t){const i=[];let n;for(t.lastIndex=0;(n=t.exec(e))&&n[0].length!==0;)i.push({start:n.index,end:n.index+n[0].length});return i}getValueInRange(e){if(e=this._validateRange(e),e.startLineNumber===e.endLineNumber)return this._lines[e.startLineNumber-1].substring(e.startColumn-1,e.endColumn-1);const t=this._eol,i=e.startLineNumber-1,n=e.endLineNumber-1,o=[];o.push(this._lines[i].substring(e.startColumn-1));for(let r=i+1;r<n;r++)o.push(this._lines[r]);return o.push(this._lines[n].substring(0,e.endColumn-1)),o.join(t)}offsetAt(e){return e=this._validatePosition(e),this._ensureLineStarts(),this._lineStarts.getPrefixSum(e.lineNumber-2)+(e.column-1)}positionAt(e){e=Math.floor(e),e=Math.max(0,e),this._ensureLineStarts();const t=this._lineStarts.getIndexOf(e),i=this._lines[t.index].length;return{lineNumber:1+t.index,column:1+Math.min(t.remainder,i)}}_validateRange(e){const t=this._validatePosition({lineNumber:e.startLineNumber,column:e.startColumn}),i=this._validatePosition({lineNumber:e.endLineNumber,column:e.endColumn});return t.lineNumber!==e.startLineNumber||t.column!==e.startColumn||i.lineNumber!==e.endLineNumber||i.column!==e.endColumn?{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:i.lineNumber,endColumn:i.column}:e}_validatePosition(e){if(!ge.isIPosition(e))throw new Error("bad position");let{lineNumber:t,column:i}=e,n=!1;if(t<1)t=1,i=1,n=!0;else if(t>this._lines.length)t=this._lines.length,i=this._lines[t-1].length+1,n=!0;else{const o=this._lines[t-1].length+1;i<1?(i=1,n=!0):i>o&&(i=o,n=!0)}return n?{lineNumber:t,column:i}:e}}const B_=class B_{constructor(){this._workerTextModelSyncServer=new X7e}dispose(){}_getModel(e){return this._workerTextModelSyncServer.getModel(e)}_getModels(){return this._workerTextModelSyncServer.getModels()}$acceptNewModel(e){this._workerTextModelSyncServer.$acceptNewModel(e)}$acceptModelChanged(e,t){this._workerTextModelSyncServer.$acceptModelChanged(e,t)}$acceptRemovedModel(e){this._workerTextModelSyncServer.$acceptRemovedModel(e)}async $computeUnicodeHighlights(e,t,i){const n=this._getModel(e);return n?jse.computeUnicodeHighlights(n,t,i):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}async $findSectionHeaders(e,t){const i=this._getModel(e);return i?v7e(i,t):[]}async $computeDiff(e,t,i,n){const o=this._getModel(e),r=this._getModel(t);return!o||!r?null:bD.computeDiff(o,r,i,n)}static computeDiff(e,t,i,n){const o=n==="advanced"?eue.getDefault():eue.getLegacy(),r=e.getLinesContent(),l=t.getLinesContent(),a=o.computeDiff(r,l,i),d=a.changes.length>0?!1:this._modelsAreIdentical(e,t);function c(h){return h.map(u=>{var m;return[u.original.startLineNumber,u.original.endLineNumberExclusive,u.modified.startLineNumber,u.modified.endLineNumberExclusive,(m=u.innerChanges)==null?void 0:m.map(p=>[p.originalRange.startLineNumber,p.originalRange.startColumn,p.originalRange.endLineNumber,p.originalRange.endColumn,p.modifiedRange.startLineNumber,p.modifiedRange.startColumn,p.modifiedRange.endLineNumber,p.modifiedRange.endColumn])]})}return{identical:d,quitEarly:a.hitTimeout,changes:c(a.changes),moves:a.moves.map(h=>[h.lineRangeMapping.original.startLineNumber,h.lineRangeMapping.original.endLineNumberExclusive,h.lineRangeMapping.modified.startLineNumber,h.lineRangeMapping.modified.endLineNumberExclusive,c(h.changes)])}}static _modelsAreIdentical(e,t){const i=e.getLineCount(),n=t.getLineCount();if(i!==n)return!1;for(let o=1;o<=i;o++){const r=e.getLineContent(o),l=t.getLineContent(o);if(r!==l)return!1}return!0}async $computeMoreMinimalEdits(e,t,i){const n=this._getModel(e);if(!n)return t;const o=[];let r;t=t.slice(0).sort((a,d)=>{if(a.range&&d.range)return z.compareRangesUsingStarts(a.range,d.range);const c=a.range?0:1,h=d.range?0:1;return c-h});let l=0;for(let a=1;a<t.length;a++)z.getEndPosition(t[l].range).equals(z.getStartPosition(t[a].range))?(t[l].range=z.fromPositions(z.getStartPosition(t[l].range),z.getEndPosition(t[a].range)),t[l].text+=t[a].text):(l++,t[l]=t[a]);t.length=l+1;for(let{range:a,text:d,eol:c}of t){if(typeof c=="number"&&(r=c),z.isEmpty(a)&&!d)continue;const h=n.getValueInRange(a);if(d=d.replace(/\r\n|\n|\r/g,n.eol),h===d)continue;if(Math.max(d.length,h.length)>bD._diffLimit){o.push({range:a,text:d});continue}const u=BKe(h,d,i),m=n.offsetAt(z.lift(a).getStartPosition());for(const p of u){const g=n.positionAt(m+p.originalStart),f=n.positionAt(m+p.originalStart+p.originalLength),b={text:d.substr(p.modifiedStart,p.modifiedLength),range:{startLineNumber:g.lineNumber,startColumn:g.column,endLineNumber:f.lineNumber,endColumn:f.column}};n.getValueInRange(b.range)!==b.text&&o.push(b)}}return typeof r=="number"&&o.push({eol:r,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),o}async $computeLinks(e){const t=this._getModel(e);return t?IKe(t):null}async $computeDefaultDocumentColors(e){const t=this._getModel(e);return t?B7e(t):null}async $textualSuggest(e,t,i,n){const o=new jr,r=new RegExp(i,n),l=new Set;e:for(const a of e){const d=this._getModel(a);if(d){for(const c of d.words(r))if(!(c===t||!isNaN(Number(c)))&&(l.add(c),l.size>bD._suggestionsLimit))break e}}return{words:Array.from(l),duration:o.elapsed()}}async $computeWordRanges(e,t,i,n){const o=this._getModel(e);if(!o)return Object.create(null);const r=new RegExp(i,n),l=Object.create(null);for(let a=t.startLineNumber;a<t.endLineNumber;a++){const d=o.getLineWords(a,r);for(const c of d){if(!isNaN(Number(c.word)))continue;let h=l[c.word];h||(h=[],l[c.word]=h),h.push({startLineNumber:a,startColumn:c.startColumn,endLineNumber:a,endColumn:c.endColumn})}}return l}async $navigateValueSet(e,t,i,n,o){const r=this._getModel(e);if(!r)return null;const l=new RegExp(n,o);t.startColumn===t.endColumn&&(t={startLineNumber:t.startLineNumber,startColumn:t.startColumn,endLineNumber:t.endLineNumber,endColumn:t.endColumn+1});const a=r.getValueInRange(t),d=r.getWordAtPosition({lineNumber:t.startLineNumber,column:t.startColumn},l);if(!d)return null;const c=r.getValueInRange(d);return W8.INSTANCE.navigateValueSet(t,a,d,c,i)}};B_._diffLimit=1e5,B_._suggestionsLimit=1e4;let C8=B_;class bD extends C8{constructor(e,t){super(),this._host=e,this._foreignModuleFactory=t,this._foreignModule=null}async $ping(){return"pong"}$loadForeignModule(e,t,i){const r={host:QOe(i,(l,a)=>this._host.$fhr(l,a)),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(r,t),Promise.resolve(KK(this._foreignModule))):new Promise((l,a)=>{const d=c=>{this._foreignModule=c.create(r,t),l(KK(this._foreignModule))};{const c=y3.asBrowserUri(`${e}.js`).toString(!0);ii(()=>import(`${c}`),[],import.meta.url).then(d).catch(a)}})}$fmr(e,t){if(!this._foreignModule||typeof this._foreignModule[e]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(i){return Promise.reject(i)}}}typeof importScripts=="function"&&(globalThis.monaco=TZe());const z3=un("textResourceConfigurationService"),zSe=un("textResourcePropertiesService"),xt=un("ILanguageFeaturesService");var $se=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zZ=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const oue=5*60*1e3;function OZ(s,e){const t=s.getModel(e);return!(!t||t.isTooLargeForSyncing())}let B8=class extends be{constructor(e,t,i,n,o,r){super(),this._languageConfigurationService=o,this._modelService=t,this._workerManager=this._register(new L8(e,this._modelService)),this._logService=n,this._register(r.linkProvider.register({language:"*",hasAccessToAllModels:!0},{provideLinks:async(l,a)=>{if(!OZ(this._modelService,l.uri))return Promise.resolve({links:[]});const c=await(await this._workerWithResources([l.uri])).$computeLinks(l.uri.toString());return c&&{links:c}}})),this._register(r.completionProvider.register("*",new _7e(this._workerManager,i,this._modelService,this._languageConfigurationService)))}dispose(){super.dispose()}canComputeUnicodeHighlights(e){return OZ(this._modelService,e)}async computedUnicodeHighlights(e,t,i){return(await this._workerWithResources([e])).$computeUnicodeHighlights(e.toString(),t,i)}async computeDiff(e,t,i,n){const r=await(await this._workerWithResources([e,t],!0)).$computeDiff(e.toString(),t.toString(),i,n);if(!r)return null;return{identical:r.identical,quitEarly:r.quitEarly,changes:a(r.changes),moves:r.moves.map(d=>new ISe(new ga(new Ii(d[0],d[1]),new Ii(d[2],d[3])),a(d[4])))};function a(d){return d.map(c=>{var h;return new th(new Ii(c[0],c[1]),new Ii(c[2],c[3]),(h=c[4])==null?void 0:h.map(u=>new Dc(new z(u[0],u[1],u[2],u[3]),new z(u[4],u[5],u[6],u[7]))))})}}async computeMoreMinimalEdits(e,t,i=!1){if(ba(t)){if(!OZ(this._modelService,e))return Promise.resolve(t);const n=jr.create(),o=this._workerWithResources([e]).then(r=>r.$computeMoreMinimalEdits(e.toString(),t,i));return o.finally(()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),n.elapsed())),Promise.race([o,Pf(1e3).then(()=>t)])}else return Promise.resolve(void 0)}canNavigateValueSet(e){return OZ(this._modelService,e)}async navigateValueSet(e,t,i){const n=this._modelService.getModel(e);if(!n)return null;const o=this._languageConfigurationService.getLanguageConfiguration(n.getLanguageId()).getWordDefinition(),r=o.source,l=o.flags;return(await this._workerWithResources([e])).$navigateValueSet(e.toString(),t,i,r,l)}canComputeWordRanges(e){return OZ(this._modelService,e)}async computeWordRanges(e,t){const i=this._modelService.getModel(e);if(!i)return Promise.resolve(null);const n=this._languageConfigurationService.getLanguageConfiguration(i.getLanguageId()).getWordDefinition(),o=n.source,r=n.flags;return(await this._workerWithResources([e])).$computeWordRanges(e.toString(),t,o,r)}async findSectionHeaders(e,t){return(await this._workerWithResources([e])).$findSectionHeaders(e.toString(),t)}async computeDefaultDocumentColors(e){return(await this._workerWithResources([e])).$computeDefaultDocumentColors(e.toString())}async _workerWithResources(e,t=!1){return await(await this._workerManager.withWorker()).workerWithSyncedResources(e,t)}};B8=$se([zZ(1,zs),zZ(2,z3),zZ(3,Cl),zZ(4,bo),zZ(5,xt)],B8);class _7e{constructor(e,t,i,n){this.languageConfigurationService=n,this._debugDisplayName="wordbasedCompletions",this._workerManager=e,this._configurationService=t,this._modelService=i}async provideCompletionItems(e,t){const i=this._configurationService.getValue(e.uri,t,"editor");if(i.wordBasedSuggestions==="off")return;const n=[];if(i.wordBasedSuggestions==="currentDocument")OZ(this._modelService,e.uri)&&n.push(e.uri);else for(const h of this._modelService.getModels())OZ(this._modelService,h.uri)&&(h===e?n.unshift(h.uri):(i.wordBasedSuggestions==="allDocuments"||h.getLanguageId()===e.getLanguageId())&&n.push(h.uri));if(n.length===0)return;const o=this.languageConfigurationService.getLanguageConfiguration(e.getLanguageId()).getWordDefinition(),r=e.getWordAtPosition(t),l=r?new z(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn):z.fromPositions(t),a=l.setEndPosition(t.lineNumber,t.column),c=await(await this._workerManager.withWorker()).textualSuggest(n,r==null?void 0:r.word,o);if(c)return{duration:c.duration,suggestions:c.words.map(h=>({kind:18,label:h,insertText:h,range:{insert:a,replace:l}}))}}}let L8=class extends be{constructor(e,t){super(),this._workerDescriptor=e,this._modelService=t,this._editorWorkerClient=null,this._lastWorkerUsedTime=new Date().getTime(),this._register(new xse).cancelAndSet(()=>this._checkStopIdleWorker(),Math.round(oue/2),Us),this._register(this._modelService.onModelRemoved(n=>this._checkStopEmptyWorker()))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;this._modelService.getModels().length===0&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;new Date().getTime()-this._lastWorkerUsedTime>oue&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=new Date().getTime(),this._editorWorkerClient||(this._editorWorkerClient=new ZX(this._workerDescriptor,!1,this._modelService)),Promise.resolve(this._editorWorkerClient)}};L8=$se([zZ(1,zs)],L8);class z7e{constructor(e){this._instance=e,this.proxy=this._instance}dispose(){this._instance.dispose()}setChannel(e,t){throw new Error("Not supported")}}let ZX=class extends be{constructor(e,t,i){super(),this._workerDescriptor=e,this._disposed=!1,this._modelService=i,this._keepIdleModels=t,this._worker=null,this._modelManager=null}fhr(e,t){throw new Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(H4e(this._workerDescriptor)),y8.setChannel(this._worker,this._createEditorWorkerHost())}catch(e){A8(e),this._worker=this._createFallbackLocalWorker()}return this._worker}async _getProxy(){try{const e=this._getOrCreateWorker().proxy;return await e.$ping(),e}catch(e){return A8(e),this._worker=this._createFallbackLocalWorker(),this._worker.proxy}}_createFallbackLocalWorker(){return new z7e(new bD(this._createEditorWorkerHost(),null))}_createEditorWorkerHost(){return{$fhr:(e,t)=>this.fhr(e,t)}}_getOrCreateModelManager(e){return this._modelManager||(this._modelManager=this._register(new J7e(e,this._modelService,this._keepIdleModels))),this._modelManager}async workerWithSyncedResources(e,t=!1){if(this._disposed)return Promise.reject(vje());const i=await this._getProxy();return this._getOrCreateModelManager(i).ensureSyncedResources(e,t),i}async textualSuggest(e,t,i){const n=await this.workerWithSyncedResources(e),o=i.source,r=i.flags;return n.$textualSuggest(e.map(l=>l.toString()),t,o,r)}dispose(){super.dispose(),this._disposed=!0}};ZX=$se([zZ(2,zs)],ZX);var Gh;(function(s){s.DARK="dark",s.LIGHT="light",s.HIGH_CONTRAST_DARK="hcDark",s.HIGH_CONTRAST_LIGHT="hcLight"})(Gh||(Gh={}));function np(s){return s===Gh.HIGH_CONTRAST_DARK||s===Gh.HIGH_CONTRAST_LIGHT}function yy(s){return s===Gh.DARK||s===Gh.HIGH_CONTRAST_DARK}const Rr=un("themeService");function Vo(s){return{id:s}}function v8(s){switch(s){case Gh.DARK:return"vs-dark";case Gh.HIGH_CONTRAST_DARK:return"hc-black";case Gh.HIGH_CONTRAST_LIGHT:return"hc-light";default:return"vs"}}const OSe={ThemingContribution:"base.contributions.theming"};class O7e{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new fe}onColorThemeChange(e){return this.themingParticipants.push(e),this.onThemingParticipantAddedEmitter.fire(e),ei(()=>{const t=this.themingParticipants.indexOf(e);this.themingParticipants.splice(t,1)})}getThemingParticipants(){return this.themingParticipants}}const jSe=new O7e;fo.add(OSe.ThemingContribution,jSe);function eu(s){return jSe.onColorThemeChange(s)}class j7e extends be{constructor(e){super(),this.themeService=e,this.theme=e.getColorTheme(),this._register(this.themeService.onDidColorThemeChange(t=>this.onThemeChange(t)))}onThemeChange(e){this.theme=e,this.updateStyles()}updateStyles(){}}var P7e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},H7e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let k8=class extends be{constructor(e){super(),this._themeService=e,this._onWillCreateCodeEditor=this._register(new fe),this._onCodeEditorAdd=this._register(new fe),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new fe),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onWillCreateDiffEditor=this._register(new fe),this._onDiffEditorAdd=this._register(new fe),this.onDiffEditorAdd=this._onDiffEditorAdd.event,this._onDiffEditorRemove=this._register(new fe),this.onDiffEditorRemove=this._onDiffEditorRemove.event,this._decorationOptionProviders=new Map,this._codeEditorOpenHandlers=new Ia,this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null),this._globalStyleSheet=null}willCreateCodeEditor(){this._onWillCreateCodeEditor.fire()}addCodeEditor(e){this._codeEditors[e.getId()]=e,this._onCodeEditorAdd.fire(e)}removeCodeEditor(e){delete this._codeEditors[e.getId()]&&this._onCodeEditorRemove.fire(e)}listCodeEditors(){return Object.keys(this._codeEditors).map(e=>this._codeEditors[e])}willCreateDiffEditor(){this._onWillCreateDiffEditor.fire()}addDiffEditor(e){this._diffEditors[e.getId()]=e,this._onDiffEditorAdd.fire(e)}listDiffEditors(){return Object.keys(this._diffEditors).map(e=>this._diffEditors[e])}getFocusedCodeEditor(){let e=null;const t=this.listCodeEditors();for(const i of t){if(i.hasTextFocus())return i;i.hasWidgetFocus()&&(e=i)}return e}removeDecorationType(e){const t=this._decorationOptionProviders.get(e);t&&(t.refCount--,t.refCount<=0&&(this._decorationOptionProviders.delete(e),t.dispose(),this.listCodeEditors().forEach(i=>i.removeDecorationsByType(e))))}setModelProperty(e,t,i){const n=e.toString();let o;this._modelProperties.has(n)?o=this._modelProperties.get(n):(o=new Map,this._modelProperties.set(n,o)),o.set(t,i)}getModelProperty(e,t){const i=e.toString();if(this._modelProperties.has(i))return this._modelProperties.get(i).get(t)}async openCodeEditor(e,t,i){for(const n of this._codeEditorOpenHandlers){const o=await n(e,t,i);if(o!==null)return o}return null}registerCodeEditorOpenHandler(e){const t=this._codeEditorOpenHandlers.unshift(e);return ei(t)}};k8=P7e([H7e(0,Rr)],k8);var K7e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},rue=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let SX=class extends k8{constructor(e,t){super(t),this._register(this.onCodeEditorAdd(()=>this._checkContextKey())),this._register(this.onCodeEditorRemove(()=>this._checkContextKey())),this._editorIsOpen=e.createKey("editorIsOpen",!1),this._activeCodeEditor=null,this._register(this.registerCodeEditorOpenHandler(async(i,n,o)=>n?this.doOpenEditor(n,i):null))}_checkContextKey(){let e=!1;for(const t of this.listCodeEditors())if(!t.isSimpleWidget){e=!0;break}this._editorIsOpen.set(e)}setActiveCodeEditor(e){this._activeCodeEditor=e}getActiveCodeEditor(){return this._activeCodeEditor}doOpenEditor(e,t){if(!this.findModel(e,t.resource)){if(t.resource){const o=t.resource.scheme;if(o===Ti.http||o===Ti.https)return uSe(t.resource.toString()),e}return null}const n=t.options?t.options.selection:null;if(n)if(typeof n.endLineNumber=="number"&&typeof n.endColumn=="number")e.setSelection(n),e.revealRangeInCenter(n,1);else{const o={lineNumber:n.startLineNumber,column:n.startColumn};e.setPosition(o),e.revealPositionInCenter(o,1)}return e}findModel(e,t){const i=e.getModel();return i&&i.uri.toString()!==t.toString()?null:i}};SX=K7e([rue(0,fi),rue(1,Rr)],SX);Fn(kn,SX,0);const eA=un("layoutService");var PSe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},HSe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let NX=class{get mainContainer(){var e;return((e=mse(this._codeEditorService.listCodeEditors()))==null?void 0:e.getContainerDomNode())??Us.document.body}get activeContainer(){const e=this._codeEditorService.getFocusedCodeEditor()??this._codeEditorService.getActiveCodeEditor();return(e==null?void 0:e.getContainerDomNode())??this.mainContainer}get mainContainerDimension(){return Hf(this.mainContainer)}get activeContainerDimension(){return Hf(this.activeContainer)}get containers(){return Hu(this._codeEditorService.listCodeEditors().map(e=>e.getContainerDomNode()))}getContainer(){return this.activeContainer}whenContainerStylesLoaded(){}focus(){var e;(e=this._codeEditorService.getFocusedCodeEditor())==null||e.focus()}constructor(e){this._codeEditorService=e,this.onDidLayoutMainContainer=Ut.None,this.onDidLayoutActiveContainer=Ut.None,this.onDidLayoutContainer=Ut.None,this.onDidChangeActiveContainer=Ut.None,this.onDidAddContainer=Ut.None,this.mainContainerOffset={top:0,quickPickTop:0},this.activeContainerOffset={top:0,quickPickTop:0}}};NX=PSe([HSe(0,kn)],NX);let x8=class extends NX{get mainContainer(){return this._container}constructor(e,t){super(t),this._container=e}};x8=PSe([HSe(1,kn)],x8);Fn(eA,NX,1);var iL;(function(s){s[s.Ignore=0]="Ignore",s[s.Info=1]="Info",s[s.Warning=2]="Warning",s[s.Error=3]="Error"})(iL||(iL={}));(function(s){const e="error",t="warning",i="warn",n="info",o="ignore";function r(a){return a?UW(e,a)?s.Error:UW(t,a)||UW(i,a)?s.Warning:UW(n,a)?s.Info:s.Ignore:s.Ignore}s.fromValue=r;function l(a){switch(a){case s.Error:return e;case s.Warning:return t;case s.Info:return n;default:return o}}s.toString=l})(iL||(iL={}));const zo=iL,qv=un("dialogService");var O3=zo;const jo=un("notificationService");class q7e{}const eoe=un("undoRedoService");class KSe{constructor(e,t){this.resource=e,this.elements=t}}const h1=class h1{constructor(){this.id=h1._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}};h1._ID=0,h1.None=new h1;let I8=h1;const u1=class u1{constructor(){this.id=u1._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}};u1._ID=0,u1.None=new u1;let jZ=u1;var $7e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},lue=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function Px(s){return s.scheme===Ti.file?s.fsPath:s.path}let qSe=0;class Hx{constructor(e,t,i,n,o,r,l){this.id=++qSe,this.type=0,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabel=t,this.strResource=i,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=n,this.groupOrder=o,this.sourceId=r,this.sourceOrder=l,this.isValid=!0}setValid(e){this.isValid=e}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.isValid?" VALID":"INVALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class aue{constructor(e,t){this.resourceLabel=e,this.reason=t}}class due{constructor(){this.elements=new Map}createMessage(){const e=[],t=[];for(const[,n]of this.elements)(n.reason===0?e:t).push(n.resourceLabel);const i=[];return e.length>0&&i.push(F({key:"externalRemoval",comment:["{0} is a list of filenames"]},"The following files have been closed and modified on disk: {0}.",e.join(", "))),t.length>0&&i.push(F({key:"noParallelUniverses",comment:["{0} is a list of filenames"]},"The following files have been modified in an incompatible way: {0}.",t.join(", "))),i.join(`
- `)}get size(){return this.elements.size}has(e){return this.elements.has(e)}set(e,t){this.elements.set(e,t)}delete(e){return this.elements.delete(e)}}class e8e{constructor(e,t,i,n,o,r,l){this.id=++qSe,this.type=1,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabels=t,this.strResources=i,this.groupId=n,this.groupOrder=o,this.sourceId=r,this.sourceOrder=l,this.removedResources=null,this.invalidatedResources=null}canSplit(){return typeof this.actual.split=="function"}removeResource(e,t,i){this.removedResources||(this.removedResources=new due),this.removedResources.has(t)||this.removedResources.set(t,new aue(e,i))}setValid(e,t,i){i?this.invalidatedResources&&(this.invalidatedResources.delete(t),this.invalidatedResources.size===0&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new due),this.invalidatedResources.has(t)||this.invalidatedResources.set(t,new aue(e,0)))}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources?"INVALID":" VALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class $Se{constructor(e,t){this.resourceLabel=e,this.strResource=t,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const e of this._past)e.type===1&&e.removeResource(this.resourceLabel,this.strResource,0);for(const e of this._future)e.type===1&&e.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){const e=[];e.push(`* ${this.strResource}:`);for(let t=0;t<this._past.length;t++)e.push(` * [UNDO] ${this._past[t]}`);for(let t=this._future.length-1;t>=0;t--)e.push(` * [REDO] ${this._future[t]}`);return e.join(`
- `)}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(e,t){e.type===1?e.setValid(this.resourceLabel,this.strResource,t):e.setValid(t)}setElementsValidFlag(e,t){for(const i of this._past)t(i.actual)&&this._setElementValidFlag(i,e);for(const i of this._future)t(i.actual)&&this._setElementValidFlag(i,e)}pushElement(e){for(const t of this._future)t.type===1&&t.removeResource(this.resourceLabel,this.strResource,1);this._future=[],this._past.push(e),this.versionId++}createSnapshot(e){const t=[];for(let i=0,n=this._past.length;i<n;i++)t.push(this._past[i].id);for(let i=this._future.length-1;i>=0;i--)t.push(this._future[i].id);return new KSe(e,t)}restoreSnapshot(e){const t=e.elements.length;let i=!0,n=0,o=-1;for(let l=0,a=this._past.length;l<a;l++,n++){const d=this._past[l];i&&(n>=t||d.id!==e.elements[n])&&(i=!1,o=0),!i&&d.type===1&&d.removeResource(this.resourceLabel,this.strResource,0)}let r=-1;for(let l=this._future.length-1;l>=0;l--,n++){const a=this._future[l];i&&(n>=t||a.id!==e.elements[n])&&(i=!1,r=l),!i&&a.type===1&&a.removeResource(this.resourceLabel,this.strResource,0)}o!==-1&&(this._past=this._past.slice(0,o)),r!==-1&&(this._future=this._future.slice(r+1)),this.versionId++}getElements(){const e=[],t=[];for(const i of this._past)e.push(i.actual);for(const i of this._future)t.push(i.actual);return{past:e,future:t}}getClosestPastElement(){return this._past.length===0?null:this._past[this._past.length-1]}getSecondClosestPastElement(){return this._past.length<2?null:this._past[this._past.length-2]}getClosestFutureElement(){return this._future.length===0?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(e,t){for(let i=this._past.length-1;i>=0;i--)if(this._past[i]===e){t.has(this.strResource)?this._past[i]=t.get(this.strResource):this._past.splice(i,1);break}this.versionId++}splitFutureWorkspaceElement(e,t){for(let i=this._future.length-1;i>=0;i--)if(this._future[i]===e){t.has(this.strResource)?this._future[i]=t.get(this.strResource):this._future.splice(i,1);break}this.versionId++}moveBackward(e){this._past.pop(),this._future.push(e),this.versionId++}moveForward(e){this._future.pop(),this._past.push(e),this.versionId++}}class rP{constructor(e){this.editStacks=e,this._versionIds=[];for(let t=0,i=this.editStacks.length;t<i;t++)this._versionIds[t]=this.editStacks[t].versionId}isValid(){for(let e=0,t=this.editStacks.length;e<t;e++)if(this._versionIds[e]!==this.editStacks[e].versionId)return!1;return!0}}const eNe=new $Se("","");eNe.locked=!0;let E8=class{constructor(e,t){this._dialogService=e,this._notificationService=t,this._editStacks=new Map,this._uriComparisonKeyComputers=[]}getUriComparisonKey(e){for(const t of this._uriComparisonKeyComputers)if(t[0]===e.scheme)return t[1].getComparisonKey(e);return e.toString()}_print(e){console.log("------------------------------------"),console.log(`AFTER ${e}: `);const t=[];for(const i of this._editStacks)t.push(i[1].toString());console.log(t.join(`
- `))}pushElement(e,t=I8.None,i=jZ.None){if(e.type===0){const n=Px(e.resource),o=this.getUriComparisonKey(e.resource);this._pushElement(new Hx(e,n,o,t.id,t.nextOrder(),i.id,i.nextOrder()))}else{const n=new Set,o=[],r=[];for(const l of e.resources){const a=Px(l),d=this.getUriComparisonKey(l);n.has(d)||(n.add(d),o.push(a),r.push(d))}o.length===1?this._pushElement(new Hx(e,o[0],r[0],t.id,t.nextOrder(),i.id,i.nextOrder())):this._pushElement(new e8e(e,o,r,t.id,t.nextOrder(),i.id,i.nextOrder()))}}_pushElement(e){for(let t=0,i=e.strResources.length;t<i;t++){const n=e.resourceLabels[t],o=e.strResources[t];let r;this._editStacks.has(o)?r=this._editStacks.get(o):(r=new $Se(n,o),this._editStacks.set(o,r)),r.pushElement(e)}}getLastElement(e){const t=this.getUriComparisonKey(e);if(this._editStacks.has(t)){const i=this._editStacks.get(t);if(i.hasFutureElements())return null;const n=i.getClosestPastElement();return n?n.actual:null}return null}_splitPastWorkspaceElement(e,t){const i=e.actual.split(),n=new Map;for(const o of i){const r=Px(o.resource),l=this.getUriComparisonKey(o.resource),a=new Hx(o,r,l,0,0,0,0);n.set(a.strResource,a)}for(const o of e.strResources){if(t&&t.has(o))continue;this._editStacks.get(o).splitPastWorkspaceElement(e,n)}}_splitFutureWorkspaceElement(e,t){const i=e.actual.split(),n=new Map;for(const o of i){const r=Px(o.resource),l=this.getUriComparisonKey(o.resource),a=new Hx(o,r,l,0,0,0,0);n.set(a.strResource,a)}for(const o of e.strResources){if(t&&t.has(o))continue;this._editStacks.get(o).splitFutureWorkspaceElement(e,n)}}removeElements(e){const t=typeof e=="string"?e:this.getUriComparisonKey(e);this._editStacks.has(t)&&(this._editStacks.get(t).dispose(),this._editStacks.delete(t))}setElementsValidFlag(e,t,i){const n=this.getUriComparisonKey(e);this._editStacks.has(n)&&this._editStacks.get(n).setElementsValidFlag(t,i)}createSnapshot(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).createSnapshot(e):new KSe(e,[])}restoreSnapshot(e){const t=this.getUriComparisonKey(e.resource);if(this._editStacks.has(t)){const i=this._editStacks.get(t);i.restoreSnapshot(e),!i.hasPastElements()&&!i.hasFutureElements()&&(i.dispose(),this._editStacks.delete(t))}}getElements(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).getElements():{past:[],future:[]}}_findClosestUndoElementWithSource(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const r=o.getClosestPastElement();r&&r.sourceId===e&&(!t||r.sourceOrder>t.sourceOrder)&&(t=r,i=n)}return[t,i]}canUndo(e){if(e instanceof jZ){const[,i]=this._findClosestUndoElementWithSource(e.id);return!!i}const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).hasPastElements():!1}_onError(e,t){wi(e);for(const i of t.strResources)this.removeElements(i);this._notificationService.error(e)}_acquireLocks(e){for(const t of e.editStacks)if(t.locked)throw new Error("Cannot acquire edit stack lock");for(const t of e.editStacks)t.locked=!0;return()=>{for(const t of e.editStacks)t.locked=!1}}_safeInvokeWithLocks(e,t,i,n,o){const r=this._acquireLocks(i);let l;try{l=t()}catch(a){return r(),n.dispose(),this._onError(a,e)}return l?l.then(()=>(r(),n.dispose(),o()),a=>(r(),n.dispose(),this._onError(a,e))):(r(),n.dispose(),o())}async _invokeWorkspacePrepare(e){if(typeof e.actual.prepareUndoRedo>"u")return be.None;const t=e.actual.prepareUndoRedo();return typeof t>"u"?be.None:t}_invokeResourcePrepare(e,t){if(e.actual.type!==1||typeof e.actual.prepareUndoRedo>"u")return t(be.None);const i=e.actual.prepareUndoRedo();return i?R3(i)?t(i):i.then(n=>t(n)):t(be.None)}_getAffectedEditStacks(e){const t=[];for(const i of e.strResources)t.push(this._editStacks.get(i)||eNe);return new rP(t)}_tryToSplitAndUndo(e,t,i,n){if(t.canSplit())return this._splitPastWorkspaceElement(t,i),this._notificationService.warn(n),new Kx(this._undo(e,0,!0));for(const o of t.strResources)this.removeElements(o);return this._notificationService.warn(n),new Kx}_checkWorkspaceUndo(e,t,i,n){if(t.removedResources)return this._tryToSplitAndUndo(e,t,t.removedResources,F({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(n&&t.invalidatedResources)return this._tryToSplitAndUndo(e,t,t.invalidatedResources,F({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const o=[];for(const l of i.editStacks)l.getClosestPastElement()!==t&&o.push(l.resourceLabel);if(o.length>0)return this._tryToSplitAndUndo(e,t,null,F({key:"cannotWorkspaceUndoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));const r=[];for(const l of i.editStacks)l.locked&&r.push(l.resourceLabel);return r.length>0?this._tryToSplitAndUndo(e,t,null,F({key:"cannotWorkspaceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,r.join(", "))):i.isValid()?null:this._tryToSplitAndUndo(e,t,null,F({key:"cannotWorkspaceUndoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceUndo(e,t,i){const n=this._getAffectedEditStacks(t),o=this._checkWorkspaceUndo(e,t,n,!1);return o?o.returnValue:this._confirmAndExecuteWorkspaceUndo(e,t,n,i)}_isPartOfUndoGroup(e){if(!e.groupId)return!1;for(const[,t]of this._editStacks){const i=t.getClosestPastElement();if(i){if(i===e){const n=t.getSecondClosestPastElement();if(n&&n.groupId===e.groupId)return!0}if(i.groupId===e.groupId)return!0}}return!1}async _confirmAndExecuteWorkspaceUndo(e,t,i,n){if(t.canSplit()&&!this._isPartOfUndoGroup(t)){let l;(function(c){c[c.All=0]="All",c[c.This=1]="This",c[c.Cancel=2]="Cancel"})(l||(l={}));const{result:a}=await this._dialogService.prompt({type:zo.Info,message:F("confirmWorkspace","Would you like to undo '{0}' across all files?",t.label),buttons:[{label:F({key:"ok",comment:["{0} denotes a number that is > 1, && denotes a mnemonic"]},"&&Undo in {0} Files",i.editStacks.length),run:()=>l.All},{label:F({key:"nok",comment:["&& denotes a mnemonic"]},"Undo this &&File"),run:()=>l.This}],cancelButton:{run:()=>l.Cancel}});if(a===l.Cancel)return;if(a===l.This)return this._splitPastWorkspaceElement(t,null),this._undo(e,0,!0);const d=this._checkWorkspaceUndo(e,t,i,!1);if(d)return d.returnValue;n=!0}let o;try{o=await this._invokeWorkspacePrepare(t)}catch(l){return this._onError(l,t)}const r=this._checkWorkspaceUndo(e,t,i,!0);if(r)return o.dispose(),r.returnValue;for(const l of i.editStacks)l.moveBackward(t);return this._safeInvokeWithLocks(t,()=>t.actual.undo(),i,o,()=>this._continueUndoInGroup(t.groupId,n))}_resourceUndo(e,t,i){if(!t.isValid){e.flushAllElements();return}if(e.locked){const n=F({key:"cannotResourceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not undo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(n);return}return this._invokeResourcePrepare(t,n=>(e.moveBackward(t),this._safeInvokeWithLocks(t,()=>t.actual.undo(),new rP([e]),n,()=>this._continueUndoInGroup(t.groupId,i))))}_findClosestUndoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const r=o.getClosestPastElement();r&&r.groupId===e&&(!t||r.groupOrder>t.groupOrder)&&(t=r,i=n)}return[t,i]}_continueUndoInGroup(e,t){if(!e)return;const[,i]=this._findClosestUndoElementInGroup(e);if(i)return this._undo(i,0,t)}undo(e){if(e instanceof jZ){const[,t]=this._findClosestUndoElementWithSource(e.id);return t?this._undo(t,e.id,!1):void 0}return typeof e=="string"?this._undo(e,0,!1):this._undo(this.getUriComparisonKey(e),0,!1)}_undo(e,t=0,i){if(!this._editStacks.has(e))return;const n=this._editStacks.get(e),o=n.getClosestPastElement();if(!o)return;if(o.groupId){const[l,a]=this._findClosestUndoElementInGroup(o.groupId);if(o!==l&&a)return this._undo(a,t,i)}if((o.sourceId!==t||o.confirmBeforeUndo)&&!i)return this._confirmAndContinueUndo(e,t,o);try{return o.type===1?this._workspaceUndo(e,o,i):this._resourceUndo(n,o,i)}finally{}}async _confirmAndContinueUndo(e,t,i){if((await this._dialogService.confirm({message:F("confirmDifferentSource","Would you like to undo '{0}'?",i.label),primaryButton:F({key:"confirmDifferentSource.yes",comment:["&& denotes a mnemonic"]},"&&Yes"),cancelButton:F("confirmDifferentSource.no","No")})).confirmed)return this._undo(e,t,!0)}_findClosestRedoElementWithSource(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const r=o.getClosestFutureElement();r&&r.sourceId===e&&(!t||r.sourceOrder<t.sourceOrder)&&(t=r,i=n)}return[t,i]}canRedo(e){if(e instanceof jZ){const[,i]=this._findClosestRedoElementWithSource(e.id);return!!i}const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).hasFutureElements():!1}_tryToSplitAndRedo(e,t,i,n){if(t.canSplit())return this._splitFutureWorkspaceElement(t,i),this._notificationService.warn(n),new Kx(this._redo(e));for(const o of t.strResources)this.removeElements(o);return this._notificationService.warn(n),new Kx}_checkWorkspaceRedo(e,t,i,n){if(t.removedResources)return this._tryToSplitAndRedo(e,t,t.removedResources,F({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(n&&t.invalidatedResources)return this._tryToSplitAndRedo(e,t,t.invalidatedResources,F({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const o=[];for(const l of i.editStacks)l.getClosestFutureElement()!==t&&o.push(l.resourceLabel);if(o.length>0)return this._tryToSplitAndRedo(e,t,null,F({key:"cannotWorkspaceRedoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));const r=[];for(const l of i.editStacks)l.locked&&r.push(l.resourceLabel);return r.length>0?this._tryToSplitAndRedo(e,t,null,F({key:"cannotWorkspaceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,r.join(", "))):i.isValid()?null:this._tryToSplitAndRedo(e,t,null,F({key:"cannotWorkspaceRedoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceRedo(e,t){const i=this._getAffectedEditStacks(t),n=this._checkWorkspaceRedo(e,t,i,!1);return n?n.returnValue:this._executeWorkspaceRedo(e,t,i)}async _executeWorkspaceRedo(e,t,i){let n;try{n=await this._invokeWorkspacePrepare(t)}catch(r){return this._onError(r,t)}const o=this._checkWorkspaceRedo(e,t,i,!0);if(o)return n.dispose(),o.returnValue;for(const r of i.editStacks)r.moveForward(t);return this._safeInvokeWithLocks(t,()=>t.actual.redo(),i,n,()=>this._continueRedoInGroup(t.groupId))}_resourceRedo(e,t){if(!t.isValid){e.flushAllElements();return}if(e.locked){const i=F({key:"cannotResourceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not redo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(i);return}return this._invokeResourcePrepare(t,i=>(e.moveForward(t),this._safeInvokeWithLocks(t,()=>t.actual.redo(),new rP([e]),i,()=>this._continueRedoInGroup(t.groupId))))}_findClosestRedoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const r=o.getClosestFutureElement();r&&r.groupId===e&&(!t||r.groupOrder<t.groupOrder)&&(t=r,i=n)}return[t,i]}_continueRedoInGroup(e){if(!e)return;const[,t]=this._findClosestRedoElementInGroup(e);if(t)return this._redo(t)}redo(e){if(e instanceof jZ){const[,t]=this._findClosestRedoElementWithSource(e.id);return t?this._redo(t):void 0}return typeof e=="string"?this._redo(e):this._redo(this.getUriComparisonKey(e))}_redo(e){if(!this._editStacks.has(e))return;const t=this._editStacks.get(e),i=t.getClosestFutureElement();if(i){if(i.groupId){const[n,o]=this._findClosestRedoElementInGroup(i.groupId);if(i!==n&&o)return this._redo(o)}try{return i.type===1?this._workspaceRedo(e,i):this._resourceRedo(t,i)}finally{}}}};E8=$7e([lue(0,qv),lue(1,jo)],E8);class Kx{constructor(e){this.returnValue=e}}Fn(eoe,E8,1);function Ba(s,e,t){return Math.min(Math.max(s,e),t)}class tNe{constructor(){this._n=1,this._val=0}update(e){return this._val=this._val+(e-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}class t8e{constructor(e){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(e),this._values.fill(0,0,e)}update(e){const t=this._values[this._index];return this._values[this._index]=e,this._index=(this._index+1)%this._values.length,this._sum-=t,this._sum+=e,this._n<this._values.length&&(this._n+=1),this._val=this._sum/this._n,this._val}get value(){return this._val}}const toe=un("environmentService");var i8e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},cue=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const dh=un("ILanguageFeatureDebounceService");var RX;(function(s){const e=new WeakMap;let t=0;function i(n){let o=e.get(n);return o===void 0&&(o=++t,e.set(n,o)),o}s.of=i})(RX||(RX={}));class n8e{constructor(e){this._default=e}get(e){return this._default}update(e,t){return this._default}default(){return this._default}}class s8e{constructor(e,t,i,n,o,r){this._logService=e,this._name=t,this._registry=i,this._default=n,this._min=o,this._max=r,this._cache=new $g(50,.7)}_key(e){return e.id+this._registry.all(e).reduce((t,i)=>M3(RX.of(i),t),0)}get(e){const t=this._key(e),i=this._cache.get(t);return i?Ba(i.value,this._min,this._max):this.default()}update(e,t){const i=this._key(e);let n=this._cache.get(i);n||(n=new t8e(6),this._cache.set(i,n));const o=Ba(n.update(t),this._min,this._max);return W3(e.uri,"output")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${e.uri.toString()} is ${o}ms`),o}_overall(){const e=new tNe;for(const[,t]of this._cache)e.update(t.value);return e.value}default(){const e=this._overall()|0||this._default;return Ba(e,this._min,this._max)}}let D8=class{constructor(e,t){this._logService=e,this._data=new Map,this._isDev=t.isExtensionDevelopment||!t.isBuilt}for(e,t,i){const n=(i==null?void 0:i.min)??50,o=(i==null?void 0:i.max)??n**2,r=(i==null?void 0:i.key)??void 0,l=`${RX.of(e)},${n}${r?","+r:""}`;let a=this._data.get(l);return a||(this._isDev?(this._logService.debug(`[DEBOUNCE: ${t}] is disabled in developed mode`),a=new n8e(n*1.5)):a=new s8e(this._logService,t,e,this._overallAverage()|0||n*1.5,n,o),this._data.set(l,a)),a}_overallAverage(){const e=new tNe;for(const t of this._data.values())e.update(t.default());return e.value}};D8=i8e([cue(0,Cl),cue(1,toe)],D8);Fn(dh,D8,1);class Fd{static getLanguageId(e){return(e&255)>>>0}static getTokenType(e){return(e&768)>>>8}static containsBalancedBrackets(e){return(e&1024)!==0}static getFontStyle(e){return(e&30720)>>>11}static getForeground(e){return(e&16744448)>>>15}static getBackground(e){return(e&4278190080)>>>24}static getClassNameFromMetadata(e){let i="mtk"+this.getForeground(e);const n=this.getFontStyle(e);return n&1&&(i+=" mtki"),n&2&&(i+=" mtkb"),n&4&&(i+=" mtku"),n&8&&(i+=" mtks"),i}static getInlineStyleFromMetadata(e,t){const i=this.getForeground(e),n=this.getFontStyle(e);let o=`color: ${t[i]};`;n&1&&(o+="font-style: italic;"),n&2&&(o+="font-weight: bold;");let r="";return n&4&&(r+=" underline"),n&8&&(r+=" line-through"),r&&(o+=`text-decoration:${r};`),o}static getPresentationFromMetadata(e){const t=this.getForeground(e),i=this.getFontStyle(e);return{foreground:t,italic:!!(i&1),bold:!!(i&2),underline:!!(i&4),strikethrough:!!(i&8)}}}function IF(s){let e=0,t=0,i=0,n=0;for(let o=0,r=s.length;o<r;o++){const l=s.charCodeAt(o);l===13?(e===0&&(t=o),e++,o+1<r&&s.charCodeAt(o+1)===10?(n|=2,o++):n|=3,i=o+1):l===10&&(n|=1,e===0&&(t=o),e++,i=o+1)}return e===0&&(t=s.length),[e,t,s.length-i,n]}class KC{static create(e,t){return new KC(e,new VX(t))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(e,t){this._startLineNumber=e,this._tokens=t,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(e){return this._startLineNumber<=e&&e<=this._endLineNumber?this._tokens.getLineTokens(e-this._startLineNumber):null}getRange(){const e=this._tokens.getRange();return e&&new z(this._startLineNumber+e.startLineNumber,e.startColumn,this._startLineNumber+e.endLineNumber,e.endColumn)}removeTokens(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(t,e.startColumn-1,i,e.endColumn-1),this._updateEndLineNumber()}split(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber,[n,o,r]=this._tokens.split(t,e.startColumn-1,i,e.endColumn-1);return[new KC(this._startLineNumber,n),new KC(this._startLineNumber+r,o)]}applyEdit(e,t){const[i,n,o]=IF(t);this.acceptEdit(e,i,n,o,t.length>0?t.charCodeAt(0):0)}acceptEdit(e,t,i,n,o){this._acceptDeleteRange(e),this._acceptInsertText(new ge(e.startLineNumber,e.startColumn),t,i,n,o),this._updateEndLineNumber()}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return;const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;if(i<0){const o=i-t;this._startLineNumber-=o;return}const n=this._tokens.getMaxDeltaLine();if(!(t>=n+1)){if(t<0&&i>=n+1){this._startLineNumber=0,this._tokens.clear();return}if(t<0){const o=-t;this._startLineNumber-=o,this._tokens.acceptDeleteRange(e.startColumn-1,0,0,i,e.endColumn-1)}else this._tokens.acceptDeleteRange(0,t,e.startColumn-1,i,e.endColumn-1)}}_acceptInsertText(e,t,i,n,o){if(t===0&&i===0)return;const r=e.lineNumber-this._startLineNumber;if(r<0){this._startLineNumber+=t;return}const l=this._tokens.getMaxDeltaLine();r>=l+1||this._tokens.acceptInsertText(r,e.column-1,t,i,n,o)}}class VX{constructor(e){this._tokens=e,this._tokenCount=e.length/4}toString(e){const t=[];for(let i=0;i<this._tokenCount;i++)t.push(`(${this._getDeltaLine(i)+e},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);return`[${t.join(",")}]`}getMaxDeltaLine(){const e=this._getTokenCount();return e===0?-1:this._getDeltaLine(e-1)}getRange(){const e=this._getTokenCount();if(e===0)return null;const t=this._getStartCharacter(0),i=this._getDeltaLine(e-1),n=this._getEndCharacter(e-1);return new z(0,t+1,i,n+1)}_getTokenCount(){return this._tokenCount}_getDeltaLine(e){return this._tokens[4*e]}_getStartCharacter(e){return this._tokens[4*e+1]}_getEndCharacter(e){return this._tokens[4*e+2]}isEmpty(){return this._getTokenCount()===0}getLineTokens(e){let t=0,i=this._getTokenCount()-1;for(;t<i;){const n=t+Math.floor((i-t)/2),o=this._getDeltaLine(n);if(o<e)t=n+1;else if(o>e)i=n-1;else{let r=n;for(;r>t&&this._getDeltaLine(r-1)===e;)r--;let l=n;for(;l<i&&this._getDeltaLine(l+1)===e;)l++;return new hue(this._tokens.subarray(4*r,4*l+4))}}return this._getDeltaLine(t)===e?new hue(this._tokens.subarray(4*t,4*t+4)):null}clear(){this._tokenCount=0}removeTokens(e,t,i,n){const o=this._tokens,r=this._tokenCount;let l=0,a=!1,d=0;for(let c=0;c<r;c++){const h=4*c,u=o[h],m=o[h+1],p=o[h+2],g=o[h+3];if((u>e||u===e&&p>=t)&&(u<i||u===i&&m<=n))a=!0;else{if(l===0&&(d=u),a){const f=4*l;o[f]=u-d,o[f+1]=m,o[f+2]=p,o[f+3]=g}l++}}return this._tokenCount=l,d}split(e,t,i,n){const o=this._tokens,r=this._tokenCount,l=[],a=[];let d=l,c=0,h=0;for(let u=0;u<r;u++){const m=4*u,p=o[m],g=o[m+1],f=o[m+2],b=o[m+3];if(p>e||p===e&&f>=t){if(p<i||p===i&&g<=n)continue;d!==a&&(d=a,c=0,h=p)}d[c++]=p-h,d[c++]=g,d[c++]=f,d[c++]=b}return[new VX(new Uint32Array(l)),new VX(new Uint32Array(a)),h]}acceptDeleteRange(e,t,i,n,o){const r=this._tokens,l=this._tokenCount,a=n-t;let d=0,c=!1;for(let h=0;h<l;h++){const u=4*h;let m=r[u],p=r[u+1],g=r[u+2];const f=r[u+3];if(m<t||m===t&&g<=i){d++;continue}else if(m===t&&p<i)m===n&&g>o?g-=o-i:g=i;else if(m===t&&p===i)if(m===n&&g>o)g-=o-i;else{c=!0;continue}else if(m<n||m===n&&p<o)if(m===n&&g>o)m=t,p=i,g=p+(g-o);else{c=!0;continue}else if(m>n){if(a===0&&!c){d=l;break}m-=a}else if(m===n&&p>=o)e&&m===0&&(p+=e,g+=e),m-=a,p-=o-i,g-=o-i;else throw new Error("Not possible!");const b=4*d;r[b]=m,r[b+1]=p,r[b+2]=g,r[b+3]=f,d++}this._tokenCount=d}acceptInsertText(e,t,i,n,o,r){const l=i===0&&n===1&&(r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122),a=this._tokens,d=this._tokenCount;for(let c=0;c<d;c++){const h=4*c;let u=a[h],m=a[h+1],p=a[h+2];if(!(u<e||u===e&&p<t)){if(u===e&&p===t)if(l)p+=1;else continue;else if(u===e&&m<t&&t<p)i===0?p+=n:p=t;else{if(u===e&&m===t&&l)continue;if(u===e)if(u+=i,i===0)m+=n,p+=n;else{const g=p-m;m=o+(m-t),p=m+g}else u+=i}a[h]=u,a[h+1]=m,a[h+2]=p}}}}class hue{constructor(e){this._tokens=e}getCount(){return this._tokens.length/4}getStartCharacter(e){return this._tokens[4*e+1]}getEndCharacter(e){return this._tokens[4*e+2]}getMetadata(e){return this._tokens[4*e+3]}}var o8e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},lP=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let G8=class{constructor(e,t,i,n){this._legend=e,this._themeService=t,this._languageService=i,this._logService=n,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new J8}getMetadata(e,t,i){const n=this._languageService.languageIdCodec.encodeLanguageId(i),o=this._hashTable.get(e,t,n);let r;if(o)r=o.metadata;else{let l=this._legend.tokenTypes[e];const a=[];if(l){let d=t;for(let h=0;d>0&&h<this._legend.tokenModifiers.length;h++)d&1&&a.push(this._legend.tokenModifiers[h]),d=d>>1;const c=this._themeService.getColorTheme().getTokenStyleMetadata(l,a,i);if(typeof c>"u")r=2147483647;else{if(r=0,typeof c.italic<"u"){const h=(c.italic?1:0)<<11;r|=h|1}if(typeof c.bold<"u"){const h=(c.bold?2:0)<<11;r|=h|2}if(typeof c.underline<"u"){const h=(c.underline?4:0)<<11;r|=h|4}if(typeof c.strikethrough<"u"){const h=(c.strikethrough?8:0)<<11;r|=h|8}if(c.foreground){const h=c.foreground<<15;r|=h|16}r===0&&(r=2147483647)}}else r=2147483647,l="not-in-legend";this._hashTable.add(e,t,n,r)}return r}warnOverlappingSemanticTokens(e,t){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,this._logService.warn(`Overlapping semantic tokens detected at lineNumber ${e}, column ${t}`))}warnInvalidLengthSemanticTokens(e,t){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,this._logService.warn(`Semantic token with invalid length detected at lineNumber ${e}, column ${t}`))}warnInvalidEditStart(e,t,i,n,o){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,this._logService.warn(`Invalid semantic tokens edit detected (previousResultId: ${e}, resultId: ${t}) at edit #${i}: The provided start offset ${n} is outside the previous data (length ${o}).`))}};G8=o8e([lP(1,Rr),lP(2,ao),lP(3,Cl)],G8);function iNe(s,e,t){const i=s.data,n=s.data.length/5|0,o=Math.max(Math.ceil(n/1024),400),r=[];let l=0,a=1,d=0;for(;l<n;){const c=l;let h=Math.min(c+o,n);if(h<n){let U=h;for(;U-1>c&&i[5*U]===0;)U--;if(U-1===c){let S=h;for(;S+1<n&&i[5*S]===0;)S++;h=S}else h=U}let u=new Uint32Array((h-c)*4),m=0,p=0,g=0,f=0;for(;l<h;){const U=5*l,S=i[U],Z=i[U+1],R=a+S|0,y=S===0?d+Z|0:Z,N=i[U+2],w=y+N|0,Q=i[U+3],C=i[U+4];if(w<=y)e.warnInvalidLengthSemanticTokens(R,y+1);else if(g===R&&f>y)e.warnOverlappingSemanticTokens(R,y+1);else{const v=e.getMetadata(Q,C,t);v!==2147483647&&(p===0&&(p=R),u[m]=R-p,u[m+1]=y,u[m+2]=w,u[m+3]=v,m+=4,g=R,f=w)}a=R,d=y,l++}m!==u.length&&(u=u.subarray(0,m));const b=KC.create(p,u);r.push(b)}return r}class r8e{constructor(e,t,i,n){this.tokenTypeIndex=e,this.tokenModifierSet=t,this.languageId=i,this.metadata=n,this.next=null}}const H0=class H0{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=H0._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<H0._SIZES.length?2/3*this._currentLength:0),this._elements=[],H0._nullOutEntries(this._elements,this._currentLength)}static _nullOutEntries(e,t){for(let i=0;i<t;i++)e[i]=null}_hash2(e,t){return(e<<5)-e+t|0}_hashFunc(e,t,i){return this._hash2(this._hash2(e,t),i)%this._currentLength}get(e,t,i){const n=this._hashFunc(e,t,i);let o=this._elements[n];for(;o;){if(o.tokenTypeIndex===e&&o.tokenModifierSet===t&&o.languageId===i)return o;o=o.next}return null}add(e,t,i,n){if(this._elementsCount++,this._growCount!==0&&this._elementsCount>=this._growCount){const o=this._elements;this._currentLengthIndex++,this._currentLength=H0._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<H0._SIZES.length?2/3*this._currentLength:0),this._elements=[],H0._nullOutEntries(this._elements,this._currentLength);for(const r of o){let l=r;for(;l;){const a=l.next;l.next=null,this._add(l),l=a}}}this._add(new r8e(e,t,i,n))}_add(e){const t=this._hashFunc(e.tokenTypeIndex,e.tokenModifierSet,e.languageId);e.next=this._elements[t],this._elements[t]=e}};H0._SIZES=[3,7,13,31,61,127,251,509,1021,2039,4093,8191,16381,32749,65521,131071,262139,524287,1048573,2097143];let J8=H0;const j3=un("semanticTokensStylingService");var l8e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},aP=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let X8=class extends be{constructor(e,t,i){super(),this._themeService=e,this._logService=t,this._languageService=i,this._caches=new WeakMap,this._register(this._themeService.onDidColorThemeChange(()=>{this._caches=new WeakMap}))}getStyling(e){return this._caches.has(e)||this._caches.set(e,new G8(e.getLegend(),this._themeService,this._languageService,this._logService)),this._caches.get(e)}};X8=l8e([aP(0,Rr),aP(1,Cl),aP(2,ao)],X8);Fn(j3,X8,1);function Vb(s){return s===47||s===92}function nNe(s){return s.replace(/[\\/]/g,$o.sep)}function a8e(s){return s.indexOf("/")===-1&&(s=nNe(s)),/^[a-zA-Z]:(\/|$)/.test(s)&&(s="/"+s),s}function uue(s,e=$o.sep){if(!s)return"";const t=s.length,i=s.charCodeAt(0);if(Vb(i)){if(Vb(s.charCodeAt(1))&&!Vb(s.charCodeAt(2))){let o=3;const r=o;for(;o<t&&!Vb(s.charCodeAt(o));o++);if(r!==o&&!Vb(s.charCodeAt(o+1))){for(o+=1;o<t;o++)if(Vb(s.charCodeAt(o)))return s.slice(0,o+1).replace(/[\\/]/g,e)}}return e}else if(sNe(i)&&s.charCodeAt(1)===58)return Vb(s.charCodeAt(2))?s.slice(0,2)+e:s.slice(0,2);let n=s.indexOf("://");if(n!==-1){for(n+=3;n<t;n++)if(Vb(s.charCodeAt(n)))return s.slice(0,n+1)}return""}function Y8(s,e,t,i=ep){if(s===e)return!0;if(!s||!e||e.length>s.length)return!1;if(t){if(!yse(s,e))return!1;if(e.length===s.length)return!0;let o=e.length;return e.charAt(e.length-1)===i&&o--,s.charAt(o)===i}return e.charAt(e.length-1)!==i&&(e+=i),s.indexOf(e)===0}function sNe(s){return s>=65&&s<=90||s>=97&&s<=122}function d8e(s,e=Tl){return e?sNe(s.charCodeAt(0))&&s.charCodeAt(1)===58:!1}const qx="**",mue="/",UD="[/\\\\]",FD="[^/\\\\]",c8e=/\//g;function pue(s,e){switch(s){case 0:return"";case 1:return`${FD}*?`;default:return`(?:${UD}|${FD}+${UD}${e?`|${UD}${FD}+`:""})*?`}}function gue(s,e){if(!s)return[];const t=[];let i=!1,n=!1,o="";for(const r of s){switch(r){case e:if(!i&&!n){t.push(o),o="";continue}break;case"{":i=!0;break;case"}":i=!1;break;case"[":n=!0;break;case"]":n=!1;break}o+=r}return o&&t.push(o),t}function oNe(s){if(!s)return"";let e="";const t=gue(s,mue);if(t.every(i=>i===qx))e=".*";else{let i=!1;t.forEach((n,o)=>{if(n===qx){if(i)return;e+=pue(2,o===t.length-1)}else{let r=!1,l="",a=!1,d="";for(const c of n){if(c!=="}"&&r){l+=c;continue}if(a&&(c!=="]"||!d)){let h;c==="-"?h=c:(c==="^"||c==="!")&&!d?h="^":c===mue?h="":h=nh(c),d+=h;continue}switch(c){case"{":r=!0;continue;case"[":a=!0;continue;case"}":{const u=`(?:${gue(l,",").map(m=>oNe(m)).join("|")})`;e+=u,r=!1,l="";break}case"]":{e+="["+d+"]",a=!1,d="";break}case"?":e+=FD;continue;case"*":e+=pue(1);continue;default:e+=nh(c)}}o<t.length-1&&(t[o+1]!==qx||o+2<t.length)&&(e+=UD)}i=n===qx})}return e}const h8e=/^\*\*\/\*\.[\w\.-]+$/,u8e=/^\*\*\/([\w\.-]+)\/?$/,m8e=/^{\*\*\/\*?[\w\.-]+\/?(,\*\*\/\*?[\w\.-]+\/?)*}$/,p8e=/^{\*\*\/\*?[\w\.-]+(\/(\*\*)?)?(,\*\*\/\*?[\w\.-]+(\/(\*\*)?)?)*}$/,g8e=/^\*\*((\/[\w\.-]+)+)\/?$/,f8e=/^([\w\.-]+(\/[\w\.-]+)*)\/?$/,fue=new $g(1e4),bue=function(){return!1},kg=function(){return null};function ioe(s,e){if(!s)return kg;let t;typeof s!="string"?t=s.pattern:t=s,t=t.trim();const i=`${t}_${!!e.trimForExclusions}`;let n=fue.get(i);if(n)return Uue(n,s);let o;return h8e.test(t)?n=b8e(t.substr(4),t):(o=u8e.exec(dP(t,e)))?n=U8e(o[1],t):(e.trimForExclusions?p8e:m8e).test(t)?n=F8e(t,e):(o=g8e.exec(dP(t,e)))?n=Fue(o[1].substr(1),t,!0):(o=f8e.exec(dP(t,e)))?n=Fue(o[1],t,!1):n=A8e(t),fue.set(i,n),Uue(n,s)}function Uue(s,e){if(typeof e=="string")return s;const t=function(i,n){return Y8(i,e.base,!_a)?s(_v(i.substr(e.base.length),ep),n):null};return t.allBasenames=s.allBasenames,t.allPaths=s.allPaths,t.basenames=s.basenames,t.patterns=s.patterns,t}function dP(s,e){return e.trimForExclusions&&s.endsWith("/**")?s.substr(0,s.length-2):s}function b8e(s,e){return function(t,i){return typeof t=="string"&&t.endsWith(s)?e:null}}function U8e(s,e){const t=`/${s}`,i=`\\${s}`,n=function(r,l){return typeof r!="string"?null:l?l===s?e:null:r===s||r.endsWith(t)||r.endsWith(i)?e:null},o=[s];return n.basenames=o,n.patterns=[e],n.allBasenames=o,n}function F8e(s,e){const t=lNe(s.slice(1,-1).split(",").map(l=>ioe(l,e)).filter(l=>l!==kg),s),i=t.length;if(!i)return kg;if(i===1)return t[0];const n=function(l,a){for(let d=0,c=t.length;d<c;d++)if(t[d](l,a))return s;return null},o=t.find(l=>!!l.allBasenames);o&&(n.allBasenames=o.allBasenames);const r=t.reduce((l,a)=>a.allPaths?l.concat(a.allPaths):l,[]);return r.length&&(n.allPaths=r),n}function Fue(s,e,t){const i=ep===$o.sep,n=i?s:s.replace(c8e,ep),o=ep+n,r=$o.sep+s;let l;return t?l=function(a,d){return typeof a=="string"&&(a===n||a.endsWith(o)||!i&&(a===s||a.endsWith(r)))?e:null}:l=function(a,d){return typeof a=="string"&&(a===n||!i&&a===s)?e:null},l.allPaths=[(t?"*/":"./")+s],l}function A8e(s){try{const e=new RegExp(`^${oNe(s)}$`);return function(t){return e.lastIndex=0,typeof t=="string"&&e.test(t)?s:null}}catch{return kg}}function Z8e(s,e,t){return!s||typeof e!="string"?!1:rNe(s)(e,void 0,t)}function rNe(s,e={}){if(!s)return bue;if(typeof s=="string"||S8e(s)){const t=ioe(s,e);if(t===kg)return bue;const i=function(n,o){return!!t(n,o)};return t.allBasenames&&(i.allBasenames=t.allBasenames),t.allPaths&&(i.allPaths=t.allPaths),i}return N8e(s,e)}function S8e(s){const e=s;return e?typeof e.base=="string"&&typeof e.pattern=="string":!1}function N8e(s,e){const t=lNe(Object.getOwnPropertyNames(s).map(l=>R8e(l,s[l],e)).filter(l=>l!==kg)),i=t.length;if(!i)return kg;if(!t.some(l=>!!l.requiresSiblings)){if(i===1)return t[0];const l=function(c,h){let u;for(let m=0,p=t.length;m<p;m++){const g=t[m](c,h);if(typeof g=="string")return g;r8(g)&&(u||(u=[]),u.push(g))}return u?(async()=>{for(const m of u){const p=await m;if(typeof p=="string")return p}return null})():null},a=t.find(c=>!!c.allBasenames);a&&(l.allBasenames=a.allBasenames);const d=t.reduce((c,h)=>h.allPaths?c.concat(h.allPaths):c,[]);return d.length&&(l.allPaths=d),l}const n=function(l,a,d){let c,h;for(let u=0,m=t.length;u<m;u++){const p=t[u];p.requiresSiblings&&d&&(a||(a=AF(l)),c||(c=a.substr(0,a.length-lPe(l).length)));const g=p(l,a,c,d);if(typeof g=="string")return g;r8(g)&&(h||(h=[]),h.push(g))}return h?(async()=>{for(const u of h){const m=await u;if(typeof m=="string")return m}return null})():null},o=t.find(l=>!!l.allBasenames);o&&(n.allBasenames=o.allBasenames);const r=t.reduce((l,a)=>a.allPaths?l.concat(a.allPaths):l,[]);return r.length&&(n.allPaths=r),n}function R8e(s,e,t){if(e===!1)return kg;const i=ioe(s,t);if(i===kg)return kg;if(typeof e=="boolean")return i;if(e){const n=e.when;if(typeof n=="string"){const o=(r,l,a,d)=>{if(!d||!i(r,l))return null;const c=n.replace("$(basename)",()=>a),h=d(c);return r8(h)?h.then(u=>u?s:null):h?s:null};return o.requiresSiblings=!0,o}}return i}function lNe(s,e){const t=s.filter(l=>!!l.basenames);if(t.length<2)return s;const i=t.reduce((l,a)=>{const d=a.basenames;return d?l.concat(d):l},[]);let n;if(e){n=[];for(let l=0,a=i.length;l<a;l++)n.push(e)}else n=t.reduce((l,a)=>{const d=a.patterns;return d?l.concat(d):l},[]);const o=function(l,a){if(typeof l!="string")return null;if(!a){let c;for(c=l.length;c>0;c--){const h=l.charCodeAt(c-1);if(h===47||h===92)break}a=l.substr(c)}const d=i.indexOf(a);return d!==-1?n[d]:null};o.basenames=i,o.patterns=n,o.allBasenames=i;const r=s.filter(l=>!l.basenames);return r.push(o),r}function noe(s,e,t,i,n,o){if(Array.isArray(s)){let r=0;for(const l of s){const a=noe(l,e,t,i,n,o);if(a===10)return a;a>r&&(r=a)}return r}else{if(typeof s=="string")return i?s==="*"?5:s===t?10:0:0;if(s){const{language:r,pattern:l,scheme:a,hasAccessToAllModels:d,notebookType:c}=s;if(!i&&!d)return 0;c&&n&&(e=n);let h=0;if(a)if(a===e.scheme)h=10;else if(a==="*")h=5;else return 0;if(r)if(r===t)h=10;else if(r==="*")h=Math.max(h,5);else return 0;if(c)if(c===o)h=10;else if(c==="*"&&o!==void 0)h=Math.max(h,5);else return 0;if(l){let u;if(typeof l=="string"?u=l:u={...l,base:NZe(l.base)},u===e.fsPath||Z8e(u,e.fsPath))h=10;else return 0}return h}else return 0}}function aNe(s){return typeof s=="string"?!1:Array.isArray(s)?s.every(aNe):!!s.exclusive}class Aue{constructor(e,t,i,n,o){this.uri=e,this.languageId=t,this.notebookUri=i,this.notebookType=n,this.recursive=o}equals(e){var t,i;return this.notebookType===e.notebookType&&this.languageId===e.languageId&&this.uri.toString()===e.uri.toString()&&((t=this.notebookUri)==null?void 0:t.toString())===((i=e.notebookUri)==null?void 0:i.toString())&&this.recursive===e.recursive}}class ho{constructor(e){this._notebookInfoResolver=e,this._clock=0,this._entries=[],this._onDidChange=new fe,this.onDidChange=this._onDidChange.event}register(e,t){let i={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),ei(()=>{if(i){const n=this._entries.indexOf(i);n>=0&&(this._entries.splice(n,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),i=void 0)}})}has(e){return this.all(e).length>0}all(e){if(!e)return[];this._updateScores(e,!1);const t=[];for(const i of this._entries)i._score>0&&t.push(i.provider);return t}ordered(e,t=!1){const i=[];return this._orderedForEach(e,t,n=>i.push(n.provider)),i}orderedGroups(e){const t=[];let i,n;return this._orderedForEach(e,!1,o=>{i&&n===o._score?i.push(o.provider):(n=o._score,i=[o.provider],t.push(i))}),t}_orderedForEach(e,t,i){this._updateScores(e,t);for(const n of this._entries)n._score>0&&i(n)}_updateScores(e,t){var o,r;const i=(o=this._notebookInfoResolver)==null?void 0:o.call(this,e.uri),n=i?new Aue(e.uri,e.getLanguageId(),i.uri,i.type,t):new Aue(e.uri,e.getLanguageId(),void 0,void 0,t);if(!((r=this._lastCandidate)!=null&&r.equals(n))){this._lastCandidate=n;for(const l of this._entries)if(l._score=noe(l.selector,n.uri,n.languageId,xSe(e),n.notebookUri,n.notebookType),aNe(l.selector)&&l._score>0)if(t)l._score=0;else{for(const a of this._entries)a._score=0;l._score=1e3;break}this._entries.sort(ho._compareByScoreAndTime)}}static _compareByScoreAndTime(e,t){return e._score<t._score?1:e._score>t._score?-1:WT(e.selector)&&!WT(t.selector)?1:!WT(e.selector)&&WT(t.selector)?-1:e._time<t._time?1:e._time>t._time?-1:0}}function WT(s){return typeof s=="string"?!1:Array.isArray(s)?s.some(WT):!!s.isBuiltin}class V8e{constructor(){this.referenceProvider=new ho(this._score.bind(this)),this.renameProvider=new ho(this._score.bind(this)),this.newSymbolNamesProvider=new ho(this._score.bind(this)),this.codeActionProvider=new ho(this._score.bind(this)),this.definitionProvider=new ho(this._score.bind(this)),this.typeDefinitionProvider=new ho(this._score.bind(this)),this.declarationProvider=new ho(this._score.bind(this)),this.implementationProvider=new ho(this._score.bind(this)),this.documentSymbolProvider=new ho(this._score.bind(this)),this.inlayHintsProvider=new ho(this._score.bind(this)),this.colorProvider=new ho(this._score.bind(this)),this.codeLensProvider=new ho(this._score.bind(this)),this.documentFormattingEditProvider=new ho(this._score.bind(this)),this.documentRangeFormattingEditProvider=new ho(this._score.bind(this)),this.onTypeFormattingEditProvider=new ho(this._score.bind(this)),this.signatureHelpProvider=new ho(this._score.bind(this)),this.hoverProvider=new ho(this._score.bind(this)),this.documentHighlightProvider=new ho(this._score.bind(this)),this.multiDocumentHighlightProvider=new ho(this._score.bind(this)),this.selectionRangeProvider=new ho(this._score.bind(this)),this.foldingRangeProvider=new ho(this._score.bind(this)),this.linkProvider=new ho(this._score.bind(this)),this.inlineCompletionsProvider=new ho(this._score.bind(this)),this.inlineEditProvider=new ho(this._score.bind(this)),this.completionProvider=new ho(this._score.bind(this)),this.linkedEditingRangeProvider=new ho(this._score.bind(this)),this.documentRangeSemanticTokensProvider=new ho(this._score.bind(this)),this.documentSemanticTokensProvider=new ho(this._score.bind(this)),this.documentDropEditProvider=new ho(this._score.bind(this)),this.documentPasteEditProvider=new ho(this._score.bind(this))}_score(e){var t;return(t=this._notebookTypeResolver)==null?void 0:t.call(this,e)}}Fn(xt,V8e,1);function soe(s){return`--vscode-${s.replace(/\./g,"-")}`}function Mt(s){return`var(${soe(s)})`}function W8e(s,e){return`var(${soe(s)}, ${e})`}function y8e(s){return s!==null&&typeof s=="object"&&"light"in s&&"dark"in s}const dNe={ColorContribution:"base.contributions.colors"},Q8e="default";class M8e{constructor(){this._onDidChangeSchema=new fe,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(e,t,i,n=!1,o){const r={id:e,description:i,defaults:t,needsTransparency:n,deprecationMessage:o};this.colorsById[e]=r;const l={type:"string",format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return o&&(l.deprecationMessage=o),n&&(l.pattern="^#(?:(?<rgba>[0-9a-fA-f]{3}[0-9a-eA-E])|(?:[0-9a-fA-F]{6}(?:(?![fF]{2})(?:[0-9a-fA-F]{2}))))?$",l.patternErrorMessage=F("transparecyRequired","This color must be transparent or it will obscure content")),this.colorSchema.properties[e]={description:i,oneOf:[l,{type:"string",const:Q8e,description:F("useDefault","Use the default color.")}]},this.colorReferenceSchema.enum.push(e),this.colorReferenceSchema.enumDescriptions.push(i),this._onDidChangeSchema.fire(),e}getColors(){return Object.keys(this.colorsById).map(e=>this.colorsById[e])}resolveDefaultColor(e,t){const i=this.colorsById[e];if(i!=null&&i.defaults){const n=y8e(i.defaults)?i.defaults[t.type]:i.defaults;return Vm(n,t)}}getColorSchema(){return this.colorSchema}toString(){const e=(t,i)=>{const n=t.indexOf(".")===-1?0:1,o=i.indexOf(".")===-1?0:1;return n!==o?n-o:t.localeCompare(i)};return Object.keys(this.colorsById).sort(e).map(t=>`- \`${t}\`: ${this.colorsById[t].description}`).join(`
- `)}}const P3=new M8e;fo.add(dNe.ColorContribution,P3);function te(s,e,t,i,n){return P3.registerColor(s,e,t,i,n)}function w8e(s,e){var t,i,n,o;switch(s.op){case 0:return(t=Vm(s.value,e))==null?void 0:t.darken(s.factor);case 1:return(i=Vm(s.value,e))==null?void 0:i.lighten(s.factor);case 2:return(n=Vm(s.value,e))==null?void 0:n.transparent(s.factor);case 3:{const r=Vm(s.background,e);return r?(o=Vm(s.value,e))==null?void 0:o.makeOpaque(r):Vm(s.value,e)}case 4:for(const r of s.values){const l=Vm(r,e);if(l)return l}return;case 6:return Vm(e.defines(s.if)?s.then:s.else,e);case 5:{const r=Vm(s.value,e);if(!r)return;const l=Vm(s.background,e);return l?r.isDarkerThan(l)?Je.getLighterColor(r,l,s.factor).transparent(s.transparency):Je.getDarkerColor(r,l,s.factor).transparent(s.transparency):r.transparent(s.factor*s.transparency)}default:throw G3()}}function qN(s,e){return{op:0,value:s,factor:e}}function sp(s,e){return{op:1,value:s,factor:e}}function Oi(s,e){return{op:2,value:s,factor:e}}function nL(...s){return{op:4,values:s}}function T8e(s,e,t){return{op:6,if:s,then:e,else:t}}function Zue(s,e,t,i){return{op:5,value:s,background:e,factor:t,transparency:i}}function Vm(s,e){if(s!==null){if(typeof s=="string")return s[0]==="#"?Je.fromHex(s):e.getColor(s);if(s instanceof Je)return s;if(typeof s=="object")return w8e(s,e)}}const cNe="vscode://schemas/workbench-colors",hNe=fo.as(_3.JSONContribution);hNe.registerSchema(cNe,P3.getColorSchema());const Sue=new cs(()=>hNe.notifySchemaChanged(cNe),200);P3.onDidChangeSchema(()=>{Sue.isScheduled()||Sue.schedule()});const en=te("foreground",{dark:"#CCCCCC",light:"#616161",hcDark:"#FFFFFF",hcLight:"#292929"},F("foreground","Overall foreground color. This color is only used if not overridden by a component."));te("disabledForeground",{dark:"#CCCCCC80",light:"#61616180",hcDark:"#A5A5A5",hcLight:"#7F7F7F"},F("disabledForeground","Overall foreground for disabled elements. This color is only used if not overridden by a component."));te("errorForeground",{dark:"#F48771",light:"#A1260D",hcDark:"#F48771",hcLight:"#B5200D"},F("errorForeground","Overall foreground color for error messages. This color is only used if not overridden by a component."));te("descriptionForeground",{light:"#717171",dark:Oi(en,.7),hcDark:Oi(en,.7),hcLight:Oi(en,.7)},F("descriptionForeground","Foreground color for description text providing additional information, for example for a label."));const WX=te("icon.foreground",{dark:"#C5C5C5",light:"#424242",hcDark:"#FFFFFF",hcLight:"#292929"},F("iconForeground","The default color for icons in the workbench.")),Gg=te("focusBorder",{dark:"#007FD4",light:"#0090F1",hcDark:"#F38518",hcLight:"#006BBD"},F("focusBorder","Overall border color for focused elements. This color is only used if not overridden by a component.")),Vn=te("contrastBorder",{light:null,dark:null,hcDark:"#6FC3DF",hcLight:"#0F4A85"},F("contrastBorder","An extra border around elements to separate them from others for greater contrast.")),to=te("contrastActiveBorder",{light:null,dark:null,hcDark:Gg,hcLight:Gg},F("activeContrastBorder","An extra border around active elements to separate them from others for greater contrast."));te("selection.background",null,F("selectionBackground","The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor."));const C8e=te("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},F("textLinkForeground","Foreground color for links in text."));te("textLink.activeForeground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},F("textLinkActiveForeground","Foreground color for links in text when clicked on and on mouse hover."));te("textSeparator.foreground",{light:"#0000002e",dark:"#ffffff2e",hcDark:Je.black,hcLight:"#292929"},F("textSeparatorForeground","Color for text separators."));te("textPreformat.foreground",{light:"#A31515",dark:"#D7BA7D",hcDark:"#000000",hcLight:"#FFFFFF"},F("textPreformatForeground","Foreground color for preformatted text segments."));te("textPreformat.background",{light:"#0000001A",dark:"#FFFFFF1A",hcDark:"#FFFFFF",hcLight:"#09345f"},F("textPreformatBackground","Background color for preformatted text segments."));te("textBlockQuote.background",{light:"#f2f2f2",dark:"#222222",hcDark:null,hcLight:"#F2F2F2"},F("textBlockQuoteBackground","Background color for block quotes in text."));te("textBlockQuote.border",{light:"#007acc80",dark:"#007acc80",hcDark:Je.white,hcLight:"#292929"},F("textBlockQuoteBorder","Border color for block quotes in text."));te("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hcDark:Je.black,hcLight:"#F2F2F2"},F("textCodeBlockBackground","Background color for code blocks in text."));te("sash.hoverBorder",Gg,F("sashActiveBorder","Border color of active sashes."));const AD=te("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hcDark:Je.black,hcLight:"#0F4A85"},F("badgeBackground","Badge background color. Badges are small information labels, e.g. for search results count.")),B8e=te("badge.foreground",{dark:Je.white,light:"#333",hcDark:Je.white,hcLight:Je.white},F("badgeForeground","Badge foreground color. Badges are small information labels, e.g. for search results count.")),ooe=te("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hcDark:null,hcLight:null},F("scrollbarShadow","Scrollbar shadow to indicate that the view is scrolled.")),uNe=te("scrollbarSlider.background",{dark:Je.fromHex("#797979").transparent(.4),light:Je.fromHex("#646464").transparent(.4),hcDark:Oi(Vn,.6),hcLight:Oi(Vn,.4)},F("scrollbarSliderBackground","Scrollbar slider background color.")),mNe=te("scrollbarSlider.hoverBackground",{dark:Je.fromHex("#646464").transparent(.7),light:Je.fromHex("#646464").transparent(.7),hcDark:Oi(Vn,.8),hcLight:Oi(Vn,.8)},F("scrollbarSliderHoverBackground","Scrollbar slider background color when hovering.")),pNe=te("scrollbarSlider.activeBackground",{dark:Je.fromHex("#BFBFBF").transparent(.4),light:Je.fromHex("#000000").transparent(.6),hcDark:Vn,hcLight:Vn},F("scrollbarSliderActiveBackground","Scrollbar slider background color when clicked on.")),L8e=te("progressBar.background",{dark:Je.fromHex("#0E70C0"),light:Je.fromHex("#0E70C0"),hcDark:Vn,hcLight:Vn},F("progressBarBackground","Background color of the progress bar that can show for long running operations.")),im=te("editor.background",{light:"#ffffff",dark:"#1E1E1E",hcDark:Je.black,hcLight:Je.white},F("editorBackground","Editor background color.")),e0=te("editor.foreground",{light:"#333333",dark:"#BBBBBB",hcDark:Je.white,hcLight:en},F("editorForeground","Editor default foreground color."));te("editorStickyScroll.background",im,F("editorStickyScrollBackground","Background color of sticky scroll in the editor"));te("editorStickyScrollHover.background",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:null,hcLight:Je.fromHex("#0F4A85").transparent(.1)},F("editorStickyScrollHoverBackground","Background color of sticky scroll on hover in the editor"));te("editorStickyScroll.border",{dark:null,light:null,hcDark:Vn,hcLight:Vn},F("editorStickyScrollBorder","Border color of sticky scroll in the editor"));te("editorStickyScroll.shadow",ooe,F("editorStickyScrollShadow"," Shadow color of sticky scroll in the editor"));const Pc=te("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hcDark:"#0C141F",hcLight:Je.white},F("editorWidgetBackground","Background color of editor widgets, such as find/replace.")),H3=te("editorWidget.foreground",en,F("editorWidgetForeground","Foreground color of editor widgets, such as find/replace.")),roe=te("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hcDark:Vn,hcLight:Vn},F("editorWidgetBorder","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget."));te("editorWidget.resizeBorder",null,F("editorWidgetResizeBorder","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget."));te("editorError.background",null,F("editorError.background","Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0);const K3=te("editorError.foreground",{dark:"#F14C4C",light:"#E51400",hcDark:"#F48771",hcLight:"#B5200D"},F("editorError.foreground","Foreground color of error squigglies in the editor.")),v8e=te("editorError.border",{dark:null,light:null,hcDark:Je.fromHex("#E47777").transparent(.8),hcLight:"#B5200D"},F("errorBorder","If set, color of double underlines for errors in the editor.")),k8e=te("editorWarning.background",null,F("editorWarning.background","Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),qf=te("editorWarning.foreground",{dark:"#CCA700",light:"#BF8803",hcDark:"#FFD370",hcLight:"#895503"},F("editorWarning.foreground","Foreground color of warning squigglies in the editor.")),sL=te("editorWarning.border",{dark:null,light:null,hcDark:Je.fromHex("#FFCC00").transparent(.8),hcLight:Je.fromHex("#FFCC00").transparent(.8)},F("warningBorder","If set, color of double underlines for warnings in the editor."));te("editorInfo.background",null,F("editorInfo.background","Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0);const Jg=te("editorInfo.foreground",{dark:"#3794FF",light:"#1a85ff",hcDark:"#3794FF",hcLight:"#1a85ff"},F("editorInfo.foreground","Foreground color of info squigglies in the editor.")),oL=te("editorInfo.border",{dark:null,light:null,hcDark:Je.fromHex("#3794FF").transparent(.8),hcLight:"#292929"},F("infoBorder","If set, color of double underlines for infos in the editor.")),x8e=te("editorHint.foreground",{dark:Je.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hcDark:null,hcLight:null},F("editorHint.foreground","Foreground color of hint squigglies in the editor."));te("editorHint.border",{dark:null,light:null,hcDark:Je.fromHex("#eeeeee").transparent(.8),hcLight:"#292929"},F("hintBorder","If set, color of double underlines for hints in the editor."));const I8e=te("editorLink.activeForeground",{dark:"#4E94CE",light:Je.blue,hcDark:Je.cyan,hcLight:"#292929"},F("activeLinkForeground","Color of active links.")),zU=te("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hcDark:"#f3f518",hcLight:"#0F4A85"},F("editorSelectionBackground","Color of the editor selection.")),E8e=te("editor.selectionForeground",{light:null,dark:null,hcDark:"#000000",hcLight:Je.white},F("editorSelectionForeground","Color of the selected text for high contrast.")),gNe=te("editor.inactiveSelectionBackground",{light:Oi(zU,.5),dark:Oi(zU,.5),hcDark:Oi(zU,.7),hcLight:Oi(zU,.5)},F("editorInactiveSelection","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."),!0),loe=te("editor.selectionHighlightBackground",{light:Zue(zU,im,.3,.6),dark:Zue(zU,im,.3,.6),hcDark:null,hcLight:null},F("editorSelectionHighlight","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.selectionHighlightBorder",{light:null,dark:null,hcDark:to,hcLight:to},F("editorSelectionHighlightBorder","Border color for regions with the same content as the selection."));te("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hcDark:null,hcLight:null},F("editorFindMatch","Color of the current search match."));const D8e=te("editor.findMatchForeground",null,F("editorFindMatchForeground","Text color of the current search match.")),Qf=te("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hcDark:null,hcLight:null},F("findMatchHighlight","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."),!0),G8e=te("editor.findMatchHighlightForeground",null,F("findMatchHighlightForeground","Foreground color of the other search matches."),!0);te("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hcDark:null,hcLight:null},F("findRangeHighlight","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.findMatchBorder",{light:null,dark:null,hcDark:to,hcLight:to},F("editorFindMatchBorder","Border color of the current search match."));const OU=te("editor.findMatchHighlightBorder",{light:null,dark:null,hcDark:to,hcLight:to},F("findMatchHighlightBorder","Border color of the other search matches.")),J8e=te("editor.findRangeHighlightBorder",{dark:null,light:null,hcDark:Oi(to,.4),hcLight:Oi(to,.4)},F("findRangeHighlightBorder","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hcDark:"#ADD6FF26",hcLight:null},F("hoverHighlight","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."),!0);const yX=te("editorHoverWidget.background",Pc,F("hoverBackground","Background color of the editor hover."));te("editorHoverWidget.foreground",H3,F("hoverForeground","Foreground color of the editor hover."));const fNe=te("editorHoverWidget.border",roe,F("hoverBorder","Border color of the editor hover."));te("editorHoverWidget.statusBarBackground",{dark:sp(yX,.2),light:qN(yX,.05),hcDark:Pc,hcLight:Pc},F("statusBarBackground","Background color of the editor hover status bar."));const aoe=te("editorInlayHint.foreground",{dark:"#969696",light:"#969696",hcDark:Je.white,hcLight:Je.black},F("editorInlayHintForeground","Foreground color of inline hints")),doe=te("editorInlayHint.background",{dark:Oi(AD,.1),light:Oi(AD,.1),hcDark:Oi(Je.white,.1),hcLight:Oi(AD,.1)},F("editorInlayHintBackground","Background color of inline hints")),X8e=te("editorInlayHint.typeForeground",aoe,F("editorInlayHintForegroundTypes","Foreground color of inline hints for types")),Y8e=te("editorInlayHint.typeBackground",doe,F("editorInlayHintBackgroundTypes","Background color of inline hints for types")),_8e=te("editorInlayHint.parameterForeground",aoe,F("editorInlayHintForegroundParameter","Foreground color of inline hints for parameters")),z8e=te("editorInlayHint.parameterBackground",doe,F("editorInlayHintBackgroundParameter","Background color of inline hints for parameters")),O8e=te("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hcDark:"#FFCC00",hcLight:"#007ACC"},F("editorLightBulbForeground","The color used for the lightbulb actions icon."));te("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},F("editorLightBulbAutoFixForeground","The color used for the lightbulb auto fix actions icon."));te("editorLightBulbAi.foreground",O8e,F("editorLightBulbAiForeground","The color used for the lightbulb AI icon."));te("editor.snippetTabstopHighlightBackground",{dark:new Je(new Qn(124,124,124,.3)),light:new Je(new Qn(10,50,100,.2)),hcDark:new Je(new Qn(124,124,124,.3)),hcLight:new Je(new Qn(10,50,100,.2))},F("snippetTabstopHighlightBackground","Highlight background color of a snippet tabstop."));te("editor.snippetTabstopHighlightBorder",null,F("snippetTabstopHighlightBorder","Highlight border color of a snippet tabstop."));te("editor.snippetFinalTabstopHighlightBackground",null,F("snippetFinalTabstopHighlightBackground","Highlight background color of the final tabstop of a snippet."));te("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new Je(new Qn(10,50,100,.5)),hcDark:"#525252",hcLight:"#292929"},F("snippetFinalTabstopHighlightBorder","Highlight border color of the final tabstop of a snippet."));const _8=new Je(new Qn(155,185,85,.2)),z8=new Je(new Qn(255,0,0,.2)),j8e=te("diffEditor.insertedTextBackground",{dark:"#9ccc2c33",light:"#9ccc2c40",hcDark:null,hcLight:null},F("diffEditorInserted","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),P8e=te("diffEditor.removedTextBackground",{dark:"#ff000033",light:"#ff000033",hcDark:null,hcLight:null},F("diffEditorRemoved","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."),!0);te("diffEditor.insertedLineBackground",{dark:_8,light:_8,hcDark:null,hcLight:null},F("diffEditorInsertedLines","Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0);te("diffEditor.removedLineBackground",{dark:z8,light:z8,hcDark:null,hcLight:null},F("diffEditorRemovedLines","Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations."),!0);te("diffEditorGutter.insertedLineBackground",null,F("diffEditorInsertedLineGutter","Background color for the margin where lines got inserted."));te("diffEditorGutter.removedLineBackground",null,F("diffEditorRemovedLineGutter","Background color for the margin where lines got removed."));const H8e=te("diffEditorOverview.insertedForeground",null,F("diffEditorOverviewInserted","Diff overview ruler foreground for inserted content.")),K8e=te("diffEditorOverview.removedForeground",null,F("diffEditorOverviewRemoved","Diff overview ruler foreground for removed content."));te("diffEditor.insertedTextBorder",{dark:null,light:null,hcDark:"#33ff2eff",hcLight:"#374E06"},F("diffEditorInsertedOutline","Outline color for the text that got inserted."));te("diffEditor.removedTextBorder",{dark:null,light:null,hcDark:"#FF008F",hcLight:"#AD0707"},F("diffEditorRemovedOutline","Outline color for text that got removed."));te("diffEditor.border",{dark:null,light:null,hcDark:Vn,hcLight:Vn},F("diffEditorBorder","Border color between the two text editors."));te("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hcDark:null,hcLight:null},F("diffDiagonalFill","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views."));te("diffEditor.unchangedRegionBackground","sideBar.background",F("diffEditor.unchangedRegionBackground","The background color of unchanged blocks in the diff editor."));te("diffEditor.unchangedRegionForeground","foreground",F("diffEditor.unchangedRegionForeground","The foreground color of unchanged blocks in the diff editor."));te("diffEditor.unchangedCodeBackground",{dark:"#74747429",light:"#b8b8b829",hcDark:null,hcLight:null},F("diffEditor.unchangedCodeBackground","The background color of unchanged code in the diff editor."));const bM=te("widget.shadow",{dark:Oi(Je.black,.36),light:Oi(Je.black,.16),hcDark:null,hcLight:null},F("widgetShadow","Shadow color of widgets such as find/replace inside the editor.")),bNe=te("widget.border",{dark:null,light:null,hcDark:Vn,hcLight:Vn},F("widgetBorder","Border color of widgets such as find/replace inside the editor.")),Nue=te("toolbar.hoverBackground",{dark:"#5a5d5e50",light:"#b8b8b850",hcDark:null,hcLight:null},F("toolbarHoverBackground","Toolbar background when hovering over actions using the mouse"));te("toolbar.hoverOutline",{dark:null,light:null,hcDark:to,hcLight:to},F("toolbarHoverOutline","Toolbar outline when hovering over actions using the mouse"));te("toolbar.activeBackground",{dark:sp(Nue,.1),light:qN(Nue,.1),hcDark:null,hcLight:null},F("toolbarActiveBackground","Toolbar background when holding the mouse over actions"));const q8e=te("breadcrumb.foreground",Oi(en,.8),F("breadcrumbsFocusForeground","Color of focused breadcrumb items.")),$8e=te("breadcrumb.background",im,F("breadcrumbsBackground","Background color of breadcrumb items.")),Rue=te("breadcrumb.focusForeground",{light:qN(en,.2),dark:sp(en,.1),hcDark:sp(en,.1),hcLight:sp(en,.1)},F("breadcrumbsFocusForeground","Color of focused breadcrumb items.")),e6e=te("breadcrumb.activeSelectionForeground",{light:qN(en,.2),dark:sp(en,.1),hcDark:sp(en,.1),hcLight:sp(en,.1)},F("breadcrumbsSelectedForeground","Color of selected breadcrumb items."));te("breadcrumbPicker.background",Pc,F("breadcrumbsSelectedBackground","Background color of breadcrumb item picker."));const UNe=.5,Vue=Je.fromHex("#40C8AE").transparent(UNe),Wue=Je.fromHex("#40A6FF").transparent(UNe),yue=Je.fromHex("#606060").transparent(.4),coe=.4,Qy=1,O8=te("merge.currentHeaderBackground",{dark:Vue,light:Vue,hcDark:null,hcLight:null},F("mergeCurrentHeaderBackground","Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);te("merge.currentContentBackground",Oi(O8,coe),F("mergeCurrentContentBackground","Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const j8=te("merge.incomingHeaderBackground",{dark:Wue,light:Wue,hcDark:null,hcLight:null},F("mergeIncomingHeaderBackground","Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);te("merge.incomingContentBackground",Oi(j8,coe),F("mergeIncomingContentBackground","Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const P8=te("merge.commonHeaderBackground",{dark:yue,light:yue,hcDark:null,hcLight:null},F("mergeCommonHeaderBackground","Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);te("merge.commonContentBackground",Oi(P8,coe),F("mergeCommonContentBackground","Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const My=te("merge.border",{dark:null,light:null,hcDark:"#C3DF6F",hcLight:"#007ACC"},F("mergeBorder","Border color on headers and the splitter in inline merge-conflicts."));te("editorOverviewRuler.currentContentForeground",{dark:Oi(O8,Qy),light:Oi(O8,Qy),hcDark:My,hcLight:My},F("overviewRulerCurrentContentForeground","Current overview ruler foreground for inline merge-conflicts."));te("editorOverviewRuler.incomingContentForeground",{dark:Oi(j8,Qy),light:Oi(j8,Qy),hcDark:My,hcLight:My},F("overviewRulerIncomingContentForeground","Incoming overview ruler foreground for inline merge-conflicts."));te("editorOverviewRuler.commonContentForeground",{dark:Oi(P8,Qy),light:Oi(P8,Qy),hcDark:My,hcLight:My},F("overviewRulerCommonContentForeground","Common ancestor overview ruler foreground for inline merge-conflicts."));const cP=te("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hcDark:"#AB5A00",hcLight:"#AB5A00"},F("overviewRulerFindMatchForeground","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."),!0),FNe=te("editorOverviewRuler.selectionHighlightForeground","#A0A0A0CC",F("overviewRulerSelectionHighlightForeground","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."),!0),t6e=te("problemsErrorIcon.foreground",K3,F("problemsErrorIconForeground","The color used for the problems error icon.")),i6e=te("problemsWarningIcon.foreground",qf,F("problemsWarningIconForeground","The color used for the problems warning icon.")),n6e=te("problemsInfoIcon.foreground",Jg,F("problemsInfoIconForeground","The color used for the problems info icon.")),H8=te("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hcDark:"#AB5A00",hcLight:"#0F4A85"},F("minimapFindMatchHighlight","Minimap marker color for find matches."),!0),q3=te("minimap.selectionOccurrenceHighlight",{light:"#c9c9c9",dark:"#676767",hcDark:"#ffffff",hcLight:"#0F4A85"},F("minimapSelectionOccurrenceHighlight","Minimap marker color for repeating editor selections."),!0),Que=te("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hcDark:"#ffffff",hcLight:"#0F4A85"},F("minimapSelectionHighlight","Minimap marker color for the editor selection."),!0),s6e=te("minimap.infoHighlight",{dark:Jg,light:Jg,hcDark:oL,hcLight:oL},F("minimapInfo","Minimap marker color for infos.")),o6e=te("minimap.warningHighlight",{dark:qf,light:qf,hcDark:sL,hcLight:sL},F("overviewRuleWarning","Minimap marker color for warnings.")),r6e=te("minimap.errorHighlight",{dark:new Je(new Qn(255,18,18,.7)),light:new Je(new Qn(255,18,18,.7)),hcDark:new Je(new Qn(255,50,50,1)),hcLight:"#B5200D"},F("minimapError","Minimap marker color for errors.")),l6e=te("minimap.background",null,F("minimapBackground","Minimap background color.")),a6e=te("minimap.foregroundOpacity",Je.fromHex("#000f"),F("minimapForegroundOpacity",'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.'));te("minimapSlider.background",Oi(uNe,.5),F("minimapSliderBackground","Minimap slider background color."));te("minimapSlider.hoverBackground",Oi(mNe,.5),F("minimapSliderHoverBackground","Minimap slider background color when hovering."));te("minimapSlider.activeBackground",Oi(pNe,.5),F("minimapSliderActiveBackground","Minimap slider background color when clicked on."));te("charts.foreground",en,F("chartsForeground","The foreground color used in charts."));te("charts.lines",Oi(en,.5),F("chartsLines","The color used for horizontal lines in charts."));te("charts.red",K3,F("chartsRed","The red color used in chart visualizations."));te("charts.blue",Jg,F("chartsBlue","The blue color used in chart visualizations."));te("charts.yellow",qf,F("chartsYellow","The yellow color used in chart visualizations."));te("charts.orange",H8,F("chartsOrange","The orange color used in chart visualizations."));te("charts.green",{dark:"#89D185",light:"#388A34",hcDark:"#89D185",hcLight:"#374e06"},F("chartsGreen","The green color used in chart visualizations."));te("charts.purple",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},F("chartsPurple","The purple color used in chart visualizations."));const K8=te("input.background",{dark:"#3C3C3C",light:Je.white,hcDark:Je.black,hcLight:Je.white},F("inputBoxBackground","Input box background.")),ANe=te("input.foreground",en,F("inputBoxForeground","Input box foreground.")),ZNe=te("input.border",{dark:null,light:null,hcDark:Vn,hcLight:Vn},F("inputBoxBorder","Input box border.")),$3=te("inputOption.activeBorder",{dark:"#007ACC",light:"#007ACC",hcDark:Vn,hcLight:Vn},F("inputBoxActiveOptionBorder","Border color of activated options in input fields.")),d6e=te("inputOption.hoverBackground",{dark:"#5a5d5e80",light:"#b8b8b850",hcDark:null,hcLight:null},F("inputOption.hoverBackground","Background color of activated options in input fields.")),$v=te("inputOption.activeBackground",{dark:Oi(Gg,.4),light:Oi(Gg,.2),hcDark:Je.transparent,hcLight:Je.transparent},F("inputOption.activeBackground","Background hover color of options in input fields.")),e9=te("inputOption.activeForeground",{dark:Je.white,light:Je.black,hcDark:en,hcLight:en},F("inputOption.activeForeground","Foreground color of activated options in input fields."));te("input.placeholderForeground",{light:Oi(en,.5),dark:Oi(en,.5),hcDark:Oi(en,.7),hcLight:Oi(en,.7)},F("inputPlaceholderForeground","Input box foreground color for placeholder text."));const c6e=te("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hcDark:Je.black,hcLight:Je.white},F("inputValidationInfoBackground","Input validation background color for information severity.")),h6e=te("inputValidation.infoForeground",{dark:null,light:null,hcDark:null,hcLight:en},F("inputValidationInfoForeground","Input validation foreground color for information severity.")),u6e=te("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hcDark:Vn,hcLight:Vn},F("inputValidationInfoBorder","Input validation border color for information severity.")),m6e=te("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hcDark:Je.black,hcLight:Je.white},F("inputValidationWarningBackground","Input validation background color for warning severity.")),p6e=te("inputValidation.warningForeground",{dark:null,light:null,hcDark:null,hcLight:en},F("inputValidationWarningForeground","Input validation foreground color for warning severity.")),g6e=te("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hcDark:Vn,hcLight:Vn},F("inputValidationWarningBorder","Input validation border color for warning severity.")),f6e=te("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hcDark:Je.black,hcLight:Je.white},F("inputValidationErrorBackground","Input validation background color for error severity.")),b6e=te("inputValidation.errorForeground",{dark:null,light:null,hcDark:null,hcLight:en},F("inputValidationErrorForeground","Input validation foreground color for error severity.")),U6e=te("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hcDark:Vn,hcLight:Vn},F("inputValidationErrorBorder","Input validation border color for error severity.")),t9=te("dropdown.background",{dark:"#3C3C3C",light:Je.white,hcDark:Je.black,hcLight:Je.white},F("dropdownBackground","Dropdown background.")),F6e=te("dropdown.listBackground",{dark:null,light:null,hcDark:Je.black,hcLight:Je.white},F("dropdownListBackground","Dropdown list background.")),hoe=te("dropdown.foreground",{dark:"#F0F0F0",light:en,hcDark:Je.white,hcLight:en},F("dropdownForeground","Dropdown foreground.")),uoe=te("dropdown.border",{dark:t9,light:"#CECECE",hcDark:Vn,hcLight:Vn},F("dropdownBorder","Dropdown border.")),SNe=te("button.foreground",Je.white,F("buttonForeground","Button foreground color.")),A6e=te("button.separator",Oi(SNe,.4),F("buttonSeparator","Button separator color.")),yT=te("button.background",{dark:"#0E639C",light:"#007ACC",hcDark:null,hcLight:"#0F4A85"},F("buttonBackground","Button background color.")),Z6e=te("button.hoverBackground",{dark:sp(yT,.2),light:qN(yT,.2),hcDark:yT,hcLight:yT},F("buttonHoverBackground","Button background color when hovering.")),S6e=te("button.border",Vn,F("buttonBorder","Button border color.")),N6e=te("button.secondaryForeground",{dark:Je.white,light:Je.white,hcDark:Je.white,hcLight:en},F("buttonSecondaryForeground","Secondary button foreground color.")),q8=te("button.secondaryBackground",{dark:"#3A3D41",light:"#5F6A79",hcDark:null,hcLight:Je.white},F("buttonSecondaryBackground","Secondary button background color.")),R6e=te("button.secondaryHoverBackground",{dark:sp(q8,.2),light:qN(q8,.2),hcDark:null,hcLight:null},F("buttonSecondaryHoverBackground","Secondary button background color when hovering.")),QT=te("radio.activeForeground",e9,F("radioActiveForeground","Foreground color of active radio option.")),V6e=te("radio.activeBackground",$v,F("radioBackground","Background color of active radio option.")),W6e=te("radio.activeBorder",$3,F("radioActiveBorder","Border color of the active radio option.")),y6e=te("radio.inactiveForeground",null,F("radioInactiveForeground","Foreground color of inactive radio option.")),Q6e=te("radio.inactiveBackground",null,F("radioInactiveBackground","Background color of inactive radio option.")),M6e=te("radio.inactiveBorder",{light:Oi(QT,.2),dark:Oi(QT,.2),hcDark:Oi(QT,.4),hcLight:Oi(QT,.2)},F("radioInactiveBorder","Border color of the inactive radio option.")),w6e=te("radio.inactiveHoverBackground",d6e,F("radioHoverBackground","Background color of inactive active radio option when hovering.")),T6e=te("checkbox.background",t9,F("checkbox.background","Background color of checkbox widget."));te("checkbox.selectBackground",Pc,F("checkbox.select.background","Background color of checkbox widget when the element it's in is selected."));const C6e=te("checkbox.foreground",hoe,F("checkbox.foreground","Foreground color of checkbox widget.")),B6e=te("checkbox.border",uoe,F("checkbox.border","Border color of checkbox widget."));te("checkbox.selectBorder",WX,F("checkbox.select.border","Border color of checkbox widget when the element it's in is selected."));const L6e=te("keybindingLabel.background",{dark:new Je(new Qn(128,128,128,.17)),light:new Je(new Qn(221,221,221,.4)),hcDark:Je.transparent,hcLight:Je.transparent},F("keybindingLabelBackground","Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.")),v6e=te("keybindingLabel.foreground",{dark:Je.fromHex("#CCCCCC"),light:Je.fromHex("#555555"),hcDark:Je.white,hcLight:en},F("keybindingLabelForeground","Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.")),k6e=te("keybindingLabel.border",{dark:new Je(new Qn(51,51,51,.6)),light:new Je(new Qn(204,204,204,.4)),hcDark:new Je(new Qn(111,195,223)),hcLight:Vn},F("keybindingLabelBorder","Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.")),x6e=te("keybindingLabel.bottomBorder",{dark:new Je(new Qn(68,68,68,.6)),light:new Je(new Qn(187,187,187,.4)),hcDark:new Je(new Qn(111,195,223)),hcLight:en},F("keybindingLabelBottomBorder","Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.")),I6e=te("list.focusBackground",null,F("listFocusBackground","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),E6e=te("list.focusForeground",null,F("listFocusForeground","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),D6e=te("list.focusOutline",{dark:Gg,light:Gg,hcDark:to,hcLight:to},F("listFocusOutline","List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),G6e=te("list.focusAndSelectionOutline",null,F("listFocusAndSelectionOutline","List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.")),NN=te("list.activeSelectionBackground",{dark:"#04395E",light:"#0060C0",hcDark:null,hcLight:Je.fromHex("#0F4A85").transparent(.1)},F("listActiveSelectionBackground","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),rL=te("list.activeSelectionForeground",{dark:Je.white,light:Je.white,hcDark:null,hcLight:null},F("listActiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),NNe=te("list.activeSelectionIconForeground",null,F("listActiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),J6e=te("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hcDark:null,hcLight:Je.fromHex("#0F4A85").transparent(.1)},F("listInactiveSelectionBackground","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),X6e=te("list.inactiveSelectionForeground",null,F("listInactiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),Y6e=te("list.inactiveSelectionIconForeground",null,F("listInactiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),_6e=te("list.inactiveFocusBackground",null,F("listInactiveFocusBackground","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),z6e=te("list.inactiveFocusOutline",null,F("listInactiveFocusOutline","List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),RNe=te("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:Je.white.transparent(.1),hcLight:Je.fromHex("#0F4A85").transparent(.1)},F("listHoverBackground","List/Tree background when hovering over items using the mouse.")),VNe=te("list.hoverForeground",null,F("listHoverForeground","List/Tree foreground when hovering over items using the mouse.")),O6e=te("list.dropBackground",{dark:"#062F4A",light:"#D6EBFF",hcDark:null,hcLight:null},F("listDropBackground","List/Tree drag and drop background when moving items over other items when using the mouse.")),j6e=te("list.dropBetweenBackground",{dark:WX,light:WX,hcDark:null,hcLight:null},F("listDropBetweenBackground","List/Tree drag and drop border color when moving items between items when using the mouse.")),SW=te("list.highlightForeground",{dark:"#2AAAFF",light:"#0066BF",hcDark:Gg,hcLight:Gg},F("highlight","List/Tree foreground color of the match highlights when searching inside the list/tree.")),P6e=te("list.focusHighlightForeground",{dark:SW,light:T8e(NN,SW,"#BBE7FF"),hcDark:SW,hcLight:SW},F("listFocusHighlightForeground","List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree."));te("list.invalidItemForeground",{dark:"#B89500",light:"#B89500",hcDark:"#B89500",hcLight:"#B5200D"},F("invalidItemForeground","List/Tree foreground color for invalid items, for example an unresolved root in explorer."));te("list.errorForeground",{dark:"#F88070",light:"#B01011",hcDark:null,hcLight:null},F("listErrorForeground","Foreground color of list items containing errors."));te("list.warningForeground",{dark:"#CCA700",light:"#855F00",hcDark:null,hcLight:null},F("listWarningForeground","Foreground color of list items containing warnings."));const H6e=te("listFilterWidget.background",{light:qN(Pc,0),dark:sp(Pc,0),hcDark:Pc,hcLight:Pc},F("listFilterWidgetBackground","Background color of the type filter widget in lists and trees.")),K6e=te("listFilterWidget.outline",{dark:Je.transparent,light:Je.transparent,hcDark:"#f38518",hcLight:"#007ACC"},F("listFilterWidgetOutline","Outline color of the type filter widget in lists and trees.")),q6e=te("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hcDark:Vn,hcLight:Vn},F("listFilterWidgetNoMatchesOutline","Outline color of the type filter widget in lists and trees, when there are no matches.")),$6e=te("listFilterWidget.shadow",bM,F("listFilterWidgetShadow","Shadow color of the type filter widget in lists and trees."));te("list.filterMatchBackground",{dark:Qf,light:Qf,hcDark:null,hcLight:null},F("listFilterMatchHighlight","Background color of the filtered match."));te("list.filterMatchBorder",{dark:OU,light:OU,hcDark:Vn,hcLight:to},F("listFilterMatchHighlightBorder","Border color of the filtered match."));te("list.deemphasizedForeground",{dark:"#8C8C8C",light:"#8E8E90",hcDark:"#A7A8A9",hcLight:"#666666"},F("listDeemphasizedForeground","List/Tree foreground color for items that are deemphasized."));const WNe=te("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hcDark:"#a9a9a9",hcLight:"#a5a5a5"},F("treeIndentGuidesStroke","Tree stroke color for the indentation guides.")),eqe=te("tree.inactiveIndentGuidesStroke",Oi(WNe,.4),F("treeInactiveIndentGuidesStroke","Tree stroke color for the indentation guides that are not active.")),tqe=te("tree.tableColumnsBorder",{dark:"#CCCCCC20",light:"#61616120",hcDark:null,hcLight:null},F("tableColumnsBorder","Table border color between columns.")),iqe=te("tree.tableOddRowsBackground",{dark:Oi(en,.04),light:Oi(en,.04),hcDark:null,hcLight:null},F("tableOddRowsBackgroundColor","Background color for odd table rows."));te("editorActionList.background",Pc,F("editorActionListBackground","Action List background color."));te("editorActionList.foreground",H3,F("editorActionListForeground","Action List foreground color."));te("editorActionList.focusForeground",rL,F("editorActionListFocusForeground","Action List foreground color for the focused item."));te("editorActionList.focusBackground",NN,F("editorActionListFocusBackground","Action List background color for the focused item."));const nqe=te("menu.border",{dark:null,light:null,hcDark:Vn,hcLight:Vn},F("menuBorder","Border color of menus.")),sqe=te("menu.foreground",hoe,F("menuForeground","Foreground color of menu items.")),oqe=te("menu.background",t9,F("menuBackground","Background color of menu items.")),rqe=te("menu.selectionForeground",rL,F("menuSelectionForeground","Foreground color of the selected menu item in menus.")),lqe=te("menu.selectionBackground",NN,F("menuSelectionBackground","Background color of the selected menu item in menus.")),aqe=te("menu.selectionBorder",{dark:null,light:null,hcDark:to,hcLight:to},F("menuSelectionBorder","Border color of the selected menu item in menus.")),dqe=te("menu.separatorBackground",{dark:"#606060",light:"#D4D4D4",hcDark:Vn,hcLight:Vn},F("menuSeparatorBackground","Color of a separator menu item in menus.")),Mue=te("quickInput.background",Pc,F("pickerBackground","Quick picker background color. The quick picker widget is the container for pickers like the command palette.")),cqe=te("quickInput.foreground",H3,F("pickerForeground","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.")),hqe=te("quickInputTitle.background",{dark:new Je(new Qn(255,255,255,.105)),light:new Je(new Qn(0,0,0,.06)),hcDark:"#000000",hcLight:Je.white},F("pickerTitleBackground","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.")),yNe=te("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hcDark:Je.white,hcLight:"#0F4A85"},F("pickerGroupForeground","Quick picker color for grouping labels.")),uqe=te("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hcDark:Je.white,hcLight:"#0F4A85"},F("pickerGroupBorder","Quick picker color for grouping borders.")),wue=te("quickInput.list.focusBackground",null,"",void 0,F("quickInput.list.focusBackground deprecation","Please use quickInputList.focusBackground instead")),lL=te("quickInputList.focusForeground",rL,F("quickInput.listFocusForeground","Quick picker foreground color for the focused item.")),moe=te("quickInputList.focusIconForeground",NNe,F("quickInput.listFocusIconForeground","Quick picker icon foreground color for the focused item.")),aL=te("quickInputList.focusBackground",{dark:nL(wue,NN),light:nL(wue,NN),hcDark:null,hcLight:null},F("quickInput.listFocusBackground","Quick picker background color for the focused item."));te("search.resultsInfoForeground",{light:en,dark:Oi(en,.65),hcDark:en,hcLight:en},F("search.resultsInfoForeground","Color of the text in the search viewlet's completion message."));te("searchEditor.findMatchBackground",{light:Oi(Qf,.66),dark:Oi(Qf,.66),hcDark:Qf,hcLight:Qf},F("searchEditor.queryMatch","Color of the Search Editor query matches."));te("searchEditor.findMatchBorder",{light:Oi(OU,.66),dark:Oi(OU,.66),hcDark:OU,hcLight:OU},F("searchEditor.editorFindMatchBorder","Border color of the Search Editor query matches."));var mqe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Tue=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const t0=un("hoverService");let wy=class extends be{get delay(){return this.isInstantlyHovering()?0:this._delay}constructor(e,t,i={},n,o){super(),this.placement=e,this.instantHover=t,this.overrideOptions=i,this.configurationService=n,this.hoverService=o,this.lastHoverHideTime=0,this.timeLimit=200,this.hoverDisposables=this._register(new De),this._delay=this.configurationService.getValue("workbench.hover.delay"),this._register(this.configurationService.onDidChangeConfiguration(r=>{r.affectsConfiguration("workbench.hover.delay")&&(this._delay=this.configurationService.getValue("workbench.hover.delay"))}))}showHover(e,t){const i=typeof this.overrideOptions=="function"?this.overrideOptions(e,t):this.overrideOptions;this.hoverDisposables.clear();const n=Cr(e.target)?[e.target]:e.target.targetElements;for(const r of n)this.hoverDisposables.add(Fo(r,"keydown",l=>{l.equals(9)&&this.hoverService.hideHover()}));const o=Cr(e.content)?void 0:e.content.toString();return this.hoverService.showHover({...e,...i,persistence:{hideOnKeyDown:!0,...i.persistence},id:o,appearance:{...e.appearance,compact:!0,skipFadeInAnimation:this.isInstantlyHovering(),...i.appearance}},t)}isInstantlyHovering(){return this.instantHover&&Date.now()-this.lastHoverHideTime<this.timeLimit}onDidHideHover(){this.hoverDisposables.clear(),this.instantHover&&(this.lastHoverHideTime=Date.now())}};wy=mqe([Tue(3,Hi),Tue(4,t0)],wy);const ab=un("contextViewService"),Uc=un("contextMenuService");const qn=un("keybindingService");class UM{constructor(){this._hooks=new De,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(e,t){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;const i=this._onStopCallback;this._onStopCallback=null,e&&i&&i(t)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(e,t,i,n,o){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=n,this._onStopCallback=o;let r=e;try{e.setPointerCapture(t),this._hooks.add(ei(()=>{try{e.releasePointerCapture(t)}catch{}}))}catch{r=ai(e)}this._hooks.add(Te(r,ut.POINTER_MOVE,l=>{if(l.buttons!==i){this.stopMonitoring(!0);return}l.preventDefault(),this._pointerMoveCallback(l)})),this._hooks.add(Te(r,ut.POINTER_UP,l=>this.stopMonitoring(!0)))}}function Po(s,e,t){let i=null,n=null;if(typeof t.value=="function"?(i="value",n=t.value,n.length!==0&&console.warn("Memoize should only be used in functions with zero parameters")):typeof t.get=="function"&&(i="get",n=t.get),!n)throw new Error("not supported");const o=`$memoize$${e}`;t[i]=function(...r){return this.hasOwnProperty(o)||Object.defineProperty(this,o,{configurable:!1,enumerable:!1,writable:!1,value:n.apply(this,r)}),this[o]}}var pqe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vs;(function(s){s.Tap="-monaco-gesturetap",s.Change="-monaco-gesturechange",s.Start="-monaco-gesturestart",s.End="-monaco-gesturesend",s.Contextmenu="-monaco-gesturecontextmenu"})(vs||(vs={}));const Sl=class Sl extends be{constructor(){super(),this.dispatched=!1,this.targets=new Ia,this.ignoreTargets=new Ia,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(Ut.runAndSubscribe(w3,({window:e,disposables:t})=>{t.add(Te(e.document,"touchstart",i=>this.onTouchStart(i),{passive:!1})),t.add(Te(e.document,"touchend",i=>this.onTouchEnd(e,i))),t.add(Te(e.document,"touchmove",i=>this.onTouchMove(i),{passive:!1}))},{window:Us,disposables:this._store}))}static addTarget(e){if(!Sl.isTouchDevice())return be.None;Sl.INSTANCE||(Sl.INSTANCE=new Sl);const t=Sl.INSTANCE.targets.push(e);return ei(t)}static ignoreTarget(e){if(!Sl.isTouchDevice())return be.None;Sl.INSTANCE||(Sl.INSTANCE=new Sl);const t=Sl.INSTANCE.ignoreTargets.push(e);return ei(t)}static isTouchDevice(){return"ontouchstart"in Us||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(e){const t=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let i=0,n=e.targetTouches.length;i<n;i++){const o=e.targetTouches.item(i);this.activeTouches[o.identifier]={id:o.identifier,initialTarget:o.target,initialTimeStamp:t,initialPageX:o.pageX,initialPageY:o.pageY,rollingTimestamps:[t],rollingPageX:[o.pageX],rollingPageY:[o.pageY]};const r=this.newGestureEvent(vs.Start,o.target);r.pageX=o.pageX,r.pageY=o.pageY,this.dispatchEvent(r)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}onTouchEnd(e,t){const i=Date.now(),n=Object.keys(this.activeTouches).length;for(let o=0,r=t.changedTouches.length;o<r;o++){const l=t.changedTouches.item(o);if(!this.activeTouches.hasOwnProperty(String(l.identifier))){console.warn("move of an UNKNOWN touch",l);continue}const a=this.activeTouches[l.identifier],d=Date.now()-a.initialTimeStamp;if(d<Sl.HOLD_DELAY&&Math.abs(a.initialPageX-Fh(a.rollingPageX))<30&&Math.abs(a.initialPageY-Fh(a.rollingPageY))<30){const c=this.newGestureEvent(vs.Tap,a.initialTarget);c.pageX=Fh(a.rollingPageX),c.pageY=Fh(a.rollingPageY),this.dispatchEvent(c)}else if(d>=Sl.HOLD_DELAY&&Math.abs(a.initialPageX-Fh(a.rollingPageX))<30&&Math.abs(a.initialPageY-Fh(a.rollingPageY))<30){const c=this.newGestureEvent(vs.Contextmenu,a.initialTarget);c.pageX=Fh(a.rollingPageX),c.pageY=Fh(a.rollingPageY),this.dispatchEvent(c)}else if(n===1){const c=Fh(a.rollingPageX),h=Fh(a.rollingPageY),u=Fh(a.rollingTimestamps)-a.rollingTimestamps[0],m=c-a.rollingPageX[0],p=h-a.rollingPageY[0],g=[...this.targets].filter(f=>a.initialTarget instanceof Node&&f.contains(a.initialTarget));this.inertia(e,g,i,Math.abs(m)/u,m>0?1:-1,c,Math.abs(p)/u,p>0?1:-1,h)}this.dispatchEvent(this.newGestureEvent(vs.End,a.initialTarget)),delete this.activeTouches[l.identifier]}this.dispatched&&(t.preventDefault(),t.stopPropagation(),this.dispatched=!1)}newGestureEvent(e,t){const i=document.createEvent("CustomEvent");return i.initEvent(e,!1,!0),i.initialTarget=t,i.tapCount=0,i}dispatchEvent(e){if(e.type===vs.Tap){const t=new Date().getTime();let i=0;t-this._lastSetTapCountTime>Sl.CLEAR_TAP_COUNT_TIME?i=1:i=2,this._lastSetTapCountTime=t,e.tapCount=i}else(e.type===vs.Change||e.type===vs.Contextmenu)&&(this._lastSetTapCountTime=0);if(e.initialTarget instanceof Node){for(const i of this.ignoreTargets)if(i.contains(e.initialTarget))return;const t=[];for(const i of this.targets)if(i.contains(e.initialTarget)){let n=0,o=e.initialTarget;for(;o&&o!==i;)n++,o=o.parentElement;t.push([n,i])}t.sort((i,n)=>i[0]-n[0]);for(const[i,n]of t)n.dispatchEvent(e),this.dispatched=!0}}inertia(e,t,i,n,o,r,l,a,d){this.handle=fc(e,()=>{const c=Date.now(),h=c-i;let u=0,m=0,p=!0;n+=Sl.SCROLL_FRICTION*h,l+=Sl.SCROLL_FRICTION*h,n>0&&(p=!1,u=o*n*h),l>0&&(p=!1,m=a*l*h);const g=this.newGestureEvent(vs.Change);g.translationX=u,g.translationY=m,t.forEach(f=>f.dispatchEvent(g)),p||this.inertia(e,t,c,n,o,r+u,l,a,d+m)})}onTouchMove(e){const t=Date.now();for(let i=0,n=e.changedTouches.length;i<n;i++){const o=e.changedTouches.item(i);if(!this.activeTouches.hasOwnProperty(String(o.identifier))){console.warn("end of an UNKNOWN touch",o);continue}const r=this.activeTouches[o.identifier],l=this.newGestureEvent(vs.Change,r.initialTarget);l.translationX=o.pageX-Fh(r.rollingPageX),l.translationY=o.pageY-Fh(r.rollingPageY),l.pageX=o.pageX,l.pageY=o.pageY,this.dispatchEvent(l),r.rollingPageX.length>3&&(r.rollingPageX.shift(),r.rollingPageY.shift(),r.rollingTimestamps.shift()),r.rollingPageX.push(o.pageX),r.rollingPageY.push(o.pageY),r.rollingTimestamps.push(t)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}};Sl.SCROLL_FRICTION=-.005,Sl.HOLD_DELAY=700,Sl.CLEAR_TAP_COUNT_TIME=400;let Hl=Sl;pqe([Po],Hl,"isTouchDevice",null);let ch=class extends be{onclick(e,t){this._register(Te(e,ut.CLICK,i=>t(new _u(ai(e),i))))}onmousedown(e,t){this._register(Te(e,ut.MOUSE_DOWN,i=>t(new _u(ai(e),i))))}onmouseover(e,t){this._register(Te(e,ut.MOUSE_OVER,i=>t(new _u(ai(e),i))))}onmouseleave(e,t){this._register(Te(e,ut.MOUSE_LEAVE,i=>t(new _u(ai(e),i))))}onkeydown(e,t){this._register(Te(e,ut.KEY_DOWN,i=>t(new Ts(i))))}onkeyup(e,t){this._register(Te(e,ut.KEY_UP,i=>t(new Ts(i))))}oninput(e,t){this._register(Te(e,ut.INPUT,t))}onblur(e,t){this._register(Te(e,ut.BLUR,t))}onfocus(e,t){this._register(Te(e,ut.FOCUS,t))}ignoreGesture(e){return Hl.ignoreTarget(e)}};const Ty=11;class gqe extends ch{constructor(e){super(),this._onActivate=e.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=e.bgWidth+"px",this.bgDomNode.style.height=e.bgHeight+"px",typeof e.top<"u"&&(this.bgDomNode.style.top="0px"),typeof e.left<"u"&&(this.bgDomNode.style.left="0px"),typeof e.bottom<"u"&&(this.bgDomNode.style.bottom="0px"),typeof e.right<"u"&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=e.className,this.domNode.classList.add(...ui.asClassNameArray(e.icon)),this.domNode.style.position="absolute",this.domNode.style.width=Ty+"px",this.domNode.style.height=Ty+"px",typeof e.top<"u"&&(this.domNode.style.top=e.top+"px"),typeof e.left<"u"&&(this.domNode.style.left=e.left+"px"),typeof e.bottom<"u"&&(this.domNode.style.bottom=e.bottom+"px"),typeof e.right<"u"&&(this.domNode.style.right=e.right+"px"),this._pointerMoveMonitor=this._register(new UM),this._register(Fo(this.bgDomNode,ut.POINTER_DOWN,t=>this._arrowPointerDown(t))),this._register(Fo(this.domNode,ut.POINTER_DOWN,t=>this._arrowPointerDown(t))),this._pointerdownRepeatTimer=this._register(new xse),this._pointerdownScheduleRepeatTimer=this._register(new om)}_arrowPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24,ai(e))};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(t,200),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,i=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),e.preventDefault()}}class fqe extends be{constructor(e,t,i){super(),this._visibility=e,this._visibleClassName=t,this._invisibleClassName=i,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._rawShouldBeVisible=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new om)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this._updateShouldBeVisible())}setShouldBeVisible(e){this._rawShouldBeVisible=e,this._updateShouldBeVisible()}_applyVisibilitySetting(){return this._visibility===2?!1:this._visibility===3?!0:this._rawShouldBeVisible}_updateShouldBeVisible(){const e=this._applyVisibilitySetting();this._shouldBeVisible!==e&&(this._shouldBeVisible=e,this.ensureVisibility())}setIsNeeded(e){this._isNeeded!==e&&(this._isNeeded=e,this.ensureVisibility())}setDomNode(e){this._domNode=e,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){if(!this._isNeeded){this._hide(!1);return}this._shouldBeVisible?this._reveal():this._hide(!0)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet(()=>{var e;(e=this._domNode)==null||e.setClassName(this._visibleClassName)},0))}_hide(e){var t;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(t=this._domNode)==null||t.setClassName(this._invisibleClassName+(e?" fade":"")))}}const bqe=140;class QNe extends ch{constructor(e){super(),this._lazyRender=e.lazyRender,this._host=e.host,this._scrollable=e.scrollable,this._scrollByPage=e.scrollByPage,this._scrollbarState=e.scrollbarState,this._visibilityController=this._register(new fqe(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new UM),this._shouldRender=!0,this.domNode=Kn(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this._register(Te(this.domNode.domNode,ut.POINTER_DOWN,t=>this._domNodePointerDown(t)))}_createArrow(e){const t=this._register(new gqe(e));this.domNode.domNode.appendChild(t.bgDomNode),this.domNode.domNode.appendChild(t.domNode)}_createSlider(e,t,i,n){this.slider=Kn(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(t),typeof i=="number"&&this.slider.setWidth(i),typeof n=="number"&&this.slider.setHeight(n),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(Te(this.slider.domNode,ut.POINTER_DOWN,o=>{o.button===0&&(o.preventDefault(),this._sliderPointerDown(o))})),this.onclick(this.slider.domNode,o=>{o.leftButton&&o.stopPropagation()})}_onElementSize(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(e){e.target===this.domNode.domNode&&this._onPointerDown(e)}delegatePointerDown(e){const t=this.domNode.domNode.getClientRects()[0].top,i=t+this._scrollbarState.getSliderPosition(),n=t+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),o=this._sliderPointerPosition(e);i<=o&&o<=n?e.button===0&&(e.preventDefault(),this._sliderPointerDown(e)):this._onPointerDown(e)}_onPointerDown(e){let t,i;if(e.target===this.domNode.domNode&&typeof e.offsetX=="number"&&typeof e.offsetY=="number")t=e.offsetX,i=e.offsetY;else{const o=Lo(this.domNode.domNode);t=e.pageX-o.left,i=e.pageY-o.top}const n=this._pointerDownRelativePosition(t,i);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(n):this._scrollbarState.getDesiredScrollPositionFromOffset(n)),e.button===0&&(e.preventDefault(),this._sliderPointerDown(e))}_sliderPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._sliderPointerPosition(e),i=this._sliderOrthogonalPointerPosition(e),n=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,o=>{const r=this._sliderOrthogonalPointerPosition(o),l=Math.abs(r-i);if(Tl&&l>bqe){this._setDesiredScrollPositionNow(n.getScrollPosition());return}const d=this._sliderPointerPosition(o)-t;this._setDesiredScrollPositionNow(n.getDesiredScrollPositionFromDelta(d))},()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(e){const t={};this.writeScrollPosition(t,e),this._scrollable.setScrollPositionNow(t)}updateScrollbarSize(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}}const Uqe=20;class Cy{constructor(e,t,i,n,o,r){this._scrollbarSize=Math.round(t),this._oppositeScrollbarSize=Math.round(i),this._arrowSize=Math.round(e),this._visibleSize=n,this._scrollSize=o,this._scrollPosition=r,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new Cy(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(e){const t=Math.round(e);return this._visibleSize!==t?(this._visibleSize=t,this._refreshComputedValues(),!0):!1}setScrollSize(e){const t=Math.round(e);return this._scrollSize!==t?(this._scrollSize=t,this._refreshComputedValues(),!0):!1}setScrollPosition(e){const t=Math.round(e);return this._scrollPosition!==t?(this._scrollPosition=t,this._refreshComputedValues(),!0):!1}setScrollbarSize(e){this._scrollbarSize=Math.round(e)}setOppositeScrollbarSize(e){this._oppositeScrollbarSize=Math.round(e)}static _computeValues(e,t,i,n,o){const r=Math.max(0,i-e),l=Math.max(0,r-2*t),a=n>0&&n>i;if(!a)return{computedAvailableSize:Math.round(r),computedIsNeeded:a,computedSliderSize:Math.round(l),computedSliderRatio:0,computedSliderPosition:0};const d=Math.round(Math.max(Uqe,Math.floor(i*l/n))),c=(l-d)/(n-i),h=o*c;return{computedAvailableSize:Math.round(r),computedIsNeeded:a,computedSliderSize:Math.round(d),computedSliderRatio:c,computedSliderPosition:Math.round(h)}}_refreshComputedValues(){const e=Cy._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=e.computedAvailableSize,this._computedIsNeeded=e.computedIsNeeded,this._computedSliderSize=e.computedSliderSize,this._computedSliderRatio=e.computedSliderRatio,this._computedSliderPosition=e.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize-this._computedSliderSize/2;return Math.round(t/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize;let i=this._scrollPosition;return t<this._computedSliderPosition?i-=this._visibleSize:i+=this._visibleSize,i}getDesiredScrollPositionFromDelta(e){if(!this._computedIsNeeded)return 0;const t=this._computedSliderPosition+e;return Math.round(t/this._computedSliderRatio)}}class Fqe extends QNe{constructor(e,t,i){const n=e.getScrollDimensions(),o=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new Cy(t.horizontalHasArrows?t.arrowSize:0,t.horizontal===2?0:t.horizontalScrollbarSize,t.vertical===2?0:t.verticalScrollbarSize,n.width,n.scrollWidth,o.scrollLeft),visibility:t.horizontal,extraScrollbarClassName:"horizontal",scrollable:e,scrollByPage:t.scrollByPage}),t.horizontalHasArrows){const r=(t.arrowSize-Ty)/2,l=(t.horizontalScrollbarSize-Ty)/2;this._createArrow({className:"scra",icon:ct.scrollbarButtonLeft,top:l,left:r,bottom:void 0,right:void 0,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new FN(null,1,0))}),this._createArrow({className:"scra",icon:ct.scrollbarButtonRight,top:l,left:void 0,bottom:void 0,right:r,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new FN(null,-1,0))})}this._createSlider(Math.floor((t.horizontalScrollbarSize-t.horizontalSliderSize)/2),0,void 0,t.horizontalSliderSize)}_updateSlider(e,t){this.slider.setWidth(e),this.slider.setLeft(t)}_renderDomNode(e,t){this.domNode.setWidth(e),this.domNode.setHeight(t),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(e.width)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return e}_sliderPointerPosition(e){return e.pageX}_sliderOrthogonalPointerPosition(e){return e.pageY}_updateScrollbarSize(e){this.slider.setHeight(e)}writeScrollPosition(e,t){e.scrollLeft=t}updateOptions(e){this.updateScrollbarSize(e.horizontal===2?0:e.horizontalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(e.vertical===2?0:e.verticalScrollbarSize),this._visibilityController.setVisibility(e.horizontal),this._scrollByPage=e.scrollByPage}}class Aqe extends QNe{constructor(e,t,i){const n=e.getScrollDimensions(),o=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new Cy(t.verticalHasArrows?t.arrowSize:0,t.vertical===2?0:t.verticalScrollbarSize,0,n.height,n.scrollHeight,o.scrollTop),visibility:t.vertical,extraScrollbarClassName:"vertical",scrollable:e,scrollByPage:t.scrollByPage}),t.verticalHasArrows){const r=(t.arrowSize-Ty)/2,l=(t.verticalScrollbarSize-Ty)/2;this._createArrow({className:"scra",icon:ct.scrollbarButtonUp,top:r,left:l,bottom:void 0,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new FN(null,0,1))}),this._createArrow({className:"scra",icon:ct.scrollbarButtonDown,top:void 0,left:l,bottom:r,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new FN(null,0,-1))})}this._createSlider(0,Math.floor((t.verticalScrollbarSize-t.verticalSliderSize)/2),t.verticalSliderSize,void 0)}_updateSlider(e,t){this.slider.setHeight(e),this.slider.setTop(t)}_renderDomNode(e,t){this.domNode.setWidth(t),this.domNode.setHeight(e),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(e.height)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return t}_sliderPointerPosition(e){return e.pageY}_sliderOrthogonalPointerPosition(e){return e.pageX}_updateScrollbarSize(e){this.slider.setWidth(e)}writeScrollPosition(e,t){e.scrollTop=t}updateOptions(e){this.updateScrollbarSize(e.vertical===2?0:e.verticalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(0),this._visibilityController.setVisibility(e.vertical),this._scrollByPage=e.scrollByPage}}class QX{constructor(e,t,i,n,o,r,l){this._forceIntegerValues=e,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t=t|0,i=i|0,n=n|0,o=o|0,r=r|0,l=l|0),this.rawScrollLeft=n,this.rawScrollTop=l,t<0&&(t=0),n+t>i&&(n=i-t),n<0&&(n=0),o<0&&(o=0),l+o>r&&(l=r-o),l<0&&(l=0),this.width=t,this.scrollWidth=i,this.scrollLeft=n,this.height=o,this.scrollHeight=r,this.scrollTop=l}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,t){return new QX(this._forceIntegerValues,typeof e.width<"u"?e.width:this.width,typeof e.scrollWidth<"u"?e.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,typeof e.height<"u"?e.height:this.height,typeof e.scrollHeight<"u"?e.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new QX(this._forceIntegerValues,this.width,this.scrollWidth,typeof e.scrollLeft<"u"?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof e.scrollTop<"u"?e.scrollTop:this.rawScrollTop)}createScrollEvent(e,t){const i=this.width!==e.width,n=this.scrollWidth!==e.scrollWidth,o=this.scrollLeft!==e.scrollLeft,r=this.height!==e.height,l=this.scrollHeight!==e.scrollHeight,a=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:t,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:i,scrollWidthChanged:n,scrollLeftChanged:o,heightChanged:r,scrollHeightChanged:l,scrollTopChanged:a}}}class FM extends be{constructor(e){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new fe),this.onScroll=this._onScroll.event,this._smoothScrollDuration=e.smoothScrollDuration,this._scheduleAtNextAnimationFrame=e.scheduleAtNextAnimationFrame,this._state=new QX(e.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(e){this._smoothScrollDuration=e}validateScrollPosition(e){return this._state.withScrollPosition(e)}getScrollDimensions(){return this._state}setScrollDimensions(e,t){var n;const i=this._state.withScrollDimensions(e,t);this._setState(i,!!this._smoothScrolling),(n=this._smoothScrolling)==null||n.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(e){const t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(e,t){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:typeof e.scrollLeft>"u"?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:typeof e.scrollTop>"u"?this._smoothScrolling.to.scrollTop:e.scrollTop};const i=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===i.scrollLeft&&this._smoothScrolling.to.scrollTop===i.scrollTop)return;let n;t?n=new dL(this._smoothScrolling.from,i,this._smoothScrolling.startTime,this._smoothScrolling.duration):n=this._smoothScrolling.combine(this._state,i,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=n}else{const i=this._state.withScrollPosition(e);this._smoothScrolling=dL.start(this._state,i,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;const e=this._smoothScrolling.tick(),t=this._state.withScrollPosition(e);if(this._setState(t,!0),!!this._smoothScrolling){if(e.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(e,t){const i=this._state;i.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(i,t)))}}class Cue{constructor(e,t,i){this.scrollLeft=e,this.scrollTop=t,this.isDone=i}}function hP(s,e){const t=e-s;return function(i){return s+t*Nqe(i)}}function Zqe(s,e,t){return function(i){return i<t?s(i/t):e((i-t)/(1-t))}}class dL{constructor(e,t,i,n){this.from=e,this.to=t,this.duration=n,this.startTime=i,this.animationFrameDisposable=null,this._initAnimations()}_initAnimations(){this.scrollLeft=this._initAnimation(this.from.scrollLeft,this.to.scrollLeft,this.to.width),this.scrollTop=this._initAnimation(this.from.scrollTop,this.to.scrollTop,this.to.height)}_initAnimation(e,t,i){if(Math.abs(e-t)>2.5*i){let o,r;return e<t?(o=e+.75*i,r=t-.75*i):(o=e-.75*i,r=t+.75*i),Zqe(hP(e,o),hP(r,t),.33)}return hP(e,t)}dispose(){this.animationFrameDisposable!==null&&(this.animationFrameDisposable.dispose(),this.animationFrameDisposable=null)}acceptScrollDimensions(e){this.to=e.withScrollPosition(this.to),this._initAnimations()}tick(){return this._tick(Date.now())}_tick(e){const t=(e-this.startTime)/this.duration;if(t<1){const i=this.scrollLeft(t),n=this.scrollTop(t);return new Cue(i,n,!1)}return new Cue(this.to.scrollLeft,this.to.scrollTop,!0)}combine(e,t,i){return dL.start(e,t,i)}static start(e,t,i){i=i+10;const n=Date.now()-10;return new dL(e,t,n,i)}}function Sqe(s){return Math.pow(s,3)}function Nqe(s){return 1-Sqe(1-s)}const Rqe=500,Bue=50;class Vqe{constructor(e,t,i){this.timestamp=e,this.deltaX=t,this.deltaY=i,this.score=0}}const L_=class L_{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(this._front===-1&&this._rear===-1)return!1;let e=1,t=0,i=1,n=this._rear;do{const o=n===this._front?e:Math.pow(2,-i);if(e-=o,t+=this._memory[n].score*o,n===this._front)break;n=(this._capacity+n-1)%this._capacity,i++}while(!0);return t<=.5}acceptStandardWheelEvent(e){if(jv){const t=ai(e.browserEvent),i=XPe(t);this.accept(Date.now(),e.deltaX*i,e.deltaY*i)}else this.accept(Date.now(),e.deltaX,e.deltaY)}accept(e,t,i){let n=null;const o=new Vqe(e,t,i);this._front===-1&&this._rear===-1?(this._memory[0]=o,this._front=0,this._rear=0):(n=this._memory[this._rear],this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=o),o.score=this._computeScore(o,n)}_computeScore(e,t){if(Math.abs(e.deltaX)>0&&Math.abs(e.deltaY)>0)return 1;let i=.5;if((!this._isAlmostInt(e.deltaX)||!this._isAlmostInt(e.deltaY))&&(i+=.25),t){const n=Math.abs(e.deltaX),o=Math.abs(e.deltaY),r=Math.abs(t.deltaX),l=Math.abs(t.deltaY),a=Math.max(Math.min(n,r),1),d=Math.max(Math.min(o,l),1),c=Math.max(n,r),h=Math.max(o,l);c%a===0&&h%d===0&&(i-=.5)}return Math.min(Math.max(i,0),1)}_isAlmostInt(e){return Math.abs(Math.round(e)-e)<.01}};L_.INSTANCE=new L_;let MX=L_;class poe extends ch{get options(){return this._options}constructor(e,t,i){super(),this._onScroll=this._register(new fe),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new fe),e.style.overflow="hidden",this._options=Wqe(t),this._scrollable=i,this._register(this._scrollable.onScroll(o=>{this._onWillScroll.fire(o),this._onDidScroll(o),this._onScroll.fire(o)}));const n={onMouseWheel:o=>this._onMouseWheel(o),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new Aqe(this._scrollable,this._options,n)),this._horizontalScrollbar=this._register(new Fqe(this._scrollable,this._options,n)),this._domNode=document.createElement("div"),this._domNode.className="monaco-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.style.overflow="hidden",this._domNode.appendChild(e),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=Kn(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=Kn(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=Kn(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,o=>this._onMouseOver(o)),this.onmouseleave(this._listenOnDomNode,o=>this._onMouseLeave(o)),this._hideTimeout=this._register(new om),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=Ws(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(e){this._verticalScrollbar.delegatePointerDown(e)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(e){this._scrollable.setScrollDimensions(e,!1)}updateClassName(e){this._options.className=e,hn&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}updateOptions(e){typeof e.handleMouseWheel<"u"&&(this._options.handleMouseWheel=e.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof e.mouseWheelScrollSensitivity<"u"&&(this._options.mouseWheelScrollSensitivity=e.mouseWheelScrollSensitivity),typeof e.fastScrollSensitivity<"u"&&(this._options.fastScrollSensitivity=e.fastScrollSensitivity),typeof e.scrollPredominantAxis<"u"&&(this._options.scrollPredominantAxis=e.scrollPredominantAxis),typeof e.horizontal<"u"&&(this._options.horizontal=e.horizontal),typeof e.vertical<"u"&&(this._options.vertical=e.vertical),typeof e.horizontalScrollbarSize<"u"&&(this._options.horizontalScrollbarSize=e.horizontalScrollbarSize),typeof e.verticalScrollbarSize<"u"&&(this._options.verticalScrollbarSize=e.verticalScrollbarSize),typeof e.scrollByPage<"u"&&(this._options.scrollByPage=e.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}delegateScrollFromMouseWheelEvent(e){this._onMouseWheel(new FN(e))}_setListeningToMouseWheel(e){if(this._mouseWheelToDispose.length>0!==e&&(this._mouseWheelToDispose=Ws(this._mouseWheelToDispose),e)){const i=n=>{this._onMouseWheel(new FN(n))};this._mouseWheelToDispose.push(Te(this._listenOnDomNode,ut.MOUSE_WHEEL,i,{passive:!1}))}}_onMouseWheel(e){var o;if((o=e.browserEvent)!=null&&o.defaultPrevented)return;const t=MX.INSTANCE;t.acceptStandardWheelEvent(e);let i=!1;if(e.deltaY||e.deltaX){let r=e.deltaY*this._options.mouseWheelScrollSensitivity,l=e.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&l+r===0?l=r=0:Math.abs(r)>=Math.abs(l)?l=0:r=0),this._options.flipAxes&&([r,l]=[l,r]);const a=!hn&&e.browserEvent&&e.browserEvent.shiftKey;(this._options.scrollYToX||a)&&!l&&(l=r,r=0),e.browserEvent&&e.browserEvent.altKey&&(l=l*this._options.fastScrollSensitivity,r=r*this._options.fastScrollSensitivity);const d=this._scrollable.getFutureScrollPosition();let c={};if(r){const h=Bue*r,u=d.scrollTop-(h<0?Math.floor(h):Math.ceil(h));this._verticalScrollbar.writeScrollPosition(c,u)}if(l){const h=Bue*l,u=d.scrollLeft-(h<0?Math.floor(h):Math.ceil(h));this._horizontalScrollbar.writeScrollPosition(c,u)}c=this._scrollable.validateScrollPosition(c),(d.scrollLeft!==c.scrollLeft||d.scrollTop!==c.scrollTop)&&(this._options.mouseWheelSmoothScroll&&t.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(c):this._scrollable.setScrollPositionNow(c),i=!0)}let n=i;!n&&this._options.alwaysConsumeMouseWheel&&(n=!0),!n&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(n=!0),n&&(e.preventDefault(),e.stopPropagation())}_onDidScroll(e){this._shouldRender=this._horizontalScrollbar.onDidScroll(e)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(e)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){const e=this._scrollable.getCurrentScrollPosition(),t=e.scrollTop>0,i=e.scrollLeft>0,n=i?" left":"",o=t?" top":"",r=i||t?" top-left-corner":"";this._leftShadowDomNode.setClassName(`shadow${n}`),this._topShadowDomNode.setClassName(`shadow${o}`),this._topLeftShadowDomNode.setClassName(`shadow${r}${o}${n}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(e){this._mouseIsOver=!1,this._hide()}_onMouseOver(e){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){!this._mouseIsOver&&!this._isDragging&&(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){!this._mouseIsOver&&!this._isDragging&&this._hideTimeout.cancelAndSet(()=>this._hide(),Rqe)}}class MNe extends poe{constructor(e,t){t=t||{},t.mouseWheelSmoothScroll=!1;const i=new FM({forceIntegerValues:!0,smoothScrollDuration:0,scheduleAtNextAnimationFrame:n=>fc(ai(e),n)});super(e,t,i),this._register(i)}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}}class i9 extends poe{constructor(e,t,i){super(e,t,i)}setScrollPosition(e){e.reuseAnimation?this._scrollable.setScrollPositionSmooth(e,e.reuseAnimation):this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}class ek extends poe{constructor(e,t){t=t||{},t.mouseWheelSmoothScroll=!1;const i=new FM({forceIntegerValues:!1,smoothScrollDuration:0,scheduleAtNextAnimationFrame:n=>fc(ai(e),n)});super(e,t,i),this._register(i),this._element=e,this._register(this.onScroll(n=>{n.scrollTopChanged&&(this._element.scrollTop=n.scrollTop),n.scrollLeftChanged&&(this._element.scrollLeft=n.scrollLeft)})),this.scanDomNode()}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}scanDomNode(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}function Wqe(s){const e={lazyRender:typeof s.lazyRender<"u"?s.lazyRender:!1,className:typeof s.className<"u"?s.className:"",useShadows:typeof s.useShadows<"u"?s.useShadows:!0,handleMouseWheel:typeof s.handleMouseWheel<"u"?s.handleMouseWheel:!0,flipAxes:typeof s.flipAxes<"u"?s.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof s.consumeMouseWheelIfScrollbarIsNeeded<"u"?s.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof s.alwaysConsumeMouseWheel<"u"?s.alwaysConsumeMouseWheel:!1,scrollYToX:typeof s.scrollYToX<"u"?s.scrollYToX:!1,mouseWheelScrollSensitivity:typeof s.mouseWheelScrollSensitivity<"u"?s.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof s.fastScrollSensitivity<"u"?s.fastScrollSensitivity:5,scrollPredominantAxis:typeof s.scrollPredominantAxis<"u"?s.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof s.mouseWheelSmoothScroll<"u"?s.mouseWheelSmoothScroll:!0,arrowSize:typeof s.arrowSize<"u"?s.arrowSize:11,listenOnDomNode:typeof s.listenOnDomNode<"u"?s.listenOnDomNode:null,horizontal:typeof s.horizontal<"u"?s.horizontal:1,horizontalScrollbarSize:typeof s.horizontalScrollbarSize<"u"?s.horizontalScrollbarSize:10,horizontalSliderSize:typeof s.horizontalSliderSize<"u"?s.horizontalSliderSize:0,horizontalHasArrows:typeof s.horizontalHasArrows<"u"?s.horizontalHasArrows:!1,vertical:typeof s.vertical<"u"?s.vertical:1,verticalScrollbarSize:typeof s.verticalScrollbarSize<"u"?s.verticalScrollbarSize:10,verticalHasArrows:typeof s.verticalHasArrows<"u"?s.verticalHasArrows:!1,verticalSliderSize:typeof s.verticalSliderSize<"u"?s.verticalSliderSize:0,scrollByPage:typeof s.scrollByPage<"u"?s.scrollByPage:!1};return e.horizontalSliderSize=typeof s.horizontalSliderSize<"u"?s.horizontalSliderSize:e.horizontalScrollbarSize,e.verticalSliderSize=typeof s.verticalSliderSize<"u"?s.verticalSliderSize:e.verticalScrollbarSize,hn&&(e.className+=" mac"),e}const $x=gt;let goe=class extends be{constructor(){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this.scrollbar=this._register(new ek(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}};class n9 extends be{static render(e,t,i){return new n9(e,t,i)}constructor(e,t,i){super(),this.actionLabel=t.label,this.actionKeybindingLabel=i,this.actionContainer=nt(e,$x("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=nt(this.actionContainer,$x("a.action")),this.action.setAttribute("role","button"),t.iconClass&&nt(this.action,$x(`span.icon.${t.iconClass}`));const n=nt(this.action,$x("span"));n.textContent=i?`${t.label} (${i})`:t.label,this._store.add(new TNe(this.actionContainer,t.run)),this._store.add(new CNe(this.actionContainer,t.run,[3,10])),this.setEnabled(!0)}setEnabled(e){e?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}function wNe(s,e){return s&&e?F("acessibleViewHint","Inspect this in the accessible view with {0}.",e):s?F("acessibleViewHintNoKbOpen","Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."):""}class TNe extends be{constructor(e,t){super(),this._register(Te(e,ut.CLICK,i=>{i.stopPropagation(),i.preventDefault(),t(e)}))}}class CNe extends be{constructor(e,t,i){super(),this._register(Te(e,ut.KEY_DOWN,n=>{const o=new Ts(n);i.some(r=>o.equals(r))&&(n.stopPropagation(),n.preventDefault(),t(e))}))}}const Bd=un("openerService");function yqe(s){let e;const t=/^L?(\d+)(?:,(\d+))?(-L?(\d+)(?:,(\d+))?)?/.exec(s.fragment);return t&&(e={startLineNumber:parseInt(t[1]),startColumn:t[2]?parseInt(t[2]):1,endLineNumber:t[4]?parseInt(t[4]):void 0,endColumn:t[4]?t[5]?parseInt(t[5]):1:void 0},s=s.with({fragment:""})),{selection:e,uri:s}}class fn{get event(){return this.emitter.event}constructor(e,t,i){const n=o=>this.emitter.fire(o);this.emitter=new fe({onWillAddFirstListener:()=>e.addEventListener(t,n,i),onDidRemoveLastListener:()=>e.removeEventListener(t,n,i)})}dispose(){this.emitter.dispose()}}function Qqe(s,e={}){const t=foe(e);return t.textContent=s,t}function Mqe(s,e={}){const t=foe(e);return BNe(t,Tqe(s,!!e.renderCodeSegments),e.actionHandler,e.renderCodeSegments),t}function foe(s){const e=s.inline?"span":"div",t=document.createElement(e);return s.className&&(t.className=s.className),t}class wqe{constructor(e){this.source=e,this.index=0}eos(){return this.index>=this.source.length}next(){const e=this.peek();return this.advance(),e}peek(){return this.source[this.index]}advance(){this.index++}}function BNe(s,e,t,i){let n;if(e.type===2)n=document.createTextNode(e.content||"");else if(e.type===3)n=document.createElement("b");else if(e.type===4)n=document.createElement("i");else if(e.type===7&&i)n=document.createElement("code");else if(e.type===5&&t){const o=document.createElement("a");t.disposables.add(Fo(o,"click",r=>{t.callback(String(e.index),r)})),n=o}else e.type===8?n=document.createElement("br"):e.type===1&&(n=s);n&&s!==n&&s.appendChild(n),n&&Array.isArray(e.children)&&e.children.forEach(o=>{BNe(n,o,t,i)})}function Tqe(s,e){const t={type:1,children:[]};let i=0,n=t;const o=[],r=new wqe(s);for(;!r.eos();){let l=r.next();const a=l==="\\"&&$8(r.peek(),e)!==0;if(a&&(l=r.next()),!a&&Cqe(l,e)&&l===r.peek()){r.advance(),n.type===2&&(n=o.pop());const d=$8(l,e);if(n.type===d||n.type===5&&d===6)n=o.pop();else{const c={type:d,children:[]};d===5&&(c.index=i,i++),n.children.push(c),o.push(n),n=c}}else if(l===`
- `)n.type===2&&(n=o.pop()),n.children.push({type:8});else if(n.type!==2){const d={type:2,content:l};n.children.push(d),o.push(n),n=d}else n.content+=l}return n.type===2&&(n=o.pop()),t}function Cqe(s,e){return $8(s,e)!==0}function $8(s,e){switch(s){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;case"`":return e?7:0;default:return 0}}const Bqe=new RegExp(`(\\\\)?\\$\\((${ui.iconNameExpression}(?:${ui.iconModifierExpression})?)\\)`,"g");function SF(s){const e=new Array;let t,i=0,n=0;for(;(t=Bqe.exec(s))!==null;){n=t.index||0,i<n&&e.push(s.substring(i,n)),i=(t.index||0)+t[0].length;const[,o,r]=t;e.push(o?`$(${r})`:RN({id:r}))}return i<s.length&&e.push(s.substring(i)),e}function RN(s){const e=gt("span");return e.classList.add(...ui.asClassNameArray(s)),e}function Lqe(s){const e=vqe(s);if(e&&e.length>0)return new Uint32Array(e)}let Cc=0;const ZU=new Uint32Array(10);function vqe(s){if(Cc=0,Vp(s,uP,4352),Cc>0||(Vp(s,mP,4449),Cc>0)||(Vp(s,pP,4520),Cc>0)||(Vp(s,NA,12593),Cc))return ZU.subarray(0,Cc);if(s>=44032&&s<=55203){const e=s-44032,t=e%588,i=Math.floor(e/588),n=Math.floor(t/28),o=t%28-1;if(i<uP.length?Vp(i,uP,0):4352+i-12593<NA.length&&Vp(4352+i,NA,12593),n<mP.length?Vp(n,mP,0):4449+n-12593<NA.length&&Vp(4449+n-12593,NA,12593),o>=0&&(o<pP.length?Vp(o,pP,0):4520+o-12593<NA.length&&Vp(4520+o-12593,NA,12593)),Cc>0)return ZU.subarray(0,Cc)}}function Vp(s,e,t){s>=t&&s<t+e.length&&kqe(e[s-t])}function kqe(s){s!==0&&(ZU[Cc++]=s&255,s>>8&&(ZU[Cc++]=s>>8&255),s>>16&&(ZU[Cc++]=s>>16&255))}const uP=new Uint8Array([114,82,115,101,69,102,97,113,81,116,84,100,119,87,99,122,120,118,103]),mP=new Uint16Array([107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]),pP=new Uint16Array([114,82,29810,115,30579,26483,101,102,29286,24934,29030,29798,30822,30310,26470,97,113,29809,116,84,100,119,99,122,120,118,103]),NA=new Uint16Array([114,82,29810,115,30579,26483,101,69,102,29286,24934,29030,29798,30822,30310,26470,97,113,81,29809,116,84,100,119,87,99,122,120,118,103,107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]);function boe(...s){return function(e,t){for(let i=0,n=s.length;i<n;i++){const o=s[i](e,t);if(o)return o}return null}}LNe.bind(void 0,!1);const cL=LNe.bind(void 0,!0);function LNe(s,e,t){if(!t||t.length<e.length)return null;let i;return s?i=yse(t,e):i=t.indexOf(e)===0,i?e.length>0?[{start:0,end:e.length}]:[]:null}function vNe(s,e){const t=e.toLowerCase().indexOf(s.toLowerCase());return t===-1?null:[{start:t,end:t+s.length}]}function kNe(s,e){return e6(s.toLowerCase(),e.toLowerCase(),0,0)}function e6(s,e,t,i){if(t===s.length)return[];if(i===e.length)return null;if(s[t]===e[i]){let n=null;return(n=e6(s,e,t+1,i+1))?Aoe({start:i,end:i+1},n):null}return e6(s,e,t,i+1)}function Uoe(s){return 97<=s&&s<=122}function s9(s){return 65<=s&&s<=90}function Foe(s){return 48<=s&&s<=57}function xNe(s){return s===32||s===9||s===10||s===13}const INe=new Set;"()[]{}<>`'\"-/;:,.?!".split("").forEach(s=>INe.add(s.charCodeAt(0)));function wX(s){return xNe(s)||INe.has(s)}function Lue(s,e){return s===e||wX(s)&&wX(e)}const gP=new Map;function vue(s){if(gP.has(s))return gP.get(s);let e;const t=Lqe(s);return t&&(e=t),gP.set(s,e),e}function ENe(s){return Uoe(s)||s9(s)||Foe(s)}function Aoe(s,e){return e.length===0?e=[s]:s.end===e[0].start?e[0].start=s.start:e.unshift(s),e}function DNe(s,e){for(let t=e;t<s.length;t++){const i=s.charCodeAt(t);if(s9(i)||Foe(i)||t>0&&!ENe(s.charCodeAt(t-1)))return t}return s.length}function t6(s,e,t,i){if(t===s.length)return[];if(i===e.length)return null;if(s[t]!==e[i].toLowerCase())return null;{let n=null,o=i+1;for(n=t6(s,e,t+1,i+1);!n&&(o=DNe(e,o))<e.length;)n=t6(s,e,t+1,o),o++;return n===null?null:Aoe({start:i,end:i+1},n)}}function xqe(s){let e=0,t=0,i=0,n=0,o=0;for(let c=0;c<s.length;c++)o=s.charCodeAt(c),s9(o)&&e++,Uoe(o)&&t++,ENe(o)&&i++,Foe(o)&&n++;const r=e/s.length,l=t/s.length,a=i/s.length,d=n/s.length;return{upperPercent:r,lowerPercent:l,alphaPercent:a,numericPercent:d}}function Iqe(s){const{upperPercent:e,lowerPercent:t}=s;return t===0&&e>.6}function Eqe(s){const{upperPercent:e,lowerPercent:t,alphaPercent:i,numericPercent:n}=s;return t>.2&&e<.8&&i>.6&&n<.2}function Dqe(s){let e=0,t=0,i=0,n=0;for(let o=0;o<s.length;o++)i=s.charCodeAt(o),s9(i)&&e++,Uoe(i)&&t++,xNe(i)&&n++;return(e===0||t===0)&&n===0?s.length<=30:e<=5}function GNe(s,e){if(!e||(e=e.trim(),e.length===0)||!Dqe(s))return null;e.length>60&&(e=e.substring(0,60));const t=xqe(e);if(!Eqe(t)){if(!Iqe(t))return null;e=e.toLowerCase()}let i=null,n=0;for(s=s.toLowerCase();n<e.length&&(i=t6(s,e,0,n))===null;)n=DNe(e,n+1);return i}function Gqe(s,e,t=!1){if(!e||e.length===0)return null;let i=null,n=0;for(s=s.toLowerCase(),e=e.toLowerCase();n<e.length&&(i=i6(s,e,0,n,t),i===null);)n=JNe(e,n+1);return i}function i6(s,e,t,i,n){let o=0;if(t===s.length)return[];if(i===e.length)return null;if(!Lue(s.charCodeAt(t),e.charCodeAt(i))){const a=vue(s.charCodeAt(t));if(!a)return null;for(let d=0;d<a.length;d++)if(!Lue(a[d],e.charCodeAt(i+d)))return null;o+=a.length-1}let r=null,l=i+o+1;if(r=i6(s,e,t+1,l,n),!n)for(;!r&&(l=JNe(e,l))<e.length;)r=i6(s,e,t+1,l,n),l++;if(!r)return null;if(s.charCodeAt(t)!==e.charCodeAt(i)){const a=vue(s.charCodeAt(t));if(!a)return r;for(let d=0;d<a.length;d++)if(a[d]!==e.charCodeAt(i+d))return r}return Aoe({start:i,end:i+o+1},r)}function JNe(s,e){for(let t=e;t<s.length;t++)if(wX(s.charCodeAt(t))||t>0&&wX(s.charCodeAt(t-1)))return t;return s.length}const Jqe=boe(cL,GNe,vNe),Xqe=boe(cL,GNe,kNe),kue=new $g(1e4);function xue(s,e,t=!1){if(typeof s!="string"||typeof e!="string")return null;let i=kue.get(s);i||(i=new RegExp(MPe(s),"i"),kue.set(s,i));const n=i.exec(e);return n?[{start:n.index,end:n.index+n[0].length}]:t?Xqe(s,e):Jqe(s,e)}function Yqe(s,e){const t=VN(s,s.toLowerCase(),0,e,e.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return t?tk(t):null}function _qe(s,e,t,i,n,o){const r=Math.min(13,s.length);for(;t<r;t++){const l=VN(s,e,t,i,n,o,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(l)return l}return[0,o]}function tk(s){if(typeof s>"u")return[];const e=[],t=s[1];for(let i=s.length-1;i>1;i--){const n=s[i]+t,o=e[e.length-1];o&&o.end===n?o.end=n+1:e.push({start:n,end:n+1})}return e}const jU=128;function Zoe(){const s=[],e=[];for(let t=0;t<=jU;t++)e[t]=0;for(let t=0;t<=jU;t++)s.push(e.slice(0));return s}function XNe(s){const e=[];for(let t=0;t<=s;t++)e[t]=0;return e}const YNe=XNe(2*jU),n6=XNe(2*jU),p0=Zoe(),RA=Zoe(),eI=Zoe();function tI(s,e){if(e<0||e>=s.length)return!1;const t=s.codePointAt(e);switch(t){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:case 60:case 62:case 40:case 41:case 91:case 93:case 123:case 125:return!0;case void 0:return!1;default:return!!Tse(t)}}function Iue(s,e){if(e<0||e>=s.length)return!1;switch(s.charCodeAt(e)){case 32:case 9:return!0;default:return!1}}function ZD(s,e,t){return e[s]!==t[s]}function zqe(s,e,t,i,n,o,r=!1){for(;e<t&&n<o;)s[e]===i[n]&&(r&&(YNe[e]=n),e+=1),n+=1;return e===t}var op;(function(s){s.Default=[-100,0];function e(t){return!t||t.length===2&&t[0]===-100&&t[1]===0}s.isDefault=e})(op||(op={}));const uae=class uae{constructor(e,t){this.firstMatchCanBeWeak=e,this.boostFullMatch=t}};uae.default={boostFullMatch:!0,firstMatchCanBeWeak:!1};let hL=uae;function VN(s,e,t,i,n,o,r=hL.default){const l=s.length>jU?jU:s.length,a=i.length>jU?jU:i.length;if(t>=l||o>=a||l-t>a-o||!zqe(e,t,l,n,o,a,!0))return;Oqe(l,a,t,o,e,n);let d=1,c=1,h=t,u=o;const m=[!1];for(d=1,h=t;h<l;d++,h++){const U=YNe[h],S=n6[h],Z=h+1<l?n6[h+1]:a;for(c=U-o+1,u=U;u<Z;c++,u++){let R=Number.MIN_SAFE_INTEGER,y=!1;u<=S&&(R=jqe(s,e,h,t,i,n,u,a,o,p0[d-1][c-1]===0,m));let N=0;R!==Number.MAX_SAFE_INTEGER&&(y=!0,N=R+RA[d-1][c-1]);const w=u>U,Q=w?RA[d][c-1]+(p0[d][c-1]>0?-5:0):0,C=u>U+1&&p0[d][c-1]>0,v=C?RA[d][c-2]+(p0[d][c-2]>0?-5:0):0;if(C&&(!w||v>=Q)&&(!y||v>=N))RA[d][c]=v,eI[d][c]=3,p0[d][c]=0;else if(w&&(!y||Q>=N))RA[d][c]=Q,eI[d][c]=2,p0[d][c]=0;else if(y)RA[d][c]=N,eI[d][c]=1,p0[d][c]=p0[d-1][c-1]+1;else throw new Error("not possible")}}if(!m[0]&&!r.firstMatchCanBeWeak)return;d--,c--;const p=[RA[d][c],o];let g=0,f=0;for(;d>=1;){let U=c;do{const S=eI[d][U];if(S===3)U=U-2;else if(S===2)U=U-1;else break}while(U>=1);g>1&&e[t+d-1]===n[o+c-1]&&!ZD(U+o-1,i,n)&&g+1>p0[d][U]&&(U=c),U===c?g++:g=1,f||(f=U),d--,c=U-1,p.push(c)}a-o===l&&r.boostFullMatch&&(p[0]+=2);const b=f-l;return p[0]-=b,p}function Oqe(s,e,t,i,n,o){let r=s-1,l=e-1;for(;r>=t&&l>=i;)n[r]===o[l]&&(n6[r]=l,r--),l--}function jqe(s,e,t,i,n,o,r,l,a,d,c){if(e[t]!==o[r])return Number.MIN_SAFE_INTEGER;let h=1,u=!1;return r===t-i?h=s[t]===n[r]?7:5:ZD(r,n,o)&&(r===0||!ZD(r-1,n,o))?(h=s[t]===n[r]?7:5,u=!0):tI(o,r)&&(r===0||!tI(o,r-1))?h=5:(tI(o,r-1)||Iue(o,r-1))&&(h=5,u=!0),h>1&&t===i&&(c[0]=!0),u||(u=ZD(r,n,o)||tI(o,r-1)||Iue(o,r-1)),t===i?r>a&&(h-=u?3:5):d?h+=u?2:0:h+=u?0:1,r+1===l&&(h-=u?3:5),h}function Pqe(s,e,t,i,n,o,r){return Hqe(s,e,t,i,n,o,!0,r)}function Hqe(s,e,t,i,n,o,r,l){let a=VN(s,e,t,i,n,o,l);if(a&&!r)return a;if(s.length>=3){const d=Math.min(7,s.length-1);for(let c=t+1;c<d;c++){const h=Kqe(s,c);if(h){const u=VN(h,h.toLowerCase(),t,i,n,o,l);u&&(u[0]-=3,(!a||u[0]>a[0])&&(a=u))}}}return a}function Kqe(s,e){if(e+1>=s.length)return;const t=s[e],i=s[e+1];if(t!==i)return s.slice(0,e)+i+t+s.slice(e+2)}const qqe="$(",Soe=new RegExp(`\\$\\(${ui.iconNameExpression}(?:${ui.iconModifierExpression})?\\)`,"g"),$qe=new RegExp(`(\\\\)?${Soe.source}`,"g");function e$e(s){return s.replace($qe,(e,t)=>t?e:`\\${e}`)}const t$e=new RegExp(`\\\\${Soe.source}`,"g");function i$e(s){return s.replace(t$e,e=>`\\${e}`)}const n$e=new RegExp(`(\\s)?(\\\\)?${Soe.source}(\\s)?`,"g");function Noe(s){return s.indexOf(qqe)===-1?s:s.replace(n$e,(e,t,i,n)=>i?e:t||n||"")}function s$e(s){return s?s.replace(/\$\((.*?)\)/g,(e,t)=>` ${t} `).trim():""}const fP=new RegExp(`\\$\\(${ui.iconNameCharacter}+\\)`,"g");function MT(s){fP.lastIndex=0;let e="";const t=[];let i=0;for(;;){const n=fP.lastIndex,o=fP.exec(s),r=s.substring(n,o==null?void 0:o.index);if(r.length>0){e+=r;for(let l=0;l<r.length;l++)t.push(i)}if(!o)break;i+=o[0].length}return{text:e,iconOffsets:t}}function bP(s,e,t=!1){const{text:i,iconOffsets:n}=e;if(!n||n.length===0)return xue(s,i,t);const o=_v(i," "),r=i.length-o.length,l=xue(s,o,t);if(l)for(const a of l){const d=n[a.start+r]+r;a.start+=d,a.end+=d}return l}function Xp(s){return $J(s,!0)}class o$e{constructor(e){this._ignorePathCasing=e}compare(e,t,i=!1){return e===t?0:zB(this.getComparisonKey(e,i),this.getComparisonKey(t,i))}isEqual(e,t,i=!1){return e===t?!0:!e||!t?!1:this.getComparisonKey(e,i)===this.getComparisonKey(t,i)}getComparisonKey(e,t=!1){return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:t?null:void 0}).toString()}isEqualOrParent(e,t,i=!1){if(e.scheme===t.scheme){if(e.scheme===Ti.file)return Y8(Xp(e),Xp(t),this._ignorePathCasing(e))&&e.query===t.query&&(i||e.fragment===t.fragment);if(Due(e.authority,t.authority))return Y8(e.path,t.path,this._ignorePathCasing(e),"/")&&e.query===t.query&&(i||e.fragment===t.fragment)}return!1}joinPath(e,...t){return ni.joinPath(e,...t)}basenameOrAuthority(e){return Hh(e)||e.authority}basename(e){return $o.basename(e.path)}extname(e){return $o.extname(e.path)}dirname(e){if(e.path.length===0)return e;let t;return e.scheme===Ti.file?t=ni.file(RZe(Xp(e))).path:(t=$o.dirname(e.path),e.authority&&t.length&&t.charCodeAt(0)!==47&&(console.error(`dirname("${e.toString})) resulted in a relative path`),t="/")),e.with({path:t})}normalizePath(e){if(!e.path.length)return e;let t;return e.scheme===Ti.file?t=ni.file(NZe(Xp(e))).path:t=$o.normalize(e.path),e.with({path:t})}relativePath(e,t){if(e.scheme!==t.scheme||!Due(e.authority,t.authority))return;if(e.scheme===Ti.file){const o=rPe(Xp(e),Xp(t));return Tl?nNe(o):o}let i=e.path||"/";const n=t.path||"/";if(this._ignorePathCasing(e)){let o=0;for(const r=Math.min(i.length,n.length);o<r&&!(i.charCodeAt(o)!==n.charCodeAt(o)&&i.charAt(o).toLowerCase()!==n.charAt(o).toLowerCase());o++);i=n.substr(0,o)+i.substr(o)}return $o.relative(i,n)}resolvePath(e,t){if(e.scheme===Ti.file){const i=ni.file(oPe(Xp(e),t));return e.with({authority:i.authority,path:i.path})}return t=a8e(t),e.with({path:$o.resolve(e.path,t)})}isAbsolutePath(e){return!!e.path&&e.path[0]==="/"}isEqualAuthority(e,t){return e===t||e!==void 0&&t!==void 0&&UW(e,t)}hasTrailingPathSeparator(e,t=ep){if(e.scheme===Ti.file){const i=Xp(e);return i.length>uue(i).length&&i[i.length-1]===t}else{const i=e.path;return i.length>1&&i.charCodeAt(i.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(e.fsPath)}}removeTrailingPathSeparator(e,t=ep){return Gue(e,t)?e.with({path:e.path.substr(0,e.path.length-1)}):e}addTrailingPathSeparator(e,t=ep){let i=!1;if(e.scheme===Ti.file){const n=Xp(e);i=n!==void 0&&n.length===uue(n).length&&n[n.length-1]===t}else{t="/";const n=e.path;i=n.length===1&&n.charCodeAt(n.length-1)===47}return!i&&!Gue(e,t)?e.with({path:e.path+"/"}):e}}const io=new o$e(()=>!1),uL=io.isEqual.bind(io);io.isEqualOrParent.bind(io);io.getComparisonKey.bind(io);const r$e=io.basenameOrAuthority.bind(io),Hh=io.basename.bind(io),l$e=io.extname.bind(io),o9=io.dirname.bind(io),a$e=io.joinPath.bind(io),d$e=io.normalizePath.bind(io),c$e=io.relativePath.bind(io),Eue=io.resolvePath.bind(io);io.isAbsolutePath.bind(io);const Due=io.isEqualAuthority.bind(io),Gue=io.hasTrailingPathSeparator.bind(io);io.removeTrailingPathSeparator.bind(io);io.addTrailingPathSeparator.bind(io);var EF;(function(s){s.META_DATA_LABEL="label",s.META_DATA_DESCRIPTION="description",s.META_DATA_SIZE="size",s.META_DATA_MIME="mime";function e(t){const i=new Map;t.path.substring(t.path.indexOf(";")+1,t.path.lastIndexOf(";")).split(";").forEach(r=>{const[l,a]=r.split(":");l&&a&&i.set(l,a)});const o=t.path.substring(0,t.path.indexOf(";"));return o&&i.set(s.META_DATA_MIME,o),i}s.parseMetaData=e})(EF||(EF={}));class _l{constructor(e="",t=!1){if(this.value=e,typeof this.value!="string")throw Xh("value");typeof t=="boolean"?(this.isTrusted=t,this.supportThemeIcons=!1,this.supportHtml=!1):(this.isTrusted=t.isTrusted??void 0,this.supportThemeIcons=t.supportThemeIcons??!1,this.supportHtml=t.supportHtml??!1)}appendText(e,t=0){return this.value+=u$e(this.supportThemeIcons?e$e(e):e).replace(/([ \t]+)/g,(i,n)=>" ".repeat(n.length)).replace(/\>/gm,"\\>").replace(/\n/g,t===1?`\\
- `:`
- `),this}appendMarkdown(e){return this.value+=e,this}appendCodeblock(e,t){return this.value+=`
- ${m$e(t,e)}
- `,this}appendLink(e,t,i){return this.value+="[",this.value+=this._escape(t,"]"),this.value+="](",this.value+=this._escape(String(e),")"),i&&(this.value+=` "${this._escape(this._escape(i,'"'),")")}"`),this.value+=")",this}_escape(e,t){const i=new RegExp(nh(t),"g");return e.replace(i,(n,o)=>e.charAt(o-1)!=="\\"?`\\${n}`:n)}}function By(s){return rp(s)?!s.value:Array.isArray(s)?s.every(By):!0}function rp(s){return s instanceof _l?!0:s&&typeof s=="object"?typeof s.value=="string"&&(typeof s.isTrusted=="boolean"||typeof s.isTrusted=="object"||s.isTrusted===void 0)&&(typeof s.supportThemeIcons=="boolean"||s.supportThemeIcons===void 0):!1}function h$e(s,e){return s===e?!0:!s||!e?!1:s.value===e.value&&s.isTrusted===e.isTrusted&&s.supportThemeIcons===e.supportThemeIcons&&s.supportHtml===e.supportHtml&&(s.baseUri===e.baseUri||!!s.baseUri&&!!e.baseUri&&uL(ni.from(s.baseUri),ni.from(e.baseUri)))}function u$e(s){return s.replace(/[\\`*_{}[\]()#+\-!~]/g,"\\$&")}function m$e(s,e){var n;const t=((n=s.match(/^`+/gm))==null?void 0:n.reduce((o,r)=>o.length>r.length?o:r).length)??0,i=t>=3?t+1:3;return[`${"`".repeat(i)}${e}`,s,`${"`".repeat(i)}`].join(`
- `)}function iI(s){return s.replace(/"/g,""")}function UP(s){return s&&s.replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1")}function p$e(s){const e=[],t=s.split("|").map(n=>n.trim());s=t[0];const i=t[1];if(i){const n=/height=(\d+)/.exec(i),o=/width=(\d+)/.exec(i),r=n?n[1]:"",l=o?o[1]:"",a=isFinite(parseInt(l)),d=isFinite(parseInt(r));a&&e.push(`width="${l}"`),d&&e.push(`height="${r}"`)}return{href:s,dimensions:e}}class Roe{constructor(e){this._prefix=e,this._lastId=0}nextId(){return this._prefix+ ++this._lastId}}const s6=new Roe("id#");let ea={};(function(){function s(e,t){t(ea)}s.amd=!0,function(e,t){typeof s=="function"&&s.amd?s(["exports"],t):typeof exports=="object"&&typeof module<"u"?t(exports):(e=typeof globalThis<"u"?globalThis:e||self,t(e.marked={}))}(this,function(e){function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}e.defaults=t();function i(Si){e.defaults=Si}const n=/[&<>"']/,o=new RegExp(n.source,"g"),r=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,l=new RegExp(r.source,"g"),a={"&":"&","<":"<",">":">",'"':""","'":"'"},d=Si=>a[Si];function c(Si,oe){if(oe){if(n.test(Si))return Si.replace(o,d)}else if(r.test(Si))return Si.replace(l,d);return Si}const h=/(^|[^\[])\^/g;function u(Si,oe){let ae=typeof Si=="string"?Si:Si.source;oe=oe||"";const ce={replace:(Ne,Be)=>{let Le=typeof Be=="string"?Be:Be.source;return Le=Le.replace(h,"$1"),ae=ae.replace(Ne,Le),ce},getRegex:()=>new RegExp(ae,oe)};return ce}function m(Si){try{Si=encodeURI(Si).replace(/%25/g,"%")}catch{return null}return Si}const p={exec:()=>null};function g(Si,oe){const ae=Si.replace(/\|/g,(Be,Le,pt)=>{let jt=!1,mi=Le;for(;--mi>=0&&pt[mi]==="\\";)jt=!jt;return jt?"|":" |"}),ce=ae.split(/ \|/);let Ne=0;if(ce[0].trim()||ce.shift(),ce.length>0&&!ce[ce.length-1].trim()&&ce.pop(),oe)if(ce.length>oe)ce.splice(oe);else for(;ce.length<oe;)ce.push("");for(;Ne<ce.length;Ne++)ce[Ne]=ce[Ne].trim().replace(/\\\|/g,"|");return ce}function f(Si,oe,ae){const ce=Si.length;if(ce===0)return"";let Ne=0;for(;Ne<ce;){const Be=Si.charAt(ce-Ne-1);if(Be===oe&&!ae)Ne++;else if(Be!==oe&&ae)Ne++;else break}return Si.slice(0,ce-Ne)}function b(Si,oe){if(Si.indexOf(oe[1])===-1)return-1;let ae=0;for(let ce=0;ce<Si.length;ce++)if(Si[ce]==="\\")ce++;else if(Si[ce]===oe[0])ae++;else if(Si[ce]===oe[1]&&(ae--,ae<0))return ce;return-1}function U(Si,oe,ae,ce){const Ne=oe.href,Be=oe.title?c(oe.title):null,Le=Si[1].replace(/\\([\[\]])/g,"$1");if(Si[0].charAt(0)!=="!"){ce.state.inLink=!0;const pt={type:"link",raw:ae,href:Ne,title:Be,text:Le,tokens:ce.inlineTokens(Le)};return ce.state.inLink=!1,pt}return{type:"image",raw:ae,href:Ne,title:Be,text:c(Le)}}function S(Si,oe){const ae=Si.match(/^(\s+)(?:```)/);if(ae===null)return oe;const ce=ae[1];return oe.split(`
- `).map(Ne=>{const Be=Ne.match(/^\s+/);if(Be===null)return Ne;const[Le]=Be;return Le.length>=ce.length?Ne.slice(ce.length):Ne}).join(`
- `)}class Z{constructor(oe){or(this,"options");or(this,"rules");or(this,"lexer");this.options=oe||e.defaults}space(oe){const ae=this.rules.block.newline.exec(oe);if(ae&&ae[0].length>0)return{type:"space",raw:ae[0]}}code(oe){const ae=this.rules.block.code.exec(oe);if(ae){const ce=ae[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:ae[0],codeBlockStyle:"indented",text:this.options.pedantic?ce:f(ce,`
- `)}}}fences(oe){const ae=this.rules.block.fences.exec(oe);if(ae){const ce=ae[0],Ne=S(ce,ae[3]||"");return{type:"code",raw:ce,lang:ae[2]?ae[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):ae[2],text:Ne}}}heading(oe){const ae=this.rules.block.heading.exec(oe);if(ae){let ce=ae[2].trim();if(/#$/.test(ce)){const Ne=f(ce,"#");(this.options.pedantic||!Ne||/ $/.test(Ne))&&(ce=Ne.trim())}return{type:"heading",raw:ae[0],depth:ae[1].length,text:ce,tokens:this.lexer.inline(ce)}}}hr(oe){const ae=this.rules.block.hr.exec(oe);if(ae)return{type:"hr",raw:f(ae[0],`
- `)}}blockquote(oe){const ae=this.rules.block.blockquote.exec(oe);if(ae){let ce=f(ae[0],`
- `).split(`
- `),Ne="",Be="";const Le=[];for(;ce.length>0;){let pt=!1;const jt=[];let mi;for(mi=0;mi<ce.length;mi++)if(/^ {0,3}>/.test(ce[mi]))jt.push(ce[mi]),pt=!0;else if(!pt)jt.push(ce[mi]);else break;ce=ce.slice(mi);const Ji=jt.join(`
- `),xn=Ji.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,`
- $1`).replace(/^ {0,3}>[ \t]?/gm,"");Ne=Ne?`${Ne}
- ${Ji}`:Ji,Be=Be?`${Be}
- ${xn}`:xn;const Gn=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(xn,Le,!0),this.lexer.state.top=Gn,ce.length===0)break;const Fs=Le[Le.length-1];if((Fs==null?void 0:Fs.type)==="code")break;if((Fs==null?void 0:Fs.type)==="blockquote"){const As=Fs,Vr=As.raw+`
- `+ce.join(`
- `),ir=this.blockquote(Vr);Le[Le.length-1]=ir,Ne=Ne.substring(0,Ne.length-As.raw.length)+ir.raw,Be=Be.substring(0,Be.length-As.text.length)+ir.text;break}else if((Fs==null?void 0:Fs.type)==="list"){const As=Fs,Vr=As.raw+`
- `+ce.join(`
- `),ir=this.list(Vr);Le[Le.length-1]=ir,Ne=Ne.substring(0,Ne.length-Fs.raw.length)+ir.raw,Be=Be.substring(0,Be.length-As.raw.length)+ir.raw,ce=Vr.substring(Le[Le.length-1].raw.length).split(`
- `);continue}}return{type:"blockquote",raw:Ne,tokens:Le,text:Be}}}list(oe){let ae=this.rules.block.list.exec(oe);if(ae){let ce=ae[1].trim();const Ne=ce.length>1,Be={type:"list",raw:"",ordered:Ne,start:Ne?+ce.slice(0,-1):"",loose:!1,items:[]};ce=Ne?`\\d{1,9}\\${ce.slice(-1)}`:`\\${ce}`,this.options.pedantic&&(ce=Ne?ce:"[*+-]");const Le=new RegExp(`^( {0,3}${ce})((?:[ ][^\\n]*)?(?:\\n|$))`);let pt=!1;for(;oe;){let jt=!1,mi="",Ji="";if(!(ae=Le.exec(oe))||this.rules.block.hr.test(oe))break;mi=ae[0],oe=oe.substring(mi.length);let xn=ae[2].split(`
- `,1)[0].replace(/^\t+/,He=>" ".repeat(3*He.length)),Gn=oe.split(`
- `,1)[0],Fs=!xn.trim(),As=0;if(this.options.pedantic?(As=2,Ji=xn.trimStart()):Fs?As=ae[1].length+1:(As=ae[2].search(/[^ ]/),As=As>4?1:As,Ji=xn.slice(As),As+=ae[1].length),Fs&&/^ *$/.test(Gn)&&(mi+=Gn+`
- `,oe=oe.substring(Gn.length+1),jt=!0),!jt){const He=new RegExp(`^ {0,${Math.min(3,As-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),xe=new RegExp(`^ {0,${Math.min(3,As-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),me=new RegExp(`^ {0,${Math.min(3,As-1)}}(?:\`\`\`|~~~)`),Zt=new RegExp(`^ {0,${Math.min(3,As-1)}}#`);for(;oe;){const q=oe.split(`
- `,1)[0];if(Gn=q,this.options.pedantic&&(Gn=Gn.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),me.test(Gn)||Zt.test(Gn)||He.test(Gn)||xe.test(oe))break;if(Gn.search(/[^ ]/)>=As||!Gn.trim())Ji+=`
- `+Gn.slice(As);else{if(Fs||xn.search(/[^ ]/)>=4||me.test(xn)||Zt.test(xn)||xe.test(xn))break;Ji+=`
- `+Gn}!Fs&&!Gn.trim()&&(Fs=!0),mi+=q+`
- `,oe=oe.substring(q.length+1),xn=Gn.slice(As)}}Be.loose||(pt?Be.loose=!0:/\n *\n *$/.test(mi)&&(pt=!0));let Vr=null,ir;this.options.gfm&&(Vr=/^\[[ xX]\] /.exec(Ji),Vr&&(ir=Vr[0]!=="[ ] ",Ji=Ji.replace(/^\[[ xX]\] +/,""))),Be.items.push({type:"list_item",raw:mi,task:!!Vr,checked:ir,loose:!1,text:Ji,tokens:[]}),Be.raw+=mi}Be.items[Be.items.length-1].raw=Be.items[Be.items.length-1].raw.trimEnd(),Be.items[Be.items.length-1].text=Be.items[Be.items.length-1].text.trimEnd(),Be.raw=Be.raw.trimEnd();for(let jt=0;jt<Be.items.length;jt++)if(this.lexer.state.top=!1,Be.items[jt].tokens=this.lexer.blockTokens(Be.items[jt].text,[]),!Be.loose){const mi=Be.items[jt].tokens.filter(xn=>xn.type==="space"),Ji=mi.length>0&&mi.some(xn=>/\n.*\n/.test(xn.raw));Be.loose=Ji}if(Be.loose)for(let jt=0;jt<Be.items.length;jt++)Be.items[jt].loose=!0;return Be}}html(oe){const ae=this.rules.block.html.exec(oe);if(ae)return{type:"html",block:!0,raw:ae[0],pre:ae[1]==="pre"||ae[1]==="script"||ae[1]==="style",text:ae[0]}}def(oe){const ae=this.rules.block.def.exec(oe);if(ae){const ce=ae[1].toLowerCase().replace(/\s+/g," "),Ne=ae[2]?ae[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",Be=ae[3]?ae[3].substring(1,ae[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):ae[3];return{type:"def",tag:ce,raw:ae[0],href:Ne,title:Be}}}table(oe){const ae=this.rules.block.table.exec(oe);if(!ae||!/[:|]/.test(ae[2]))return;const ce=g(ae[1]),Ne=ae[2].replace(/^\||\| *$/g,"").split("|"),Be=ae[3]&&ae[3].trim()?ae[3].replace(/\n[ \t]*$/,"").split(`
- `):[],Le={type:"table",raw:ae[0],header:[],align:[],rows:[]};if(ce.length===Ne.length){for(const pt of Ne)/^ *-+: *$/.test(pt)?Le.align.push("right"):/^ *:-+: *$/.test(pt)?Le.align.push("center"):/^ *:-+ *$/.test(pt)?Le.align.push("left"):Le.align.push(null);for(let pt=0;pt<ce.length;pt++)Le.header.push({text:ce[pt],tokens:this.lexer.inline(ce[pt]),header:!0,align:Le.align[pt]});for(const pt of Be)Le.rows.push(g(pt,Le.header.length).map((jt,mi)=>({text:jt,tokens:this.lexer.inline(jt),header:!1,align:Le.align[mi]})));return Le}}lheading(oe){const ae=this.rules.block.lheading.exec(oe);if(ae)return{type:"heading",raw:ae[0],depth:ae[2].charAt(0)==="="?1:2,text:ae[1],tokens:this.lexer.inline(ae[1])}}paragraph(oe){const ae=this.rules.block.paragraph.exec(oe);if(ae){const ce=ae[1].charAt(ae[1].length-1)===`
- `?ae[1].slice(0,-1):ae[1];return{type:"paragraph",raw:ae[0],text:ce,tokens:this.lexer.inline(ce)}}}text(oe){const ae=this.rules.block.text.exec(oe);if(ae)return{type:"text",raw:ae[0],text:ae[0],tokens:this.lexer.inline(ae[0])}}escape(oe){const ae=this.rules.inline.escape.exec(oe);if(ae)return{type:"escape",raw:ae[0],text:c(ae[1])}}tag(oe){const ae=this.rules.inline.tag.exec(oe);if(ae)return!this.lexer.state.inLink&&/^<a /i.test(ae[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(ae[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(ae[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(ae[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:ae[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:ae[0]}}link(oe){const ae=this.rules.inline.link.exec(oe);if(ae){const ce=ae[2].trim();if(!this.options.pedantic&&/^</.test(ce)){if(!/>$/.test(ce))return;const Le=f(ce.slice(0,-1),"\\");if((ce.length-Le.length)%2===0)return}else{const Le=b(ae[2],"()");if(Le>-1){const jt=(ae[0].indexOf("!")===0?5:4)+ae[1].length+Le;ae[2]=ae[2].substring(0,Le),ae[0]=ae[0].substring(0,jt).trim(),ae[3]=""}}let Ne=ae[2],Be="";if(this.options.pedantic){const Le=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(Ne);Le&&(Ne=Le[1],Be=Le[3])}else Be=ae[3]?ae[3].slice(1,-1):"";return Ne=Ne.trim(),/^</.test(Ne)&&(this.options.pedantic&&!/>$/.test(ce)?Ne=Ne.slice(1):Ne=Ne.slice(1,-1)),U(ae,{href:Ne&&Ne.replace(this.rules.inline.anyPunctuation,"$1"),title:Be&&Be.replace(this.rules.inline.anyPunctuation,"$1")},ae[0],this.lexer)}}reflink(oe,ae){let ce;if((ce=this.rules.inline.reflink.exec(oe))||(ce=this.rules.inline.nolink.exec(oe))){const Ne=(ce[2]||ce[1]).replace(/\s+/g," "),Be=ae[Ne.toLowerCase()];if(!Be){const Le=ce[0].charAt(0);return{type:"text",raw:Le,text:Le}}return U(ce,Be,ce[0],this.lexer)}}emStrong(oe,ae,ce=""){let Ne=this.rules.inline.emStrongLDelim.exec(oe);if(!Ne||Ne[3]&&ce.match(/[\p{L}\p{N}]/u))return;if(!(Ne[1]||Ne[2]||"")||!ce||this.rules.inline.punctuation.exec(ce)){const Le=[...Ne[0]].length-1;let pt,jt,mi=Le,Ji=0;const xn=Ne[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(xn.lastIndex=0,ae=ae.slice(-1*oe.length+Le);(Ne=xn.exec(ae))!=null;){if(pt=Ne[1]||Ne[2]||Ne[3]||Ne[4]||Ne[5]||Ne[6],!pt)continue;if(jt=[...pt].length,Ne[3]||Ne[4]){mi+=jt;continue}else if((Ne[5]||Ne[6])&&Le%3&&!((Le+jt)%3)){Ji+=jt;continue}if(mi-=jt,mi>0)continue;jt=Math.min(jt,jt+mi+Ji);const Gn=[...Ne[0]][0].length,Fs=oe.slice(0,Le+Ne.index+Gn+jt);if(Math.min(Le,jt)%2){const Vr=Fs.slice(1,-1);return{type:"em",raw:Fs,text:Vr,tokens:this.lexer.inlineTokens(Vr)}}const As=Fs.slice(2,-2);return{type:"strong",raw:Fs,text:As,tokens:this.lexer.inlineTokens(As)}}}}codespan(oe){const ae=this.rules.inline.code.exec(oe);if(ae){let ce=ae[2].replace(/\n/g," ");const Ne=/[^ ]/.test(ce),Be=/^ /.test(ce)&&/ $/.test(ce);return Ne&&Be&&(ce=ce.substring(1,ce.length-1)),ce=c(ce,!0),{type:"codespan",raw:ae[0],text:ce}}}br(oe){const ae=this.rules.inline.br.exec(oe);if(ae)return{type:"br",raw:ae[0]}}del(oe){const ae=this.rules.inline.del.exec(oe);if(ae)return{type:"del",raw:ae[0],text:ae[2],tokens:this.lexer.inlineTokens(ae[2])}}autolink(oe){const ae=this.rules.inline.autolink.exec(oe);if(ae){let ce,Ne;return ae[2]==="@"?(ce=c(ae[1]),Ne="mailto:"+ce):(ce=c(ae[1]),Ne=ce),{type:"link",raw:ae[0],text:ce,href:Ne,tokens:[{type:"text",raw:ce,text:ce}]}}}url(oe){var ce;let ae;if(ae=this.rules.inline.url.exec(oe)){let Ne,Be;if(ae[2]==="@")Ne=c(ae[0]),Be="mailto:"+Ne;else{let Le;do Le=ae[0],ae[0]=((ce=this.rules.inline._backpedal.exec(ae[0]))==null?void 0:ce[0])??"";while(Le!==ae[0]);Ne=c(ae[0]),ae[1]==="www."?Be="http://"+ae[0]:Be=ae[0]}return{type:"link",raw:ae[0],text:Ne,href:Be,tokens:[{type:"text",raw:Ne,text:Ne}]}}}inlineText(oe){const ae=this.rules.inline.text.exec(oe);if(ae){let ce;return this.lexer.state.inRawBlock?ce=ae[0]:ce=c(ae[0]),{type:"text",raw:ae[0],text:ce}}}}const R=/^(?: *(?:\n|$))+/,y=/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,N=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,w=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Q=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,C=/(?:[*+-]|\d{1,9}[.)])/,v=u(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,C).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),Y=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,J=/^[^\n]+/,k=/(?!\s*\])(?:\\.|[^\[\]\\])+/,E=u(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",k).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),K=u(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,C).getRegex(),de="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ee=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,le=u("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",ee).replace("tag",de).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Fe=u(Y).replace("hr",w).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",de).getRegex(),ze={blockquote:u(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Fe).getRegex(),code:y,def:E,fences:N,heading:Q,hr:w,html:le,lheading:v,list:K,newline:R,paragraph:Fe,table:p,text:J},Oe=u("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",w).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",de).getRegex(),Ie={...ze,table:Oe,paragraph:u(Y).replace("hr",w).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Oe).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",de).getRegex()},at={...ze,html:u(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ee).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:p,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:u(Y).replace("hr",w).replace("heading",` *#{1,6} *[^
- ]`).replace("lheading",v).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},je=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Se=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,dt=/^( {2,}|\\)\n(?!\s*$)/,Yt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ye="\\p{P}\\p{S}",mt=u(/^((?![*_])[\spunctuation])/,"u").replace(/punctuation/g,Ye).getRegex(),Wt=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,Jt=u(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,Ye).getRegex(),Ae=u("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,Ye).getRegex(),Yi=u("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,Ye).getRegex(),ci=u(/\\([punct])/,"gu").replace(/punct/g,Ye).getRegex(),we=u(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),si=u(ee).replace("(?:-->|$)","-->").getRegex(),yn=u("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",si).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),bi=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,pe=u(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",bi).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ie=u(/^!?\[(label)\]\[(ref)\]/).replace("label",bi).replace("ref",k).getRegex(),it=u(/^!?\[(ref)\](?:\[\])?/).replace("ref",k).getRegex(),Ft=u("reflink|nolink(?!\\()","g").replace("reflink",ie).replace("nolink",it).getRegex(),Pe={_backpedal:p,anyPunctuation:ci,autolink:we,blockSkip:Wt,br:dt,code:Se,del:p,emStrongLDelim:Jt,emStrongRDelimAst:Ae,emStrongRDelimUnd:Yi,escape:je,link:pe,nolink:it,punctuation:mt,reflink:ie,reflinkSearch:Ft,tag:yn,text:Yt,url:p},Re={...Pe,link:u(/^!?\[(label)\]\((.*?)\)/).replace("label",bi).getRegex(),reflink:u(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",bi).getRegex()},vt={...Pe,escape:u(je).replace("])","~|])").getRegex(),url:u(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},Ke={...vt,br:u(dt).replace("{2,}","*").getRegex(),text:u(vt.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},ot={normal:ze,gfm:Ie,pedantic:at},Et={normal:Pe,gfm:vt,breaks:Ke,pedantic:Re};class St{constructor(oe){or(this,"tokens");or(this,"options");or(this,"state");or(this,"tokenizer");or(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=oe||e.defaults,this.options.tokenizer=this.options.tokenizer||new Z,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const ae={block:ot.normal,inline:Et.normal};this.options.pedantic?(ae.block=ot.pedantic,ae.inline=Et.pedantic):this.options.gfm&&(ae.block=ot.gfm,this.options.breaks?ae.inline=Et.breaks:ae.inline=Et.gfm),this.tokenizer.rules=ae}static get rules(){return{block:ot,inline:Et}}static lex(oe,ae){return new St(ae).lex(oe)}static lexInline(oe,ae){return new St(ae).inlineTokens(oe)}lex(oe){oe=oe.replace(/\r\n|\r/g,`
- `),this.blockTokens(oe,this.tokens);for(let ae=0;ae<this.inlineQueue.length;ae++){const ce=this.inlineQueue[ae];this.inlineTokens(ce.src,ce.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(oe,ae=[],ce=!1){this.options.pedantic?oe=oe.replace(/\t/g," ").replace(/^ +$/gm,""):oe=oe.replace(/^( *)(\t+)/gm,(pt,jt,mi)=>jt+" ".repeat(mi.length));let Ne,Be,Le;for(;oe;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(pt=>(Ne=pt.call({lexer:this},oe,ae))?(oe=oe.substring(Ne.raw.length),ae.push(Ne),!0):!1))){if(Ne=this.tokenizer.space(oe)){oe=oe.substring(Ne.raw.length),Ne.raw.length===1&&ae.length>0?ae[ae.length-1].raw+=`
- `:ae.push(Ne);continue}if(Ne=this.tokenizer.code(oe)){oe=oe.substring(Ne.raw.length),Be=ae[ae.length-1],Be&&(Be.type==="paragraph"||Be.type==="text")?(Be.raw+=`
- `+Ne.raw,Be.text+=`
- `+Ne.text,this.inlineQueue[this.inlineQueue.length-1].src=Be.text):ae.push(Ne);continue}if(Ne=this.tokenizer.fences(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Ne=this.tokenizer.heading(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Ne=this.tokenizer.hr(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Ne=this.tokenizer.blockquote(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Ne=this.tokenizer.list(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Ne=this.tokenizer.html(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Ne=this.tokenizer.def(oe)){oe=oe.substring(Ne.raw.length),Be=ae[ae.length-1],Be&&(Be.type==="paragraph"||Be.type==="text")?(Be.raw+=`
- `+Ne.raw,Be.text+=`
- `+Ne.raw,this.inlineQueue[this.inlineQueue.length-1].src=Be.text):this.tokens.links[Ne.tag]||(this.tokens.links[Ne.tag]={href:Ne.href,title:Ne.title});continue}if(Ne=this.tokenizer.table(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Ne=this.tokenizer.lheading(oe)){oe=oe.substring(Ne.raw.length),ae.push(Ne);continue}if(Le=oe,this.options.extensions&&this.options.extensions.startBlock){let pt=1/0;const jt=oe.slice(1);let mi;this.options.extensions.startBlock.forEach(Ji=>{mi=Ji.call({lexer:this},jt),typeof mi=="number"&&mi>=0&&(pt=Math.min(pt,mi))}),pt<1/0&&pt>=0&&(Le=oe.substring(0,pt+1))}if(this.state.top&&(Ne=this.tokenizer.paragraph(Le))){Be=ae[ae.length-1],ce&&(Be==null?void 0:Be.type)==="paragraph"?(Be.raw+=`
- `+Ne.raw,Be.text+=`
- `+Ne.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=Be.text):ae.push(Ne),ce=Le.length!==oe.length,oe=oe.substring(Ne.raw.length);continue}if(Ne=this.tokenizer.text(oe)){oe=oe.substring(Ne.raw.length),Be=ae[ae.length-1],Be&&Be.type==="text"?(Be.raw+=`
- `+Ne.raw,Be.text+=`
- `+Ne.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=Be.text):ae.push(Ne);continue}if(oe){const pt="Infinite loop on byte: "+oe.charCodeAt(0);if(this.options.silent){console.error(pt);break}else throw new Error(pt)}}return this.state.top=!0,ae}inline(oe,ae=[]){return this.inlineQueue.push({src:oe,tokens:ae}),ae}inlineTokens(oe,ae=[]){let ce,Ne,Be,Le=oe,pt,jt,mi;if(this.tokens.links){const Ji=Object.keys(this.tokens.links);if(Ji.length>0)for(;(pt=this.tokenizer.rules.inline.reflinkSearch.exec(Le))!=null;)Ji.includes(pt[0].slice(pt[0].lastIndexOf("[")+1,-1))&&(Le=Le.slice(0,pt.index)+"["+"a".repeat(pt[0].length-2)+"]"+Le.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(pt=this.tokenizer.rules.inline.blockSkip.exec(Le))!=null;)Le=Le.slice(0,pt.index)+"["+"a".repeat(pt[0].length-2)+"]"+Le.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(pt=this.tokenizer.rules.inline.anyPunctuation.exec(Le))!=null;)Le=Le.slice(0,pt.index)+"++"+Le.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;oe;)if(jt||(mi=""),jt=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(Ji=>(ce=Ji.call({lexer:this},oe,ae))?(oe=oe.substring(ce.raw.length),ae.push(ce),!0):!1))){if(ce=this.tokenizer.escape(oe)){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(ce=this.tokenizer.tag(oe)){oe=oe.substring(ce.raw.length),Ne=ae[ae.length-1],Ne&&ce.type==="text"&&Ne.type==="text"?(Ne.raw+=ce.raw,Ne.text+=ce.text):ae.push(ce);continue}if(ce=this.tokenizer.link(oe)){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(ce=this.tokenizer.reflink(oe,this.tokens.links)){oe=oe.substring(ce.raw.length),Ne=ae[ae.length-1],Ne&&ce.type==="text"&&Ne.type==="text"?(Ne.raw+=ce.raw,Ne.text+=ce.text):ae.push(ce);continue}if(ce=this.tokenizer.emStrong(oe,Le,mi)){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(ce=this.tokenizer.codespan(oe)){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(ce=this.tokenizer.br(oe)){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(ce=this.tokenizer.del(oe)){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(ce=this.tokenizer.autolink(oe)){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(!this.state.inLink&&(ce=this.tokenizer.url(oe))){oe=oe.substring(ce.raw.length),ae.push(ce);continue}if(Be=oe,this.options.extensions&&this.options.extensions.startInline){let Ji=1/0;const xn=oe.slice(1);let Gn;this.options.extensions.startInline.forEach(Fs=>{Gn=Fs.call({lexer:this},xn),typeof Gn=="number"&&Gn>=0&&(Ji=Math.min(Ji,Gn))}),Ji<1/0&&Ji>=0&&(Be=oe.substring(0,Ji+1))}if(ce=this.tokenizer.inlineText(Be)){oe=oe.substring(ce.raw.length),ce.raw.slice(-1)!=="_"&&(mi=ce.raw.slice(-1)),jt=!0,Ne=ae[ae.length-1],Ne&&Ne.type==="text"?(Ne.raw+=ce.raw,Ne.text+=ce.text):ae.push(ce);continue}if(oe){const Ji="Infinite loop on byte: "+oe.charCodeAt(0);if(this.options.silent){console.error(Ji);break}else throw new Error(Ji)}}return ae}}class Ht{constructor(oe){or(this,"options");or(this,"parser");this.options=oe||e.defaults}space(oe){return""}code({text:oe,lang:ae,escaped:ce}){var Le;const Ne=(Le=(ae||"").match(/^\S*/))==null?void 0:Le[0],Be=oe.replace(/\n$/,"")+`
- `;return Ne?'<pre><code class="language-'+c(Ne)+'">'+(ce?Be:c(Be,!0))+`</code></pre>
- `:"<pre><code>"+(ce?Be:c(Be,!0))+`</code></pre>
- `}blockquote({tokens:oe}){return`<blockquote>
- ${this.parser.parse(oe)}</blockquote>
- `}html({text:oe}){return oe}heading({tokens:oe,depth:ae}){return`<h${ae}>${this.parser.parseInline(oe)}</h${ae}>
- `}hr(oe){return`<hr>
- `}list(oe){const ae=oe.ordered,ce=oe.start;let Ne="";for(let pt=0;pt<oe.items.length;pt++){const jt=oe.items[pt];Ne+=this.listitem(jt)}const Be=ae?"ol":"ul",Le=ae&&ce!==1?' start="'+ce+'"':"";return"<"+Be+Le+`>
- `+Ne+"</"+Be+`>
- `}listitem(oe){let ae="";if(oe.task){const ce=this.checkbox({checked:!!oe.checked});oe.loose?oe.tokens.length>0&&oe.tokens[0].type==="paragraph"?(oe.tokens[0].text=ce+" "+oe.tokens[0].text,oe.tokens[0].tokens&&oe.tokens[0].tokens.length>0&&oe.tokens[0].tokens[0].type==="text"&&(oe.tokens[0].tokens[0].text=ce+" "+oe.tokens[0].tokens[0].text)):oe.tokens.unshift({type:"text",raw:ce+" ",text:ce+" "}):ae+=ce+" "}return ae+=this.parser.parse(oe.tokens,!!oe.loose),`<li>${ae}</li>
- `}checkbox({checked:oe}){return"<input "+(oe?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:oe}){return`<p>${this.parser.parseInline(oe)}</p>
- `}table(oe){let ae="",ce="";for(let Be=0;Be<oe.header.length;Be++)ce+=this.tablecell(oe.header[Be]);ae+=this.tablerow({text:ce});let Ne="";for(let Be=0;Be<oe.rows.length;Be++){const Le=oe.rows[Be];ce="";for(let pt=0;pt<Le.length;pt++)ce+=this.tablecell(Le[pt]);Ne+=this.tablerow({text:ce})}return Ne&&(Ne=`<tbody>${Ne}</tbody>`),`<table>
- <thead>
- `+ae+`</thead>
- `+Ne+`</table>
- `}tablerow({text:oe}){return`<tr>
- ${oe}</tr>
- `}tablecell(oe){const ae=this.parser.parseInline(oe.tokens),ce=oe.header?"th":"td";return(oe.align?`<${ce} align="${oe.align}">`:`<${ce}>`)+ae+`</${ce}>
- `}strong({tokens:oe}){return`<strong>${this.parser.parseInline(oe)}</strong>`}em({tokens:oe}){return`<em>${this.parser.parseInline(oe)}</em>`}codespan({text:oe}){return`<code>${oe}</code>`}br(oe){return"<br>"}del({tokens:oe}){return`<del>${this.parser.parseInline(oe)}</del>`}link({href:oe,title:ae,tokens:ce}){const Ne=this.parser.parseInline(ce),Be=m(oe);if(Be===null)return Ne;oe=Be;let Le='<a href="'+oe+'"';return ae&&(Le+=' title="'+ae+'"'),Le+=">"+Ne+"</a>",Le}image({href:oe,title:ae,text:ce}){const Ne=m(oe);if(Ne===null)return ce;oe=Ne;let Be=`<img src="${oe}" alt="${ce}"`;return ae&&(Be+=` title="${ae}"`),Be+=">",Be}text(oe){return"tokens"in oe&&oe.tokens?this.parser.parseInline(oe.tokens):oe.text}}class Fi{strong({text:oe}){return oe}em({text:oe}){return oe}codespan({text:oe}){return oe}del({text:oe}){return oe}html({text:oe}){return oe}text({text:oe}){return oe}link({text:oe}){return""+oe}image({text:oe}){return""+oe}br(){return""}}class Dt{constructor(oe){or(this,"options");or(this,"renderer");or(this,"textRenderer");this.options=oe||e.defaults,this.options.renderer=this.options.renderer||new Ht,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Fi}static parse(oe,ae){return new Dt(ae).parse(oe)}static parseInline(oe,ae){return new Dt(ae).parseInline(oe)}parse(oe,ae=!0){let ce="";for(let Ne=0;Ne<oe.length;Ne++){const Be=oe[Ne];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[Be.type]){const pt=Be,jt=this.options.extensions.renderers[pt.type].call({parser:this},pt);if(jt!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(pt.type)){ce+=jt||"";continue}}const Le=Be;switch(Le.type){case"space":{ce+=this.renderer.space(Le);continue}case"hr":{ce+=this.renderer.hr(Le);continue}case"heading":{ce+=this.renderer.heading(Le);continue}case"code":{ce+=this.renderer.code(Le);continue}case"table":{ce+=this.renderer.table(Le);continue}case"blockquote":{ce+=this.renderer.blockquote(Le);continue}case"list":{ce+=this.renderer.list(Le);continue}case"html":{ce+=this.renderer.html(Le);continue}case"paragraph":{ce+=this.renderer.paragraph(Le);continue}case"text":{let pt=Le,jt=this.renderer.text(pt);for(;Ne+1<oe.length&&oe[Ne+1].type==="text";)pt=oe[++Ne],jt+=`
- `+this.renderer.text(pt);ae?ce+=this.renderer.paragraph({type:"paragraph",raw:jt,text:jt,tokens:[{type:"text",raw:jt,text:jt}]}):ce+=jt;continue}default:{const pt='Token with "'+Le.type+'" type was not found.';if(this.options.silent)return console.error(pt),"";throw new Error(pt)}}}return ce}parseInline(oe,ae){ae=ae||this.renderer;let ce="";for(let Ne=0;Ne<oe.length;Ne++){const Be=oe[Ne];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[Be.type]){const pt=this.options.extensions.renderers[Be.type].call({parser:this},Be);if(pt!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(Be.type)){ce+=pt||"";continue}}const Le=Be;switch(Le.type){case"escape":{ce+=ae.text(Le);break}case"html":{ce+=ae.html(Le);break}case"link":{ce+=ae.link(Le);break}case"image":{ce+=ae.image(Le);break}case"strong":{ce+=ae.strong(Le);break}case"em":{ce+=ae.em(Le);break}case"codespan":{ce+=ae.codespan(Le);break}case"br":{ce+=ae.br(Le);break}case"del":{ce+=ae.del(Le);break}case"text":{ce+=ae.text(Le);break}default:{const pt='Token with "'+Le.type+'" type was not found.';if(this.options.silent)return console.error(pt),"";throw new Error(pt)}}}return ce}}class Ot{constructor(oe){or(this,"options");this.options=oe||e.defaults}preprocess(oe){return oe}postprocess(oe){return oe}processAllTokens(oe){return oe}}or(Ot,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"]));class nn{constructor(...oe){or(this,"defaults",t());or(this,"options",this.setOptions);or(this,"parse",this.parseMarkdown(St.lex,Dt.parse));or(this,"parseInline",this.parseMarkdown(St.lexInline,Dt.parseInline));or(this,"Parser",Dt);or(this,"Renderer",Ht);or(this,"TextRenderer",Fi);or(this,"Lexer",St);or(this,"Tokenizer",Z);or(this,"Hooks",Ot);this.use(...oe)}walkTokens(oe,ae){var Ne,Be;let ce=[];for(const Le of oe)switch(ce=ce.concat(ae.call(this,Le)),Le.type){case"table":{const pt=Le;for(const jt of pt.header)ce=ce.concat(this.walkTokens(jt.tokens,ae));for(const jt of pt.rows)for(const mi of jt)ce=ce.concat(this.walkTokens(mi.tokens,ae));break}case"list":{const pt=Le;ce=ce.concat(this.walkTokens(pt.items,ae));break}default:{const pt=Le;(Be=(Ne=this.defaults.extensions)==null?void 0:Ne.childTokens)!=null&&Be[pt.type]?this.defaults.extensions.childTokens[pt.type].forEach(jt=>{const mi=pt[jt].flat(1/0);ce=ce.concat(this.walkTokens(mi,ae))}):pt.tokens&&(ce=ce.concat(this.walkTokens(pt.tokens,ae)))}}return ce}use(...oe){const ae=this.defaults.extensions||{renderers:{},childTokens:{}};return oe.forEach(ce=>{const Ne={...ce};if(Ne.async=this.defaults.async||Ne.async||!1,ce.extensions&&(ce.extensions.forEach(Be=>{if(!Be.name)throw new Error("extension name required");if("renderer"in Be){const Le=ae.renderers[Be.name];Le?ae.renderers[Be.name]=function(...pt){let jt=Be.renderer.apply(this,pt);return jt===!1&&(jt=Le.apply(this,pt)),jt}:ae.renderers[Be.name]=Be.renderer}if("tokenizer"in Be){if(!Be.level||Be.level!=="block"&&Be.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const Le=ae[Be.level];Le?Le.unshift(Be.tokenizer):ae[Be.level]=[Be.tokenizer],Be.start&&(Be.level==="block"?ae.startBlock?ae.startBlock.push(Be.start):ae.startBlock=[Be.start]:Be.level==="inline"&&(ae.startInline?ae.startInline.push(Be.start):ae.startInline=[Be.start]))}"childTokens"in Be&&Be.childTokens&&(ae.childTokens[Be.name]=Be.childTokens)}),Ne.extensions=ae),ce.renderer){const Be=this.defaults.renderer||new Ht(this.defaults);for(const Le in ce.renderer){if(!(Le in Be))throw new Error(`renderer '${Le}' does not exist`);if(["options","parser"].includes(Le))continue;const pt=Le,jt=ce.renderer[pt],mi=Be[pt];Be[pt]=(...Ji)=>{let xn=jt.apply(Be,Ji);return xn===!1&&(xn=mi.apply(Be,Ji)),xn||""}}Ne.renderer=Be}if(ce.tokenizer){const Be=this.defaults.tokenizer||new Z(this.defaults);for(const Le in ce.tokenizer){if(!(Le in Be))throw new Error(`tokenizer '${Le}' does not exist`);if(["options","rules","lexer"].includes(Le))continue;const pt=Le,jt=ce.tokenizer[pt],mi=Be[pt];Be[pt]=(...Ji)=>{let xn=jt.apply(Be,Ji);return xn===!1&&(xn=mi.apply(Be,Ji)),xn}}Ne.tokenizer=Be}if(ce.hooks){const Be=this.defaults.hooks||new Ot;for(const Le in ce.hooks){if(!(Le in Be))throw new Error(`hook '${Le}' does not exist`);if(Le==="options")continue;const pt=Le,jt=ce.hooks[pt],mi=Be[pt];Ot.passThroughHooks.has(Le)?Be[pt]=Ji=>{if(this.defaults.async)return Promise.resolve(jt.call(Be,Ji)).then(Gn=>mi.call(Be,Gn));const xn=jt.call(Be,Ji);return mi.call(Be,xn)}:Be[pt]=(...Ji)=>{let xn=jt.apply(Be,Ji);return xn===!1&&(xn=mi.apply(Be,Ji)),xn}}Ne.hooks=Be}if(ce.walkTokens){const Be=this.defaults.walkTokens,Le=ce.walkTokens;Ne.walkTokens=function(pt){let jt=[];return jt.push(Le.call(this,pt)),Be&&(jt=jt.concat(Be.call(this,pt))),jt}}this.defaults={...this.defaults,...Ne}}),this}setOptions(oe){return this.defaults={...this.defaults,...oe},this}lexer(oe,ae){return St.lex(oe,ae??this.defaults)}parser(oe,ae){return Dt.parse(oe,ae??this.defaults)}parseMarkdown(oe,ae){return(Ne,Be)=>{const Le={...Be},pt={...this.defaults,...Le},jt=this.onError(!!pt.silent,!!pt.async);if(this.defaults.async===!0&&Le.async===!1)return jt(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof Ne>"u"||Ne===null)return jt(new Error("marked(): input parameter is undefined or null"));if(typeof Ne!="string")return jt(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(Ne)+", string expected"));if(pt.hooks&&(pt.hooks.options=pt),pt.async)return Promise.resolve(pt.hooks?pt.hooks.preprocess(Ne):Ne).then(mi=>oe(mi,pt)).then(mi=>pt.hooks?pt.hooks.processAllTokens(mi):mi).then(mi=>pt.walkTokens?Promise.all(this.walkTokens(mi,pt.walkTokens)).then(()=>mi):mi).then(mi=>ae(mi,pt)).then(mi=>pt.hooks?pt.hooks.postprocess(mi):mi).catch(jt);try{pt.hooks&&(Ne=pt.hooks.preprocess(Ne));let mi=oe(Ne,pt);pt.hooks&&(mi=pt.hooks.processAllTokens(mi)),pt.walkTokens&&this.walkTokens(mi,pt.walkTokens);let Ji=ae(mi,pt);return pt.hooks&&(Ji=pt.hooks.postprocess(Ji)),Ji}catch(mi){return jt(mi)}}}onError(oe,ae){return ce=>{if(ce.message+=`
- Please report this to https://github.com/markedjs/marked.`,oe){const Ne="<p>An error occurred:</p><pre>"+c(ce.message+"",!0)+"</pre>";return ae?Promise.resolve(Ne):Ne}if(ae)return Promise.reject(ce);throw ce}}}const xi=new nn;function Zi(Si,oe){return xi.parse(Si,oe)}Zi.options=Zi.setOptions=function(Si){return xi.setOptions(Si),Zi.defaults=xi.defaults,i(Zi.defaults),Zi},Zi.getDefaults=t,Zi.defaults=e.defaults,Zi.use=function(...Si){return xi.use(...Si),Zi.defaults=xi.defaults,i(Zi.defaults),Zi},Zi.walkTokens=function(Si,oe){return xi.walkTokens(Si,oe)},Zi.parseInline=xi.parseInline,Zi.Parser=Dt,Zi.parser=Dt.parse,Zi.Renderer=Ht,Zi.TextRenderer=Fi,Zi.Lexer=St,Zi.lexer=St.lex,Zi.Tokenizer=Z,Zi.Hooks=Ot,Zi.parse=Zi;const Me=Zi.options,ri=Zi.setOptions,st=Zi.use,Ve=Zi.walkTokens,Nt=Zi.parseInline,Ui=Zi,Ci=Dt.parse,Mn=St.lex;e.Hooks=Ot,e.Lexer=St,e.Marked=nn,e.Parser=Dt,e.Renderer=Ht,e.TextRenderer=Fi,e.Tokenizer=Z,e.getDefaults=t,e.lexer=Mn,e.marked=Zi,e.options=Me,e.parse=Ui,e.parseInline=Nt,e.parser=Ci,e.setOptions=ri,e.use=st,e.walkTokens=Ve})})();ea.Hooks||exports.Hooks;ea.Lexer||exports.Lexer;ea.Marked||exports.Marked;ea.Parser||exports.Parser;var _Ne=ea.Renderer||exports.Renderer;ea.TextRenderer||exports.TextRenderer;ea.Tokenizer||exports.Tokenizer;var g$e=ea.defaults||exports.defaults;ea.getDefaults||exports.getDefaults;var r9=ea.lexer||exports.lexer;ea.marked||exports.marked;ea.options||exports.options;var zNe=ea.parse||exports.parse;ea.parseInline||exports.parseInline;var f$e=ea.parser||exports.parser;ea.setOptions||exports.setOptions;ea.use||exports.use;ea.walkTokens||exports.walkTokens;function b$e(s){return JSON.stringify(s,U$e)}function o6(s){let e=JSON.parse(s);return e=r6(e),e}function U$e(s,e){return e instanceof RegExp?{$mid:2,source:e.source,flags:e.flags}:e}function r6(s,e=0){if(!s||e>200)return s;if(typeof s=="object"){switch(s.$mid){case 1:return ni.revive(s);case 2:return new RegExp(s.source,s.flags);case 17:return new Date(s.source)}if(s instanceof X3||s instanceof Uint8Array)return s;if(Array.isArray(s))for(let t=0;t<s.length;++t)s[t]=r6(s[t],e+1);else for(const t in s)Object.hasOwnProperty.call(s,t)&&(s[t]=r6(s[t],e+1))}return s}const FP=Object.freeze({image:({href:s,title:e,text:t})=>{let i=[],n=[];return s&&({href:s,dimensions:i}=p$e(s),n.push(`src="${iI(s)}"`)),t&&n.push(`alt="${iI(t)}"`),e&&n.push(`title="${iI(e)}"`),i.length&&(n=n.concat(i)),"<img "+n.join(" ")+">"},paragraph({tokens:s}){return`<p>${this.parser.parseInline(s)}</p>`},link({href:s,title:e,tokens:t}){let i=this.parser.parseInline(t);return typeof s!="string"?"":(s===i&&(i=UP(i)),e=typeof e=="string"?iI(UP(e)):"",s=UP(s),s=s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),`<a href="${s}" title="${e||s}" draggable="false">${i}</a>`)}});function l9(s,e={},t={}){const i=new De;let n=!1;const o=foe(e),r=function(g){let f;try{f=o6(decodeURIComponent(g))}catch{}return f?(f=sZe(f,b=>{if(s.uris&&s.uris[b])return ni.revive(s.uris[b])}),encodeURIComponent(JSON.stringify(f))):g},l=function(g,f){const b=s.uris&&s.uris[g];let U=ni.revive(b);return f?g.startsWith(Ti.data+":")?g:(U||(U=ni.parse(g)),y3.uriToBrowserUri(U).toString(!0)):!U||ni.parse(g).toString()===U.toString()?g:(U.query&&(U=U.with({query:r(U.query)})),U.toString())},a=new _Ne;a.image=FP.image,a.link=FP.link,a.paragraph=FP.paragraph;const d=[],c=[];if(e.codeBlockRendererSync?a.code=({text:g,lang:f})=>{const b=s6.nextId(),U=e.codeBlockRendererSync(Jue(f),g);return c.push([b,U]),`<div class="code" data-code="${b}">${OC(g)}</div>`}:e.codeBlockRenderer&&(a.code=({text:g,lang:f})=>{const b=s6.nextId(),U=e.codeBlockRenderer(Jue(f),g);return d.push(U.then(S=>[b,S])),`<div class="code" data-code="${b}">${OC(g)}</div>`}),e.actionHandler){const g=function(U){let S=U.target;if(!(S.tagName!=="A"&&(S=S.parentElement,!S||S.tagName!=="A")))try{let Z=S.dataset.href;Z&&(s.baseUri&&(Z=AP(ni.from(s.baseUri),Z)),e.actionHandler.callback(Z,U))}catch(Z){wi(Z)}finally{U.preventDefault()}},f=e.actionHandler.disposables.add(new fn(o,"click")),b=e.actionHandler.disposables.add(new fn(o,"auxclick"));e.actionHandler.disposables.add(Ut.any(f.event,b.event)(U=>{const S=new _u(ai(o),U);!S.leftButton&&!S.middleButton||g(S)})),e.actionHandler.disposables.add(Te(o,"keydown",U=>{const S=new Ts(U);!S.equals(10)&&!S.equals(3)||g(S)}))}s.supportHtml||(a.html=({text:g})=>{var b;return(b=e.sanitizerOptions)!=null&&b.replaceWithPlaintext?OC(g):(s.isTrusted?g.match(/^(<span[^>]+>)|(<\/\s*span>)$/):void 0)?g:""}),t.renderer=a;let h=s.value??"";h.length>1e5&&(h=`${h.substr(0,1e5)}…`),s.supportThemeIcons&&(h=i$e(h));let u;if(e.fillInIncompleteTokens){const g={...g$e,...t},f=r9(h,g),b=T$e(f);u=f$e(b,g)}else u=zNe(h,{...t,async:!1});s.supportThemeIcons&&(u=SF(u).map(f=>typeof f=="string"?f:f.outerHTML).join(""));const p=new DOMParser().parseFromString(l6({isTrusted:s.isTrusted,...e.sanitizerOptions},u),"text/html");if(p.body.querySelectorAll("img, audio, video, source").forEach(g=>{const f=g.getAttribute("src");if(f){let b=f;try{s.baseUri&&(b=AP(ni.from(s.baseUri),b))}catch{}if(g.setAttribute("src",l(b,!0)),e.remoteImageIsAllowed){const U=ni.parse(b);U.scheme!==Ti.file&&U.scheme!==Ti.data&&!e.remoteImageIsAllowed(U)&&g.replaceWith(gt("",void 0,g.outerHTML))}}}),p.body.querySelectorAll("a").forEach(g=>{const f=g.getAttribute("href");if(g.setAttribute("href",""),!f||/^data:|javascript:/i.test(f)||/^command:/i.test(f)&&!s.isTrusted||/^command:(\/\/\/)?_workbench\.downloadResource/i.test(f))g.replaceWith(...g.childNodes);else{let b=l(f,!1);s.baseUri&&(b=AP(ni.from(s.baseUri),f)),g.dataset.href=b}}),o.innerHTML=l6({isTrusted:s.isTrusted,...e.sanitizerOptions},p.body.innerHTML),d.length>0)Promise.all(d).then(g=>{var U;if(n)return;const f=new Map(g),b=o.querySelectorAll("div[data-code]");for(const S of b){const Z=f.get(S.dataset.code??"");Z&&cl(S,Z)}(U=e.asyncRenderCallback)==null||U.call(e)});else if(c.length>0){const g=new Map(c),f=o.querySelectorAll("div[data-code]");for(const b of f){const U=g.get(b.dataset.code??"");U&&cl(b,U)}}if(e.asyncRenderCallback)for(const g of o.getElementsByTagName("img")){const f=i.add(Te(g,"load",()=>{f.dispose(),e.asyncRenderCallback()}))}return{element:o,dispose:()=>{n=!0,i.dispose()}}}function Jue(s){if(!s)return"";const e=s.split(/[\s+|:|,|\{|\?]/,1);return e.length?e[0]:s}function AP(s,e){return/^\w[\w\d+.-]*:/.test(e)?e:s.path.endsWith("/")?Eue(s,e).toString():Eue(o9(s),e).toString()}const F$e=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];function l6(s,e){const{config:t,allowedSchemes:i}=Z$e(s),n=new De;n.add(Xue("uponSanitizeAttribute",(o,r)=>{var l;if(r.attrName==="style"||r.attrName==="class"){if(o.tagName==="SPAN"){if(r.attrName==="style"){r.keepAttr=/^(color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(background-color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(border-radius:[0-9]+px;)?$/.test(r.attrValue);return}else if(r.attrName==="class"){r.keepAttr=/^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/.test(r.attrValue);return}}r.keepAttr=!1;return}else if(o.tagName==="INPUT"&&((l=o.attributes.getNamedItem("type"))==null?void 0:l.value)==="checkbox"){if(r.attrName==="type"&&r.attrValue==="checkbox"||r.attrName==="disabled"||r.attrName==="checked"){r.keepAttr=!0;return}r.keepAttr=!1}})),n.add(Xue("uponSanitizeElement",(o,r)=>{var l;if(r.tagName==="input"&&(((l=o.attributes.getNamedItem("type"))==null?void 0:l.value)==="checkbox"?o.setAttribute("disabled",""):s.replaceWithPlaintext||o.remove()),s.replaceWithPlaintext&&!r.allowedTags[r.tagName]&&r.tagName!=="body"&&o.parentElement){let a,d;if(r.tagName==="#comment")a=`<!--${o.textContent}-->`;else{const m=F$e.includes(r.tagName),p=o.attributes.length?" "+Array.from(o.attributes).map(g=>`${g.name}="${g.value}"`).join(" "):"";a=`<${r.tagName}${p}>`,m||(d=`</${r.tagName}>`)}const c=document.createDocumentFragment(),h=o.parentElement.ownerDocument.createTextNode(a);c.appendChild(h);const u=d?o.parentElement.ownerDocument.createTextNode(d):void 0;for(;o.firstChild;)c.appendChild(o.firstChild);u&&c.appendChild(u),o.nodeType===Node.COMMENT_NODE?o.parentElement.insertBefore(c,o):o.parentElement.replaceChild(c,o)}})),n.add(e4e(i));try{return qZe(e,{...t,RETURN_TRUSTED_TYPE:!0})}finally{n.dispose()}}const A$e=["align","autoplay","alt","checked","class","colspan","controls","data-code","data-href","disabled","draggable","height","href","loop","muted","playsinline","poster","rowspan","src","style","target","title","type","width","start"];function Z$e(s){const e=[Ti.http,Ti.https,Ti.mailto,Ti.data,Ti.file,Ti.vscodeFileResource,Ti.vscodeRemote,Ti.vscodeRemoteResource];return s.isTrusted&&e.push(Ti.command),{config:{ALLOWED_TAGS:s.allowedTags??[...t4e],ALLOWED_ATTR:A$e,ALLOW_UNKNOWN_PROTOCOLS:!0},allowedSchemes:e}}function S$e(s){return typeof s=="string"?s:N$e(s)}function N$e(s,e){let t=s.value??"";t.length>1e5&&(t=`${t.substr(0,1e5)}…`);const i=zNe(t,{async:!1,renderer:e?W$e.value:V$e.value}).replace(/&(#\d+|[a-zA-Z]+);/g,n=>R$e.get(n)??n);return l6({isTrusted:!1},i).toString()}const R$e=new Map([[""",'"'],[" "," "],["&","&"],["'","'"],["<","<"],[">",">"]]);function ONe(){const s=new _Ne;return s.code=({text:e})=>e,s.blockquote=({text:e})=>e+`
- `,s.html=e=>"",s.heading=function({tokens:e}){return this.parser.parseInline(e)+`
- `},s.hr=()=>"",s.list=function({items:e}){return e.map(t=>this.listitem(t)).join(`
- `)+`
- `},s.listitem=({text:e})=>e+`
- `,s.paragraph=function({tokens:e}){return this.parser.parseInline(e)+`
- `},s.table=function({header:e,rows:t}){return e.map(i=>this.tablecell(i)).join(" ")+`
- `+t.map(i=>i.map(n=>this.tablecell(n)).join(" ")).join(`
- `)+`
- `},s.tablerow=({text:e})=>e,s.tablecell=function({tokens:e}){return this.parser.parseInline(e)},s.strong=({text:e})=>e,s.em=({text:e})=>e,s.codespan=({text:e})=>e,s.br=e=>`
- `,s.del=({text:e})=>e,s.image=e=>"",s.text=({text:e})=>e,s.link=({text:e})=>e,s}const V$e=new qu(s=>ONe()),W$e=new qu(()=>{const s=ONe();return s.code=({text:e})=>`
- \`\`\`
- ${e}
- \`\`\`
- `,s});function TX(s){let e="";return s.forEach(t=>{e+=t.raw}),e}function jNe(s){var e,t;if(s.tokens)for(let i=s.tokens.length-1;i>=0;i--){const n=s.tokens[i];if(n.type==="text"){const o=n.raw.split(`
- `),r=o[o.length-1];if(r.includes("`"))return B$e(s);if(r.includes("**"))return E$e(s);if(r.match(/\*\w/))return L$e(s);if(r.match(/(^|\s)__\w/))return D$e(s);if(r.match(/(^|\s)_\w/))return v$e(s);if(y$e(r)||Q$e(r)&&s.tokens.slice(0,i).some(l=>l.type==="text"&&l.raw.match(/\[[^\]]*$/))){const l=s.tokens.slice(i+1);return((e=l[0])==null?void 0:e.type)==="link"&&((t=l[1])==null?void 0:t.type)==="text"&&l[1].raw.match(/^ *"[^"]*$/)||r.match(/^[^"]* +"[^"]*$/)?x$e(s):k$e(s)}else if(r.match(/(^|\s)\[\w*/))return I$e(s)}}}function y$e(s){return!!s.match(/(^|\s)\[.*\]\(\w*/)}function Q$e(s){return!!s.match(/^[^\[]*\]\([^\)]*$/)}function M$e(s){var a;const e=s.items[s.items.length-1],t=e.tokens?e.tokens[e.tokens.length-1]:void 0;let i;if((t==null?void 0:t.type)==="text"&&!("inRawBlock"in e)&&(i=jNe(t)),!i||i.type!=="paragraph")return;const n=TX(s.items.slice(0,-1)),o=(a=e.raw.match(/^(\s*(-|\d+\.|\*) +)/))==null?void 0:a[0];if(!o)return;const r=o+TX(e.tokens.slice(0,-1))+i.raw,l=r9(n+r)[0];if(l.type==="list")return l}const w$e=3;function T$e(s){for(let e=0;e<w$e;e++){const t=C$e(s);if(t)s=t;else break}return s}function C$e(s){let e,t;for(e=0;e<s.length;e++){const i=s[e];if(i.type==="paragraph"&&i.raw.match(/(\n|^)\|/)){t=G$e(s.slice(e));break}if(e===s.length-1&&i.type==="list"){const n=M$e(i);if(n){t=[n];break}}if(e===s.length-1&&i.type==="paragraph"){const n=jNe(i);if(n){t=[n];break}}}if(t){const i=[...s.slice(0,e),...t];return i.links=s.links,i}return null}function B$e(s){return tA(s,"`")}function L$e(s){return tA(s,"*")}function v$e(s){return tA(s,"_")}function k$e(s){return tA(s,")")}function x$e(s){return tA(s,'")')}function I$e(s){return tA(s,"](https://microsoft.com)")}function E$e(s){return tA(s,"**")}function D$e(s){return tA(s,"__")}function tA(s,e){const t=TX(Array.isArray(s)?s:[s]);return r9(t+e)[0]}function G$e(s){const e=TX(s),t=e.split(`
- `);let i,n=!1;for(let o=0;o<t.length;o++){const r=t[o].trim();if(typeof i>"u"&&r.match(/^\s*\|/)){const l=r.match(/(\|[^\|]+)(?=\||$)/g);l&&(i=l.length)}else if(typeof i=="number")if(r.match(/^\s*\|/)){if(o!==t.length-1)return;n=!0}else return}if(typeof i=="number"&&i>0){const o=n?t.slice(0,-1).join(`
- `):e,r=!!o.match(/\|\s*$/),l=o+(r?"":"|")+`
- |${" --- |".repeat(i)}`;return r9(l)}}function Xue(s,e){return $Ze(s,e),ei(()=>eSe(s))}const K0=class K0{static createEmpty(e,t){const i=K0.defaultTokenMetadata,n=new Uint32Array(2);return n[0]=e.length,n[1]=i,new K0(n,e,t)}static createFromTextAndMetadata(e,t){let i=0,n="";const o=new Array;for(const{text:r,metadata:l}of e)o.push(i+r.length,l),i+=r.length,n+=r;return new K0(new Uint32Array(o),n,t)}constructor(e,t,i){this._lineTokensBrand=void 0,this._tokens=e,this._tokensCount=this._tokens.length>>>1,this._text=t,this.languageIdCodec=i}equals(e){return e instanceof K0?this.slicedEquals(e,0,this._tokensCount):!1}slicedEquals(e,t,i){if(this._text!==e._text||this._tokensCount!==e._tokensCount)return!1;const n=t<<1,o=n+(i<<1);for(let r=n;r<o;r++)if(this._tokens[r]!==e._tokens[r])return!1;return!0}getLineContent(){return this._text}getCount(){return this._tokensCount}getStartOffset(e){return e>0?this._tokens[e-1<<1]:0}getMetadata(e){return this._tokens[(e<<1)+1]}getLanguageId(e){const t=this._tokens[(e<<1)+1],i=Fd.getLanguageId(t);return this.languageIdCodec.decodeLanguageId(i)}getStandardTokenType(e){const t=this._tokens[(e<<1)+1];return Fd.getTokenType(t)}getForeground(e){const t=this._tokens[(e<<1)+1];return Fd.getForeground(t)}getClassName(e){const t=this._tokens[(e<<1)+1];return Fd.getClassNameFromMetadata(t)}getInlineStyle(e,t){const i=this._tokens[(e<<1)+1];return Fd.getInlineStyleFromMetadata(i,t)}getPresentation(e){const t=this._tokens[(e<<1)+1];return Fd.getPresentationFromMetadata(t)}getEndOffset(e){return this._tokens[e<<1]}findTokenIndexAtOffset(e){return K0.findIndexInTokensArray(this._tokens,e)}inflate(){return this}sliceAndInflate(e,t,i){return new Voe(this,e,t,i)}static convertToEndOffset(e,t){const n=(e.length>>>1)-1;for(let o=0;o<n;o++)e[o<<1]=e[o+1<<1];e[n<<1]=t}static findIndexInTokensArray(e,t){if(e.length<=2)return 0;let i=0,n=(e.length>>>1)-1;for(;i<n;){const o=i+Math.floor((n-i)/2),r=e[o<<1];if(r===t)return o+1;r<t?i=o+1:r>t&&(n=o)}return i}withInserted(e){if(e.length===0)return this;let t=0,i=0,n="";const o=new Array;let r=0;for(;;){const l=t<this._tokensCount?this._tokens[t<<1]:-1,a=i<e.length?e[i]:null;if(l!==-1&&(a===null||l<=a.offset)){n+=this._text.substring(r,l);const d=this._tokens[(t<<1)+1];o.push(n.length,d),t++,r=l}else if(a){if(a.offset>r){n+=this._text.substring(r,a.offset);const d=this._tokens[(t<<1)+1];o.push(n.length,d),r=a.offset}n+=a.text,o.push(n.length,a.tokenMetadata),i++}else break}return new K0(new Uint32Array(o),n,this.languageIdCodec)}getTokenText(e){const t=this.getStartOffset(e),i=this.getEndOffset(e);return this._text.substring(t,i)}forEach(e){const t=this.getCount();for(let i=0;i<t;i++)e(i)}};K0.defaultTokenMetadata=(32768|2<<24)>>>0;let Pr=K0;class Voe{constructor(e,t,i,n){this._source=e,this._startOffset=t,this._endOffset=i,this._deltaOffset=n,this._firstTokenIndex=e.findTokenIndexAtOffset(t),this.languageIdCodec=e.languageIdCodec,this._tokensCount=0;for(let o=this._firstTokenIndex,r=e.getCount();o<r&&!(e.getStartOffset(o)>=i);o++)this._tokensCount++}getMetadata(e){return this._source.getMetadata(this._firstTokenIndex+e)}getLanguageId(e){return this._source.getLanguageId(this._firstTokenIndex+e)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(e){return e instanceof Voe?this._startOffset===e._startOffset&&this._endOffset===e._endOffset&&this._deltaOffset===e._deltaOffset&&this._source.slicedEquals(e._source,this._firstTokenIndex,this._tokensCount):!1}getCount(){return this._tokensCount}getStandardTokenType(e){return this._source.getStandardTokenType(this._firstTokenIndex+e)}getForeground(e){return this._source.getForeground(this._firstTokenIndex+e)}getEndOffset(e){const t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset}getClassName(e){return this._source.getClassName(this._firstTokenIndex+e)}getInlineStyle(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)}getPresentation(e){return this._source.getPresentation(this._firstTokenIndex+e)}findTokenIndexAtOffset(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex}getTokenText(e){const t=this._firstTokenIndex+e,i=this._source.getStartOffset(t),n=this._source.getEndOffset(t);let o=this._source.getTokenText(t);return i<this._startOffset&&(o=o.substring(this._startOffset-i)),n>this._endOffset&&(o=o.substring(0,o.length-(n-this._endOffset))),o}forEach(e){for(let t=0;t<this.getCount();t++)e(t)}}function J$e(s,e){const t=e.lineNumber;if(!s.tokenization.isCheapToTokenize(t))return;s.tokenization.forceTokenization(t);const i=s.tokenization.getLineTokens(t),n=i.findTokenIndexAtOffset(e.column-1);return i.getStandardTokenType(n)}const Ly=new class{clone(){return this}equals(s){return this===s}};function Woe(s,e){return new Vse([new JB(0,"",s)],e)}function a9(s,e){const t=new Uint32Array(2);return t[0]=0,t[1]=(s<<0|0|0|32768|2<<24)>>>0,new V3(t,e===null?Ly:e)}const Yue={getInitialState:()=>Ly,tokenizeEncoded:(s,e,t)=>a9(0,t)};async function X$e(s,e,t){if(!t)return _ue(e,s.languageIdCodec,Yue);const i=await Ro.getOrCreate(t);return _ue(e,s.languageIdCodec,i||Yue)}function Y$e(s,e,t,i,n,o,r){let l="<div>",a=i,d=0,c=!0;for(let h=0,u=e.getCount();h<u;h++){const m=e.getEndOffset(h);if(m<=i)continue;let p="";for(;a<m&&a<n;a++){const g=s.charCodeAt(a);switch(g){case 9:{let f=o-(a+d)%o;for(d+=f-1;f>0;)r&&c?(p+=" ",c=!1):(p+=" ",c=!0),f--;break}case 60:p+="<",c=!1;break;case 62:p+=">",c=!1;break;case 38:p+="&",c=!1;break;case 0:p+="�",c=!1;break;case 65279:case 8232:case 8233:case 133:p+="�",c=!1;break;case 13:p+="​",c=!1;break;case 32:r&&c?(p+=" ",c=!1):(p+=" ",c=!0);break;default:p+=String.fromCharCode(g),c=!1}}if(l+=`<span style="${e.getInlineStyle(h,t)}">${p}</span>`,m>n||a>=n)break}return l+="</div>",l}function _ue(s,e,t){let i='<div class="monaco-tokenized-source">';const n=Kg(s);let o=t.getInitialState();for(let r=0,l=n.length;r<l;r++){const a=n[r];r>0&&(i+="<br/>");const d=t.tokenizeEncoded(a,!0,o);Pr.convertToEndOffset(d.tokens,a.length);const h=new Pr(d.tokens,a,e).inflate();let u=0;for(let m=0,p=h.getCount();m<p;m++){const g=h.getClassName(m),f=h.getEndOffset(m);i+=`<span class="${g}">${OC(a.substring(u,f))}</span>`,u=f}o=d.endState}return i+="</div>",i}var _$e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zue=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},a6,cQ;let $f=(cQ=class{constructor(e,t,i){this._options=e,this._languageService=t,this._openerService=i,this._onDidRenderAsync=new fe,this.onDidRenderAsync=this._onDidRenderAsync.event}dispose(){this._onDidRenderAsync.dispose()}render(e,t,i){if(!e)return{element:document.createElement("span"),dispose:()=>{}};const n=new De,o=n.add(l9(e,{...this._getRenderOptions(e,n),...t},i));return o.element.classList.add("rendered-markdown"),{element:o.element,dispose:()=>n.dispose()}}_getRenderOptions(e,t){return{codeBlockRenderer:async(i,n)=>{var a,d;let o;i?o=this._languageService.getLanguageIdByLanguageName(i):this._options.editor&&(o=(a=this._options.editor.getModel())==null?void 0:a.getLanguageId()),o||(o=Ya);const r=await X$e(this._languageService,n,o),l=document.createElement("span");if(l.innerHTML=((d=a6._ttpTokenizer)==null?void 0:d.createHTML(r))??r,this._options.editor){const c=this._options.editor.getOption(50);hl(l,c)}else this._options.codeBlockFontFamily&&(l.style.fontFamily=this._options.codeBlockFontFamily);return this._options.codeBlockFontSize!==void 0&&(l.style.fontSize=this._options.codeBlockFontSize),l},asyncRenderCallback:()=>this._onDidRenderAsync.fire(),actionHandler:{callback:i=>yoe(this._openerService,i,e.isTrusted),disposables:t}}}},a6=cQ,cQ._ttpTokenizer=lb("tokenizeToString",{createHTML(e){return e}}),cQ);$f=a6=_$e([zue(1,ao),zue(2,Bd)],$f);async function yoe(s,e,t){try{return await s.open(e,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:z$e(t)})}catch(i){return wi(i),!1}}function z$e(s){return s===!0?!0:s&&Array.isArray(s.enabledCommands)?s.enabledCommands:!1}const Fc=un("accessibilityService"),ik=new yt("accessibilityModeEnabled",!1);const Oue=2e4;let PZ,SD,d6,ND,c6;function O$e(s){PZ=document.createElement("div"),PZ.className="monaco-aria-container";const e=()=>{const i=document.createElement("div");return i.className="monaco-alert",i.setAttribute("role","alert"),i.setAttribute("aria-atomic","true"),PZ.appendChild(i),i};SD=e(),d6=e();const t=()=>{const i=document.createElement("div");return i.className="monaco-status",i.setAttribute("aria-live","polite"),i.setAttribute("aria-atomic","true"),PZ.appendChild(i),i};ND=t(),c6=t(),s.appendChild(PZ)}function ja(s){PZ&&(SD.textContent!==s?(dl(d6),CX(SD,s)):(dl(SD),CX(d6,s)))}function Xg(s){PZ&&(ND.textContent!==s?(dl(c6),CX(ND,s)):(dl(ND),CX(c6,s)))}function CX(s,e){dl(s),e.length>Oue&&(e=e.substr(0,Oue)),s.textContent=e,s.style.visibility="hidden",s.style.visibility="visible"}var j$e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Uw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Wp=gt;let h6=class extends ch{get _targetWindow(){return ai(this._target.targetElements[0])}get _targetDocumentElement(){return ai(this._target.targetElements[0]).document.documentElement}get isDisposed(){return this._isDisposed}get isMouseIn(){return this._lockMouseTracker.isMouseIn}get domNode(){return this._hover.containerDomNode}get onDispose(){return this._onDispose.event}get onRequestLayout(){return this._onRequestLayout.event}get anchor(){return this._hoverPosition===2?0:1}get x(){return this._x}get y(){return this._y}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked!==e&&(this._isLocked=e,this._hoverContainer.classList.toggle("locked",this._isLocked))}constructor(e,t,i,n,o,r){var u,m,p,g,f,b,U;super(),this._keybindingService=t,this._configurationService=i,this._openerService=n,this._instantiationService=o,this._accessibilityService=r,this._messageListeners=new De,this._isDisposed=!1,this._forcePosition=!1,this._x=0,this._y=0,this._isLocked=!1,this._enableFocusTraps=!1,this._addedFocusTrap=!1,this._onDispose=this._register(new fe),this._onRequestLayout=this._register(new fe),this._linkHandler=e.linkHandler||(S=>yoe(this._openerService,S,rp(e.content)?e.content.isTrusted:void 0)),this._target="targetElements"in e.target?e.target:new P$e(e.target),this._hoverPointer=(u=e.appearance)!=null&&u.showPointer?Wp("div.workbench-hover-pointer"):void 0,this._hover=this._register(new goe),this._hover.containerDomNode.classList.add("workbench-hover","fadeIn"),(m=e.appearance)!=null&&m.compact&&this._hover.containerDomNode.classList.add("workbench-hover","compact"),(p=e.appearance)!=null&&p.skipFadeInAnimation&&this._hover.containerDomNode.classList.add("skip-fade-in"),e.additionalClasses&&this._hover.containerDomNode.classList.add(...e.additionalClasses),(g=e.position)!=null&&g.forcePosition&&(this._forcePosition=!0),e.trapFocus&&(this._enableFocusTraps=!0),this._hoverPosition=((f=e.position)==null?void 0:f.hoverPosition)??3,this.onmousedown(this._hover.containerDomNode,S=>S.stopPropagation()),this.onkeydown(this._hover.containerDomNode,S=>{S.equals(9)&&this.dispose()}),this._register(Te(this._targetWindow,"blur",()=>this.dispose()));const l=Wp("div.hover-row.markdown-hover"),a=Wp("div.hover-contents");if(typeof e.content=="string")a.textContent=e.content,a.style.whiteSpace="pre-wrap";else if(Cr(e.content))a.appendChild(e.content),a.classList.add("html-hover-contents");else{const S=e.content,Z=this._instantiationService.createInstance($f,{codeBlockFontFamily:this._configurationService.getValue("editor").fontFamily||Xa.fontFamily}),{element:R}=Z.render(S,{actionHandler:{callback:y=>this._linkHandler(y),disposables:this._messageListeners},asyncRenderCallback:()=>{a.classList.add("code-hover-contents"),this.layout(),this._onRequestLayout.fire()}});a.appendChild(R)}if(l.appendChild(a),this._hover.contentsDomNode.appendChild(l),e.actions&&e.actions.length>0){const S=Wp("div.hover-row.status-bar"),Z=Wp("div.actions");e.actions.forEach(R=>{const y=this._keybindingService.lookupKeybinding(R.commandId),N=y?y.getLabel():null;n9.render(Z,{label:R.label,commandId:R.commandId,run:w=>{R.run(w),this.dispose()},iconClass:R.iconClass},N)}),S.appendChild(Z),this._hover.containerDomNode.appendChild(S)}this._hoverContainer=Wp("div.workbench-hover-container"),this._hoverPointer&&this._hoverContainer.appendChild(this._hoverPointer),this._hoverContainer.appendChild(this._hover.containerDomNode);let d;if(e.actions&&e.actions.length>0?d=!1:((b=e.persistence)==null?void 0:b.hideOnHover)===void 0?d=typeof e.content=="string"||rp(e.content)&&!e.content.value.includes("](")&&!e.content.value.includes("</a>"):d=e.persistence.hideOnHover,(U=e.appearance)!=null&&U.showHoverHint){const S=Wp("div.hover-row.status-bar"),Z=Wp("div.info");Z.textContent=F("hoverhint","Hold {0} key to mouse over",hn?"Option":"Alt"),S.appendChild(Z),this._hover.containerDomNode.appendChild(S)}const c=[...this._target.targetElements];d||c.push(this._hoverContainer);const h=this._register(new jue(c));if(this._register(h.onMouseOut(()=>{this._isLocked||this.dispose()})),d){const S=[...this._target.targetElements,this._hoverContainer];this._lockMouseTracker=this._register(new jue(S)),this._register(this._lockMouseTracker.onMouseOut(()=>{this._isLocked||this.dispose()}))}else this._lockMouseTracker=h}addFocusTrap(){if(!this._enableFocusTraps||this._addedFocusTrap)return;this._addedFocusTrap=!0;const e=this._hover.containerDomNode,t=this.findLastFocusableChild(this._hover.containerDomNode);if(t){const i=Dse(this._hoverContainer,Wp("div")),n=nt(this._hoverContainer,Wp("div"));i.tabIndex=0,n.tabIndex=0,this._register(Te(n,"focus",o=>{e.focus(),o.preventDefault()})),this._register(Te(i,"focus",o=>{t.focus(),o.preventDefault()}))}}findLastFocusableChild(e){if(e.hasChildNodes())for(let t=0;t<e.childNodes.length;t++){const i=e.childNodes.item(e.childNodes.length-t-1);if(i.nodeType===i.ELEMENT_NODE){const o=i;if(typeof o.tabIndex=="number"&&o.tabIndex>=0)return o}const n=this.findLastFocusableChild(i);if(n)return n}}render(e){var n;e.appendChild(this._hoverContainer);const i=this._hoverContainer.contains(this._hoverContainer.ownerDocument.activeElement)&&wNe(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),(n=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))==null?void 0:n.getAriaLabel());i&&Xg(i),this.layout(),this.addFocusTrap()}layout(){this._hover.containerDomNode.classList.remove("right-aligned"),this._hover.contentsDomNode.style.maxHeight="";const e=c=>{const h=oSe(c),u=c.getBoundingClientRect();return{top:u.top*h,bottom:u.bottom*h,right:u.right*h,left:u.left*h}},t=this._target.targetElements.map(c=>e(c)),{top:i,right:n,bottom:o,left:r}=t[0],l=n-r,a=o-i,d={top:i,right:n,bottom:o,left:r,width:l,height:a,center:{x:r+l/2,y:i+a/2}};if(this.adjustHorizontalHoverPosition(d),this.adjustVerticalHoverPosition(d),this.adjustHoverMaxHeight(d),this._hoverContainer.style.padding="",this._hoverContainer.style.margin="",this._hoverPointer){switch(this._hoverPosition){case 1:d.left+=3,d.right+=3,this._hoverContainer.style.paddingLeft="3px",this._hoverContainer.style.marginLeft="-3px";break;case 0:d.left-=3,d.right-=3,this._hoverContainer.style.paddingRight="3px",this._hoverContainer.style.marginRight="-3px";break;case 2:d.top+=3,d.bottom+=3,this._hoverContainer.style.paddingTop="3px",this._hoverContainer.style.marginTop="-3px";break;case 3:d.top-=3,d.bottom-=3,this._hoverContainer.style.paddingBottom="3px",this._hoverContainer.style.marginBottom="-3px";break}d.center.x=d.left+l/2,d.center.y=d.top+a/2}this.computeXCordinate(d),this.computeYCordinate(d),this._hoverPointer&&(this._hoverPointer.classList.remove("top"),this._hoverPointer.classList.remove("left"),this._hoverPointer.classList.remove("right"),this._hoverPointer.classList.remove("bottom"),this.setHoverPointerPosition(d)),this._hover.onContentsChanged()}computeXCordinate(e){const t=this._hover.containerDomNode.clientWidth+2;this._target.x!==void 0?this._x=this._target.x:this._hoverPosition===1?this._x=e.right:this._hoverPosition===0?this._x=e.left-t:(this._hoverPointer?this._x=e.center.x-this._hover.containerDomNode.clientWidth/2:this._x=e.left,this._x+t>=this._targetDocumentElement.clientWidth&&(this._hover.containerDomNode.classList.add("right-aligned"),this._x=Math.max(this._targetDocumentElement.clientWidth-t-2,this._targetDocumentElement.clientLeft))),this._x<this._targetDocumentElement.clientLeft&&(this._x=e.left+2)}computeYCordinate(e){this._target.y!==void 0?this._y=this._target.y:this._hoverPosition===3?this._y=e.top:this._hoverPosition===2?this._y=e.bottom-2:this._hoverPointer?this._y=e.center.y+this._hover.containerDomNode.clientHeight/2:this._y=e.bottom,this._y>this._targetWindow.innerHeight&&(this._y=e.bottom)}adjustHorizontalHoverPosition(e){if(this._target.x!==void 0)return;const t=this._hoverPointer?3:0;if(this._forcePosition){const i=t+2;this._hoverPosition===1?this._hover.containerDomNode.style.maxWidth=`${this._targetDocumentElement.clientWidth-e.right-i}px`:this._hoverPosition===0&&(this._hover.containerDomNode.style.maxWidth=`${e.left-i}px`);return}this._hoverPosition===1?this._targetDocumentElement.clientWidth-e.right<this._hover.containerDomNode.clientWidth+t&&(e.left>=this._hover.containerDomNode.clientWidth+t?this._hoverPosition=0:this._hoverPosition=2):this._hoverPosition===0&&(e.left<this._hover.containerDomNode.clientWidth+t&&(this._targetDocumentElement.clientWidth-e.right>=this._hover.containerDomNode.clientWidth+t?this._hoverPosition=1:this._hoverPosition=2),e.left-this._hover.containerDomNode.clientWidth-t<=this._targetDocumentElement.clientLeft&&(this._hoverPosition=1))}adjustVerticalHoverPosition(e){if(this._target.y!==void 0||this._forcePosition)return;const t=this._hoverPointer?3:0;this._hoverPosition===3?e.top-this._hover.containerDomNode.clientHeight-t<0&&(this._hoverPosition=2):this._hoverPosition===2&&e.bottom+this._hover.containerDomNode.clientHeight+t>this._targetWindow.innerHeight&&(this._hoverPosition=3)}adjustHoverMaxHeight(e){let t=this._targetWindow.innerHeight/2;if(this._forcePosition){const i=(this._hoverPointer?3:0)+2;this._hoverPosition===3?t=Math.min(t,e.top-i):this._hoverPosition===2&&(t=Math.min(t,this._targetWindow.innerHeight-e.bottom-i))}if(this._hover.containerDomNode.style.maxHeight=`${t}px`,this._hover.contentsDomNode.clientHeight<this._hover.contentsDomNode.scrollHeight){const i=`${this._hover.scrollbar.options.verticalScrollbarSize}px`;this._hover.contentsDomNode.style.paddingRight!==i&&(this._hover.contentsDomNode.style.paddingRight=i)}}setHoverPointerPosition(e){if(this._hoverPointer)switch(this._hoverPosition){case 0:case 1:{this._hoverPointer.classList.add(this._hoverPosition===0?"right":"left");const t=this._hover.containerDomNode.clientHeight;t>e.height?this._hoverPointer.style.top=`${e.center.y-(this._y-t)-3}px`:this._hoverPointer.style.top=`${Math.round(t/2)-3}px`;break}case 3:case 2:{this._hoverPointer.classList.add(this._hoverPosition===3?"bottom":"top");const t=this._hover.containerDomNode.clientWidth;let i=Math.round(t/2)-3;const n=this._x+i;(n<e.left||n>e.right)&&(i=e.center.x-this._x-3),this._hoverPointer.style.left=`${i}px`;break}}}focus(){this._hover.containerDomNode.focus()}dispose(){this._isDisposed||(this._onDispose.fire(),this._hoverContainer.remove(),this._messageListeners.dispose(),this._target.dispose(),super.dispose()),this._isDisposed=!0}};h6=j$e([Uw(1,qn),Uw(2,Hi),Uw(3,Bd),Uw(4,ti),Uw(5,Fc)],h6);class jue extends ch{get onMouseOut(){return this._onMouseOut.event}get isMouseIn(){return this._isMouseIn}constructor(e){super(),this._elements=e,this._isMouseIn=!0,this._onMouseOut=this._register(new fe),this._elements.forEach(t=>this.onmouseover(t,()=>this._onTargetMouseOver(t))),this._elements.forEach(t=>this.onmouseleave(t,()=>this._onTargetMouseLeave(t)))}_onTargetMouseOver(e){this._isMouseIn=!0,this._clearEvaluateMouseStateTimeout(e)}_onTargetMouseLeave(e){this._isMouseIn=!1,this._evaluateMouseState(e)}_evaluateMouseState(e){this._clearEvaluateMouseStateTimeout(e),this._mouseTimeout=ai(e).setTimeout(()=>this._fireIfMouseOutside(),0)}_clearEvaluateMouseStateTimeout(e){this._mouseTimeout&&(ai(e).clearTimeout(this._mouseTimeout),this._mouseTimeout=void 0)}_fireIfMouseOutside(){this._isMouseIn||this._onMouseOut.fire()}}class P$e{constructor(e){this._element=e,this.targetElements=[this._element]}dispose(){}}var Dl;(function(s){function e(o,r){if(o.start>=r.end||r.start>=o.end)return{start:0,end:0};const l=Math.max(o.start,r.start),a=Math.min(o.end,r.end);return a-l<=0?{start:0,end:0}:{start:l,end:a}}s.intersect=e;function t(o){return o.end-o.start<=0}s.isEmpty=t;function i(o,r){return!t(e(o,r))}s.intersects=i;function n(o,r){const l=[],a={start:o.start,end:Math.min(r.start,o.end)},d={start:Math.max(r.end,o.start),end:o.end};return t(a)||l.push(a),t(d)||l.push(d),l}s.relativeComplement=n})(Dl||(Dl={}));function H$e(s){const e=s;return!!e&&typeof e.x=="number"&&typeof e.y=="number"}var PU;(function(s){s[s.AVOID=0]="AVOID",s[s.ALIGN=1]="ALIGN"})(PU||(PU={}));function NW(s,e,t){const i=t.mode===PU.ALIGN?t.offset:t.offset+t.size,n=t.mode===PU.ALIGN?t.offset+t.size:t.offset;return t.position===0?e<=s-i?i:e<=n?n-e:Math.max(s-e,0):e<=n?n-e:e<=s-i?i:0}const m1=class m1 extends be{constructor(e,t){super(),this.container=null,this.useFixedPosition=!1,this.useShadowDOM=!1,this.delegate=null,this.toDisposeOnClean=be.None,this.toDisposeOnSetContainer=be.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=gt(".context-view"),La(this.view),this.setContainer(e,t),this._register(ei(()=>this.setContainer(null,1)))}setContainer(e,t){var n;this.useFixedPosition=t!==1;const i=this.useShadowDOM;if(this.useShadowDOM=t===3,!(e===this.container&&i===this.useShadowDOM)&&(this.container&&(this.toDisposeOnSetContainer.dispose(),this.view.remove(),this.shadowRoot&&(this.shadowRoot=null,(n=this.shadowRootHostElement)==null||n.remove(),this.shadowRootHostElement=null),this.container=null),e)){if(this.container=e,this.useShadowDOM){this.shadowRootHostElement=gt(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"});const r=document.createElement("style");r.textContent=K$e,this.shadowRoot.appendChild(r),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(gt("slot"))}else this.container.appendChild(this.view);const o=new De;m1.BUBBLE_UP_EVENTS.forEach(r=>{o.add(Fo(this.container,r,l=>{this.onDOMEvent(l,!1)}))}),m1.BUBBLE_DOWN_EVENTS.forEach(r=>{o.add(Fo(this.container,r,l=>{this.onDOMEvent(l,!0)},!0))}),this.toDisposeOnSetContainer=o}}show(e){var t,i;this.isVisible()&&this.hide(),dl(this.view),this.view.className="context-view monaco-component",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex=`${2575+(e.layer??0)}`,this.view.style.position=this.useFixedPosition?"fixed":"absolute",nc(this.view),this.toDisposeOnClean=e.render(this.view)||be.None,this.delegate=e,this.doLayout(),(i=(t=this.delegate).focus)==null||i.call(t)}getViewElement(){return this.view}layout(){var e,t;if(this.isVisible()){if(this.delegate.canRelayout===!1&&!(lp&&Bse.pointerEvents)){this.hide();return}(t=(e=this.delegate)==null?void 0:e.layout)==null||t.call(e),this.doLayout()}}doLayout(){if(!this.isVisible())return;const e=this.delegate.getAnchor();let t;if(Cr(e)){const u=Lo(e),m=oSe(e);t={top:u.top*m,left:u.left*m,width:u.width*m,height:u.height*m}}else H$e(e)?t={top:e.y,left:e.x,width:e.width||1,height:e.height||2}:t={top:e.posy,left:e.posx,width:2,height:2};const i=qd(this.view),n=Vf(this.view),o=this.delegate.anchorPosition||0,r=this.delegate.anchorAlignment||0,l=this.delegate.anchorAxisAlignment||0;let a,d;const c=VT();if(l===0){const u={offset:t.top-c.pageYOffset,size:t.height,position:o===0?0:1},m={offset:t.left,size:t.width,position:r===0?0:1,mode:PU.ALIGN};a=NW(c.innerHeight,n,u)+c.pageYOffset,Dl.intersects({start:a,end:a+n},{start:u.offset,end:u.offset+u.size})&&(m.mode=PU.AVOID),d=NW(c.innerWidth,i,m)}else{const u={offset:t.left,size:t.width,position:r===0?0:1},m={offset:t.top,size:t.height,position:o===0?0:1,mode:PU.ALIGN};d=NW(c.innerWidth,i,u),Dl.intersects({start:d,end:d+i},{start:u.offset,end:u.offset+u.size})&&(m.mode=PU.AVOID),a=NW(c.innerHeight,n,m)+c.pageYOffset}this.view.classList.remove("top","bottom","left","right"),this.view.classList.add(o===0?"bottom":"top"),this.view.classList.add(r===0?"left":"right"),this.view.classList.toggle("fixed",this.useFixedPosition);const h=Lo(this.container);this.view.style.top=`${a-(this.useFixedPosition?Lo(this.view).top:h.top)}px`,this.view.style.left=`${d-(this.useFixedPosition?Lo(this.view).left:h.left)}px`,this.view.style.width="initial"}hide(e){const t=this.delegate;this.delegate=null,t!=null&&t.onHide&&t.onHide(e),this.toDisposeOnClean.dispose(),La(this.view)}isVisible(){return!!this.delegate}onDOMEvent(e,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(e,ai(e).document.activeElement):t&&!wr(e.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}};m1.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],m1.BUBBLE_DOWN_EVENTS=["click"];let u6=m1;const K$e=`
- :host {
- all: initial; /* 1st rule so subsequent properties are reset. */
- }
- .codicon[class*='codicon-'] {
- font: normal normal normal 16px/1 codicon;
- display: inline-block;
- text-decoration: none;
- text-rendering: auto;
- text-align: center;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- user-select: none;
- -webkit-user-select: none;
- -ms-user-select: none;
- }
- :host {
- font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif;
- }
- :host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }
- :host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; }
- :host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; }
- :host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; }
- :host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; }
- :host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; }
- :host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; }
- :host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; }
- :host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; }
- :host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; }
- :host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; }
- :host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; }
- :host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; }
- :host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; }
- :host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; }
- `;var q$e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},$$e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let BX=class extends be{constructor(e){super(),this.layoutService=e,this.contextView=this._register(new u6(this.layoutService.mainContainer,1)),this.layout(),this._register(e.onDidLayoutContainer(()=>this.layout()))}showContextView(e,t,i){let n;t?t===this.layoutService.getContainer(ai(t))?n=1:i?n=3:n=2:n=1,this.contextView.setContainer(t??this.layoutService.activeContainer,n),this.contextView.show(e);const o={close:()=>{this.openContextView===o&&this.hideContextView()}};return this.openContextView=o,o}layout(){this.contextView.layout()}hideContextView(e){this.contextView.hide(e),this.openContextView=void 0}};BX=q$e([$$e(0,eA)],BX);class eet extends BX{getContextViewElement(){return this.contextView.getViewElement()}}class tet{constructor(e,t,i){this.hoverDelegate=e,this.target=t,this.fadeInAnimation=i}async update(e,t,i){if(this._cancellationTokenSource&&(this._cancellationTokenSource.dispose(!0),this._cancellationTokenSource=void 0),this.isDisposed)return;let n;if(e===void 0||Vd(e)||Cr(e))n=e;else if(!EB(e.markdown))n=e.markdown??e.markdownNotSupportedFallback;else{this._hoverWidget||this.show(F("iconLabel.loading","Loading..."),t,i),this._cancellationTokenSource=new go;const o=this._cancellationTokenSource.token;if(n=await e.markdown(o),n===void 0&&(n=e.markdownNotSupportedFallback),this.isDisposed||o.isCancellationRequested)return}this.show(n,t,i)}show(e,t,i){var o;const n=this._hoverWidget;if(this.hasContent(e)){const r={content:e,target:this.target,actions:i==null?void 0:i.actions,linkHandler:i==null?void 0:i.linkHandler,trapFocus:i==null?void 0:i.trapFocus,appearance:{showPointer:this.hoverDelegate.placement==="element",skipFadeInAnimation:!this.fadeInAnimation||!!n,showHoverHint:(o=i==null?void 0:i.appearance)==null?void 0:o.showHoverHint},position:{hoverPosition:2}};this._hoverWidget=this.hoverDelegate.showHover(r,t)}n==null||n.dispose()}hasContent(e){return e?rp(e)?!!e.value:!0:!1}get isDisposed(){var e;return(e=this._hoverWidget)==null?void 0:e.isDisposed}dispose(){var e,t;(e=this._hoverWidget)==null||e.dispose(),(t=this._cancellationTokenSource)==null||t.dispose(!0),this._cancellationTokenSource=void 0}}var iet=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Fw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let m6=class extends be{constructor(e,t,i,n,o){super(),this._instantiationService=e,this._keybindingService=i,this._layoutService=n,this._accessibilityService=o,this._managedHovers=new Map,t.onDidShowContextMenu(()=>this.hideHover()),this._contextViewHandler=this._register(new BX(this._layoutService))}showHover(e,t,i){var a,d,c,h;if(Pue(this._currentHoverOptions)===Pue(e)||this._currentHover&&((d=(a=this._currentHoverOptions)==null?void 0:a.persistence)!=null&&d.sticky))return;this._currentHoverOptions=e,this._lastHoverOptions=e;const n=e.trapFocus||this._accessibilityService.isScreenReaderOptimized(),o=Ql();i||(n&&o?o.classList.contains("monaco-hover")||(this._lastFocusedElementBeforeOpen=o):this._lastFocusedElementBeforeOpen=void 0);const r=new De,l=this._instantiationService.createInstance(h6,e);if((c=e.persistence)!=null&&c.sticky&&(l.isLocked=!0),l.onDispose(()=>{var m,p;((m=this._currentHover)==null?void 0:m.domNode)&&lSe(this._currentHover.domNode)&&((p=this._lastFocusedElementBeforeOpen)==null||p.focus()),this._currentHoverOptions===e&&(this._currentHoverOptions=void 0),r.dispose()},void 0,r),!e.container){const u=Cr(e.target)?e.target:e.target.targetElements[0];e.container=this._layoutService.getContainer(ai(u))}if(this._contextViewHandler.showContextView(new net(l,t),e.container),l.onRequestLayout(()=>this._contextViewHandler.layout(),void 0,r),(h=e.persistence)!=null&&h.sticky)r.add(Te(ai(e.container).document,ut.MOUSE_DOWN,u=>{wr(u.target,l.domNode)||this.doHideHover()}));else{if("targetElements"in e.target)for(const m of e.target.targetElements)r.add(Te(m,ut.CLICK,()=>this.hideHover()));else r.add(Te(e.target,ut.CLICK,()=>this.hideHover()));const u=Ql();if(u){const m=ai(u).document;r.add(Te(u,ut.KEY_DOWN,p=>{var g;return this._keyDown(p,l,!!((g=e.persistence)!=null&&g.hideOnKeyDown))})),r.add(Te(m,ut.KEY_DOWN,p=>{var g;return this._keyDown(p,l,!!((g=e.persistence)!=null&&g.hideOnKeyDown))})),r.add(Te(u,ut.KEY_UP,p=>this._keyUp(p,l))),r.add(Te(m,ut.KEY_UP,p=>this._keyUp(p,l)))}}if("IntersectionObserver"in Us){const u=new IntersectionObserver(p=>this._intersectionChange(p,l),{threshold:0}),m="targetElements"in e.target?e.target.targetElements[0]:e.target;u.observe(m),r.add(ei(()=>u.disconnect()))}return this._currentHover=l,l}hideHover(){var e;(e=this._currentHover)!=null&&e.isLocked||!this._currentHoverOptions||this.doHideHover()}doHideHover(){this._currentHover=void 0,this._currentHoverOptions=void 0,this._contextViewHandler.hideContextView()}_intersectionChange(e,t){e[e.length-1].isIntersecting||t.dispose()}showAndFocusLastHover(){this._lastHoverOptions&&this.showHover(this._lastHoverOptions,!0,!0)}_keyDown(e,t,i){var r,l;if(e.key==="Alt"){t.isLocked=!0;return}const n=new Ts(e);this._keybindingService.resolveKeyboardEvent(n).getSingleModifierDispatchChords().some(a=>!!a)||this._keybindingService.softDispatch(n,n.target).kind!==0||i&&(!((r=this._currentHoverOptions)!=null&&r.trapFocus)||e.key!=="Tab")&&(this.hideHover(),(l=this._lastFocusedElementBeforeOpen)==null||l.focus())}_keyUp(e,t){var i;e.key==="Alt"&&(t.isLocked=!1,t.isMouseIn||(this.hideHover(),(i=this._lastFocusedElementBeforeOpen)==null||i.focus()))}setupManagedHover(e,t,i,n){t.setAttribute("custom-hover","true"),t.title!==""&&(console.warn("HTML element already has a title attribute, which will conflict with the custom hover. Please remove the title attribute."),console.trace("Stack trace:",t.title),t.title="");let o,r;const l=(S,Z)=>{var y;const R=r!==void 0;S&&(r==null||r.dispose(),r=void 0),Z&&(o==null||o.dispose(),o=void 0),R&&((y=e.onDidHideHover)==null||y.call(e),r=void 0)},a=(S,Z,R,y)=>new om(async()=>{(!r||r.isDisposed)&&(r=new tet(e,R||t,S>0),await r.update(typeof i=="function"?i():i,Z,{...n,trapFocus:y}))},S);let d=!1;const c=Te(t,ut.MOUSE_DOWN,()=>{d=!0,l(!0,!0)},!0),h=Te(t,ut.MOUSE_UP,()=>{d=!1},!0),u=Te(t,ut.MOUSE_LEAVE,S=>{d=!1,l(!1,S.fromElement===t)},!0),m=S=>{if(o)return;const Z=new De,R={targetElements:[t],dispose:()=>{}};if(e.placement===void 0||e.placement==="mouse"){const y=N=>{R.x=N.x+10,Cr(N.target)&&Hue(N.target,t)!==t&&l(!0,!0)};Z.add(Te(t,ut.MOUSE_MOVE,y,!0))}o=Z,!(Cr(S.target)&&Hue(S.target,t)!==t)&&Z.add(a(e.delay,!1,R))},p=Te(t,ut.MOUSE_OVER,m,!0),g=()=>{if(d||o)return;const S={targetElements:[t],dispose:()=>{}},Z=new De,R=()=>l(!0,!0);Z.add(Te(t,ut.BLUR,R,!0)),Z.add(a(e.delay,!1,S)),o=Z};let f;const b=t.tagName.toLowerCase();b!=="input"&&b!=="textarea"&&(f=Te(t,ut.FOCUS,g,!0));const U={show:S=>{l(!1,!0),a(0,S,void 0,S)},hide:()=>{l(!0,!0)},update:async(S,Z)=>{i=S,await(r==null?void 0:r.update(i,void 0,Z))},dispose:()=>{this._managedHovers.delete(t),p.dispose(),u.dispose(),c.dispose(),h.dispose(),f==null||f.dispose(),l(!0,!0)}};return this._managedHovers.set(t,U),U}showManagedHover(e){const t=this._managedHovers.get(e);t&&t.show(!0)}dispose(){this._managedHovers.forEach(e=>e.dispose()),super.dispose()}};m6=iet([Fw(0,ti),Fw(1,Uc),Fw(2,qn),Fw(3,eA),Fw(4,Fc)],m6);function Pue(s){if(s!==void 0)return(s==null?void 0:s.id)??s}class net{get anchorPosition(){return this._hover.anchor}constructor(e,t=!1){this._hover=e,this._focus=t,this.layer=1}render(e){return this._hover.render(e),this._focus&&this._hover.focus(),this._hover}getAnchor(){return{x:this._hover.x,y:this._hover.y}}layout(){this._hover.layout()}}function Hue(s,e){for(e=e??ai(s).document.body;!s.hasAttribute("custom-hover")&&s!==e;)s=s.parentElement;return s}Fn(t0,m6,1);eu((s,e)=>{const t=s.getColor(fNe);t&&(e.addRule(`.monaco-workbench .workbench-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-workbench .workbench-hover hr { border-top: 1px solid ${t.transparent(.5)}; }`))});const nk=un("IWorkspaceEditService");class Qoe{constructor(e){this.metadata=e}static convert(e){return e.edits.map(t=>{if(NF.is(t))return NF.lift(t);if(L1.is(t))return L1.lift(t);throw new Error("Unsupported edit")})}}class NF extends Qoe{static is(e){return e instanceof NF?!0:_r(e)&&ni.isUri(e.resource)&&_r(e.textEdit)}static lift(e){return e instanceof NF?e:new NF(e.resource,e.textEdit,e.versionId,e.metadata)}constructor(e,t,i=void 0,n){super(n),this.resource=e,this.textEdit=t,this.versionId=i}}class L1 extends Qoe{static is(e){return e instanceof L1?!0:_r(e)&&(!!e.newResource||!!e.oldResource)}static lift(e){return e instanceof L1?e:new L1(e.oldResource,e.newResource,e.options,e.metadata)}constructor(e,t,i={},n){super(n),this.oldResource=e,this.newResource=t,this.options=i}}const fl={enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,renderGutterMenu:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:"inherit",diffAlgorithm:"advanced",accessibilityVerbose:!1,experimental:{showMoves:!1,showEmptyDecorations:!0,useTrueInlineView:!1},hideUnchangedRegions:{enabled:!1,contextLineCount:3,minimumLineCount:3,revealLineCount:20},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:900,useInlineViewWhenSpaceIsLimited:!0,compactMode:!1},sk=Object.freeze({id:"editor",order:5,type:"object",title:F("editorConfigurationTitle","Editor"),scope:5}),LX={...sk,properties:{"editor.tabSize":{type:"number",default:Yl.tabSize,minimum:1,markdownDescription:F("tabSize","The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:F("indentSize",'The number of spaces used for indentation or `"tabSize"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.')},"editor.insertSpaces":{type:"boolean",default:Yl.insertSpaces,markdownDescription:F("insertSpaces","Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:Yl.detectIndentation,markdownDescription:F("detectIndentation","Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:Yl.trimAutoWhitespace,description:F("trimAutoWhitespace","Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:Yl.largeFileOptimizations,description:F("largeFileOptimizations","Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{enum:["off","currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[F("wordBasedSuggestions.off","Turn off Word Based Suggestions."),F("wordBasedSuggestions.currentDocument","Only suggest words from the active document."),F("wordBasedSuggestions.matchingDocuments","Suggest words from all open documents of the same language."),F("wordBasedSuggestions.allDocuments","Suggest words from all open documents.")],description:F("wordBasedSuggestions","Controls whether completions should be computed based on words in the document and from which documents they are computed.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[F("semanticHighlighting.true","Semantic highlighting enabled for all color themes."),F("semanticHighlighting.false","Semantic highlighting disabled for all color themes."),F("semanticHighlighting.configuredByTheme","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:F("semanticHighlighting.enabled","Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:F("stablePeek","Keep peek editors open even when double-clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:F("maxTokenizationLineLength","Lines above this length will not be tokenized for performance reasons")},"editor.experimental.asyncTokenization":{type:"boolean",default:!0,description:F("editor.experimental.asyncTokenization","Controls whether the tokenization should happen asynchronously on a web worker."),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:F("editor.experimental.asyncTokenizationLogging","Controls whether async tokenization should be logged. For debugging only.")},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:F("editor.experimental.asyncTokenizationVerification","Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only."),tags:["experimental"]},"editor.experimental.treeSitterTelemetry":{type:"boolean",default:!1,markdownDescription:F("editor.experimental.treeSitterTelemetry","Controls whether tree sitter parsing should be turned on and telemetry collected. Setting `editor.experimental.preferTreeSitter` for specific languages will take precedence."),tags:["experimental"]},"editor.language.brackets":{type:["array","null"],default:null,description:F("schema.brackets","Defines the bracket symbols that increase or decrease the indentation."),items:{type:"array",items:[{type:"string",description:F("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:F("schema.closeBracket","The closing bracket character or string sequence.")}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:F("schema.colorizedBracketPairs","Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled."),items:{type:"array",items:[{type:"string",description:F("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:F("schema.closeBracket","The closing bracket character or string sequence.")}]}},"diffEditor.maxComputationTime":{type:"number",default:fl.maxComputationTime,description:F("maxComputationTime","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.maxFileSize":{type:"number",default:fl.maxFileSize,description:F("maxFileSize","Maximum file size in MB for which to compute diffs. Use 0 for no limit.")},"diffEditor.renderSideBySide":{type:"boolean",default:fl.renderSideBySide,description:F("sideBySide","Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:fl.renderSideBySideInlineBreakpoint,description:F("renderSideBySideInlineBreakpoint","If the diff editor width is smaller than this value, the inline view is used.")},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:fl.useInlineViewWhenSpaceIsLimited,description:F("useInlineViewWhenSpaceIsLimited","If enabled and the editor width is too small, the inline view is used.")},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:fl.renderMarginRevertIcon,description:F("renderMarginRevertIcon","When enabled, the diff editor shows arrows in its glyph margin to revert changes.")},"diffEditor.renderGutterMenu":{type:"boolean",default:fl.renderGutterMenu,description:F("renderGutterMenu","When enabled, the diff editor shows a special gutter for revert and stage actions.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:fl.ignoreTrimWhitespace,description:F("ignoreTrimWhitespace","When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:fl.renderIndicators,description:F("renderIndicators","Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:fl.diffCodeLens,description:F("codeLens","Controls whether the editor shows CodeLens.")},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:fl.diffWordWrap,markdownEnumDescriptions:[F("wordWrap.off","Lines will never wrap."),F("wordWrap.on","Lines will wrap at the viewport width."),F("wordWrap.inherit","Lines will wrap according to the {0} setting.","`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:fl.diffAlgorithm,markdownEnumDescriptions:[F("diffAlgorithm.legacy","Uses the legacy diffing algorithm."),F("diffAlgorithm.advanced","Uses the advanced diffing algorithm.")],tags:["experimental"]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:fl.hideUnchangedRegions.enabled,markdownDescription:F("hideUnchangedRegions.enabled","Controls whether the diff editor shows unchanged regions.")},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:fl.hideUnchangedRegions.revealLineCount,markdownDescription:F("hideUnchangedRegions.revealLineCount","Controls how many lines are used for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:fl.hideUnchangedRegions.minimumLineCount,markdownDescription:F("hideUnchangedRegions.minimumLineCount","Controls how many lines are used as a minimum for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:fl.hideUnchangedRegions.contextLineCount,markdownDescription:F("hideUnchangedRegions.contextLineCount","Controls how many lines are used as context when comparing unchanged regions."),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:fl.experimental.showMoves,markdownDescription:F("showMoves","Controls whether the diff editor should show detected code moves.")},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:fl.experimental.showEmptyDecorations,description:F("showEmptyDecorations","Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted.")},"diffEditor.experimental.useTrueInlineView":{type:"boolean",default:fl.experimental.useTrueInlineView,description:F("useTrueInlineView","If enabled and the editor uses the inline view, word changes are rendered inline.")}}};function set(s){return typeof s.type<"u"||typeof s.anyOf<"u"}for(const s of bW){const e=s.schema;if(typeof e<"u")if(set(e))LX.properties[`editor.${s.name}`]=e;else for(const t in e)Object.hasOwnProperty.call(e,t)&&(LX.properties[t]=e[t])}let nI=null;function PNe(){return nI===null&&(nI=Object.create(null),Object.keys(LX.properties).forEach(s=>{nI[s]=!0})),nI}function oet(s){return PNe()[`editor.${s}`]||!1}function ret(s){return PNe()[`diffEditor.${s}`]||!1}const aet=fo.as(rm.Configuration);aet.registerConfiguration(LX);class mo{static insert(e,t){return{range:new z(e.lineNumber,e.column,e.lineNumber,e.column),text:t,forceMoveMarkers:!0}}static delete(e){return{range:e,text:null}}static replace(e,t){return{range:e,text:t}}static replaceMove(e,t){return{range:e,text:t,forceMoveMarkers:!0}}}function sI(s){return Object.isFrozen(s)?s:WOe(s)}class ol{static createEmptyModel(e){return new ol({},[],[],void 0,e)}constructor(e,t,i,n,o){this._contents=e,this._keys=t,this._overrides=i,this.raw=n,this.logService=o,this.overrideConfigurations=new Map}get rawConfiguration(){var e;if(!this._rawConfiguration)if((e=this.raw)!=null&&e.length){const t=this.raw.map(i=>{if(i instanceof ol)return i;const n=new det("",this.logService);return n.parseRaw(i),n.configurationModel});this._rawConfiguration=t.reduce((i,n)=>n===i?n:i.merge(n),t[0])}else this._rawConfiguration=this;return this._rawConfiguration}get contents(){return this._contents}get overrides(){return this._overrides}get keys(){return this._keys}isEmpty(){return this._keys.length===0&&Object.keys(this._contents).length===0&&this._overrides.length===0}getValue(e){return e?Rhe(this.contents,e):this.contents}inspect(e,t){const i=this;return{get value(){return sI(i.rawConfiguration.getValue(e))},get override(){return t?sI(i.rawConfiguration.getOverrideValue(e,t)):void 0},get merged(){return sI(t?i.rawConfiguration.override(t).getValue(e):i.rawConfiguration.getValue(e))},get overrides(){const n=[];for(const{contents:o,identifiers:r,keys:l}of i.rawConfiguration.overrides){const a=new ol(o,l,[],void 0,i.logService).getValue(e);a!==void 0&&n.push({identifiers:r,value:a})}return n.length?sI(n):void 0}}}getOverrideValue(e,t){const i=this.getContentsForOverrideIdentifer(t);return i?e?Rhe(i,e):i:void 0}override(e){let t=this.overrideConfigurations.get(e);return t||(t=this.createOverrideConfigurationModel(e),this.overrideConfigurations.set(e,t)),t}merge(...e){var r,l;const t=$0(this.contents),i=$0(this.overrides),n=[...this.keys],o=(r=this.raw)!=null&&r.length?[...this.raw]:[this];for(const a of e)if(o.push(...(l=a.raw)!=null&&l.length?a.raw:[a]),!a.isEmpty()){this.mergeContents(t,a.contents);for(const d of a.overrides){const[c]=i.filter(h=>lo(h.identifiers,d.identifiers));c?(this.mergeContents(c.contents,d.contents),c.keys.push(...d.keys),c.keys=_f(c.keys)):i.push($0(d))}for(const d of a.keys)n.indexOf(d)===-1&&n.push(d)}return new ol(t,n,i,o.every(a=>a instanceof ol)?void 0:o,this.logService)}createOverrideConfigurationModel(e){const t=this.getContentsForOverrideIdentifer(e);if(!t||typeof t!="object"||!Object.keys(t).length)return this;const i={};for(const n of _f([...Object.keys(this.contents),...Object.keys(t)])){let o=this.contents[n];const r=t[n];r&&(typeof o=="object"&&typeof r=="object"?(o=$0(o),this.mergeContents(o,r)):o=r),i[n]=o}return new ol(i,this.keys,this.overrides,void 0,this.logService)}mergeContents(e,t){for(const i of Object.keys(t)){if(i in e&&_r(e[i])&&_r(t[i])){this.mergeContents(e[i],t[i]);continue}e[i]=$0(t[i])}}getContentsForOverrideIdentifer(e){let t=null,i=null;const n=o=>{o&&(i?this.mergeContents(i,o):i=$0(o))};for(const o of this.overrides)o.identifiers.length===1&&o.identifiers[0]===e?t=o.contents:o.identifiers.includes(e)&&n(o.contents);return n(t),i}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}setValue(e,t){this.updateValue(e,t,!1)}removeValue(e){const t=this.keys.indexOf(e);t!==-1&&(this.keys.splice(t,1),mKe(this.contents,e),xF.test(e)&&this.overrides.splice(this.overrides.findIndex(i=>lo(i.identifiers,pX(e))),1))}updateValue(e,t,i){if(wSe(this.contents,e,t,n=>this.logService.error(n)),i=i||this.keys.indexOf(e)===-1,i&&this.keys.push(e),xF.test(e)){const n=pX(e),o={identifiers:n,keys:Object.keys(this.contents[e]),contents:N8(this.contents[e],l=>this.logService.error(l))},r=this.overrides.findIndex(l=>lo(l.identifiers,n));r!==-1?this.overrides[r]=o:this.overrides.push(o)}}}class det{constructor(e,t){this._name=e,this.logService=t,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||ol.createEmptyModel(this.logService)}parseRaw(e,t){this._raw=e;const{contents:i,keys:n,overrides:o,restricted:r,hasExcludedProperties:l}=this.doParseRaw(e,t);this._configurationModel=new ol(i,n,o,l?[e]:void 0,this.logService),this._restrictedConfigurations=r||[]}doParseRaw(e,t){const i=fo.as(rm.Configuration).getConfigurationProperties(),n=this.filter(e,i,!0,t);e=n.raw;const o=N8(e,a=>this.logService.error(`Conflict in settings file ${this._name}: ${a}`)),r=Object.keys(e),l=this.toOverrides(e,a=>this.logService.error(`Conflict in settings file ${this._name}: ${a}`));return{contents:o,keys:r,overrides:l,restricted:n.restricted,hasExcludedProperties:n.hasExcludedProperties}}filter(e,t,i,n){var a,d,c;let o=!1;if(!(n!=null&&n.scopes)&&!(n!=null&&n.skipRestricted)&&!((a=n==null?void 0:n.exclude)!=null&&a.length))return{raw:e,restricted:[],hasExcludedProperties:o};const r={},l=[];for(const h in e)if(xF.test(h)&&i){const u=this.filter(e[h],t,!1,n);r[h]=u.raw,o=o||u.hasExcludedProperties,l.push(...u.restricted)}else{const u=t[h],m=u?typeof u.scope<"u"?u.scope:3:void 0;u!=null&&u.restricted&&l.push(h),!((d=n.exclude)!=null&&d.includes(h))&&((c=n.include)!=null&&c.includes(h)||(m===void 0||n.scopes===void 0||n.scopes.includes(m))&&!(n.skipRestricted&&(u!=null&&u.restricted)))?r[h]=e[h]:o=!0}return{raw:r,restricted:l,hasExcludedProperties:o}}toOverrides(e,t){const i=[];for(const n of Object.keys(e))if(xF.test(n)){const o={};for(const r in e[n])o[r]=e[n][r];i.push({identifiers:pX(n),keys:Object.keys(o),contents:N8(o,t)})}return i}}class cet{constructor(e,t,i,n,o,r,l,a,d,c,h,u,m){this.key=e,this.overrides=t,this._value=i,this.overrideIdentifiers=n,this.defaultConfiguration=o,this.policyConfiguration=r,this.applicationConfiguration=l,this.userConfiguration=a,this.localUserConfiguration=d,this.remoteUserConfiguration=c,this.workspaceConfiguration=h,this.folderConfigurationModel=u,this.memoryConfigurationModel=m}toInspectValue(e){return(e==null?void 0:e.value)!==void 0||(e==null?void 0:e.override)!==void 0||(e==null?void 0:e.overrides)!==void 0?e:void 0}get userInspectValue(){return this._userInspectValue||(this._userInspectValue=this.userConfiguration.inspect(this.key,this.overrides.overrideIdentifier)),this._userInspectValue}get user(){return this.toInspectValue(this.userInspectValue)}}class d9{constructor(e,t,i,n,o,r,l,a,d,c){this._defaultConfiguration=e,this._policyConfiguration=t,this._applicationConfiguration=i,this._localUserConfiguration=n,this._remoteUserConfiguration=o,this._workspaceConfiguration=r,this._folderConfigurations=l,this._memoryConfiguration=a,this._memoryConfigurationByResource=d,this.logService=c,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new Or,this._userConfiguration=null}getValue(e,t,i){return this.getConsolidatedConfigurationModel(e,t,i).getValue(e)}updateValue(e,t,i={}){let n;i.resource?(n=this._memoryConfigurationByResource.get(i.resource),n||(n=ol.createEmptyModel(this.logService),this._memoryConfigurationByResource.set(i.resource,n))):n=this._memoryConfiguration,t===void 0?n.removeValue(e):n.setValue(e,t),i.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(e,t,i){const n=this.getConsolidatedConfigurationModel(e,t,i),o=this.getFolderConfigurationModelForResource(t.resource,i),r=t.resource?this._memoryConfigurationByResource.get(t.resource)||this._memoryConfiguration:this._memoryConfiguration,l=new Set;for(const a of n.overrides)for(const d of a.identifiers)n.getOverrideValue(e,d)!==void 0&&l.add(d);return new cet(e,t,n.getValue(e),l.size?[...l]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,i?this._workspaceConfiguration:void 0,o||void 0,r)}get applicationConfiguration(){return this._applicationConfiguration}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration)),this._userConfiguration}get localUserConfiguration(){return this._localUserConfiguration}get remoteUserConfiguration(){return this._remoteUserConfiguration}getConsolidatedConfigurationModel(e,t,i){let n=this.getConsolidatedConfigurationModelForResource(t,i);return t.overrideIdentifier&&(n=n.override(t.overrideIdentifier)),!this._policyConfiguration.isEmpty()&&this._policyConfiguration.getValue(e)!==void 0&&(n=n.merge(this._policyConfiguration)),n}getConsolidatedConfigurationModelForResource({resource:e},t){let i=this.getWorkspaceConsolidatedConfiguration();if(t&&e){const n=t.getFolder(e);n&&(i=this.getFolderConsolidatedConfiguration(n.uri)||i);const o=this._memoryConfigurationByResource.get(e);o&&(i=i.merge(o))}return i}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(e){let t=this._foldersConsolidatedConfigurations.get(e);if(!t){const i=this.getWorkspaceConsolidatedConfiguration(),n=this._folderConfigurations.get(e);n?(t=i.merge(n),this._foldersConsolidatedConfigurations.set(e,t)):t=i}return t}getFolderConfigurationModelForResource(e,t){if(t&&e){const i=t.getFolder(e);if(i)return this._folderConfigurations.get(i.uri)}}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},policy:{contents:this._policyConfiguration.contents,overrides:this._policyConfiguration.overrides,keys:this._policyConfiguration.keys},application:{contents:this.applicationConfiguration.contents,overrides:this.applicationConfiguration.overrides,keys:this.applicationConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce((e,t)=>{const{contents:i,overrides:n,keys:o}=this._folderConfigurations.get(t);return e.push([t,{contents:i,overrides:n,keys:o}]),e},[])}}static parse(e,t){const i=this.parseConfigurationModel(e.defaults,t),n=this.parseConfigurationModel(e.policy,t),o=this.parseConfigurationModel(e.application,t),r=this.parseConfigurationModel(e.user,t),l=this.parseConfigurationModel(e.workspace,t),a=e.folders.reduce((d,c)=>(d.set(ni.revive(c[0]),this.parseConfigurationModel(c[1],t)),d),new Or);return new d9(i,n,o,r,ol.createEmptyModel(t),l,a,ol.createEmptyModel(t),new Or,t)}static parseConfigurationModel(e,t){return new ol(e.contents,e.keys,e.overrides,void 0,t)}}class het{constructor(e,t,i,n,o){this.change=e,this.previous=t,this.currentConfiguraiton=i,this.currentWorkspace=n,this.logService=o,this._marker=`
- `,this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=".".charCodeAt(0),this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const r of e.keys)this.affectedKeys.add(r);for(const[,r]of e.overrides)for(const l of r)this.affectedKeys.add(l);this._affectsConfigStr=this._marker;for(const r of this.affectedKeys)this._affectsConfigStr+=r+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=d9.parse(this.previous.data,this.logService)),this._previousConfiguration}affectsConfiguration(e,t){var l;const i=this._marker+e,n=this._affectsConfigStr.indexOf(i);if(n<0)return!1;const o=n+i.length;if(o>=this._affectsConfigStr.length)return!1;const r=this._affectsConfigStr.charCodeAt(o);if(r!==this._markerCode1&&r!==this._markerCode2)return!1;if(t){const a=this.previousConfiguration?this.previousConfiguration.getValue(e,t,(l=this.previous)==null?void 0:l.workspace):void 0,d=this.currentConfiguraiton.getValue(e,t,this.currentWorkspace);return!lc(a,d)}return!0}}class uet{constructor(){this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._enabled=!0}get enabled(){return this._enabled}enable(){this._enabled=!0,this._onDidChange.fire()}disable(){this._enabled=!1,this._onDidChange.fire()}}const qC=new uet,vX={kind:0},met={kind:1};function pet(s,e,t){return{kind:2,commandId:s,commandArgs:e,isBubble:t}}class $C{constructor(e,t,i){var n;this._log=i,this._defaultKeybindings=e,this._defaultBoundCommands=new Map;for(const o of e){const r=o.command;r&&r.charAt(0)!=="-"&&this._defaultBoundCommands.set(r,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=$C.handleRemovals([].concat(e).concat(t));for(let o=0,r=this._keybindings.length;o<r;o++){const l=this._keybindings[o];if(l.chords.length===0)continue;const a=(n=l.when)==null?void 0:n.substituteConstants();a&&a.type===0||this._addKeyPress(l.chords[0],l)}}static _isTargetedForRemoval(e,t,i){if(t){for(let n=0;n<t.length;n++)if(t[n]!==e.chords[n])return!1}return!(i&&i.type!==1&&(!e.when||!V4e(i,e.when)))}static handleRemovals(e){const t=new Map;for(let n=0,o=e.length;n<o;n++){const r=e[n];if(r.command&&r.command.charAt(0)==="-"){const l=r.command.substring(1);t.has(l)?t.get(l).push(r):t.set(l,[r])}}if(t.size===0)return e;const i=[];for(let n=0,o=e.length;n<o;n++){const r=e[n];if(!r.command||r.command.length===0){i.push(r);continue}if(r.command.charAt(0)==="-")continue;const l=t.get(r.command);if(!l||!r.isDefault){i.push(r);continue}let a=!1;for(const d of l){const c=d.when;if(this._isTargetedForRemoval(r,d.chords,c)){a=!0;break}}if(!a){i.push(r);continue}}return i}_addKeyPress(e,t){const i=this._map.get(e);if(typeof i>"u"){this._map.set(e,[t]),this._addToLookupMap(t);return}for(let n=i.length-1;n>=0;n--){const o=i[n];if(o.command===t.command)continue;let r=!0;for(let l=1;l<o.chords.length&&l<t.chords.length;l++)if(o.chords[l]!==t.chords[l]){r=!1;break}r&&$C.whenIsEntirelyIncluded(o.when,t.when)&&this._removeFromLookupMap(o)}i.push(t),this._addToLookupMap(t)}_addToLookupMap(e){if(!e.command)return;let t=this._lookupMap.get(e.command);typeof t>"u"?(t=[e],this._lookupMap.set(e.command,t)):t.push(e)}_removeFromLookupMap(e){if(!e.command)return;const t=this._lookupMap.get(e.command);if(!(typeof t>"u")){for(let i=0,n=t.length;i<n;i++)if(t[i]===e){t.splice(i,1);return}}}static whenIsEntirelyIncluded(e,t){return!t||t.type===1?!0:!e||e.type===1?!1:F8(e,t)}getKeybindings(){return this._keybindings}lookupPrimaryKeybinding(e,t){const i=this._lookupMap.get(e);if(typeof i>"u"||i.length===0)return null;if(i.length===1)return i[0];for(let n=i.length-1;n>=0;n--){const o=i[n];if(t.contextMatchesRules(o.when))return o}return i[i.length-1]}resolve(e,t,i){const n=[...t,i];this._log(`| Resolving ${n}`);const o=this._map.get(n[0]);if(o===void 0)return this._log("\\ No keybinding entries."),vX;let r=null;if(n.length<2)r=o;else{r=[];for(let a=0,d=o.length;a<d;a++){const c=o[a];if(n.length>c.chords.length)continue;let h=!0;for(let u=1;u<n.length;u++)if(c.chords[u]!==n[u]){h=!1;break}h&&r.push(c)}}const l=this._findCommand(e,r);return l?n.length<l.chords.length?(this._log(`\\ From ${r.length} keybinding entries, awaiting ${l.chords.length-n.length} more chord(s), when: ${Kue(l.when)}, source: ${que(l)}.`),met):(this._log(`\\ From ${r.length} keybinding entries, matched ${l.command}, when: ${Kue(l.when)}, source: ${que(l)}.`),pet(l.command,l.commandArgs,l.bubble)):(this._log(`\\ From ${r.length} keybinding entries, no when clauses matched the context.`),vX)}_findCommand(e,t){for(let i=t.length-1;i>=0;i--){const n=t[i];if($C._contextMatchesRules(e,n.when))return n}return null}static _contextMatchesRules(e,t){return t?t.evaluate(e):!0}}function Kue(s){return s?`${s.serialize()}`:"no when condition"}function que(s){return s.extensionId?s.isBuiltinExtension?`built-in extension ${s.extensionId}`:`user extension ${s.extensionId}`:s.isDefault?"built-in":"user"}const get=/^(cursor|delete|undo|redo|tab|editor\.action\.clipboard)/;class fet extends be{get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:Ut.None}get inChordMode(){return this._currentChords.length>0}constructor(e,t,i,n,o){super(),this._contextKeyService=e,this._commandService=t,this._telemetryService=i,this._notificationService=n,this._logService=o,this._onDidUpdateKeybindings=this._register(new fe),this._currentChords=[],this._currentChordChecker=new vse,this._currentChordStatusMessage=null,this._ignoreSingleModifiers=RW.EMPTY,this._currentSingleModifier=null,this._currentSingleModifierClearTimeout=new om,this._currentlyDispatchingCommandId=null,this._logging=!1}dispose(){super.dispose()}_log(e){this._logging&&this._logService.info(`[KeybindingService]: ${e}`)}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybinding(e,t){const i=this._getResolver().lookupPrimaryKeybinding(e,t||this._contextKeyService);if(i)return i.resolvedKeybinding}dispatchEvent(e,t){return this._dispatch(e,t)}softDispatch(e,t){this._log("/ Soft dispatching keyboard event");const i=this.resolveKeyboardEvent(e);if(i.hasMultipleChords())return console.warn("keyboard event should not be mapped to multiple chords"),vX;const[n]=i.getDispatchChords();if(n===null)return this._log("\\ Keyboard event cannot be dispatched"),vX;const o=this._contextKeyService.getContext(t),r=this._currentChords.map(({keypress:l})=>l);return this._getResolver().resolve(o,r,n)}_scheduleLeaveChordMode(){const e=Date.now();this._currentChordChecker.cancelAndSet(()=>{if(!this._documentHasFocus()){this._leaveChordMode();return}Date.now()-e>5e3&&this._leaveChordMode()},500)}_expectAnotherChord(e,t){switch(this._currentChords.push({keypress:e,label:t}),this._currentChords.length){case 0:throw Ase("impossible");case 1:this._currentChordStatusMessage=this._notificationService.status(F("first.chord","({0}) was pressed. Waiting for second key of chord...",t));break;default:{const i=this._currentChords.map(({label:n})=>n).join(", ");this._currentChordStatusMessage=this._notificationService.status(F("next.chord","({0}) was pressed. Waiting for next key of chord...",i))}}this._scheduleLeaveChordMode(),qC.enabled&&qC.disable()}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChords=[],qC.enable()}_dispatch(e,t){return this._doDispatch(this.resolveKeyboardEvent(e),t,!1)}_singleModifierDispatch(e,t){const i=this.resolveKeyboardEvent(e),[n]=i.getSingleModifierDispatchChords();if(n)return this._ignoreSingleModifiers.has(n)?(this._log(`+ Ignoring single modifier ${n} due to it being pressed together with other keys.`),this._ignoreSingleModifiers=RW.EMPTY,this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1):(this._ignoreSingleModifiers=RW.EMPTY,this._currentSingleModifier===null?(this._log(`+ Storing single modifier for possible chord ${n}.`),this._currentSingleModifier=n,this._currentSingleModifierClearTimeout.cancelAndSet(()=>{this._log("+ Clearing single modifier due to 300ms elapsed."),this._currentSingleModifier=null},300),!1):n===this._currentSingleModifier?(this._log(`/ Dispatching single modifier chord ${n} ${n}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(i,t,!0)):(this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${n}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1));const[o]=i.getChords();return this._ignoreSingleModifiers=new RW(o),this._currentSingleModifier!==null&&this._log("+ Clearing single modifier due to other key up."),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1}_doDispatch(e,t,i=!1){let n=!1;if(e.hasMultipleChords())return console.warn("Unexpected keyboard event mapped to multiple chords"),!1;let o=null,r=null;if(i){const[c]=e.getSingleModifierDispatchChords();o=c,r=c?[c]:[]}else[o]=e.getDispatchChords(),r=this._currentChords.map(({keypress:c})=>c);if(o===null)return this._log("\\ Keyboard event cannot be dispatched in keydown phase."),n;const l=this._contextKeyService.getContext(t),a=e.getLabel(),d=this._getResolver().resolve(l,r,o);switch(d.kind){case 0:{if(this._logService.trace("KeybindingService#dispatch",a,"[ No matching keybinding ]"),this.inChordMode){const c=this._currentChords.map(({label:h})=>h).join(", ");this._log(`+ Leaving multi-chord mode: Nothing bound to "${c}, ${a}".`),this._notificationService.status(F("missing.chord","The key combination ({0}, {1}) is not a command.",c,a),{hideAfter:10*1e3}),this._leaveChordMode(),n=!0}return n}case 1:return this._logService.trace("KeybindingService#dispatch",a,"[ Several keybindings match - more chords needed ]"),n=!0,this._expectAnotherChord(o,a),this._log(this._currentChords.length===1?"+ Entering multi-chord mode...":"+ Continuing multi-chord mode..."),n;case 2:{if(this._logService.trace("KeybindingService#dispatch",a,`[ Will dispatch command ${d.commandId} ]`),d.commandId===null||d.commandId===""){if(this.inChordMode){const c=this._currentChords.map(({label:h})=>h).join(", ");this._log(`+ Leaving chord mode: Nothing bound to "${c}, ${a}".`),this._notificationService.status(F("missing.chord","The key combination ({0}, {1}) is not a command.",c,a),{hideAfter:10*1e3}),this._leaveChordMode(),n=!0}}else{this.inChordMode&&this._leaveChordMode(),d.isBubble||(n=!0),this._log(`+ Invoking command ${d.commandId}.`),this._currentlyDispatchingCommandId=d.commandId;try{typeof d.commandArgs>"u"?this._commandService.executeCommand(d.commandId).then(void 0,c=>this._notificationService.warn(c)):this._commandService.executeCommand(d.commandId,d.commandArgs).then(void 0,c=>this._notificationService.warn(c))}finally{this._currentlyDispatchingCommandId=null}get.test(d.commandId)||this._telemetryService.publicLog2("workbenchActionExecuted",{id:d.commandId,from:"keybinding",detail:e.getUserSettingsLabel()??void 0})}return n}}}mightProducePrintableCharacter(e){return e.ctrlKey||e.metaKey?!1:e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30}}const v_=class v_{constructor(e){this._ctrlKey=e?e.ctrlKey:!1,this._shiftKey=e?e.shiftKey:!1,this._altKey=e?e.altKey:!1,this._metaKey=e?e.metaKey:!1}has(e){switch(e){case"ctrl":return this._ctrlKey;case"shift":return this._shiftKey;case"alt":return this._altKey;case"meta":return this._metaKey}}};v_.EMPTY=new v_(null);let RW=v_;class $ue{constructor(e,t,i,n,o,r,l){this._resolvedKeybindingItemBrand=void 0,this.resolvedKeybinding=e,this.chords=e?p6(e.getDispatchChords()):[],e&&this.chords.length===0&&(this.chords=p6(e.getSingleModifierDispatchChords())),this.bubble=t?t.charCodeAt(0)===94:!1,this.command=this.bubble?t.substr(1):t,this.commandArgs=i,this.when=n,this.isDefault=o,this.extensionId=r,this.isBuiltinExtension=l}}function p6(s){const e=[];for(let t=0,i=s.length;t<i;t++){const n=s[t];if(!n)return[];e.push(n)}return e}class c9{constructor(e,t,i=t){this.modifierLabels=[null],this.modifierLabels[2]=e,this.modifierLabels[1]=t,this.modifierLabels[3]=i}toLabel(e,t,i){if(t.length===0)return null;const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=i(l);if(a===null)return null;n[o]=Aet(l,a,this.modifierLabels[e])}return n.join(" ")}}const Moe=new c9({ctrlKey:"⌃",shiftKey:"⇧",altKey:"⌥",metaKey:"⌘",separator:""},{ctrlKey:F({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:F({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:F({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:F({key:"windowsKey",comment:["This is the short form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:F({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:F({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:F({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:F({key:"superKey",comment:["This is the short form for the Super key on the keyboard"]},"Super"),separator:"+"}),bet=new c9({ctrlKey:F({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:F({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:F({key:"optKey.long",comment:["This is the long form for the Alt/Option key on the keyboard"]},"Option"),metaKey:F({key:"cmdKey.long",comment:["This is the long form for the Command key on the keyboard"]},"Command"),separator:"+"},{ctrlKey:F({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:F({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:F({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:F({key:"windowsKey.long",comment:["This is the long form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:F({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:F({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:F({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:F({key:"superKey.long",comment:["This is the long form for the Super key on the keyboard"]},"Super"),separator:"+"}),Uet=new c9({ctrlKey:"Ctrl",shiftKey:"Shift",altKey:"Alt",metaKey:"Cmd",separator:"+"},{ctrlKey:"Ctrl",shiftKey:"Shift",altKey:"Alt",metaKey:"Super",separator:"+"}),Fet=new c9({ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"cmd",separator:"+"},{ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"win",separator:"+"},{ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"meta",separator:"+"});function Aet(s,e,t){if(e===null)return"";const i=[];return s.ctrlKey&&i.push(t.ctrlKey),s.shiftKey&&i.push(t.shiftKey),s.altKey&&i.push(t.altKey),s.metaKey&&i.push(t.metaKey),e!==""&&i.push(e),i.join(t.separator)}class Zet extends zPe{constructor(e,t){if(super(),t.length===0)throw Xh("chords");this._os=e,this._chords=t}getLabel(){return Moe.toLabel(this._os,this._chords,e=>this._getLabel(e))}getAriaLabel(){return bet.toLabel(this._os,this._chords,e=>this._getAriaLabel(e))}getElectronAccelerator(){return this._chords.length>1||this._chords[0].isDuplicateModifierCase()?null:Uet.toLabel(this._os,this._chords,e=>this._getElectronAccelerator(e))}getUserSettingsLabel(){return Fet.toLabel(this._os,this._chords,e=>this._getUserSettingsLabel(e))}hasMultipleChords(){return this._chords.length>1}getChords(){return this._chords.map(e=>this._getChord(e))}_getChord(e){return new _Pe(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,this._getLabel(e),this._getAriaLabel(e))}getDispatchChords(){return this._chords.map(e=>this._getChordDispatch(e))}getSingleModifierDispatchChords(){return this._chords.map(e=>this._getSingleModifierChordDispatch(e))}}class mL extends Zet{constructor(e,t){super(t,e)}_keyCodeToUILabel(e){if(this._os===2)switch(e){case 15:return"←";case 16:return"↑";case 17:return"→";case 18:return"↓"}return df.toString(e)}_getLabel(e){return e.isDuplicateModifierCase()?"":this._keyCodeToUILabel(e.keyCode)}_getAriaLabel(e){return e.isDuplicateModifierCase()?"":df.toString(e.keyCode)}_getElectronAccelerator(e){return df.toElectronAccelerator(e.keyCode)}_getUserSettingsLabel(e){if(e.isDuplicateModifierCase())return"";const t=df.toUserSettingsUS(e.keyCode);return t&&t.toLowerCase()}_getChordDispatch(e){return mL.getDispatchStr(e)}static getDispatchStr(e){if(e.isModifierKey())return null;let t="";return e.ctrlKey&&(t+="ctrl+"),e.shiftKey&&(t+="shift+"),e.altKey&&(t+="alt+"),e.metaKey&&(t+="meta+"),t+=df.toString(e.keyCode),t}_getSingleModifierChordDispatch(e){return e.keyCode===5&&!e.shiftKey&&!e.altKey&&!e.metaKey?"ctrl":e.keyCode===4&&!e.ctrlKey&&!e.altKey&&!e.metaKey?"shift":e.keyCode===6&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey?"alt":e.keyCode===57&&!e.ctrlKey&&!e.shiftKey&&!e.altKey?"meta":null}static _scanCodeToKeyCode(e){const t=Rse[e];if(t!==-1)return t;switch(e){case 10:return 31;case 11:return 32;case 12:return 33;case 13:return 34;case 14:return 35;case 15:return 36;case 16:return 37;case 17:return 38;case 18:return 39;case 19:return 40;case 20:return 41;case 21:return 42;case 22:return 43;case 23:return 44;case 24:return 45;case 25:return 46;case 26:return 47;case 27:return 48;case 28:return 49;case 29:return 50;case 30:return 51;case 31:return 52;case 32:return 53;case 33:return 54;case 34:return 55;case 35:return 56;case 36:return 22;case 37:return 23;case 38:return 24;case 39:return 25;case 40:return 26;case 41:return 27;case 42:return 28;case 43:return 29;case 44:return 30;case 45:return 21;case 51:return 88;case 52:return 86;case 53:return 92;case 54:return 94;case 55:return 93;case 56:return 0;case 57:return 85;case 58:return 95;case 59:return 91;case 60:return 87;case 61:return 89;case 62:return 90;case 106:return 97}return 0}static _toKeyCodeChord(e){if(!e)return null;if(e instanceof jf)return e;const t=this._scanCodeToKeyCode(e.scanCode);return t===0?null:new jf(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,t)}static resolveKeybinding(e,t){const i=p6(e.chords.map(n=>this._toKeyCodeChord(n)));return i.length>0?[new mL(i,t)]:[]}}const vy=un("labelService"),HNe=un("progressService"),mae=class mae{constructor(e){this.callback=e}report(e){this._value=e,this.callback(this._value)}};mae.None=Object.freeze({report(){}});let Hm=mae;const iA=un("editorProgressService");class Net{constructor(){this._value="",this._pos=0}reset(e){return this._value=e,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos<this._value.length-1}cmp(e){const t=e.charCodeAt(0),i=this._value.charCodeAt(this._pos);return t-i}value(){return this._value[this._pos]}}class Ret{constructor(e=!0){this._caseSensitive=e}reset(e){return this._value=e,this._from=0,this._to=0,this.next()}hasNext(){return this._to<this._value.length}next(){this._from=this._to;let e=!0;for(;this._to<this._value.length;this._to++)if(this._value.charCodeAt(this._to)===46)if(e)this._from++;else break;else e=!1;return this}cmp(e){return this._caseSensitive?Wse(e,this._value,0,e.length,this._from,this._to):zv(e,this._value,0,e.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}class Vet{constructor(e=!0,t=!0){this._splitOnBackslash=e,this._caseSensitive=t}reset(e){this._from=0,this._to=0,this._value=e,this._valueLen=e.length;for(let t=e.length-1;t>=0;t--,this._valueLen--){const i=this._value.charCodeAt(t);if(!(i===47||this._splitOnBackslash&&i===92))break}return this.next()}hasNext(){return this._to<this._valueLen}next(){this._from=this._to;let e=!0;for(;this._to<this._valueLen;this._to++){const t=this._value.charCodeAt(this._to);if(t===47||this._splitOnBackslash&&t===92)if(e)this._from++;else break;else e=!1}return this}cmp(e){return this._caseSensitive?Wse(e,this._value,0,e.length,this._from,this._to):zv(e,this._value,0,e.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}class Wet{constructor(e,t){this._ignorePathCasing=e,this._ignoreQueryAndFragment=t,this._states=[],this._stateIdx=0}reset(e){return this._value=e,this._states=[],this._value.scheme&&this._states.push(1),this._value.authority&&this._states.push(2),this._value.path&&(this._pathIterator=new Vet(!1,!this._ignorePathCasing(e)),this._pathIterator.reset(e.path),this._pathIterator.value()&&this._states.push(3)),this._ignoreQueryAndFragment(e)||(this._value.query&&this._states.push(4),this._value.fragment&&this._states.push(5)),this._stateIdx=0,this}next(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()?this._pathIterator.next():this._stateIdx+=1,this}hasNext(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()||this._stateIdx<this._states.length-1}cmp(e){if(this._states[this._stateIdx]===1)return n8(e,this._value.scheme);if(this._states[this._stateIdx]===2)return n8(e,this._value.authority);if(this._states[this._stateIdx]===3)return this._pathIterator.cmp(e);if(this._states[this._stateIdx]===4)return zB(e,this._value.query);if(this._states[this._stateIdx]===5)return zB(e,this._value.fragment);throw new Error}value(){if(this._states[this._stateIdx]===1)return this._value.scheme;if(this._states[this._stateIdx]===2)return this._value.authority;if(this._states[this._stateIdx]===3)return this._pathIterator.value();if(this._states[this._stateIdx]===4)return this._value.query;if(this._states[this._stateIdx]===5)return this._value.fragment;throw new Error}}class oI{constructor(){this.height=1}rotateLeft(){const e=this.right;return this.right=e.left,e.left=this,this.updateHeight(),e.updateHeight(),e}rotateRight(){const e=this.left;return this.left=e.right,e.right=this,this.updateHeight(),e.updateHeight(),e}updateHeight(){this.height=1+Math.max(this.heightLeft,this.heightRight)}balanceFactor(){return this.heightRight-this.heightLeft}get heightLeft(){var e;return((e=this.left)==null?void 0:e.height)??0}get heightRight(){var e;return((e=this.right)==null?void 0:e.height)??0}}class v1{static forUris(e=()=>!1,t=()=>!1){return new v1(new Wet(e,t))}static forStrings(){return new v1(new Net)}static forConfigKeys(){return new v1(new Ret)}constructor(e){this._iter=e}clear(){this._root=void 0}set(e,t){const i=this._iter.reset(e);let n;this._root||(this._root=new oI,this._root.segment=i.value());const o=[];for(n=this._root;;){const l=i.cmp(n.segment);if(l>0)n.left||(n.left=new oI,n.left.segment=i.value()),o.push([-1,n]),n=n.left;else if(l<0)n.right||(n.right=new oI,n.right.segment=i.value()),o.push([1,n]),n=n.right;else if(i.hasNext())i.next(),n.mid||(n.mid=new oI,n.mid.segment=i.value()),o.push([0,n]),n=n.mid;else break}const r=n.value;n.value=t,n.key=e;for(let l=o.length-1;l>=0;l--){const a=o[l][1];a.updateHeight();const d=a.balanceFactor();if(d<-1||d>1){const c=o[l][0],h=o[l+1][0];if(c===1&&h===1)o[l][1]=a.rotateLeft();else if(c===-1&&h===-1)o[l][1]=a.rotateRight();else if(c===1&&h===-1)a.right=o[l+1][1]=o[l+1][1].rotateRight(),o[l][1]=a.rotateLeft();else if(c===-1&&h===1)a.left=o[l+1][1]=o[l+1][1].rotateLeft(),o[l][1]=a.rotateRight();else throw new Error;if(l>0)switch(o[l-1][0]){case-1:o[l-1][1].left=o[l][1];break;case 1:o[l-1][1].right=o[l][1];break;case 0:o[l-1][1].mid=o[l][1];break}else this._root=o[0][1]}}return r}get(e){var t;return(t=this._getNode(e))==null?void 0:t.value}_getNode(e){const t=this._iter.reset(e);let i=this._root;for(;i;){const n=t.cmp(i.segment);if(n>0)i=i.left;else if(n<0)i=i.right;else if(t.hasNext())t.next(),i=i.mid;else break}return i}has(e){const t=this._getNode(e);return!((t==null?void 0:t.value)===void 0&&(t==null?void 0:t.mid)===void 0)}delete(e){return this._delete(e,!1)}deleteSuperstr(e){return this._delete(e,!0)}_delete(e,t){const i=this._iter.reset(e),n=[];let o=this._root;for(;o;){const r=i.cmp(o.segment);if(r>0)n.push([-1,o]),o=o.left;else if(r<0)n.push([1,o]),o=o.right;else if(i.hasNext())i.next(),n.push([0,o]),o=o.mid;else break}if(o){if(t?(o.left=void 0,o.mid=void 0,o.right=void 0,o.height=1):(o.key=void 0,o.value=void 0),!o.mid&&!o.value)if(o.left&&o.right){const r=this._min(o.right);if(r.key){const{key:l,value:a,segment:d}=r;this._delete(r.key,!1),o.key=l,o.value=a,o.segment=d}}else{const r=o.left??o.right;if(n.length>0){const[l,a]=n[n.length-1];switch(l){case-1:a.left=r;break;case 0:a.mid=r;break;case 1:a.right=r;break}}else this._root=r}for(let r=n.length-1;r>=0;r--){const l=n[r][1];l.updateHeight();const a=l.balanceFactor();if(a>1?(l.right.balanceFactor()>=0||(l.right=l.right.rotateRight()),n[r][1]=l.rotateLeft()):a<-1&&(l.left.balanceFactor()<=0||(l.left=l.left.rotateLeft()),n[r][1]=l.rotateRight()),r>0)switch(n[r-1][0]){case-1:n[r-1][1].left=n[r][1];break;case 1:n[r-1][1].right=n[r][1];break;case 0:n[r-1][1].mid=n[r][1];break}else this._root=n[0][1]}}}_min(e){for(;e.left;)e=e.left;return e}findSubstr(e){const t=this._iter.reset(e);let i=this._root,n;for(;i;){const o=t.cmp(i.segment);if(o>0)i=i.left;else if(o<0)i=i.right;else if(t.hasNext())t.next(),n=i.value||n,i=i.mid;else break}return i&&i.value||n}findSuperstr(e){return this._findSuperstrOrElement(e,!1)}_findSuperstrOrElement(e,t){const i=this._iter.reset(e);let n=this._root;for(;n;){const o=i.cmp(n.segment);if(o>0)n=n.left;else if(o<0)n=n.right;else if(i.hasNext())i.next(),n=n.mid;else return n.mid?this._entries(n.mid):t?n.value:void 0}}forEach(e){for(const[t,i]of this)e(i,t)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(e){const t=[];return this._dfsEntries(e,t),t[Symbol.iterator]()}_dfsEntries(e,t){e&&(e.left&&this._dfsEntries(e.left,t),e.value&&t.push([e.key,e.value]),e.mid&&this._dfsEntries(e.mid,t),e.right&&this._dfsEntries(e.right,t))}}const WN=un("contextService");function g6(s){const e=s;return typeof(e==null?void 0:e.id)=="string"&&ni.isUri(e.uri)}function yet(s){const e=s;return typeof(e==null?void 0:e.id)=="string"&&!g6(s)&&!Tet(s)}const Qet={id:"ext-dev"},Met={id:"empty-window"};function wet(s,e){if(typeof s=="string"||typeof s>"u")return typeof s=="string"?{id:AF(s)}:e?Qet:Met;const t=s;return t.configuration?{id:t.id,configPath:t.configuration}:t.folders.length===1?{id:t.id,uri:t.folders[0].uri}:{id:t.id}}function Tet(s){const e=s;return typeof(e==null?void 0:e.id)=="string"&&ni.isUri(e.configPath)}class Cet{constructor(e,t){this.raw=t,this.uri=e.uri,this.index=e.index,this.name=e.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}const f6="code-workspace";F("codeWorkspace","Code Workspace");const KNe="4064f6ec-cb38-4ad0-af64-ee6467e63c82";function Bet(s){return s.id===KNe}var b6;(function(s){s.inspectTokensAction=F("inspectTokens","Developer: Inspect Tokens")})(b6||(b6={}));var kX;(function(s){s.gotoLineActionLabel=F("gotoLineActionLabel","Go to Line/Column...")})(kX||(kX={}));var U6;(function(s){s.helpQuickAccessActionLabel=F("helpQuickAccess","Show all Quick Access Providers")})(U6||(U6={}));var xX;(function(s){s.quickCommandActionLabel=F("quickCommandActionLabel","Command Palette"),s.quickCommandHelp=F("quickCommandActionHelp","Show And Run Commands")})(xX||(xX={}));var pL;(function(s){s.quickOutlineActionLabel=F("quickOutlineActionLabel","Go to Symbol..."),s.quickOutlineByCategoryActionLabel=F("quickOutlineByCategoryActionLabel","Go to Symbol by Category...")})(pL||(pL={}));var F6;(function(s){s.editorViewAccessibleLabel=F("editorViewAccessibleLabel","Editor content")})(F6||(F6={}));var A6;(function(s){s.toggleHighContrast=F("toggleHighContrast","Toggle High Contrast Theme")})(A6||(A6={}));var Z6;(function(s){s.bulkEditServiceSummary=F("bulkEditServiceSummary","Made {0} edits in {1} files")})(Z6||(Z6={}));const qNe=un("workspaceTrustManagementService");let ky=[],woe=[],$Ne=[];function rI(s,e=!1){Let(s,!1,e)}function Let(s,e,t){const i=vet(s,e);ky.push(i),i.userConfigured?$Ne.push(i):woe.push(i),t&&!i.userConfigured&&ky.forEach(n=>{n.mime===i.mime||n.userConfigured||(i.extension&&n.extension===i.extension&&console.warn(`Overwriting extension <<${i.extension}>> to now point to mime <<${i.mime}>>`),i.filename&&n.filename===i.filename&&console.warn(`Overwriting filename <<${i.filename}>> to now point to mime <<${i.mime}>>`),i.filepattern&&n.filepattern===i.filepattern&&console.warn(`Overwriting filepattern <<${i.filepattern}>> to now point to mime <<${i.mime}>>`),i.firstline&&n.firstline===i.firstline&&console.warn(`Overwriting firstline <<${i.firstline}>> to now point to mime <<${i.mime}>>`))})}function vet(s,e){return{id:s.id,mime:s.mime,filename:s.filename,extension:s.extension,filepattern:s.filepattern,firstline:s.firstline,userConfigured:e,filenameLowercase:s.filename?s.filename.toLowerCase():void 0,extensionLowercase:s.extension?s.extension.toLowerCase():void 0,filepatternLowercase:s.filepattern?rNe(s.filepattern.toLowerCase()):void 0,filepatternOnPath:s.filepattern?s.filepattern.indexOf($o.sep)>=0:!1}}function ket(){ky=ky.filter(s=>s.userConfigured),woe=[]}function xet(s,e){return Iet(s,e).map(t=>t.id)}function Iet(s,e){let t;if(s)switch(s.scheme){case Ti.file:t=s.fsPath;break;case Ti.data:{t=EF.parseMetaData(s).get(EF.META_DATA_LABEL);break}case Ti.vscodeNotebookCell:t=void 0;break;default:t=s.path}if(!t)return[{id:"unknown",mime:Bo.unknown}];t=t.toLowerCase();const i=AF(t),n=eme(t,i,$Ne);if(n)return[n,{id:Ya,mime:Bo.text}];const o=eme(t,i,woe);if(o)return[o,{id:Ya,mime:Bo.text}];if(e){const r=Eet(e);if(r)return[r,{id:Ya,mime:Bo.text}]}return[{id:"unknown",mime:Bo.unknown}]}function eme(s,e,t){var r;let i,n,o;for(let l=t.length-1;l>=0;l--){const a=t[l];if(e===a.filenameLowercase){i=a;break}if(a.filepattern&&(!n||a.filepattern.length>n.filepattern.length)){const d=a.filepatternOnPath?s:e;(r=a.filepatternLowercase)!=null&&r.call(a,d)&&(n=a)}a.extension&&(!o||a.extension.length>o.extension.length)&&e.endsWith(a.extensionLowercase)&&(o=a)}if(i)return i;if(n)return n;if(o)return o}function Eet(s){if(Cse(s)&&(s=s.substr(1)),s.length>0)for(let e=ky.length-1;e>=0;e--){const t=ky[e];if(!t.firstline)continue;const i=s.match(t.firstline);if(i&&i.length>0)return t}}const lI=Object.prototype.hasOwnProperty,tme="vs.editor.nullLanguage";class Det{constructor(){this._languageIdToLanguage=[],this._languageToLanguageId=new Map,this._register(tme,0),this._register(Ya,1),this._nextLanguageId=2}_register(e,t){this._languageIdToLanguage[t]=e,this._languageToLanguageId.set(e,t)}register(e){if(this._languageToLanguageId.has(e))return;const t=this._nextLanguageId++;this._register(e,t)}encodeLanguageId(e){return this._languageToLanguageId.get(e)||0}decodeLanguageId(e){return this._languageIdToLanguage[e]||tme}}const UB=class UB extends be{constructor(e=!0,t=!1){super(),this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,UB.instanceCount++,this._warnOnOverwrite=t,this.languageIdCodec=new Det,this._dynamicLanguages=[],this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},e&&(this._initializeFromRegistry(),this._register(Vy.onDidChangeLanguages(i=>{this._initializeFromRegistry()})))}dispose(){UB.instanceCount--,super.dispose()}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},ket();const e=[].concat(Vy.getLanguages()).concat(this._dynamicLanguages);this._registerLanguages(e)}_registerLanguages(e){for(const t of e)this._registerLanguage(t);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach(t=>{const i=this._languages[t];i.name&&(this._nameMap[i.name]=i.identifier),i.aliases.forEach(n=>{this._lowercaseNameMap[n.toLowerCase()]=i.identifier}),i.mimetypes.forEach(n=>{this._mimeTypesMap[n]=i.identifier})}),fo.as(rm.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds()),this._onDidChange.fire()}_registerLanguage(e){const t=e.id;let i;lI.call(this._languages,t)?i=this._languages[t]:(this.languageIdCodec.register(t),i={identifier:t,name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[],icons:[]},this._languages[t]=i),this._mergeLanguage(i,e)}_mergeLanguage(e,t){const i=t.id;let n=null;if(Array.isArray(t.mimetypes)&&t.mimetypes.length>0&&(e.mimetypes.push(...t.mimetypes),n=t.mimetypes[0]),n||(n=`text/x-${i}`,e.mimetypes.push(n)),Array.isArray(t.extensions)){t.configuration?e.extensions=t.extensions.concat(e.extensions):e.extensions=e.extensions.concat(t.extensions);for(const l of t.extensions)rI({id:i,mime:n,extension:l},this._warnOnOverwrite)}if(Array.isArray(t.filenames))for(const l of t.filenames)rI({id:i,mime:n,filename:l},this._warnOnOverwrite),e.filenames.push(l);if(Array.isArray(t.filenamePatterns))for(const l of t.filenamePatterns)rI({id:i,mime:n,filepattern:l},this._warnOnOverwrite);if(typeof t.firstLine=="string"&&t.firstLine.length>0){let l=t.firstLine;l.charAt(0)!=="^"&&(l="^"+l);try{const a=new RegExp(l);TPe(a)||rI({id:i,mime:n,firstline:a},this._warnOnOverwrite)}catch(a){console.warn(`[${t.id}]: Invalid regular expression \`${l}\`: `,a)}}e.aliases.push(i);let o=null;if(typeof t.aliases<"u"&&Array.isArray(t.aliases)&&(t.aliases.length===0?o=[null]:o=t.aliases),o!==null)for(const l of o)!l||l.length===0||e.aliases.push(l);const r=o!==null&&o.length>0;if(!(r&&o[0]===null)){const l=(r?o[0]:null)||i;(r||!e.name)&&(e.name=l)}t.configuration&&e.configurationFiles.push(t.configuration),t.icon&&e.icons.push(t.icon)}isRegisteredLanguageId(e){return e?lI.call(this._languages,e):!1}getRegisteredLanguageIds(){return Object.keys(this._languages)}getLanguageIdByLanguageName(e){const t=e.toLowerCase();return lI.call(this._lowercaseNameMap,t)?this._lowercaseNameMap[t]:null}getLanguageIdByMimeType(e){return e&&lI.call(this._mimeTypesMap,e)?this._mimeTypesMap[e]:null}guessLanguageIdByFilepathOrFirstLine(e,t){return!e&&!t?[]:xet(e,t)}};UB.instanceCount=0;let S6=UB;const oh=(s,e)=>s===e;function IX(s=oh){return(e,t)=>lo(e,t,s)}function Get(){return(s,e)=>s.equals(e)}function N6(s,e,t){if(t!==void 0){const i=s;return i==null||e===void 0||e===null?e===i:t(i,e)}else{const i=s;return(n,o)=>n==null||o===void 0||o===null?o===n:i(n,o)}}function EX(s,e){if(s===e)return!0;if(Array.isArray(s)&&Array.isArray(e)){if(s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(!EX(s[t],e[t]))return!1;return!0}if(s&&typeof s=="object"&&e&&typeof e=="object"&&Object.getPrototypeOf(s)===Object.prototype&&Object.getPrototypeOf(e)===Object.prototype){const t=s,i=e,n=Object.keys(t),o=Object.keys(i),r=new Set(o);if(n.length!==o.length)return!1;for(const l of n)if(!r.has(l)||!EX(t[l],i[l]))return!1;return!0}return!1}class Kl{constructor(e,t,i){this.owner=e,this.debugNameSource=t,this.referenceFn=i}getDebugName(e){return Jet(e,this)}}const ime=new Map,R6=new WeakMap;function Jet(s,e){const t=R6.get(s);if(t)return t;const i=Xet(s,e);if(i){let n=ime.get(i)??0;n++,ime.set(i,n);const o=n===1?i:`${i}#${n}`;return R6.set(s,o),o}}function Xet(s,e){const t=R6.get(s);if(t)return t;const i=e.owner?_et(e.owner)+".":"";let n;const o=e.debugNameSource;if(o!==void 0)if(typeof o=="function"){if(n=o(),n!==void 0)return i+n}else return i+o;const r=e.referenceFn;if(r!==void 0&&(n=Toe(r),n!==void 0))return i+n;if(e.owner!==void 0){const l=Yet(e.owner,s);if(l!==void 0)return i+l}}function Yet(s,e){for(const t in s)if(s[t]===e)return t}const nme=new Map,sme=new WeakMap;function _et(s){const e=sme.get(s);if(e)return e;const t=zet(s);let i=nme.get(t)??0;i++,nme.set(t,i);const n=i===1?t:`${t}#${i}`;return sme.set(s,n),n}function zet(s){const e=s.constructor;return e?e.name:"Object"}function Toe(s){const e=s.toString(),i=/\/\*\*\s*@description\s*([^*]*)\*\//.exec(e),n=i?i[1]:void 0;return n==null?void 0:n.trim()}let Oet;function eRe(){return Oet}let tRe;function jet(s){tRe=s}let iRe;function Pet(s){iRe=s}let V6;function Het(s){V6=s}class nRe{get TChange(){return null}reportChanges(){this.get()}read(e){return e?e.readObservable(this):this.get()}map(e,t){const i=t===void 0?void 0:e,n=t===void 0?e:t;return V6({owner:i,debugName:()=>{const o=Toe(n);if(o!==void 0)return o;const l=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(n.toString());if(l)return`${this.debugName}.${l[2]}`;if(!i)return`${this.debugName} (mapped)`},debugReferenceFn:n},o=>n(this.read(o),o))}flatten(){return V6({owner:void 0,debugName:()=>`${this.debugName} (flattened)`},e=>this.read(e).read(e))}recomputeInitiallyAndOnChange(e,t){return e.add(tRe(this,t)),this}keepObserved(e){return e.add(iRe(this)),this}}class AM extends nRe{constructor(){super(...arguments),this.observers=new Set}addObserver(e){const t=this.observers.size;this.observers.add(e),t===0&&this.onFirstObserverAdded()}removeObserver(e){this.observers.delete(e)&&this.observers.size===0&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}function po(s,e){const t=new ZM(s,e);try{s(t)}finally{t.finish()}}let aI;function wT(s){if(aI)s(aI);else{const e=new ZM(s,void 0);aI=e;try{s(e)}finally{e.finish(),aI=void 0}}}async function sRe(s,e){const t=new ZM(s,e);try{await s(t)}finally{t.finish()}}function yN(s,e,t){s?e(s):po(e,t)}class ZM{constructor(e,t){this._fn=e,this._getDebugName=t,this.updatingObservers=[]}getDebugName(){return this._getDebugName?this._getDebugName():Toe(this._fn)}updateObserver(e,t){this.updatingObservers.push({observer:e,observable:t}),e.beginUpdate(t)}finish(){const e=this.updatingObservers;for(let t=0;t<e.length;t++){const{observer:i,observable:n}=e[t];i.endUpdate(n)}this.updatingObservers=null}}function Pi(s,e){let t;return typeof s=="string"?t=new Kl(void 0,s,void 0):t=new Kl(s,void 0,void 0),new Coe(t,e,oh)}class Coe extends AM{get debugName(){return this._debugNameData.getDebugName(this)??"ObservableValue"}constructor(e,t,i){super(),this._debugNameData=e,this._equalityComparator=i,this._value=t}get(){return this._value}set(e,t,i){var o;if(i===void 0&&this._equalityComparator(this._value,e))return;let n;t||(t=n=new ZM(()=>{},()=>`Setting ${this.debugName}`));try{const r=this._value;this._setValue(e),(o=eRe())==null||o.handleObservableChanged(this,{oldValue:r,newValue:e,change:i,didChange:!0,hadValue:!0});for(const l of this.observers)t.updateObserver(l,this),l.handleChange(this,i)}finally{n&&n.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(e){this._value=e}}function gL(s,e){let t;return typeof s=="string"?t=new Kl(void 0,s,void 0):t=new Kl(s,void 0,void 0),new Ket(t,e,oh)}class Ket extends Coe{_setValue(e){this._value!==e&&(this._value&&this._value.dispose(),this._value=e)}dispose(){var e;(e=this._value)==null||e.dispose()}}function Pt(s,e){return e!==void 0?new QN(new Kl(s,void 0,e),e,void 0,void 0,void 0,oh):new QN(new Kl(void 0,void 0,s),s,void 0,void 0,void 0,oh)}function ok(s,e,t){return new qet(new Kl(s,void 0,e),e,void 0,void 0,void 0,oh,t)}function Yc(s,e){return new QN(new Kl(s.owner,s.debugName,s.debugReferenceFn),e,void 0,void 0,s.onLastObserverRemoved,s.equalsFn??oh)}Het(Yc);function oRe(s,e){return new QN(new Kl(s.owner,s.debugName,void 0),e,s.createEmptyChangeSummary,s.handleChange,void 0,s.equalityComparer??oh)}function nA(s,e){let t,i;e===void 0?(t=s,i=void 0):(i=s,t=e);const n=new De;return new QN(new Kl(i,void 0,t),o=>(n.clear(),t(o,n)),void 0,void 0,()=>n.dispose(),oh)}function ma(s,e){let t,i;e===void 0?(t=s,i=void 0):(i=s,t=e);let n;return new QN(new Kl(i,void 0,t),o=>{n?n.clear():n=new De;const r=t(o);return r&&n.add(r),r},void 0,void 0,()=>{n&&(n.dispose(),n=void 0)},oh)}class QN extends AM{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(e,t,i,n,o=void 0,r){var l;super(),this._debugNameData=e,this._computeFn=t,this.createChangeSummary=i,this._handleChange=n,this._handleLastObserverRemoved=o,this._equalityComparator=r,this.state=0,this.value=void 0,this.updateCount=0,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=void 0,this.changeSummary=(l=this.createChangeSummary)==null?void 0:l.call(this)}onLastObserverRemoved(){var e;this.state=0,this.value=void 0;for(const t of this.dependencies)t.removeObserver(this);this.dependencies.clear(),(e=this._handleLastObserverRemoved)==null||e.call(this)}get(){var e;if(this.observers.size===0){const t=this._computeFn(this,(e=this.createChangeSummary)==null?void 0:e.call(this));return this.onLastObserverRemoved(),t}else{do{if(this.state===1){for(const t of this.dependencies)if(t.reportChanges(),this.state===2)break}this.state===1&&(this.state=3),this._recomputeIfNeeded()}while(this.state!==3);return this.value}}_recomputeIfNeeded(){var r;if(this.state===3)return;const e=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=e;const t=this.state!==0,i=this.value;this.state=3;const n=this.changeSummary;this.changeSummary=(r=this.createChangeSummary)==null?void 0:r.call(this);try{this.value=this._computeFn(this,n)}finally{for(const l of this.dependenciesToBeRemoved)l.removeObserver(this);this.dependenciesToBeRemoved.clear()}if(t&&!this._equalityComparator(i,this.value))for(const l of this.observers)l.handleChange(this,void 0)}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(e){this.updateCount++;const t=this.updateCount===1;if(this.state===3&&(this.state=1,!t))for(const i of this.observers)i.handlePossibleChange(this);if(t)for(const i of this.observers)i.beginUpdate(this)}endUpdate(e){if(this.updateCount--,this.updateCount===0){const t=[...this.observers];for(const i of t)i.endUpdate(this)}SN(()=>this.updateCount>=0)}handlePossibleChange(e){if(this.state===3&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){this.state=1;for(const t of this.observers)t.handlePossibleChange(this)}}handleChange(e,t){if(this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){const i=this._handleChange?this._handleChange({changedObservable:e,change:t,didChange:o=>o===e},this.changeSummary):!0,n=this.state===3;if(i&&(this.state===1||n)&&(this.state=2,n))for(const o of this.observers)o.handlePossibleChange(this)}}readObservable(e){e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}addObserver(e){const t=!this.observers.has(e)&&this.updateCount>0;super.addObserver(e),t&&e.beginUpdate(this)}removeObserver(e){const t=this.observers.has(e)&&this.updateCount>0;super.removeObserver(e),t&&e.endUpdate(this)}}class qet extends QN{constructor(e,t,i,n,o=void 0,r,l){super(e,t,i,n,o,r),this.set=l}}function yi(s){return new h9(new Kl(void 0,void 0,s),s,void 0,void 0)}function rk(s,e){return new h9(new Kl(s.owner,s.debugName,s.debugReferenceFn??e),e,void 0,void 0)}function lk(s,e){return new h9(new Kl(s.owner,s.debugName,s.debugReferenceFn??e),e,s.createEmptyChangeSummary,s.handleChange)}function $et(s,e){const t=new De,i=lk({owner:s.owner,debugName:s.debugName,debugReferenceFn:s.debugReferenceFn??e,createEmptyChangeSummary:s.createEmptyChangeSummary,handleChange:s.handleChange},(n,o)=>{t.clear(),e(n,o,t)});return ei(()=>{i.dispose(),t.dispose()})}function Wd(s){const e=new De,t=rk({owner:void 0,debugName:void 0,debugReferenceFn:s},i=>{e.clear(),s(i,e)});return ei(()=>{t.dispose(),e.dispose()})}class h9{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(e,t,i,n){var o;this._debugNameData=e,this._runFn=t,this.createChangeSummary=i,this._handleChange=n,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=(o=this.createChangeSummary)==null?void 0:o.call(this),this._runIfNeeded()}dispose(){this.disposed=!0;for(const e of this.dependencies)e.removeObserver(this);this.dependencies.clear()}_runIfNeeded(){var i,n;if(this.state===3)return;const e=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=e,this.state=3;const t=this.disposed;try{if(!t){(i=eRe())==null||i.handleAutorunTriggered(this);const o=this.changeSummary;this.changeSummary=(n=this.createChangeSummary)==null?void 0:n.call(this),this._runFn(this,o)}}finally{for(const o of this.dependenciesToBeRemoved)o.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(){this.state===3&&(this.state=1),this.updateCount++}endUpdate(){if(this.updateCount===1)do{if(this.state===1){this.state=3;for(const e of this.dependencies)if(e.reportChanges(),this.state===2)break}this._runIfNeeded()}while(this.state!==3);this.updateCount--,SN(()=>this.updateCount>=0)}handlePossibleChange(e){this.state===3&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(this.state=1)}handleChange(e,t){this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(!this._handleChange||this._handleChange({changedObservable:e,change:t,didChange:n=>n===e},this.changeSummary))&&(this.state=2)}readObservable(e){if(this.disposed)return e.get();e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}}(function(s){s.Observer=h9})(yi||(yi={}));function Jh(s){return new ett(s)}class ett extends nRe{constructor(e){super(),this.value=e}get debugName(){return this.toString()}get(){return this.value}addObserver(e){}removeObserver(e){}toString(){return`Const: ${this.value}`}}function is(...s){let e,t,i;return s.length===3?[e,t,i]=s:[t,i]=s,new HU(new Kl(e,void 0,i),t,i,()=>HU.globalTransaction,oh)}function ttt(s,e,t){return new HU(new Kl(s.owner,s.debugName,s.debugReferenceFn??t),e,t,()=>HU.globalTransaction,s.equalsFn??oh)}class HU extends AM{constructor(e,t,i,n,o){super(),this._debugNameData=e,this.event=t,this._getValue=i,this._getTransaction=n,this._equalityComparator=o,this.hasValue=!1,this.handleEvent=r=>{const l=this._getValue(r),a=this.value;(!this.hasValue||!this._equalityComparator(a,l))&&(this.value=l,this.hasValue&&yN(this._getTransaction(),c=>{for(const h of this.observers)c.updateObserver(h,this),h.handleChange(this,void 0)},()=>{const c=this.getDebugName();return"Event fired"+(c?`: ${c}`:"")}),this.hasValue=!0)}}getDebugName(){return this._debugNameData.getDebugName(this)}get debugName(){const e=this.getDebugName();return"From Event"+(e?`: ${e}`:"")}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0,this.hasValue=!1,this.value=void 0}get(){return this.subscription?(this.hasValue||this.handleEvent(void 0),this.value):this._getValue(void 0)}}(function(s){s.Observer=HU;function e(t,i){let n=!1;HU.globalTransaction===void 0&&(HU.globalTransaction=t,n=!0);try{i()}finally{n&&(HU.globalTransaction=void 0)}}s.batchEventsGlobally=e})(is||(is={}));function Vl(s,e){return new itt(s,e)}class itt extends AM{constructor(e,t){super(),this.debugName=e,this.event=t,this.handleEvent=()=>{po(i=>{for(const n of this.observers)i.updateObserver(n,this),n.handleChange(this,void 0)},()=>this.debugName)}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function SM(s){return typeof s=="string"?new ome(s):new ome(void 0,s)}class ome extends AM{get debugName(){return new Kl(this._owner,this._debugName,void 0).getDebugName(this)??"Observable Signal"}toString(){return this.debugName}constructor(e,t){super(),this._debugName=e,this._owner=t}trigger(e,t){if(!e){po(i=>{this.trigger(i,t)},()=>`Trigger signal ${this.debugName}`);return}for(const i of this.observers)e.updateObserver(i,this),i.handleChange(this,t)}get(){}}function ntt(s){const e=new rRe(!1,void 0);return s.addObserver(e),ei(()=>{s.removeObserver(e)})}Pet(ntt);function NM(s,e){const t=new rRe(!0,e);return s.addObserver(t),e?e(s.get()):s.reportChanges(),ei(()=>{s.removeObserver(t)})}jet(NM);class rRe{constructor(e,t){this._forceRecompute=e,this._handleValue=t,this._counter=0}beginUpdate(e){this._counter++}endUpdate(e){this._counter--,this._counter===0&&this._forceRecompute&&(this._handleValue?this._handleValue(e.get()):e.reportChanges())}handlePossibleChange(e){}handleChange(e,t){}}function ak(s,e){let t;return Yc({owner:s,debugReferenceFn:e},n=>(t=e(n,t),t))}function stt(s,e,t,i){let n=new rme(t,i);return Yc({debugReferenceFn:t,owner:s,onLastObserverRemoved:()=>{n.dispose(),n=new rme(t)}},r=>(n.setItems(e.read(r)),n.getItems()))}class rme{constructor(e,t){this._map=e,this._keySelector=t,this._cache=new Map,this._items=[]}dispose(){this._cache.forEach(e=>e.store.dispose()),this._cache.clear()}setItems(e){const t=[],i=new Set(this._cache.keys());for(const n of e){const o=this._keySelector?this._keySelector(n):n;let r=this._cache.get(o);if(r)i.delete(o);else{const l=new De;r={out:this._map(n,l),store:l},this._cache.set(o,r)}t.push(r.out)}for(const n of i)this._cache.get(n).store.dispose(),this._cache.delete(n);this._items=t}getItems(){return this._items}}function ott(s,e){return ak(s,(t,i)=>i??e(t))}class u9{static fromFn(e){return new u9(e())}constructor(e){this._value=Pi(this,void 0),this.promiseResult=this._value,this.promise=e.then(t=>(po(i=>{this._value.set(new lme(t,void 0),i)}),t),t=>{throw po(i=>{this._value.set(new lme(void 0,t),i)}),t})}}class lme{constructor(e,t){this.data=e,this.error=t}}function lRe(s,e,t,i){return e||(e=n=>n!=null),new Promise((n,o)=>{let r=!0,l=!1;const a=s.map(c=>({isFinished:e(c),error:t?t(c):!1,state:c})),d=yi(c=>{const{isFinished:h,error:u,state:m}=a.read(c);(h||u)&&(r?l=!0:d.dispose(),u?o(u===!0?m:u):n(m))});if(i){const c=i.onCancellationRequested(()=>{d.dispose(),c.dispose(),o(new Ku)});if(i.isCancellationRequested){d.dispose(),c.dispose(),o(new Ku);return}}r=!1,l&&d.dispose()})}class rtt extends AM{get debugName(){return this._debugNameData.getDebugName(this)??"LazyObservableValue"}constructor(e,t,i){super(),this._debugNameData=e,this._equalityComparator=i,this._isUpToDate=!0,this._deltas=[],this._updateCounter=0,this._value=t}get(){return this._update(),this._value}_update(){if(!this._isUpToDate)if(this._isUpToDate=!0,this._deltas.length>0){for(const e of this.observers)for(const t of this._deltas)e.handleChange(this,t);this._deltas.length=0}else for(const e of this.observers)e.handleChange(this,void 0)}_beginUpdate(){if(this._updateCounter++,this._updateCounter===1)for(const e of this.observers)e.beginUpdate(this)}_endUpdate(){if(this._updateCounter--,this._updateCounter===0){this._update();const e=[...this.observers];for(const t of e)t.endUpdate(this)}}addObserver(e){const t=!this.observers.has(e)&&this._updateCounter>0;super.addObserver(e),t&&e.beginUpdate(this)}removeObserver(e){const t=this.observers.has(e)&&this._updateCounter>0;super.removeObserver(e),t&&e.endUpdate(this)}set(e,t,i){if(i===void 0&&this._equalityComparator(this._value,e))return;let n;t||(t=n=new ZM(()=>{},()=>`Setting ${this.debugName}`));try{if(this._isUpToDate=!1,this._setValue(e),i!==void 0&&this._deltas.push(i),t.updateObserver({beginUpdate:()=>this._beginUpdate(),endUpdate:()=>this._endUpdate(),handleChange:(o,r)=>{},handlePossibleChange:o=>{}},this),this._updateCounter>1)for(const o of this.observers)o.handlePossibleChange(this)}finally{n&&n.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(e){this._value=e}}function W6(s,e){return s.lazy?new rtt(new Kl(s.owner,s.debugName,void 0),e,s.equalsFn??oh):new Coe(new Kl(s.owner,s.debugName,void 0),e,s.equalsFn??oh)}const FB=class FB extends be{constructor(e=!1){super(),this._onDidRequestBasicLanguageFeatures=this._register(new fe),this.onDidRequestBasicLanguageFeatures=this._onDidRequestBasicLanguageFeatures.event,this._onDidRequestRichLanguageFeatures=this._register(new fe),this.onDidRequestRichLanguageFeatures=this._onDidRequestRichLanguageFeatures.event,this._onDidChange=this._register(new fe({leakWarningThreshold:200})),this.onDidChange=this._onDidChange.event,this._requestedBasicLanguages=new Set,this._requestedRichLanguages=new Set,FB.instanceCount++,this._registry=this._register(new S6(!0,e)),this.languageIdCodec=this._registry.languageIdCodec,this._register(this._registry.onDidChange(()=>this._onDidChange.fire()))}dispose(){FB.instanceCount--,super.dispose()}isRegisteredLanguageId(e){return this._registry.isRegisteredLanguageId(e)}getLanguageIdByLanguageName(e){return this._registry.getLanguageIdByLanguageName(e)}getLanguageIdByMimeType(e){return this._registry.getLanguageIdByMimeType(e)}guessLanguageIdByFilepathOrFirstLine(e,t){const i=this._registry.guessLanguageIdByFilepathOrFirstLine(e,t);return mse(i,null)}createById(e){return new ame(this.onDidChange,()=>this._createAndGetLanguageIdentifier(e))}createByFilepathOrFirstLine(e,t){return new ame(this.onDidChange,()=>{const i=this.guessLanguageIdByFilepathOrFirstLine(e,t);return this._createAndGetLanguageIdentifier(i)})}_createAndGetLanguageIdentifier(e){return(!e||!this.isRegisteredLanguageId(e))&&(e=Ya),e}requestBasicLanguageFeatures(e){this._requestedBasicLanguages.has(e)||(this._requestedBasicLanguages.add(e),this._onDidRequestBasicLanguageFeatures.fire(e))}requestRichLanguageFeatures(e){this._requestedRichLanguages.has(e)||(this._requestedRichLanguages.add(e),this.requestBasicLanguageFeatures(e),Ro.getOrCreate(e),this._onDidRequestRichLanguageFeatures.fire(e))}};FB.instanceCount=0;let y6=FB;class ame{constructor(e,t){this._value=is(this,e,()=>t()),this.onDidChange=Ut.fromObservable(this._value)}get languageId(){return this._value.get()}}const fL={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:Bo.text,INTERNAL_URI_LIST:"application/vnd.code.uri-list"},ltt=()=>({get delay(){return-1},dispose:()=>{},showHover:()=>{}});let m9=ltt;const att=new qu(()=>m9("mouse",!1)),dtt=new qu(()=>m9("element",!1));function ctt(s){m9=s}function Ka(s){return s==="element"?dtt.value:att.value}function xy(){return m9("element",!0)}let aRe={showHover:()=>{},hideHover:()=>{},showAndFocusLastHover:()=>{},setupManagedHover:()=>null,showManagedHover:()=>{}};function htt(s){aRe=s}function Ap(){return aRe}class utt{constructor(e){this.spliceables=e}splice(e,t,i){this.spliceables.forEach(n=>n.splice(e,t,i))}}class VA extends Error{constructor(e,t){super(`ListError [${e}] ${t}`)}}function dme(s,e){const t=[];for(const i of e){if(s.start>=i.range.end)continue;if(s.end<i.range.start)break;const n=Dl.intersect(s,i.range);Dl.isEmpty(n)||t.push({range:n,size:i.size})}return t}function Q6({start:s,end:e},t){return{start:s+t,end:e+t}}function mtt(s){const e=[];let t=null;for(const i of s){const n=i.range.start,o=i.range.end,r=i.size;if(t&&r===t.size){t.range.end=o;continue}t={range:{start:n,end:o},size:r},e.push(t)}return e}function ptt(...s){return mtt(s.reduce((e,t)=>e.concat(t),[]))}class gtt{get paddingTop(){return this._paddingTop}set paddingTop(e){this._size=this._size+e-this._paddingTop,this._paddingTop=e}constructor(e){this.groups=[],this._size=0,this._paddingTop=0,this._paddingTop=e??0,this._size=this._paddingTop}splice(e,t,i=[]){const n=i.length-t,o=dme({start:0,end:e},this.groups),r=dme({start:e+t,end:Number.POSITIVE_INFINITY},this.groups).map(a=>({range:Q6(a.range,n),size:a.size})),l=i.map((a,d)=>({range:{start:e+d,end:e+d+1},size:a.size}));this.groups=ptt(o,l,r),this._size=this._paddingTop+this.groups.reduce((a,d)=>a+d.size*(d.range.end-d.range.start),0)}get count(){const e=this.groups.length;return e?this.groups[e-1].range.end:0}get size(){return this._size}indexAt(e){if(e<0)return-1;if(e<this._paddingTop)return 0;let t=0,i=this._paddingTop;for(const n of this.groups){const o=n.range.end-n.range.start,r=i+o*n.size;if(e<r)return t+Math.floor((e-i)/n.size);t+=o,i=r}return t}indexAfter(e){return Math.min(this.indexAt(e)+1,this.count)}positionAt(e){if(e<0)return-1;let t=0,i=0;for(const n of this.groups){const o=n.range.end-n.range.start,r=i+o;if(e<r)return this._paddingTop+t+(e-i)*n.size;t+=o*n.size,i=r}return-1}}class ftt{constructor(e){this.renderers=e,this.cache=new Map,this.transactionNodesPendingRemoval=new Set,this.inTransaction=!1}alloc(e){let t=this.getTemplateCache(e).pop(),i=!1;if(t)i=this.transactionNodesPendingRemoval.has(t.domNode),i&&this.transactionNodesPendingRemoval.delete(t.domNode);else{const n=gt(".monaco-list-row"),r=this.getRenderer(e).renderTemplate(n);t={domNode:n,templateId:e,templateData:r}}return{row:t,isReusingConnectedDomNode:i}}release(e){e&&this.releaseRow(e)}transact(e){if(this.inTransaction)throw new Error("Already in transaction");this.inTransaction=!0;try{e()}finally{for(const t of this.transactionNodesPendingRemoval)this.doRemoveNode(t);this.transactionNodesPendingRemoval.clear(),this.inTransaction=!1}}releaseRow(e){const{domNode:t,templateId:i}=e;t&&(this.inTransaction?this.transactionNodesPendingRemoval.add(t):this.doRemoveNode(t)),this.getTemplateCache(i).push(e)}doRemoveNode(e){e.classList.remove("scrolling"),e.remove()}getTemplateCache(e){let t=this.cache.get(e);return t||(t=[],this.cache.set(e,t)),t}dispose(){this.cache.forEach((e,t)=>{for(const i of e)this.getRenderer(t).disposeTemplate(i.templateData),i.templateData=null}),this.cache.clear(),this.transactionNodesPendingRemoval.clear()}getRenderer(e){const t=this.renderers.get(e);if(!t)throw new Error(`No renderer found for ${e}`);return t}}var db=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};const WA={CurrentDragAndDropData:void 0},yp={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements(s){return[s]},getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0};class dk{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class btt{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class Utt{constructor(){this.types=[],this.files=[]}update(e){if(e.types&&this.types.splice(0,this.types.length,...e.types),e.files){this.files.splice(0,this.files.length);for(let t=0;t<e.files.length;t++){const i=e.files.item(t);i&&(i.size||i.type)&&this.files.push(i)}}}getData(){return{types:this.types,files:this.files}}}function Ftt(s,e){return Array.isArray(s)&&Array.isArray(e)?lo(s,e):s===e}class Att{constructor(e){e!=null&&e.getSetSize?this.getSetSize=e.getSetSize.bind(e):this.getSetSize=(t,i,n)=>n,e!=null&&e.getPosInSet?this.getPosInSet=e.getPosInSet.bind(e):this.getPosInSet=(t,i)=>i+1,e!=null&&e.getRole?this.getRole=e.getRole.bind(e):this.getRole=t=>"listitem",e!=null&&e.isChecked?this.isChecked=e.isChecked.bind(e):this.isChecked=t=>{}}}const k_=class k_{get contentHeight(){return this.rangeMap.size}get onDidScroll(){return this.scrollableElement.onScroll}get scrollableElementDomNode(){return this.scrollableElement.getDomNode()}get horizontalScrolling(){return this._horizontalScrolling}set horizontalScrolling(e){if(e!==this._horizontalScrolling){if(e&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=e,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this._horizontalScrolling){for(const t of this.items)this.measureItemWidth(t);this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:Xj(this.domNode)}),this.rowsContainer.style.width=`${Math.max(this.scrollWidth||0,this.renderWidth)}px`}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=""}}constructor(e,t,i,n=yp){var r,l;if(this.virtualDelegate=t,this.domId=`list_id_${++k_.InstanceCount}`,this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new Oh(50),this.splicing=!1,this.dragOverAnimationStopDisposable=be.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=be.None,this.onDragLeaveTimeout=be.None,this.disposables=new De,this._onDidChangeContentHeight=new fe,this._onDidChangeContentWidth=new fe,this.onDidChangeContentHeight=Ut.latch(this._onDidChangeContentHeight.event,void 0,this.disposables),this._horizontalScrolling=!1,n.horizontalScrolling&&n.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=this.createRangeMap(n.paddingTop??0);for(const a of i)this.renderers.set(a.templateId,a);this.cache=this.disposables.add(new ftt(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement("div"),this.domNode.className="monaco-list",this.domNode.classList.add(this.domId),this.domNode.tabIndex=0,this.domNode.classList.toggle("mouse-support",typeof n.mouseSupport=="boolean"?n.mouseSupport:!0),this._horizontalScrolling=n.horizontalScrolling??yp.horizontalScrolling,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this.paddingBottom=typeof n.paddingBottom>"u"?0:n.paddingBottom,this.accessibilityProvider=new Att(n.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows",(n.transformOptimization??yp.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)",this.rowsContainer.style.overflow="hidden",this.rowsContainer.style.contain="strict"),this.disposables.add(Hl.addTarget(this.rowsContainer)),this.scrollable=this.disposables.add(new FM({forceIntegerValues:!0,smoothScrollDuration:n.smoothScrolling??!1?125:0,scheduleAtNextAnimationFrame:a=>fc(ai(this.domNode),a)})),this.scrollableElement=this.disposables.add(new i9(this.rowsContainer,{alwaysConsumeMouseWheel:n.alwaysConsumeMouseWheel??yp.alwaysConsumeMouseWheel,horizontal:1,vertical:n.verticalScrollMode??yp.verticalScrollMode,useShadows:n.useShadows??yp.useShadows,mouseWheelScrollSensitivity:n.mouseWheelScrollSensitivity,fastScrollSensitivity:n.fastScrollSensitivity,scrollByPage:n.scrollByPage},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),e.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),this.disposables.add(Te(this.rowsContainer,vs.Change,a=>this.onTouchChange(a))),this.disposables.add(Te(this.scrollableElement.getDomNode(),"scroll",a=>a.target.scrollTop=0)),this.disposables.add(Te(this.domNode,"dragover",a=>this.onDragOver(this.toDragEvent(a)))),this.disposables.add(Te(this.domNode,"drop",a=>this.onDrop(this.toDragEvent(a)))),this.disposables.add(Te(this.domNode,"dragleave",a=>this.onDragLeave(this.toDragEvent(a)))),this.disposables.add(Te(this.domNode,"dragend",a=>this.onDragEnd(a))),this.setRowLineHeight=n.setRowLineHeight??yp.setRowLineHeight,this.setRowHeight=n.setRowHeight??yp.setRowHeight,this.supportDynamicHeights=n.supportDynamicHeights??yp.supportDynamicHeights,this.dnd=n.dnd??this.disposables.add(yp.dnd),this.layout((r=n.initialSize)==null?void 0:r.height,(l=n.initialSize)==null?void 0:l.width)}updateOptions(e){e.paddingBottom!==void 0&&(this.paddingBottom=e.paddingBottom,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),e.smoothScrolling!==void 0&&this.scrollable.setSmoothScrollDuration(e.smoothScrolling?125:0),e.horizontalScrolling!==void 0&&(this.horizontalScrolling=e.horizontalScrolling);let t;if(e.scrollByPage!==void 0&&(t={...t??{},scrollByPage:e.scrollByPage}),e.mouseWheelScrollSensitivity!==void 0&&(t={...t??{},mouseWheelScrollSensitivity:e.mouseWheelScrollSensitivity}),e.fastScrollSensitivity!==void 0&&(t={...t??{},fastScrollSensitivity:e.fastScrollSensitivity}),t&&this.scrollableElement.updateOptions(t),e.paddingTop!==void 0&&e.paddingTop!==this.rangeMap.paddingTop){const i=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),n=e.paddingTop-this.rangeMap.paddingTop;this.rangeMap.paddingTop=e.paddingTop,this.render(i,Math.max(0,this.lastRenderTop+n),this.lastRenderHeight,void 0,void 0,!0),this.setScrollTop(this.lastRenderTop),this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.lastRenderTop,this.lastRenderHeight)}}createRangeMap(e){return new gtt(e)}splice(e,t,i=[]){if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(e,t,i)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(e,t,i=[]){const n=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),o={start:e,end:e+t},r=Dl.intersect(n,o),l=new Map;for(let R=r.end-1;R>=r.start;R--){const y=this.items[R];if(y.dragStartDisposable.dispose(),y.checkedDisposable.dispose(),y.row){let N=l.get(y.templateId);N||(N=[],l.set(y.templateId,N));const w=this.renderers.get(y.templateId);w&&w.disposeElement&&w.disposeElement(y.element,R,y.row.templateData,y.size),N.unshift(y.row)}y.row=null,y.stale=!0}const a={start:e+t,end:this.items.length},d=Dl.intersect(a,n),c=Dl.relativeComplement(a,n),h=i.map(R=>({id:String(this.itemId++),element:R,templateId:this.virtualDelegate.getTemplateId(R),size:this.virtualDelegate.getHeight(R),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(R),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:be.None,checkedDisposable:be.None,stale:!1}));let u;e===0&&t>=this.items.length?(this.rangeMap=this.createRangeMap(this.rangeMap.paddingTop),this.rangeMap.splice(0,0,h),u=this.items,this.items=h):(this.rangeMap.splice(e,t,h),u=this.items.splice(e,t,...h));const m=i.length-t,p=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),g=Q6(d,m),f=Dl.intersect(p,g);for(let R=f.start;R<f.end;R++)this.updateItemInDOM(this.items[R],R);const b=Dl.relativeComplement(g,p);for(const R of b)for(let y=R.start;y<R.end;y++)this.removeItemFromDOM(y);const U=c.map(R=>Q6(R,m)),Z=[{start:e,end:e+i.length},...U].map(R=>Dl.intersect(p,R)).reverse();for(const R of Z)for(let y=R.end-1;y>=R.start;y--){const N=this.items[y],w=l.get(N.templateId),Q=w==null?void 0:w.pop();this.insertItemInDOM(y,Q)}for(const R of l.values())for(const y of R)this.cache.release(y);return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),u.map(R=>R.element)}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height=`${this._scrollHeight}px`,this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=fc(ai(this.domNode),()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null}))}eventuallyUpdateScrollWidth(){if(!this.horizontalScrolling){this.scrollableElementWidthDelayer.cancel();return}this.scrollableElementWidthDelayer.trigger(()=>this.updateScrollWidth())}updateScrollWidth(){if(!this.horizontalScrolling)return;let e=0;for(const t of this.items)typeof t.width<"u"&&(e=Math.max(e,t.width));this.scrollWidth=e,this.scrollableElement.setScrollDimensions({scrollWidth:e===0?0:e+10}),this._onDidChangeContentWidth.fire(this.scrollWidth)}rerender(){if(this.supportDynamicHeights){for(const e of this.items)e.lastDynamicHeightWidth=void 0;this._rerender(this.lastRenderTop,this.lastRenderHeight)}}get length(){return this.items.length}get renderHeight(){return this.scrollableElement.getScrollDimensions().height}get firstVisibleIndex(){return this.getRenderRange(this.lastRenderTop,this.lastRenderHeight).start}element(e){return this.items[e].element}indexOf(e){return this.items.findIndex(t=>t.element===e)}domElement(e){const t=this.items[e].row;return t&&t.domNode}elementHeight(e){return this.items[e].size}elementTop(e){return this.rangeMap.positionAt(e)}indexAt(e){return this.rangeMap.indexAt(e)}indexAfter(e){return this.rangeMap.indexAfter(e)}layout(e,t){const i={height:typeof e=="number"?e:DHe(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,i.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(i),typeof t<"u"&&(this.renderWidth=t,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight)),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:typeof t=="number"?t:Xj(this.domNode)})}render(e,t,i,n,o,r=!1){const l=this.getRenderRange(t,i),a=Dl.relativeComplement(l,e).reverse(),d=Dl.relativeComplement(e,l);if(r){const c=Dl.intersect(e,l);for(let h=c.start;h<c.end;h++)this.updateItemInDOM(this.items[h],h)}this.cache.transact(()=>{for(const c of d)for(let h=c.start;h<c.end;h++)this.removeItemFromDOM(h);for(const c of a)for(let h=c.end-1;h>=c.start;h--)this.insertItemInDOM(h)}),n!==void 0&&(this.rowsContainer.style.left=`-${n}px`),this.rowsContainer.style.top=`-${t}px`,this.horizontalScrolling&&o!==void 0&&(this.rowsContainer.style.width=`${Math.max(o,this.renderWidth)}px`),this.lastRenderTop=t,this.lastRenderHeight=i}insertItemInDOM(e,t){var a,d;const i=this.items[e];if(!i.row)if(t)i.row=t,i.stale=!0;else{const c=this.cache.alloc(i.templateId);i.row=c.row,i.stale||(i.stale=c.isReusingConnectedDomNode)}const n=this.accessibilityProvider.getRole(i.element)||"listitem";i.row.domNode.setAttribute("role",n);const o=this.accessibilityProvider.isChecked(i.element);if(typeof o=="boolean")i.row.domNode.setAttribute("aria-checked",String(!!o));else if(o){const c=h=>i.row.domNode.setAttribute("aria-checked",String(!!h));c(o.value),i.checkedDisposable=o.onDidChange(()=>c(o.value))}if(i.stale||!i.row.domNode.parentElement){const c=((d=(a=this.items.at(e+1))==null?void 0:a.row)==null?void 0:d.domNode)??null;(i.row.domNode.parentElement!==this.rowsContainer||i.row.domNode.nextElementSibling!==c)&&this.rowsContainer.insertBefore(i.row.domNode,c),i.stale=!1}this.updateItemInDOM(i,e);const r=this.renderers.get(i.templateId);if(!r)throw new Error(`No renderer found for template id ${i.templateId}`);r==null||r.renderElement(i.element,e,i.row.templateData,i.size);const l=this.dnd.getDragURI(i.element);i.dragStartDisposable.dispose(),i.row.domNode.draggable=!!l,l&&(i.dragStartDisposable=Te(i.row.domNode,"dragstart",c=>this.onDragStart(i.element,l,c))),this.horizontalScrolling&&(this.measureItemWidth(i),this.eventuallyUpdateScrollWidth())}measureItemWidth(e){if(!e.row||!e.row.domNode)return;e.row.domNode.style.width="fit-content",e.width=Xj(e.row.domNode);const t=ai(e.row.domNode).getComputedStyle(e.row.domNode);t.paddingLeft&&(e.width+=parseFloat(t.paddingLeft)),t.paddingRight&&(e.width+=parseFloat(t.paddingRight)),e.row.domNode.style.width=""}updateItemInDOM(e,t){e.row.domNode.style.top=`${this.elementTop(t)}px`,this.setRowHeight&&(e.row.domNode.style.height=`${e.size}px`),this.setRowLineHeight&&(e.row.domNode.style.lineHeight=`${e.size}px`),e.row.domNode.setAttribute("data-index",`${t}`),e.row.domNode.setAttribute("data-last-element",t===this.length-1?"true":"false"),e.row.domNode.setAttribute("data-parity",t%2===0?"even":"odd"),e.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(e.element,t,this.length))),e.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(e.element,t))),e.row.domNode.setAttribute("id",this.getElementDomId(t)),e.row.domNode.classList.toggle("drop-target",e.dropTarget)}removeItemFromDOM(e){const t=this.items[e];if(t.dragStartDisposable.dispose(),t.checkedDisposable.dispose(),t.row){const i=this.renderers.get(t.templateId);i&&i.disposeElement&&i.disposeElement(t.element,e,t.row.templateData,t.size),this.cache.release(t.row),t.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(e,t){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:e,reuseAnimation:t})}get scrollTop(){return this.getScrollTop()}set scrollTop(e){this.setScrollTop(e)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.paddingBottom}get onMouseClick(){return Ut.map(this.disposables.add(new fn(this.domNode,"click")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseDblClick(){return Ut.map(this.disposables.add(new fn(this.domNode,"dblclick")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseMiddleClick(){return Ut.filter(Ut.map(this.disposables.add(new fn(this.domNode,"auxclick")).event,e=>this.toMouseEvent(e),this.disposables),e=>e.browserEvent.button===1,this.disposables)}get onMouseDown(){return Ut.map(this.disposables.add(new fn(this.domNode,"mousedown")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseOver(){return Ut.map(this.disposables.add(new fn(this.domNode,"mouseover")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseOut(){return Ut.map(this.disposables.add(new fn(this.domNode,"mouseout")).event,e=>this.toMouseEvent(e),this.disposables)}get onContextMenu(){return Ut.any(Ut.map(this.disposables.add(new fn(this.domNode,"contextmenu")).event,e=>this.toMouseEvent(e),this.disposables),Ut.map(this.disposables.add(new fn(this.domNode,vs.Contextmenu)).event,e=>this.toGestureEvent(e),this.disposables))}get onTouchStart(){return Ut.map(this.disposables.add(new fn(this.domNode,"touchstart")).event,e=>this.toTouchEvent(e),this.disposables)}get onTap(){return Ut.map(this.disposables.add(new fn(this.rowsContainer,vs.Tap)).event,e=>this.toGestureEvent(e),this.disposables)}toMouseEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element;return{browserEvent:e,index:t,element:n}}toTouchEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element;return{browserEvent:e,index:t,element:n}}toGestureEvent(e){const t=this.getItemIndexFromEventTarget(e.initialTarget||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element;return{browserEvent:e,index:t,element:n}}toDragEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element,o=this.getTargetSector(e,t);return{browserEvent:e,index:t,element:n,sector:o}}onScroll(e){try{const t=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(t,e.scrollTop,e.height,e.scrollLeft,e.scrollWidth),this.supportDynamicHeights&&this._rerender(e.scrollTop,e.height,e.inSmoothScrolling)}catch(t){throw console.error("Got bad scroll event:",e),t}}onTouchChange(e){e.preventDefault(),e.stopPropagation(),this.scrollTop-=e.translationY}onDragStart(e,t,i){var o,r;if(!i.dataTransfer)return;const n=this.dnd.getDragElements(e);if(i.dataTransfer.effectAllowed="copyMove",i.dataTransfer.setData(fL.TEXT,t),i.dataTransfer.setDragImage){let l;this.dnd.getDragLabel&&(l=this.dnd.getDragLabel(n,i)),typeof l>"u"&&(l=String(n.length));const a=gt(".monaco-drag-image");a.textContent=l,(h=>{for(;h&&!h.classList.contains("monaco-workbench");)h=h.parentElement;return h||this.domNode.ownerDocument})(this.domNode).appendChild(a),i.dataTransfer.setDragImage(a,-10,-10),setTimeout(()=>a.remove(),0)}this.domNode.classList.add("dragging"),this.currentDragData=new dk(n),WA.CurrentDragAndDropData=new btt(n),(r=(o=this.dnd).onDragStart)==null||r.call(o,this.currentDragData,i)}onDragOver(e){var o,r;if(e.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),WA.CurrentDragAndDropData&&WA.CurrentDragAndDropData.getData()==="vscode-ui"||(this.setupDragAndDropScrollTopAnimation(e.browserEvent),!e.browserEvent.dataTransfer))return!1;if(!this.currentDragData)if(WA.CurrentDragAndDropData)this.currentDragData=WA.CurrentDragAndDropData;else{if(!e.browserEvent.dataTransfer.types)return!1;this.currentDragData=new Utt}const t=this.dnd.onDragOver(this.currentDragData,e.element,e.index,e.sector,e.browserEvent);if(this.canDrop=typeof t=="boolean"?t:t.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;e.browserEvent.dataTransfer.dropEffect=typeof t!="boolean"&&((o=t.effect)==null?void 0:o.type)===0?"copy":"move";let i;typeof t!="boolean"&&t.feedback?i=t.feedback:typeof e.index>"u"?i=[-1]:i=[e.index],i=_f(i).filter(l=>l>=-1&&l<this.length).sort((l,a)=>l-a),i=i[0]===-1?[-1]:i;let n=typeof t!="boolean"&&t.effect&&t.effect.position?t.effect.position:"drop-target";if(Ftt(this.currentDragFeedback,i)&&this.currentDragFeedbackPosition===n)return!0;if(this.currentDragFeedback=i,this.currentDragFeedbackPosition=n,this.currentDragFeedbackDisposable.dispose(),i[0]===-1)this.domNode.classList.add(n),this.rowsContainer.classList.add(n),this.currentDragFeedbackDisposable=ei(()=>{this.domNode.classList.remove(n),this.rowsContainer.classList.remove(n)});else{if(i.length>1&&n!=="drop-target")throw new Error("Can't use multiple feedbacks with position different than 'over'");n==="drop-target-after"&&i[0]<this.length-1&&(i[0]+=1,n="drop-target-before");for(const l of i){const a=this.items[l];a.dropTarget=!0,(r=a.row)==null||r.domNode.classList.add(n)}this.currentDragFeedbackDisposable=ei(()=>{var l;for(const a of i){const d=this.items[a];d.dropTarget=!1,(l=d.row)==null||l.domNode.classList.remove(n)}})}return!0}onDragLeave(e){var t,i;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=kF(()=>this.clearDragOverFeedback(),100,this.disposables),this.currentDragData&&((i=(t=this.dnd).onDragLeave)==null||i.call(t,this.currentDragData,e.element,e.index,e.browserEvent))}onDrop(e){if(!this.canDrop)return;const t=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,WA.CurrentDragAndDropData=void 0,!(!t||!e.browserEvent.dataTransfer)&&(e.browserEvent.preventDefault(),t.update(e.browserEvent.dataTransfer),this.dnd.drop(t,e.element,e.index,e.sector,e.browserEvent))}onDragEnd(e){var t,i;this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,WA.CurrentDragAndDropData=void 0,(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackPosition=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=be.None}setupDragAndDropScrollTopAnimation(e){if(!this.dragOverAnimationDisposable){const t=sSe(this.domNode).top;this.dragOverAnimationDisposable=$He(ai(this.domNode),this.animateDragAndDropScrollTop.bind(this,t))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=kF(()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)},1e3,this.disposables),this.dragOverMouseY=e.pageY}animateDragAndDropScrollTop(e){if(this.dragOverMouseY===void 0)return;const t=this.dragOverMouseY-e,i=this.renderHeight-35;t<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(t-35))):t>i&&(this.scrollTop+=Math.min(14,Math.floor(.3*(t-i))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getTargetSector(e,t){if(t===void 0)return;const i=e.offsetY/this.items[t].size,n=Math.floor(i/.25);return Ba(n,0,3)}getItemIndexFromEventTarget(e){const t=this.scrollableElement.getDomNode();let i=e;for(;(Cr(i)||zHe(i))&&i!==this.rowsContainer&&t.contains(i);){const n=i.getAttribute("data-index");if(n){const o=Number(n);if(!isNaN(o))return o}i=i.parentElement}}getRenderRange(e,t){return{start:this.rangeMap.indexAt(e),end:this.rangeMap.indexAfter(e+t-1)}}_rerender(e,t,i){const n=this.getRenderRange(e,t);let o,r;e===this.elementTop(n.start)?(o=n.start,r=0):n.end-n.start>1&&(o=n.start+1,r=this.elementTop(o)-e);let l=0;for(;;){const a=this.getRenderRange(e,t);let d=!1;for(let c=a.start;c<a.end;c++){const h=this.probeDynamicHeight(c);h!==0&&this.rangeMap.splice(c,1,[this.items[c]]),l+=h,d=d||h!==0}if(!d){l!==0&&this.eventuallyUpdateScrollDimensions();const c=Dl.relativeComplement(n,a);for(const u of c)for(let m=u.start;m<u.end;m++)this.items[m].row&&this.removeItemFromDOM(m);const h=Dl.relativeComplement(a,n).reverse();for(const u of h)for(let m=u.end-1;m>=u.start;m--)this.insertItemInDOM(m);for(let u=a.start;u<a.end;u++)this.items[u].row&&this.updateItemInDOM(this.items[u],u);if(typeof o=="number"){const u=this.scrollable.getFutureScrollPosition().scrollTop-e,m=this.elementTop(o)-r+u;this.setScrollTop(m,i)}this._onDidChangeContentHeight.fire(this.contentHeight);return}}}probeDynamicHeight(e){var r,l,a;const t=this.items[e];if(this.virtualDelegate.getDynamicHeight){const d=this.virtualDelegate.getDynamicHeight(t.element);if(d!==null){const c=t.size;return t.size=d,t.lastDynamicHeightWidth=this.renderWidth,d-c}}if(!t.hasDynamicHeight||t.lastDynamicHeightWidth===this.renderWidth||this.virtualDelegate.hasDynamicHeight&&!this.virtualDelegate.hasDynamicHeight(t.element))return 0;const i=t.size;if(t.row)return t.row.domNode.style.height="",t.size=t.row.domNode.offsetHeight,t.size===0&&!wr(t.row.domNode,ai(t.row.domNode).document.body)&&console.warn("Measuring item node that is not in DOM! Add ListView to the DOM before measuring row height!",new Error().stack),t.lastDynamicHeightWidth=this.renderWidth,t.size-i;const{row:n}=this.cache.alloc(t.templateId);n.domNode.style.height="",this.rowsContainer.appendChild(n.domNode);const o=this.renderers.get(t.templateId);if(!o)throw new _n("Missing renderer for templateId: "+t.templateId);return o.renderElement(t.element,e,n.templateData,void 0),t.size=n.domNode.offsetHeight,(r=o.disposeElement)==null||r.call(o,t.element,e,n.templateData,void 0),(a=(l=this.virtualDelegate).setDynamicHeight)==null||a.call(l,t.element,t.size),t.lastDynamicHeightWidth=this.renderWidth,n.domNode.remove(),this.cache.release(n),t.size-i}getElementDomId(e){return`${this.domId}_${e}`}dispose(){var e,t,i;for(const n of this.items)if(n.dragStartDisposable.dispose(),n.checkedDisposable.dispose(),n.row){const o=this.renderers.get(n.row.templateId);o&&((e=o.disposeElement)==null||e.call(o,n.element,-1,n.row.templateData,void 0),o.disposeTemplate(n.row.templateData))}this.items=[],(t=this.domNode)==null||t.remove(),(i=this.dragOverAnimationDisposable)==null||i.dispose(),this.disposables.dispose()}};k_.InstanceCount=0;let nm=k_;db([Po],nm.prototype,"onMouseClick",null);db([Po],nm.prototype,"onMouseDblClick",null);db([Po],nm.prototype,"onMouseMiddleClick",null);db([Po],nm.prototype,"onMouseDown",null);db([Po],nm.prototype,"onMouseOver",null);db([Po],nm.prototype,"onMouseOut",null);db([Po],nm.prototype,"onContextMenu",null);db([Po],nm.prototype,"onTouchStart",null);db([Po],nm.prototype,"onTap",null);var sA=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};class Ztt{constructor(e){this.trait=e,this.renderedElements=[]}get templateId(){return`template:${this.trait.name}`}renderTemplate(e){return e}renderElement(e,t,i){const n=this.renderedElements.findIndex(o=>o.templateData===i);if(n>=0){const o=this.renderedElements[n];this.trait.unrender(i),o.index=t}else{const o={index:t,templateData:i};this.renderedElements.push(o)}this.trait.renderIndex(t,i)}splice(e,t,i){const n=[];for(const o of this.renderedElements)o.index<e?n.push(o):o.index>=e+t&&n.push({index:o.index+i-t,templateData:o.templateData});this.renderedElements=n}renderIndexes(e){for(const{index:t,templateData:i}of this.renderedElements)e.indexOf(t)>-1&&this.trait.renderIndex(t,i)}disposeTemplate(e){const t=this.renderedElements.findIndex(i=>i.templateData===e);t<0||this.renderedElements.splice(t,1)}}let DX=class{get name(){return this._trait}get renderer(){return new Ztt(this)}constructor(e){this._trait=e,this.indexes=[],this.sortedIndexes=[],this._onChange=new fe,this.onChange=this._onChange.event}splice(e,t,i){const n=i.length-t,o=e+t,r=[];let l=0;for(;l<this.sortedIndexes.length&&this.sortedIndexes[l]<e;)r.push(this.sortedIndexes[l++]);for(let a=0;a<i.length;a++)i[a]&&r.push(a+e);for(;l<this.sortedIndexes.length&&this.sortedIndexes[l]>=o;)r.push(this.sortedIndexes[l++]+n);this.renderer.splice(e,t,i.length),this._set(r,r)}renderIndex(e,t){t.classList.toggle(this._trait,this.contains(e))}unrender(e){e.classList.remove(this._trait)}set(e,t){return this._set(e,[...e].sort(hme),t)}_set(e,t,i){const n=this.indexes,o=this.sortedIndexes;this.indexes=e,this.sortedIndexes=t;const r=M6(o,e);return this.renderer.renderIndexes(r),this._onChange.fire({indexes:e,browserEvent:i}),n}get(){return this.indexes}contains(e){return xB(this.sortedIndexes,e,hme)>=0}dispose(){Ws(this._onChange)}};sA([Po],DX.prototype,"renderer",null);class Stt extends DX{constructor(e){super("selected"),this.setAriaSelected=e}renderIndex(e,t){super.renderIndex(e,t),this.setAriaSelected&&(this.contains(e)?t.setAttribute("aria-selected","true"):t.setAttribute("aria-selected","false"))}}class ZP{constructor(e,t,i){this.trait=e,this.view=t,this.identityProvider=i}splice(e,t,i){if(!this.identityProvider)return this.trait.splice(e,t,new Array(i.length).fill(!1));const n=this.trait.get().map(l=>this.identityProvider.getId(this.view.element(l)).toString());if(n.length===0)return this.trait.splice(e,t,new Array(i.length).fill(!1));const o=new Set(n),r=i.map(l=>o.has(this.identityProvider.getId(l).toString()));this.trait.splice(e,t,r)}}function RF(s){return s.tagName==="INPUT"||s.tagName==="TEXTAREA"}function ck(s,e){return s.classList.contains(e)?!0:s.classList.contains("monaco-list")||!s.parentElement?!1:ck(s.parentElement,e)}function TT(s){return ck(s,"monaco-editor")}function Ntt(s){return ck(s,"monaco-custom-toggle")}function Rtt(s){return ck(s,"action-item")}function e2(s){return ck(s,"monaco-tree-sticky-row")}function bL(s){return s.classList.contains("monaco-tree-sticky-container")}function dRe(s){return s.tagName==="A"&&s.classList.contains("monaco-button")||s.tagName==="DIV"&&s.classList.contains("monaco-button-dropdown")?!0:s.classList.contains("monaco-list")||!s.parentElement?!1:dRe(s.parentElement)}class cRe{get onKeyDown(){return Ut.chain(this.disposables.add(new fn(this.view.domNode,"keydown")).event,e=>e.filter(t=>!RF(t.target)).map(t=>new Ts(t)))}constructor(e,t,i){this.list=e,this.view=t,this.disposables=new De,this.multipleSelectionDisposables=new De,this.multipleSelectionSupport=i.multipleSelectionSupport,this.disposables.add(this.onKeyDown(n=>{switch(n.keyCode){case 3:return this.onEnter(n);case 16:return this.onUpArrow(n);case 18:return this.onDownArrow(n);case 11:return this.onPageUpArrow(n);case 12:return this.onPageDownArrow(n);case 9:return this.onEscape(n);case 31:this.multipleSelectionSupport&&(hn?n.metaKey:n.ctrlKey)&&this.onCtrlA(n)}}))}updateOptions(e){e.multipleSelectionSupport!==void 0&&(this.multipleSelectionSupport=e.multipleSelectionSupport)}onEnter(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(this.list.getFocus(),e.browserEvent)}onUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPrevious(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNext(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPreviousPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNextPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onCtrlA(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(cd(this.list.length),e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus()}onEscape(e){this.list.getSelection().length&&(e.preventDefault(),e.stopPropagation(),this.list.setSelection([],e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus())}dispose(){this.disposables.dispose(),this.multipleSelectionDisposables.dispose()}}sA([Po],cRe.prototype,"onKeyDown",null);var Vg;(function(s){s[s.Automatic=0]="Automatic",s[s.Trigger=1]="Trigger"})(Vg||(Vg={}));var VW;(function(s){s[s.Idle=0]="Idle",s[s.Typing=1]="Typing"})(VW||(VW={}));const Vtt=new class{mightProducePrintableCharacter(s){return s.ctrlKey||s.metaKey||s.altKey?!1:s.keyCode>=31&&s.keyCode<=56||s.keyCode>=21&&s.keyCode<=30||s.keyCode>=98&&s.keyCode<=107||s.keyCode>=85&&s.keyCode<=95}};class Wtt{constructor(e,t,i,n,o){this.list=e,this.view=t,this.keyboardNavigationLabelProvider=i,this.keyboardNavigationEventFilter=n,this.delegate=o,this.enabled=!1,this.state=VW.Idle,this.mode=Vg.Automatic,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new De,this.disposables=new De,this.updateOptions(e.options)}updateOptions(e){e.typeNavigationEnabled??!0?this.enable():this.disable(),this.mode=e.typeNavigationMode??Vg.Automatic}enable(){if(this.enabled)return;let e=!1;const t=Ut.chain(this.enabledDisposables.add(new fn(this.view.domNode,"keydown")).event,o=>o.filter(r=>!RF(r.target)).filter(()=>this.mode===Vg.Automatic||this.triggered).map(r=>new Ts(r)).filter(r=>e||this.keyboardNavigationEventFilter(r)).filter(r=>this.delegate.mightProducePrintableCharacter(r)).forEach(r=>Un.stop(r,!0)).map(r=>r.browserEvent.key)),i=Ut.debounce(t,()=>null,800,void 0,void 0,void 0,this.enabledDisposables);Ut.reduce(Ut.any(t,i),(o,r)=>r===null?null:(o||"")+r,void 0,this.enabledDisposables)(this.onInput,this,this.enabledDisposables),i(this.onClear,this,this.enabledDisposables),t(()=>e=!0,void 0,this.enabledDisposables),i(()=>e=!1,void 0,this.enabledDisposables),this.enabled=!0,this.triggered=!1}disable(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}onClear(){var t;const e=this.list.getFocus();if(e.length>0&&e[0]===this.previouslyFocused){const i=(t=this.list.options.accessibilityProvider)==null?void 0:t.getAriaLabel(this.list.element(e[0]));typeof i=="string"?ja(i):i&&ja(i.get())}this.previouslyFocused=-1}onInput(e){if(!e){this.state=VW.Idle,this.triggered=!1;return}const t=this.list.getFocus(),i=t.length>0?t[0]:0,n=this.state===VW.Idle?1:0;this.state=VW.Typing;for(let o=0;o<this.list.length;o++){const r=(i+o+n)%this.list.length,l=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(r)),a=l&&l.toString();if(this.list.options.typeNavigationEnabled){if(typeof a<"u"){if(cL(e,a)){this.previouslyFocused=i,this.list.setFocus([r]),this.list.reveal(r);return}const d=Yqe(e,a);if(d&&d[0].end-d[0].start>1&&d.length===1){this.previouslyFocused=i,this.list.setFocus([r]),this.list.reveal(r);return}}}else if(typeof a>"u"||cL(e,a)){this.previouslyFocused=i,this.list.setFocus([r]),this.list.reveal(r);return}}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class ytt{constructor(e,t){this.list=e,this.view=t,this.disposables=new De;const i=Ut.chain(this.disposables.add(new fn(t.domNode,"keydown")).event,o=>o.filter(r=>!RF(r.target)).map(r=>new Ts(r)));Ut.chain(i,o=>o.filter(r=>r.keyCode===2&&!r.ctrlKey&&!r.metaKey&&!r.shiftKey&&!r.altKey))(this.onTab,this,this.disposables)}onTab(e){if(e.target!==this.view.domNode)return;const t=this.list.getFocus();if(t.length===0)return;const i=this.view.domElement(t[0]);if(!i)return;const n=i.querySelector("[tabIndex]");if(!n||!Cr(n)||n.tabIndex===-1)return;const o=ai(n).getComputedStyle(n);o.visibility==="hidden"||o.display==="none"||(e.preventDefault(),e.stopPropagation(),n.focus())}dispose(){this.disposables.dispose()}}function hRe(s){return hn?s.browserEvent.metaKey:s.browserEvent.ctrlKey}function uRe(s){return s.browserEvent.shiftKey}function Qtt(s){return Ese(s)&&s.button===2}const cme={isSelectionSingleChangeEvent:hRe,isSelectionRangeChangeEvent:uRe};class mRe{constructor(e){this.list=e,this.disposables=new De,this._onPointer=new fe,this.onPointer=this._onPointer.event,e.options.multipleSelectionSupport!==!1&&(this.multipleSelectionController=this.list.options.multipleSelectionController||cme),this.mouseSupport=typeof e.options.mouseSupport>"u"||!!e.options.mouseSupport,this.mouseSupport&&(e.onMouseDown(this.onMouseDown,this,this.disposables),e.onContextMenu(this.onContextMenu,this,this.disposables),e.onMouseDblClick(this.onDoubleClick,this,this.disposables),e.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(Hl.addTarget(e.getHTMLElement()))),Ut.any(e.onMouseClick,e.onMouseMiddleClick,e.onTap)(this.onViewPointer,this,this.disposables)}updateOptions(e){e.multipleSelectionSupport!==void 0&&(this.multipleSelectionController=void 0,e.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||cme))}isSelectionSingleChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(e):!1}isSelectionRangeChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(e):!1}isSelectionChangeEvent(e){return this.isSelectionSingleChangeEvent(e)||this.isSelectionRangeChangeEvent(e)}onMouseDown(e){TT(e.browserEvent.target)||Ql()!==e.browserEvent.target&&this.list.domFocus()}onContextMenu(e){if(RF(e.browserEvent.target)||TT(e.browserEvent.target))return;const t=typeof e.index>"u"?[]:[e.index];this.list.setFocus(t,e.browserEvent)}onViewPointer(e){if(!this.mouseSupport||RF(e.browserEvent.target)||TT(e.browserEvent.target)||e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=e.index;if(typeof t>"u"){this.list.setFocus([],e.browserEvent),this.list.setSelection([],e.browserEvent),this.list.setAnchor(void 0);return}if(this.isSelectionChangeEvent(e))return this.changeSelection(e);this.list.setFocus([t],e.browserEvent),this.list.setAnchor(t),Qtt(e.browserEvent)||this.list.setSelection([t],e.browserEvent),this._onPointer.fire(e)}onDoubleClick(e){if(RF(e.browserEvent.target)||TT(e.browserEvent.target)||this.isSelectionChangeEvent(e)||e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=this.list.getFocus();this.list.setSelection(t,e.browserEvent)}changeSelection(e){const t=e.index;let i=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(e)){typeof i>"u"&&(i=this.list.getFocus()[0]??t,this.list.setAnchor(i));const n=Math.min(i,t),o=Math.max(i,t),r=cd(n,o+1),l=this.list.getSelection(),a=Ttt(M6(l,[i]),i);if(a.length===0)return;const d=M6(r,Ctt(l,a));this.list.setSelection(d,e.browserEvent),this.list.setFocus([t],e.browserEvent)}else if(this.isSelectionSingleChangeEvent(e)){const n=this.list.getSelection(),o=n.filter(r=>r!==t);this.list.setFocus([t]),this.list.setAnchor(t),n.length===o.length?this.list.setSelection([...o,t],e.browserEvent):this.list.setSelection(o,e.browserEvent)}}dispose(){this.disposables.dispose()}}class pRe{constructor(e,t){this.styleElement=e,this.selectorSuffix=t}style(e){const t=this.selectorSuffix&&`.${this.selectorSuffix}`,i=[];e.listBackground&&i.push(`.monaco-list${t} .monaco-list-rows { background: ${e.listBackground}; }`),e.listFocusBackground&&(i.push(`.monaco-list${t}:focus .monaco-list-row.focused { background-color: ${e.listFocusBackground}; }`),i.push(`.monaco-list${t}:focus .monaco-list-row.focused:hover { background-color: ${e.listFocusBackground}; }`)),e.listFocusForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.focused { color: ${e.listFocusForeground}; }`),e.listActiveSelectionBackground&&(i.push(`.monaco-list${t}:focus .monaco-list-row.selected { background-color: ${e.listActiveSelectionBackground}; }`),i.push(`.monaco-list${t}:focus .monaco-list-row.selected:hover { background-color: ${e.listActiveSelectionBackground}; }`)),e.listActiveSelectionForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.selected { color: ${e.listActiveSelectionForeground}; }`),e.listActiveSelectionIconForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.selected .codicon { color: ${e.listActiveSelectionIconForeground}; }`),e.listFocusAndSelectionBackground&&i.push(`
- .monaco-drag-image,
- .monaco-list${t}:focus .monaco-list-row.selected.focused { background-color: ${e.listFocusAndSelectionBackground}; }
- `),e.listFocusAndSelectionForeground&&i.push(`
- .monaco-drag-image,
- .monaco-list${t}:focus .monaco-list-row.selected.focused { color: ${e.listFocusAndSelectionForeground}; }
- `),e.listInactiveFocusForeground&&(i.push(`.monaco-list${t} .monaco-list-row.focused { color: ${e.listInactiveFocusForeground}; }`),i.push(`.monaco-list${t} .monaco-list-row.focused:hover { color: ${e.listInactiveFocusForeground}; }`)),e.listInactiveSelectionIconForeground&&i.push(`.monaco-list${t} .monaco-list-row.focused .codicon { color: ${e.listInactiveSelectionIconForeground}; }`),e.listInactiveFocusBackground&&(i.push(`.monaco-list${t} .monaco-list-row.focused { background-color: ${e.listInactiveFocusBackground}; }`),i.push(`.monaco-list${t} .monaco-list-row.focused:hover { background-color: ${e.listInactiveFocusBackground}; }`)),e.listInactiveSelectionBackground&&(i.push(`.monaco-list${t} .monaco-list-row.selected { background-color: ${e.listInactiveSelectionBackground}; }`),i.push(`.monaco-list${t} .monaco-list-row.selected:hover { background-color: ${e.listInactiveSelectionBackground}; }`)),e.listInactiveSelectionForeground&&i.push(`.monaco-list${t} .monaco-list-row.selected { color: ${e.listInactiveSelectionForeground}; }`),e.listHoverBackground&&i.push(`.monaco-list${t}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${e.listHoverBackground}; }`),e.listHoverForeground&&i.push(`.monaco-list${t}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ${e.listHoverForeground}; }`);const n=kf(e.listFocusAndSelectionOutline,kf(e.listSelectionOutline,e.listFocusOutline??""));n&&i.push(`.monaco-list${t}:focus .monaco-list-row.focused.selected { outline: 1px solid ${n}; outline-offset: -1px;}`),e.listFocusOutline&&i.push(`
- .monaco-drag-image,
- .monaco-list${t}:focus .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }
- .monaco-workbench.context-menu-visible .monaco-list${t}.last-focused .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }
- `);const o=kf(e.listSelectionOutline,e.listInactiveFocusOutline??"");o&&i.push(`.monaco-list${t} .monaco-list-row.focused.selected { outline: 1px dotted ${o}; outline-offset: -1px; }`),e.listSelectionOutline&&i.push(`.monaco-list${t} .monaco-list-row.selected { outline: 1px dotted ${e.listSelectionOutline}; outline-offset: -1px; }`),e.listInactiveFocusOutline&&i.push(`.monaco-list${t} .monaco-list-row.focused { outline: 1px dotted ${e.listInactiveFocusOutline}; outline-offset: -1px; }`),e.listHoverOutline&&i.push(`.monaco-list${t} .monaco-list-row:hover { outline: 1px dashed ${e.listHoverOutline}; outline-offset: -1px; }`),e.listDropOverBackground&&i.push(`
- .monaco-list${t}.drop-target,
- .monaco-list${t} .monaco-list-rows.drop-target,
- .monaco-list${t} .monaco-list-row.drop-target { background-color: ${e.listDropOverBackground} !important; color: inherit !important; }
- `),e.listDropBetweenBackground&&(i.push(`
- .monaco-list${t} .monaco-list-rows.drop-target-before .monaco-list-row:first-child::before,
- .monaco-list${t} .monaco-list-row.drop-target-before::before {
- content: ""; position: absolute; top: 0px; left: 0px; width: 100%; height: 1px;
- background-color: ${e.listDropBetweenBackground};
- }`),i.push(`
- .monaco-list${t} .monaco-list-rows.drop-target-after .monaco-list-row:last-child::after,
- .monaco-list${t} .monaco-list-row.drop-target-after::after {
- content: ""; position: absolute; bottom: 0px; left: 0px; width: 100%; height: 1px;
- background-color: ${e.listDropBetweenBackground};
- }`)),e.tableColumnsBorder&&i.push(`
- .monaco-table > .monaco-split-view2,
- .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before,
- .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2,
- .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {
- border-color: ${e.tableColumnsBorder};
- }
- .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2,
- .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {
- border-color: transparent;
- }
- `),e.tableOddRowsBackgroundColor&&i.push(`
- .monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr,
- .monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr,
- .monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr {
- background-color: ${e.tableOddRowsBackgroundColor};
- }
- `),this.styleElement.textContent=i.join(`
- `)}}const Mtt={listFocusBackground:"#7FB0D0",listActiveSelectionBackground:"#0E639C",listActiveSelectionForeground:"#FFFFFF",listActiveSelectionIconForeground:"#FFFFFF",listFocusAndSelectionOutline:"#90C2F9",listFocusAndSelectionBackground:"#094771",listFocusAndSelectionForeground:"#FFFFFF",listInactiveSelectionBackground:"#3F3F46",listInactiveSelectionIconForeground:"#FFFFFF",listHoverBackground:"#2A2D2E",listDropOverBackground:"#383B3D",listDropBetweenBackground:"#EEEEEE",treeIndentGuidesStroke:"#a9a9a9",treeInactiveIndentGuidesStroke:Je.fromHex("#a9a9a9").transparent(.4).toString(),tableColumnsBorder:Je.fromHex("#cccccc").transparent(.2).toString(),tableOddRowsBackgroundColor:Je.fromHex("#cccccc").transparent(.04).toString(),listBackground:void 0,listFocusForeground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusForeground:void 0,listInactiveFocusBackground:void 0,listHoverForeground:void 0,listFocusOutline:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listHoverOutline:void 0,treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:void 0},wtt={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}}};function Ttt(s,e){const t=s.indexOf(e);if(t===-1)return[];const i=[];let n=t-1;for(;n>=0&&s[n]===e-(t-n);)i.push(s[n--]);for(i.reverse(),n=t;n<s.length&&s[n]===e+(n-t);)i.push(s[n++]);return i}function M6(s,e){const t=[];let i=0,n=0;for(;i<s.length||n<e.length;)if(i>=s.length)t.push(e[n++]);else if(n>=e.length)t.push(s[i++]);else if(s[i]===e[n]){t.push(s[i]),i++,n++;continue}else s[i]<e[n]?t.push(s[i++]):t.push(e[n++]);return t}function Ctt(s,e){const t=[];let i=0,n=0;for(;i<s.length||n<e.length;)if(i>=s.length)t.push(e[n++]);else if(n>=e.length)t.push(s[i++]);else if(s[i]===e[n]){i++,n++;continue}else s[i]<e[n]?t.push(s[i++]):n++;return t}const hme=(s,e)=>s-e;class Btt{constructor(e,t){this._templateId=e,this.renderers=t}get templateId(){return this._templateId}renderTemplate(e){return this.renderers.map(t=>t.renderTemplate(e))}renderElement(e,t,i,n){let o=0;for(const r of this.renderers)r.renderElement(e,t,i[o++],n)}disposeElement(e,t,i,n){var r;let o=0;for(const l of this.renderers)(r=l.disposeElement)==null||r.call(l,e,t,i[o],n),o+=1}disposeTemplate(e){let t=0;for(const i of this.renderers)i.disposeTemplate(e[t++])}}class Ltt{constructor(e){this.accessibilityProvider=e,this.templateId="a18n"}renderTemplate(e){return{container:e,disposables:new De}}renderElement(e,t,i){const n=this.accessibilityProvider.getAriaLabel(e),o=n&&typeof n!="string"?n:Jh(n);i.disposables.add(yi(l=>{this.setAriaLabel(l.readObservable(o),i.container)}));const r=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(e);typeof r=="number"?i.container.setAttribute("aria-level",`${r}`):i.container.removeAttribute("aria-level")}setAriaLabel(e,t){e?t.setAttribute("aria-label",e):t.removeAttribute("aria-label")}disposeElement(e,t,i,n){i.disposables.clear()}disposeTemplate(e){e.disposables.dispose()}}class vtt{constructor(e,t){this.list=e,this.dnd=t}getDragElements(e){const t=this.list.getSelectedElements();return t.indexOf(e)>-1?t:[e]}getDragURI(e){return this.dnd.getDragURI(e)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e,t)}onDragStart(e,t){var i,n;(n=(i=this.dnd).onDragStart)==null||n.call(i,e,t)}onDragOver(e,t,i,n,o){return this.dnd.onDragOver(e,t,i,n,o)}onDragLeave(e,t,i,n){var o,r;(r=(o=this.dnd).onDragLeave)==null||r.call(o,e,t,i,n)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}drop(e,t,i,n,o){this.dnd.drop(e,t,i,n,o)}dispose(){this.dnd.dispose()}}class hh{get onDidChangeFocus(){return Ut.map(this.eventBufferer.wrapEvent(this.focus.onChange),e=>this.toListEvent(e),this.disposables)}get onDidChangeSelection(){return Ut.map(this.eventBufferer.wrapEvent(this.selection.onChange),e=>this.toListEvent(e),this.disposables)}get domId(){return this.view.domId}get onDidScroll(){return this.view.onDidScroll}get onMouseClick(){return this.view.onMouseClick}get onMouseDblClick(){return this.view.onMouseDblClick}get onMouseMiddleClick(){return this.view.onMouseMiddleClick}get onPointer(){return this.mouseController.onPointer}get onMouseDown(){return this.view.onMouseDown}get onMouseOver(){return this.view.onMouseOver}get onMouseOut(){return this.view.onMouseOut}get onTouchStart(){return this.view.onTouchStart}get onTap(){return this.view.onTap}get onContextMenu(){let e=!1;const t=Ut.chain(this.disposables.add(new fn(this.view.domNode,"keydown")).event,o=>o.map(r=>new Ts(r)).filter(r=>e=r.keyCode===58||r.shiftKey&&r.keyCode===68).map(r=>Un.stop(r,!0)).filter(()=>!1)),i=Ut.chain(this.disposables.add(new fn(this.view.domNode,"keyup")).event,o=>o.forEach(()=>e=!1).map(r=>new Ts(r)).filter(r=>r.keyCode===58||r.shiftKey&&r.keyCode===68).map(r=>Un.stop(r,!0)).map(({browserEvent:r})=>{const l=this.getFocus(),a=l.length?l[0]:void 0,d=typeof a<"u"?this.view.element(a):void 0,c=typeof a<"u"?this.view.domElement(a):this.view.domNode;return{index:a,element:d,anchor:c,browserEvent:r}})),n=Ut.chain(this.view.onContextMenu,o=>o.filter(r=>!e).map(({element:r,index:l,browserEvent:a})=>({element:r,index:l,anchor:new _u(ai(this.view.domNode),a),browserEvent:a})));return Ut.any(t,i,n)}get onKeyDown(){return this.disposables.add(new fn(this.view.domNode,"keydown")).event}get onDidFocus(){return Ut.signal(this.disposables.add(new fn(this.view.domNode,"focus",!0)).event)}get onDidBlur(){return Ut.signal(this.disposables.add(new fn(this.view.domNode,"blur",!0)).event)}constructor(e,t,i,n,o=wtt){var d,c,h;this.user=e,this._options=o,this.focus=new DX("focused"),this.anchor=new DX("anchor"),this.eventBufferer=new Yv,this._ariaLabel="",this.disposables=new De,this._onDidDispose=new fe,this.onDidDispose=this._onDidDispose.event;const r=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?(d=this._options.accessibilityProvider)==null?void 0:d.getWidgetRole():"list";this.selection=new Stt(r!=="listbox");const l=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=o.accessibilityProvider,this.accessibilityProvider&&(l.push(new Ltt(this.accessibilityProvider)),(h=(c=this.accessibilityProvider).onDidChangeActiveDescendant)==null||h.call(c,this.onDidChangeActiveDescendant,this,this.disposables)),n=n.map(u=>new Btt(u.templateId,[...l,u]));const a={...o,dnd:o.dnd&&new vtt(this,o.dnd)};if(this.view=this.createListView(t,i,n,a),this.view.domNode.setAttribute("role",r),o.styleController)this.styleController=o.styleController(this.view.domId);else{const u=sh(this.view.domNode);this.styleController=new pRe(u,this.view.domId)}if(this.spliceable=new utt([new ZP(this.focus,this.view,o.identityProvider),new ZP(this.selection,this.view,o.identityProvider),new ZP(this.anchor,this.view,o.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.anchor),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.disposables.add(new ytt(this,this.view)),(typeof o.keyboardSupport!="boolean"||o.keyboardSupport)&&(this.keyboardController=new cRe(this,this.view,o),this.disposables.add(this.keyboardController)),o.keyboardNavigationLabelProvider){const u=o.keyboardNavigationDelegate||Vtt;this.typeNavigationController=new Wtt(this,this.view,o.keyboardNavigationLabelProvider,o.keyboardNavigationEventFilter??(()=>!0),u),this.disposables.add(this.typeNavigationController)}this.mouseController=this.createMouseController(o),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),this._options.multipleSelectionSupport!==!1&&this.view.domNode.setAttribute("aria-multiselectable","true")}createListView(e,t,i,n){return new nm(e,t,i,n)}createMouseController(e){return new mRe(this)}updateOptions(e={}){var t,i;this._options={...this._options,...e},(t=this.typeNavigationController)==null||t.updateOptions(this._options),this._options.multipleSelectionController!==void 0&&(this._options.multipleSelectionSupport?this.view.domNode.setAttribute("aria-multiselectable","true"):this.view.domNode.removeAttribute("aria-multiselectable")),this.mouseController.updateOptions(e),(i=this.keyboardController)==null||i.updateOptions(e),this.view.updateOptions(e)}get options(){return this._options}splice(e,t,i=[]){if(e<0||e>this.view.length)throw new VA(this.user,`Invalid start index: ${e}`);if(t<0)throw new VA(this.user,`Invalid delete count: ${t}`);t===0&&i.length===0||this.eventBufferer.bufferEvents(()=>this.spliceable.splice(e,t,i))}rerender(){this.view.rerender()}element(e){return this.view.element(e)}indexOf(e){return this.view.indexOf(e)}indexAt(e){return this.view.indexAt(e)}get length(){return this.view.length}get contentHeight(){return this.view.contentHeight}get onDidChangeContentHeight(){return this.view.onDidChangeContentHeight}get scrollTop(){return this.view.getScrollTop()}set scrollTop(e){this.view.setScrollTop(e)}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get firstVisibleIndex(){return this.view.firstVisibleIndex}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){this._ariaLabel=e,this.view.domNode.setAttribute("aria-label",e)}domFocus(){this.view.domNode.focus({preventScroll:!0})}layout(e,t){this.view.layout(e,t)}setSelection(e,t){for(const i of e)if(i<0||i>=this.length)throw new VA(this.user,`Invalid index ${i}`);this.selection.set(e,t)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map(e=>this.view.element(e))}setAnchor(e){if(typeof e>"u"){this.anchor.set([]);return}if(e<0||e>=this.length)throw new VA(this.user,`Invalid index ${e}`);this.anchor.set([e])}getAnchor(){return mse(this.anchor.get(),void 0)}getAnchorElement(){const e=this.getAnchor();return typeof e>"u"?void 0:this.element(e)}setFocus(e,t){for(const i of e)if(i<0||i>=this.length)throw new VA(this.user,`Invalid index ${i}`);this.focus.set(e,t)}focusNext(e=1,t=!1,i,n){if(this.length===0)return;const o=this.focus.get(),r=this.findNextIndex(o.length>0?o[0]+e:0,t,n);r>-1&&this.setFocus([r],i)}focusPrevious(e=1,t=!1,i,n){if(this.length===0)return;const o=this.focus.get(),r=this.findPreviousIndex(o.length>0?o[0]-e:0,t,n);r>-1&&this.setFocus([r],i)}async focusNextPage(e,t){let i=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);i=i===0?0:i-1;const n=this.getFocus()[0];if(n!==i&&(n===void 0||i>n)){const o=this.findPreviousIndex(i,!1,t);o>-1&&n!==o?this.setFocus([o],e):this.setFocus([i],e)}else{const o=this.view.getScrollTop();let r=o+this.view.renderHeight;i>n&&(r-=this.view.elementHeight(i)),this.view.setScrollTop(r),this.view.getScrollTop()!==o&&(this.setFocus([]),await Pf(0),await this.focusNextPage(e,t))}}async focusPreviousPage(e,t,i=()=>0){let n;const o=i(),r=this.view.getScrollTop()+o;r===0?n=this.view.indexAt(r):n=this.view.indexAfter(r-1);const l=this.getFocus()[0];if(l!==n&&(l===void 0||l>=n)){const a=this.findNextIndex(n,!1,t);a>-1&&l!==a?this.setFocus([a],e):this.setFocus([n],e)}else{const a=r;this.view.setScrollTop(r-this.view.renderHeight-o),this.view.getScrollTop()+i()!==a&&(this.setFocus([]),await Pf(0),await this.focusPreviousPage(e,t,i))}}focusLast(e,t){if(this.length===0)return;const i=this.findPreviousIndex(this.length-1,!1,t);i>-1&&this.setFocus([i],e)}focusFirst(e,t){this.focusNth(0,e,t)}focusNth(e,t,i){if(this.length===0)return;const n=this.findNextIndex(e,!1,i);n>-1&&this.setFocus([n],t)}findNextIndex(e,t=!1,i){for(let n=0;n<this.length;n++){if(e>=this.length&&!t)return-1;if(e=e%this.length,!i||i(this.element(e)))return e;e++}return-1}findPreviousIndex(e,t=!1,i){for(let n=0;n<this.length;n++){if(e<0&&!t)return-1;if(e=(this.length+e%this.length)%this.length,!i||i(this.element(e)))return e;e--}return-1}getFocus(){return this.focus.get()}getFocusedElements(){return this.getFocus().map(e=>this.view.element(e))}reveal(e,t,i=0){if(e<0||e>=this.length)throw new VA(this.user,`Invalid index ${e}`);const n=this.view.getScrollTop(),o=this.view.elementTop(e),r=this.view.elementHeight(e);if(wF(t)){const l=r-this.view.renderHeight+i;this.view.setScrollTop(l*Ba(t,0,1)+o-i)}else{const l=o+r,a=n+this.view.renderHeight;o<n+i&&l>=a||(o<n+i||l>=a&&r>=this.view.renderHeight?this.view.setScrollTop(o-i):l>=a&&this.view.setScrollTop(l-this.view.renderHeight))}}getRelativeTop(e,t=0){if(e<0||e>=this.length)throw new VA(this.user,`Invalid index ${e}`);const i=this.view.getScrollTop(),n=this.view.elementTop(e),o=this.view.elementHeight(e);if(n<i+t||n+o>i+this.view.renderHeight)return null;const r=o-this.view.renderHeight+t;return Math.abs((i+t-n)/r)}getHTMLElement(){return this.view.domNode}getScrollableElement(){return this.view.scrollableElementDomNode}getElementID(e){return this.view.getElementDomId(e)}getElementTop(e){return this.view.elementTop(e)}style(e){this.styleController.style(e)}toListEvent({indexes:e,browserEvent:t}){return{indexes:e,elements:e.map(i=>this.view.element(i)),browserEvent:t}}_onFocusChange(){const e=this.focus.get();this.view.domNode.classList.toggle("element-focused",e.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var t;const e=this.focus.get();if(e.length>0){let i;(t=this.accessibilityProvider)!=null&&t.getActiveDescendantId&&(i=this.accessibilityProvider.getActiveDescendantId(this.view.element(e[0]))),this.view.domNode.setAttribute("aria-activedescendant",i||this.view.getElementDomId(e[0]))}else this.view.domNode.removeAttribute("aria-activedescendant")}_onSelectionChange(){const e=this.selection.get();this.view.domNode.classList.toggle("selection-none",e.length===0),this.view.domNode.classList.toggle("selection-single",e.length===1),this.view.domNode.classList.toggle("selection-multiple",e.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}sA([Po],hh.prototype,"onDidChangeFocus",null);sA([Po],hh.prototype,"onDidChangeSelection",null);sA([Po],hh.prototype,"onContextMenu",null);sA([Po],hh.prototype,"onKeyDown",null);sA([Po],hh.prototype,"onDidFocus",null);sA([Po],hh.prototype,"onDidBlur",null);const AS=gt,gRe="selectOption.entry.template";class ktt{get templateId(){return gRe}renderTemplate(e){const t=Object.create(null);return t.root=e,t.text=nt(e,AS(".option-text")),t.detail=nt(e,AS(".option-detail")),t.decoratorRight=nt(e,AS(".option-decorator-right")),t}renderElement(e,t,i){const n=i,o=e.text,r=e.detail,l=e.decoratorRight,a=e.isDisabled;n.text.textContent=o,n.detail.textContent=r||"",n.decoratorRight.innerText=l||"",a?n.root.classList.add("option-disabled"):n.root.classList.remove("option-disabled")}disposeTemplate(e){}}const qp=class qp extends be{constructor(e,t,i,n,o){super(),this.options=[],this._currentSelection=0,this._hasDetails=!1,this._skipLayout=!1,this._sticky=!1,this._isVisible=!1,this.styles=n,this.selectBoxOptions=o||Object.create(null),typeof this.selectBoxOptions.minBottomMargin!="number"?this.selectBoxOptions.minBottomMargin=qp.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN:this.selectBoxOptions.minBottomMargin<0&&(this.selectBoxOptions.minBottomMargin=0),this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box monaco-select-box-dropdown-padding",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=new fe,this._register(this._onDidSelect),this.registerListeners(),this.constructSelectDropDown(i),this.selected=t||0,e&&this.setOptions(e,t),this.initStyleSheet()}setTitle(e){!this._hover&&e?this._hover=this._register(Ap().setupManagedHover(Ka("mouse"),this.selectElement,e)):this._hover&&this._hover.update(e)}getHeight(){return 22}getTemplateId(){return gRe}constructSelectDropDown(e){this.contextViewProvider=e,this.selectDropDownContainer=gt(".monaco-select-box-dropdown-container"),this.selectDropDownContainer.classList.add("monaco-select-box-dropdown-padding"),this.selectionDetailsPane=nt(this.selectDropDownContainer,AS(".select-box-details-pane"));const t=nt(this.selectDropDownContainer,AS(".select-box-dropdown-container-width-control")),i=nt(t,AS(".width-control-div"));this.widthControlElement=document.createElement("span"),this.widthControlElement.className="option-text-width-control",nt(i,this.widthControlElement),this._dropDownPosition=0,this.styleElement=sh(this.selectDropDownContainer),this.selectDropDownContainer.setAttribute("draggable","true"),this._register(Te(this.selectDropDownContainer,ut.DRAG_START,n=>{Un.stop(n,!0)}))}registerListeners(){this._register(Fo(this.selectElement,"change",t=>{this.selected=t.target.selectedIndex,this._onDidSelect.fire({index:t.target.selectedIndex,selected:t.target.value}),this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)})),this._register(Te(this.selectElement,ut.CLICK,t=>{Un.stop(t),this._isVisible?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(Te(this.selectElement,ut.MOUSE_DOWN,t=>{Un.stop(t)}));let e;this._register(Te(this.selectElement,"touchstart",t=>{e=this._isVisible})),this._register(Te(this.selectElement,"touchend",t=>{Un.stop(t),e?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(Te(this.selectElement,ut.KEY_DOWN,t=>{const i=new Ts(t);let n=!1;hn?(i.keyCode===18||i.keyCode===16||i.keyCode===10||i.keyCode===3)&&(n=!0):(i.keyCode===18&&i.altKey||i.keyCode===16&&i.altKey||i.keyCode===10||i.keyCode===3)&&(n=!0),n&&(this.showSelectDropDown(),Un.stop(t,!0))}))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){lo(this.options,e)||(this.options=e,this.selectElement.options.length=0,this._hasDetails=!1,this._cachedMaxDetailsHeight=void 0,this.options.forEach((i,n)=>{this.selectElement.add(this.createOption(i.text,n,i.isDisabled)),typeof i.description=="string"&&(this._hasDetails=!0)})),t!==void 0&&(this.select(t),this._currentSelection=this.selected)}setOptionsList(){var e;(e=this.selectList)==null||e.splice(0,this.selectList.length,this.options)}select(e){e>=0&&e<this.options.length?this.selected=e:e>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(e){this.selectElement.tabIndex=e?0:-1}render(e){this.container=e,e.classList.add("select-container"),e.appendChild(this.selectElement),this.styleSelectElement()}initStyleSheet(){const e=[];this.styles.listFocusBackground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`),this.styles.listFocusForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`),this.styles.decoratorRightForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`),this.styles.selectBackground&&this.styles.selectBorder&&this.styles.selectBorder!==this.styles.selectBackground?(e.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `)):this.styles.selectListBorder&&(e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `)),this.styles.listHoverForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`),this.styles.listHoverBackground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`),this.styles.listFocusOutline&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`),this.styles.listHoverOutline&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }"),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }"),this.styleElement.textContent=e.join(`
- `)}styleSelectElement(){const e=this.styles.selectBackground??"",t=this.styles.selectForeground??"",i=this.styles.selectBorder??"";this.selectElement.style.backgroundColor=e,this.selectElement.style.color=t,this.selectElement.style.borderColor=i}styleList(){const e=this.styles.selectBackground??"",t=kf(this.styles.selectListBackground,e);this.selectDropDownListContainer.style.backgroundColor=t,this.selectionDetailsPane.style.backgroundColor=t;const i=this.styles.focusBorder??"";this.selectDropDownContainer.style.outlineColor=i,this.selectDropDownContainer.style.outlineOffset="-1px",this.selectList.style(this.styles)}createOption(e,t,i){const n=document.createElement("option");return n.value=e,n.text=e,n.disabled=!!i,n}showSelectDropDown(){this.selectionDetailsPane.innerText="",!(!this.contextViewProvider||this._isVisible)&&(this.createSelectList(this.selectDropDownContainer),this.setOptionsList(),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e,!0),layout:()=>{this.layoutSelectDropDown()},onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._isVisible=!0,this.hideSelectDropDown(!1),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e),layout:()=>this.layoutSelectDropDown(),onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._currentSelection=this.selected,this._isVisible=!0,this.selectElement.setAttribute("aria-expanded","true"))}hideSelectDropDown(e){!this.contextViewProvider||!this._isVisible||(this._isVisible=!1,this.selectElement.setAttribute("aria-expanded","false"),e&&this.selectElement.focus(),this.contextViewProvider.hideContextView())}renderSelectDropDown(e,t){return e.appendChild(this.selectDropDownContainer),this.layoutSelectDropDown(t),{dispose:()=>{this.selectDropDownContainer.remove()}}}measureMaxDetailsHeight(){let e=0;return this.options.forEach((t,i)=>{this.updateDetail(i),this.selectionDetailsPane.offsetHeight>e&&(e=this.selectionDetailsPane.offsetHeight)}),e}layoutSelectDropDown(e){if(this._skipLayout)return!1;if(this.selectList){this.selectDropDownContainer.classList.add("visible");const t=ai(this.selectElement),i=Lo(this.selectElement),n=ai(this.selectElement).getComputedStyle(this.selectElement),o=parseFloat(n.getPropertyValue("--dropdown-padding-top"))+parseFloat(n.getPropertyValue("--dropdown-padding-bottom")),r=t.innerHeight-i.top-i.height-(this.selectBoxOptions.minBottomMargin||0),l=i.top-qp.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN,a=this.selectElement.offsetWidth,d=this.setWidthControlElement(this.widthControlElement),c=Math.max(d,Math.round(a)).toString()+"px";this.selectDropDownContainer.style.width=c,this.selectList.getHTMLElement().style.height="",this.selectList.layout();let h=this.selectList.contentHeight;this._hasDetails&&this._cachedMaxDetailsHeight===void 0&&(this._cachedMaxDetailsHeight=this.measureMaxDetailsHeight());const u=this._hasDetails?this._cachedMaxDetailsHeight:0,m=h+o+u,p=Math.floor((r-o-u)/this.getHeight()),g=Math.floor((l-o-u)/this.getHeight());if(e)return i.top+i.height>t.innerHeight-22||i.top<qp.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||p<1&&g<1?!1:(p<qp.DEFAULT_MINIMUM_VISIBLE_OPTIONS&&g>p&&this.options.length>p?(this._dropDownPosition=1,this.selectDropDownListContainer.remove(),this.selectionDetailsPane.remove(),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectionDetailsPane.classList.remove("border-top"),this.selectionDetailsPane.classList.add("border-bottom")):(this._dropDownPosition=0,this.selectDropDownListContainer.remove(),this.selectionDetailsPane.remove(),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectionDetailsPane.classList.remove("border-bottom"),this.selectionDetailsPane.classList.add("border-top")),!0);if(i.top+i.height>t.innerHeight-22||i.top<qp.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||this._dropDownPosition===0&&p<1||this._dropDownPosition===1&&g<1)return this.hideSelectDropDown(!0),!1;if(this._dropDownPosition===0){if(this._isVisible&&p+g<1)return this.hideSelectDropDown(!0),!1;m>r&&(h=p*this.getHeight())}else m>l&&(h=g*this.getHeight());return this.selectList.layout(h),this.selectList.domFocus(),this.selectList.length>0&&(this.selectList.setFocus([this.selected||0]),this.selectList.reveal(this.selectList.getFocus()[0]||0)),this._hasDetails?(this.selectList.getHTMLElement().style.height=h+o+"px",this.selectDropDownContainer.style.height=""):this.selectDropDownContainer.style.height=h+o+"px",this.updateDetail(this.selected),this.selectDropDownContainer.style.width=c,this.selectDropDownListContainer.setAttribute("tabindex","0"),this.selectElement.classList.add("synthetic-focus"),this.selectDropDownContainer.classList.add("synthetic-focus"),!0}else return!1}setWidthControlElement(e){let t=0;if(e){let i=0,n=0;this.options.forEach((o,r)=>{const l=o.detail?o.detail.length:0,a=o.decoratorRight?o.decoratorRight.length:0,d=o.text.length+l+a;d>n&&(i=r,n=d)}),e.textContent=this.options[i].text+(this.options[i].decoratorRight?this.options[i].decoratorRight+" ":""),t=qd(e)}return t}createSelectList(e){if(this.selectList)return;this.selectDropDownListContainer=nt(e,AS(".select-box-dropdown-list-container")),this.listRenderer=new ktt,this.selectList=this._register(new hh("SelectBoxCustom",this.selectDropDownListContainer,this,[this.listRenderer],{useShadows:!1,verticalScrollMode:3,keyboardSupport:!1,mouseSupport:!1,accessibilityProvider:{getAriaLabel:n=>{let o=n.text;return n.detail&&(o+=`. ${n.detail}`),n.decoratorRight&&(o+=`. ${n.decoratorRight}`),n.description&&(o+=`. ${n.description}`),o},getWidgetAriaLabel:()=>F({key:"selectBox",comment:["Behave like native select dropdown element."]},"Select Box"),getRole:()=>hn?"":"option",getWidgetRole:()=>"listbox"}})),this.selectBoxOptions.ariaLabel&&(this.selectList.ariaLabel=this.selectBoxOptions.ariaLabel);const t=this._register(new fn(this.selectDropDownListContainer,"keydown")),i=Ut.chain(t.event,n=>n.filter(()=>this.selectList.length>0).map(o=>new Ts(o)));this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===3))(this.onEnter,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===2))(this.onEnter,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===9))(this.onEscape,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===16))(this.onUpArrow,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===18))(this.onDownArrow,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===12))(this.onPageDown,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===11))(this.onPageUp,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===14))(this.onHome,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode===13))(this.onEnd,this)),this._register(Ut.chain(i,n=>n.filter(o=>o.keyCode>=21&&o.keyCode<=56||o.keyCode>=85&&o.keyCode<=113))(this.onCharacter,this)),this._register(Te(this.selectList.getHTMLElement(),ut.POINTER_UP,n=>this.onPointerUp(n))),this._register(this.selectList.onMouseOver(n=>typeof n.index<"u"&&this.selectList.setFocus([n.index]))),this._register(this.selectList.onDidChangeFocus(n=>this.onListFocus(n))),this._register(Te(this.selectDropDownContainer,ut.FOCUS_OUT,n=>{!this._isVisible||wr(n.relatedTarget,this.selectDropDownContainer)||this.onListBlur()})),this.selectList.getHTMLElement().setAttribute("aria-label",this.selectBoxOptions.ariaLabel||""),this.selectList.getHTMLElement().setAttribute("aria-expanded","true"),this.styleList()}onPointerUp(e){if(!this.selectList.length)return;Un.stop(e);const t=e.target;if(!t||t.classList.contains("slider"))return;const i=t.closest(".monaco-list-row");if(!i)return;const n=Number(i.getAttribute("data-index")),o=i.classList.contains("option-disabled");n>=0&&n<this.options.length&&!o&&(this.selected=n,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)),this.hideSelectDropDown(!0))}onListBlur(){this._sticky||(this.selected!==this._currentSelection&&this.select(this._currentSelection),this.hideSelectDropDown(!1))}renderDescriptionMarkdown(e,t){const i=o=>{for(let r=0;r<o.childNodes.length;r++){const l=o.childNodes.item(r);(l.tagName&&l.tagName.toLowerCase())==="img"?l.remove():i(l)}},n=l9({value:e,supportThemeIcons:!0},{actionHandler:t});return n.element.classList.add("select-box-description-markdown"),i(n.element),n.element}onListFocus(e){!this._isVisible||!this._hasDetails||this.updateDetail(e.indexes[0])}updateDetail(e){this.selectionDetailsPane.innerText="";const t=this.options[e],i=(t==null?void 0:t.description)??"",n=(t==null?void 0:t.descriptionIsMarkdown)??!1;if(i){if(n){const o=t.descriptionMarkdownActionHandler;this.selectionDetailsPane.appendChild(this.renderDescriptionMarkdown(i,o))}else this.selectionDetailsPane.innerText=i;this.selectionDetailsPane.style.display="block"}else this.selectionDetailsPane.style.display="none";this._skipLayout=!0,this.contextViewProvider.layout(),this._skipLayout=!1}onEscape(e){Un.stop(e),this.select(this._currentSelection),this.hideSelectDropDown(!0)}onEnter(e){Un.stop(e),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)),this.hideSelectDropDown(!0)}onDownArrow(e){if(this.selected<this.options.length-1){Un.stop(e,!0);const t=this.options[this.selected+1].isDisabled;if(t&&this.options.length>this.selected+2)this.selected+=2;else{if(t)return;this.selected++}this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onUpArrow(e){this.selected>0&&(Un.stop(e,!0),this.options[this.selected-1].isDisabled&&this.selected>1?this.selected-=2:this.selected--,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]))}onPageUp(e){Un.stop(e),this.selectList.focusPreviousPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected<this.options.length-1&&(this.selected++,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onPageDown(e){Un.stop(e),this.selectList.focusNextPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected>0&&(this.selected--,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onHome(e){Un.stop(e),!(this.options.length<2)&&(this.selected=0,this.options[this.selected].isDisabled&&this.selected>1&&this.selected++,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onEnd(e){Un.stop(e),!(this.options.length<2)&&(this.selected=this.options.length-1,this.options[this.selected].isDisabled&&this.selected>1&&this.selected--,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onCharacter(e){const t=df.toString(e.keyCode);let i=-1;for(let n=0;n<this.options.length-1;n++)if(i=(n+this.selected+1)%this.options.length,this.options[i].text.charAt(0).toUpperCase()===t&&!this.options[i].isDisabled){this.select(i),this.selectList.setFocus([i]),this.selectList.reveal(this.selectList.getFocus()[0]),Un.stop(e);break}}dispose(){this.hideSelectDropDown(!1),super.dispose()}};qp.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN=32,qp.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN=2,qp.DEFAULT_MINIMUM_VISIBLE_OPTIONS=3;let w6=qp;class xtt extends be{constructor(e,t,i,n){super(),this.selected=0,this.selectBoxOptions=n||Object.create(null),this.options=[],this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=this._register(new fe),this.styles=i,this.registerListeners(),this.setOptions(e,t)}registerListeners(){this._register(Hl.addTarget(this.selectElement)),[vs.Tap].forEach(e=>{this._register(Te(this.selectElement,e,t=>{this.selectElement.focus()}))}),this._register(Fo(this.selectElement,"click",e=>{Un.stop(e,!0)})),this._register(Fo(this.selectElement,"change",e=>{this.selectElement.title=e.target.value,this._onDidSelect.fire({index:e.target.selectedIndex,selected:e.target.value})})),this._register(Fo(this.selectElement,"keydown",e=>{let t=!1;hn?(e.keyCode===18||e.keyCode===16||e.keyCode===10)&&(t=!0):(e.keyCode===18&&e.altKey||e.keyCode===10||e.keyCode===3)&&(t=!0),t&&e.stopPropagation()}))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){(!this.options||!lo(this.options,e))&&(this.options=e,this.selectElement.options.length=0,this.options.forEach((i,n)=>{this.selectElement.add(this.createOption(i.text,n,i.isDisabled))})),t!==void 0&&this.select(t)}select(e){this.options.length===0?this.selected=0:e>=0&&e<this.options.length?this.selected=e:e>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.selected<this.options.length&&typeof this.options[this.selected].text=="string"?this.selectElement.title=this.options[this.selected].text:this.selectElement.title=""}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(e){this.selectElement.tabIndex=e?0:-1}render(e){e.classList.add("select-container"),e.appendChild(this.selectElement),this.setOptions(this.options,this.selected),this.applyStyles()}applyStyles(){this.selectElement&&(this.selectElement.style.backgroundColor=this.styles.selectBackground??"",this.selectElement.style.color=this.styles.selectForeground??"",this.selectElement.style.borderColor=this.styles.selectBorder??"")}createOption(e,t,i){const n=document.createElement("option");return n.value=e,n.text=e,n.disabled=!!i,n}}class Itt extends ch{constructor(e,t,i,n,o){super(),hn&&!(o!=null&&o.useCustomDrawn)?this.selectBoxDelegate=new xtt(e,t,n,o):this.selectBoxDelegate=new w6(e,t,i,n,o),this._register(this.selectBoxDelegate)}get onDidSelect(){return this.selectBoxDelegate.onDidSelect}setOptions(e,t){this.selectBoxDelegate.setOptions(e,t)}select(e){this.selectBoxDelegate.select(e)}focus(){this.selectBoxDelegate.focus()}blur(){this.selectBoxDelegate.blur()}setFocusable(e){this.selectBoxDelegate.setFocusable(e)}render(e){this.selectBoxDelegate.render(e)}}class Ym extends be{get action(){return this._action}constructor(e,t,i={}){super(),this.options=i,this._context=e||this,this._action=t,t instanceof ac&&this._register(t.onDidChange(n=>{this.element&&this.handleActionChangeEvent(n)}))}handleActionChangeEvent(e){e.enabled!==void 0&&this.updateEnabled(),e.checked!==void 0&&this.updateChecked(),e.class!==void 0&&this.updateClass(),e.label!==void 0&&(this.updateLabel(),this.updateTooltip()),e.tooltip!==void 0&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new ZN)),this._actionRunner}set actionRunner(e){this._actionRunner=e}isEnabled(){return this._action.enabled}setActionContext(e){this._context=e}render(e){const t=this.element=e;this._register(Hl.addTarget(e));const i=this.options&&this.options.draggable;i&&(e.draggable=!0,zh&&this._register(Te(e,ut.DRAG_START,n=>{var o;return(o=n.dataTransfer)==null?void 0:o.setData(fL.TEXT,this._action.label)}))),this._register(Te(t,vs.Tap,n=>this.onClick(n,!0))),this._register(Te(t,ut.MOUSE_DOWN,n=>{i||Un.stop(n,!0),this._action.enabled&&n.button===0&&t.classList.add("active")})),hn&&this._register(Te(t,ut.CONTEXT_MENU,n=>{n.button===0&&n.ctrlKey===!0&&this.onClick(n)})),this._register(Te(t,ut.CLICK,n=>{Un.stop(n,!0),this.options&&this.options.isMenu||this.onClick(n)})),this._register(Te(t,ut.DBLCLICK,n=>{Un.stop(n,!0)})),[ut.MOUSE_UP,ut.MOUSE_OUT].forEach(n=>{this._register(Te(t,n,o=>{Un.stop(o),t.classList.remove("active")}))})}onClick(e,t=!1){var n;Un.stop(e,!0);const i=Xc(this._context)?(n=this.options)!=null&&n.useEventAsContext?e:{preserveFocus:t}:this._context;this.actionRunner.run(this._action,i)}focus(){this.element&&(this.element.tabIndex=0,this.element.focus(),this.element.classList.add("focused"))}blur(){this.element&&(this.element.blur(),this.element.tabIndex=-1,this.element.classList.remove("focused"))}setFocusable(e){this.element&&(this.element.tabIndex=e?0:-1)}get trapsArrowNavigation(){return!1}updateEnabled(){}updateLabel(){}getClass(){return this.action.class}getTooltip(){return this.action.tooltip}updateTooltip(){var t;if(!this.element)return;const e=this.getTooltip()??"";if(this.updateAriaLabel(),(t=this.options.hoverDelegate)!=null&&t.showNativeHover)this.element.title=e;else if(!this.customHover&&e!==""){const i=this.options.hoverDelegate??Ka("element");this.customHover=this._store.add(Ap().setupManagedHover(i,this.element,e))}else this.customHover&&this.customHover.update(e)}updateAriaLabel(){if(this.element){const e=this.getTooltip()??"";this.element.setAttribute("aria-label",e)}}updateClass(){}updateChecked(){}dispose(){this.element&&(this.element.remove(),this.element=void 0),this._context=void 0,super.dispose()}}class Iy extends Ym{constructor(e,t,i){super(e,t,i),this.options=i,this.options.icon=i.icon!==void 0?i.icon:!1,this.options.label=i.label!==void 0?i.label:!0,this.cssClass=""}render(e){super.render(e),vn(this.element);const t=document.createElement("a");if(t.classList.add("action-label"),t.setAttribute("role",this.getDefaultAriaRole()),this.label=t,this.element.appendChild(t),this.options.label&&this.options.keybinding){const i=document.createElement("span");i.classList.add("keybinding"),i.textContent=this.options.keybinding,this.element.appendChild(i)}this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}getDefaultAriaRole(){return this._action.id===Br.ID?"presentation":this.options.isMenu?"menuitem":this.options.isTabList?"tab":"button"}focus(){this.label&&(this.label.tabIndex=0,this.label.focus())}blur(){this.label&&(this.label.tabIndex=-1)}setFocusable(e){this.label&&(this.label.tabIndex=e?0:-1)}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.action.label)}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:!this.options.label&&this.action.label&&this.options.icon&&(e=this.action.label,this.options.keybinding&&(e=F({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e??void 0}updateClass(){var e;this.cssClass&&this.label&&this.label.classList.remove(...this.cssClass.split(" ")),this.options.icon?(this.cssClass=this.getClass(),this.label&&(this.label.classList.add("codicon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" "))),this.updateEnabled()):(e=this.label)==null||e.classList.remove("codicon")}updateEnabled(){var e,t;this.action.enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),this.label.classList.remove("disabled")),(e=this.element)==null||e.classList.remove("disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),this.label.classList.add("disabled")),(t=this.element)==null||t.classList.add("disabled"))}updateAriaLabel(){if(this.label){const e=this.getTooltip()??"";this.label.setAttribute("aria-label",e)}}updateChecked(){this.label&&(this.action.checked!==void 0?(this.label.classList.toggle("checked",this.action.checked),this.options.isTabList?this.label.setAttribute("aria-selected",this.action.checked?"true":"false"):(this.label.setAttribute("aria-checked",this.action.checked?"true":"false"),this.label.setAttribute("role","checkbox"))):(this.label.classList.remove("checked"),this.label.removeAttribute(this.options.isTabList?"aria-selected":"aria-checked"),this.label.setAttribute("role",this.getDefaultAriaRole())))}}class Ett extends Ym{constructor(e,t,i,n,o,r,l){super(e,t),this.selectBox=new Itt(i,n,o,r,l),this.selectBox.setFocusable(!1),this._register(this.selectBox),this.registerListeners()}select(e){this.selectBox.select(e)}registerListeners(){this._register(this.selectBox.onDidSelect(e=>this.runAction(e.selected,e.index)))}runAction(e,t){this.actionRunner.run(this._action,this.getActionContext(e,t))}getActionContext(e,t){return e}setFocusable(e){this.selectBox.setFocusable(e)}focus(){var e;(e=this.selectBox)==null||e.focus()}blur(){var e;(e=this.selectBox)==null||e.blur()}render(e){this.selectBox.render(e)}}class Dtt extends ZN{constructor(e,t){super(),this._onDidChangeVisibility=this._register(new fe),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=nt(e,gt(".monaco-dropdown")),this._label=nt(this._element,gt(".dropdown-label"));let i=t.labelRenderer;i||(i=o=>(o.textContent=t.label||"",null));for(const o of[ut.CLICK,ut.MOUSE_DOWN,vs.Tap])this._register(Te(this.element,o,r=>Un.stop(r,!0)));for(const o of[ut.MOUSE_DOWN,vs.Tap])this._register(Te(this._label,o,r=>{Ese(r)&&(r.detail>1||r.button!==0)||(this.visible?this.hide():this.show())}));this._register(Te(this._label,ut.KEY_UP,o=>{const r=new Ts(o);(r.equals(3)||r.equals(10))&&(Un.stop(o,!0),this.visible?this.hide():this.show())}));const n=i(this._label);n&&this._register(n),this._register(Hl.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class Gtt extends Dtt{constructor(e,t){super(e,t),this._options=t,this._actions=[],this.actions=t.actions||[]}set menuOptions(e){this._menuOptions=e}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(e){this._actions=e}show(){super.show(),this.element.classList.add("active"),this._options.contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:(e,t)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(e,t):void 0,getKeyBinding:e=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(e):void 0,getMenuClassName:()=>this._options.menuClassName||"",onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this._options.menuAsChild?this.element:void 0,skipTelemetry:this._options.skipTelemetry})}hide(){super.hide()}onHide(){this.hide(),this.element.classList.remove("active")}}class GX extends Ym{constructor(e,t,i,n=Object.create(null)){super(null,e,n),this.actionItem=null,this._onDidChangeVisibility=this._register(new fe),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this.menuActionsOrProvider=t,this.contextMenuProvider=i,this.options=n,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(e){this.actionItem=e;const t=o=>{this.element=nt(o,gt("a.action-label"));let r=[];return typeof this.options.classNames=="string"?r=this.options.classNames.split(/\s+/g).filter(l=>!!l):this.options.classNames&&(r=this.options.classNames),r.find(l=>l==="icon")||r.push("codicon"),this.element.classList.add(...r),this.element.setAttribute("role","button"),this.element.setAttribute("aria-haspopup","true"),this.element.setAttribute("aria-expanded","false"),this._action.label&&this._register(Ap().setupManagedHover(this.options.hoverDelegate??Ka("mouse"),this.element,this._action.label)),this.element.ariaLabel=this._action.label||"",null},i=Array.isArray(this.menuActionsOrProvider),n={contextMenuProvider:this.contextMenuProvider,labelRenderer:t,menuAsChild:this.options.menuAsChild,actions:i?this.menuActionsOrProvider:void 0,actionProvider:i?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new Gtt(e,n)),this._register(this.dropdownMenu.onDidChangeVisibility(o=>{var r;(r=this.element)==null||r.setAttribute("aria-expanded",`${o}`),this._onDidChangeVisibility.fire(o)})),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const o=this;this.dropdownMenu.menuOptions={...this.dropdownMenu.menuOptions,get anchorAlignment(){return o.options.anchorAlignmentProvider()}}}this.updateTooltip(),this.updateEnabled()}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:this.action.label&&(e=this.action.label),e??void 0}setActionContext(e){super.setActionContext(e),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=e:this.dropdownMenu.menuOptions={context:e})}show(){var e;(e=this.dropdownMenu)==null||e.show()}updateEnabled(){var t,i;const e=!this.action.enabled;(t=this.actionItem)==null||t.classList.toggle("disabled",e),(i=this.element)==null||i.classList.toggle("disabled",e)}}function Jtt(s){return s&&typeof s=="object"&&typeof s.original=="string"&&typeof s.value=="string"}function Xtt(s){return s?s.condition!==void 0:!1}var k1;(function(s){s[s.STORAGE_DOES_NOT_EXIST=0]="STORAGE_DOES_NOT_EXIST",s[s.STORAGE_IN_MEMORY=1]="STORAGE_IN_MEMORY"})(k1||(k1={}));var WW;(function(s){s[s.None=0]="None",s[s.Initialized=1]="Initialized",s[s.Closed=2]="Closed"})(WW||(WW={}));const x_=class x_ extends be{constructor(e,t=Object.create(null)){super(),this.database=e,this.options=t,this._onDidChangeStorage=this._register(new fN),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=WW.None,this.cache=new Map,this.flushDelayer=this._register(new YZe(x_.DEFAULT_FLUSH_DELAY)),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal(e=>this.onDidChangeItemsExternal(e)))}onDidChangeItemsExternal(e){var t,i;this._onDidChangeStorage.pause();try{(t=e.changed)==null||t.forEach((n,o)=>this.acceptExternal(o,n)),(i=e.deleted)==null||i.forEach(n=>this.acceptExternal(n,void 0))}finally{this._onDidChangeStorage.resume()}}acceptExternal(e,t){if(this.state===WW.Closed)return;let i=!1;Xc(t)?i=this.cache.delete(e):this.cache.get(e)!==t&&(this.cache.set(e,t),i=!0),i&&this._onDidChangeStorage.fire({key:e,external:!0})}get(e,t){const i=this.cache.get(e);return Xc(i)?t:i}getBoolean(e,t){const i=this.get(e);return Xc(i)?t:i==="true"}getNumber(e,t){const i=this.get(e);return Xc(i)?t:parseInt(i,10)}async set(e,t,i=!1){if(this.state===WW.Closed)return;if(Xc(t))return this.delete(e,i);const n=_r(t)||Array.isArray(t)?b$e(t):String(t);if(this.cache.get(e)!==n)return this.cache.set(e,n),this.pendingInserts.set(e,n),this.pendingDeletes.delete(e),this._onDidChangeStorage.fire({key:e,external:i}),this.doFlush()}async delete(e,t=!1){if(!(this.state===WW.Closed||!this.cache.delete(e)))return this.pendingDeletes.has(e)||this.pendingDeletes.add(e),this.pendingInserts.delete(e),this._onDidChangeStorage.fire({key:e,external:t}),this.doFlush()}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}async flushPending(){if(!this.hasPending)return;const e={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(e).finally(()=>{var t;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)(t=this.whenFlushedCallbacks.pop())==null||t()})}async doFlush(e){return this.options.hint===k1.STORAGE_IN_MEMORY?this.flushPending():this.flushDelayer.trigger(()=>this.flushPending(),e)}};x_.DEFAULT_FLUSH_DELAY=100;let t2=x_;class SP{constructor(){this.onDidChangeItemsExternal=Ut.None,this.items=new Map}async updateItems(e){var t,i;(t=e.insert)==null||t.forEach((n,o)=>this.items.set(o,n)),(i=e.delete)==null||i.forEach(n=>this.items.delete(n))}}const RD="__$__targetStorageMarker",lm=un("storageService");var UL;(function(s){s[s.NONE=0]="NONE",s[s.SHUTDOWN=1]="SHUTDOWN"})(UL||(UL={}));function Ytt(s){const e=s.get(RD);if(e)try{return JSON.parse(e)}catch{}return Object.create(null)}const I_=class I_ extends be{constructor(e={flushInterval:I_.DEFAULT_FLUSH_INTERVAL}){super(),this.options=e,this._onDidChangeValue=this._register(new fN),this._onDidChangeTarget=this._register(new fN),this._onWillSaveState=this._register(new fe),this.onWillSaveState=this._onWillSaveState.event,this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0}onDidChangeValue(e,t,i){return Ut.filter(this._onDidChangeValue.event,n=>n.scope===e&&(t===void 0||n.key===t),i)}emitDidChangeValue(e,t){const{key:i,external:n}=t;if(i===RD){switch(e){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0;break}this._onDidChangeTarget.fire({scope:e})}else this._onDidChangeValue.fire({scope:e,key:i,target:this.getKeyTargets(e)[i],external:n})}get(e,t,i){var n;return(n=this.getStorage(t))==null?void 0:n.get(e,i)}getBoolean(e,t,i){var n;return(n=this.getStorage(t))==null?void 0:n.getBoolean(e,i)}getNumber(e,t,i){var n;return(n=this.getStorage(t))==null?void 0:n.getNumber(e,i)}store(e,t,i,n,o=!1){if(Xc(t)){this.remove(e,i,o);return}this.withPausedEmitters(()=>{var r;this.updateKeyTarget(e,i,n),(r=this.getStorage(i))==null||r.set(e,t,o)})}remove(e,t,i=!1){this.withPausedEmitters(()=>{var n;this.updateKeyTarget(e,t,void 0),(n=this.getStorage(t))==null||n.delete(e,i)})}withPausedEmitters(e){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{e()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(e,t,i,n=!1){var r,l;const o=this.getKeyTargets(t);typeof i=="number"?o[e]!==i&&(o[e]=i,(r=this.getStorage(t))==null||r.set(RD,JSON.stringify(o),n)):typeof o[e]=="number"&&(delete o[e],(l=this.getStorage(t))==null||l.set(RD,JSON.stringify(o),n))}get workspaceKeyTargets(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}get profileKeyTargets(){return this._profileKeyTargets||(this._profileKeyTargets=this.loadKeyTargets(0)),this._profileKeyTargets}get applicationKeyTargets(){return this._applicationKeyTargets||(this._applicationKeyTargets=this.loadKeyTargets(-1)),this._applicationKeyTargets}getKeyTargets(e){switch(e){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(e){const t=this.getStorage(e);return t?Ytt(t):Object.create(null)}};I_.DEFAULT_FLUSH_INTERVAL=60*1e3;let T6=I_;class _tt extends T6{constructor(){super(),this.applicationStorage=this._register(new t2(new SP,{hint:k1.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new t2(new SP,{hint:k1.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new t2(new SP,{hint:k1.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage(e=>this.emitDidChangeValue(1,e))),this._register(this.profileStorage.onDidChangeStorage(e=>this.emitDidChangeValue(0,e))),this._register(this.applicationStorage.onDidChangeStorage(e=>this.emitDidChangeValue(-1,e)))}getStorage(e){switch(e){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}}function ztt(s,e){const t={...e};for(const i in s){const n=s[i];t[i]=n!==void 0?Mt(n):void 0}return t}const Ott={keybindingLabelBackground:Mt(L6e),keybindingLabelForeground:Mt(v6e),keybindingLabelBorder:Mt(k6e),keybindingLabelBottomBorder:Mt(x6e),keybindingLabelShadow:Mt(bM)},jtt={buttonForeground:Mt(SNe),buttonSeparator:Mt(A6e),buttonBackground:Mt(yT),buttonHoverBackground:Mt(Z6e),buttonSecondaryForeground:Mt(N6e),buttonSecondaryBackground:Mt(q8),buttonSecondaryHoverBackground:Mt(R6e),buttonBorder:Mt(S6e)},Ptt={progressBarBackground:Mt(L8e)},JX={inputActiveOptionBorder:Mt($3),inputActiveOptionForeground:Mt(e9),inputActiveOptionBackground:Mt($v)};Mt(QT),Mt(V6e),Mt(W6e),Mt(y6e),Mt(Q6e),Mt(M6e),Mt(w6e);Mt(T6e),Mt(B6e),Mt(C6e);Mt(Pc),Mt(H3),Mt(bM),Mt(Vn),Mt(t6e),Mt(i6e),Mt(n6e),Mt(C8e);const XX={inputBackground:Mt(K8),inputForeground:Mt(ANe),inputBorder:Mt(ZNe),inputValidationInfoBorder:Mt(u6e),inputValidationInfoBackground:Mt(c6e),inputValidationInfoForeground:Mt(h6e),inputValidationWarningBorder:Mt(g6e),inputValidationWarningBackground:Mt(m6e),inputValidationWarningForeground:Mt(p6e),inputValidationErrorBorder:Mt(U6e),inputValidationErrorBackground:Mt(f6e),inputValidationErrorForeground:Mt(b6e)},Htt={listFilterWidgetBackground:Mt(H6e),listFilterWidgetOutline:Mt(K6e),listFilterWidgetNoMatchesOutline:Mt(q6e),listFilterWidgetShadow:Mt($6e),inputBoxStyles:XX,toggleStyles:JX},fRe={badgeBackground:Mt(AD),badgeForeground:Mt(B8e),badgeBorder:Mt(Vn)};Mt($8e),Mt(q8e),Mt(Rue),Mt(Rue),Mt(e6e);const $N={listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:Mt(I6e),listFocusForeground:Mt(E6e),listFocusOutline:Mt(D6e),listActiveSelectionBackground:Mt(NN),listActiveSelectionForeground:Mt(rL),listActiveSelectionIconForeground:Mt(NNe),listFocusAndSelectionOutline:Mt(G6e),listFocusAndSelectionBackground:Mt(NN),listFocusAndSelectionForeground:Mt(rL),listInactiveSelectionBackground:Mt(J6e),listInactiveSelectionIconForeground:Mt(Y6e),listInactiveSelectionForeground:Mt(X6e),listInactiveFocusBackground:Mt(_6e),listInactiveFocusOutline:Mt(z6e),listHoverBackground:Mt(RNe),listHoverForeground:Mt(VNe),listDropOverBackground:Mt(O6e),listDropBetweenBackground:Mt(j6e),listSelectionOutline:Mt(to),listHoverOutline:Mt(to),treeIndentGuidesStroke:Mt(WNe),treeInactiveIndentGuidesStroke:Mt(eqe),treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:Mt(ooe),tableColumnsBorder:Mt(tqe),tableOddRowsBackgroundColor:Mt(iqe)};function eR(s){return ztt(s,$N)}const Ktt={selectBackground:Mt(t9),selectListBackground:Mt(F6e),selectForeground:Mt(hoe),decoratorRightForeground:Mt(yNe),selectBorder:Mt(uoe),focusBorder:Mt(Gg),listFocusBackground:Mt(aL),listInactiveSelectionIconForeground:Mt(moe),listFocusForeground:Mt(lL),listFocusOutline:W8e(to,Je.transparent.toString()),listHoverBackground:Mt(RNe),listHoverForeground:Mt(VNe),listHoverOutline:Mt(to),selectListBorder:Mt(roe),listBackground:void 0,listActiveSelectionBackground:void 0,listActiveSelectionForeground:void 0,listActiveSelectionIconForeground:void 0,listFocusAndSelectionBackground:void 0,listDropOverBackground:void 0,listDropBetweenBackground:void 0,listInactiveSelectionBackground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusBackground:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listFocusAndSelectionForeground:void 0,listFocusAndSelectionOutline:void 0,listInactiveFocusForeground:void 0,tableColumnsBorder:void 0,tableOddRowsBackgroundColor:void 0,treeIndentGuidesStroke:void 0,treeInactiveIndentGuidesStroke:void 0,treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:void 0},qtt={shadowColor:Mt(bM),borderColor:Mt(nqe),foregroundColor:Mt(sqe),backgroundColor:Mt(oqe),selectionForegroundColor:Mt(rqe),selectionBackgroundColor:Mt(lqe),selectionBorderColor:Mt(aqe),separatorColor:Mt(dqe),scrollbarShadow:Mt(ooe),scrollbarSliderBackground:Mt(uNe),scrollbarSliderHoverBackground:Mt(mNe),scrollbarSliderActiveBackground:Mt(pNe)};var p9=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ad=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function $tt(s,e,t,i){let n,o,r;if(Array.isArray(s))r=s,n=e,o=t;else{const d=e;r=s.getActions(d),n=t,o=i}const l=Wf.getInstance(),a=l.keyStatus.altKey||(Tl||_a)&&l.keyStatus.shiftKey;bRe(r,n,a,o?d=>d===o:d=>d==="navigation")}function g9(s,e,t,i,n,o){let r,l,a,d,c;if(Array.isArray(s))c=s,r=e,l=t,a=i,d=n;else{const u=e;c=s.getActions(u),r=t,l=i,a=n,d=o}bRe(c,r,!1,typeof l=="string"?u=>u===l:l,a,d)}function bRe(s,e,t,i=r=>r==="navigation",n=()=>!1,o=!1){let r,l;Array.isArray(e)?(r=e,l=e):(r=e.primary,l=e.secondary);const a=new Set;for(const[d,c]of s){let h;i(d)?(h=r,h.length>0&&o&&h.push(new Br)):(h=l,h.length>0&&h.push(new Br));for(let u of c){t&&(u=u instanceof dc&&u.alt?u.alt:u);const m=h.push(u);u instanceof Ry&&a.add({group:d,action:u,index:m-1})}}for(const{group:d,action:c,index:h}of a){const u=i(d)?r:l,m=c.actions;n(c,d,u.length)&&u.splice(h,1,...m)}}let DF=class extends Iy{constructor(e,t,i,n,o,r,l,a){super(void 0,e,{icon:!!(e.class||e.item.icon),label:!e.class&&!e.item.icon,draggable:t==null?void 0:t.draggable,keybinding:t==null?void 0:t.keybinding,hoverDelegate:t==null?void 0:t.hoverDelegate}),this._options=t,this._keybindingService=i,this._notificationService=n,this._contextKeyService=o,this._themeService=r,this._contextMenuService=l,this._accessibilityService=a,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new Lr),this._altKey=Wf.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}async onClick(e){e.preventDefault(),e.stopPropagation();try{await this.actionRunner.run(this._commandAction,this._context)}catch(t){this._notificationService.error(t)}}render(e){if(super.render(e),e.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let t=!1;const i=()=>{var o;const n=!!((o=this._menuItemAction.alt)!=null&&o.enabled)&&(!this._accessibilityService.isMotionReduced()||t)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&t);n!==this._wantsAltCommand&&(this._wantsAltCommand=n,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(i)),this._register(Te(e,"mouseleave",n=>{t=!1,i()})),this._register(Te(e,"mouseenter",n=>{t=!0,i()})),i()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var o;const e=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),t=e&&e.getLabel(),i=this._commandAction.tooltip||this._commandAction.label;let n=t?F("titleAndKb","{0} ({1})",i,t):i;if(!this._wantsAltCommand&&((o=this._menuItemAction.alt)!=null&&o.enabled)){const r=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,l=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),a=l&&l.getLabel(),d=a?F("titleAndKb","{0} ({1})",r,a):r;n=F("titleAndKbAndAlt",`{0}
- [{1}] {2}`,n,Moe.modifierLabels[rc].altKey,d)}return n}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(e){this._itemClassDispose.value=void 0;const{element:t,label:i}=this;if(!t||!i)return;const n=this._commandAction.checked&&Xtt(e.toggled)&&e.toggled.icon?e.toggled.icon:e.icon;if(n)if(ui.isThemeIcon(n)){const o=ui.asClassNameArray(n);i.classList.add(...o),this._itemClassDispose.value=ei(()=>{i.classList.remove(...o)})}else i.style.backgroundImage=yy(this._themeService.getColorTheme().type)?Kf(n.dark):Kf(n.light),i.classList.add("icon"),this._itemClassDispose.value=Pu(ei(()=>{i.style.backgroundImage="",i.classList.remove("icon")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};DF=p9([Ad(2,qn),Ad(3,jo),Ad(4,fi),Ad(5,Rr),Ad(6,Uc),Ad(7,Fc)],DF);class Boe extends DF{render(e){var t;this.options.label=!0,this.options.icon=!1,super.render(e),e.classList.add("text-only"),e.classList.toggle("use-comma",((t=this._options)==null?void 0:t.useComma)??!1)}updateLabel(){var t;const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const i=Boe._symbolPrintEnter(e);(t=this._options)!=null&&t.conversational?this.label.textContent=F({key:"content2",comment:['A label with keybindg like "ESC to dismiss"']},"{1} to {0}",this._action.label,i):this.label.textContent=F({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",this._action.label,i)}}static _symbolPrintEnter(e){var t;return(t=e.getLabel())==null?void 0:t.replace(/\benter\b/gi,"⏎").replace(/\bEscape\b/gi,"Esc")}}let C6=class extends GX{constructor(e,t,i,n,o){const r={...t,menuAsChild:(t==null?void 0:t.menuAsChild)??!1,classNames:(t==null?void 0:t.classNames)??(ui.isThemeIcon(e.item.icon)?ui.asClassName(e.item.icon):void 0),keybindingProvider:(t==null?void 0:t.keybindingProvider)??(l=>i.lookupKeybinding(l.id))};super(e,{getActions:()=>e.actions},n,r),this._keybindingService=i,this._contextMenuService=n,this._themeService=o}render(e){super.render(e),vn(this.element),e.classList.add("menu-entry");const t=this._action,{icon:i}=t.item;if(i&&!ui.isThemeIcon(i)){this.element.classList.add("icon");const n=()=>{this.element&&(this.element.style.backgroundImage=yy(this._themeService.getColorTheme().type)?Kf(i.dark):Kf(i.light))};n(),this._register(this._themeService.onDidColorThemeChange(()=>{n()}))}}};C6=p9([Ad(2,qn),Ad(3,Uc),Ad(4,Rr)],C6);let B6=class extends Ym{constructor(e,t,i,n,o,r,l,a){super(null,e),this._keybindingService=i,this._notificationService=n,this._contextMenuService=o,this._menuService=r,this._instaService=l,this._storageService=a,this._container=null,this._options=t,this._storageKey=`${e.item.submenu.id}_lastActionId`;let d;const c=t!=null&&t.persistLastActionId?a.get(this._storageKey,1):void 0;c&&(d=e.actions.find(u=>c===u.id)),d||(d=e.actions[0]),this._defaultAction=this._instaService.createInstance(DF,d,{keybinding:this._getDefaultActionKeybindingLabel(d)});const h={keybindingProvider:u=>this._keybindingService.lookupKeybinding(u.id),...t,menuAsChild:(t==null?void 0:t.menuAsChild)??!0,classNames:(t==null?void 0:t.classNames)??["codicon","codicon-chevron-down"],actionRunner:(t==null?void 0:t.actionRunner)??new ZN};this._dropdown=new GX(e,e.actions,this._contextMenuService,h),this._register(this._dropdown.actionRunner.onDidRun(u=>{u.action instanceof dc&&this.update(u.action)}))}update(e){var t;(t=this._options)!=null&&t.persistLastActionId&&this._storageService.store(this._storageKey,e.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance(DF,e,{keybinding:this._getDefaultActionKeybindingLabel(e)}),this._defaultAction.actionRunner=new class extends ZN{async runAction(i,n){await i.run(void 0)}},this._container&&this._defaultAction.render(Dse(this._container,gt(".action-container")))}_getDefaultActionKeybindingLabel(e){var i;let t;if((i=this._options)!=null&&i.renderKeybindingWithDefaultActionLabel){const n=this._keybindingService.lookupKeybinding(e.id);n&&(t=`(${n.getLabel()})`)}return t}setActionContext(e){super.setActionContext(e),this._defaultAction.setActionContext(e),this._dropdown.setActionContext(e)}render(e){this._container=e,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const t=gt(".action-container");this._defaultAction.render(nt(this._container,t)),this._register(Te(t,ut.KEY_DOWN,n=>{const o=new Ts(n);o.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),o.stopPropagation())}));const i=gt(".dropdown-action-container");this._dropdown.render(nt(this._container,i)),this._register(Te(i,ut.KEY_DOWN,n=>{var r;const o=new Ts(n);o.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(r=this._defaultAction.element)==null||r.focus(),o.stopPropagation())}))}focus(e){e?this._dropdown.focus():(this._defaultAction.element.tabIndex=0,this._defaultAction.element.focus())}blur(){this._defaultAction.element.tabIndex=-1,this._dropdown.blur(),this._container.blur()}setFocusable(e){e?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};B6=p9([Ad(2,qn),Ad(3,jo),Ad(4,Uc),Ad(5,ah),Ad(6,ti),Ad(7,lm)],B6);let L6=class extends Ett{constructor(e,t){super(null,e,e.actions.map(i=>({text:i.id===Br.ID?"─────────":i.label,isDisabled:!i.enabled})),0,t,Ktt,{ariaLabel:e.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,e.actions.findIndex(i=>i.checked)))}render(e){super.render(e),e.style.borderColor=Mt(uoe)}runAction(e,t){const i=this.action.actions[t];i&&this.actionRunner.run(i)}};L6=p9([Ad(1,ab)],L6);function URe(s,e,t){return e instanceof dc?s.createInstance(DF,e,t):e instanceof T1?e.item.isSelection?s.createInstance(L6,e):e.item.rememberDefaultAction?s.createInstance(B6,e,{...t,persistLastActionId:!0}):s.createInstance(C6,e,t):void 0}class ih extends be{constructor(e,t={}){var o,r;super(),this._actionRunnerDisposables=this._register(new De),this.viewItemDisposables=this._register(new Zse),this.triggerKeyDown=!1,this.focusable=!0,this._onDidBlur=this._register(new fe),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new fe({onWillAddFirstListener:()=>this.cancelHasListener=!0})),this.onDidCancel=this._onDidCancel.event,this.cancelHasListener=!1,this._onDidRun=this._register(new fe),this.onDidRun=this._onDidRun.event,this._onWillRun=this._register(new fe),this.onWillRun=this._onWillRun.event,this.options=t,this._context=t.context??null,this._orientation=this.options.orientation??0,this._triggerKeys={keyDown:((o=this.options.triggerKeys)==null?void 0:o.keyDown)??!1,keys:((r=this.options.triggerKeys)==null?void 0:r.keys)??[3,10]},this._hoverDelegate=t.hoverDelegate??this._register(xy()),this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new ZN,this._actionRunnerDisposables.add(this._actionRunner)),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(l=>this._onDidRun.fire(l))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(l=>this._onWillRun.fire(l))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement("div"),this.domNode.className="monaco-action-bar";let i,n;switch(this._orientation){case 0:i=[15],n=[17];break;case 1:i=[16],n=[18],this.domNode.className+=" vertical";break}this._register(Te(this.domNode,ut.KEY_DOWN,l=>{const a=new Ts(l);let d=!0;const c=typeof this.focusedItem=="number"?this.viewItems[this.focusedItem]:void 0;i&&(a.equals(i[0])||a.equals(i[1]))?d=this.focusPrevious():n&&(a.equals(n[0])||a.equals(n[1]))?d=this.focusNext():a.equals(9)&&this.cancelHasListener?this._onDidCancel.fire():a.equals(14)?d=this.focusFirst():a.equals(13)?d=this.focusLast():a.equals(2)&&c instanceof Ym&&c.trapsArrowNavigation?d=this.focusNext(void 0,!0):this.isTriggerKeyEvent(a)?this._triggerKeys.keyDown?this.doTrigger(a):this.triggerKeyDown=!0:d=!1,d&&(a.preventDefault(),a.stopPropagation())})),this._register(Te(this.domNode,ut.KEY_UP,l=>{const a=new Ts(l);this.isTriggerKeyEvent(a)?(!this._triggerKeys.keyDown&&this.triggerKeyDown&&(this.triggerKeyDown=!1,this.doTrigger(a)),a.preventDefault(),a.stopPropagation()):(a.equals(2)||a.equals(1026)||a.equals(16)||a.equals(18)||a.equals(15)||a.equals(17))&&this.updateFocusedItem()})),this.focusTracker=this._register(ap(this.domNode)),this._register(this.focusTracker.onDidBlur(()=>{(Ql()===this.domNode||!wr(Ql(),this.domNode))&&(this._onDidBlur.fire(),this.previouslyFocusedItem=this.focusedItem,this.focusedItem=void 0,this.triggerKeyDown=!1)})),this._register(this.focusTracker.onDidFocus(()=>this.updateFocusedItem())),this.actionsList=document.createElement("ul"),this.actionsList.className="actions-container",this.options.highlightToggledItems&&this.actionsList.classList.add("highlight-toggled"),this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"),this.options.ariaLabel&&this.actionsList.setAttribute("aria-label",this.options.ariaLabel),this.domNode.appendChild(this.actionsList),e.appendChild(this.domNode)}refreshRole(){this.length()>=1?this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"):this.actionsList.setAttribute("role","presentation")}setFocusable(e){if(this.focusable=e,this.focusable){const t=this.viewItems.find(i=>i instanceof Ym&&i.isEnabled());t instanceof Ym&&t.setFocusable(!0)}else this.viewItems.forEach(t=>{t instanceof Ym&&t.setFocusable(!1)})}isTriggerKeyEvent(e){let t=!1;return this._triggerKeys.keys.forEach(i=>{t=t||e.equals(i)}),t}updateFocusedItem(){var e,t;for(let i=0;i<this.actionsList.children.length;i++){const n=this.actionsList.children[i];if(wr(Ql(),n)){this.focusedItem=i,(t=(e=this.viewItems[this.focusedItem])==null?void 0:e.showHover)==null||t.call(e);break}}}get context(){return this._context}set context(e){this._context=e,this.viewItems.forEach(t=>t.setActionContext(e))}get actionRunner(){return this._actionRunner}set actionRunner(e){this._actionRunner=e,this._actionRunnerDisposables.clear(),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(t=>this._onDidRun.fire(t))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(t=>this._onWillRun.fire(t))),this.viewItems.forEach(t=>t.actionRunner=e)}getContainer(){return this.domNode}getAction(e){var t;if(typeof e=="number")return(t=this.viewItems[e])==null?void 0:t.action;if(Cr(e)){for(;e.parentElement!==this.actionsList;){if(!e.parentElement)return;e=e.parentElement}for(let i=0;i<this.actionsList.childNodes.length;i++)if(this.actionsList.childNodes[i]===e)return this.viewItems[i].action}}push(e,t={}){const i=Array.isArray(e)?e:[e];let n=wF(t.index)?t.index:null;i.forEach(o=>{const r=document.createElement("li");r.className="action-item",r.setAttribute("role","presentation");let l;const a={hoverDelegate:this._hoverDelegate,...t,isTabList:this.options.ariaRole==="tablist"};this.options.actionViewItemProvider&&(l=this.options.actionViewItemProvider(o,a)),l||(l=new Iy(this.context,o,a)),this.options.allowContextMenu||this.viewItemDisposables.set(l,Te(r,ut.CONTEXT_MENU,d=>{Un.stop(d,!0)})),l.actionRunner=this._actionRunner,l.setActionContext(this.context),l.render(r),this.focusable&&l instanceof Ym&&this.viewItems.length===0&&l.setFocusable(!0),n===null||n<0||n>=this.actionsList.children.length?(this.actionsList.appendChild(r),this.viewItems.push(l)):(this.actionsList.insertBefore(r,this.actionsList.children[n]),this.viewItems.splice(n,0,l),n++)}),typeof this.focusedItem=="number"&&this.focus(this.focusedItem),this.refreshRole()}clear(){this.isEmpty()||(this.viewItems=Ws(this.viewItems),this.viewItemDisposables.clearAndDisposeAll(),dl(this.actionsList),this.refreshRole())}length(){return this.viewItems.length}isEmpty(){return this.viewItems.length===0}focus(e){let t=!1,i;if(e===void 0?t=!0:typeof e=="number"?i=e:typeof e=="boolean"&&(t=e),t&&typeof this.focusedItem>"u"){const n=this.viewItems.findIndex(o=>o.isEnabled());this.focusedItem=n===-1?void 0:n,this.updateFocus(void 0,void 0,!0)}else i!==void 0&&(this.focusedItem=i),this.updateFocus(void 0,void 0,!0)}focusFirst(){return this.focusedItem=this.length()-1,this.focusNext(!0)}focusLast(){return this.focusedItem=0,this.focusPrevious(!0)}focusNext(e,t){if(typeof this.focusedItem>"u")this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let n;do{if(!e&&this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=i,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,n=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!n.isEnabled()||n.action.id===Br.ID));return this.updateFocus(void 0,void 0,t),!0}focusPrevious(e){if(typeof this.focusedItem>"u")this.focusedItem=0;else if(this.viewItems.length<=1)return!1;const t=this.focusedItem;let i;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(!e&&this.options.preventLoopNavigation)return this.focusedItem=t,!1;this.focusedItem=this.viewItems.length-1}i=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&(this.options.focusOnlyEnabledItems&&!i.isEnabled()||i.action.id===Br.ID));return this.updateFocus(!0),!0}updateFocus(e,t,i=!1){var o,r;typeof this.focusedItem>"u"&&this.actionsList.focus({preventScroll:t}),this.previouslyFocusedItem!==void 0&&this.previouslyFocusedItem!==this.focusedItem&&((o=this.viewItems[this.previouslyFocusedItem])==null||o.blur());const n=this.focusedItem!==void 0?this.viewItems[this.focusedItem]:void 0;if(n){let l=!0;EB(n.focus)||(l=!1),this.options.focusOnlyEnabledItems&&EB(n.isEnabled)&&!n.isEnabled()&&(l=!1),n.action.id===Br.ID&&(l=!1),l?(i||this.previouslyFocusedItem!==this.focusedItem)&&(n.focus(e),this.previouslyFocusedItem=this.focusedItem):(this.actionsList.focus({preventScroll:t}),this.previouslyFocusedItem=void 0),l&&((r=n.showHover)==null||r.call(n))}}doTrigger(e){if(typeof this.focusedItem>"u")return;const t=this.viewItems[this.focusedItem];if(t instanceof Ym){const i=t._context===null||t._context===void 0?e:t._context;this.run(t._action,i)}}async run(e,t){await this._actionRunner.run(e,t)}dispose(){this._context=void 0,this.viewItems=Ws(this.viewItems),this.getContainer().remove(),super.dispose()}}const v6=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,NP=/(&)?(&)([^\s&])/g;var YX;(function(s){s[s.Right=0]="Right",s[s.Left=1]="Left"})(YX||(YX={}));var k6;(function(s){s[s.Above=0]="Above",s[s.Below=1]="Below"})(k6||(k6={}));class x1 extends ih{constructor(e,t,i,n){e.classList.add("monaco-menu-container"),e.setAttribute("role","presentation");const o=document.createElement("div");o.classList.add("monaco-menu"),o.setAttribute("role","presentation"),super(o,{orientation:1,actionViewItemProvider:d=>this.doGetActionViewItem(d,i,r),context:i.context,actionRunner:i.actionRunner,ariaLabel:i.ariaLabel,ariaRole:"menu",focusOnlyEnabledItems:!0,triggerKeys:{keys:[3,...hn||_a?[10]:[]],keyDown:!0}}),this.menuStyles=n,this.menuElement=o,this.actionsList.tabIndex=0,this.initializeOrUpdateStyleSheet(e,n),this._register(Hl.addTarget(o)),this._register(Te(o,ut.KEY_DOWN,d=>{new Ts(d).equals(2)&&d.preventDefault()})),i.enableMnemonics&&this._register(Te(o,ut.KEY_DOWN,d=>{const c=d.key.toLocaleLowerCase();if(this.mnemonics.has(c)){Un.stop(d,!0);const h=this.mnemonics.get(c);if(h.length===1&&(h[0]instanceof ume&&h[0].container&&this.focusItemByElement(h[0].container),h[0].onClick(d)),h.length>1){const u=h.shift();u&&u.container&&(this.focusItemByElement(u.container),h.push(u)),this.mnemonics.set(c,h)}}})),_a&&this._register(Te(o,ut.KEY_DOWN,d=>{const c=new Ts(d);c.equals(14)||c.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),Un.stop(d,!0)):(c.equals(13)||c.equals(12))&&(this.focusedItem=0,this.focusPrevious(),Un.stop(d,!0))})),this._register(Te(this.domNode,ut.MOUSE_OUT,d=>{const c=d.relatedTarget;wr(c,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),d.stopPropagation())})),this._register(Te(this.actionsList,ut.MOUSE_OVER,d=>{let c=d.target;if(!(!c||!wr(c,this.actionsList)||c===this.actionsList)){for(;c.parentElement!==this.actionsList&&c.parentElement!==null;)c=c.parentElement;if(c.classList.contains("action-item")){const h=this.focusedItem;this.setFocusedItem(c),h!==this.focusedItem&&this.updateFocus()}}})),this._register(Hl.addTarget(this.actionsList)),this._register(Te(this.actionsList,vs.Tap,d=>{let c=d.initialTarget;if(!(!c||!wr(c,this.actionsList)||c===this.actionsList)){for(;c.parentElement!==this.actionsList&&c.parentElement!==null;)c=c.parentElement;if(c.classList.contains("action-item")){const h=this.focusedItem;this.setFocusedItem(c),h!==this.focusedItem&&this.updateFocus()}}}));const r={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new ek(o,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const l=this.scrollableElement.getDomNode();l.style.position="",this.styleScrollElement(l,n),this._register(Te(o,vs.Change,d=>{Un.stop(d,!0);const c=this.scrollableElement.getScrollPosition().scrollTop;this.scrollableElement.setScrollPosition({scrollTop:c-d.translationY})})),this._register(Te(l,ut.MOUSE_UP,d=>{d.preventDefault()}));const a=ai(e);o.style.maxHeight=`${Math.max(10,a.innerHeight-e.getBoundingClientRect().top-35)}px`,t=t.filter((d,c)=>{var h;return(h=i.submenuIds)!=null&&h.has(d.id)?(console.warn(`Found submenu cycle: ${d.id}`),!1):!(d instanceof Br&&(c===t.length-1||c===0||t[c-1]instanceof Br))}),this.push(t,{icon:!0,label:!0,isMenu:!0}),e.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter(d=>!(d instanceof mme)).forEach((d,c,h)=>{d.updatePositionInSet(c+1,h.length)})}initializeOrUpdateStyleSheet(e,t){this.styleSheet||(dX(e)?this.styleSheet=sh(e):(x1.globalStyleSheet||(x1.globalStyleSheet=sh()),this.styleSheet=x1.globalStyleSheet)),this.styleSheet.textContent=tit(t,dX(e))}styleScrollElement(e,t){const i=t.foregroundColor??"",n=t.backgroundColor??"",o=t.borderColor?`1px solid ${t.borderColor}`:"",r="5px",l=t.shadowColor?`0 2px 8px ${t.shadowColor}`:"";e.style.outline=o,e.style.borderRadius=r,e.style.color=i,e.style.backgroundColor=n,e.style.boxShadow=l}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(e){const t=this.focusedItem;this.setFocusedItem(e),t!==this.focusedItem&&this.updateFocus()}setFocusedItem(e){for(let t=0;t<this.actionsList.children.length;t++){const i=this.actionsList.children[t];if(e===i){this.focusedItem=t;break}}}updateFocus(e){super.updateFocus(e,!0,!0),typeof this.focusedItem<"u"&&this.scrollableElement.setScrollPosition({scrollTop:Math.round(this.menuElement.scrollTop)})}doGetActionViewItem(e,t,i){if(e instanceof Br)return new mme(t.context,e,{icon:!0},this.menuStyles);if(e instanceof Ry){const n=new ume(e,e.actions,i,{...t,submenuIds:new Set([...t.submenuIds||[],e.id])},this.menuStyles);if(t.enableMnemonics){const o=n.getMnemonic();if(o&&n.isEnabled()){let r=[];this.mnemonics.has(o)&&(r=this.mnemonics.get(o)),r.push(n),this.mnemonics.set(o,r)}}return n}else{const n={enableMnemonics:t.enableMnemonics,useEventAsContext:t.useEventAsContext};if(t.getKeyBinding){const r=t.getKeyBinding(e);if(r){const l=r.getLabel();l&&(n.keybinding=l)}}const o=new FRe(t.context,e,n,this.menuStyles);if(t.enableMnemonics){const r=o.getMnemonic();if(r&&o.isEnabled()){let l=[];this.mnemonics.has(r)&&(l=this.mnemonics.get(r)),l.push(o),this.mnemonics.set(r,l)}}return o}}}class FRe extends Ym{constructor(e,t,i,n){if(i.isMenu=!0,super(t,t,i),this.menuStyle=n,this.options=i,this.options.icon=i.icon!==void 0?i.icon:!1,this.options.label=i.label!==void 0?i.label:!0,this.cssClass="",this.options.label&&i.enableMnemonics){const o=this.action.label;if(o){const r=v6.exec(o);r&&(this.mnemonic=(r[1]?r[1]:r[3]).toLocaleLowerCase())}}this.runOnceToEnableMouseUp=new cs(()=>{this.element&&(this._register(Te(this.element,ut.MOUSE_UP,o=>{if(Un.stop(o,!0),zh){if(new _u(ai(this.element),o).rightButton)return;this.onClick(o)}else setTimeout(()=>{this.onClick(o)},0)})),this._register(Te(this.element,ut.CONTEXT_MENU,o=>{Un.stop(o,!0)})))},100),this._register(this.runOnceToEnableMouseUp)}render(e){super.render(e),this.element&&(this.container=e,this.item=nt(this.element,gt("a.action-menu-item")),this._action.id===Br.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts",`${this.mnemonic}`)),this.check=nt(this.item,gt("span.menu-item-check"+ui.asCSSSelector(ct.menuSelection))),this.check.setAttribute("role","none"),this.label=nt(this.item,gt("span.action-label")),this.options.label&&this.options.keybinding&&(nt(this.item,gt("span.keybinding")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked(),this.applyStyle())}blur(){super.blur(),this.applyStyle()}focus(){var e;super.focus(),(e=this.item)==null||e.focus(),this.applyStyle()}updatePositionInSet(e,t){this.item&&(this.item.setAttribute("aria-posinset",`${e}`),this.item.setAttribute("aria-setsize",`${t}`))}updateLabel(){var e;if(this.label&&this.options.label){dl(this.label);let t=Noe(this.action.label);if(t){const i=eit(t);this.options.enableMnemonics||(t=i),this.label.setAttribute("aria-label",i.replace(/&&/g,"&"));const n=v6.exec(t);if(n){t=OC(t),NP.lastIndex=0;let o=NP.exec(t);for(;o&&o[1];)o=NP.exec(t);const r=l=>l.replace(/&&/g,"&");o?this.label.append(_v(r(t.substr(0,o.index))," "),gt("u",{"aria-hidden":"true"},o[3]),LZe(r(t.substr(o.index+o[0].length))," ")):this.label.innerText=r(t).trim(),(e=this.item)==null||e.setAttribute("aria-keyshortcuts",(n[1]?n[1]:n[3]).toLocaleLowerCase())}else this.label.innerText=t.replace(/&&/g,"&").trim()}}}updateTooltip(){}updateClass(){this.cssClass&&this.item&&this.item.classList.remove(...this.cssClass.split(" ")),this.options.icon&&this.label?(this.cssClass=this.action.class||"",this.label.classList.add("icon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" ")),this.updateEnabled()):this.label&&this.label.classList.remove("icon")}updateEnabled(){this.action.enabled?(this.element&&(this.element.classList.remove("disabled"),this.element.removeAttribute("aria-disabled")),this.item&&(this.item.classList.remove("disabled"),this.item.removeAttribute("aria-disabled"),this.item.tabIndex=0)):(this.element&&(this.element.classList.add("disabled"),this.element.setAttribute("aria-disabled","true")),this.item&&(this.item.classList.add("disabled"),this.item.setAttribute("aria-disabled","true")))}updateChecked(){if(!this.item)return;const e=this.action.checked;this.item.classList.toggle("checked",!!e),e!==void 0?(this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked",e?"true":"false")):(this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked",""))}getMnemonic(){return this.mnemonic}applyStyle(){const e=this.element&&this.element.classList.contains("focused"),t=e&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,i=e&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,n=e&&this.menuStyle.selectionBorderColor?`1px solid ${this.menuStyle.selectionBorderColor}`:"",o=e&&this.menuStyle.selectionBorderColor?"-1px":"";this.item&&(this.item.style.color=t??"",this.item.style.backgroundColor=i??"",this.item.style.outline=n,this.item.style.outlineOffset=o),this.check&&(this.check.style.color=t??"")}}class ume extends FRe{constructor(e,t,i,n,o){super(e,e,n,o),this.submenuActions=t,this.parentData=i,this.submenuOptions=n,this.mysubmenu=null,this.submenuDisposables=this._register(new De),this.mouseOver=!1,this.expandDirection=n&&n.expandDirection!==void 0?n.expandDirection:{horizontal:YX.Right,vertical:k6.Below},this.showScheduler=new cs(()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))},250),this.hideScheduler=new cs(()=>{this.element&&!wr(Ql(),this.element)&&this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))},750)}render(e){super.render(e),this.element&&(this.item&&(this.item.classList.add("monaco-submenu-item"),this.item.tabIndex=0,this.item.setAttribute("aria-haspopup","true"),this.updateAriaExpanded("false"),this.submenuIndicator=nt(this.item,gt("span.submenu-indicator"+ui.asCSSSelector(ct.menuSubmenu))),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register(Te(this.element,ut.KEY_UP,t=>{const i=new Ts(t);(i.equals(17)||i.equals(3))&&(Un.stop(t,!0),this.createSubmenu(!0))})),this._register(Te(this.element,ut.KEY_DOWN,t=>{const i=new Ts(t);Ql()===this.item&&(i.equals(17)||i.equals(3))&&Un.stop(t,!0)})),this._register(Te(this.element,ut.MOUSE_OVER,t=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())})),this._register(Te(this.element,ut.MOUSE_LEAVE,t=>{this.mouseOver=!1})),this._register(Te(this.element,ut.FOCUS_OUT,t=>{this.element&&!wr(Ql(),this.element)&&this.hideScheduler.schedule()})),this._register(this.parentData.parent.onScroll(()=>{this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))})))}updateEnabled(){}onClick(e){Un.stop(e,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}cleanupExistingSubmenu(e){if(this.parentData.submenu&&(e||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch{}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(e,t,i,n){const o={top:0,left:0};return o.left=NW(e.width,t.width,{position:n.horizontal===YX.Right?0:1,offset:i.left,size:i.width}),o.left>=i.left&&o.left<i.left+i.width&&(i.left+10+t.width<=e.width&&(o.left=i.left+10),i.top+=10,i.height=0),o.top=NW(e.height,t.height,{position:0,offset:i.top,size:0}),o.top+t.height===i.top&&o.top+i.height+t.height<=e.height&&(o.top+=i.height),o}createSubmenu(e=!0){if(this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.updateAriaExpanded("true"),this.submenuContainer=nt(this.element,gt("div.monaco-submenu")),this.submenuContainer.classList.add("menubar-menu-items-holder","context-view");const t=ai(this.parentData.parent.domNode).getComputedStyle(this.parentData.parent.domNode),i=parseFloat(t.paddingTop||"0")||0;this.submenuContainer.style.zIndex="1",this.submenuContainer.style.position="fixed",this.submenuContainer.style.top="0",this.submenuContainer.style.left="0",this.parentData.submenu=new x1(this.submenuContainer,this.submenuActions.length?this.submenuActions:[new b8],this.submenuOptions,this.menuStyle);const n=this.element.getBoundingClientRect(),o={top:n.top-i,left:n.left,height:n.height+2*i,width:n.width},r=this.submenuContainer.getBoundingClientRect(),l=ai(this.element),{top:a,left:d}=this.calculateSubmenuMenuLayout(new ns(l.innerWidth,l.innerHeight),ns.lift(r),o,this.expandDirection);this.submenuContainer.style.left=`${d-r.left}px`,this.submenuContainer.style.top=`${a-r.top}px`,this.submenuDisposables.add(Te(this.submenuContainer,ut.KEY_UP,c=>{new Ts(c).equals(15)&&(Un.stop(c,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))})),this.submenuDisposables.add(Te(this.submenuContainer,ut.KEY_DOWN,c=>{new Ts(c).equals(15)&&Un.stop(c,!0)})),this.submenuDisposables.add(this.parentData.submenu.onDidCancel(()=>{this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0)})),this.parentData.submenu.focus(e),this.mysubmenu=this.parentData.submenu}}updateAriaExpanded(e){var t;this.item&&((t=this.item)==null||t.setAttribute("aria-expanded",e))}applyStyle(){super.applyStyle();const t=this.element&&this.element.classList.contains("focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=t??"")}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class mme extends Iy{constructor(e,t,i,n){super(e,t,i),this.menuStyles=n}render(e){super.render(e),this.label&&(this.label.style.borderBottomColor=this.menuStyles.separatorColor?`${this.menuStyles.separatorColor}`:"")}}function eit(s){const e=v6,t=e.exec(s);if(!t)return s;const i=!t[1];return s.replace(e,i?"$2$3":"").trim()}function pme(s){const e=QZe()[s.id];return`.codicon-${s.id}:before { content: '\\${e.toString(16)}'; }`}function tit(s,e){let t=`
- .monaco-menu {
- font-size: 13px;
- border-radius: 5px;
- min-width: 160px;
- }
- ${pme(ct.menuSelection)}
- ${pme(ct.menuSubmenu)}
- .monaco-menu .monaco-action-bar {
- text-align: right;
- overflow: hidden;
- white-space: nowrap;
- }
- .monaco-menu .monaco-action-bar .actions-container {
- display: flex;
- margin: 0 auto;
- padding: 0;
- width: 100%;
- justify-content: flex-end;
- }
- .monaco-menu .monaco-action-bar.vertical .actions-container {
- display: inline-block;
- }
- .monaco-menu .monaco-action-bar.reverse .actions-container {
- flex-direction: row-reverse;
- }
- .monaco-menu .monaco-action-bar .action-item {
- cursor: pointer;
- display: inline-block;
- transition: transform 50ms ease;
- position: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */
- }
- .monaco-menu .monaco-action-bar .action-item.disabled {
- cursor: default;
- }
- .monaco-menu .monaco-action-bar .action-item .icon,
- .monaco-menu .monaco-action-bar .action-item .codicon {
- display: inline-block;
- }
- .monaco-menu .monaco-action-bar .action-item .codicon {
- display: flex;
- align-items: center;
- }
- .monaco-menu .monaco-action-bar .action-label {
- font-size: 11px;
- margin-right: 4px;
- }
- .monaco-menu .monaco-action-bar .action-item.disabled .action-label,
- .monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {
- color: var(--vscode-disabledForeground);
- }
- /* Vertical actions */
- .monaco-menu .monaco-action-bar.vertical {
- text-align: left;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item {
- display: block;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- display: block;
- border-bottom: 1px solid var(--vscode-menu-separatorBackground);
- padding-top: 1px;
- padding: 30px;
- }
- .monaco-menu .secondary-actions .monaco-action-bar .action-label {
- margin-left: 6px;
- }
- /* Action Items */
- .monaco-menu .monaco-action-bar .action-item.select-container {
- overflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */
- flex: 1;
- max-width: 170px;
- min-width: 60px;
- display: flex;
- align-items: center;
- justify-content: center;
- margin-right: 10px;
- }
- .monaco-menu .monaco-action-bar.vertical {
- margin-left: 0;
- overflow: visible;
- }
- .monaco-menu .monaco-action-bar.vertical .actions-container {
- display: block;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item {
- padding: 0;
- transform: none;
- display: flex;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item.active {
- transform: none;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item {
- flex: 1 1 auto;
- display: flex;
- height: 2em;
- align-items: center;
- position: relative;
- margin: 0 4px;
- border-radius: 4px;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding,
- .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding {
- opacity: unset;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label {
- flex: 1 1 auto;
- text-decoration: none;
- padding: 0 1em;
- background: none;
- font-size: 12px;
- line-height: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .keybinding,
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- display: inline-block;
- flex: 2 1 auto;
- padding: 0 1em;
- text-align: right;
- font-size: 12px;
- line-height: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- height: 100%;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {
- font-size: 16px !important;
- display: flex;
- align-items: center;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {
- margin-left: auto;
- margin-right: -20px;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,
- .monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {
- opacity: 0.4;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {
- display: inline-block;
- box-sizing: border-box;
- margin: 0;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item {
- position: static;
- overflow: visible;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {
- position: absolute;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- width: 100%;
- height: 0px !important;
- opacity: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator.text {
- padding: 0.7em 1em 0.1em 1em;
- font-weight: bold;
- opacity: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label:hover {
- color: inherit;
- }
- .monaco-menu .monaco-action-bar.vertical .menu-item-check {
- position: absolute;
- visibility: hidden;
- width: 1em;
- height: 100%;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {
- visibility: visible;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- /* Context Menu */
- .context-view.monaco-menu-container {
- outline: 0;
- border: none;
- animation: fadeIn 0.083s linear;
- -webkit-app-region: no-drag;
- }
- .context-view.monaco-menu-container :focus,
- .context-view.monaco-menu-container .monaco-action-bar.vertical:focus,
- .context-view.monaco-menu-container .monaco-action-bar.vertical :focus {
- outline: 0;
- }
- .hc-black .context-view.monaco-menu-container,
- .hc-light .context-view.monaco-menu-container,
- :host-context(.hc-black) .context-view.monaco-menu-container,
- :host-context(.hc-light) .context-view.monaco-menu-container {
- box-shadow: none;
- }
- .hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused,
- .hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused,
- :host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused,
- :host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused {
- background: none;
- }
- /* Vertical Action Bar Styles */
- .monaco-menu .monaco-action-bar.vertical {
- padding: 4px 0;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item {
- height: 2em;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),
- .monaco-menu .monaco-action-bar.vertical .keybinding {
- font-size: inherit;
- padding: 0 2em;
- max-height: 100%;
- }
- .monaco-menu .monaco-action-bar.vertical .menu-item-check {
- font-size: inherit;
- width: 2em;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- font-size: inherit;
- margin: 5px 0 !important;
- padding: 0;
- border-radius: 0;
- }
- .linux .monaco-menu .monaco-action-bar.vertical .action-label.separator,
- :host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- margin-left: 0;
- margin-right: 0;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- font-size: 60%;
- padding: 0 1.8em;
- }
- .linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator,
- :host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- height: 100%;
- mask-size: 10px 10px;
- -webkit-mask-size: 10px 10px;
- }
- .monaco-menu .action-item {
- cursor: default;
- }`;if(e){t+=`
- /* Arrows */
- .monaco-scrollable-element > .scrollbar > .scra {
- cursor: pointer;
- font-size: 11px !important;
- }
- .monaco-scrollable-element > .visible {
- opacity: 1;
- /* Background rule added for IE9 - to allow clicks on dom node */
- background:rgba(0,0,0,0);
- transition: opacity 100ms linear;
- }
- .monaco-scrollable-element > .invisible {
- opacity: 0;
- pointer-events: none;
- }
- .monaco-scrollable-element > .invisible.fade {
- transition: opacity 800ms linear;
- }
- /* Scrollable Content Inset Shadow */
- .monaco-scrollable-element > .shadow {
- position: absolute;
- display: none;
- }
- .monaco-scrollable-element > .shadow.top {
- display: block;
- top: 0;
- left: 3px;
- height: 3px;
- width: 100%;
- }
- .monaco-scrollable-element > .shadow.left {
- display: block;
- top: 3px;
- left: 0;
- height: 100%;
- width: 3px;
- }
- .monaco-scrollable-element > .shadow.top-left-corner {
- display: block;
- top: 0;
- left: 0;
- height: 3px;
- width: 3px;
- }
- `;const i=s.scrollbarShadow;i&&(t+=`
- .monaco-scrollable-element > .shadow.top {
- box-shadow: ${i} 0 6px 6px -6px inset;
- }
- .monaco-scrollable-element > .shadow.left {
- box-shadow: ${i} 6px 0 6px -6px inset;
- }
- .monaco-scrollable-element > .shadow.top.left {
- box-shadow: ${i} 6px 6px 6px -6px inset;
- }
- `);const n=s.scrollbarSliderBackground;n&&(t+=`
- .monaco-scrollable-element > .scrollbar > .slider {
- background: ${n};
- }
- `);const o=s.scrollbarSliderHoverBackground;o&&(t+=`
- .monaco-scrollable-element > .scrollbar > .slider:hover {
- background: ${o};
- }
- `);const r=s.scrollbarSliderActiveBackground;r&&(t+=`
- .monaco-scrollable-element > .scrollbar > .slider.active {
- background: ${r};
- }
- `)}return t}class iit{constructor(e,t,i,n){this.contextViewService=e,this.telemetryService=t,this.notificationService=i,this.keybindingService=n,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(e){this.options=e}showContextMenu(e){const t=e.getActions();if(!t.length)return;this.focusToReturn=Ql();let i;const n=Cr(e.domForShadowRoot)?e.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>e.getAnchor(),canRelayout:!1,anchorAlignment:e.anchorAlignment,anchorAxisAlignment:e.anchorAxisAlignment,render:o=>{var c;this.lastContainer=o;const r=e.getMenuClassName?e.getMenuClassName():"";r&&(o.className+=" "+r),this.options.blockMouse&&(this.block=o.appendChild(gt(".context-view-block")),this.block.style.position="fixed",this.block.style.cursor="initial",this.block.style.left="0",this.block.style.top="0",this.block.style.width="100%",this.block.style.height="100%",this.block.style.zIndex="-1",(c=this.blockDisposable)==null||c.dispose(),this.blockDisposable=Te(this.block,ut.MOUSE_DOWN,h=>h.stopPropagation()));const l=new De,a=e.actionRunner||new ZN;a.onWillRun(h=>this.onActionRun(h,!e.skipTelemetry),this,l),a.onDidRun(this.onDidActionRun,this,l),i=new x1(o,t,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:a,getKeyBinding:e.getKeyBinding?e.getKeyBinding:h=>this.keybindingService.lookupKeybinding(h.id)},qtt),i.onDidCancel(()=>this.contextViewService.hideContextView(!0),null,l),i.onDidBlur(()=>this.contextViewService.hideContextView(!0),null,l);const d=ai(o);return l.add(Te(d,ut.BLUR,()=>this.contextViewService.hideContextView(!0))),l.add(Te(d,ut.MOUSE_DOWN,h=>{if(h.defaultPrevented)return;const u=new _u(d,h);let m=u.target;if(!u.rightButton){for(;m;){if(m===o)return;m=m.parentElement}this.contextViewService.hideContextView(!0)}})),Pu(l,i)},focus:()=>{i==null||i.focus(!!e.autoSelectFirstItem)},onHide:o=>{var r,l,a;(r=e.onHide)==null||r.call(e,!!o),this.block&&(this.block.remove(),this.block=null),(l=this.blockDisposable)==null||l.dispose(),this.blockDisposable=null,this.lastContainer&&(Ql()===this.lastContainer||wr(Ql(),this.lastContainer))&&((a=this.focusToReturn)==null||a.focus()),this.lastContainer=null}},n,!!n)}onActionRun(e,t){t&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1)}onDidActionRun(e){e.error&&!$h(e.error)&&this.notificationService.error(e.error)}}var nit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},DR=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let x6=class extends be{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new iit(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(e,t,i,n,o,r){super(),this.telemetryService=e,this.notificationService=t,this.contextViewService=i,this.keybindingService=n,this.menuService=o,this.contextKeyService=r,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new fe),this.onDidShowContextMenu=this._onDidShowContextMenu.event,this._onDidHideContextMenu=this._store.add(new fe)}configure(e){this.contextMenuHandler.configure(e)}showContextMenu(e){e=I6.transform(e,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu({...e,onHide:t=>{var i;(i=e.onHide)==null||i.call(e,t),this._onDidHideContextMenu.fire()}}),Wf.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};x6=nit([DR(0,$l),DR(1,jo),DR(2,ab),DR(3,qn),DR(4,ah),DR(5,fi)],x6);var I6;(function(s){function e(i){return i&&i.menuId instanceof Gt}function t(i,n,o){if(!e(i))return i;const{menuId:r,menuActionOptions:l,contextKeyService:a}=i;return{...i,getActions:()=>{const d=[];if(r){const c=n.getMenuActions(r,a??o,l);$tt(c,d)}return i.getActions?Br.join(i.getActions(),d):d}}}s.transform=t})(I6||(I6={}));var _X;(function(s){s[s.API=0]="API",s[s.USER=1]="USER"})(_X||(_X={}));var Loe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zX=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let E6=class{constructor(e){this._commandService=e}async open(e,t){if(!W3(e,Ti.command))return!1;if(!(t!=null&&t.allowCommands)||(typeof e=="string"&&(e=ni.parse(e)),Array.isArray(t.allowCommands)&&!t.allowCommands.includes(e.path)))return!0;let i=[];try{i=o6(decodeURIComponent(e.query))}catch{try{i=o6(e.query)}catch{}}return Array.isArray(i)||(i=[i]),await this._commandService.executeCommand(e.path,...i),!0}};E6=Loe([zX(0,ks)],E6);let D6=class{constructor(e){this._editorService=e}async open(e,t){typeof e=="string"&&(e=ni.parse(e));const{selection:i,uri:n}=yqe(e);return e=n,e.scheme===Ti.file&&(e=d$e(e)),await this._editorService.openCodeEditor({resource:e,options:{selection:i,source:t!=null&&t.fromUserGesture?_X.USER:_X.API,...t==null?void 0:t.editorOptions}},this._editorService.getFocusedCodeEditor(),t==null?void 0:t.openToSide),!0}};D6=Loe([zX(0,kn)],D6);let G6=class{constructor(e,t){this._openers=new Ia,this._validators=new Ia,this._resolvers=new Ia,this._resolvedUriTargets=new Or(i=>i.with({path:null,fragment:null,query:null}).toString()),this._externalOpeners=new Ia,this._defaultExternalOpener={openExternal:async i=>(c8(i,Ti.http,Ti.https)?uSe(i):Us.location.href=i,!0)},this._openers.push({open:async(i,n)=>n!=null&&n.openExternal||c8(i,Ti.mailto,Ti.http,Ti.https,Ti.vsls)?(await this._doOpenExternal(i,n),!0):!1}),this._openers.push(new E6(t)),this._openers.push(new D6(e))}registerOpener(e){return{dispose:this._openers.unshift(e)}}async open(e,t){const i=typeof e=="string"?ni.parse(e):e,n=this._resolvedUriTargets.get(i)??e;for(const o of this._validators)if(!await o.shouldOpen(n,t))return!1;for(const o of this._openers)if(await o.open(e,t))return!0;return!1}async resolveExternalUri(e,t){for(const i of this._resolvers)try{const n=await i.resolveExternalUri(e,t);if(n)return this._resolvedUriTargets.has(n.resolved)||this._resolvedUriTargets.set(n.resolved,e),n}catch{}throw new Error("Could not resolve external URI: "+e.toString())}async _doOpenExternal(e,t){const i=typeof e=="string"?ni.parse(e):e;let n;try{n=(await this.resolveExternalUri(i,t)).resolved}catch{n=i}let o;if(typeof e=="string"&&i.toString()===n.toString()?o=e:o=encodeURI(n.toString(!0)),t!=null&&t.allowContributedOpeners){const r=typeof(t==null?void 0:t.allowContributedOpeners)=="string"?t==null?void 0:t.allowContributedOpeners:void 0;for(const l of this._externalOpeners)if(await l.openExternal(o,{sourceUri:i,preferredOpenerId:r},Gi.None))return!0}return this._defaultExternalOpener.openExternal(o,{sourceUri:i},Gi.None)}dispose(){this._validators.clear()}};G6=Loe([zX(0,kn),zX(1,ks)],G6);const Ld=un("editorWorkerService");var Wo;(function(s){s[s.Hint=1]="Hint",s[s.Info=2]="Info",s[s.Warning=4]="Warning",s[s.Error=8]="Error"})(Wo||(Wo={}));(function(s){function e(r,l){return l-r}s.compare=e;const t=Object.create(null);t[s.Error]=F("sev.error","Error"),t[s.Warning]=F("sev.warning","Warning"),t[s.Info]=F("sev.info","Info");function i(r){return t[r]||""}s.toString=i;function n(r){switch(r){case zo.Error:return s.Error;case zo.Warning:return s.Warning;case zo.Info:return s.Info;case zo.Ignore:return s.Hint}}s.fromSeverity=n;function o(r){switch(r){case s.Error:return zo.Error;case s.Warning:return zo.Warning;case s.Info:return zo.Info;case s.Hint:return zo.Ignore}}s.toSeverity=o})(Wo||(Wo={}));var OX;(function(s){const e="";function t(n){return i(n,!0)}s.makeKey=t;function i(n,o){const r=[e];return n.source?r.push(n.source.replace("¦","\\¦")):r.push(e),n.code?typeof n.code=="string"?r.push(n.code.replace("¦","\\¦")):r.push(n.code.value.replace("¦","\\¦")):r.push(e),n.severity!==void 0&&n.severity!==null?r.push(Wo.toString(n.severity)):r.push(e),n.message&&o?r.push(n.message.replace("¦","\\¦")):r.push(e),n.startLineNumber!==void 0&&n.startLineNumber!==null?r.push(n.startLineNumber.toString()):r.push(e),n.startColumn!==void 0&&n.startColumn!==null?r.push(n.startColumn.toString()):r.push(e),n.endLineNumber!==void 0&&n.endLineNumber!==null?r.push(n.endLineNumber.toString()):r.push(e),n.endColumn!==void 0&&n.endColumn!==null?r.push(n.endColumn.toString()):r.push(e),r.push(e),r.join("¦")}s.makeKeyOptionalMessage=i})(OX||(OX={}));const i0=un("markerService"),ARe=te("editor.lineHighlightBackground",null,F("lineHighlight","Background color for the highlight of line at the cursor position.")),gme=te("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hcDark:"#f38518",hcLight:Vn},F("lineHighlightBorderBox","Background color for the border around the line at the cursor position."));te("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hcDark:null,hcLight:null},F("rangeHighlight","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.rangeHighlightBorder",{dark:null,light:null,hcDark:to,hcLight:to},F("rangeHighlightBorder","Background color of the border around highlighted ranges."));te("editor.symbolHighlightBackground",{dark:Qf,light:Qf,hcDark:null,hcLight:null},F("symbolHighlight","Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.symbolHighlightBorder",{dark:null,light:null,hcDark:to,hcLight:to},F("symbolHighlightBorder","Background color of the border around highlighted symbols."));const f9=te("editorCursor.foreground",{dark:"#AEAFAD",light:Je.black,hcDark:Je.white,hcLight:"#0F4A85"},F("caret","Color of the editor cursor.")),voe=te("editorCursor.background",null,F("editorCursorBackground","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),ZRe=te("editorMultiCursor.primary.foreground",f9,F("editorMultiCursorPrimaryForeground","Color of the primary editor cursor when multiple cursors are present.")),sit=te("editorMultiCursor.primary.background",voe,F("editorMultiCursorPrimaryBackground","The background color of the primary editor cursor when multiple cursors are present. Allows customizing the color of a character overlapped by a block cursor.")),SRe=te("editorMultiCursor.secondary.foreground",f9,F("editorMultiCursorSecondaryForeground","Color of secondary editor cursors when multiple cursors are present.")),oit=te("editorMultiCursor.secondary.background",voe,F("editorMultiCursorSecondaryBackground","The background color of secondary editor cursors when multiple cursors are present. Allows customizing the color of a character overlapped by a block cursor.")),koe=te("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hcDark:"#e3e4e229",hcLight:"#CCCCCC"},F("editorWhitespaces","Color of whitespace characters in the editor.")),rit=te("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hcDark:Je.white,hcLight:"#292929"},F("editorLineNumbers","Color of editor line numbers.")),lit=te("editorIndentGuide.background",koe,F("editorIndentGuides","Color of the editor indentation guides."),!1,F("deprecatedEditorIndentGuides","'editorIndentGuide.background' is deprecated. Use 'editorIndentGuide.background1' instead.")),ait=te("editorIndentGuide.activeBackground",koe,F("editorActiveIndentGuide","Color of the active editor indentation guides."),!1,F("deprecatedEditorActiveIndentGuide","'editorIndentGuide.activeBackground' is deprecated. Use 'editorIndentGuide.activeBackground1' instead.")),hk=te("editorIndentGuide.background1",lit,F("editorIndentGuides1","Color of the editor indentation guides (1).")),dit=te("editorIndentGuide.background2","#00000000",F("editorIndentGuides2","Color of the editor indentation guides (2).")),cit=te("editorIndentGuide.background3","#00000000",F("editorIndentGuides3","Color of the editor indentation guides (3).")),hit=te("editorIndentGuide.background4","#00000000",F("editorIndentGuides4","Color of the editor indentation guides (4).")),uit=te("editorIndentGuide.background5","#00000000",F("editorIndentGuides5","Color of the editor indentation guides (5).")),mit=te("editorIndentGuide.background6","#00000000",F("editorIndentGuides6","Color of the editor indentation guides (6).")),uk=te("editorIndentGuide.activeBackground1",ait,F("editorActiveIndentGuide1","Color of the active editor indentation guides (1).")),pit=te("editorIndentGuide.activeBackground2","#00000000",F("editorActiveIndentGuide2","Color of the active editor indentation guides (2).")),git=te("editorIndentGuide.activeBackground3","#00000000",F("editorActiveIndentGuide3","Color of the active editor indentation guides (3).")),fit=te("editorIndentGuide.activeBackground4","#00000000",F("editorActiveIndentGuide4","Color of the active editor indentation guides (4).")),bit=te("editorIndentGuide.activeBackground5","#00000000",F("editorActiveIndentGuide5","Color of the active editor indentation guides (5).")),Uit=te("editorIndentGuide.activeBackground6","#00000000",F("editorActiveIndentGuide6","Color of the active editor indentation guides (6).")),Fit=te("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hcDark:to,hcLight:to},F("editorActiveLineNumber","Color of editor active line number"),!1,F("deprecatedEditorActiveLineNumber","Id is deprecated. Use 'editorLineNumber.activeForeground' instead."));te("editorLineNumber.activeForeground",Fit,F("editorActiveLineNumber","Color of editor active line number"));const Ait=te("editorLineNumber.dimmedForeground",null,F("editorDimmedLineNumber","Color of the final editor line when editor.renderFinalNewline is set to dimmed."));te("editorRuler.foreground",{dark:"#5A5A5A",light:Je.lightgrey,hcDark:Je.white,hcLight:"#292929"},F("editorRuler","Color of the editor rulers."));te("editorCodeLens.foreground",{dark:"#999999",light:"#919191",hcDark:"#999999",hcLight:"#292929"},F("editorCodeLensForeground","Foreground color of editor CodeLens"));te("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hcDark:"#0064001a",hcLight:"#0000"},F("editorBracketMatchBackground","Background color behind matching brackets"));te("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hcDark:Vn,hcLight:Vn},F("editorBracketMatchBorder","Color for matching brackets boxes"));const Zit=te("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hcDark:"#7f7f7f4d",hcLight:"#666666"},F("editorOverviewRulerBorder","Color of the overview ruler border.")),Sit=te("editorOverviewRuler.background",null,F("editorOverviewRulerBackground","Background color of the editor overview ruler."));te("editorGutter.background",im,F("editorGutter","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers."));te("editorUnnecessaryCode.border",{dark:null,light:null,hcDark:Je.fromHex("#fff").transparent(.8),hcLight:Vn},F("unnecessaryCodeBorder","Border color of unnecessary (unused) source code in the editor."));const Nit=te("editorUnnecessaryCode.opacity",{dark:Je.fromHex("#000a"),light:Je.fromHex("#0007"),hcDark:null,hcLight:null},F("unnecessaryCodeOpacity",`Opacity of unnecessary (unused) source code in the editor. For example, "#000000c0" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.`));te("editorGhostText.border",{dark:null,light:null,hcDark:Je.fromHex("#fff").transparent(.8),hcLight:Je.fromHex("#292929").transparent(.8)},F("editorGhostTextBorder","Border color of ghost text in the editor."));const Rit=te("editorGhostText.foreground",{dark:Je.fromHex("#ffffff56"),light:Je.fromHex("#0007"),hcDark:null,hcLight:null},F("editorGhostTextForeground","Foreground color of the ghost text in the editor."));te("editorGhostText.background",null,F("editorGhostTextBackground","Background color of the ghost text in the editor."));const Vit=new Je(new Qn(0,122,204,.6)),NRe=te("editorOverviewRuler.rangeHighlightForeground",Vit,F("overviewRulerRangeHighlight","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations."),!0),Wit=te("editorOverviewRuler.errorForeground",{dark:new Je(new Qn(255,18,18,.7)),light:new Je(new Qn(255,18,18,.7)),hcDark:new Je(new Qn(255,50,50,1)),hcLight:"#B5200D"},F("overviewRuleError","Overview ruler marker color for errors.")),yit=te("editorOverviewRuler.warningForeground",{dark:qf,light:qf,hcDark:sL,hcLight:sL},F("overviewRuleWarning","Overview ruler marker color for warnings.")),Qit=te("editorOverviewRuler.infoForeground",{dark:Jg,light:Jg,hcDark:oL,hcLight:oL},F("overviewRuleInfo","Overview ruler marker color for infos.")),RRe=te("editorBracketHighlight.foreground1",{dark:"#FFD700",light:"#0431FAFF",hcDark:"#FFD700",hcLight:"#0431FAFF"},F("editorBracketHighlightForeground1","Foreground color of brackets (1). Requires enabling bracket pair colorization.")),VRe=te("editorBracketHighlight.foreground2",{dark:"#DA70D6",light:"#319331FF",hcDark:"#DA70D6",hcLight:"#319331FF"},F("editorBracketHighlightForeground2","Foreground color of brackets (2). Requires enabling bracket pair colorization.")),WRe=te("editorBracketHighlight.foreground3",{dark:"#179FFF",light:"#7B3814FF",hcDark:"#87CEFA",hcLight:"#7B3814FF"},F("editorBracketHighlightForeground3","Foreground color of brackets (3). Requires enabling bracket pair colorization.")),yRe=te("editorBracketHighlight.foreground4","#00000000",F("editorBracketHighlightForeground4","Foreground color of brackets (4). Requires enabling bracket pair colorization.")),QRe=te("editorBracketHighlight.foreground5","#00000000",F("editorBracketHighlightForeground5","Foreground color of brackets (5). Requires enabling bracket pair colorization.")),MRe=te("editorBracketHighlight.foreground6","#00000000",F("editorBracketHighlightForeground6","Foreground color of brackets (6). Requires enabling bracket pair colorization.")),Mit=te("editorBracketHighlight.unexpectedBracket.foreground",{dark:new Je(new Qn(255,18,18,.8)),light:new Je(new Qn(255,18,18,.8)),hcDark:"new Color(new RGBA(255, 50, 50, 1))",hcLight:"#B5200D"},F("editorBracketHighlightUnexpectedBracketForeground","Foreground color of unexpected brackets.")),wit=te("editorBracketPairGuide.background1","#00000000",F("editorBracketPairGuide.background1","Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.")),Tit=te("editorBracketPairGuide.background2","#00000000",F("editorBracketPairGuide.background2","Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.")),Cit=te("editorBracketPairGuide.background3","#00000000",F("editorBracketPairGuide.background3","Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.")),Bit=te("editorBracketPairGuide.background4","#00000000",F("editorBracketPairGuide.background4","Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.")),Lit=te("editorBracketPairGuide.background5","#00000000",F("editorBracketPairGuide.background5","Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.")),vit=te("editorBracketPairGuide.background6","#00000000",F("editorBracketPairGuide.background6","Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.")),kit=te("editorBracketPairGuide.activeBackground1","#00000000",F("editorBracketPairGuide.activeBackground1","Background color of active bracket pair guides (1). Requires enabling bracket pair guides.")),xit=te("editorBracketPairGuide.activeBackground2","#00000000",F("editorBracketPairGuide.activeBackground2","Background color of active bracket pair guides (2). Requires enabling bracket pair guides.")),Iit=te("editorBracketPairGuide.activeBackground3","#00000000",F("editorBracketPairGuide.activeBackground3","Background color of active bracket pair guides (3). Requires enabling bracket pair guides.")),Eit=te("editorBracketPairGuide.activeBackground4","#00000000",F("editorBracketPairGuide.activeBackground4","Background color of active bracket pair guides (4). Requires enabling bracket pair guides.")),Dit=te("editorBracketPairGuide.activeBackground5","#00000000",F("editorBracketPairGuide.activeBackground5","Background color of active bracket pair guides (5). Requires enabling bracket pair guides.")),Git=te("editorBracketPairGuide.activeBackground6","#00000000",F("editorBracketPairGuide.activeBackground6","Background color of active bracket pair guides (6). Requires enabling bracket pair guides."));te("editorUnicodeHighlight.border",qf,F("editorUnicodeHighlight.border","Border color used to highlight unicode characters."));te("editorUnicodeHighlight.background",k8e,F("editorUnicodeHighlight.background","Background color used to highlight unicode characters."));eu((s,e)=>{const t=s.getColor(im),i=s.getColor(ARe),n=i&&!i.isTransparent()?i:t;n&&e.addRule(`.monaco-editor .inputarea.ime-input { background-color: ${n}; }`)});function Jit(s,e){const t=[],i=[];for(const n of s)e.has(n)||t.push(n);for(const n of e)s.has(n)||i.push(n);return{removed:t,added:i}}function Xit(s,e){const t=new Set;for(const i of e)s.has(i)&&t.add(i);return t}var Yit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},fme=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let J6=class extends be{constructor(e,t){super(),this._markerService=t,this._onDidChangeMarker=this._register(new fe),this._markerDecorations=new Or,e.getModels().forEach(i=>this._onModelAdded(i)),this._register(e.onModelAdded(this._onModelAdded,this)),this._register(e.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach(e=>e.dispose()),this._markerDecorations.clear()}getMarker(e,t){const i=this._markerDecorations.get(e);return i&&i.getMarker(t)||null}_handleMarkerChange(e){e.forEach(t=>{const i=this._markerDecorations.get(t);i&&this._updateDecorations(i)})}_onModelAdded(e){const t=new _it(e);this._markerDecorations.set(e.uri,t),this._updateDecorations(t)}_onModelRemoved(e){var i;const t=this._markerDecorations.get(e.uri);t&&(t.dispose(),this._markerDecorations.delete(e.uri)),(e.uri.scheme===Ti.inMemory||e.uri.scheme===Ti.internal||e.uri.scheme===Ti.vscode)&&((i=this._markerService)==null||i.read({resource:e.uri}).map(n=>n.owner).forEach(n=>this._markerService.remove(n,[e.uri])))}_updateDecorations(e){const t=this._markerService.read({resource:e.model.uri,take:500});e.update(t)&&this._onDidChangeMarker.fire(e.model)}};J6=Yit([fme(0,zs),fme(1,i0)],J6);class _it extends be{constructor(e){super(),this.model=e,this._map=new XKe,this._register(ei(()=>{this.model.deltaDecorations([...this._map.values()],[]),this._map.clear()}))}update(e){const{added:t,removed:i}=Jit(new Set(this._map.keys()),new Set(e));if(t.length===0&&i.length===0)return!1;const n=i.map(l=>this._map.get(l)),o=t.map(l=>({range:this._createDecorationRange(this.model,l),options:this._createDecorationOption(l)})),r=this.model.deltaDecorations(n,o);for(const l of i)this._map.delete(l);for(let l=0;l<r.length;l++)this._map.set(t[l],r[l]);return!0}getMarker(e){return this._map.getKey(e.id)}_createDecorationRange(e,t){let i=z.lift(t);if(t.severity===Wo.Hint&&!this._hasMarkerTag(t,1)&&!this._hasMarkerTag(t,2)&&(i=i.setEndPosition(i.startLineNumber,i.startColumn+2)),i=e.validateRange(i),i.isEmpty()){const n=e.getLineLastNonWhitespaceColumn(i.startLineNumber)||e.getLineMaxColumn(i.startLineNumber);if(n===1||i.endColumn>=n)return i;const o=e.getWordAtPosition(i.getStartPosition());o&&(i=new z(i.startLineNumber,o.startColumn,i.endLineNumber,o.endColumn))}else if(t.endColumn===Number.MAX_VALUE&&t.startColumn===1&&i.startLineNumber===i.endLineNumber){const n=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);n<i.endColumn&&(i=new z(i.startLineNumber,n,i.endLineNumber,i.endColumn),t.startColumn=n)}return i}_createDecorationOption(e){let t,i,n,o,r;switch(e.severity){case Wo.Hint:this._hasMarkerTag(e,2)?t=void 0:this._hasMarkerTag(e,1)?t="squiggly-unnecessary":t="squiggly-hint",n=0;break;case Wo.Info:t="squiggly-info",i=Vo(Qit),n=10,r={color:Vo(s6e),position:1};break;case Wo.Warning:t="squiggly-warning",i=Vo(yit),n=20,r={color:Vo(o6e),position:1};break;case Wo.Error:default:t="squiggly-error",i=Vo(Wit),n=30,r={color:Vo(r6e),position:1};break}return e.tags&&(e.tags.indexOf(1)!==-1&&(o="squiggly-inline-unnecessary"),e.tags.indexOf(2)!==-1&&(o="squiggly-inline-deprecated")),{description:"marker-decoration",stickiness:1,className:t,showIfCollapsed:!0,overviewRuler:{color:i,position:eh.Right},minimap:r,zIndex:n,inlineClassName:o}}_hasMarkerTag(e,t){return e.tags?e.tags.indexOf(t)>=0:!1}}const xoe=un("markerDecorationsService");class Zr{static _nextVisibleColumn(e,t,i){return e===9?Zr.nextRenderTabStop(t,i):vF(e)||Tse(e)?t+2:t+1}static visibleColumnFromColumn(e,t,i){const n=Math.min(t-1,e.length),o=e.substring(0,n),r=new oX(o);let l=0;for(;!r.eol();){const a=sX(o,n,r.offset);r.nextGraphemeLength(),l=this._nextVisibleColumn(a,l,i)}return l}static columnFromVisibleColumn(e,t,i){if(t<=0)return 1;const n=e.length,o=new oX(e);let r=0,l=1;for(;!o.eol();){const a=sX(e,n,o.offset);o.nextGraphemeLength();const d=this._nextVisibleColumn(a,r,i),c=o.offset+1;if(d>=t){const h=t-r;return d-t<h?c:l}r=d,l=c}return n+1}static nextRenderTabStop(e,t){return e+t-e%t}static nextIndentTabStop(e,t){return e+t-e%t}static prevRenderTabStop(e,t){return Math.max(0,e-1-(e-1)%t)}static prevIndentTabStop(e,t){return Math.max(0,e-1-(e-1)%t)}}function zit(s,e,t){let i=0;for(let o=0;o<s.length;o++)s.charAt(o)===" "?i=Zr.nextIndentTabStop(i,e):i++;let n="";if(!t){const o=Math.floor(i/e);i=i%e;for(let r=0;r<o;r++)n+=" "}for(let o=0;o<i;o++)n+=" ";return n}function Ioe(s,e,t){let i=Ua(s);return i===-1&&(i=s.length),zit(s.substring(0,i),e,t)+s.substring(i)}class bme{constructor(e,t,i,n){this.range=e,this.nestingLevel=t,this.nestingLevelOfEqualBracketType=i,this.isInvalid=n}}class Oit{constructor(e,t,i,n,o,r){this.range=e,this.openingBracketRange=t,this.closingBracketRange=i,this.nestingLevel=n,this.nestingLevelOfEqualBracketType=o,this.bracketPairNode=r}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}class jit extends Oit{constructor(e,t,i,n,o,r,l){super(e,t,i,n,o,r),this.minVisibleColumnIndentation=l}}function Pit(s,e,t,i){return s!==t?qo(t-s,i):qo(0,i-e)}const Ea=0;function jX(s){return s===0}const Hc=2**26;function qo(s,e){return s*Hc+e}function Yh(s){const e=s,t=Math.floor(e/Hc),i=e-t*Hc;return new tm(t,i)}function Hit(s){return Math.floor(s/Hc)}function yo(s,e){let t=s+e;return e>=Hc&&(t=t-s%Hc),t}function Kit(s,e){return s.reduce((t,i)=>yo(t,e(i)),Ea)}function wRe(s,e){return s===e}function FL(s,e){const t=s,i=e;if(i-t<=0)return Ea;const o=Math.floor(t/Hc),r=Math.floor(i/Hc),l=i-r*Hc;if(o===r){const a=t-o*Hc;return qo(0,l-a)}else return qo(r-o,l)}function I1(s,e){return s<e}function E1(s,e){return s<=e}function CT(s,e){return s>=e}function yW(s){return qo(s.lineNumber-1,s.column-1)}function GS(s,e){const t=s,i=Math.floor(t/Hc),n=t-i*Hc,o=e,r=Math.floor(o/Hc),l=o-r*Hc;return new z(i+1,n+1,r+1,l+1)}function qit(s){const e=Kg(s);return qo(e.length-1,e[e.length-1].length)}class Mf{static fromModelContentChanges(e){return e.map(i=>{const n=z.lift(i.range);return new Mf(yW(n.getStartPosition()),yW(n.getEndPosition()),qit(i.text))}).reverse()}constructor(e,t,i){this.startOffset=e,this.endOffset=t,this.newLength=i}toString(){return`[${Yh(this.startOffset)}...${Yh(this.endOffset)}) -> ${Yh(this.newLength)}`}}class $it{constructor(e){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=e.map(t=>Eoe.from(t))}getOffsetBeforeChange(e){return this.adjustNextEdit(e),this.translateCurToOld(e)}getDistanceToNextChange(e){this.adjustNextEdit(e);const t=this.edits[this.nextEditIdx],i=t?this.translateOldToCur(t.offsetObj):null;return i===null?null:FL(e,i)}translateOldToCur(e){return e.lineCount===this.deltaLineIdxInOld?qo(e.lineCount+this.deltaOldToNewLineCount,e.columnCount+this.deltaOldToNewColumnCount):qo(e.lineCount+this.deltaOldToNewLineCount,e.columnCount)}translateCurToOld(e){const t=Yh(e);return t.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?qo(t.lineCount-this.deltaOldToNewLineCount,t.columnCount-this.deltaOldToNewColumnCount):qo(t.lineCount-this.deltaOldToNewLineCount,t.columnCount)}adjustNextEdit(e){for(;this.nextEditIdx<this.edits.length;){const t=this.edits[this.nextEditIdx],i=this.translateOldToCur(t.endOffsetAfterObj);if(E1(i,e)){this.nextEditIdx++;const n=Yh(i),o=Yh(this.translateOldToCur(t.endOffsetBeforeObj)),r=n.lineCount-o.lineCount;this.deltaOldToNewLineCount+=r;const l=this.deltaLineIdxInOld===t.endOffsetBeforeObj.lineCount?this.deltaOldToNewColumnCount:0,a=n.columnCount-o.columnCount;this.deltaOldToNewColumnCount=l+a,this.deltaLineIdxInOld=t.endOffsetBeforeObj.lineCount}else break}}}class Eoe{static from(e){return new Eoe(e.startOffset,e.endOffset,e.newLength)}constructor(e,t,i){this.endOffsetBeforeObj=Yh(t),this.endOffsetAfterObj=Yh(yo(e,i)),this.offsetObj=Yh(e)}}const dI=[],Qh=class Qh{static create(e,t){if(e<=128&&t.length===0){let i=Qh.cache[e];return i||(i=new Qh(e,t),Qh.cache[e]=i),i}return new Qh(e,t)}static getEmpty(){return this.empty}constructor(e,t){this.items=e,this.additionalItems=t}add(e,t){const i=t.getKey(e);let n=i>>5;if(n===0){const r=1<<i|this.items;return r===this.items?this:Qh.create(r,this.additionalItems)}n--;const o=this.additionalItems.slice(0);for(;o.length<n;)o.push(0);return o[n]|=1<<(i&31),Qh.create(this.items,o)}merge(e){const t=this.items|e.items;if(this.additionalItems===dI&&e.additionalItems===dI)return t===this.items?this:t===e.items?e:Qh.create(t,dI);const i=[];for(let n=0;n<Math.max(this.additionalItems.length,e.additionalItems.length);n++){const o=this.additionalItems[n]||0,r=e.additionalItems[n]||0;i.push(o|r)}return Qh.create(t,i)}intersects(e){if(this.items&e.items)return!0;for(let t=0;t<Math.min(this.additionalItems.length,e.additionalItems.length);t++)if(this.additionalItems[t]&e.additionalItems[t])return!0;return!1}};Qh.cache=new Array(129),Qh.empty=Qh.create(0,dI);let sc=Qh;const Ume={getKey(s){return s}};class TRe{constructor(){this.items=new Map}getKey(e){let t=this.items.get(e);return t===void 0&&(t=this.items.size,this.items.set(e,t)),t}}class Doe{get length(){return this._length}constructor(e){this._length=e}}class AL extends Doe{static create(e,t,i){let n=e.length;return t&&(n=yo(n,t.length)),i&&(n=yo(n,i.length)),new AL(n,e,t,i,t?t.missingOpeningBracketIds:sc.getEmpty())}get kind(){return 2}get listHeight(){return 0}get childrenLength(){return 3}getChild(e){switch(e){case 0:return this.openingBracket;case 1:return this.child;case 2:return this.closingBracket}throw new Error("Invalid child index")}get children(){const e=[];return e.push(this.openingBracket),this.child&&e.push(this.child),this.closingBracket&&e.push(this.closingBracket),e}constructor(e,t,i,n,o){super(e),this.openingBracket=t,this.child=i,this.closingBracket=n,this.missingOpeningBracketIds=o}canBeReused(e){return!(this.closingBracket===null||e.intersects(this.missingOpeningBracketIds))}deepClone(){return new AL(this.length,this.openingBracket.deepClone(),this.child&&this.child.deepClone(),this.closingBracket&&this.closingBracket.deepClone(),this.missingOpeningBracketIds)}computeMinIndentation(e,t){return this.child?this.child.computeMinIndentation(yo(e,this.openingBracket.length),t):Number.MAX_SAFE_INTEGER}}class Yg extends Doe{static create23(e,t,i,n=!1){let o=e.length,r=e.missingOpeningBracketIds;if(e.listHeight!==t.listHeight)throw new Error("Invalid list heights");if(o=yo(o,t.length),r=r.merge(t.missingOpeningBracketIds),i){if(e.listHeight!==i.listHeight)throw new Error("Invalid list heights");o=yo(o,i.length),r=r.merge(i.missingOpeningBracketIds)}return n?new ent(o,e.listHeight+1,e,t,i,r):new ZL(o,e.listHeight+1,e,t,i,r)}static getEmpty(){return new tnt(Ea,0,[],sc.getEmpty())}get kind(){return 4}get missingOpeningBracketIds(){return this._missingOpeningBracketIds}constructor(e,t,i){super(e),this.listHeight=t,this._missingOpeningBracketIds=i,this.cachedMinIndentation=-1}throwIfImmutable(){}makeLastElementMutable(){this.throwIfImmutable();const e=this.childrenLength;if(e===0)return;const t=this.getChild(e-1),i=t.kind===4?t.toMutable():t;return t!==i&&this.setChild(e-1,i),i}makeFirstElementMutable(){if(this.throwIfImmutable(),this.childrenLength===0)return;const t=this.getChild(0),i=t.kind===4?t.toMutable():t;return t!==i&&this.setChild(0,i),i}canBeReused(e){if(e.intersects(this.missingOpeningBracketIds)||this.childrenLength===0)return!1;let t=this;for(;t.kind===4;){const i=t.childrenLength;if(i===0)throw new _n;t=t.getChild(i-1)}return t.canBeReused(e)}handleChildrenChanged(){this.throwIfImmutable();const e=this.childrenLength;let t=this.getChild(0).length,i=this.getChild(0).missingOpeningBracketIds;for(let n=1;n<e;n++){const o=this.getChild(n);t=yo(t,o.length),i=i.merge(o.missingOpeningBracketIds)}this._length=t,this._missingOpeningBracketIds=i,this.cachedMinIndentation=-1}computeMinIndentation(e,t){if(this.cachedMinIndentation!==-1)return this.cachedMinIndentation;let i=Number.MAX_SAFE_INTEGER,n=e;for(let o=0;o<this.childrenLength;o++){const r=this.getChild(o);r&&(i=Math.min(i,r.computeMinIndentation(n,t)),n=yo(n,r.length))}return this.cachedMinIndentation=i,i}}class ZL extends Yg{get childrenLength(){return this._item3!==null?3:2}getChild(e){switch(e){case 0:return this._item1;case 1:return this._item2;case 2:return this._item3}throw new Error("Invalid child index")}setChild(e,t){switch(e){case 0:this._item1=t;return;case 1:this._item2=t;return;case 2:this._item3=t;return}throw new Error("Invalid child index")}get children(){return this._item3?[this._item1,this._item2,this._item3]:[this._item1,this._item2]}get item1(){return this._item1}get item2(){return this._item2}get item3(){return this._item3}constructor(e,t,i,n,o,r){super(e,t,r),this._item1=i,this._item2=n,this._item3=o}deepClone(){return new ZL(this.length,this.listHeight,this._item1.deepClone(),this._item2.deepClone(),this._item3?this._item3.deepClone():null,this.missingOpeningBracketIds)}appendChildOfSameHeight(e){if(this._item3)throw new Error("Cannot append to a full (2,3) tree node");this.throwIfImmutable(),this._item3=e,this.handleChildrenChanged()}unappendChild(){if(!this._item3)throw new Error("Cannot remove from a non-full (2,3) tree node");this.throwIfImmutable();const e=this._item3;return this._item3=null,this.handleChildrenChanged(),e}prependChildOfSameHeight(e){if(this._item3)throw new Error("Cannot prepend to a full (2,3) tree node");this.throwIfImmutable(),this._item3=this._item2,this._item2=this._item1,this._item1=e,this.handleChildrenChanged()}unprependChild(){if(!this._item3)throw new Error("Cannot remove from a non-full (2,3) tree node");this.throwIfImmutable();const e=this._item1;return this._item1=this._item2,this._item2=this._item3,this._item3=null,this.handleChildrenChanged(),e}toMutable(){return this}}class ent extends ZL{toMutable(){return new ZL(this.length,this.listHeight,this.item1,this.item2,this.item3,this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error("this instance is immutable")}}class PX extends Yg{get childrenLength(){return this._children.length}getChild(e){return this._children[e]}setChild(e,t){this._children[e]=t}get children(){return this._children}constructor(e,t,i,n){super(e,t,n),this._children=i}deepClone(){const e=new Array(this._children.length);for(let t=0;t<this._children.length;t++)e[t]=this._children[t].deepClone();return new PX(this.length,this.listHeight,e,this.missingOpeningBracketIds)}appendChildOfSameHeight(e){this.throwIfImmutable(),this._children.push(e),this.handleChildrenChanged()}unappendChild(){this.throwIfImmutable();const e=this._children.pop();return this.handleChildrenChanged(),e}prependChildOfSameHeight(e){this.throwIfImmutable(),this._children.unshift(e),this.handleChildrenChanged()}unprependChild(){this.throwIfImmutable();const e=this._children.shift();return this.handleChildrenChanged(),e}toMutable(){return this}}class tnt extends PX{toMutable(){return new PX(this.length,this.listHeight,[...this.children],this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error("this instance is immutable")}}const int=[];class Goe extends Doe{get listHeight(){return 0}get childrenLength(){return 0}getChild(e){return null}get children(){return int}deepClone(){return this}}class HZ extends Goe{get kind(){return 0}get missingOpeningBracketIds(){return sc.getEmpty()}canBeReused(e){return!0}computeMinIndentation(e,t){const i=Yh(e),n=(i.columnCount===0?i.lineCount:i.lineCount+1)+1,o=Hit(yo(e,this.length))+1;let r=Number.MAX_SAFE_INTEGER;for(let l=n;l<=o;l++){const a=t.getLineFirstNonWhitespaceColumn(l),d=t.getLineContent(l);if(a===0)continue;const c=Zr.visibleColumnFromColumn(d,a,t.getOptions().tabSize);r=Math.min(r,c)}return r}}class HX extends Goe{static create(e,t,i){return new HX(e,t,i)}get kind(){return 1}get missingOpeningBracketIds(){return sc.getEmpty()}constructor(e,t,i){super(e),this.bracketInfo=t,this.bracketIds=i}get text(){return this.bracketInfo.bracketText}get languageId(){return this.bracketInfo.languageId}canBeReused(e){return!1}computeMinIndentation(e,t){return Number.MAX_SAFE_INTEGER}}class nnt extends Goe{get kind(){return 3}constructor(e,t){super(t),this.missingOpeningBracketIds=e}canBeReused(e){return!e.intersects(this.missingOpeningBracketIds)}computeMinIndentation(e,t){return Number.MAX_SAFE_INTEGER}}let SU=class{constructor(e,t,i,n,o){this.length=e,this.kind=t,this.bracketId=i,this.bracketIds=n,this.astNode=o}};class CRe{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.reader=new snt(this.textModel,this.bracketTokens),this._offset=Ea,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return qo(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(e){this.didPeek=!1,this._offset=yo(this._offset,e);const t=Yh(this._offset);this.reader.setPosition(t.lineCount,t.columnCount)}read(){let e;return this.peeked?(this.didPeek=!1,e=this.peeked):e=this.reader.read(),e&&(this._offset=yo(this._offset,e.length)),e}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}class snt{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}setPosition(e,t){e===this.lineIdx?(this.lineCharOffset=t,this.line!==null&&(this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=e,this.lineCharOffset=t,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const o=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=o.length,o}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;this.line===null&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const e=this.lineIdx,t=this.lineCharOffset;let i=0;for(;;){const o=this.lineTokens,r=o.getCount();let l=null;if(this.lineTokenOffset<r){const a=o.getMetadata(this.lineTokenOffset);for(;this.lineTokenOffset+1<r&&a===o.getMetadata(this.lineTokenOffset+1);)this.lineTokenOffset++;const d=Fd.getTokenType(a)===0,c=Fd.containsBalancedBrackets(a),h=o.getEndOffset(this.lineTokenOffset);if(c&&d&&this.lineCharOffset<h){const u=o.getLanguageId(this.lineTokenOffset),m=this.line.substring(this.lineCharOffset,h),p=this.bracketTokens.getSingleLanguageBracketTokens(u),g=p.regExpGlobal;if(g){g.lastIndex=0;const f=g.exec(m);f&&(l=p.getToken(f[0]),l&&(this.lineCharOffset+=f.index))}}if(i+=h-this.lineCharOffset,l)if(e!==this.lineIdx||t!==this.lineCharOffset){this.peekedToken=l;break}else return this.lineCharOffset+=l.length,l;else this.lineTokenOffset++,this.lineCharOffset=h}else if(this.lineIdx===this.textBufferLineCount-1||(this.lineIdx++,this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.lineTokenOffset=0,this.line=this.lineTokens.getLineContent(),this.lineCharOffset=0,i+=33,i>1e3))break;if(i>1500)break}const n=Pit(e,t,this.lineIdx,this.lineCharOffset);return new SU(n,0,-1,sc.getEmpty(),new HZ(n))}}class ont{constructor(e,t){this.text=e,this._offset=Ea,this.idx=0;const i=t.getRegExpStr(),n=i?new RegExp(i+`|
- `,"gi"):null,o=[];let r,l=0,a=0,d=0,c=0;const h=[];for(let p=0;p<60;p++)h.push(new SU(qo(0,p),0,-1,sc.getEmpty(),new HZ(qo(0,p))));const u=[];for(let p=0;p<60;p++)u.push(new SU(qo(1,p),0,-1,sc.getEmpty(),new HZ(qo(1,p))));if(n)for(n.lastIndex=0;(r=n.exec(e))!==null;){const p=r.index,g=r[0];if(g===`
- `)l++,a=p+1;else{if(d!==p){let f;if(c===l){const b=p-d;if(b<h.length)f=h[b];else{const U=qo(0,b);f=new SU(U,0,-1,sc.getEmpty(),new HZ(U))}}else{const b=l-c,U=p-a;if(b===1&&U<u.length)f=u[U];else{const S=qo(b,U);f=new SU(S,0,-1,sc.getEmpty(),new HZ(S))}}o.push(f)}o.push(t.getToken(g)),d=p+g.length,c=l}}const m=e.length;if(d!==m){const p=c===l?qo(0,m-d):qo(l-c,m-a);o.push(new SU(p,0,-1,sc.getEmpty(),new HZ(p)))}this.length=qo(l,m-a),this.tokens=o}get offset(){return this._offset}read(){return this.tokens[this.idx++]||null}peek(){return this.tokens[this.idx]||null}skip(e){throw new kje}}class Joe{static createFromLanguage(e,t){function i(o){return t.getKey(`${o.languageId}:::${o.bracketText}`)}const n=new Map;for(const o of e.bracketsNew.openingBrackets){const r=qo(0,o.bracketText.length),l=i(o),a=sc.getEmpty().add(l,Ume);n.set(o.bracketText,new SU(r,1,l,a,HX.create(r,o,a)))}for(const o of e.bracketsNew.closingBrackets){const r=qo(0,o.bracketText.length);let l=sc.getEmpty();const a=o.getOpeningBrackets();for(const d of a)l=l.add(i(d),Ume);n.set(o.bracketText,new SU(r,2,i(a[0]),l,HX.create(r,o,l)))}return new Joe(n)}constructor(e){this.map=e,this.hasRegExp=!1,this._regExpGlobal=null}getRegExpStr(){if(this.isEmpty)return null;{const e=[...this.map.keys()];return e.sort(),e.reverse(),e.map(t=>rnt(t)).join("|")}}get regExpGlobal(){if(!this.hasRegExp){const e=this.getRegExpStr();this._regExpGlobal=e?new RegExp(e,"gi"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(e){return this.map.get(e.toLowerCase())}findClosingTokenText(e){for(const[t,i]of this.map)if(i.kind===2&&i.bracketIds.intersects(e))return t}get isEmpty(){return this.map.size===0}}function rnt(s){let e=nh(s);return/^[\w ]+/.test(s)&&(e=`\\b${e}`),/[\w ]+$/.test(s)&&(e=`${e}\\b`),e}class BRe{constructor(e,t){this.denseKeyProvider=e,this.getLanguageConfiguration=t,this.languageIdToBracketTokens=new Map}didLanguageChange(e){return this.languageIdToBracketTokens.has(e)}getSingleLanguageBracketTokens(e){let t=this.languageIdToBracketTokens.get(e);return t||(t=Joe.createFromLanguage(this.getLanguageConfiguration(e),this.denseKeyProvider),this.languageIdToBracketTokens.set(e,t)),t}}function lnt(s){if(s.length===0)return null;if(s.length===1)return s[0];let e=0;function t(){if(e>=s.length)return null;const r=e,l=s[r].listHeight;for(e++;e<s.length&&s[e].listHeight===l;)e++;return e-r>=2?LRe(r===0&&e===s.length?s:s.slice(r,e),!1):s[r]}let i=t(),n=t();if(!n)return i;for(let r=t();r;r=t())Fme(i,n)<=Fme(n,r)?(i=RP(i,n),n=r):n=RP(n,r);return RP(i,n)}function LRe(s,e=!1){if(s.length===0)return null;if(s.length===1)return s[0];let t=s.length;for(;t>3;){const i=t>>1;for(let n=0;n<i;n++){const o=n<<1;s[n]=Yg.create23(s[o],s[o+1],o+3===t?s[o+2]:null,e)}t=i}return Yg.create23(s[0],s[1],t>=3?s[2]:null,e)}function Fme(s,e){return Math.abs(s.listHeight-e.listHeight)}function RP(s,e){return s.listHeight===e.listHeight?Yg.create23(s,e,null,!1):s.listHeight>e.listHeight?ant(s,e):dnt(e,s)}function ant(s,e){s=s.toMutable();let t=s;const i=[];let n;for(;;){if(e.listHeight===t.listHeight){n=e;break}if(t.kind!==4)throw new Error("unexpected");i.push(t),t=t.makeLastElementMutable()}for(let o=i.length-1;o>=0;o--){const r=i[o];n?r.childrenLength>=3?n=Yg.create23(r.unappendChild(),n,null,!1):(r.appendChildOfSameHeight(n),n=void 0):r.handleChildrenChanged()}return n?Yg.create23(s,n,null,!1):s}function dnt(s,e){s=s.toMutable();let t=s;const i=[];for(;e.listHeight!==t.listHeight;){if(t.kind!==4)throw new Error("unexpected");i.push(t),t=t.makeFirstElementMutable()}let n=e;for(let o=i.length-1;o>=0;o--){const r=i[o];n?r.childrenLength>=3?n=Yg.create23(n,r.unprependChild(),null,!1):(r.prependChildOfSameHeight(n),n=void 0):r.handleChildrenChanged()}return n?Yg.create23(n,s,null,!1):s}class cnt{constructor(e){this.lastOffset=Ea,this.nextNodes=[e],this.offsets=[Ea],this.idxs=[]}readLongestNodeAt(e,t){if(I1(e,this.lastOffset))throw new Error("Invalid offset");for(this.lastOffset=e;;){const i=Aw(this.nextNodes);if(!i)return;const n=Aw(this.offsets);if(I1(e,n))return;if(I1(n,e))if(yo(n,i.length)<=e)this.nextNodeAfterCurrent();else{const o=VP(i);o!==-1?(this.nextNodes.push(i.getChild(o)),this.offsets.push(n),this.idxs.push(o)):this.nextNodeAfterCurrent()}else{if(t(i))return this.nextNodeAfterCurrent(),i;{const o=VP(i);if(o===-1){this.nextNodeAfterCurrent();return}else this.nextNodes.push(i.getChild(o)),this.offsets.push(n),this.idxs.push(o)}}}}nextNodeAfterCurrent(){for(;;){const e=Aw(this.offsets),t=Aw(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),this.idxs.length===0)break;const i=Aw(this.nextNodes),n=VP(i,this.idxs[this.idxs.length-1]);if(n!==-1){this.nextNodes.push(i.getChild(n)),this.offsets.push(yo(e,t.length)),this.idxs[this.idxs.length-1]=n;break}else this.idxs.pop()}}}function VP(s,e=-1){for(;;){if(e++,e>=s.childrenLength)return-1;if(s.getChild(e))return e}}function Aw(s){return s.length>0?s[s.length-1]:void 0}function X6(s,e,t,i){return new hnt(s,e,t,i).parseDocument()}class hnt{constructor(e,t,i,n){if(this.tokenizer=e,this.createImmutableLists=n,this._itemsConstructed=0,this._itemsFromCache=0,i&&n)throw new Error("Not supported");this.oldNodeReader=i?new cnt(i):void 0,this.positionMapper=new $it(t)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let e=this.parseList(sc.getEmpty(),0);return e||(e=Yg.getEmpty()),e}parseList(e,t){const i=[];for(;;){let o=this.tryReadChildFromCache(e);if(!o){const r=this.tokenizer.peek();if(!r||r.kind===2&&r.bracketIds.intersects(e))break;o=this.parseChild(e,t+1)}o.kind===4&&o.childrenLength===0||i.push(o)}return this.oldNodeReader?lnt(i):LRe(i,this.createImmutableLists)}tryReadChildFromCache(e){if(this.oldNodeReader){const t=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(t===null||!jX(t)){const i=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),n=>t!==null&&!I1(n.length,t)?!1:n.canBeReused(e));if(i)return this._itemsFromCache++,this.tokenizer.skip(i.length),i}}}parseChild(e,t){this._itemsConstructed++;const i=this.tokenizer.read();switch(i.kind){case 2:return new nnt(i.bracketIds,i.length);case 0:return i.astNode;case 1:{if(t>300)return new HZ(i.length);const n=e.merge(i.bracketIds),o=this.parseList(n,t+1),r=this.tokenizer.peek();return r&&r.kind===2&&(r.bracketId===i.bracketId||r.bracketIds.intersects(i.bracketIds))?(this.tokenizer.read(),AL.create(i.astNode,o,r.astNode)):AL.create(i.astNode,o,null)}default:throw new Error("unexpected")}}}function KX(s,e){if(s.length===0)return e;if(e.length===0)return s;const t=new zf(Ame(s)),i=Ame(e);i.push({modified:!1,lengthBefore:void 0,lengthAfter:void 0});let n=t.dequeue();function o(d){if(d===void 0){const h=t.takeWhile(u=>!0)||[];return n&&h.unshift(n),h}const c=[];for(;n&&!jX(d);){const[h,u]=n.splitAt(d);c.push(h),d=FL(h.lengthAfter,d),n=u??t.dequeue()}return jX(d)||c.push(new KU(!1,d,d)),c}const r=[];function l(d,c,h){if(r.length>0&&wRe(r[r.length-1].endOffset,d)){const u=r[r.length-1];r[r.length-1]=new Mf(u.startOffset,c,yo(u.newLength,h))}else r.push({startOffset:d,endOffset:c,newLength:h})}let a=Ea;for(const d of i){const c=o(d.lengthBefore);if(d.modified){const h=Kit(c,m=>m.lengthBefore),u=yo(a,h);l(a,u,d.lengthAfter),a=u}else for(const h of c){const u=a;a=yo(a,h.lengthBefore),h.modified&&l(u,a,h.lengthAfter)}}return r}class KU{constructor(e,t,i){this.modified=e,this.lengthBefore=t,this.lengthAfter=i}splitAt(e){const t=FL(e,this.lengthAfter);return wRe(t,Ea)?[this,void 0]:this.modified?[new KU(this.modified,this.lengthBefore,e),new KU(this.modified,Ea,t)]:[new KU(this.modified,e,e),new KU(this.modified,t,t)]}toString(){return`${this.modified?"M":"U"}:${Yh(this.lengthBefore)} -> ${Yh(this.lengthAfter)}`}}function Ame(s){const e=[];let t=Ea;for(const i of s){const n=FL(t,i.startOffset);jX(n)||e.push(new KU(!1,n,n));const o=FL(i.startOffset,i.endOffset);e.push(new KU(!0,o,i.newLength)),t=i.endOffset}return e}class unt extends be{didLanguageChange(e){return this.brackets.didLanguageChange(e)}constructor(e,t){if(super(),this.textModel=e,this.getLanguageConfiguration=t,this.didChangeEmitter=new fe,this.denseKeyProvider=new TRe,this.brackets=new BRe(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],e.tokenization.hasTokens)e.tokenization.backgroundTokenizationState===2?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const i=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),n=new ont(this.textModel.getValue(),i);this.initialAstWithoutTokens=X6(n,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(this.textModel.tokenization.backgroundTokenizationState===2){const e=this.initialAstWithoutTokens===void 0;this.initialAstWithoutTokens=void 0,e||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:e}){const t=e.map(i=>new Mf(qo(i.fromLineNumber-1,0),qo(i.toLineNumber,0),qo(i.toLineNumber-i.fromLineNumber+1,0)));this.handleEdits(t,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(e){const t=Mf.fromModelContentChanges(e.changes);this.handleEdits(t,!1)}handleEdits(e,t){const i=KX(this.queuedTextEdits,e);this.queuedTextEdits=i,this.initialAstWithoutTokens&&!t&&(this.queuedTextEditsForInitialAstWithoutTokens=KX(this.queuedTextEditsForInitialAstWithoutTokens,e))}flushQueue(){this.queuedTextEdits.length>0&&(this.astWithTokens=this.parseDocumentFromTextBuffer(this.queuedTextEdits,this.astWithTokens,!1),this.queuedTextEdits=[]),this.queuedTextEditsForInitialAstWithoutTokens.length>0&&(this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(this.queuedTextEditsForInitialAstWithoutTokens,this.initialAstWithoutTokens,!1)),this.queuedTextEditsForInitialAstWithoutTokens=[])}parseDocumentFromTextBuffer(e,t,i){const n=t,o=new CRe(this.textModel,this.brackets);return X6(o,e,n,i)}getBracketsInRange(e,t){this.flushQueue();const i=qo(e.startLineNumber-1,e.startColumn-1),n=qo(e.endLineNumber-1,e.endColumn-1);return new vS(o=>{const r=this.initialAstWithoutTokens||this.astWithTokens;Y6(r,Ea,r.length,i,n,o,0,0,new Map,t)})}getBracketPairsInRange(e,t){this.flushQueue();const i=yW(e.getStartPosition()),n=yW(e.getEndPosition());return new vS(o=>{const r=this.initialAstWithoutTokens||this.astWithTokens,l=new mnt(o,t,this.textModel);_6(r,Ea,r.length,i,n,l,0,new Map)})}getFirstBracketAfter(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return kRe(t,Ea,t.length,yW(e))}getFirstBracketBefore(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return vRe(t,Ea,t.length,yW(e))}}function vRe(s,e,t,i){if(s.kind===4||s.kind===2){const n=[];for(const o of s.children)t=yo(e,o.length),n.push({nodeOffsetStart:e,nodeOffsetEnd:t}),e=t;for(let o=n.length-1;o>=0;o--){const{nodeOffsetStart:r,nodeOffsetEnd:l}=n[o];if(I1(r,i)){const a=vRe(s.children[o],r,l,i);if(a)return a}}return null}else{if(s.kind===3)return null;if(s.kind===1){const n=GS(e,t);return{bracketInfo:s.bracketInfo,range:n}}}return null}function kRe(s,e,t,i){if(s.kind===4||s.kind===2){for(const n of s.children){if(t=yo(e,n.length),I1(i,t)){const o=kRe(n,e,t,i);if(o)return o}e=t}return null}else{if(s.kind===3)return null;if(s.kind===1){const n=GS(e,t);return{bracketInfo:s.bracketInfo,range:n}}}return null}function Y6(s,e,t,i,n,o,r,l,a,d,c=!1){if(r>200)return!0;e:for(;;)switch(s.kind){case 4:{const h=s.childrenLength;for(let u=0;u<h;u++){const m=s.getChild(u);if(m){if(t=yo(e,m.length),E1(e,n)&&CT(t,i)){if(CT(t,n)){s=m;continue e}if(!Y6(m,e,t,i,n,o,r,0,a,d))return!1}e=t}}return!0}case 2:{const h=!d||!s.closingBracket||s.closingBracket.bracketInfo.closesColorized(s.openingBracket.bracketInfo);let u=0;if(a){let p=a.get(s.openingBracket.text);p===void 0&&(p=0),u=p,h&&(p++,a.set(s.openingBracket.text,p))}const m=s.childrenLength;for(let p=0;p<m;p++){const g=s.getChild(p);if(g){if(t=yo(e,g.length),E1(e,n)&&CT(t,i)){if(CT(t,n)&&g.kind!==1){s=g,h?(r++,l=u+1):l=u;continue e}if((h||g.kind!==1||!s.closingBracket)&&!Y6(g,e,t,i,n,o,h?r+1:r,h?u+1:u,a,d,!s.closingBracket))return!1}e=t}}return a==null||a.set(s.openingBracket.text,u),!0}case 3:{const h=GS(e,t);return o(new bme(h,r-1,0,!0))}case 1:{const h=GS(e,t);return o(new bme(h,r-1,l-1,c))}case 0:return!0}}class mnt{constructor(e,t,i){this.push=e,this.includeMinIndentation=t,this.textModel=i}}function _6(s,e,t,i,n,o,r,l){var d;if(r>200)return!0;let a=!0;if(s.kind===2){let c=0;if(l){let m=l.get(s.openingBracket.text);m===void 0&&(m=0),c=m,m++,l.set(s.openingBracket.text,m)}const h=yo(e,s.openingBracket.length);let u=-1;if(o.includeMinIndentation&&(u=s.computeMinIndentation(e,o.textModel)),a=o.push(new jit(GS(e,t),GS(e,h),s.closingBracket?GS(yo(h,((d=s.child)==null?void 0:d.length)||Ea),t):void 0,r,c,s,u)),e=h,a&&s.child){const m=s.child;if(t=yo(e,m.length),E1(e,n)&&CT(t,i)&&(a=_6(m,e,t,i,n,o,r+1,l),!a))return!1}l==null||l.set(s.openingBracket.text,c)}else{let c=e;for(const h of s.children){const u=c;if(c=yo(c,h.length),E1(u,n)&&E1(i,c)&&(a=_6(h,u,c,i,n,o,r,l),!a))return!1}}return a}class pnt extends be{get canBuildAST(){return this.textModel.getValueLength()<=5e6}constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t,this.bracketPairsTree=this._register(new Lr),this.onDidChangeEmitter=new fe,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1}handleLanguageConfigurationServiceChange(e){var t;(!e.languageId||(t=this.bracketPairsTree.value)!=null&&t.object.didLanguageChange(e.languageId))&&(this.bracketPairsTree.clear(),this.updateBracketPairsTree())}handleDidChangeOptions(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(e){var t;(t=this.bracketPairsTree.value)==null||t.object.handleContentChanged(e)}handleDidChangeBackgroundTokenizationState(){var e;(e=this.bracketPairsTree.value)==null||e.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(e){var t;(t=this.bracketPairsTree.value)==null||t.object.handleDidChangeTokens(e)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const e=new De;this.bracketPairsTree.value=gnt(e.add(new unt(this.textModel,t=>this.languageConfigurationService.getLanguageConfiguration(t))),e),e.add(this.bracketPairsTree.value.object.onDidChange(t=>this.onDidChangeEmitter.fire(t))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)==null?void 0:t.object.getBracketPairsInRange(e,!1))||vS.empty}getBracketPairsInRangeWithMinIndentation(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)==null?void 0:t.object.getBracketPairsInRange(e,!0))||vS.empty}getBracketsInRange(e,t=!1){var i;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((i=this.bracketPairsTree.value)==null?void 0:i.object.getBracketsInRange(e,t))||vS.empty}findMatchingBracketUp(e,t,i){const n=this.textModel.validatePosition(t),o=this.textModel.getLanguageIdAtPosition(n.lineNumber,n.column);if(this.canBuildAST){const r=this.languageConfigurationService.getLanguageConfiguration(o).bracketsNew.getClosingBracketInfo(e);if(!r)return null;const l=this.getBracketPairsInRange(z.fromPositions(t,t)).findLast(a=>r.closes(a.openingBracketInfo));return l?l.openingBracketRange:null}else{const r=e.toLowerCase(),l=this.languageConfigurationService.getLanguageConfiguration(o).brackets;if(!l)return null;const a=l.textIsBracket[r];return a?cI(this._findMatchingBracketUp(a,n,WP(i))):null}}matchBracket(e,t){if(this.canBuildAST){const i=this.getBracketPairsInRange(z.fromPositions(e,e)).filter(n=>n.closingBracketRange!==void 0&&(n.openingBracketRange.containsPosition(e)||n.closingBracketRange.containsPosition(e))).findLastMaxBy(Ja(n=>n.openingBracketRange.containsPosition(e)?n.openingBracketRange:n.closingBracketRange,z.compareRangesUsingStarts));return i?[i.openingBracketRange,i.closingBracketRange]:null}else{const i=WP(t);return this._matchBracket(this.textModel.validatePosition(e),i)}}_establishBracketSearchOffsets(e,t,i,n){const o=t.getCount(),r=t.getLanguageId(n);let l=Math.max(0,e.column-1-i.maxBracketLength);for(let d=n-1;d>=0;d--){const c=t.getEndOffset(d);if(c<=l)break;if(Jp(t.getStandardTokenType(d))||t.getLanguageId(d)!==r){l=c;break}}let a=Math.min(t.getLineContent().length,e.column-1+i.maxBracketLength);for(let d=n+1;d<o;d++){const c=t.getStartOffset(d);if(c>=a)break;if(Jp(t.getStandardTokenType(d))||t.getLanguageId(d)!==r){a=c;break}}return{searchStartOffset:l,searchEndOffset:a}}_matchBracket(e,t){const i=e.lineNumber,n=this.textModel.tokenization.getLineTokens(i),o=this.textModel.getLineContent(i),r=n.findTokenIndexAtOffset(e.column-1);if(r<0)return null;const l=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId(r)).brackets;if(l&&!Jp(n.getStandardTokenType(r))){let{searchStartOffset:a,searchEndOffset:d}=this._establishBracketSearchOffsets(e,n,l,r),c=null;for(;;){const h=pu.findNextBracketInRange(l.forwardRegex,i,o,a,d);if(!h)break;if(h.startColumn<=e.column&&e.column<=h.endColumn){const u=o.substring(h.startColumn-1,h.endColumn-1).toLowerCase(),m=this._matchFoundBracket(h,l.textIsBracket[u],l.textIsOpenBracket[u],t);if(m){if(m instanceof tf)return null;c=m}}a=h.endColumn-1}if(c)return c}if(r>0&&n.getStartOffset(r)===e.column-1){const a=r-1,d=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId(a)).brackets;if(d&&!Jp(n.getStandardTokenType(a))){const{searchStartOffset:c,searchEndOffset:h}=this._establishBracketSearchOffsets(e,n,d,a),u=pu.findPrevBracketInRange(d.reversedRegex,i,o,c,h);if(u&&u.startColumn<=e.column&&e.column<=u.endColumn){const m=o.substring(u.startColumn-1,u.endColumn-1).toLowerCase(),p=this._matchFoundBracket(u,d.textIsBracket[m],d.textIsOpenBracket[m],t);if(p)return p instanceof tf?null:p}}}return null}_matchFoundBracket(e,t,i,n){if(!t)return null;const o=i?this._findMatchingBracketDown(t,e.getEndPosition(),n):this._findMatchingBracketUp(t,e.getStartPosition(),n);return o?o instanceof tf?o:[e,o]:null}_findMatchingBracketUp(e,t,i){const n=e.languageId,o=e.reversedRegex;let r=-1,l=0;const a=(d,c,h,u)=>{for(;;){if(i&&++l%100===0&&!i())return tf.INSTANCE;const m=pu.findPrevBracketInRange(o,d,c,h,u);if(!m)break;const p=c.substring(m.startColumn-1,m.endColumn-1).toLowerCase();if(e.isOpen(p)?r++:e.isClose(p)&&r--,r===0)return m;u=m.startColumn-1}return null};for(let d=t.lineNumber;d>=1;d--){const c=this.textModel.tokenization.getLineTokens(d),h=c.getCount(),u=this.textModel.getLineContent(d);let m=h-1,p=u.length,g=u.length;d===t.lineNumber&&(m=c.findTokenIndexAtOffset(t.column-1),p=t.column-1,g=t.column-1);let f=!0;for(;m>=0;m--){const b=c.getLanguageId(m)===n&&!Jp(c.getStandardTokenType(m));if(b)f?p=c.getStartOffset(m):(p=c.getStartOffset(m),g=c.getEndOffset(m));else if(f&&p!==g){const U=a(d,u,p,g);if(U)return U}f=b}if(f&&p!==g){const b=a(d,u,p,g);if(b)return b}}return null}_findMatchingBracketDown(e,t,i){const n=e.languageId,o=e.forwardRegex;let r=1,l=0;const a=(c,h,u,m)=>{for(;;){if(i&&++l%100===0&&!i())return tf.INSTANCE;const p=pu.findNextBracketInRange(o,c,h,u,m);if(!p)break;const g=h.substring(p.startColumn-1,p.endColumn-1).toLowerCase();if(e.isOpen(g)?r++:e.isClose(g)&&r--,r===0)return p;u=p.endColumn-1}return null},d=this.textModel.getLineCount();for(let c=t.lineNumber;c<=d;c++){const h=this.textModel.tokenization.getLineTokens(c),u=h.getCount(),m=this.textModel.getLineContent(c);let p=0,g=0,f=0;c===t.lineNumber&&(p=h.findTokenIndexAtOffset(t.column-1),g=t.column-1,f=t.column-1);let b=!0;for(;p<u;p++){const U=h.getLanguageId(p)===n&&!Jp(h.getStandardTokenType(p));if(U)b||(g=h.getStartOffset(p)),f=h.getEndOffset(p);else if(b&&g!==f){const S=a(c,m,g,f);if(S)return S}b=U}if(b&&g!==f){const U=a(c,m,g,f);if(U)return U}}return null}findPrevBracket(e){var r;const t=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((r=this.bracketPairsTree.value)==null?void 0:r.object.getFirstBracketBefore(t))||null;let i=null,n=null,o=null;for(let l=t.lineNumber;l>=1;l--){const a=this.textModel.tokenization.getLineTokens(l),d=a.getCount(),c=this.textModel.getLineContent(l);let h=d-1,u=c.length,m=c.length;if(l===t.lineNumber){h=a.findTokenIndexAtOffset(t.column-1),u=t.column-1,m=t.column-1;const g=a.getLanguageId(h);i!==g&&(i=g,n=this.languageConfigurationService.getLanguageConfiguration(i).brackets,o=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew)}let p=!0;for(;h>=0;h--){const g=a.getLanguageId(h);if(i!==g){if(n&&o&&p&&u!==m){const b=pu.findPrevBracketInRange(n.reversedRegex,l,c,u,m);if(b)return this._toFoundBracket(o,b);p=!1}i=g,n=this.languageConfigurationService.getLanguageConfiguration(i).brackets,o=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew}const f=!!n&&!Jp(a.getStandardTokenType(h));if(f)p?u=a.getStartOffset(h):(u=a.getStartOffset(h),m=a.getEndOffset(h));else if(o&&n&&p&&u!==m){const b=pu.findPrevBracketInRange(n.reversedRegex,l,c,u,m);if(b)return this._toFoundBracket(o,b)}p=f}if(o&&n&&p&&u!==m){const g=pu.findPrevBracketInRange(n.reversedRegex,l,c,u,m);if(g)return this._toFoundBracket(o,g)}}return null}findNextBracket(e){var l;const t=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((l=this.bracketPairsTree.value)==null?void 0:l.object.getFirstBracketAfter(t))||null;const i=this.textModel.getLineCount();let n=null,o=null,r=null;for(let a=t.lineNumber;a<=i;a++){const d=this.textModel.tokenization.getLineTokens(a),c=d.getCount(),h=this.textModel.getLineContent(a);let u=0,m=0,p=0;if(a===t.lineNumber){u=d.findTokenIndexAtOffset(t.column-1),m=t.column-1,p=t.column-1;const f=d.getLanguageId(u);n!==f&&(n=f,o=this.languageConfigurationService.getLanguageConfiguration(n).brackets,r=this.languageConfigurationService.getLanguageConfiguration(n).bracketsNew)}let g=!0;for(;u<c;u++){const f=d.getLanguageId(u);if(n!==f){if(r&&o&&g&&m!==p){const U=pu.findNextBracketInRange(o.forwardRegex,a,h,m,p);if(U)return this._toFoundBracket(r,U);g=!1}n=f,o=this.languageConfigurationService.getLanguageConfiguration(n).brackets,r=this.languageConfigurationService.getLanguageConfiguration(n).bracketsNew}const b=!!o&&!Jp(d.getStandardTokenType(u));if(b)g||(m=d.getStartOffset(u)),p=d.getEndOffset(u);else if(r&&o&&g&&m!==p){const U=pu.findNextBracketInRange(o.forwardRegex,a,h,m,p);if(U)return this._toFoundBracket(r,U)}g=b}if(r&&o&&g&&m!==p){const f=pu.findNextBracketInRange(o.forwardRegex,a,h,m,p);if(f)return this._toFoundBracket(r,f)}}return null}findEnclosingBrackets(e,t){const i=this.textModel.validatePosition(e);if(this.canBuildAST){const m=z.fromPositions(i),p=this.getBracketPairsInRange(z.fromPositions(i,i)).findLast(g=>g.closingBracketRange!==void 0&&g.range.strictContainsRange(m));return p?[p.openingBracketRange,p.closingBracketRange]:null}const n=WP(t),o=this.textModel.getLineCount(),r=new Map;let l=[];const a=(m,p)=>{if(!r.has(m)){const g=[];for(let f=0,b=p?p.brackets.length:0;f<b;f++)g[f]=0;r.set(m,g)}l=r.get(m)};let d=0;const c=(m,p,g,f,b)=>{for(;;){if(n&&++d%100===0&&!n())return tf.INSTANCE;const U=pu.findNextBracketInRange(m.forwardRegex,p,g,f,b);if(!U)break;const S=g.substring(U.startColumn-1,U.endColumn-1).toLowerCase(),Z=m.textIsBracket[S];if(Z&&(Z.isOpen(S)?l[Z.index]++:Z.isClose(S)&&l[Z.index]--,l[Z.index]===-1))return this._matchFoundBracket(U,Z,!1,n);f=U.endColumn-1}return null};let h=null,u=null;for(let m=i.lineNumber;m<=o;m++){const p=this.textModel.tokenization.getLineTokens(m),g=p.getCount(),f=this.textModel.getLineContent(m);let b=0,U=0,S=0;if(m===i.lineNumber){b=p.findTokenIndexAtOffset(i.column-1),U=i.column-1,S=i.column-1;const R=p.getLanguageId(b);h!==R&&(h=R,u=this.languageConfigurationService.getLanguageConfiguration(h).brackets,a(h,u))}let Z=!0;for(;b<g;b++){const R=p.getLanguageId(b);if(h!==R){if(u&&Z&&U!==S){const N=c(u,m,f,U,S);if(N)return cI(N);Z=!1}h=R,u=this.languageConfigurationService.getLanguageConfiguration(h).brackets,a(h,u)}const y=!!u&&!Jp(p.getStandardTokenType(b));if(y)Z||(U=p.getStartOffset(b)),S=p.getEndOffset(b);else if(u&&Z&&U!==S){const N=c(u,m,f,U,S);if(N)return cI(N)}Z=y}if(u&&Z&&U!==S){const R=c(u,m,f,U,S);if(R)return cI(R)}}return null}_toFoundBracket(e,t){if(!t)return null;let i=this.textModel.getValueInRange(t);i=i.toLowerCase();const n=e.getBracketInfo(i);return n?{range:t,bracketInfo:n}:null}}function gnt(s,e){return{object:s,dispose:()=>e==null?void 0:e.dispose()}}function WP(s){if(typeof s>"u")return()=>!0;{const e=Date.now();return()=>Date.now()-e<=s}}const E_=class E_{constructor(){this._searchCanceledBrand=void 0}};E_.INSTANCE=new E_;let tf=E_;function cI(s){return s instanceof tf?null:s}class fnt extends be{constructor(e){super(),this.textModel=e,this.colorProvider=new xRe,this.onDidChangeEmitter=new fe,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=e.getOptions().bracketPairColorizationOptions,this._register(e.bracketPairs.onDidChange(t=>{this.onDidChangeEmitter.fire()}))}handleDidChangeOptions(e){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(e,t,i,n){return n?[]:t===void 0?[]:this.colorizationOptions.enabled?this.textModel.bracketPairs.getBracketsInRange(e,!0).map(r=>({id:`bracket${r.range.toString()}-${r.nestingLevel}`,options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(r,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:r.range})).toArray():[]}getAllDecorations(e,t){return e===void 0?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new z(1,1,this.textModel.getLineCount(),1),e,t):[]}}class xRe{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(e,t){return e.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(t?e.nestingLevelOfEqualBracketType:e.nestingLevel)}getInlineClassNameOfLevel(e){return`bracket-highlighting-${e%30}`}}eu((s,e)=>{const t=[RRe,VRe,WRe,yRe,QRe,MRe],i=new xRe;e.addRule(`.monaco-editor .${i.unexpectedClosingBracketClassName} { color: ${s.getColor(Mit)}; }`);const n=t.map(o=>s.getColor(o)).filter(o=>!!o).filter(o=>!o.isTransparent());for(let o=0;o<30;o++){const r=n[o%n.length];e.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(o)} { color: ${r}; }`)}});function hI(s){return s.replace(/\n/g,"\\n").replace(/\r/g,"\\r")}class Nl{get oldLength(){return this.oldText.length}get oldEnd(){return this.oldPosition+this.oldText.length}get newLength(){return this.newText.length}get newEnd(){return this.newPosition+this.newText.length}constructor(e,t,i,n){this.oldPosition=e,this.oldText=t,this.newPosition=i,this.newText=n}toString(){return this.oldText.length===0?`(insert@${this.oldPosition} "${hI(this.newText)}")`:this.newText.length===0?`(delete@${this.oldPosition} "${hI(this.oldText)}")`:`(replace@${this.oldPosition} "${hI(this.oldText)}" with "${hI(this.newText)}")`}static _writeStringSize(e){return 4+2*e.length}static _writeString(e,t,i){const n=t.length;xm(e,n,i),i+=4;for(let o=0;o<n;o++)eKe(e,t.charCodeAt(o),i),i+=2;return i}static _readString(e,t){const i=km(e,t);return t+=4,iKe(e,t,i)}writeSize(){return 4+4+Nl._writeStringSize(this.oldText)+Nl._writeStringSize(this.newText)}write(e,t){return xm(e,this.oldPosition,t),t+=4,xm(e,this.newPosition,t),t+=4,t=Nl._writeString(e,this.oldText,t),t=Nl._writeString(e,this.newText,t),t}static read(e,t,i){const n=km(e,t);t+=4;const o=km(e,t);t+=4;const r=Nl._readString(e,t);t+=Nl._writeStringSize(r);const l=Nl._readString(e,t);return t+=Nl._writeStringSize(l),i.push(new Nl(n,r,o,l)),t}}function bnt(s,e){return s===null||s.length===0?e:new Op(s,e).compress()}class Op{constructor(e,t){this._prevEdits=e,this._currEdits=t,this._result=[],this._resultLen=0,this._prevLen=this._prevEdits.length,this._prevDeltaOffset=0,this._currLen=this._currEdits.length,this._currDeltaOffset=0}compress(){let e=0,t=0,i=this._getPrev(e),n=this._getCurr(t);for(;e<this._prevLen||t<this._currLen;){if(i===null){this._acceptCurr(n),n=this._getCurr(++t);continue}if(n===null){this._acceptPrev(i),i=this._getPrev(++e);continue}if(n.oldEnd<=i.newPosition){this._acceptCurr(n),n=this._getCurr(++t);continue}if(i.newEnd<=n.oldPosition){this._acceptPrev(i),i=this._getPrev(++e);continue}if(n.oldPosition<i.newPosition){const[d,c]=Op._splitCurr(n,i.newPosition-n.oldPosition);this._acceptCurr(d),n=c;continue}if(i.newPosition<n.oldPosition){const[d,c]=Op._splitPrev(i,n.oldPosition-i.newPosition);this._acceptPrev(d),i=c;continue}let l,a;if(n.oldEnd===i.newEnd)l=i,a=n,i=this._getPrev(++e),n=this._getCurr(++t);else if(n.oldEnd<i.newEnd){const[d,c]=Op._splitPrev(i,n.oldLength);l=d,a=n,i=c,n=this._getCurr(++t)}else{const[d,c]=Op._splitCurr(n,i.newLength);l=i,a=d,i=this._getPrev(++e),n=c}this._result[this._resultLen++]=new Nl(l.oldPosition,l.oldText,a.newPosition,a.newText),this._prevDeltaOffset+=l.newLength-l.oldLength,this._currDeltaOffset+=a.newLength-a.oldLength}const o=Op._merge(this._result);return Op._removeNoOps(o)}_acceptCurr(e){this._result[this._resultLen++]=Op._rebaseCurr(this._prevDeltaOffset,e),this._currDeltaOffset+=e.newLength-e.oldLength}_getCurr(e){return e<this._currLen?this._currEdits[e]:null}_acceptPrev(e){this._result[this._resultLen++]=Op._rebasePrev(this._currDeltaOffset,e),this._prevDeltaOffset+=e.newLength-e.oldLength}_getPrev(e){return e<this._prevLen?this._prevEdits[e]:null}static _rebaseCurr(e,t){return new Nl(t.oldPosition-e,t.oldText,t.newPosition,t.newText)}static _rebasePrev(e,t){return new Nl(t.oldPosition,t.oldText,t.newPosition+e,t.newText)}static _splitPrev(e,t){const i=e.newText.substr(0,t),n=e.newText.substr(t);return[new Nl(e.oldPosition,e.oldText,e.newPosition,i),new Nl(e.oldEnd,"",e.newPosition+t,n)]}static _splitCurr(e,t){const i=e.oldText.substr(0,t),n=e.oldText.substr(t);return[new Nl(e.oldPosition,i,e.newPosition,e.newText),new Nl(e.oldPosition+t,n,e.newEnd,"")]}static _merge(e){if(e.length===0)return e;const t=[];let i=0,n=e[0];for(let o=1;o<e.length;o++){const r=e[o];n.oldEnd===r.oldPosition?n=new Nl(n.oldPosition,n.oldText+r.oldText,n.newPosition,n.newText+r.newText):(t[i++]=n,n=r)}return t[i++]=n,t}static _removeNoOps(e){if(e.length===0)return e;const t=[];let i=0;for(let n=0;n<e.length;n++){const o=e[n];o.oldText!==o.newText&&(t[i++]=o)}return t}}function GR(s){return s.toString()}class Er{static create(e,t){const i=e.getAlternativeVersionId(),n=z6(e);return new Er(i,i,n,n,t,t,[])}constructor(e,t,i,n,o,r,l){this.beforeVersionId=e,this.afterVersionId=t,this.beforeEOL=i,this.afterEOL=n,this.beforeCursorState=o,this.afterCursorState=r,this.changes=l}append(e,t,i,n,o){t.length>0&&(this.changes=bnt(this.changes,t)),this.afterEOL=i,this.afterVersionId=n,this.afterCursorState=o}static _writeSelectionsSize(e){return 4+4*4*(e?e.length:0)}static _writeSelections(e,t,i){if(xm(e,t?t.length:0,i),i+=4,t)for(const n of t)xm(e,n.selectionStartLineNumber,i),i+=4,xm(e,n.selectionStartColumn,i),i+=4,xm(e,n.positionLineNumber,i),i+=4,xm(e,n.positionColumn,i),i+=4;return i}static _readSelections(e,t,i){const n=km(e,t);t+=4;for(let o=0;o<n;o++){const r=km(e,t);t+=4;const l=km(e,t);t+=4;const a=km(e,t);t+=4;const d=km(e,t);t+=4,i.push(new _t(r,l,a,d))}return t}serialize(){let e=10+Er._writeSelectionsSize(this.beforeCursorState)+Er._writeSelectionsSize(this.afterCursorState)+4;for(const n of this.changes)e+=n.writeSize();const t=new Uint8Array(e);let i=0;xm(t,this.beforeVersionId,i),i+=4,xm(t,this.afterVersionId,i),i+=4,Nhe(t,this.beforeEOL,i),i+=1,Nhe(t,this.afterEOL,i),i+=1,i=Er._writeSelections(t,this.beforeCursorState,i),i=Er._writeSelections(t,this.afterCursorState,i),xm(t,this.changes.length,i),i+=4;for(const n of this.changes)i=n.write(t,i);return t.buffer}static deserialize(e){const t=new Uint8Array(e);let i=0;const n=km(t,i);i+=4;const o=km(t,i);i+=4;const r=She(t,i);i+=1;const l=She(t,i);i+=1;const a=[];i=Er._readSelections(t,i,a);const d=[];i=Er._readSelections(t,i,d);const c=km(t,i);i+=4;const h=[];for(let u=0;u<c;u++)i=Nl.read(t,i,h);return new Er(n,o,r,l,a,d,h)}}class IRe{get type(){return 0}get resource(){return ni.isUri(this.model)?this.model:this.model.uri}constructor(e,t,i,n){this.label=e,this.code=t,this.model=i,this._data=Er.create(i,n)}toString(){return(this._data instanceof Er?this._data:Er.deserialize(this._data)).changes.map(t=>t.toString()).join(", ")}matchesResource(e){return(ni.isUri(this.model)?this.model:this.model.uri).toString()===e.toString()}setModel(e){this.model=e}canAppend(e){return this.model===e&&this._data instanceof Er}append(e,t,i,n,o){this._data instanceof Er&&this._data.append(e,t,i,n,o)}close(){this._data instanceof Er&&(this._data=this._data.serialize())}open(){this._data instanceof Er||(this._data=Er.deserialize(this._data))}undo(){if(ni.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof Er&&(this._data=this._data.serialize());const e=Er.deserialize(this._data);this.model._applyUndo(e.changes,e.beforeEOL,e.beforeVersionId,e.beforeCursorState)}redo(){if(ni.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof Er&&(this._data=this._data.serialize());const e=Er.deserialize(this._data);this.model._applyRedo(e.changes,e.afterEOL,e.afterVersionId,e.afterCursorState)}heapSize(){return this._data instanceof Er&&(this._data=this._data.serialize()),this._data.byteLength+168}}class Unt{get resources(){return this._editStackElementsArr.map(e=>e.resource)}constructor(e,t,i){this.label=e,this.code=t,this.type=1,this._isOpen=!0,this._editStackElementsArr=i.slice(0),this._editStackElementsMap=new Map;for(const n of this._editStackElementsArr){const o=GR(n.resource);this._editStackElementsMap.set(o,n)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(e){const t=GR(e);return this._editStackElementsMap.has(t)}setModel(e){const t=GR(ni.isUri(e)?e:e.uri);this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).setModel(e)}canAppend(e){if(!this._isOpen)return!1;const t=GR(e.uri);return this._editStackElementsMap.has(t)?this._editStackElementsMap.get(t).canAppend(e):!1}append(e,t,i,n,o){const r=GR(e.uri);this._editStackElementsMap.get(r).append(e,t,i,n,o)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const e of this._editStackElementsArr)e.undo()}redo(){for(const e of this._editStackElementsArr)e.redo()}heapSize(e){const t=GR(e);return this._editStackElementsMap.has(t)?this._editStackElementsMap.get(t).heapSize():0}split(){return this._editStackElementsArr}toString(){const e=[];for(const t of this._editStackElementsArr)e.push(`${Hh(t.resource)}: ${t}`);return`{${e.join(", ")}}`}}function z6(s){return s.getEOL()===`
- `?0:1}function nf(s){return s?s instanceof IRe||s instanceof Unt:!1}class Xoe{constructor(e,t){this._model=e,this._undoRedoService=t}pushStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);nf(e)&&e.close()}popStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);nf(e)&&e.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(e,t){const i=this._undoRedoService.getLastElement(this._model.uri);if(nf(i)&&i.canAppend(this._model))return i;const n=new IRe(F("edit","Typing"),"undoredo.textBufferEdit",this._model,e);return this._undoRedoService.pushElement(n,t),n}pushEOL(e){const t=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(e),t.append(this._model,[],z6(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(e,t,i,n){const o=this._getOrCreateEditStackElement(e,n),r=this._model.applyEdits(t,!0),l=Xoe._computeCursorState(i,r),a=r.map((d,c)=>({index:c,textChange:d.textChange}));return a.sort((d,c)=>d.textChange.oldPosition===c.textChange.oldPosition?d.index-c.index:d.textChange.oldPosition-c.textChange.oldPosition),o.append(this._model,a.map(d=>d.textChange),z6(this._model),this._model.getAlternativeVersionId(),l),l}static _computeCursorState(e,t){try{return e?e(t):null}catch(i){return wi(i),null}}}class ERe extends be{constructor(){super(...arguments),this._isDisposed=!1}dispose(){super.dispose(),this._isDisposed=!0}assertNotDisposed(){if(this._isDisposed)throw new Error("TextModelPart is disposed!")}}function b9(s,e){let t=0,i=0;const n=s.length;for(;i<n;){const o=s.charCodeAt(i);if(o===32)t++;else if(o===9)t=t-t%e+e;else break;i++}return i===n?-1:t}var JS;(function(s){s[s.Disabled=0]="Disabled",s[s.EnabledForActive=1]="EnabledForActive",s[s.Enabled=2]="Enabled"})(JS||(JS={}));class ZS{constructor(e,t,i,n,o,r){if(this.visibleColumn=e,this.column=t,this.className=i,this.horizontalLine=n,this.forWrappedLinesAfterColumn=o,this.forWrappedLinesBeforeOrAtColumn=r,e!==-1==(t!==-1))throw new Error}}class i2{constructor(e,t){this.top=e,this.endColumn=t}}class Fnt extends ERe{constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t}getLanguageConfiguration(e){return this.languageConfigurationService.getLanguageConfiguration(e)}_computeIndentLevel(e){return b9(this.textModel.getLineContent(e+1),this.textModel.getOptions().tabSize)}getActiveIndentGuide(e,t,i){this.assertNotDisposed();const n=this.textModel.getLineCount();if(e<1||e>n)throw new _n("Illegal value for lineNumber");const o=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=!!(o&&o.offSide);let l=-2,a=-1,d=-2,c=-1;const h=N=>{if(l!==-1&&(l===-2||l>N-1)){l=-1,a=-1;for(let w=N-2;w>=0;w--){const Q=this._computeIndentLevel(w);if(Q>=0){l=w,a=Q;break}}}if(d===-2){d=-1,c=-1;for(let w=N;w<n;w++){const Q=this._computeIndentLevel(w);if(Q>=0){d=w,c=Q;break}}}};let u=-2,m=-1,p=-2,g=-1;const f=N=>{if(u===-2){u=-1,m=-1;for(let w=N-2;w>=0;w--){const Q=this._computeIndentLevel(w);if(Q>=0){u=w,m=Q;break}}}if(p!==-1&&(p===-2||p<N-1)){p=-1,g=-1;for(let w=N;w<n;w++){const Q=this._computeIndentLevel(w);if(Q>=0){p=w,g=Q;break}}}};let b=0,U=!0,S=0,Z=!0,R=0,y=0;for(let N=0;U||Z;N++){const w=e-N,Q=e+N;N>1&&(w<1||w<t)&&(U=!1),N>1&&(Q>n||Q>i)&&(Z=!1),N>5e4&&(U=!1,Z=!1);let C=-1;if(U&&w>=1){const Y=this._computeIndentLevel(w-1);Y>=0?(d=w-1,c=Y,C=Math.ceil(Y/this.textModel.getOptions().indentSize)):(h(w),C=this._getIndentLevelForWhitespaceLine(r,a,c))}let v=-1;if(Z&&Q<=n){const Y=this._computeIndentLevel(Q-1);Y>=0?(u=Q-1,m=Y,v=Math.ceil(Y/this.textModel.getOptions().indentSize)):(f(Q),v=this._getIndentLevelForWhitespaceLine(r,m,g))}if(N===0){y=C;continue}if(N===1){if(Q<=n&&v>=0&&y+1===v){U=!1,b=Q,S=Q,R=v;continue}if(w>=1&&C>=0&&C-1===y){Z=!1,b=w,S=w,R=C;continue}if(b=e,S=e,R=y,R===0)return{startLineNumber:b,endLineNumber:S,indent:R}}U&&(C>=R?b=w:U=!1),Z&&(v>=R?S=Q:Z=!1)}return{startLineNumber:b,endLineNumber:S,indent:R}}getLinesBracketGuides(e,t,i,n){var h;const o=[];for(let u=e;u<=t;u++)o.push([]);const r=!0,l=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new z(e,1,t,this.textModel.getLineMaxColumn(t))).toArray();let a;if(i&&l.length>0){const u=(e<=i.lineNumber&&i.lineNumber<=t?l:this.textModel.bracketPairs.getBracketPairsInRange(z.fromPositions(i)).toArray()).filter(m=>z.strictContainsPosition(m.range,i));a=(h=qB(u,m=>r))==null?void 0:h.range}const d=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,c=new DRe;for(const u of l){if(!u.closingBracketRange)continue;const m=a&&u.range.equalsRange(a);if(!m&&!n.includeInactive)continue;const p=c.getInlineClassName(u.nestingLevel,u.nestingLevelOfEqualBracketType,d)+(n.highlightActive&&m?" "+c.activeClassName:""),g=u.openingBracketRange.getStartPosition(),f=u.closingBracketRange.getStartPosition(),b=n.horizontalGuides===JS.Enabled||n.horizontalGuides===JS.EnabledForActive&&m;if(u.range.startLineNumber===u.range.endLineNumber){b&&o[u.range.startLineNumber-e].push(new ZS(-1,u.openingBracketRange.getEndPosition().column,p,new i2(!1,f.column),-1,-1));continue}const U=this.getVisibleColumnFromPosition(f),S=this.getVisibleColumnFromPosition(u.openingBracketRange.getStartPosition()),Z=Math.min(S,U,u.minVisibleColumnIndentation+1);let R=!1;Ua(this.textModel.getLineContent(u.closingBracketRange.startLineNumber))<u.closingBracketRange.startColumn-1&&(R=!0);const w=Math.max(g.lineNumber,e),Q=Math.min(f.lineNumber,t),C=R?1:0;for(let v=w;v<Q+C;v++)o[v-e].push(new ZS(Z,-1,p,null,v===g.lineNumber?g.column:-1,v===f.lineNumber?f.column:-1));b&&(g.lineNumber>=e&&S>Z&&o[g.lineNumber-e].push(new ZS(Z,-1,p,new i2(!1,g.column),-1,-1)),f.lineNumber<=t&&U>Z&&o[f.lineNumber-e].push(new ZS(Z,-1,p,new i2(!R,f.column),-1,-1)))}for(const u of o)u.sort((m,p)=>m.visibleColumn-p.visibleColumn);return o}getVisibleColumnFromPosition(e){return Zr.visibleColumnFromColumn(this.textModel.getLineContent(e.lineNumber),e.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(e,t){this.assertNotDisposed();const i=this.textModel.getLineCount();if(e<1||e>i)throw new Error("Illegal value for startLineNumber");if(t<1||t>i)throw new Error("Illegal value for endLineNumber");const n=this.textModel.getOptions(),o=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=!!(o&&o.offSide),l=new Array(t-e+1);let a=-2,d=-1,c=-2,h=-1;for(let u=e;u<=t;u++){const m=u-e,p=this._computeIndentLevel(u-1);if(p>=0){a=u-1,d=p,l[m]=Math.ceil(p/n.indentSize);continue}if(a===-2){a=-1,d=-1;for(let g=u-2;g>=0;g--){const f=this._computeIndentLevel(g);if(f>=0){a=g,d=f;break}}}if(c!==-1&&(c===-2||c<u-1)){c=-1,h=-1;for(let g=u;g<i;g++){const f=this._computeIndentLevel(g);if(f>=0){c=g,h=f;break}}}l[m]=this._getIndentLevelForWhitespaceLine(r,d,h)}return l}_getIndentLevelForWhitespaceLine(e,t,i){const n=this.textModel.getOptions();return t===-1||i===-1?0:t<i?1+Math.floor(t/n.indentSize):t===i||e?Math.ceil(i/n.indentSize):1+Math.floor(i/n.indentSize)}}class DRe{constructor(){this.activeClassName="indent-active"}getInlineClassName(e,t,i){return this.getInlineClassNameOfLevel(i?t:e)}getInlineClassNameOfLevel(e){return`bracket-indent-guide lvl-${e%30}`}}class Ant{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function Znt(s,e,t,i,n){n.spacesDiff=0,n.looksLikeAlignment=!1;let o;for(o=0;o<e&&o<i;o++){const u=s.charCodeAt(o),m=t.charCodeAt(o);if(u!==m)break}let r=0,l=0;for(let u=o;u<e;u++)s.charCodeAt(u)===32?r++:l++;let a=0,d=0;for(let u=o;u<i;u++)t.charCodeAt(u)===32?a++:d++;if(r>0&&l>0||a>0&&d>0)return;const c=Math.abs(l-d),h=Math.abs(r-a);if(c===0){n.spacesDiff=h,h>0&&0<=a-1&&a-1<s.length&&a<t.length&&t.charCodeAt(a)!==32&&s.charCodeAt(a-1)===32&&s.charCodeAt(s.length-1)===44&&(n.looksLikeAlignment=!0);return}if(h%c===0){n.spacesDiff=h/c;return}}function Zme(s,e,t){const i=Math.min(s.getLineCount(),1e4);let n=0,o=0,r="",l=0;const a=[2,4,6,8,3,5,7],d=8,c=[0,0,0,0,0,0,0,0,0],h=new Ant;for(let p=1;p<=i;p++){const g=s.getLineLength(p),f=s.getLineContent(p),b=g<=65536;let U=!1,S=0,Z=0,R=0;for(let N=0,w=g;N<w;N++){const Q=b?f.charCodeAt(N):s.getLineCharCode(p,N);if(Q===9)R++;else if(Q===32)Z++;else{U=!0,S=N;break}}if(!U||(R>0?n++:Z>1&&o++,Znt(r,l,f,S,h),h.looksLikeAlignment&&!(t&&e===h.spacesDiff)))continue;const y=h.spacesDiff;y<=d&&c[y]++,r=f,l=S}let u=t;n!==o&&(u=n<o);let m=e;if(u){let p=u?0:.1*i;a.forEach(g=>{const f=c[g];f>p&&(p=f,m=g)}),m===4&&c[4]>0&&c[2]>0&&c[2]>=c[4]/2&&(m=2)}return{insertSpaces:u,tabSize:m}}function ad(s){return(s.metadata&1)>>>0}function Hs(s,e){s.metadata=s.metadata&254|e<<0}function Ml(s){return(s.metadata&2)>>>1===1}function Ys(s,e){s.metadata=s.metadata&253|(e?1:0)<<1}function GRe(s){return(s.metadata&4)>>>2===1}function Sme(s,e){s.metadata=s.metadata&251|(e?1:0)<<2}function JRe(s){return(s.metadata&64)>>>6===1}function Nme(s,e){s.metadata=s.metadata&191|(e?1:0)<<6}function Snt(s){return(s.metadata&24)>>>3}function Rme(s,e){s.metadata=s.metadata&231|e<<3}function Nnt(s){return(s.metadata&32)>>>5===1}function Vme(s,e){s.metadata=s.metadata&223|(e?1:0)<<5}class XRe{constructor(e,t,i){this.metadata=0,this.parent=this,this.left=this,this.right=this,Hs(this,1),this.start=t,this.end=i,this.delta=0,this.maxEnd=i,this.id=e,this.ownerId=0,this.options=null,Sme(this,!1),Nme(this,!1),Rme(this,1),Vme(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=null,Ys(this,!1)}reset(e,t,i,n){this.start=t,this.end=i,this.maxEnd=i,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=n}setOptions(e){this.options=e;const t=this.options.className;Sme(this,t==="squiggly-error"||t==="squiggly-warning"||t==="squiggly-info"),Nme(this,this.options.glyphMarginClassName!==null),Rme(this,this.options.stickiness),Vme(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(e,t,i){this.cachedVersionId!==i&&(this.range=null),this.cachedVersionId=i,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t}detach(){this.parent=null,this.left=null,this.right=null}}const cn=new XRe(null,0,0);cn.parent=cn;cn.left=cn;cn.right=cn;Hs(cn,0);class yP{constructor(){this.root=cn,this.requestNormalizeDelta=!1}intervalSearch(e,t,i,n,o,r){return this.root===cn?[]:Tnt(this,e,t,i,n,o,r)}search(e,t,i,n){return this.root===cn?[]:wnt(this,e,t,i,n)}collectNodesFromOwner(e){return Qnt(this,e)}collectNodesPostOrder(){return Mnt(this)}insert(e){Wme(this,e),this._normalizeDeltaIfNecessary()}delete(e){yme(this,e),this._normalizeDeltaIfNecessary()}resolveNode(e,t){const i=e;let n=0;for(;e!==this.root;)e===e.parent.right&&(n+=e.parent.delta),e=e.parent;const o=i.start+n,r=i.end+n;i.setCachedOffsets(o,r,t)}acceptReplace(e,t,i,n){const o=Wnt(this,e,e+t);for(let r=0,l=o.length;r<l;r++){const a=o[r];yme(this,a)}this._normalizeDeltaIfNecessary(),ynt(this,e,e+t,i),this._normalizeDeltaIfNecessary();for(let r=0,l=o.length;r<l;r++){const a=o[r];a.start=a.cachedAbsoluteStart,a.end=a.cachedAbsoluteEnd,Vnt(a,e,e+t,i,n),a.maxEnd=a.end,Wme(this,a)}this._normalizeDeltaIfNecessary()}_normalizeDeltaIfNecessary(){this.requestNormalizeDelta&&(this.requestNormalizeDelta=!1,Rnt(this))}}function Rnt(s){let e=s.root,t=0;for(;e!==cn;){if(e.left!==cn&&!Ml(e.left)){e=e.left;continue}if(e.right!==cn&&!Ml(e.right)){t+=e.delta,e=e.right;continue}e.start=t+e.start,e.end=t+e.end,e.delta=0,GF(e),Ys(e,!0),Ys(e.left,!1),Ys(e.right,!1),e===e.parent.right&&(t-=e.parent.delta),e=e.parent}Ys(s.root,!1)}function JR(s,e,t,i){return s<t?!0:s>t||i===1?!1:i===2?!0:e}function Vnt(s,e,t,i,n){const o=Snt(s),r=o===0||o===2,l=o===1||o===2,a=t-e,d=i,c=Math.min(a,d),h=s.start;let u=!1;const m=s.end;let p=!1;e<=h&&m<=t&&Nnt(s)&&(s.start=e,u=!0,s.end=e,p=!0);{const f=n?1:a>0?2:0;!u&&JR(h,r,e,f)&&(u=!0),!p&&JR(m,l,e,f)&&(p=!0)}if(c>0&&!n){const f=a>d?2:0;!u&&JR(h,r,e+c,f)&&(u=!0),!p&&JR(m,l,e+c,f)&&(p=!0)}{const f=n?1:0;!u&&JR(h,r,t,f)&&(s.start=e+d,u=!0),!p&&JR(m,l,t,f)&&(s.end=e+d,p=!0)}const g=d-a;u||(s.start=Math.max(0,h+g)),p||(s.end=Math.max(0,m+g)),s.start>s.end&&(s.end=s.start)}function Wnt(s,e,t){let i=s.root,n=0,o=0,r=0,l=0;const a=[];let d=0;for(;i!==cn;){if(Ml(i)){Ys(i.left,!1),Ys(i.right,!1),i===i.parent.right&&(n-=i.parent.delta),i=i.parent;continue}if(!Ml(i.left)){if(o=n+i.maxEnd,o<e){Ys(i,!0);continue}if(i.left!==cn){i=i.left;continue}}if(r=n+i.start,r>t){Ys(i,!0);continue}if(l=n+i.end,l>=e&&(i.setCachedOffsets(r,l,0),a[d++]=i),Ys(i,!0),i.right!==cn&&!Ml(i.right)){n+=i.delta,i=i.right;continue}}return Ys(s.root,!1),a}function ynt(s,e,t,i){let n=s.root,o=0,r=0,l=0;const a=i-(t-e);for(;n!==cn;){if(Ml(n)){Ys(n.left,!1),Ys(n.right,!1),n===n.parent.right&&(o-=n.parent.delta),GF(n),n=n.parent;continue}if(!Ml(n.left)){if(r=o+n.maxEnd,r<e){Ys(n,!0);continue}if(n.left!==cn){n=n.left;continue}}if(l=o+n.start,l>t){n.start+=a,n.end+=a,n.delta+=a,(n.delta<-1073741824||n.delta>1073741824)&&(s.requestNormalizeDelta=!0),Ys(n,!0);continue}if(Ys(n,!0),n.right!==cn&&!Ml(n.right)){o+=n.delta,n=n.right;continue}}Ys(s.root,!1)}function Qnt(s,e){let t=s.root;const i=[];let n=0;for(;t!==cn;){if(Ml(t)){Ys(t.left,!1),Ys(t.right,!1),t=t.parent;continue}if(t.left!==cn&&!Ml(t.left)){t=t.left;continue}if(t.ownerId===e&&(i[n++]=t),Ys(t,!0),t.right!==cn&&!Ml(t.right)){t=t.right;continue}}return Ys(s.root,!1),i}function Mnt(s){let e=s.root;const t=[];let i=0;for(;e!==cn;){if(Ml(e)){Ys(e.left,!1),Ys(e.right,!1),e=e.parent;continue}if(e.left!==cn&&!Ml(e.left)){e=e.left;continue}if(e.right!==cn&&!Ml(e.right)){e=e.right;continue}t[i++]=e,Ys(e,!0)}return Ys(s.root,!1),t}function wnt(s,e,t,i,n){let o=s.root,r=0,l=0,a=0;const d=[];let c=0;for(;o!==cn;){if(Ml(o)){Ys(o.left,!1),Ys(o.right,!1),o===o.parent.right&&(r-=o.parent.delta),o=o.parent;continue}if(o.left!==cn&&!Ml(o.left)){o=o.left;continue}l=r+o.start,a=r+o.end,o.setCachedOffsets(l,a,i);let h=!0;if(e&&o.ownerId&&o.ownerId!==e&&(h=!1),t&&GRe(o)&&(h=!1),n&&!JRe(o)&&(h=!1),h&&(d[c++]=o),Ys(o,!0),o.right!==cn&&!Ml(o.right)){r+=o.delta,o=o.right;continue}}return Ys(s.root,!1),d}function Tnt(s,e,t,i,n,o,r){let l=s.root,a=0,d=0,c=0,h=0;const u=[];let m=0;for(;l!==cn;){if(Ml(l)){Ys(l.left,!1),Ys(l.right,!1),l===l.parent.right&&(a-=l.parent.delta),l=l.parent;continue}if(!Ml(l.left)){if(d=a+l.maxEnd,d<e){Ys(l,!0);continue}if(l.left!==cn){l=l.left;continue}}if(c=a+l.start,c>t){Ys(l,!0);continue}if(h=a+l.end,h>=e){l.setCachedOffsets(c,h,o);let p=!0;i&&l.ownerId&&l.ownerId!==i&&(p=!1),n&&GRe(l)&&(p=!1),r&&!JRe(l)&&(p=!1),p&&(u[m++]=l)}if(Ys(l,!0),l.right!==cn&&!Ml(l.right)){a+=l.delta,l=l.right;continue}}return Ys(s.root,!1),u}function Wme(s,e){if(s.root===cn)return e.parent=cn,e.left=cn,e.right=cn,Hs(e,0),s.root=e,s.root;Cnt(s,e),Gb(e.parent);let t=e;for(;t!==s.root&&ad(t.parent)===1;)if(t.parent===t.parent.parent.left){const i=t.parent.parent.right;ad(i)===1?(Hs(t.parent,0),Hs(i,0),Hs(t.parent.parent,1),t=t.parent.parent):(t===t.parent.right&&(t=t.parent,n2(s,t)),Hs(t.parent,0),Hs(t.parent.parent,1),s2(s,t.parent.parent))}else{const i=t.parent.parent.left;ad(i)===1?(Hs(t.parent,0),Hs(i,0),Hs(t.parent.parent,1),t=t.parent.parent):(t===t.parent.left&&(t=t.parent,s2(s,t)),Hs(t.parent,0),Hs(t.parent.parent,1),n2(s,t.parent.parent))}return Hs(s.root,0),e}function Cnt(s,e){let t=0,i=s.root;const n=e.start,o=e.end;for(;;)if(Lnt(n,o,i.start+t,i.end+t)<0)if(i.left===cn){e.start-=t,e.end-=t,e.maxEnd-=t,i.left=e;break}else i=i.left;else if(i.right===cn){e.start-=t+i.delta,e.end-=t+i.delta,e.maxEnd-=t+i.delta,i.right=e;break}else t+=i.delta,i=i.right;e.parent=i,e.left=cn,e.right=cn,Hs(e,1)}function yme(s,e){let t,i;if(e.left===cn?(t=e.right,i=e,t.delta+=e.delta,(t.delta<-1073741824||t.delta>1073741824)&&(s.requestNormalizeDelta=!0),t.start+=e.delta,t.end+=e.delta):e.right===cn?(t=e.left,i=e):(i=Bnt(e.right),t=i.right,t.start+=i.delta,t.end+=i.delta,t.delta+=i.delta,(t.delta<-1073741824||t.delta>1073741824)&&(s.requestNormalizeDelta=!0),i.start+=e.delta,i.end+=e.delta,i.delta=e.delta,(i.delta<-1073741824||i.delta>1073741824)&&(s.requestNormalizeDelta=!0)),i===s.root){s.root=t,Hs(t,0),e.detach(),QP(),GF(t),s.root.parent=cn;return}const n=ad(i)===1;if(i===i.parent.left?i.parent.left=t:i.parent.right=t,i===e?t.parent=i.parent:(i.parent===e?t.parent=i:t.parent=i.parent,i.left=e.left,i.right=e.right,i.parent=e.parent,Hs(i,ad(e)),e===s.root?s.root=i:e===e.parent.left?e.parent.left=i:e.parent.right=i,i.left!==cn&&(i.left.parent=i),i.right!==cn&&(i.right.parent=i)),e.detach(),n){Gb(t.parent),i!==e&&(Gb(i),Gb(i.parent)),QP();return}Gb(t),Gb(t.parent),i!==e&&(Gb(i),Gb(i.parent));let o;for(;t!==s.root&&ad(t)===0;)t===t.parent.left?(o=t.parent.right,ad(o)===1&&(Hs(o,0),Hs(t.parent,1),n2(s,t.parent),o=t.parent.right),ad(o.left)===0&&ad(o.right)===0?(Hs(o,1),t=t.parent):(ad(o.right)===0&&(Hs(o.left,0),Hs(o,1),s2(s,o),o=t.parent.right),Hs(o,ad(t.parent)),Hs(t.parent,0),Hs(o.right,0),n2(s,t.parent),t=s.root)):(o=t.parent.left,ad(o)===1&&(Hs(o,0),Hs(t.parent,1),s2(s,t.parent),o=t.parent.left),ad(o.left)===0&&ad(o.right)===0?(Hs(o,1),t=t.parent):(ad(o.left)===0&&(Hs(o.right,0),Hs(o,1),n2(s,o),o=t.parent.left),Hs(o,ad(t.parent)),Hs(t.parent,0),Hs(o.left,0),s2(s,t.parent),t=s.root));Hs(t,0),QP()}function Bnt(s){for(;s.left!==cn;)s=s.left;return s}function QP(){cn.parent=cn,cn.delta=0,cn.start=0,cn.end=0}function n2(s,e){const t=e.right;t.delta+=e.delta,(t.delta<-1073741824||t.delta>1073741824)&&(s.requestNormalizeDelta=!0),t.start+=e.delta,t.end+=e.delta,e.right=t.left,t.left!==cn&&(t.left.parent=e),t.parent=e.parent,e.parent===cn?s.root=t:e===e.parent.left?e.parent.left=t:e.parent.right=t,t.left=e,e.parent=t,GF(e),GF(t)}function s2(s,e){const t=e.left;e.delta-=t.delta,(e.delta<-1073741824||e.delta>1073741824)&&(s.requestNormalizeDelta=!0),e.start-=t.delta,e.end-=t.delta,e.left=t.right,t.right!==cn&&(t.right.parent=e),t.parent=e.parent,e.parent===cn?s.root=t:e===e.parent.right?e.parent.right=t:e.parent.left=t,t.right=e,e.parent=t,GF(e),GF(t)}function YRe(s){let e=s.end;if(s.left!==cn){const t=s.left.maxEnd;t>e&&(e=t)}if(s.right!==cn){const t=s.right.maxEnd+s.delta;t>e&&(e=t)}return e}function GF(s){s.maxEnd=YRe(s)}function Gb(s){for(;s!==cn;){const e=YRe(s);if(s.maxEnd===e)return;s.maxEnd=e,s=s.parent}}function Lnt(s,e,t,i){return s===t?e-i:s-t}class O6{constructor(e,t){this.piece=e,this.color=t,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==Di)return Yoe(this.right);let e=this;for(;e.parent!==Di&&e.parent.left!==e;)e=e.parent;return e.parent===Di?Di:e.parent}prev(){if(this.left!==Di)return _Re(this.left);let e=this;for(;e.parent!==Di&&e.parent.right!==e;)e=e.parent;return e.parent===Di?Di:e.parent}detach(){this.parent=null,this.left=null,this.right=null}}const Di=new O6(null,0);Di.parent=Di;Di.left=Di;Di.right=Di;Di.color=0;function Yoe(s){for(;s.left!==Di;)s=s.left;return s}function _Re(s){for(;s.right!==Di;)s=s.right;return s}function _oe(s){return s===Di?0:s.size_left+s.piece.length+_oe(s.right)}function zoe(s){return s===Di?0:s.lf_left+s.piece.lineFeedCnt+zoe(s.right)}function MP(){Di.parent=Di}function o2(s,e){const t=e.right;t.size_left+=e.size_left+(e.piece?e.piece.length:0),t.lf_left+=e.lf_left+(e.piece?e.piece.lineFeedCnt:0),e.right=t.left,t.left!==Di&&(t.left.parent=e),t.parent=e.parent,e.parent===Di?s.root=t:e.parent.left===e?e.parent.left=t:e.parent.right=t,t.left=e,e.parent=t}function r2(s,e){const t=e.left;e.left=t.right,t.right!==Di&&(t.right.parent=e),t.parent=e.parent,e.size_left-=t.size_left+(t.piece?t.piece.length:0),e.lf_left-=t.lf_left+(t.piece?t.piece.lineFeedCnt:0),e.parent===Di?s.root=t:e===e.parent.right?e.parent.right=t:e.parent.left=t,t.right=e,e.parent=t}function uI(s,e){let t,i;if(e.left===Di?(i=e,t=i.right):e.right===Di?(i=e,t=i.left):(i=Yoe(e.right),t=i.right),i===s.root){s.root=t,t.color=0,e.detach(),MP(),s.root.parent=Di;return}const n=i.color===1;if(i===i.parent.left?i.parent.left=t:i.parent.right=t,i===e?(t.parent=i.parent,BT(s,t)):(i.parent===e?t.parent=i:t.parent=i.parent,BT(s,t),i.left=e.left,i.right=e.right,i.parent=e.parent,i.color=e.color,e===s.root?s.root=i:e===e.parent.left?e.parent.left=i:e.parent.right=i,i.left!==Di&&(i.left.parent=i),i.right!==Di&&(i.right.parent=i),i.size_left=e.size_left,i.lf_left=e.lf_left,BT(s,i)),e.detach(),t.parent.left===t){const r=_oe(t),l=zoe(t);if(r!==t.parent.size_left||l!==t.parent.lf_left){const a=r-t.parent.size_left,d=l-t.parent.lf_left;t.parent.size_left=r,t.parent.lf_left=l,y0(s,t.parent,a,d)}}if(BT(s,t.parent),n){MP();return}let o;for(;t!==s.root&&t.color===0;)t===t.parent.left?(o=t.parent.right,o.color===1&&(o.color=0,t.parent.color=1,o2(s,t.parent),o=t.parent.right),o.left.color===0&&o.right.color===0?(o.color=1,t=t.parent):(o.right.color===0&&(o.left.color=0,o.color=1,r2(s,o),o=t.parent.right),o.color=t.parent.color,t.parent.color=0,o.right.color=0,o2(s,t.parent),t=s.root)):(o=t.parent.left,o.color===1&&(o.color=0,t.parent.color=1,r2(s,t.parent),o=t.parent.left),o.left.color===0&&o.right.color===0?(o.color=1,t=t.parent):(o.left.color===0&&(o.right.color=0,o.color=1,o2(s,o),o=t.parent.left),o.color=t.parent.color,t.parent.color=0,o.left.color=0,r2(s,t.parent),t=s.root));t.color=0,MP()}function Qme(s,e){for(BT(s,e);e!==s.root&&e.parent.color===1;)if(e.parent===e.parent.parent.left){const t=e.parent.parent.right;t.color===1?(e.parent.color=0,t.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.right&&(e=e.parent,o2(s,e)),e.parent.color=0,e.parent.parent.color=1,r2(s,e.parent.parent))}else{const t=e.parent.parent.left;t.color===1?(e.parent.color=0,t.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.left&&(e=e.parent,r2(s,e)),e.parent.color=0,e.parent.parent.color=1,o2(s,e.parent.parent))}s.root.color=0}function y0(s,e,t,i){for(;e!==s.root&&e!==Di;)e.parent.left===e&&(e.parent.size_left+=t,e.parent.lf_left+=i),e=e.parent}function BT(s,e){let t=0,i=0;if(e!==s.root){for(;e!==s.root&&e===e.parent.right;)e=e.parent;if(e!==s.root)for(e=e.parent,t=_oe(e.left)-e.size_left,i=zoe(e.left)-e.lf_left,e.size_left+=t,e.lf_left+=i;e!==s.root&&(t!==0||i!==0);)e.parent.left===e&&(e.parent.size_left+=t,e.parent.lf_left+=i),e=e.parent}}const g0=65535;function zRe(s){let e;return s[s.length-1]<65536?e=new Uint16Array(s.length):e=new Uint32Array(s.length),e.set(s,0),e}class vnt{constructor(e,t,i,n,o){this.lineStarts=e,this.cr=t,this.lf=i,this.crlf=n,this.isBasicASCII=o}}function E0(s,e=!0){const t=[0];let i=1;for(let n=0,o=s.length;n<o;n++){const r=s.charCodeAt(n);r===13?n+1<o&&s.charCodeAt(n+1)===10?(t[i++]=n+2,n++):t[i++]=n+1:r===10&&(t[i++]=n+1)}return e?zRe(t):t}function knt(s,e){s.length=0,s[0]=0;let t=1,i=0,n=0,o=0,r=!0;for(let a=0,d=e.length;a<d;a++){const c=e.charCodeAt(a);c===13?a+1<d&&e.charCodeAt(a+1)===10?(o++,s[t++]=a+2,a++):(i++,s[t++]=a+1):c===10?(n++,s[t++]=a+1):r&&c!==9&&(c<32||c>126)&&(r=!1)}const l=new vnt(zRe(s),i,n,o,r);return s.length=0,l}class Jd{constructor(e,t,i,n,o){this.bufferIndex=e,this.start=t,this.end=i,this.lineFeedCnt=n,this.length=o}}class KZ{constructor(e,t){this.buffer=e,this.lineStarts=t}}class xnt{constructor(e,t){this._pieces=[],this._tree=e,this._BOM=t,this._index=0,e.root!==Di&&e.iterate(e.root,i=>(i!==Di&&this._pieces.push(i.piece),!0))}read(){return this._pieces.length===0?this._index===0?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:this._index===0?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class Int{constructor(e){this._limit=e,this._cache=[]}get(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartOffset<=e&&i.nodeStartOffset+i.node.piece.length>=e)return i}return null}get2(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartLineNumber&&i.nodeStartLineNumber<e&&i.nodeStartLineNumber+i.node.piece.lineFeedCnt>=e)return i}return null}set(e){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(e)}validate(e){let t=!1;const i=this._cache;for(let n=0;n<i.length;n++){const o=i[n];if(o.node.parent===null||o.nodeStartOffset>=e){i[n]=null,t=!0;continue}}if(t){const n=[];for(const o of i)o!==null&&n.push(o);this._cache=n}}}class Ent{constructor(e,t,i){this.create(e,t,i)}create(e,t,i){this._buffers=[new KZ("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=Di,this._lineCnt=1,this._length=0,this._EOL=t,this._EOLLength=t.length,this._EOLNormalized=i;let n=null;for(let o=0,r=e.length;o<r;o++)if(e[o].buffer.length>0){e[o].lineStarts||(e[o].lineStarts=E0(e[o].buffer));const l=new Jd(o+1,{line:0,column:0},{line:e[o].lineStarts.length-1,column:e[o].buffer.length-e[o].lineStarts[e[o].lineStarts.length-1]},e[o].lineStarts.length-1,e[o].buffer.length);this._buffers.push(e[o]),n=this.rbInsertRight(n,l)}this._searchCache=new Int(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(e){const t=g0,i=t-Math.floor(t/3),n=i*2;let o="",r=0;const l=[];if(this.iterate(this.root,a=>{const d=this.getNodeContent(a),c=d.length;if(r<=i||r+c<n)return o+=d,r+=c,!0;const h=o.replace(/\r\n|\r|\n/g,e);return l.push(new KZ(h,E0(h))),o=d,r=c,!0}),r>0){const a=o.replace(/\r\n|\r|\n/g,e);l.push(new KZ(a,E0(a)))}this.create(l,e,!0)}getEOL(){return this._EOL}setEOL(e){this._EOL=e,this._EOLLength=this._EOL.length,this.normalizeEOL(e)}createSnapshot(e){return new xnt(this,e)}getOffsetAt(e,t){let i=0,n=this.root;for(;n!==Di;)if(n.left!==Di&&n.lf_left+1>=e)n=n.left;else if(n.lf_left+n.piece.lineFeedCnt+1>=e){i+=n.size_left;const o=this.getAccumulatedValue(n,e-n.lf_left-2);return i+=o+t-1}else e-=n.lf_left+n.piece.lineFeedCnt,i+=n.size_left+n.piece.length,n=n.right;return i}getPositionAt(e){e=Math.floor(e),e=Math.max(0,e);let t=this.root,i=0;const n=e;for(;t!==Di;)if(t.size_left!==0&&t.size_left>=e)t=t.left;else if(t.size_left+t.piece.length>=e){const o=this.getIndexOf(t,e-t.size_left);if(i+=t.lf_left+o.index,o.index===0){const r=this.getOffsetAt(i+1,1),l=n-r;return new ge(i+1,l+1)}return new ge(i+1,o.remainder+1)}else if(e-=t.size_left+t.piece.length,i+=t.lf_left+t.piece.lineFeedCnt,t.right===Di){const o=this.getOffsetAt(i+1,1),r=n-e-o;return new ge(i+1,r+1)}else t=t.right;return new ge(1,1)}getValueInRange(e,t){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return"";const i=this.nodeAt2(e.startLineNumber,e.startColumn),n=this.nodeAt2(e.endLineNumber,e.endColumn),o=this.getValueInRange2(i,n);return t?t!==this._EOL||!this._EOLNormalized?o.replace(/\r\n|\r|\n/g,t):t===this.getEOL()&&this._EOLNormalized?o:o.replace(/\r\n|\r|\n/g,t):o}getValueInRange2(e,t){if(e.node===t.node){const l=e.node,a=this._buffers[l.piece.bufferIndex].buffer,d=this.offsetInBuffer(l.piece.bufferIndex,l.piece.start);return a.substring(d+e.remainder,d+t.remainder)}let i=e.node;const n=this._buffers[i.piece.bufferIndex].buffer,o=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);let r=n.substring(o+e.remainder,o+i.piece.length);for(i=i.next();i!==Di;){const l=this._buffers[i.piece.bufferIndex].buffer,a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(i===t.node){r+=l.substring(a,a+t.remainder);break}else r+=l.substr(a,i.piece.length);i=i.next()}return r}getLinesContent(){const e=[];let t=0,i="",n=!1;return this.iterate(this.root,o=>{if(o===Di)return!0;const r=o.piece;let l=r.length;if(l===0)return!0;const a=this._buffers[r.bufferIndex].buffer,d=this._buffers[r.bufferIndex].lineStarts,c=r.start.line,h=r.end.line;let u=d[c]+r.start.column;if(n&&(a.charCodeAt(u)===10&&(u++,l--),e[t++]=i,i="",n=!1,l===0))return!0;if(c===h)return!this._EOLNormalized&&a.charCodeAt(u+l-1)===13?(n=!0,i+=a.substr(u,l-1)):i+=a.substr(u,l),!0;i+=this._EOLNormalized?a.substring(u,Math.max(u,d[c+1]-this._EOLLength)):a.substring(u,d[c+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;for(let m=c+1;m<h;m++)i=this._EOLNormalized?a.substring(d[m],d[m+1]-this._EOLLength):a.substring(d[m],d[m+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;return!this._EOLNormalized&&a.charCodeAt(d[h]+r.end.column-1)===13?(n=!0,r.end.column===0?t--:i=a.substr(d[h],r.end.column-1)):i=a.substr(d[h],r.end.column),!0}),n&&(e[t++]=i,i=""),e[t++]=i,e}getLength(){return this._length}getLineCount(){return this._lineCnt}getLineContent(e){return this._lastVisitedLine.lineNumber===e?this._lastVisitedLine.value:(this._lastVisitedLine.lineNumber=e,e===this._lineCnt?this._lastVisitedLine.value=this.getLineRawContent(e):this._EOLNormalized?this._lastVisitedLine.value=this.getLineRawContent(e,this._EOLLength):this._lastVisitedLine.value=this.getLineRawContent(e).replace(/(\r\n|\r|\n)$/,""),this._lastVisitedLine.value)}_getCharCode(e){if(e.remainder===e.node.piece.length){const t=e.node.next();if(!t)return 0;const i=this._buffers[t.piece.bufferIndex],n=this.offsetInBuffer(t.piece.bufferIndex,t.piece.start);return i.buffer.charCodeAt(n)}else{const t=this._buffers[e.node.piece.bufferIndex],n=this.offsetInBuffer(e.node.piece.bufferIndex,e.node.piece.start)+e.remainder;return t.buffer.charCodeAt(n)}}getLineCharCode(e,t){const i=this.nodeAt2(e,t+1);return this._getCharCode(i)}getLineLength(e){if(e===this.getLineCount()){const t=this.getOffsetAt(e,1);return this.getLength()-t}return this.getOffsetAt(e+1,1)-this.getOffsetAt(e,1)-this._EOLLength}findMatchesInNode(e,t,i,n,o,r,l,a,d,c,h){const u=this._buffers[e.piece.bufferIndex],m=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start),p=this.offsetInBuffer(e.piece.bufferIndex,o),g=this.offsetInBuffer(e.piece.bufferIndex,r);let f;const b={line:0,column:0};let U,S;t._wordSeparators?(U=u.buffer.substring(p,g),S=Z=>Z+p,t.reset(0)):(U=u.buffer,S=Z=>Z,t.reset(p));do if(f=t.next(U),f){if(S(f.index)>=g)return c;this.positionInBuffer(e,S(f.index)-m,b);const Z=this.getLineFeedCnt(e.piece.bufferIndex,o,b),R=b.line===o.line?b.column-o.column+n:b.column+1,y=R+f[0].length;if(h[c++]=_Z(new z(i+Z,R,i+Z,y),f,a),S(f.index)+f[0].length>=g||c>=d)return c}while(f);return c}findMatchesLineByLine(e,t,i,n){const o=[];let r=0;const l=new ZW(t.wordSeparators,t.regex);let a=this.nodeAt2(e.startLineNumber,e.startColumn);if(a===null)return[];const d=this.nodeAt2(e.endLineNumber,e.endColumn);if(d===null)return[];let c=this.positionInBuffer(a.node,a.remainder);const h=this.positionInBuffer(d.node,d.remainder);if(a.node===d.node)return this.findMatchesInNode(a.node,l,e.startLineNumber,e.startColumn,c,h,t,i,n,r,o),o;let u=e.startLineNumber,m=a.node;for(;m!==d.node;){const g=this.getLineFeedCnt(m.piece.bufferIndex,c,m.piece.end);if(g>=1){const b=this._buffers[m.piece.bufferIndex].lineStarts,U=this.offsetInBuffer(m.piece.bufferIndex,m.piece.start),S=b[c.line+g],Z=u===e.startLineNumber?e.startColumn:1;if(r=this.findMatchesInNode(m,l,u,Z,c,this.positionInBuffer(m,S-U),t,i,n,r,o),r>=n)return o;u+=g}const f=u===e.startLineNumber?e.startColumn-1:0;if(u===e.endLineNumber){const b=this.getLineContent(u).substring(f,e.endColumn-1);return r=this._findMatchesInLine(t,l,b,e.endLineNumber,f,r,o,i,n),o}if(r=this._findMatchesInLine(t,l,this.getLineContent(u).substr(f),u,f,r,o,i,n),r>=n)return o;u++,a=this.nodeAt2(u,1),m=a.node,c=this.positionInBuffer(a.node,a.remainder)}if(u===e.endLineNumber){const g=u===e.startLineNumber?e.startColumn-1:0,f=this.getLineContent(u).substring(g,e.endColumn-1);return r=this._findMatchesInLine(t,l,f,e.endLineNumber,g,r,o,i,n),o}const p=u===e.startLineNumber?e.startColumn:1;return r=this.findMatchesInNode(d.node,l,u,p,c,h,t,i,n,r,o),o}_findMatchesInLine(e,t,i,n,o,r,l,a,d){const c=e.wordSeparators;if(!a&&e.simpleSearch){const u=e.simpleSearch,m=u.length,p=i.length;let g=-m;for(;(g=i.indexOf(u,g+m))!==-1;)if((!c||Ose(c,i,p,g,m))&&(l[r++]=new KB(new z(n,g+1+o,n,g+1+m+o),null),r>=d))return r;return r}let h;t.reset(0);do if(h=t.next(i),h&&(l[r++]=_Z(new z(n,h.index+1+o,n,h.index+1+h[0].length+o),h,a),r>=d))return r;while(h);return r}insert(e,t,i=!1){if(this._EOLNormalized=this._EOLNormalized&&i,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==Di){const{node:n,remainder:o,nodeStartOffset:r}=this.nodeAt(e),l=n.piece,a=l.bufferIndex,d=this.positionInBuffer(n,o);if(n.piece.bufferIndex===0&&l.end.line===this._lastChangeBufferPos.line&&l.end.column===this._lastChangeBufferPos.column&&r+l.length===e&&t.length<g0){this.appendToNode(n,t),this.computeBufferMetadata();return}if(r===e)this.insertContentToNodeLeft(t,n),this._searchCache.validate(e);else if(r+n.piece.length>e){const c=[];let h=new Jd(l.bufferIndex,d,l.end,this.getLineFeedCnt(l.bufferIndex,d,l.end),this.offsetInBuffer(a,l.end)-this.offsetInBuffer(a,d));if(this.shouldCheckCRLF()&&this.endWithCR(t)&&this.nodeCharCodeAt(n,o)===10){const g={line:h.start.line+1,column:0};h=new Jd(h.bufferIndex,g,h.end,this.getLineFeedCnt(h.bufferIndex,g,h.end),h.length-1),t+=`
- `}if(this.shouldCheckCRLF()&&this.startWithLF(t))if(this.nodeCharCodeAt(n,o-1)===13){const g=this.positionInBuffer(n,o-1);this.deleteNodeTail(n,g),t="\r"+t,n.piece.length===0&&c.push(n)}else this.deleteNodeTail(n,d);else this.deleteNodeTail(n,d);const u=this.createNewPieces(t);h.length>0&&this.rbInsertRight(n,h);let m=n;for(let p=0;p<u.length;p++)m=this.rbInsertRight(m,u[p]);this.deleteNodes(c)}else this.insertContentToNodeRight(t,n)}else{const n=this.createNewPieces(t);let o=this.rbInsertLeft(null,n[0]);for(let r=1;r<n.length;r++)o=this.rbInsertRight(o,n[r])}this.computeBufferMetadata()}delete(e,t){if(this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",t<=0||this.root===Di)return;const i=this.nodeAt(e),n=this.nodeAt(e+t),o=i.node,r=n.node;if(o===r){const u=this.positionInBuffer(o,i.remainder),m=this.positionInBuffer(o,n.remainder);if(i.nodeStartOffset===e){if(t===o.piece.length){const p=o.next();uI(this,o),this.validateCRLFWithPrevNode(p),this.computeBufferMetadata();return}this.deleteNodeHead(o,m),this._searchCache.validate(e),this.validateCRLFWithPrevNode(o),this.computeBufferMetadata();return}if(i.nodeStartOffset+o.piece.length===e+t){this.deleteNodeTail(o,u),this.validateCRLFWithNextNode(o),this.computeBufferMetadata();return}this.shrinkNode(o,u,m),this.computeBufferMetadata();return}const l=[],a=this.positionInBuffer(o,i.remainder);this.deleteNodeTail(o,a),this._searchCache.validate(e),o.piece.length===0&&l.push(o);const d=this.positionInBuffer(r,n.remainder);this.deleteNodeHead(r,d),r.piece.length===0&&l.push(r);const c=o.next();for(let u=c;u!==Di&&u!==r;u=u.next())l.push(u);const h=o.piece.length===0?o.prev():o;this.deleteNodes(l),this.validateCRLFWithNextNode(h),this.computeBufferMetadata()}insertContentToNodeLeft(e,t){const i=[];if(this.shouldCheckCRLF()&&this.endWithCR(e)&&this.startWithLF(t)){const r=t.piece,l={line:r.start.line+1,column:0},a=new Jd(r.bufferIndex,l,r.end,this.getLineFeedCnt(r.bufferIndex,l,r.end),r.length-1);t.piece=a,e+=`
- `,y0(this,t,-1,-1),t.piece.length===0&&i.push(t)}const n=this.createNewPieces(e);let o=this.rbInsertLeft(t,n[n.length-1]);for(let r=n.length-2;r>=0;r--)o=this.rbInsertLeft(o,n[r]);this.validateCRLFWithPrevNode(o),this.deleteNodes(i)}insertContentToNodeRight(e,t){this.adjustCarriageReturnFromNext(e,t)&&(e+=`
- `);const i=this.createNewPieces(e),n=this.rbInsertRight(t,i[0]);let o=n;for(let r=1;r<i.length;r++)o=this.rbInsertRight(o,i[r]);this.validateCRLFWithPrevNode(n)}positionInBuffer(e,t,i){const n=e.piece,o=e.piece.bufferIndex,r=this._buffers[o].lineStarts,a=r[n.start.line]+n.start.column+t;let d=n.start.line,c=n.end.line,h=0,u=0,m=0;for(;d<=c&&(h=d+(c-d)/2|0,m=r[h],h!==c);)if(u=r[h+1],a<m)c=h-1;else if(a>=u)d=h+1;else break;return i?(i.line=h,i.column=a-m,null):{line:h,column:a-m}}getLineFeedCnt(e,t,i){if(i.column===0)return i.line-t.line;const n=this._buffers[e].lineStarts;if(i.line===n.length-1)return i.line-t.line;const o=n[i.line+1],r=n[i.line]+i.column;if(o>r+1)return i.line-t.line;const l=r-1;return this._buffers[e].buffer.charCodeAt(l)===13?i.line-t.line+1:i.line-t.line}offsetInBuffer(e,t){return this._buffers[e].lineStarts[t.line]+t.column}deleteNodes(e){for(let t=0;t<e.length;t++)uI(this,e[t])}createNewPieces(e){if(e.length>g0){const c=[];for(;e.length>g0;){const u=e.charCodeAt(g0-1);let m;u===13||u>=55296&&u<=56319?(m=e.substring(0,g0-1),e=e.substring(g0-1)):(m=e.substring(0,g0),e=e.substring(g0));const p=E0(m);c.push(new Jd(this._buffers.length,{line:0,column:0},{line:p.length-1,column:m.length-p[p.length-1]},p.length-1,m.length)),this._buffers.push(new KZ(m,p))}const h=E0(e);return c.push(new Jd(this._buffers.length,{line:0,column:0},{line:h.length-1,column:e.length-h[h.length-1]},h.length-1,e.length)),this._buffers.push(new KZ(e,h)),c}let t=this._buffers[0].buffer.length;const i=E0(e,!1);let n=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===t&&t!==0&&this.startWithLF(e)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},n=this._lastChangeBufferPos;for(let c=0;c<i.length;c++)i[c]+=t+1;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+="_"+e,t+=1}else{if(t!==0)for(let c=0;c<i.length;c++)i[c]+=t;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+=e}const o=this._buffers[0].buffer.length,r=this._buffers[0].lineStarts.length-1,l=o-this._buffers[0].lineStarts[r],a={line:r,column:l},d=new Jd(0,n,a,this.getLineFeedCnt(0,n,a),o-t);return this._lastChangeBufferPos=a,[d]}getLineRawContent(e,t=0){let i=this.root,n="";const o=this._searchCache.get2(e);if(o){i=o.node;const r=this.getAccumulatedValue(i,e-o.nodeStartLineNumber-1),l=this._buffers[i.piece.bufferIndex].buffer,a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(o.nodeStartLineNumber+i.piece.lineFeedCnt===e)n=l.substring(a+r,a+i.piece.length);else{const d=this.getAccumulatedValue(i,e-o.nodeStartLineNumber);return l.substring(a+r,a+d-t)}}else{let r=0;const l=e;for(;i!==Di;)if(i.left!==Di&&i.lf_left>=e-1)i=i.left;else if(i.lf_left+i.piece.lineFeedCnt>e-1){const a=this.getAccumulatedValue(i,e-i.lf_left-2),d=this.getAccumulatedValue(i,e-i.lf_left-1),c=this._buffers[i.piece.bufferIndex].buffer,h=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return r+=i.size_left,this._searchCache.set({node:i,nodeStartOffset:r,nodeStartLineNumber:l-(e-1-i.lf_left)}),c.substring(h+a,h+d-t)}else if(i.lf_left+i.piece.lineFeedCnt===e-1){const a=this.getAccumulatedValue(i,e-i.lf_left-2),d=this._buffers[i.piece.bufferIndex].buffer,c=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n=d.substring(c+a,c+i.piece.length);break}else e-=i.lf_left+i.piece.lineFeedCnt,r+=i.size_left+i.piece.length,i=i.right}for(i=i.next();i!==Di;){const r=this._buffers[i.piece.bufferIndex].buffer;if(i.piece.lineFeedCnt>0){const l=this.getAccumulatedValue(i,0),a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return n+=r.substring(a,a+l-t),n}else{const l=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n+=r.substr(l,i.piece.length)}i=i.next()}return n}computeBufferMetadata(){let e=this.root,t=1,i=0;for(;e!==Di;)t+=e.lf_left+e.piece.lineFeedCnt,i+=e.size_left+e.piece.length,e=e.right;this._lineCnt=t,this._length=i,this._searchCache.validate(this._length)}getIndexOf(e,t){const i=e.piece,n=this.positionInBuffer(e,t),o=n.line-i.start.line;if(this.offsetInBuffer(i.bufferIndex,i.end)-this.offsetInBuffer(i.bufferIndex,i.start)===t){const r=this.getLineFeedCnt(e.piece.bufferIndex,i.start,n);if(r!==o)return{index:r,remainder:0}}return{index:o,remainder:n.column}}getAccumulatedValue(e,t){if(t<0)return 0;const i=e.piece,n=this._buffers[i.bufferIndex].lineStarts,o=i.start.line+t+1;return o>i.end.line?n[i.end.line]+i.end.column-n[i.start.line]-i.start.column:n[o]-n[i.start.line]-i.start.column}deleteNodeTail(e,t){const i=e.piece,n=i.lineFeedCnt,o=this.offsetInBuffer(i.bufferIndex,i.end),r=t,l=this.offsetInBuffer(i.bufferIndex,r),a=this.getLineFeedCnt(i.bufferIndex,i.start,r),d=a-n,c=l-o,h=i.length+c;e.piece=new Jd(i.bufferIndex,i.start,r,a,h),y0(this,e,c,d)}deleteNodeHead(e,t){const i=e.piece,n=i.lineFeedCnt,o=this.offsetInBuffer(i.bufferIndex,i.start),r=t,l=this.getLineFeedCnt(i.bufferIndex,r,i.end),a=this.offsetInBuffer(i.bufferIndex,r),d=l-n,c=o-a,h=i.length+c;e.piece=new Jd(i.bufferIndex,r,i.end,l,h),y0(this,e,c,d)}shrinkNode(e,t,i){const n=e.piece,o=n.start,r=n.end,l=n.length,a=n.lineFeedCnt,d=t,c=this.getLineFeedCnt(n.bufferIndex,n.start,d),h=this.offsetInBuffer(n.bufferIndex,t)-this.offsetInBuffer(n.bufferIndex,o);e.piece=new Jd(n.bufferIndex,n.start,d,c,h),y0(this,e,h-l,c-a);const u=new Jd(n.bufferIndex,i,r,this.getLineFeedCnt(n.bufferIndex,i,r),this.offsetInBuffer(n.bufferIndex,r)-this.offsetInBuffer(n.bufferIndex,i)),m=this.rbInsertRight(e,u);this.validateCRLFWithPrevNode(m)}appendToNode(e,t){this.adjustCarriageReturnFromNext(t,e)&&(t+=`
- `);const i=this.shouldCheckCRLF()&&this.startWithLF(t)&&this.endWithCR(e),n=this._buffers[0].buffer.length;this._buffers[0].buffer+=t;const o=E0(t,!1);for(let m=0;m<o.length;m++)o[m]+=n;if(i){const m=this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-2];this._buffers[0].lineStarts.pop(),this._lastChangeBufferPos={line:this._lastChangeBufferPos.line-1,column:n-m}}this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(o.slice(1));const r=this._buffers[0].lineStarts.length-1,l=this._buffers[0].buffer.length-this._buffers[0].lineStarts[r],a={line:r,column:l},d=e.piece.length+t.length,c=e.piece.lineFeedCnt,h=this.getLineFeedCnt(0,e.piece.start,a),u=h-c;e.piece=new Jd(e.piece.bufferIndex,e.piece.start,a,h,d),this._lastChangeBufferPos=a,y0(this,e,t.length,u)}nodeAt(e){let t=this.root;const i=this._searchCache.get(e);if(i)return{node:i.node,nodeStartOffset:i.nodeStartOffset,remainder:e-i.nodeStartOffset};let n=0;for(;t!==Di;)if(t.size_left>e)t=t.left;else if(t.size_left+t.piece.length>=e){n+=t.size_left;const o={node:t,remainder:e-t.size_left,nodeStartOffset:n};return this._searchCache.set(o),o}else e-=t.size_left+t.piece.length,n+=t.size_left+t.piece.length,t=t.right;return null}nodeAt2(e,t){let i=this.root,n=0;for(;i!==Di;)if(i.left!==Di&&i.lf_left>=e-1)i=i.left;else if(i.lf_left+i.piece.lineFeedCnt>e-1){const o=this.getAccumulatedValue(i,e-i.lf_left-2),r=this.getAccumulatedValue(i,e-i.lf_left-1);return n+=i.size_left,{node:i,remainder:Math.min(o+t-1,r),nodeStartOffset:n}}else if(i.lf_left+i.piece.lineFeedCnt===e-1){const o=this.getAccumulatedValue(i,e-i.lf_left-2);if(o+t-1<=i.piece.length)return{node:i,remainder:o+t-1,nodeStartOffset:n};t-=i.piece.length-o;break}else e-=i.lf_left+i.piece.lineFeedCnt,n+=i.size_left+i.piece.length,i=i.right;for(i=i.next();i!==Di;){if(i.piece.lineFeedCnt>0){const o=this.getAccumulatedValue(i,0),r=this.offsetOfNode(i);return{node:i,remainder:Math.min(t-1,o),nodeStartOffset:r}}else if(i.piece.length>=t-1){const o=this.offsetOfNode(i);return{node:i,remainder:t-1,nodeStartOffset:o}}else t-=i.piece.length;i=i.next()}return null}nodeCharCodeAt(e,t){if(e.piece.lineFeedCnt<1)return-1;const i=this._buffers[e.piece.bufferIndex],n=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start)+t;return i.buffer.charCodeAt(n)}offsetOfNode(e){if(!e)return 0;let t=e.size_left;for(;e!==this.root;)e.parent.right===e&&(t+=e.parent.size_left+e.parent.piece.length),e=e.parent;return t}shouldCheckCRLF(){return!(this._EOLNormalized&&this._EOL===`
- `)}startWithLF(e){if(typeof e=="string")return e.charCodeAt(0)===10;if(e===Di||e.piece.lineFeedCnt===0)return!1;const t=e.piece,i=this._buffers[t.bufferIndex].lineStarts,n=t.start.line,o=i[n]+t.start.column;return n===i.length-1||i[n+1]>o+1?!1:this._buffers[t.bufferIndex].buffer.charCodeAt(o)===10}endWithCR(e){return typeof e=="string"?e.charCodeAt(e.length-1)===13:e===Di||e.piece.lineFeedCnt===0?!1:this.nodeCharCodeAt(e,e.piece.length-1)===13}validateCRLFWithPrevNode(e){if(this.shouldCheckCRLF()&&this.startWithLF(e)){const t=e.prev();this.endWithCR(t)&&this.fixCRLF(t,e)}}validateCRLFWithNextNode(e){if(this.shouldCheckCRLF()&&this.endWithCR(e)){const t=e.next();this.startWithLF(t)&&this.fixCRLF(e,t)}}fixCRLF(e,t){const i=[],n=this._buffers[e.piece.bufferIndex].lineStarts;let o;e.piece.end.column===0?o={line:e.piece.end.line-1,column:n[e.piece.end.line]-n[e.piece.end.line-1]-1}:o={line:e.piece.end.line,column:e.piece.end.column-1};const r=e.piece.length-1,l=e.piece.lineFeedCnt-1;e.piece=new Jd(e.piece.bufferIndex,e.piece.start,o,l,r),y0(this,e,-1,-1),e.piece.length===0&&i.push(e);const a={line:t.piece.start.line+1,column:0},d=t.piece.length-1,c=this.getLineFeedCnt(t.piece.bufferIndex,a,t.piece.end);t.piece=new Jd(t.piece.bufferIndex,a,t.piece.end,c,d),y0(this,t,-1,-1),t.piece.length===0&&i.push(t);const h=this.createNewPieces(`\r
- `);this.rbInsertRight(e,h[0]);for(let u=0;u<i.length;u++)uI(this,i[u])}adjustCarriageReturnFromNext(e,t){if(this.shouldCheckCRLF()&&this.endWithCR(e)){const i=t.next();if(this.startWithLF(i)){if(e+=`
- `,i.piece.length===1)uI(this,i);else{const n=i.piece,o={line:n.start.line+1,column:0},r=n.length-1,l=this.getLineFeedCnt(n.bufferIndex,o,n.end);i.piece=new Jd(n.bufferIndex,o,n.end,l,r),y0(this,i,-1,-1)}return!0}}return!1}iterate(e,t){if(e===Di)return t(Di);const i=this.iterate(e.left,t);return i&&t(e)&&this.iterate(e.right,t)}getNodeContent(e){if(e===Di)return"";const t=this._buffers[e.piece.bufferIndex],i=e.piece,n=this.offsetInBuffer(i.bufferIndex,i.start),o=this.offsetInBuffer(i.bufferIndex,i.end);return t.buffer.substring(n,o)}getPieceContent(e){const t=this._buffers[e.bufferIndex],i=this.offsetInBuffer(e.bufferIndex,e.start),n=this.offsetInBuffer(e.bufferIndex,e.end);return t.buffer.substring(i,n)}rbInsertRight(e,t){const i=new O6(t,1);if(i.left=Di,i.right=Di,i.parent=Di,i.size_left=0,i.lf_left=0,this.root===Di)this.root=i,i.color=0;else if(e.right===Di)e.right=i,i.parent=e;else{const o=Yoe(e.right);o.left=i,i.parent=o}return Qme(this,i),i}rbInsertLeft(e,t){const i=new O6(t,1);if(i.left=Di,i.right=Di,i.parent=Di,i.size_left=0,i.lf_left=0,this.root===Di)this.root=i,i.color=0;else if(e.left===Di)e.left=i,i.parent=e;else{const n=_Re(e.left);n.right=i,i.parent=n}return Qme(this,i),i}}class D1 extends be{constructor(e,t,i,n,o,r,l){super(),this._onDidChangeContent=this._register(new fe),this._BOM=t,this._mightContainNonBasicASCII=!r,this._mightContainRTL=n,this._mightContainUnusualLineTerminators=o,this._pieceTree=new Ent(e,i,l)}mightContainRTL(){return this._mightContainRTL}mightContainUnusualLineTerminators(){return this._mightContainUnusualLineTerminators}resetMightContainUnusualLineTerminators(){this._mightContainUnusualLineTerminators=!1}mightContainNonBasicASCII(){return this._mightContainNonBasicASCII}getBOM(){return this._BOM}getEOL(){return this._pieceTree.getEOL()}createSnapshot(e){return this._pieceTree.createSnapshot(e?this._BOM:"")}getOffsetAt(e,t){return this._pieceTree.getOffsetAt(e,t)}getPositionAt(e){return this._pieceTree.getPositionAt(e)}getRangeAt(e,t){const i=e+t,n=this.getPositionAt(e),o=this.getPositionAt(i);return new z(n.lineNumber,n.column,o.lineNumber,o.column)}getValueInRange(e,t=0){if(e.isEmpty())return"";const i=this._getEndOfLine(t);return this._pieceTree.getValueInRange(e,i)}getValueLengthInRange(e,t=0){if(e.isEmpty())return 0;if(e.startLineNumber===e.endLineNumber)return e.endColumn-e.startColumn;const i=this.getOffsetAt(e.startLineNumber,e.startColumn),n=this.getOffsetAt(e.endLineNumber,e.endColumn);let o=0;const r=this._getEndOfLine(t),l=this.getEOL();if(r.length!==l.length){const a=r.length-l.length,d=e.endLineNumber-e.startLineNumber;o=a*d}return n-i+o}getCharacterCountInRange(e,t=0){if(this._mightContainNonBasicASCII){let i=0;const n=e.startLineNumber,o=e.endLineNumber;for(let r=n;r<=o;r++){const l=this.getLineContent(r),a=r===n?e.startColumn-1:0,d=r===o?e.endColumn-1:l.length;for(let c=a;c<d;c++)Mr(l.charCodeAt(c))?(i=i+1,c=c+1):i=i+1}return i+=this._getEndOfLine(t).length*(o-n),i}return this.getValueLengthInRange(e,t)}getLength(){return this._pieceTree.getLength()}getLineCount(){return this._pieceTree.getLineCount()}getLinesContent(){return this._pieceTree.getLinesContent()}getLineContent(e){return this._pieceTree.getLineContent(e)}getLineCharCode(e,t){return this._pieceTree.getLineCharCode(e,t)}getLineLength(e){return this._pieceTree.getLineLength(e)}getLineFirstNonWhitespaceColumn(e){const t=Ua(this.getLineContent(e));return t===-1?0:t+1}getLineLastNonWhitespaceColumn(e){const t=ip(this.getLineContent(e));return t===-1?0:t+2}_getEndOfLine(e){switch(e){case 1:return`
- `;case 2:return`\r
- `;case 0:return this.getEOL();default:throw new Error("Unknown EOL preference")}}setEOL(e){this._pieceTree.setEOL(e)}applyEdits(e,t,i){let n=this._mightContainRTL,o=this._mightContainUnusualLineTerminators,r=this._mightContainNonBasicASCII,l=!0,a=[];for(let g=0;g<e.length;g++){const f=e[g];l&&f._isTracked&&(l=!1);const b=f.range;if(f.text){let y=!0;r||(y=!Ov(f.text),r=y),!n&&y&&(n=Ny(f.text)),!o&&y&&(o=IZe(f.text))}let U="",S=0,Z=0,R=0;if(f.text){let y;[S,Z,R,y]=IF(f.text);const N=this.getEOL();y===0||y===(N===`\r
- `?2:1)?U=f.text:U=f.text.replace(/\r\n|\r|\n/g,N)}a[g]={sortIndex:g,identifier:f.identifier||null,range:b,rangeOffset:this.getOffsetAt(b.startLineNumber,b.startColumn),rangeLength:this.getValueLengthInRange(b),text:U,eolCount:S,firstLineLength:Z,lastLineLength:R,forceMoveMarkers:!!f.forceMoveMarkers,isAutoWhitespaceEdit:f.isAutoWhitespaceEdit||!1}}a.sort(D1._sortOpsAscending);let d=!1;for(let g=0,f=a.length-1;g<f;g++){const b=a[g].range.getEndPosition(),U=a[g+1].range.getStartPosition();if(U.isBeforeOrEqual(b)){if(U.isBefore(b))throw new Error("Overlapping ranges are not allowed!");d=!0}}l&&(a=this._reduceOperations(a));const c=i||t?D1._getInverseEditRanges(a):[],h=[];if(t)for(let g=0;g<a.length;g++){const f=a[g],b=c[g];if(f.isAutoWhitespaceEdit&&f.range.isEmpty())for(let U=b.startLineNumber;U<=b.endLineNumber;U++){let S="";U===b.startLineNumber&&(S=this.getLineContent(f.range.startLineNumber),Ua(S)!==-1)||h.push({lineNumber:U,oldContent:S})}}let u=null;if(i){let g=0;u=[];for(let f=0;f<a.length;f++){const b=a[f],U=c[f],S=this.getValueInRange(b.range),Z=b.rangeOffset+g;g+=b.text.length-S.length,u[f]={sortIndex:b.sortIndex,identifier:b.identifier,range:U,text:S,textChange:new Nl(b.rangeOffset,S,Z,b.text)}}d||u.sort((f,b)=>f.sortIndex-b.sortIndex)}this._mightContainRTL=n,this._mightContainUnusualLineTerminators=o,this._mightContainNonBasicASCII=r;const m=this._doApplyEdits(a);let p=null;if(t&&h.length>0){h.sort((g,f)=>f.lineNumber-g.lineNumber),p=[];for(let g=0,f=h.length;g<f;g++){const b=h[g].lineNumber;if(g>0&&h[g-1].lineNumber===b)continue;const U=h[g].oldContent,S=this.getLineContent(b);S.length===0||S===U||Ua(S)!==-1||p.push(b)}}return this._onDidChangeContent.fire(),new OKe(u,m,p)}_reduceOperations(e){return e.length<1e3?e:[this._toSingleEditOperation(e)]}_toSingleEditOperation(e){let t=!1;const i=e[0].range,n=e[e.length-1].range,o=new z(i.startLineNumber,i.startColumn,n.endLineNumber,n.endColumn);let r=i.startLineNumber,l=i.startColumn;const a=[];for(let m=0,p=e.length;m<p;m++){const g=e[m],f=g.range;t=t||g.forceMoveMarkers,a.push(this.getValueInRange(new z(r,l,f.startLineNumber,f.startColumn))),g.text.length>0&&a.push(g.text),r=f.endLineNumber,l=f.endColumn}const d=a.join(""),[c,h,u]=IF(d);return{sortIndex:0,identifier:e[0].identifier,range:o,rangeOffset:this.getOffsetAt(o.startLineNumber,o.startColumn),rangeLength:this.getValueLengthInRange(o,0),text:d,eolCount:c,firstLineLength:h,lastLineLength:u,forceMoveMarkers:t,isAutoWhitespaceEdit:!1}}_doApplyEdits(e){e.sort(D1._sortOpsDescending);const t=[];for(let i=0;i<e.length;i++){const n=e[i],o=n.range.startLineNumber,r=n.range.startColumn,l=n.range.endLineNumber,a=n.range.endColumn;if(o===l&&r===a&&n.text.length===0)continue;n.text?(this._pieceTree.delete(n.rangeOffset,n.rangeLength),this._pieceTree.insert(n.rangeOffset,n.text,!0)):this._pieceTree.delete(n.rangeOffset,n.rangeLength);const d=new z(o,r,l,a);t.push({range:d,rangeLength:n.rangeLength,text:n.text,rangeOffset:n.rangeOffset,forceMoveMarkers:n.forceMoveMarkers})}return t}findMatchesLineByLine(e,t,i,n){return this._pieceTree.findMatchesLineByLine(e,t,i,n)}static _getInverseEditRanges(e){const t=[];let i=0,n=0,o=null;for(let r=0,l=e.length;r<l;r++){const a=e[r];let d,c;o?o.range.endLineNumber===a.range.startLineNumber?(d=i,c=n+(a.range.startColumn-o.range.endColumn)):(d=i+(a.range.startLineNumber-o.range.endLineNumber),c=a.range.startColumn):(d=a.range.startLineNumber,c=a.range.startColumn);let h;if(a.text.length>0){const u=a.eolCount+1;u===1?h=new z(d,c,d,c+a.firstLineLength):h=new z(d,c,d+u-1,a.lastLineLength+1)}else h=new z(d,c,d,c);i=h.endLineNumber,n=h.endColumn,t.push(h),o=a}return t}static _sortOpsAscending(e,t){const i=z.compareRangesUsingEnds(e.range,t.range);return i===0?e.sortIndex-t.sortIndex:i}static _sortOpsDescending(e,t){const i=z.compareRangesUsingEnds(e.range,t.range);return i===0?t.sortIndex-e.sortIndex:-i}}class Dnt{constructor(e,t,i,n,o,r,l,a,d){this._chunks=e,this._bom=t,this._cr=i,this._lf=n,this._crlf=o,this._containsRTL=r,this._containsUnusualLineTerminators=l,this._isBasicASCII=a,this._normalizeEOL=d}_getEOL(e){const t=this._cr+this._lf+this._crlf,i=this._cr+this._crlf;return t===0?e===1?`
- `:`\r
- `:i>t/2?`\r
- `:`
- `}create(e){const t=this._getEOL(e),i=this._chunks;if(this._normalizeEOL&&(t===`\r
- `&&(this._cr>0||this._lf>0)||t===`
- `&&(this._cr>0||this._crlf>0)))for(let o=0,r=i.length;o<r;o++){const l=i[o].buffer.replace(/\r\n|\r|\n/g,t),a=E0(l);i[o]=new KZ(l,a)}const n=new D1(i,this._bom,t,this._containsRTL,this._containsUnusualLineTerminators,this._isBasicASCII,this._normalizeEOL);return{textBuffer:n,disposable:n}}}class ORe{constructor(){this.chunks=[],this.BOM="",this._hasPreviousChar=!1,this._previousChar=0,this._tmpLineStarts=[],this.cr=0,this.lf=0,this.crlf=0,this.containsRTL=!1,this.containsUnusualLineTerminators=!1,this.isBasicASCII=!0}acceptChunk(e){if(e.length===0)return;this.chunks.length===0&&Cse(e)&&(this.BOM=xPe,e=e.substr(1));const t=e.charCodeAt(e.length-1);t===13||t>=55296&&t<=56319?(this._acceptChunk1(e.substr(0,e.length-1),!1),this._hasPreviousChar=!0,this._previousChar=t):(this._acceptChunk1(e,!1),this._hasPreviousChar=!1,this._previousChar=t)}_acceptChunk1(e,t){!t&&e.length===0||(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+e):this._acceptChunk2(e))}_acceptChunk2(e){const t=knt(this._tmpLineStarts,e);this.chunks.push(new KZ(e,t.lineStarts)),this.cr+=t.cr,this.lf+=t.lf,this.crlf+=t.crlf,t.isBasicASCII||(this.isBasicASCII=!1,this.containsRTL||(this.containsRTL=Ny(e)),this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=IZe(e)))}finish(e=!0){return this._finish(),new Dnt(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,e)}_finish(){if(this.chunks.length===0&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const e=this.chunks[this.chunks.length-1];e.buffer+=String.fromCharCode(this._previousChar);const t=E0(e.buffer);e.lineStarts=t,this._previousChar===13&&this.cr++}}}class Gnt{constructor(e){this._default=e,this._store=[]}get(e){return e<this._store.length?this._store[e]:this._default}set(e,t){for(;e>=this._store.length;)this._store[this._store.length]=this._default;this._store[e]=t}replace(e,t,i){if(e>=this._store.length)return;if(t===0){this.insert(e,i);return}else if(i===0){this.delete(e,t);return}const n=this._store.slice(0,e),o=this._store.slice(e+t),r=Jnt(i,this._default);this._store=n.concat(r,o)}delete(e,t){t===0||e>=this._store.length||this._store.splice(e,t)}insert(e,t){if(t===0||e>=this._store.length)return;const i=[];for(let n=0;n<t;n++)i[n]=this._default;this._store=Z3(this._store,e,i)}}function Jnt(s,e){const t=[];for(let i=0;i<s;i++)t[i]=e;return t}class Xnt{get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._startLineNumber+this._tokens.length-1}constructor(e,t){this._startLineNumber=e,this._tokens=t}getLineTokens(e){return this._tokens[e-this._startLineNumber]}appendLineTokens(e){this._tokens.push(e)}}class j6{constructor(){this._tokens=[]}add(e,t){if(this._tokens.length>0){const i=this._tokens[this._tokens.length-1];if(i.endLineNumber+1===e){i.appendLineTokens(t);return}}this._tokens.push(new Xnt(e,[t]))}finalize(){return this._tokens}}class Ynt{constructor(e,t){this.tokenizationSupport=t,this.initialState=this.tokenizationSupport.getInitialState(),this.store=new P6(e)}getStartState(e){return this.store.getStartState(e,this.initialState)}getFirstInvalidLine(){return this.store.getFirstInvalidLine(this.initialState)}}class _nt extends Ynt{constructor(e,t,i,n){super(e,t),this._textModel=i,this._languageIdCodec=n}updateTokensUntilLine(e,t){const i=this._textModel.getLanguageId();for(;;){const n=this.getFirstInvalidLine();if(!n||n.lineNumber>t)break;const o=this._textModel.getLineContent(n.lineNumber),r=Zw(this._languageIdCodec,i,this.tokenizationSupport,o,!0,n.startState);e.add(n.lineNumber,r.tokens),this.store.setEndState(n.lineNumber,r.endState)}}getTokenTypeIfInsertingCharacter(e,t){const i=this.getStartState(e.lineNumber);if(!i)return 0;const n=this._textModel.getLanguageId(),o=this._textModel.getLineContent(e.lineNumber),r=o.substring(0,e.column-1)+t+o.substring(e.column-1),l=Zw(this._languageIdCodec,n,this.tokenizationSupport,r,!0,i),a=new Pr(l.tokens,r,this._languageIdCodec);if(a.getCount()===0)return 0;const d=a.findTokenIndexAtOffset(e.column-1);return a.getStandardTokenType(d)}tokenizeLineWithEdit(e,t,i){const n=e.lineNumber,o=e.column,r=this.getStartState(n);if(!r)return null;const l=this._textModel.getLineContent(n),a=l.substring(0,o-1)+i+l.substring(o-1+t),d=this._textModel.getLanguageIdAtPosition(n,0),c=Zw(this._languageIdCodec,d,this.tokenizationSupport,a,!0,r);return new Pr(c.tokens,a,this._languageIdCodec)}hasAccurateTokensForLine(e){const t=this.store.getFirstInvalidEndStateLineNumberOrMax();return e<t}isCheapToTokenize(e){const t=this.store.getFirstInvalidEndStateLineNumberOrMax();return e<t||e===t&&this._textModel.getLineLength(e)<2048}tokenizeHeuristically(e,t,i){if(i<=this.store.getFirstInvalidEndStateLineNumberOrMax())return{heuristicTokens:!1};if(t<=this.store.getFirstInvalidEndStateLineNumberOrMax())return this.updateTokensUntilLine(e,i),{heuristicTokens:!1};let n=this.guessStartState(t);const o=this._textModel.getLanguageId();for(let r=t;r<=i;r++){const l=this._textModel.getLineContent(r),a=Zw(this._languageIdCodec,o,this.tokenizationSupport,l,!0,n);e.add(r,a.tokens),n=a.endState}return{heuristicTokens:!0}}guessStartState(e){let t=this._textModel.getLineFirstNonWhitespaceColumn(e);const i=[];let n=null;for(let l=e-1;t>1&&l>=1;l--){const a=this._textModel.getLineFirstNonWhitespaceColumn(l);if(a!==0&&a<t&&(i.push(this._textModel.getLineContent(l)),t=a,n=this.getStartState(l),n))break}n||(n=this.tokenizationSupport.getInitialState()),i.reverse();const o=this._textModel.getLanguageId();let r=n;for(const l of i)r=Zw(this._languageIdCodec,o,this.tokenizationSupport,l,!1,r).endState;return r}}class P6{constructor(e){this.lineCount=e,this._tokenizationStateStore=new znt,this._invalidEndStatesLineNumbers=new Ont,this._invalidEndStatesLineNumbers.addRange(new $i(1,e+1))}getEndState(e){return this._tokenizationStateStore.getEndState(e)}setEndState(e,t){if(!t)throw new _n("Cannot set null/undefined state");this._invalidEndStatesLineNumbers.delete(e);const i=this._tokenizationStateStore.setEndState(e,t);return i&&e<this.lineCount&&this._invalidEndStatesLineNumbers.addRange(new $i(e+1,e+2)),i}acceptChange(e,t){this.lineCount+=t-e.length,this._tokenizationStateStore.acceptChange(e,t),this._invalidEndStatesLineNumbers.addRangeAndResize(new $i(e.startLineNumber,e.endLineNumberExclusive),t)}acceptChanges(e){for(const t of e){const[i]=IF(t.text);this.acceptChange(new Ii(t.range.startLineNumber,t.range.endLineNumber+1),i+1)}}invalidateEndStateRange(e){this._invalidEndStatesLineNumbers.addRange(new $i(e.startLineNumber,e.endLineNumberExclusive))}getFirstInvalidEndStateLineNumber(){return this._invalidEndStatesLineNumbers.min}getFirstInvalidEndStateLineNumberOrMax(){return this.getFirstInvalidEndStateLineNumber()||Number.MAX_SAFE_INTEGER}allStatesValid(){return this._invalidEndStatesLineNumbers.min===null}getStartState(e,t){return e===1?t:this.getEndState(e-1)}getFirstInvalidLine(e){const t=this.getFirstInvalidEndStateLineNumber();if(t===null)return null;const i=this.getStartState(t,e);if(!i)throw new _n("Start state must be defined");return{lineNumber:t,startState:i}}}class znt{constructor(){this._lineEndStates=new Gnt(null)}getEndState(e){return this._lineEndStates.get(e)}setEndState(e,t){const i=this._lineEndStates.get(e);return i&&i.equals(t)?!1:(this._lineEndStates.set(e,t),!0)}acceptChange(e,t){let i=e.length;t>0&&i>0&&(i--,t--),this._lineEndStates.replace(e.startLineNumber,i,t)}}class Ont{constructor(){this._ranges=[]}get min(){return this._ranges.length===0?null:this._ranges[0].start}delete(e){const t=this._ranges.findIndex(i=>i.contains(e));if(t!==-1){const i=this._ranges[t];i.start===e?i.endExclusive===e+1?this._ranges.splice(t,1):this._ranges[t]=new $i(e+1,i.endExclusive):i.endExclusive===e+1?this._ranges[t]=new $i(i.start,e):this._ranges.splice(t,1,new $i(i.start,e),new $i(e+1,i.endExclusive))}}addRange(e){$i.addRange(e,this._ranges)}addRangeAndResize(e,t){let i=0;for(;!(i>=this._ranges.length||e.start<=this._ranges[i].endExclusive);)i++;let n=i;for(;!(n>=this._ranges.length||e.endExclusive<this._ranges[n].start);)n++;const o=t-e.length;for(let r=n;r<this._ranges.length;r++)this._ranges[r]=this._ranges[r].delta(o);if(i===n){const r=new $i(e.start,e.start+t);r.isEmpty||this._ranges.splice(i,0,r)}else{const r=Math.min(e.start,this._ranges[i].start),l=Math.max(e.endExclusive,this._ranges[n-1].endExclusive),a=new $i(r,l+o);a.isEmpty?this._ranges.splice(i,n-i):this._ranges.splice(i,n-i,a)}}toString(){return this._ranges.map(e=>e.toString()).join(" + ")}}function Zw(s,e,t,i,n,o){let r=null;if(t)try{r=t.tokenizeEncoded(i,n,o.clone())}catch(l){wi(l)}return r||(r=a9(s.encodeLanguageId(e),o)),Pr.convertToEndOffset(r.tokens,i.length),r}class jnt{constructor(e,t){this._tokenizerWithStateStore=e,this._backgroundTokenStore=t,this._isDisposed=!1,this._isScheduled=!1}dispose(){this._isDisposed=!0}handleChanges(){this._beginBackgroundTokenization()}_beginBackgroundTokenization(){this._isScheduled||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._isScheduled=!0,_Ze(e=>{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(e)}))}_backgroundTokenizeWithDeadline(e){const t=Date.now()+e.timeRemaining(),i=()=>{this._isDisposed||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._backgroundTokenizeForAtLeast1ms(),Date.now()<t?cZe(i):this._beginBackgroundTokenization())};i()}_backgroundTokenizeForAtLeast1ms(){const e=this._tokenizerWithStateStore._textModel.getLineCount(),t=new j6,i=jr.create(!1);do if(i.elapsed()>1||this._tokenizeOneInvalidLine(t)>=e)break;while(this._hasLinesToTokenize());this._backgroundTokenStore.setTokens(t.finalize()),this.checkFinished()}_hasLinesToTokenize(){return this._tokenizerWithStateStore?!this._tokenizerWithStateStore.store.allStatesValid():!1}_tokenizeOneInvalidLine(e){var i;const t=(i=this._tokenizerWithStateStore)==null?void 0:i.getFirstInvalidLine();return t?(this._tokenizerWithStateStore.updateTokensUntilLine(e,t.lineNumber),t.lineNumber):this._tokenizerWithStateStore._textModel.getLineCount()+1}checkFinished(){this._isDisposed||this._tokenizerWithStateStore.store.allStatesValid()&&this._backgroundTokenStore.backgroundTokenizationFinished()}requestTokens(e,t){this._tokenizerWithStateStore.store.invalidateEndStateRange(new Ii(e,t))}}class Pnt{constructor(){this._onDidChangeVisibleRanges=new fe,this.onDidChangeVisibleRanges=this._onDidChangeVisibleRanges.event,this._views=new Set}attachView(){const e=new Hnt(t=>{this._onDidChangeVisibleRanges.fire({view:e,state:t})});return this._views.add(e),e}detachView(e){this._views.delete(e),this._onDidChangeVisibleRanges.fire({view:e,state:void 0})}}class Hnt{constructor(e){this.handleStateChange=e}setVisibleLines(e,t){const i=e.map(n=>new Ii(n.startLineNumber,n.endLineNumber+1));this.handleStateChange({visibleLineRanges:i,stabilized:t})}}class Knt extends be{get lineRanges(){return this._lineRanges}constructor(e){super(),this._refreshTokens=e,this.runner=this._register(new cs(()=>this.update(),50)),this._computedLineRanges=[],this._lineRanges=[]}update(){lo(this._computedLineRanges,this._lineRanges,(e,t)=>e.equals(t))||(this._computedLineRanges=this._lineRanges,this._refreshTokens())}handleStateChange(e){this._lineRanges=e.visibleLineRanges,e.stabilized?(this.runner.cancel(),this.update()):this.runner.schedule()}}class jRe extends be{get backgroundTokenizationState(){return this._backgroundTokenizationState}constructor(e,t,i){super(),this._languageIdCodec=e,this._textModel=t,this.getLanguageId=i,this._backgroundTokenizationState=1,this._onDidChangeBackgroundTokenizationState=this._register(new fe),this.onDidChangeBackgroundTokenizationState=this._onDidChangeBackgroundTokenizationState.event,this._onDidChangeTokens=this._register(new fe),this.onDidChangeTokens=this._onDidChangeTokens.event}tokenizeIfCheap(e){this.isCheapToTokenize(e)&&this.forceTokenization(e)}}class Mme extends jRe{constructor(e,t,i,n){super(t,i,n),this._treeSitterService=e,this._tokenizationSupport=null,this._initialize()}_initialize(){const e=this.getLanguageId();(!this._tokenizationSupport||this._lastLanguageId!==e)&&(this._lastLanguageId=e,this._tokenizationSupport=c7.get(e))}getLineTokens(e){const t=this._textModel.getLineContent(e);if(this._tokenizationSupport){const i=this._tokenizationSupport.tokenizeEncoded(e,this._textModel);if(i)return new Pr(i,t,this._languageIdCodec)}return Pr.createEmpty(t,this._languageIdCodec)}resetTokenization(e=!0){e&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]}),this._initialize()}handleDidChangeAttached(){}handleDidChangeContent(e){e.isFlush&&this.resetTokenization(!1)}forceTokenization(e){}hasAccurateTokensForLine(e){return!0}isCheapToTokenize(e){return!0}getTokenTypeIfInsertingCharacter(e,t,i){return 0}tokenizeLineWithEdit(e,t,i){return null}get hasTokens(){return this._treeSitterService.getParseResult(this._textModel)!==void 0}}const PRe=un("treeSitterParserService"),D0=new Uint32Array(0).buffer;class ng{static deleteBeginning(e,t){return e===null||e===D0?e:ng.delete(e,0,t)}static deleteEnding(e,t){if(e===null||e===D0)return e;const i=hf(e),n=i[i.length-2];return ng.delete(e,t,n)}static delete(e,t,i){if(e===null||e===D0||t===i)return e;const n=hf(e),o=n.length>>>1;if(t===0&&n[n.length-2]===i)return D0;const r=Pr.findIndexInTokensArray(n,t),l=r>0?n[r-1<<1]:0,a=n[r<<1];if(i<a){const m=i-t;for(let p=r;p<o;p++)n[p<<1]-=m;return e}let d,c;l!==t?(n[r<<1]=t,d=r+1<<1,c=t):(d=r<<1,c=l);const h=i-t;for(let m=r+1;m<o;m++){const p=n[m<<1]-h;p>c&&(n[d++]=p,n[d++]=n[(m<<1)+1],c=p)}if(d===n.length)return e;const u=new Uint32Array(d);return u.set(n.subarray(0,d),0),u.buffer}static append(e,t){if(t===D0)return e;if(e===D0)return t;if(e===null)return e;if(t===null)return null;const i=hf(e),n=hf(t),o=n.length>>>1,r=new Uint32Array(i.length+n.length);r.set(i,0);let l=i.length;const a=i[i.length-2];for(let d=0;d<o;d++)r[l++]=n[d<<1]+a,r[l++]=n[(d<<1)+1];return r.buffer}static insert(e,t,i){if(e===null||e===D0)return e;const n=hf(e),o=n.length>>>1;let r=Pr.findIndexInTokensArray(n,t);r>0&&n[r-1<<1]===t&&r--;for(let l=r;l<o;l++)n[l<<1]+=i;return e}}function hf(s){return s instanceof Uint32Array?s:new Uint32Array(s)}class SL{constructor(e){this._lineTokens=[],this._len=0,this._languageIdCodec=e}flush(){this._lineTokens=[],this._len=0}get hasTokens(){return this._lineTokens.length>0}getTokens(e,t,i){let n=null;if(t<this._len&&(n=this._lineTokens[t]),n!==null&&n!==D0)return new Pr(hf(n),i,this._languageIdCodec);const o=new Uint32Array(2);return o[0]=i.length,o[1]=wme(this._languageIdCodec.encodeLanguageId(e)),new Pr(o,i,this._languageIdCodec)}static _massageTokens(e,t,i){const n=i?hf(i):null;if(t===0){let o=!1;if(n&&n.length>1&&(o=Fd.getLanguageId(n[1])!==e),!o)return D0}if(!n||n.length===0){const o=new Uint32Array(2);return o[0]=t,o[1]=wme(e),o.buffer}return n[n.length-2]=t,n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n}_ensureLine(e){for(;e>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(e,t){t!==0&&(e+t>this._len&&(t=this._len-e),this._lineTokens.splice(e,t),this._len-=t)}_insertLines(e,t){if(t===0)return;const i=[];for(let n=0;n<t;n++)i[n]=null;this._lineTokens=Z3(this._lineTokens,e,i),this._len+=t}setTokens(e,t,i,n,o){const r=SL._massageTokens(this._languageIdCodec.encodeLanguageId(e),i,n);this._ensureLine(t);const l=this._lineTokens[t];return this._lineTokens[t]=r,o?!SL._equals(l,r):!1}static _equals(e,t){if(!e||!t)return!e&&!t;const i=hf(e),n=hf(t);if(i.length!==n.length)return!1;for(let o=0,r=i.length;o<r;o++)if(i[o]!==n[o])return!1;return!0}acceptEdit(e,t,i){this._acceptDeleteRange(e),this._acceptInsertText(new ge(e.startLineNumber,e.startColumn),t,i)}_acceptDeleteRange(e){const t=e.startLineNumber-1;if(t>=this._len)return;if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;this._lineTokens[t]=ng.delete(this._lineTokens[t],e.startColumn-1,e.endColumn-1);return}this._lineTokens[t]=ng.deleteEnding(this._lineTokens[t],e.startColumn-1);const i=e.endLineNumber-1;let n=null;i<this._len&&(n=ng.deleteBeginning(this._lineTokens[i],e.endColumn-1)),this._lineTokens[t]=ng.append(this._lineTokens[t],n),this._deleteLines(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t,i){if(t===0&&i===0)return;const n=e.lineNumber-1;if(!(n>=this._len)){if(t===0){this._lineTokens[n]=ng.insert(this._lineTokens[n],e.column-1,i);return}this._lineTokens[n]=ng.deleteEnding(this._lineTokens[n],e.column-1),this._lineTokens[n]=ng.insert(this._lineTokens[n],e.column-1,i),this._insertLines(e.lineNumber,t)}}setMultilineTokens(e,t){if(e.length===0)return{changes:[]};const i=[];for(let n=0,o=e.length;n<o;n++){const r=e[n];let l=0,a=0,d=!1;for(let c=r.startLineNumber;c<=r.endLineNumber;c++)d?(this.setTokens(t.getLanguageId(),c-1,t.getLineLength(c),r.getLineTokens(c),!1),a=c):this.setTokens(t.getLanguageId(),c-1,t.getLineLength(c),r.getLineTokens(c),!0)&&(d=!0,l=c,a=c);d&&i.push({fromLineNumber:l,toLineNumber:a})}return{changes:i}}}function wme(s){return(s<<0|0|0|32768|2<<24|1024)>>>0}class Ooe{constructor(e){this._pieces=[],this._isComplete=!1,this._languageIdCodec=e}flush(){this._pieces=[],this._isComplete=!1}isEmpty(){return this._pieces.length===0}set(e,t){this._pieces=e||[],this._isComplete=t}setPartial(e,t){let i=e;if(t.length>0){const o=t[0].getRange(),r=t[t.length-1].getRange();if(!o||!r)return e;i=e.plusRange(o).plusRange(r)}let n=null;for(let o=0,r=this._pieces.length;o<r;o++){const l=this._pieces[o];if(l.endLineNumber<i.startLineNumber)continue;if(l.startLineNumber>i.endLineNumber){n=n||{index:o};break}if(l.removeTokens(i),l.isEmpty()){this._pieces.splice(o,1),o--,r--;continue}if(l.endLineNumber<i.startLineNumber)continue;if(l.startLineNumber>i.endLineNumber){n=n||{index:o};continue}const[a,d]=l.split(i);if(a.isEmpty()){n=n||{index:o};continue}d.isEmpty()||(this._pieces.splice(o,1,a,d),o++,r++,n=n||{index:o})}return n=n||{index:this._pieces.length},t.length>0&&(this._pieces=Z3(this._pieces,n.index,t)),i}isComplete(){return this._isComplete}addSparseTokens(e,t){if(t.getLineContent().length===0)return t;const i=this._pieces;if(i.length===0)return t;const n=Ooe._findFirstPieceWithLine(i,e),o=i[n].getLineTokens(e);if(!o)return t;const r=t.getCount(),l=o.getCount();let a=0;const d=[];let c=0,h=0;const u=(m,p)=>{m!==h&&(h=m,d[c++]=m,d[c++]=p)};for(let m=0;m<l;m++){const p=o.getStartCharacter(m),g=o.getEndCharacter(m),f=o.getMetadata(m),b=((f&1?2048:0)|(f&2?4096:0)|(f&4?8192:0)|(f&8?16384:0)|(f&16?16744448:0)|(f&32?4278190080:0))>>>0,U=~b>>>0;for(;a<r&&t.getEndOffset(a)<=p;)u(t.getEndOffset(a),t.getMetadata(a)),a++;for(a<r&&t.getStartOffset(a)<p&&u(p,t.getMetadata(a));a<r&&t.getEndOffset(a)<g;)u(t.getEndOffset(a),t.getMetadata(a)&U|f&b),a++;if(a<r)u(g,t.getMetadata(a)&U|f&b),t.getEndOffset(a)===g&&a++;else{const S=Math.min(Math.max(0,a-1),r-1);u(g,t.getMetadata(S)&U|f&b)}}for(;a<r;)u(t.getEndOffset(a),t.getMetadata(a)),a++;return new Pr(new Uint32Array(d),t.getLineContent(),this._languageIdCodec)}static _findFirstPieceWithLine(e,t){let i=0,n=e.length-1;for(;i<n;){let o=i+Math.floor((n-i)/2);if(e[o].endLineNumber<t)i=o+1;else if(e[o].startLineNumber>t)n=o-1;else{for(;o>i&&e[o-1].startLineNumber<=t&&t<=e[o-1].endLineNumber;)o--;return o}}return i}acceptEdit(e,t,i,n,o){for(const r of this._pieces)r.acceptEdit(e,t,i,n,o)}}var qnt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},wP=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},VD;let H6=VD=class extends ERe{constructor(e,t,i,n,o,r,l){super(),this._textModel=e,this._bracketPairsTextModelPart=t,this._languageId=i,this._attachedViews=n,this._languageService=o,this._languageConfigurationService=r,this._treeSitterService=l,this._semanticTokens=new Ooe(this._languageService.languageIdCodec),this._onDidChangeLanguage=this._register(new fe),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new fe),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new fe),this.onDidChangeTokens=this._onDidChangeTokens.event,this._tokensDisposables=this._register(new De),this._register(this._languageConfigurationService.onDidChange(a=>{a.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})})),this._register(Ut.filter(c7.onDidChange,a=>a.changedLanguages.includes(this._languageId))(()=>{this.createPreferredTokenProvider()})),this.createPreferredTokenProvider()}createGrammarTokens(){return this._register(new Tme(this._languageService.languageIdCodec,this._textModel,()=>this._languageId,this._attachedViews))}createTreeSitterTokens(){return this._register(new Mme(this._treeSitterService,this._languageService.languageIdCodec,this._textModel,()=>this._languageId))}createTokens(e){var i;const t=this._tokens!==void 0;(i=this._tokens)==null||i.dispose(),this._tokens=e?this.createTreeSitterTokens():this.createGrammarTokens(),this._tokensDisposables.clear(),this._tokensDisposables.add(this._tokens.onDidChangeTokens(n=>{this._emitModelTokensChangedEvent(n)})),this._tokensDisposables.add(this._tokens.onDidChangeBackgroundTokenizationState(n=>{this._bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState()})),t&&this._tokens.resetTokenization()}createPreferredTokenProvider(){c7.get(this._languageId)?this._tokens instanceof Mme||this.createTokens(!0):this._tokens instanceof Tme||this.createTokens(!1)}handleLanguageConfigurationServiceChange(e){e.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})}handleDidChangeContent(e){if(e.isFlush)this._semanticTokens.flush();else if(!e.isEolChange)for(const t of e.changes){const[i,n,o]=IF(t.text);this._semanticTokens.acceptEdit(t.range,i,n,o,t.text.length>0?t.text.charCodeAt(0):0)}this._tokens.handleDidChangeContent(e)}handleDidChangeAttached(){this._tokens.handleDidChangeAttached()}getLineTokens(e){this.validateLineNumber(e);const t=this._tokens.getLineTokens(e);return this._semanticTokens.addSparseTokens(e,t)}_emitModelTokensChangedEvent(e){this._textModel._isDisposing()||(this._bracketPairsTextModelPart.handleDidChangeTokens(e),this._onDidChangeTokens.fire(e))}validateLineNumber(e){if(e<1||e>this._textModel.getLineCount())throw new _n("Illegal value for lineNumber")}get hasTokens(){return this._tokens.hasTokens}resetTokenization(){this._tokens.resetTokenization()}get backgroundTokenizationState(){return this._tokens.backgroundTokenizationState}forceTokenization(e){this.validateLineNumber(e),this._tokens.forceTokenization(e)}hasAccurateTokensForLine(e){return this.validateLineNumber(e),this._tokens.hasAccurateTokensForLine(e)}isCheapToTokenize(e){return this.validateLineNumber(e),this._tokens.isCheapToTokenize(e)}tokenizeIfCheap(e){this.validateLineNumber(e),this._tokens.tokenizeIfCheap(e)}getTokenTypeIfInsertingCharacter(e,t,i){return this._tokens.getTokenTypeIfInsertingCharacter(e,t,i)}tokenizeLineWithEdit(e,t,i){return this._tokens.tokenizeLineWithEdit(e,t,i)}setSemanticTokens(e,t){this._semanticTokens.set(e,t),this._emitModelTokensChangedEvent({semanticTokensApplied:e!==null,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]})}hasCompleteSemanticTokens(){return this._semanticTokens.isComplete()}hasSomeSemanticTokens(){return!this._semanticTokens.isEmpty()}setPartialSemanticTokens(e,t){if(this.hasCompleteSemanticTokens())return;const i=this._textModel.validateRange(this._semanticTokens.setPartial(e,t));this._emitModelTokensChangedEvent({semanticTokensApplied:!0,ranges:[{fromLineNumber:i.startLineNumber,toLineNumber:i.endLineNumber}]})}getWordAtPosition(e){this.assertNotDisposed();const t=this._textModel.validatePosition(e),i=this._textModel.getLineContent(t.lineNumber),n=this.getLineTokens(t.lineNumber),o=n.findTokenIndexAtOffset(t.column-1),[r,l]=VD._findLanguageBoundaries(n,o),a=DB(t.column,this.getLanguageConfiguration(n.getLanguageId(o)).getWordDefinition(),i.substring(r,l),r);if(a&&a.startColumn<=e.column&&e.column<=a.endColumn)return a;if(o>0&&r===t.column-1){const[d,c]=VD._findLanguageBoundaries(n,o-1),h=DB(t.column,this.getLanguageConfiguration(n.getLanguageId(o-1)).getWordDefinition(),i.substring(d,c),d);if(h&&h.startColumn<=e.column&&e.column<=h.endColumn)return h}return null}getLanguageConfiguration(e){return this._languageConfigurationService.getLanguageConfiguration(e)}static _findLanguageBoundaries(e,t){const i=e.getLanguageId(t);let n=0;for(let r=t;r>=0&&e.getLanguageId(r)===i;r--)n=e.getStartOffset(r);let o=e.getLineContent().length;for(let r=t,l=e.getCount();r<l&&e.getLanguageId(r)===i;r++)o=e.getEndOffset(r);return[n,o]}getWordUntilPosition(e){const t=this.getWordAtPosition(e);return t?{word:t.word.substr(0,e.column-t.startColumn),startColumn:t.startColumn,endColumn:e.column}:{word:"",startColumn:e.column,endColumn:e.column}}getLanguageId(){return this._languageId}getLanguageIdAtPosition(e,t){const i=this._textModel.validatePosition(new ge(e,t)),n=this.getLineTokens(i.lineNumber);return n.getLanguageId(n.findTokenIndexAtOffset(i.column-1))}setLanguageId(e,t="api"){if(this._languageId===e)return;const i={oldLanguage:this._languageId,newLanguage:e,source:t};this._languageId=e,this._bracketPairsTextModelPart.handleDidChangeLanguage(i),this._tokens.resetTokenization(),this.createPreferredTokenProvider(),this._onDidChangeLanguage.fire(i),this._onDidChangeLanguageConfiguration.fire({})}};H6=VD=qnt([wP(4,ao),wP(5,bo),wP(6,PRe)],H6);class Tme extends jRe{constructor(e,t,i,n){super(e,t,i),this._tokenizer=null,this._defaultBackgroundTokenizer=null,this._backgroundTokenizer=this._register(new Lr),this._tokens=new SL(this._languageIdCodec),this._debugBackgroundTokenizer=this._register(new Lr),this._attachedViewStates=this._register(new Zse),this._register(Ro.onDidChange(o=>{const r=this.getLanguageId();o.changedLanguages.indexOf(r)!==-1&&this.resetTokenization()})),this.resetTokenization(),this._register(n.onDidChangeVisibleRanges(({view:o,state:r})=>{if(r){let l=this._attachedViewStates.get(o);l||(l=new Knt(()=>this.refreshRanges(l.lineRanges)),this._attachedViewStates.set(o,l)),l.handleStateChange(r)}else this._attachedViewStates.deleteAndDispose(o)}))}resetTokenization(e=!0){var o;this._tokens.flush(),(o=this._debugBackgroundTokens)==null||o.flush(),this._debugBackgroundStates&&(this._debugBackgroundStates=new P6(this._textModel.getLineCount())),e&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]});const t=()=>{if(this._textModel.isTooLargeForTokenization())return[null,null];const r=Ro.get(this.getLanguageId());if(!r)return[null,null];let l;try{l=r.getInitialState()}catch(a){return wi(a),[null,null]}return[r,l]},[i,n]=t();if(i&&n?this._tokenizer=new _nt(this._textModel.getLineCount(),i,this._textModel,this._languageIdCodec):this._tokenizer=null,this._backgroundTokenizer.clear(),this._defaultBackgroundTokenizer=null,this._tokenizer){const r={setTokens:l=>{this.setTokens(l)},backgroundTokenizationFinished:()=>{if(this._backgroundTokenizationState===2)return;const l=2;this._backgroundTokenizationState=l,this._onDidChangeBackgroundTokenizationState.fire()},setEndState:(l,a)=>{var c;if(!this._tokenizer)return;const d=this._tokenizer.store.getFirstInvalidEndStateLineNumber();d!==null&&l>=d&&((c=this._tokenizer)==null||c.store.setEndState(l,a))}};i&&i.createBackgroundTokenizer&&!i.backgroundTokenizerShouldOnlyVerifyTokens&&(this._backgroundTokenizer.value=i.createBackgroundTokenizer(this._textModel,r)),!this._backgroundTokenizer.value&&!this._textModel.isTooLargeForTokenization()&&(this._backgroundTokenizer.value=this._defaultBackgroundTokenizer=new jnt(this._tokenizer,r),this._defaultBackgroundTokenizer.handleChanges()),i!=null&&i.backgroundTokenizerShouldOnlyVerifyTokens&&i.createBackgroundTokenizer?(this._debugBackgroundTokens=new SL(this._languageIdCodec),this._debugBackgroundStates=new P6(this._textModel.getLineCount()),this._debugBackgroundTokenizer.clear(),this._debugBackgroundTokenizer.value=i.createBackgroundTokenizer(this._textModel,{setTokens:l=>{var a;(a=this._debugBackgroundTokens)==null||a.setMultilineTokens(l,this._textModel)},backgroundTokenizationFinished(){},setEndState:(l,a)=>{var d;(d=this._debugBackgroundStates)==null||d.setEndState(l,a)}})):(this._debugBackgroundTokens=void 0,this._debugBackgroundStates=void 0,this._debugBackgroundTokenizer.value=void 0)}this.refreshAllVisibleLineTokens()}handleDidChangeAttached(){var e;(e=this._defaultBackgroundTokenizer)==null||e.handleChanges()}handleDidChangeContent(e){var t,i,n;if(e.isFlush)this.resetTokenization(!1);else if(!e.isEolChange){for(const o of e.changes){const[r,l]=IF(o.text);this._tokens.acceptEdit(o.range,r,l),(t=this._debugBackgroundTokens)==null||t.acceptEdit(o.range,r,l)}(i=this._debugBackgroundStates)==null||i.acceptChanges(e.changes),this._tokenizer&&this._tokenizer.store.acceptChanges(e.changes),(n=this._defaultBackgroundTokenizer)==null||n.handleChanges()}}setTokens(e){const{changes:t}=this._tokens.setMultilineTokens(e,this._textModel);return t.length>0&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:t}),{changes:t}}refreshAllVisibleLineTokens(){const e=Ii.joinMany([...this._attachedViewStates].map(([t,i])=>i.lineRanges));this.refreshRanges(e)}refreshRanges(e){for(const t of e)this.refreshRange(t.startLineNumber,t.endLineNumberExclusive-1)}refreshRange(e,t){var r,l;if(!this._tokenizer)return;e=Math.max(1,Math.min(this._textModel.getLineCount(),e)),t=Math.min(this._textModel.getLineCount(),t);const i=new j6,{heuristicTokens:n}=this._tokenizer.tokenizeHeuristically(i,e,t),o=this.setTokens(i.finalize());if(n)for(const a of o.changes)(r=this._backgroundTokenizer.value)==null||r.requestTokens(a.fromLineNumber,a.toLineNumber+1);(l=this._defaultBackgroundTokenizer)==null||l.checkFinished()}forceTokenization(e){var i,n;const t=new j6;(i=this._tokenizer)==null||i.updateTokensUntilLine(t,e),this.setTokens(t.finalize()),(n=this._defaultBackgroundTokenizer)==null||n.checkFinished()}hasAccurateTokensForLine(e){return this._tokenizer?this._tokenizer.hasAccurateTokensForLine(e):!0}isCheapToTokenize(e){return this._tokenizer?this._tokenizer.isCheapToTokenize(e):!0}getLineTokens(e){var n;const t=this._textModel.getLineContent(e),i=this._tokens.getTokens(this._textModel.getLanguageId(),e-1,t);if(this._debugBackgroundTokens&&this._debugBackgroundStates&&this._tokenizer&&this._debugBackgroundStates.getFirstInvalidEndStateLineNumberOrMax()>e&&this._tokenizer.store.getFirstInvalidEndStateLineNumberOrMax()>e){const o=this._debugBackgroundTokens.getTokens(this._textModel.getLanguageId(),e-1,t);!i.equals(o)&&((n=this._debugBackgroundTokenizer.value)!=null&&n.reportMismatchingTokens)&&this._debugBackgroundTokenizer.value.reportMismatchingTokens(e)}return i}getTokenTypeIfInsertingCharacter(e,t,i){if(!this._tokenizer)return 0;const n=this._textModel.validatePosition(new ge(e,t));return this.forceTokenization(n.lineNumber),this._tokenizer.getTokenTypeIfInsertingCharacter(n,i)}tokenizeLineWithEdit(e,t,i){if(!this._tokenizer)return null;const n=this._textModel.validatePosition(e);return this.forceTokenization(n.lineNumber),this._tokenizer.tokenizeLineWithEdit(n,t,i)}get hasTokens(){return this._tokens.hasTokens}}class $nt{constructor(){this.changeType=1}}class dp{static applyInjectedText(e,t){if(!t||t.length===0)return e;let i="",n=0;for(const o of t)i+=e.substring(n,o.column-1),n=o.column-1,i+=o.options.content;return i+=e.substring(n),i}static fromDecorations(e){const t=[];for(const i of e)i.options.before&&i.options.before.content.length>0&&t.push(new dp(i.ownerId,i.range.startLineNumber,i.range.startColumn,i.options.before,0)),i.options.after&&i.options.after.content.length>0&&t.push(new dp(i.ownerId,i.range.endLineNumber,i.range.endColumn,i.options.after,1));return t.sort((i,n)=>i.lineNumber===n.lineNumber?i.column===n.column?i.order-n.order:i.column-n.column:i.lineNumber-n.lineNumber),t}constructor(e,t,i,n,o){this.ownerId=e,this.lineNumber=t,this.column=i,this.options=n,this.order=o}}class Cme{constructor(e,t,i){this.changeType=2,this.lineNumber=e,this.detail=t,this.injectedText=i}}class est{constructor(e,t){this.changeType=3,this.fromLineNumber=e,this.toLineNumber=t}}class tst{constructor(e,t,i,n){this.changeType=4,this.injectedTexts=n,this.fromLineNumber=e,this.toLineNumber=t,this.detail=i}}class ist{constructor(){this.changeType=5}}class G1{constructor(e,t,i,n){this.changes=e,this.versionId=t,this.isUndoing=i,this.isRedoing=n,this.resultingSelection=null}containsEvent(e){for(let t=0,i=this.changes.length;t<i;t++)if(this.changes[t].changeType===e)return!0;return!1}static merge(e,t){const i=[].concat(e.changes).concat(t.changes),n=t.versionId,o=e.isUndoing||t.isUndoing,r=e.isRedoing||t.isRedoing;return new G1(i,n,o,r)}}class HRe{constructor(e){this.changes=e}}class XS{constructor(e,t){this.rawContentChangedEvent=e,this.contentChangedEvent=t}merge(e){const t=G1.merge(this.rawContentChangedEvent,e.rawContentChangedEvent),i=XS._mergeChangeEvents(this.contentChangedEvent,e.contentChangedEvent);return new XS(t,i)}static _mergeChangeEvents(e,t){const i=[].concat(e.changes).concat(t.changes),n=t.eol,o=t.versionId,r=e.isUndoing||t.isUndoing,l=e.isRedoing||t.isRedoing,a=e.isFlush||t.isFlush,d=e.isEolChange&&t.isEolChange;return{changes:i,eol:n,isEolChange:d,versionId:o,isUndoing:r,isRedoing:l,isFlush:a}}}var nst=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},mI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},aZ;function sst(s){const e=new ORe;return e.acceptChunk(s),e.finish()}function ost(s){const e=new ORe;let t;for(;typeof(t=s.read())=="string";)e.acceptChunk(t);return e.finish()}function Bme(s,e){let t;return typeof s=="string"?t=sst(s):_Ke(s)?t=ost(s):t=s,t.create(e)}let pI=0;const rst=999,lst=1e4;class ast{constructor(e){this._source=e,this._eos=!1}read(){if(this._eos)return null;const e=[];let t=0,i=0;do{const n=this._source.read();if(n===null)return this._eos=!0,t===0?null:e.join("");if(n.length>0&&(e[t++]=n,i+=n.length),i>=64*1024)return e.join("")}while(!0)}}const Sw=()=>{throw new Error("Invalid change accessor")};var Fg;let Km=(Fg=class extends be{static resolveOptions(e,t){if(t.detectIndentation){const i=Zme(e,t.tabSize,t.insertSpaces);return new gD({tabSize:i.tabSize,indentSize:"tabSize",insertSpaces:i.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL,bracketPairColorizationOptions:t.bracketPairColorizationOptions})}return new gD(t)}get onDidChangeLanguage(){return this._tokenizationTextModelPart.onDidChangeLanguage}get onDidChangeLanguageConfiguration(){return this._tokenizationTextModelPart.onDidChangeLanguageConfiguration}get onDidChangeTokens(){return this._tokenizationTextModelPart.onDidChangeTokens}onDidChangeContent(e){return this._eventEmitter.slowEvent(t=>e(t.contentChangedEvent))}onDidChangeContentOrInjectedText(e){return Pu(this._eventEmitter.fastEvent(t=>e(t)),this._onDidChangeInjectedText.event(t=>e(t)))}_isDisposing(){return this.__isDisposing}get tokenization(){return this._tokenizationTextModelPart}get bracketPairs(){return this._bracketPairs}get guides(){return this._guidesTextModelPart}constructor(e,t,i,n=null,o,r,l,a){super(),this._undoRedoService=o,this._languageService=r,this._languageConfigurationService=l,this.instantiationService=a,this._onWillDispose=this._register(new fe),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new pst(p=>this.handleBeforeFireDecorationsChangedEvent(p))),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeOptions=this._register(new fe),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new fe),this.onDidChangeAttached=this._onDidChangeAttached.event,this._onDidChangeInjectedText=this._register(new fe),this._eventEmitter=this._register(new gst),this._languageSelectionListener=this._register(new Lr),this._deltaDecorationCallCnt=0,this._attachedViews=new Pnt,pI++,this.id="$model"+pI,this.isForSimpleWidget=i.isForSimpleWidget,typeof n>"u"||n===null?this._associatedResource=ni.parse("inmemory://model/"+pI):this._associatedResource=n,this._attachedEditorCount=0;const{textBuffer:d,disposable:c}=Bme(e,i.defaultEOL);this._buffer=d,this._bufferDisposable=c,this._options=aZ.resolveOptions(this._buffer,i);const h=typeof t=="string"?t:t.languageId;typeof t!="string"&&(this._languageSelectionListener.value=t.onDidChange(()=>this._setLanguage(t.languageId))),this._bracketPairs=this._register(new pnt(this,this._languageConfigurationService)),this._guidesTextModelPart=this._register(new Fnt(this,this._languageConfigurationService)),this._decorationProvider=this._register(new fnt(this)),this._tokenizationTextModelPart=this.instantiationService.createInstance(H6,this,this._bracketPairs,h,this._attachedViews);const u=this._buffer.getLineCount(),m=this._buffer.getValueLengthInRange(new z(1,1,u,this._buffer.getLineLength(u)+1),0);i.largeFileOptimizations?(this._isTooLargeForTokenization=m>aZ.LARGE_FILE_SIZE_THRESHOLD||u>aZ.LARGE_FILE_LINE_COUNT_THRESHOLD,this._isTooLargeForHeapOperation=m>aZ.LARGE_FILE_HEAP_OPERATION_THRESHOLD):(this._isTooLargeForTokenization=!1,this._isTooLargeForHeapOperation=!1),this._isTooLargeForSyncing=m>aZ._MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this.__isDisposing=!1,this._instanceId=EZe(pI),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new Lme,this._commandManager=new Xoe(this,this._undoRedoService),this._isUndoing=!1,this._isRedoing=!1,this._trimAutoWhitespaceLines=null,this._register(this._decorationProvider.onDidChange(()=>{this._onDidChangeDecorations.beginDeferredEmit(),this._onDidChangeDecorations.fire(),this._onDidChangeDecorations.endDeferredEmit()})),this._languageService.requestRichLanguageFeatures(h),this._register(this._languageConfigurationService.onDidChange(p=>{this._bracketPairs.handleLanguageConfigurationServiceChange(p),this._tokenizationTextModelPart.handleLanguageConfigurationServiceChange(p)}))}dispose(){this.__isDisposing=!0,this._onWillDispose.fire(),this._tokenizationTextModelPart.dispose(),this._isDisposed=!0,super.dispose(),this._bufferDisposable.dispose(),this.__isDisposing=!1;const e=new D1([],"",`
- `,!1,!1,!0,!0);e.dispose(),this._buffer=e,this._bufferDisposable=be.None}_assertNotDisposed(){if(this._isDisposed)throw new _n("Model is disposed!")}_emitContentChangedEvent(e,t){this.__isDisposing||(this._tokenizationTextModelPart.handleDidChangeContent(t),this._bracketPairs.handleDidChangeContent(t),this._eventEmitter.fire(new XS(e,t)))}setValue(e){if(this._assertNotDisposed(),e==null)throw Xh();const{textBuffer:t,disposable:i}=Bme(e,this._options.defaultEOL);this._setValueFromTextBuffer(t,i)}_createContentChanged2(e,t,i,n,o,r,l,a){return{changes:[{range:e,rangeOffset:t,rangeLength:i,text:n}],eol:this._buffer.getEOL(),isEolChange:a,versionId:this.getVersionId(),isUndoing:o,isRedoing:r,isFlush:l}}_setValueFromTextBuffer(e,t){this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueLengthInRange(i),o=this.getLineCount(),r=this.getLineMaxColumn(o);this._buffer=e,this._bufferDisposable.dispose(),this._bufferDisposable=t,this._increaseVersionId(),this._decorations=Object.create(null),this._decorationsTree=new Lme,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new G1([new $nt],this._versionId,!1,!1),this._createContentChanged2(new z(1,1,o,r),0,n,this.getValue(),!1,!1,!0,!1))}setEOL(e){this._assertNotDisposed();const t=e===1?`\r
- `:`
- `;if(this._buffer.getEOL()===t)return;const i=this.getFullModelRange(),n=this.getValueLengthInRange(i),o=this.getLineCount(),r=this.getLineMaxColumn(o);this._onBeforeEOLChange(),this._buffer.setEOL(t),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new G1([new ist],this._versionId,!1,!1),this._createContentChanged2(new z(1,1,o,r),0,n,this.getValue(),!1,!1,!1,!0))}_onBeforeEOLChange(){this._decorationsTree.ensureAllNodesHaveRanges(this)}_onAfterEOLChange(){const e=this.getVersionId(),t=this._decorationsTree.collectNodesPostOrder();for(let i=0,n=t.length;i<n;i++){const o=t[i],r=o.range,l=o.cachedAbsoluteStart-o.start,a=this._buffer.getOffsetAt(r.startLineNumber,r.startColumn),d=this._buffer.getOffsetAt(r.endLineNumber,r.endColumn);o.cachedAbsoluteStart=a,o.cachedAbsoluteEnd=d,o.cachedVersionId=e,o.start=a-l,o.end=d-l,GF(o)}}onBeforeAttached(){return this._attachedEditorCount++,this._attachedEditorCount===1&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.attachView()}onBeforeDetached(e){this._attachedEditorCount--,this._attachedEditorCount===0&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.detachView(e)}isAttachedToEditor(){return this._attachedEditorCount>0}getAttachedEditorCount(){return this._attachedEditorCount}isTooLargeForSyncing(){return this._isTooLargeForSyncing}isTooLargeForTokenization(){return this._isTooLargeForTokenization}isTooLargeForHeapOperation(){return this._isTooLargeForHeapOperation}isDisposed(){return this._isDisposed}isDominatedByLongLines(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;let e=0,t=0;const i=this._buffer.getLineCount();for(let n=1;n<=i;n++){const o=this._buffer.getLineLength(n);o>=lst?t+=o:e+=o}return t>e}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(e){this._assertNotDisposed();const t=typeof e.tabSize<"u"?e.tabSize:this._options.tabSize,i=typeof e.indentSize<"u"?e.indentSize:this._options.originalIndentSize,n=typeof e.insertSpaces<"u"?e.insertSpaces:this._options.insertSpaces,o=typeof e.trimAutoWhitespace<"u"?e.trimAutoWhitespace:this._options.trimAutoWhitespace,r=typeof e.bracketColorizationOptions<"u"?e.bracketColorizationOptions:this._options.bracketPairColorizationOptions,l=new gD({tabSize:t,indentSize:i,insertSpaces:n,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:o,bracketPairColorizationOptions:r});if(this._options.equals(l))return;const a=this._options.createChangeEvent(l);this._options=l,this._bracketPairs.handleDidChangeOptions(a),this._decorationProvider.handleDidChangeOptions(a),this._onDidChangeOptions.fire(a)}detectIndentation(e,t){this._assertNotDisposed();const i=Zme(this._buffer,t,e);this.updateOptions({insertSpaces:i.insertSpaces,tabSize:i.tabSize,indentSize:i.tabSize})}normalizeIndentation(e){return this._assertNotDisposed(),Ioe(e,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(e=null){const t=this.findMatches(xZe.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(e,t.map(i=>({range:i.range,text:null})),()=>null)}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getInitialUndoRedoSnapshot(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}getOffsetAt(e){this._assertNotDisposed();const t=this._validatePosition(e.lineNumber,e.column,0);return this._buffer.getOffsetAt(t.lineNumber,t.column)}getPositionAt(e){this._assertNotDisposed();const t=Math.min(this._buffer.getLength(),Math.max(0,e));return this._buffer.getPositionAt(t)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(e){this._versionId=e}_overwriteAlternativeVersionId(e){this._alternativeVersionId=e}_overwriteInitialUndoRedoSnapshot(e){this._initialUndoRedoSnapshot=e}getValue(e,t=!1){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new _n("Operation would exceed heap memory limits");const i=this.getFullModelRange(),n=this.getValueInRange(i,e);return t?this._buffer.getBOM()+n:n}createSnapshot(e=!1){return new ast(this._buffer.createSnapshot(e))}getValueLength(e,t=!1){this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueLengthInRange(i,e);return t?this._buffer.getBOM().length+n:n}getValueInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(e),t)}getValueLengthInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(e),t)}getCharacterCountInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(e),t)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new _n("Illegal value for lineNumber");return this._buffer.getLineContent(e)}getLineLength(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new _n("Illegal value for lineNumber");return this._buffer.getLineLength(e)}getLinesContent(){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new _n("Operation would exceed heap memory limits");return this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getEndOfLineSequence(){return this._assertNotDisposed(),this._buffer.getEOL()===`
- `?0:1}getLineMinColumn(e){return this._assertNotDisposed(),1}getLineMaxColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new _n("Illegal value for lineNumber");return this._buffer.getLineLength(e)+1}getLineFirstNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new _n("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(e)}getLineLastNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new _n("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(e)}_validateRangeRelaxedNoAllocations(e){const t=this._buffer.getLineCount(),i=e.startLineNumber,n=e.startColumn;let o=Math.floor(typeof i=="number"&&!isNaN(i)?i:1),r=Math.floor(typeof n=="number"&&!isNaN(n)?n:1);if(o<1)o=1,r=1;else if(o>t)o=t,r=this.getLineMaxColumn(o);else if(r<=1)r=1;else{const h=this.getLineMaxColumn(o);r>=h&&(r=h)}const l=e.endLineNumber,a=e.endColumn;let d=Math.floor(typeof l=="number"&&!isNaN(l)?l:1),c=Math.floor(typeof a=="number"&&!isNaN(a)?a:1);if(d<1)d=1,c=1;else if(d>t)d=t,c=this.getLineMaxColumn(d);else if(c<=1)c=1;else{const h=this.getLineMaxColumn(d);c>=h&&(c=h)}return i===o&&n===r&&l===d&&a===c&&e instanceof z&&!(e instanceof _t)?e:new z(o,r,d,c)}_isValidPosition(e,t,i){if(typeof e!="number"||typeof t!="number"||isNaN(e)||isNaN(t)||e<1||t<1||(e|0)!==e||(t|0)!==t)return!1;const n=this._buffer.getLineCount();if(e>n)return!1;if(t===1)return!0;const o=this.getLineMaxColumn(e);if(t>o)return!1;if(i===1){const r=this._buffer.getLineCharCode(e,t-2);if(Mr(r))return!1}return!0}_validatePosition(e,t,i){const n=Math.floor(typeof e=="number"&&!isNaN(e)?e:1),o=Math.floor(typeof t=="number"&&!isNaN(t)?t:1),r=this._buffer.getLineCount();if(n<1)return new ge(1,1);if(n>r)return new ge(r,this.getLineMaxColumn(r));if(o<=1)return new ge(n,1);const l=this.getLineMaxColumn(n);if(o>=l)return new ge(n,l);if(i===1){const a=this._buffer.getLineCharCode(n,o-2);if(Mr(a))return new ge(n,o-1)}return new ge(n,o)}validatePosition(e){return this._assertNotDisposed(),e instanceof ge&&this._isValidPosition(e.lineNumber,e.column,1)?e:this._validatePosition(e.lineNumber,e.column,1)}_isValidRange(e,t){const i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,r=e.endColumn;if(!this._isValidPosition(i,n,0)||!this._isValidPosition(o,r,0))return!1;if(t===1){const l=n>1?this._buffer.getLineCharCode(i,n-2):0,a=r>1&&r<=this._buffer.getLineLength(o)?this._buffer.getLineCharCode(o,r-2):0,d=Mr(l),c=Mr(a);return!d&&!c}return!0}validateRange(e){if(this._assertNotDisposed(),e instanceof z&&!(e instanceof _t)&&this._isValidRange(e,1))return e;const i=this._validatePosition(e.startLineNumber,e.startColumn,0),n=this._validatePosition(e.endLineNumber,e.endColumn,0),o=i.lineNumber,r=i.column,l=n.lineNumber,a=n.column;{const d=r>1?this._buffer.getLineCharCode(o,r-2):0,c=a>1&&a<=this._buffer.getLineLength(l)?this._buffer.getLineCharCode(l,a-2):0,h=Mr(d),u=Mr(c);return!h&&!u?new z(o,r,l,a):o===l&&r===a?new z(o,r-1,l,a-1):h&&u?new z(o,r-1,l,a+1):h?new z(o,r-1,l,a):new z(o,r,l,a+1)}}modifyPosition(e,t){this._assertNotDisposed();const i=this.getOffsetAt(e)+t;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,i)))}getFullModelRange(){this._assertNotDisposed();const e=this.getLineCount();return new z(1,1,e,this.getLineMaxColumn(e))}findMatchesLineByLine(e,t,i,n){return this._buffer.findMatchesLineByLine(e,t,i,n)}findMatches(e,t,i,n,o,r,l=rst){this._assertNotDisposed();let a=null;t!==null&&(Array.isArray(t)||(t=[t]),t.every(h=>z.isIRange(h))&&(a=t.map(h=>this.validateRange(h)))),a===null&&(a=[this.getFullModelRange()]),a=a.sort((h,u)=>h.startLineNumber-u.startLineNumber||h.startColumn-u.startColumn);const d=[];d.push(a.reduce((h,u)=>z.areIntersecting(h,u)?h.plusRange(u):(d.push(h),u)));let c;if(!i&&e.indexOf(`
- `)<0){const u=new lZ(e,i,n,o).parseSearchRequest();if(!u)return[];c=m=>this.findMatchesLineByLine(m,u,r,l)}else c=h=>jx.findMatches(this,new lZ(e,i,n,o),h,r,l);return d.map(c).reduce((h,u)=>h.concat(u),[])}findNextMatch(e,t,i,n,o,r){this._assertNotDisposed();const l=this.validatePosition(t);if(!i&&e.indexOf(`
- `)<0){const d=new lZ(e,i,n,o).parseSearchRequest();if(!d)return null;const c=this.getLineCount();let h=new z(l.lineNumber,l.column,c,this.getLineMaxColumn(c)),u=this.findMatchesLineByLine(h,d,r,1);return jx.findNextMatch(this,new lZ(e,i,n,o),l,r),u.length>0||(h=new z(1,1,l.lineNumber,this.getLineMaxColumn(l.lineNumber)),u=this.findMatchesLineByLine(h,d,r,1),u.length>0)?u[0]:null}return jx.findNextMatch(this,new lZ(e,i,n,o),l,r)}findPreviousMatch(e,t,i,n,o,r){this._assertNotDisposed();const l=this.validatePosition(t);return jx.findPreviousMatch(this,new lZ(e,i,n,o),l,r)}pushStackElement(){this._commandManager.pushStackElement()}popStackElement(){this._commandManager.popStackElement()}pushEOL(e){if((this.getEOL()===`
- `?0:1)!==e)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(e){return e instanceof nP?e:new nP(e.identifier||null,this.validateRange(e.range),e.text,e.forceMoveMarkers||!1,e.isAutoWhitespaceEdit||!1,e._isTracked||!1)}_validateEditOperations(e){const t=[];for(let i=0,n=e.length;i<n;i++)t[i]=this._validateEditOperation(e[i]);return t}pushEditOperations(e,t,i,n){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._pushEditOperations(e,this._validateEditOperations(t),i,n)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_pushEditOperations(e,t,i,n){if(this._options.trimAutoWhitespace&&this._trimAutoWhitespaceLines){const o=t.map(l=>({range:this.validateRange(l.range),text:l.text}));let r=!0;if(e)for(let l=0,a=e.length;l<a;l++){const d=e[l];let c=!1;for(let h=0,u=o.length;h<u;h++){const m=o[h].range,p=m.startLineNumber>d.endLineNumber,g=d.startLineNumber>m.endLineNumber;if(!p&&!g){c=!0;break}}if(!c){r=!1;break}}if(r)for(let l=0,a=this._trimAutoWhitespaceLines.length;l<a;l++){const d=this._trimAutoWhitespaceLines[l],c=this.getLineMaxColumn(d);let h=!0;for(let u=0,m=o.length;u<m;u++){const p=o[u].range,g=o[u].text;if(!(d<p.startLineNumber||d>p.endLineNumber)&&!(d===p.startLineNumber&&p.startColumn===c&&p.isEmpty()&&g&&g.length>0&&g.charAt(0)===`
- `)&&!(d===p.startLineNumber&&p.startColumn===1&&p.isEmpty()&&g&&g.length>0&&g.charAt(g.length-1)===`
- `)){h=!1;break}}if(h){const u=new z(d,1,d,c);t.push(new nP(null,u,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(e,t,i,n)}_applyUndo(e,t,i,n){const o=e.map(r=>{const l=this.getPositionAt(r.newPosition),a=this.getPositionAt(r.newEnd);return{range:new z(l.lineNumber,l.column,a.lineNumber,a.column),text:r.oldText}});this._applyUndoRedoEdits(o,t,!0,!1,i,n)}_applyRedo(e,t,i,n){const o=e.map(r=>{const l=this.getPositionAt(r.oldPosition),a=this.getPositionAt(r.oldEnd);return{range:new z(l.lineNumber,l.column,a.lineNumber,a.column),text:r.newText}});this._applyUndoRedoEdits(o,t,!1,!0,i,n)}_applyUndoRedoEdits(e,t,i,n,o,r){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=i,this._isRedoing=n,this.applyEdits(e,!1),this.setEOL(t),this._overwriteAlternativeVersionId(o)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(r),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(e,t=!1){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const i=this._validateEditOperations(e);return this._doApplyEdits(i,t)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(e,t){const i=this._buffer.getLineCount(),n=this._buffer.applyEdits(e,this._options.trimAutoWhitespace,t),o=this._buffer.getLineCount(),r=n.changes;if(this._trimAutoWhitespaceLines=n.trimAutoWhitespaceLineNumbers,r.length!==0){for(let d=0,c=r.length;d<c;d++){const h=r[d];this._decorationsTree.acceptReplace(h.rangeOffset,h.rangeLength,h.text.length,h.forceMoveMarkers)}const l=[];this._increaseVersionId();let a=i;for(let d=0,c=r.length;d<c;d++){const h=r[d],[u]=IF(h.text);this._onDidChangeDecorations.fire();const m=h.range.startLineNumber,p=h.range.endLineNumber,g=p-m,f=u,b=Math.min(g,f),U=f-g,S=o-a-U+m,Z=S,R=S+f,y=this._decorationsTree.getInjectedTextInInterval(this,this.getOffsetAt(new ge(Z,1)),this.getOffsetAt(new ge(R,this.getLineMaxColumn(R))),0),N=dp.fromDecorations(y),w=new zf(N);for(let Q=b;Q>=0;Q--){const C=m+Q,v=S+Q;w.takeFromEndWhile(J=>J.lineNumber>v);const Y=w.takeFromEndWhile(J=>J.lineNumber===v);l.push(new Cme(C,this.getLineContent(v),Y))}if(b<g){const Q=m+b;l.push(new est(Q+1,p))}if(b<f){const Q=new zf(N),C=m+b,v=f-b,Y=o-a-v+C+1,J=[],k=[];for(let E=0;E<v;E++){const K=Y+E;k[E]=this.getLineContent(K),Q.takeWhile(de=>de.lineNumber<K),J[E]=Q.takeWhile(de=>de.lineNumber===K)}l.push(new tst(C+1,m+f,k,J))}a+=U}this._emitContentChangedEvent(new G1(l,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:r,eol:this._buffer.getEOL(),isEolChange:!1,versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return n.reverseEdits===null?void 0:n.reverseEdits}undo(){return this._undoRedoService.undo(this.uri)}canUndo(){return this._undoRedoService.canUndo(this.uri)}redo(){return this._undoRedoService.redo(this.uri)}canRedo(){return this._undoRedoService.canRedo(this.uri)}handleBeforeFireDecorationsChangedEvent(e){if(e===null||e.size===0)return;const i=Array.from(e).map(n=>new Cme(n,this.getLineContent(n),this._getInjectedTextInLine(n)));this._onDidChangeInjectedText.fire(new HRe(i))}changeDecorations(e,t=0){this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(t,e)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(e,t){const i={addDecoration:(o,r)=>this._deltaDecorationsImpl(e,[],[{range:o,options:r}])[0],changeDecoration:(o,r)=>{this._changeDecorationImpl(o,r)},changeDecorationOptions:(o,r)=>{this._changeDecorationOptionsImpl(o,kme(r))},removeDecoration:o=>{this._deltaDecorationsImpl(e,[o],[])},deltaDecorations:(o,r)=>o.length===0&&r.length===0?[]:this._deltaDecorationsImpl(e,o,r)};let n=null;try{n=t(i)}catch(o){wi(o)}return i.addDecoration=Sw,i.changeDecoration=Sw,i.changeDecorationOptions=Sw,i.removeDecoration=Sw,i.deltaDecorations=Sw,n}deltaDecorations(e,t,i=0){if(this._assertNotDisposed(),e||(e=[]),e.length===0&&t.length===0)return[];try{return this._deltaDecorationCallCnt++,this._deltaDecorationCallCnt>1&&(console.warn("Invoking deltaDecorations recursively could lead to leaking decorations."),wi(new Error("Invoking deltaDecorations recursively could lead to leaking decorations."))),this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl(i,e,t)}finally{this._onDidChangeDecorations.endDeferredEmit(),this._deltaDecorationCallCnt--}}_getTrackedRange(e){return this.getDecorationRange(e)}_setTrackedRange(e,t,i){const n=e?this._decorations[e]:null;if(!n)return t?this._deltaDecorationsImpl(0,[],[{range:t,options:vme[i]}],!0)[0]:null;if(!t)return this._decorationsTree.delete(n),delete this._decorations[n.id],null;const o=this._validateRangeRelaxedNoAllocations(t),r=this._buffer.getOffsetAt(o.startLineNumber,o.startColumn),l=this._buffer.getOffsetAt(o.endLineNumber,o.endColumn);return this._decorationsTree.delete(n),n.reset(this.getVersionId(),r,l,o),n.setOptions(vme[i]),this._decorationsTree.insert(n),n.id}removeAllDecorationsWithOwnerId(e){if(this._isDisposed)return;const t=this._decorationsTree.collectNodesFromOwner(e);for(let i=0,n=t.length;i<n;i++){const o=t[i];this._decorationsTree.delete(o),delete this._decorations[o.id]}}getDecorationOptions(e){const t=this._decorations[e];return t?t.options:null}getDecorationRange(e){const t=this._decorations[e];return t?this._decorationsTree.getNodeRange(this,t):null}getLineDecorations(e,t=0,i=!1){return e<1||e>this.getLineCount()?[]:this.getLinesDecorations(e,e,t,i)}getLinesDecorations(e,t,i=0,n=!1,o=!1){const r=this.getLineCount(),l=Math.min(r,Math.max(1,e)),a=Math.min(r,Math.max(1,t)),d=this.getLineMaxColumn(a),c=new z(l,1,a,d),h=this._getDecorationsInRange(c,i,n,o);return PK(h,this._decorationProvider.getDecorationsInRange(c,i,n)),h}getDecorationsInRange(e,t=0,i=!1,n=!1,o=!1){const r=this.validateRange(e),l=this._getDecorationsInRange(r,t,i,o);return PK(l,this._decorationProvider.getDecorationsInRange(r,t,i,n)),l}getOverviewRulerDecorations(e=0,t=!1){return this._decorationsTree.getAll(this,e,t,!0,!1)}getInjectedTextDecorations(e=0){return this._decorationsTree.getAllInjectedText(this,e)}_getInjectedTextInLine(e){const t=this._buffer.getOffsetAt(e,1),i=t+this._buffer.getLineLength(e),n=this._decorationsTree.getInjectedTextInInterval(this,t,i,0);return dp.fromDecorations(n).filter(o=>o.lineNumber===e)}getAllDecorations(e=0,t=!1){let i=this._decorationsTree.getAll(this,e,t,!1,!1);return i=i.concat(this._decorationProvider.getAllDecorations(e,t)),i}getAllMarginDecorations(e=0){return this._decorationsTree.getAll(this,e,!1,!1,!0)}_getDecorationsInRange(e,t,i,n){const o=this._buffer.getOffsetAt(e.startLineNumber,e.startColumn),r=this._buffer.getOffsetAt(e.endLineNumber,e.endColumn);return this._decorationsTree.getAllInInterval(this,o,r,t,i,n)}getRangeAt(e,t){return this._buffer.getRangeAt(e,t-e)}_changeDecorationImpl(e,t){const i=this._decorations[e];if(!i)return;if(i.options.after){const l=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(l.endLineNumber)}if(i.options.before){const l=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(l.startLineNumber)}const n=this._validateRangeRelaxedNoAllocations(t),o=this._buffer.getOffsetAt(n.startLineNumber,n.startColumn),r=this._buffer.getOffsetAt(n.endLineNumber,n.endColumn);this._decorationsTree.delete(i),i.reset(this.getVersionId(),o,r,n),this._decorationsTree.insert(i),this._onDidChangeDecorations.checkAffectedAndFire(i.options),i.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(n.endLineNumber),i.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(n.startLineNumber)}_changeDecorationOptionsImpl(e,t){const i=this._decorations[e];if(!i)return;const n=!!(i.options.overviewRuler&&i.options.overviewRuler.color),o=!!(t.overviewRuler&&t.overviewRuler.color);if(this._onDidChangeDecorations.checkAffectedAndFire(i.options),this._onDidChangeDecorations.checkAffectedAndFire(t),i.options.after||t.after){const a=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(a.endLineNumber)}if(i.options.before||t.before){const a=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(a.startLineNumber)}const r=n!==o,l=cst(t)!==WD(i);r||l?(this._decorationsTree.delete(i),i.setOptions(t),this._decorationsTree.insert(i)):i.setOptions(t)}_deltaDecorationsImpl(e,t,i,n=!1){const o=this.getVersionId(),r=t.length;let l=0;const a=i.length;let d=0;this._onDidChangeDecorations.beginDeferredEmit();try{const c=new Array(a);for(;l<r||d<a;){let h=null;if(l<r){do h=this._decorations[t[l++]];while(!h&&l<r);if(h){if(h.options.after){const u=this._decorationsTree.getNodeRange(this,h);this._onDidChangeDecorations.recordLineAffectedByInjectedText(u.endLineNumber)}if(h.options.before){const u=this._decorationsTree.getNodeRange(this,h);this._onDidChangeDecorations.recordLineAffectedByInjectedText(u.startLineNumber)}this._decorationsTree.delete(h),n||this._onDidChangeDecorations.checkAffectedAndFire(h.options)}}if(d<a){if(!h){const b=++this._lastDecorationId,U=`${this._instanceId};${b}`;h=new XRe(U,0,0),this._decorations[U]=h}const u=i[d],m=this._validateRangeRelaxedNoAllocations(u.range),p=kme(u.options),g=this._buffer.getOffsetAt(m.startLineNumber,m.startColumn),f=this._buffer.getOffsetAt(m.endLineNumber,m.endColumn);h.ownerId=e,h.reset(o,g,f,m),h.setOptions(p),h.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(m.endLineNumber),h.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(m.startLineNumber),n||this._onDidChangeDecorations.checkAffectedAndFire(p),this._decorationsTree.insert(h),c[d]=h.id,d++}else h&&delete this._decorations[h.id]}return c}finally{this._onDidChangeDecorations.endDeferredEmit()}}getLanguageId(){return this.tokenization.getLanguageId()}setLanguage(e,t){typeof e=="string"?(this._languageSelectionListener.clear(),this._setLanguage(e,t)):(this._languageSelectionListener.value=e.onDidChange(()=>this._setLanguage(e.languageId,t)),this._setLanguage(e.languageId,t))}_setLanguage(e,t){this.tokenization.setLanguageId(e,t),this._languageService.requestRichLanguageFeatures(e)}getLanguageIdAtPosition(e,t){return this.tokenization.getLanguageIdAtPosition(e,t)}getWordAtPosition(e){return this._tokenizationTextModelPart.getWordAtPosition(e)}getWordUntilPosition(e){return this._tokenizationTextModelPart.getWordUntilPosition(e)}normalizePosition(e,t){return e}getLineIndentColumn(e){return dst(this.getLineContent(e))+1}},aZ=Fg,Fg._MODEL_SYNC_LIMIT=50*1024*1024,Fg.LARGE_FILE_SIZE_THRESHOLD=20*1024*1024,Fg.LARGE_FILE_LINE_COUNT_THRESHOLD=300*1e3,Fg.LARGE_FILE_HEAP_OPERATION_THRESHOLD=256*1024*1024,Fg.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:Yl.tabSize,indentSize:Yl.indentSize,insertSpaces:Yl.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:Yl.trimAutoWhitespace,largeFileOptimizations:Yl.largeFileOptimizations,bracketPairColorizationOptions:Yl.bracketPairColorizationOptions},Fg);Km=aZ=nst([mI(4,eoe),mI(5,ao),mI(6,bo),mI(7,ti)],Km);function dst(s){let e=0;for(const t of s)if(t===" "||t===" ")e++;else break;return e}function TP(s){return!!(s.options.overviewRuler&&s.options.overviewRuler.color)}function cst(s){return!!s.after||!!s.before}function WD(s){return!!s.options.after||!!s.options.before}class Lme{constructor(){this._decorationsTree0=new yP,this._decorationsTree1=new yP,this._injectedTextDecorationsTree=new yP}ensureAllNodesHaveRanges(e){this.getAll(e,0,!1,!1,!1)}_ensureNodesHaveRanges(e,t){for(const i of t)i.range===null&&(i.range=e.getRangeAt(i.cachedAbsoluteStart,i.cachedAbsoluteEnd));return t}getAllInInterval(e,t,i,n,o,r){const l=e.getVersionId(),a=this._intervalSearch(t,i,n,o,l,r);return this._ensureNodesHaveRanges(e,a)}_intervalSearch(e,t,i,n,o,r){const l=this._decorationsTree0.intervalSearch(e,t,i,n,o,r),a=this._decorationsTree1.intervalSearch(e,t,i,n,o,r),d=this._injectedTextDecorationsTree.intervalSearch(e,t,i,n,o,r);return l.concat(a).concat(d)}getInjectedTextInInterval(e,t,i,n){const o=e.getVersionId(),r=this._injectedTextDecorationsTree.intervalSearch(t,i,n,!1,o,!1);return this._ensureNodesHaveRanges(e,r).filter(l=>l.options.showIfCollapsed||!l.range.isEmpty())}getAllInjectedText(e,t){const i=e.getVersionId(),n=this._injectedTextDecorationsTree.search(t,!1,i,!1);return this._ensureNodesHaveRanges(e,n).filter(o=>o.options.showIfCollapsed||!o.range.isEmpty())}getAll(e,t,i,n,o){const r=e.getVersionId(),l=this._search(t,i,n,r,o);return this._ensureNodesHaveRanges(e,l)}_search(e,t,i,n,o){if(i)return this._decorationsTree1.search(e,t,n,o);{const r=this._decorationsTree0.search(e,t,n,o),l=this._decorationsTree1.search(e,t,n,o),a=this._injectedTextDecorationsTree.search(e,t,n,o);return r.concat(l).concat(a)}}collectNodesFromOwner(e){const t=this._decorationsTree0.collectNodesFromOwner(e),i=this._decorationsTree1.collectNodesFromOwner(e),n=this._injectedTextDecorationsTree.collectNodesFromOwner(e);return t.concat(i).concat(n)}collectNodesPostOrder(){const e=this._decorationsTree0.collectNodesPostOrder(),t=this._decorationsTree1.collectNodesPostOrder(),i=this._injectedTextDecorationsTree.collectNodesPostOrder();return e.concat(t).concat(i)}insert(e){WD(e)?this._injectedTextDecorationsTree.insert(e):TP(e)?this._decorationsTree1.insert(e):this._decorationsTree0.insert(e)}delete(e){WD(e)?this._injectedTextDecorationsTree.delete(e):TP(e)?this._decorationsTree1.delete(e):this._decorationsTree0.delete(e)}getNodeRange(e,t){const i=e.getVersionId();return t.cachedVersionId!==i&&this._resolveNode(t,i),t.range===null&&(t.range=e.getRangeAt(t.cachedAbsoluteStart,t.cachedAbsoluteEnd)),t.range}_resolveNode(e,t){WD(e)?this._injectedTextDecorationsTree.resolveNode(e,t):TP(e)?this._decorationsTree1.resolveNode(e,t):this._decorationsTree0.resolveNode(e,t)}acceptReplace(e,t,i,n){this._decorationsTree0.acceptReplace(e,t,i,n),this._decorationsTree1.acceptReplace(e,t,i,n),this._injectedTextDecorationsTree.acceptReplace(e,t,i,n)}}function Qp(s){return s.replace(/[^a-z0-9\-_]/gi," ")}class KRe{constructor(e){this.color=e.color||"",this.darkColor=e.darkColor||""}}class hst extends KRe{constructor(e){super(e),this._resolvedColor=null,this.position=typeof e.position=="number"?e.position:eh.Center}getColor(e){return this._resolvedColor||(e.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(e,t){if(typeof e=="string")return e;const i=e?t.getColor(e.id):null;return i?i.toString():""}}class ust{constructor(e){this.position=(e==null?void 0:e.position)??em.Center,this.persistLane=e==null?void 0:e.persistLane}}class mst extends KRe{constructor(e){super(e),this.position=e.position,this.sectionHeaderStyle=e.sectionHeaderStyle??null,this.sectionHeaderText=e.sectionHeaderText??null}getColor(e){return this._resolvedColor||(e.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(e,t){return typeof e=="string"?Je.fromHex(e):t.getColor(e.id)}}class JF{static from(e){return e instanceof JF?e:new JF(e)}constructor(e){this.content=e.content||"",this.inlineClassName=e.inlineClassName||null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.attachedData=e.attachedData||null,this.cursorStops=e.cursorStops||null}}class ki{static register(e){return new ki(e)}static createDynamic(e){return new ki(e)}constructor(e){this.description=e.description,this.blockClassName=e.blockClassName?Qp(e.blockClassName):null,this.blockDoesNotCollapse=e.blockDoesNotCollapse??null,this.blockIsAfterEnd=e.blockIsAfterEnd??null,this.blockPadding=e.blockPadding??null,this.stickiness=e.stickiness||0,this.zIndex=e.zIndex||0,this.className=e.className?Qp(e.className):null,this.shouldFillLineOnLineBreak=e.shouldFillLineOnLineBreak??null,this.hoverMessage=e.hoverMessage||null,this.glyphMarginHoverMessage=e.glyphMarginHoverMessage||null,this.lineNumberHoverMessage=e.lineNumberHoverMessage||null,this.isWholeLine=e.isWholeLine||!1,this.showIfCollapsed=e.showIfCollapsed||!1,this.collapseOnReplaceEdit=e.collapseOnReplaceEdit||!1,this.overviewRuler=e.overviewRuler?new hst(e.overviewRuler):null,this.minimap=e.minimap?new mst(e.minimap):null,this.glyphMargin=e.glyphMarginClassName?new ust(e.glyphMargin):null,this.glyphMarginClassName=e.glyphMarginClassName?Qp(e.glyphMarginClassName):null,this.linesDecorationsClassName=e.linesDecorationsClassName?Qp(e.linesDecorationsClassName):null,this.lineNumberClassName=e.lineNumberClassName?Qp(e.lineNumberClassName):null,this.linesDecorationsTooltip=e.linesDecorationsTooltip?yPe(e.linesDecorationsTooltip):null,this.firstLineDecorationClassName=e.firstLineDecorationClassName?Qp(e.firstLineDecorationClassName):null,this.marginClassName=e.marginClassName?Qp(e.marginClassName):null,this.inlineClassName=e.inlineClassName?Qp(e.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=e.beforeContentClassName?Qp(e.beforeContentClassName):null,this.afterContentClassName=e.afterContentClassName?Qp(e.afterContentClassName):null,this.after=e.after?JF.from(e.after):null,this.before=e.before?JF.from(e.before):null,this.hideInCommentTokens=e.hideInCommentTokens??!1,this.hideInStringTokens=e.hideInStringTokens??!1}}ki.EMPTY=ki.register({description:"empty"});const vme=[ki.register({description:"tracked-range-always-grows-when-typing-at-edges",stickiness:0}),ki.register({description:"tracked-range-never-grows-when-typing-at-edges",stickiness:1}),ki.register({description:"tracked-range-grows-only-when-typing-before",stickiness:2}),ki.register({description:"tracked-range-grows-only-when-typing-after",stickiness:3})];function kme(s){return s instanceof ki?s:ki.createDynamic(s)}class pst extends be{constructor(e){super(),this.handleBeforeFire=e,this._actual=this._register(new fe),this.event=this._actual.event,this._affectedInjectedTextLines=null,this._deferredCnt=0,this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._affectsLineNumber=!1}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){var e;this._deferredCnt--,this._deferredCnt===0&&(this._shouldFireDeferred&&this.doFire(),(e=this._affectedInjectedTextLines)==null||e.clear(),this._affectedInjectedTextLines=null)}recordLineAffectedByInjectedText(e){this._affectedInjectedTextLines||(this._affectedInjectedTextLines=new Set),this._affectedInjectedTextLines.add(e)}checkAffectedAndFire(e){var t,i;this._affectsMinimap||(this._affectsMinimap=!!((t=e.minimap)!=null&&t.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!!((i=e.overviewRuler)!=null&&i.color)),this._affectsGlyphMargin||(this._affectsGlyphMargin=!!e.glyphMarginClassName),this._affectsLineNumber||(this._affectsLineNumber=!!e.lineNumberClassName),this.tryFire()}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._affectsGlyphMargin=!0,this.tryFire()}tryFire(){this._deferredCnt===0?this.doFire():this._shouldFireDeferred=!0}doFire(){this.handleBeforeFire(this._affectedInjectedTextLines);const e={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler,affectsGlyphMargin:this._affectsGlyphMargin,affectsLineNumber:this._affectsLineNumber};this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._actual.fire(e)}}class gst extends be{constructor(){super(),this._fastEmitter=this._register(new fe),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new fe),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(e=null){if(this._deferredCnt--,this._deferredCnt===0&&this._deferredEvent!==null){this._deferredEvent.rawContentChangedEvent.resultingSelection=e;const t=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(t),this._slowEmitter.fire(t)}}fire(e){if(this._deferredCnt>0){this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(e):this._deferredEvent=e;return}this._fastEmitter.fire(e),this._slowEmitter.fire(e)}}var fst=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},gI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},MV;function yA(s){return s.toString()}let bst=class{constructor(e,t,i){this.model=e,this._modelEventListeners=new De,this.model=e,this._modelEventListeners.add(e.onWillDispose(()=>t(e))),this._modelEventListeners.add(e.onDidChangeLanguage(n=>i(e,n)))}dispose(){this._modelEventListeners.dispose()}};const Ust=_a||hn?1:2;class Fst{constructor(e,t,i,n,o,r,l,a){this.uri=e,this.initialUndoRedoSnapshot=t,this.time=i,this.sharesUndoRedoStack=n,this.heapSize=o,this.sha1=r,this.versionId=l,this.alternativeVersionId=a}}var hQ;let K6=(hQ=class extends be{constructor(e,t,i,n){super(),this._configurationService=e,this._resourcePropertiesService=t,this._undoRedoService=i,this._instantiationService=n,this._onModelAdded=this._register(new fe),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new fe),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new fe),this.onModelLanguageChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._register(this._configurationService.onDidChangeConfiguration(o=>this._updateModelOptions(o))),this._updateModelOptions(void 0)}static _readModelOptions(e,t){var u;let i=Yl.tabSize;if(e.editor&&typeof e.editor.tabSize<"u"){const m=parseInt(e.editor.tabSize,10);isNaN(m)||(i=m),i<1&&(i=1)}let n="tabSize";if(e.editor&&typeof e.editor.indentSize<"u"&&e.editor.indentSize!=="tabSize"){const m=parseInt(e.editor.indentSize,10);isNaN(m)||(n=Math.max(m,1))}let o=Yl.insertSpaces;e.editor&&typeof e.editor.insertSpaces<"u"&&(o=e.editor.insertSpaces==="false"?!1:!!e.editor.insertSpaces);let r=Ust;const l=e.eol;l===`\r
- `?r=2:l===`
- `&&(r=1);let a=Yl.trimAutoWhitespace;e.editor&&typeof e.editor.trimAutoWhitespace<"u"&&(a=e.editor.trimAutoWhitespace==="false"?!1:!!e.editor.trimAutoWhitespace);let d=Yl.detectIndentation;e.editor&&typeof e.editor.detectIndentation<"u"&&(d=e.editor.detectIndentation==="false"?!1:!!e.editor.detectIndentation);let c=Yl.largeFileOptimizations;e.editor&&typeof e.editor.largeFileOptimizations<"u"&&(c=e.editor.largeFileOptimizations==="false"?!1:!!e.editor.largeFileOptimizations);let h=Yl.bracketPairColorizationOptions;return(u=e.editor)!=null&&u.bracketPairColorization&&typeof e.editor.bracketPairColorization=="object"&&(h={enabled:!!e.editor.bracketPairColorization.enabled,independentColorPoolPerBracketType:!!e.editor.bracketPairColorization.independentColorPoolPerBracketType}),{isForSimpleWidget:t,tabSize:i,indentSize:n,insertSpaces:o,detectIndentation:d,defaultEOL:r,trimAutoWhitespace:a,largeFileOptimizations:c,bracketPairColorizationOptions:h}}_getEOL(e,t){if(e)return this._resourcePropertiesService.getEOL(e,t);const i=this._configurationService.getValue("files.eol",{overrideIdentifier:t});return i&&typeof i=="string"&&i!=="auto"?i:rc===3||rc===2?`
- `:`\r
- `}_shouldRestoreUndoStack(){const e=this._configurationService.getValue("files.restoreUndoStack");return typeof e=="boolean"?e:!0}getCreationOptions(e,t,i){const n=typeof e=="string"?e:e.languageId;let o=this._modelCreationOptionsByLanguageAndResource[n+t];if(!o){const r=this._configurationService.getValue("editor",{overrideIdentifier:n,resource:t}),l=this._getEOL(t,n);o=MV._readModelOptions({editor:r,eol:l},i),this._modelCreationOptionsByLanguageAndResource[n+t]=o}return o}_updateModelOptions(e){const t=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const i=Object.keys(this._models);for(let n=0,o=i.length;n<o;n++){const r=i[n],l=this._models[r],a=l.model.getLanguageId(),d=l.model.uri;if(e&&!e.affectsConfiguration("editor",{overrideIdentifier:a,resource:d})&&!e.affectsConfiguration("files.eol",{overrideIdentifier:a,resource:d}))continue;const c=t[a+d],h=this.getCreationOptions(a,d,l.model.isForSimpleWidget);MV._setModelOptionsForModel(l.model,h,c)}}static _setModelOptionsForModel(e,t,i){i&&i.defaultEOL!==t.defaultEOL&&e.getLineCount()===1&&e.setEOL(t.defaultEOL===1?0:1),!(i&&i.detectIndentation===t.detectIndentation&&i.insertSpaces===t.insertSpaces&&i.tabSize===t.tabSize&&i.indentSize===t.indentSize&&i.trimAutoWhitespace===t.trimAutoWhitespace&&lc(i.bracketPairColorizationOptions,t.bracketPairColorizationOptions))&&(t.detectIndentation?(e.detectIndentation(t.insertSpaces,t.tabSize),e.updateOptions({trimAutoWhitespace:t.trimAutoWhitespace,bracketColorizationOptions:t.bracketPairColorizationOptions})):e.updateOptions({insertSpaces:t.insertSpaces,tabSize:t.tabSize,indentSize:t.indentSize,trimAutoWhitespace:t.trimAutoWhitespace,bracketColorizationOptions:t.bracketPairColorizationOptions}))}_insertDisposedModel(e){this._disposedModels.set(yA(e.uri),e),this._disposedModelsHeapSize+=e.heapSize}_removeDisposedModel(e){const t=this._disposedModels.get(yA(e));return t&&(this._disposedModelsHeapSize-=t.heapSize),this._disposedModels.delete(yA(e)),t}_ensureDisposedModelsHeapSize(e){if(this._disposedModelsHeapSize>e){const t=[];for(this._disposedModels.forEach(i=>{i.sharesUndoRedoStack||t.push(i)}),t.sort((i,n)=>i.time-n.time);t.length>0&&this._disposedModelsHeapSize>e;){const i=t.shift();this._removeDisposedModel(i.uri),i.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(i.initialUndoRedoSnapshot)}}}_createModelData(e,t,i,n){const o=this.getCreationOptions(t,i,n),r=this._instantiationService.createInstance(Km,e,t,o,i);if(i&&this._disposedModels.has(yA(i))){const d=this._removeDisposedModel(i),c=this._undoRedoService.getElements(i),h=this._getSHA1Computer(),u=h.canComputeSHA1(r)?h.computeSHA1(r)===d.sha1:!1;if(u||d.sharesUndoRedoStack){for(const m of c.past)nf(m)&&m.matchesResource(i)&&m.setModel(r);for(const m of c.future)nf(m)&&m.matchesResource(i)&&m.setModel(r);this._undoRedoService.setElementsValidFlag(i,!0,m=>nf(m)&&m.matchesResource(i)),u&&(r._overwriteVersionId(d.versionId),r._overwriteAlternativeVersionId(d.alternativeVersionId),r._overwriteInitialUndoRedoSnapshot(d.initialUndoRedoSnapshot))}else d.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(d.initialUndoRedoSnapshot)}const l=yA(r.uri);if(this._models[l])throw new Error("ModelService: Cannot add model because it already exists!");const a=new bst(r,d=>this._onWillDispose(d),(d,c)=>this._onDidChangeLanguage(d,c));return this._models[l]=a,a}createModel(e,t,i,n=!1){let o;return t?o=this._createModelData(e,t,i,n):o=this._createModelData(e,Ya,i,n),this._onModelAdded.fire(o.model),o.model}getModels(){const e=[],t=Object.keys(this._models);for(let i=0,n=t.length;i<n;i++){const o=t[i];e.push(this._models[o].model)}return e}getModel(e){const t=yA(e),i=this._models[t];return i?i.model:null}_schemaShouldMaintainUndoRedoElements(e){return e.scheme===Ti.file||e.scheme===Ti.vscodeRemote||e.scheme===Ti.vscodeUserData||e.scheme===Ti.vscodeNotebookCell||e.scheme==="fake-fs"}_onWillDispose(e){const t=yA(e.uri),i=this._models[t],n=this._undoRedoService.getUriComparisonKey(e.uri)!==e.uri.toString();let o=!1,r=0;if(n||this._shouldRestoreUndoStack()&&this._schemaShouldMaintainUndoRedoElements(e.uri)){const d=this._undoRedoService.getElements(e.uri);if(d.past.length>0||d.future.length>0){for(const c of d.past)nf(c)&&c.matchesResource(e.uri)&&(o=!0,r+=c.heapSize(e.uri),c.setModel(e.uri));for(const c of d.future)nf(c)&&c.matchesResource(e.uri)&&(o=!0,r+=c.heapSize(e.uri),c.setModel(e.uri))}}const l=MV.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK,a=this._getSHA1Computer();if(o)if(!n&&(r>l||!a.canComputeSHA1(e))){const d=i.model.getInitialUndoRedoSnapshot();d!==null&&this._undoRedoService.restoreSnapshot(d)}else this._ensureDisposedModelsHeapSize(l-r),this._undoRedoService.setElementsValidFlag(e.uri,!1,d=>nf(d)&&d.matchesResource(e.uri)),this._insertDisposedModel(new Fst(e.uri,i.model.getInitialUndoRedoSnapshot(),Date.now(),n,r,a.computeSHA1(e),e.getVersionId(),e.getAlternativeVersionId()));else if(!n){const d=i.model.getInitialUndoRedoSnapshot();d!==null&&this._undoRedoService.restoreSnapshot(d)}delete this._models[t],i.dispose(),delete this._modelCreationOptionsByLanguageAndResource[e.getLanguageId()+e.uri],this._onModelRemoved.fire(e)}_onDidChangeLanguage(e,t){const i=t.oldLanguage,n=e.getLanguageId(),o=this.getCreationOptions(i,e.uri,e.isForSimpleWidget),r=this.getCreationOptions(n,e.uri,e.isForSimpleWidget);MV._setModelOptionsForModel(e,r,o),this._onModelModeChanged.fire({model:e,oldLanguageId:i})}_getSHA1Computer(){return new q6}},MV=hQ,hQ.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20*1024*1024,hQ);K6=MV=fst([gI(0,Hi),gI(1,zSe),gI(2,eoe),gI(3,ti)],K6);const D_=class D_{canComputeSHA1(e){return e.getValueLength()<=D_.MAX_MODEL_SIZE}computeSHA1(e){const t=new m8,i=e.createSnapshot();let n;for(;n=i.read();)t.update(n);return t.digest()}};D_.MAX_MODEL_SIZE=10*1024*1024;let q6=D_;var $6;(function(s){s[s.PRESERVE=0]="PRESERVE",s[s.LAST=1]="LAST"})($6||($6={}));const tR={Quickaccess:"workbench.contributions.quickaccess"};class Ast{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(e){return e.prefix.length===0?this.defaultProvider=e:this.providers.push(e),this.providers.sort((t,i)=>i.prefix.length-t.prefix.length),ei(()=>{this.providers.splice(this.providers.indexOf(e),1),this.defaultProvider===e&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return Hu([this.defaultProvider,...this.providers])}getQuickAccessProvider(e){return e&&this.providers.find(i=>e.startsWith(i.prefix))||void 0||this.defaultProvider}}fo.add(tR.Quickaccess,new Ast);const Zst={ctrlCmd:!1,alt:!1};var Ey;(function(s){s[s.Blur=1]="Blur",s[s.Gesture=2]="Gesture",s[s.Other=3]="Other"})(Ey||(Ey={}));var Em;(function(s){s[s.NONE=0]="NONE",s[s.FIRST=1]="FIRST",s[s.SECOND=2]="SECOND",s[s.LAST=3]="LAST"})(Em||(Em={}));var Gs;(function(s){s[s.First=1]="First",s[s.Second=2]="Second",s[s.Last=3]="Last",s[s.Next=4]="Next",s[s.Previous=5]="Previous",s[s.NextPage=6]="NextPage",s[s.PreviousPage=7]="PreviousPage",s[s.NextSeparator=8]="NextSeparator",s[s.PreviousSeparator=9]="PreviousSeparator"})(Gs||(Gs={}));var qX;(function(s){s[s.Title=1]="Title",s[s.Inline=2]="Inline"})(qX||(qX={}));const tu=un("quickInputService");var Sst=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},xme=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let eq=class extends be{constructor(e,t){super(),this.quickInputService=e,this.instantiationService=t,this.registry=fo.as(tR.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(e="",t){this.doShowOrPick(e,!1,t)}doShowOrPick(e,t,i){var p,g;const[n,o]=this.getOrInstantiateProvider(e,i==null?void 0:i.enabledProviderPrefixes),r=this.visibleQuickAccess,l=r==null?void 0:r.descriptor;if(r&&o&&l===o){e!==o.prefix&&!(i!=null&&i.preserveValue)&&(r.picker.value=e),this.adjustValueSelection(r.picker,o,i);return}if(o&&!(i!=null&&i.preserveValue)){let f;if(r&&l&&l!==o){const b=r.value.substr(l.prefix.length);b&&(f=`${o.prefix}${b}`)}if(!f){const b=n==null?void 0:n.defaultFilterValue;b===$6.LAST?f=this.lastAcceptedPickerValues.get(o):typeof b=="string"&&(f=`${o.prefix}${b}`)}typeof f=="string"&&(e=f)}const a=(p=r==null?void 0:r.picker)==null?void 0:p.valueSelection,d=(g=r==null?void 0:r.picker)==null?void 0:g.value,c=new De,h=c.add(this.quickInputService.createQuickPick({useSeparators:!0}));h.value=e,this.adjustValueSelection(h,o,i),h.placeholder=(i==null?void 0:i.placeholder)??(o==null?void 0:o.placeholder),h.quickNavigate=i==null?void 0:i.quickNavigateConfiguration,h.hideInput=!!h.quickNavigate&&!r,(typeof(i==null?void 0:i.itemActivation)=="number"||i!=null&&i.quickNavigateConfiguration)&&(h.itemActivation=(i==null?void 0:i.itemActivation)??Em.SECOND),h.contextKey=o==null?void 0:o.contextKey,h.filterValue=f=>f.substring(o?o.prefix.length:0);let u;t&&(u=new hM,c.add(Ut.once(h.onWillAccept)(f=>{f.veto(),h.hide()}))),c.add(this.registerPickerListeners(h,n,o,e,i));const m=c.add(new go);if(n&&c.add(n.provide(h,m.token,i==null?void 0:i.providerOptions)),Ut.once(h.onDidHide)(()=>{h.selectedItems.length===0&&m.cancel(),c.dispose(),u==null||u.complete(h.selectedItems.slice(0))}),h.show(),a&&d===e&&(h.valueSelection=a),t)return u==null?void 0:u.p}adjustValueSelection(e,t,i){let n;i!=null&&i.preserveValue?n=[e.value.length,e.value.length]:n=[(t==null?void 0:t.prefix.length)??0,e.value.length],e.valueSelection=n}registerPickerListeners(e,t,i,n,o){const r=new De,l=this.visibleQuickAccess={picker:e,descriptor:i,value:n};return r.add(ei(()=>{l===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)})),r.add(e.onDidChangeValue(a=>{const[d]=this.getOrInstantiateProvider(a,o==null?void 0:o.enabledProviderPrefixes);d!==t?this.show(a,{enabledProviderPrefixes:o==null?void 0:o.enabledProviderPrefixes,preserveValue:!0,providerOptions:o==null?void 0:o.providerOptions}):l.value=a})),i&&r.add(e.onDidAccept(()=>{this.lastAcceptedPickerValues.set(i,e.value)})),r}getOrInstantiateProvider(e,t){const i=this.registry.getQuickAccessProvider(e);if(!i||t&&!(t!=null&&t.includes(i.prefix)))return[void 0,void 0];let n=this.mapProviderToDescriptor.get(i);return n||(n=this.instantiationService.createInstance(i.ctor),this.mapProviderToDescriptor.set(i,n)),[n,i]}};eq=Sst([xme(0,tu),xme(1,ti)],eq);class RM extends ch{constructor(e){super(),this._onChange=this._register(new fe),this.onChange=this._onChange.event,this._onKeyDown=this._register(new fe),this.onKeyDown=this._onKeyDown.event,this._opts=e,this._checked=this._opts.isChecked;const t=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,t.push(...ui.asClassNameArray(this._icon))),this._opts.actionClassName&&t.push(...this._opts.actionClassName.split(" ")),this._checked&&t.push("checked"),this.domNode=document.createElement("div"),this._hover=this._register(Ap().setupManagedHover(e.hoverDelegate??Ka("mouse"),this.domNode,this._opts.title)),this.domNode.classList.add(...t),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.setAttribute("aria-label",this._opts.title),this.applyStyles(),this.onclick(this.domNode,i=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),i.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,i=>{if(i.keyCode===10||i.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),i.preventDefault(),i.stopPropagation();return}this._onKeyDown.fire(i)})}get enabled(){return this.domNode.getAttribute("aria-disabled")!=="true"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(e){this._checked=e,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}width(){return 2+2+2+16}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||"",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||"")}enable(){this.domNode.setAttribute("aria-disabled",String(!1))}disable(){this.domNode.setAttribute("aria-disabled",String(!0))}}var Nst=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};class qRe{constructor(e){this.nodes=e}toString(){return this.nodes.map(e=>typeof e=="string"?e:e.label).join("")}}Nst([Po],qRe.prototype,"toString",null);const Rst=/\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi;function Vst(s){const e=[];let t=0,i;for(;i=Rst.exec(s);){i.index-t>0&&e.push(s.substring(t,i.index));const[,n,o,,r]=i;r?e.push({label:n,href:o,title:r}):e.push({label:n,href:o}),t=i.index+i[0].length}return t<s.length&&e.push(s.substring(t)),new qRe(e)}const CP={},Wst=new Roe("quick-input-button-icon-");function yst(s){if(!s)return;let e;const t=s.dark.toString();return CP[t]?e=CP[t]:(e=Wst.nextId(),cX(`.${e}, .hc-light .${e}`,`background-image: ${Kf(s.light||s.dark)}`),cX(`.vs-dark .${e}, .hc-black .${e}`,`background-image: ${Kf(s.dark)}`),CP[t]=e),e}function l2(s,e,t){let i=s.iconClass||yst(s.iconPath);return s.alwaysVisible&&(i=i?`${i} always-visible`:"always-visible"),{id:e,label:"",tooltip:s.tooltip||"",class:i,enabled:!0,run:t}}function Qst(s,e,t){cl(e);const i=Vst(s);let n=0;for(const o of i.nodes)if(typeof o=="string")e.append(...SF(o));else{let r=o.title;!r&&o.href.startsWith("command:")?r=F("executeCommand","Click to execute command '{0}'",o.href.substring(8)):r||(r=o.href);const l=gt("a",{href:o.href,title:r,tabIndex:n++},o.label);l.style.textDecoration="underline";const a=m=>{OHe(m)&&Un.stop(m,!0),t.callback(o.href)},d=t.disposables.add(new fn(l,ut.CLICK)).event,c=t.disposables.add(new fn(l,ut.KEY_DOWN)).event,h=Ut.chain(c,m=>m.filter(p=>{const g=new Ts(p);return g.equals(10)||g.equals(3)}));t.disposables.add(Hl.addTarget(l));const u=t.disposables.add(new fn(l,vs.Tap)).event;Ut.any(d,u,h)(a,null,t.disposables),e.appendChild(l)}}var Mst=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ime=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const $Re="inQuickInput",wst=new yt($Re,!1,F("inQuickInput","Whether keyboard focus is inside the quick input control")),Tst=Ge.has($Re),eVe="quickInputType",Cst=new yt(eVe,void 0,F("quickInputType","The type of the currently visible quick input")),tVe="cursorAtEndOfQuickInputBox",Bst=new yt(tVe,!1,F("cursorAtEndOfQuickInputBox","Whether the cursor in the quick input is at the end of the input box")),Lst=Ge.has(tVe),tq={iconClass:ui.asClassName(ct.quickInputBack),tooltip:F("quickInput.back","Back"),handle:-1},G_=class G_ extends be{constructor(e){super(),this.ui=e,this._widgetUpdated=!1,this.visible=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._leftButtons=[],this._rightButtons=[],this._inlineButtons=[],this.buttonsUpdated=!1,this._toggles=[],this.togglesUpdated=!1,this.noValidationMessage=G_.noPromptMessage,this._severity=zo.Ignore,this.onDidTriggerButtonEmitter=this._register(new fe),this.onDidHideEmitter=this._register(new fe),this.onWillHideEmitter=this._register(new fe),this.onDisposeEmitter=this._register(new fe),this.visibleDisposables=this._register(new De),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(e){this._title=e,this.update()}get description(){return this._description}set description(e){this._description=e,this.update()}get step(){return this._steps}set step(e){this._steps=e,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(e){this._totalSteps=e,this.update()}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this.update()}get contextKey(){return this._contextKey}set contextKey(e){this._contextKey=e,this.update()}get busy(){return this._busy}set busy(e){this._busy=e,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(e){const t=this._ignoreFocusOut!==e&&!lp;this._ignoreFocusOut=e&&!lp,t&&this.update()}get titleButtons(){return this._leftButtons.length?[...this._leftButtons,this._rightButtons]:this._rightButtons}get buttons(){return[...this._leftButtons,...this._rightButtons,...this._inlineButtons]}set buttons(e){this._leftButtons=e.filter(t=>t===tq),this._rightButtons=e.filter(t=>t!==tq&&t.location!==qX.Inline),this._inlineButtons=e.filter(t=>t.location===qX.Inline),this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(e){this._toggles=e??[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(e){this._validationMessage=e,this.update()}get severity(){return this._severity}set severity(e){this._severity=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton(e=>{this.buttons.indexOf(e)!==-1&&this.onDidTriggerButtonEmitter.fire(e)})),this.ui.show(this),this.visible=!0,this._lastValidationMessage=void 0,this._lastSeverity=void 0,this.buttons.length&&(this.buttonsUpdated=!0),this.toggles.length&&(this.togglesUpdated=!0),this.update())}hide(){this.visible&&this.ui.hide()}didHide(e=Ey.Other){this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:e})}willHide(e=Ey.Other){this.onWillHideEmitter.fire({reason:e})}update(){var n;if(!this.visible)return;const e=this.getTitle();e&&this.ui.title.textContent!==e?this.ui.title.textContent=e:!e&&this.ui.title.innerHTML!==" "&&(this.ui.title.innerText=" ");const t=this.getDescription();if(this.ui.description1.textContent!==t&&(this.ui.description1.textContent=t),this.ui.description2.textContent!==t&&(this.ui.description2.textContent=t),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?cl(this.ui.widget,this._widget):cl(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new om,this.busyDelay.setIfNotSet(()=>{this.visible&&this.ui.progressBar.infinite()},800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const o=this._leftButtons.map((a,d)=>l2(a,`id-${d}`,async()=>this.onDidTriggerButtonEmitter.fire(a)));this.ui.leftActionBar.push(o,{icon:!0,label:!1}),this.ui.rightActionBar.clear();const r=this._rightButtons.map((a,d)=>l2(a,`id-${d}`,async()=>this.onDidTriggerButtonEmitter.fire(a)));this.ui.rightActionBar.push(r,{icon:!0,label:!1}),this.ui.inlineActionBar.clear();const l=this._inlineButtons.map((a,d)=>l2(a,`id-${d}`,async()=>this.onDidTriggerButtonEmitter.fire(a)));this.ui.inlineActionBar.push(l,{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const o=((n=this.toggles)==null?void 0:n.filter(r=>r instanceof RM))??[];this.ui.inputBox.toggles=o}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const i=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==i&&(this._lastValidationMessage=i,cl(this.ui.message),Qst(i,this.ui.message,{callback:o=>{this.ui.linkOpenerDelegate(o)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?F("quickInput.steps","{0}/{1}",this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(e){if(this.ui.inputBox.showDecoration(e),e!==zo.Ignore){const t=this.ui.inputBox.stylesForType(e);this.ui.message.style.color=t.foreground?`${t.foreground}`:"",this.ui.message.style.backgroundColor=t.background?`${t.background}`:"",this.ui.message.style.border=t.border?`1px solid ${t.border}`:"",this.ui.message.style.marginBottom="-2px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.marginBottom=""}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}};G_.noPromptMessage=F("inputModeEntry","Press 'Enter' to confirm your input or 'Escape' to cancel");let $X=G_;const J_=class J_ extends $X{constructor(){super(...arguments),this._value="",this.onDidChangeValueEmitter=this._register(new fe),this.onWillAcceptEmitter=this._register(new fe),this.onDidAcceptEmitter=this._register(new fe),this.onDidCustomEmitter=this._register(new fe),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._keepScrollPosition=!1,this._itemActivation=Em.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new fe),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new fe),this.onDidTriggerItemButtonEmitter=this._register(new fe),this.onDidTriggerSeparatorButtonEmitter=this._register(new fe),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this._focusEventBufferer=new Yv,this.type="quickPick",this.filterValue=e=>e,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onWillAccept=this.onWillAcceptEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event,this.onDidTriggerSeparatorButton=this.onDidTriggerSeparatorButtonEmitter.event}get quickNavigate(){return this._quickNavigate}set quickNavigate(e){this._quickNavigate=e,this.update()}get value(){return this._value}set value(e){this.doSetValue(e)}doSetValue(e,t){this._value!==e&&(this._value=e,t||this.update(),this.visible&&this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(this._value))}set ariaLabel(e){this._ariaLabel=e,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(e){this.ui.list.scrollTop=e}set items(e){this._items=e,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(e){this._canSelectMany=e,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(e){this._canAcceptInBackground=e}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(e){this._matchOnLabelMode=e,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(e){this._keepScrollPosition=e}get itemActivation(){return this._itemActivation}set itemActivation(e){this._itemActivation=e}get activeItems(){return this._activeItems}set activeItems(e){this._activeItems=e,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems=e,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?Zst:this.ui.keyMods}get valueSelection(){const e=this.ui.inputBox.getSelection();if(e)return[e.start,e.end]}set valueSelection(e){this._valueSelection=e,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(e){this._customButton=e,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(e){this._customButtonLabel=e,this.update()}get customHover(){return this._customButtonHover}set customHover(e){this._customButtonHover=e,this.update()}get ok(){return this._ok}set ok(e){this._ok=e,this.update()}get hideInput(){return!!this._hideInput}set hideInput(e){this._hideInput=e,this.update()}trySelectFirst(){this.canSelectMany||this.ui.list.focus(Gs.First)}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(e=>{this.doSetValue(e,!0)})),this.visibleDisposables.add(this.ui.onDidAccept(()=>{this.canSelectMany?this.ui.list.getCheckedElements().length||(this._selectedItems=[],this.onDidChangeSelectionEmitter.fire(this.selectedItems)):this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(!1)})),this.visibleDisposables.add(this.ui.onDidCustom(()=>{this.onDidCustomEmitter.fire()})),this.visibleDisposables.add(this._focusEventBufferer.wrapEvent(this.ui.list.onDidChangeFocus,(e,t)=>t)(e=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&lo(e,this._activeItems,(t,i)=>t===i)||(this._activeItems=e,this.onDidChangeActiveEmitter.fire(e))})),this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({items:e,event:t})=>{if(this.canSelectMany){e.length&&this.ui.list.setSelectedElements([]);return}this.selectedItemsToConfirm!==this._selectedItems&&lo(e,this._selectedItems,(i,n)=>i===n)||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e),e.length&&this.handleAccept(Ese(t)&&t.button===1))})),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(e=>{!this.canSelectMany||!this.visible||this.selectedItemsToConfirm!==this._selectedItems&&lo(e,this._selectedItems,(t,i)=>t===i)||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e))})),this.visibleDisposables.add(this.ui.list.onButtonTriggered(e=>this.onDidTriggerItemButtonEmitter.fire(e))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(e=>this.onDidTriggerSeparatorButtonEmitter.fire(e))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(e){let t=!1;this.onWillAcceptEmitter.fire({veto:()=>t=!0}),t||this.onDidAcceptEmitter.fire({inBackground:e})}registerQuickNavigation(){return Te(this.ui.container,ut.KEY_UP,e=>{if(this.canSelectMany||!this._quickNavigate)return;const t=new Ts(e),i=t.keyCode;this._quickNavigate.keybindings.some(r=>{const l=r.getChords();return l.length>1?!1:l[0].shiftKey&&i===4?!(t.ctrlKey||t.altKey||t.metaKey):!!(l[0].altKey&&i===6||l[0].ctrlKey&&i===5||l[0].metaKey&&i===57)})&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!1)),this._quickNavigate=void 0)})}update(){if(!this.visible)return;const e=this.keepScrollPosition?this.scrollTop:0,t=!!this.description,i={title:!!this.title||!!this.step||!!this.titleButtons.length,description:t,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||t,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:this.ok==="default"?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(i),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||"");let n=this.ariaLabel;!n&&i.inputBox&&(n=this.placeholder||J_.DEFAULT_ARIA_LABEL,this.title&&(n+=` - ${this.title}`)),this.ui.list.ariaLabel!==n&&(this.ui.list.ariaLabel=n??null),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.matchOnLabelMode=this.matchOnLabelMode,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated&&(this.itemsUpdated=!1,this._focusEventBufferer.bufferEvents(()=>{switch(this.ui.list.setElements(this.items),this.ui.list.shouldLoop=!this.canSelectMany,this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this._itemActivation){case Em.NONE:this._itemActivation=Em.FIRST;break;case Em.SECOND:this.ui.list.focus(Gs.Second),this._itemActivation=Em.FIRST;break;case Em.LAST:this.ui.list.focus(Gs.Last),this._itemActivation=Em.FIRST;break;default:this.trySelectFirst();break}})),this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",i.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(Gs.First)),this.keepScrollPosition&&(this.scrollTop=e)}focus(e){this.ui.list.focus(e),this.canSelectMany&&this.ui.list.domFocus()}accept(e){e&&!this._canAcceptInBackground||this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(e??!1))}};J_.DEFAULT_ARIA_LABEL=F("quickInputBox.ariaLabel","Type to narrow down results.");let e5=J_,vst=class extends $X{constructor(){super(...arguments),this._value="",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new fe),this.onDidAcceptEmitter=this._register(new fe),this.type="inputBox",this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(e){this._value=e||"",this.update()}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get password(){return this._password}set password(e){this._password=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(e=>{e!==this.value&&(this._value=e,this.onDidValueChangeEmitter.fire(e))})),this.visibleDisposables.add(this.ui.onDidAccept(()=>this.onDidAcceptEmitter.fire())),this.valueSelectionUpdated=!0),super.show()}update(){if(!this.visible)return;this.ui.container.classList.remove("hidden-input");const e={title:!!this.title||!!this.step||!!this.titleButtons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(e),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||""),this.ui.inputBox.password!==this.password&&(this.ui.inputBox.password=this.password)}},iq=class extends wy{constructor(e,t){super("element",!1,i=>this.getOverrideOptions(i),e,t)}getOverrideOptions(e){const t=(Cr(e.content)?e.content.textContent??"":typeof e.content=="string"?e.content:e.content.value).includes(`
- `);return{persistence:{hideOnKeyDown:!1},appearance:{showHoverHint:t,skipFadeInAnimation:!0}}}};iq=Mst([Ime(0,Hi),Ime(1,t0)],iq);Je.white.toString(),Je.white.toString();class t5 extends be{get onDidClick(){return this._onDidClick.event}constructor(e,t){super(),this._label="",this._onDidClick=this._register(new fe),this._onDidEscape=this._register(new fe),this.options=t,this._element=document.createElement("a"),this._element.classList.add("monaco-button"),this._element.tabIndex=0,this._element.setAttribute("role","button"),this._element.classList.toggle("secondary",!!t.secondary);const i=t.secondary?t.buttonSecondaryBackground:t.buttonBackground,n=t.secondary?t.buttonSecondaryForeground:t.buttonForeground;this._element.style.color=n||"",this._element.style.backgroundColor=i||"",t.supportShortLabel&&(this._labelShortElement=document.createElement("div"),this._labelShortElement.classList.add("monaco-button-label-short"),this._element.appendChild(this._labelShortElement),this._labelElement=document.createElement("div"),this._labelElement.classList.add("monaco-button-label"),this._element.appendChild(this._labelElement),this._element.classList.add("monaco-text-button-with-short-label")),typeof t.title=="string"&&this.setTitle(t.title),typeof t.ariaLabel=="string"&&this._element.setAttribute("aria-label",t.ariaLabel),e.appendChild(this._element),this._register(Hl.addTarget(this._element)),[ut.CLICK,vs.Tap].forEach(o=>{this._register(Te(this._element,o,r=>{if(!this.enabled){Un.stop(r);return}this._onDidClick.fire(r)}))}),this._register(Te(this._element,ut.KEY_DOWN,o=>{const r=new Ts(o);let l=!1;this.enabled&&(r.equals(3)||r.equals(10))?(this._onDidClick.fire(o),l=!0):r.equals(9)&&(this._onDidEscape.fire(o),this._element.blur(),l=!0),l&&Un.stop(r,!0)})),this._register(Te(this._element,ut.MOUSE_OVER,o=>{this._element.classList.contains("disabled")||this.updateBackground(!0)})),this._register(Te(this._element,ut.MOUSE_OUT,o=>{this.updateBackground(!1)})),this.focusTracker=this._register(ap(this._element)),this._register(this.focusTracker.onDidFocus(()=>{this.enabled&&this.updateBackground(!0)})),this._register(this.focusTracker.onDidBlur(()=>{this.enabled&&this.updateBackground(!1)}))}dispose(){super.dispose(),this._element.remove()}getContentElements(e){const t=[];for(let i of SF(e))if(typeof i=="string"){if(i=i.trim(),i==="")continue;const n=document.createElement("span");n.textContent=i,t.push(n)}else t.push(i);return t}updateBackground(e){let t;this.options.secondary?t=e?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:t=e?this.options.buttonHoverBackground:this.options.buttonBackground,t&&(this._element.style.backgroundColor=t)}get element(){return this._element}set label(e){var n;if(this._label===e||rp(this._label)&&rp(e)&&h$e(this._label,e))return;this._element.classList.add("monaco-text-button");const t=this.options.supportShortLabel?this._labelElement:this._element;if(rp(e)){const o=l9(e,{inline:!0});o.dispose();const r=(n=o.element.querySelector("p"))==null?void 0:n.innerHTML;if(r){const l=qZe(r,{ADD_TAGS:["b","i","u","code","span"],ALLOWED_ATTR:["class"],RETURN_TRUSTED_TYPE:!0});t.innerHTML=l}else cl(t)}else this.options.supportIcons?cl(t,...this.getContentElements(e)):t.textContent=e;let i="";typeof this.options.title=="string"?i=this.options.title:this.options.title&&(i=S$e(e)),this.setTitle(i),typeof this.options.ariaLabel=="string"?this._element.setAttribute("aria-label",this.options.ariaLabel):this.options.ariaLabel&&this._element.setAttribute("aria-label",i),this._label=e}get label(){return this._label}set icon(e){this._element.classList.add(...ui.asClassNameArray(e))}set enabled(e){e?(this._element.classList.remove("disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(this._element.classList.add("disabled"),this._element.setAttribute("aria-disabled",String(!0)))}get enabled(){return!this._element.classList.contains("disabled")}setTitle(e){!this._hover&&e!==""?this._hover=this._register(Ap().setupManagedHover(this.options.hoverDelegate??Ka("mouse"),this._element,e)):this._hover&&this._hover.update(e)}}class nq{constructor(e,t,i){this.options=t,this.styles=i,this.count=0,this.element=nt(e,gt(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}setCount(e){this.count=e,this.render()}setTitleFormat(e){this.titleFormat=e,this.render()}render(){this.element.textContent=bN(this.countFormat,this.count),this.element.title=bN(this.titleFormat,this.count),this.element.style.backgroundColor=this.styles.badgeBackground??"",this.element.style.color=this.styles.badgeForeground??"",this.styles.badgeBorder&&(this.element.style.border=`1px solid ${this.styles.badgeBorder}`)}}const Eme="done",Dme="active",BP="infinite",LP="infinite-long-running",Gme="discrete",X_=class X_ extends be{constructor(e,t){super(),this.progressSignal=this._register(new Lr),this.workedVal=0,this.showDelayedScheduler=this._register(new cs(()=>nc(this.element),0)),this.longRunningScheduler=this._register(new cs(()=>this.infiniteLongRunning(),X_.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(e,t)}create(e,t){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),e.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.bit.style.backgroundColor=(t==null?void 0:t.progressBarBackground)||"#0E70C0",this.element.appendChild(this.bit)}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(Dme,BP,LP,Gme),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel(),this.progressSignal.clear()}stop(){return this.doDone(!1)}doDone(e){return this.element.classList.add(Eme),this.element.classList.contains(BP)?(this.bit.style.opacity="0",e?setTimeout(()=>this.off(),200):this.off()):(this.bit.style.width="inherit",e?setTimeout(()=>this.off(),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(Gme,Eme,LP),this.element.classList.add(Dme,BP),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(LP)}getContainer(){return this.element}};X_.LONG_RUNNING_INFINITE_THRESHOLD=1e4;let sq=X_;const kst=F("caseDescription","Match Case"),xst=F("wordsDescription","Match Whole Word"),Ist=F("regexDescription","Use Regular Expression");class iVe extends RM{constructor(e){super({icon:ct.caseSensitive,title:kst+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??Ka("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class nVe extends RM{constructor(e){super({icon:ct.wholeWord,title:xst+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??Ka("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class sVe extends RM{constructor(e){super({icon:ct.regex,title:Ist+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??Ka("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class Est{constructor(e,t=0,i=e.length,n=t-1){this.items=e,this.start=t,this.end=i,this.index=n}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}class Dst{constructor(e=[],t=10){this._initialize(e),this._limit=t,this._onChange()}getHistory(){return this._elements}add(e){this._history.delete(e),this._history.add(e),this._onChange()}next(){return this._navigator.next()}previous(){return this._currentPosition()!==0?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}isLast(){return this._currentPosition()>=this._elements.length-1}isNowhere(){return this._navigator.current()===null}has(e){return this._history.has(e)}_onChange(){this._reduceToLimit();const e=this._elements;this._navigator=new Est(e,0,e.length,e.length)}_reduceToLimit(){const e=this._elements;e.length>this._limit&&this._initialize(e.slice(e.length-this._limit))}_currentPosition(){const e=this._navigator.current();return e?this._elements.indexOf(e):-1}_initialize(e){this._history=new Set;for(const t of e)this._history.add(t)}get _elements(){const e=[];return this._history.forEach(t=>e.push(t)),e}}const Nw=gt;class Gst extends ch{constructor(e,t,i){super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new fe),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=t,this.options=i,this.message=null,this.placeholder=this.options.placeholder||"",this.tooltip=this.options.tooltip??(this.placeholder||""),this.ariaLabel=this.options.ariaLabel||"",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=nt(e,Nw(".monaco-inputbox.idle"));const n=this.options.flexibleHeight?"textarea":"input",o=nt(this.element,Nw(".ibwrapper"));if(this.input=nt(o,Nw(n+".input.empty")),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("spellcheck","false"),this.onfocus(this.input,()=>this.element.classList.add("synthetic-focus")),this.onblur(this.input,()=>this.element.classList.remove("synthetic-focus")),this.options.flexibleHeight){this.maxHeight=typeof this.options.flexibleMaxHeight=="number"?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=nt(o,Nw("div.mirror")),this.mirror.innerText=" ",this.scrollableElement=new MNe(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),nt(e,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll(a=>this.input.scrollTop=a.scrollTop));const r=this._register(new fn(e.ownerDocument,"selectionchange")),l=Ut.filter(r.event,()=>{const a=e.ownerDocument.getSelection();return(a==null?void 0:a.anchorNode)===o});this._register(l(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||"text",this.input.setAttribute("wrap","off");this.ariaLabel&&this.input.setAttribute("aria-label",this.ariaLabel),this.placeholder&&!this.options.showPlaceholderOnFocus&&this.setPlaceHolder(this.placeholder),this.tooltip&&this.setTooltip(this.tooltip),this.oninput(this.input,()=>this.onValueChange()),this.onblur(this.input,()=>this.onBlur()),this.onfocus(this.input,()=>this.onFocus()),this._register(this.ignoreGesture(this.input)),setTimeout(()=>this.updateMirror(),0),this.options.actions&&(this.actionbar=this._register(new ih(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder","")}onFocus(){this._showMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder",this.placeholder||"")}setPlaceHolder(e){this.placeholder=e,this.input.setAttribute("placeholder",e)}setTooltip(e){this.tooltip=e,this.hover?this.hover.update(e):this.hover=this._register(Ap().setupManagedHover(Ka("mouse"),this.input,e))}get inputElement(){return this.input}get value(){return this.input.value}set value(e){this.input.value!==e&&(this.input.value=e,this.onValueChange())}get height(){return typeof this.cachedHeight=="number"?this.cachedHeight:Vf(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return C3(this.input)}select(e=null){this.input.select(),e&&(this.input.setSelectionRange(e.start,e.end),e.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}getSelection(){const e=this.input.selectionStart;if(e===null)return null;const t=this.input.selectionEnd??e;return{start:e,end:t}}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(e){this.input.style.width=`calc(100% - ${e}px)`,this.mirror&&(this.mirror.style.paddingRight=e+"px")}updateScrollDimensions(){if(typeof this.cachedContentHeight!="number"||typeof this.cachedHeight!="number"||!this.scrollableElement)return;const e=this.cachedContentHeight,t=this.cachedHeight,i=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:e,height:t}),this.scrollableElement.setScrollPosition({scrollTop:i})}showMessage(e,t){if(this.state==="open"&&lc(this.message,e))return;this.message=e,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(e.type));const i=this.stylesForType(this.message.type);this.element.style.border=`1px solid ${kf(i.border,"transparent")}`,this.message.content&&(this.hasFocus()||t)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}validate(){let e=null;return this.validation&&(e=this.validation(this.value),e?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(e)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),e==null?void 0:e.type}stylesForType(e){const t=this.options.inputBoxStyles;switch(e){case 1:return{border:t.inputValidationInfoBorder,background:t.inputValidationInfoBackground,foreground:t.inputValidationInfoForeground};case 2:return{border:t.inputValidationWarningBorder,background:t.inputValidationWarningBackground,foreground:t.inputValidationWarningForeground};default:return{border:t.inputValidationErrorBorder,background:t.inputValidationErrorBackground,foreground:t.inputValidationErrorForeground}}}classForType(e){switch(e){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let e;const t=()=>e.style.width=qd(this.element)+"px";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:n=>{if(!this.message)return null;e=nt(n,Nw(".monaco-inputbox-container")),t();const o={inline:!0,className:"monaco-inputbox-message"},r=this.message.formatContent?Mqe(this.message.content,o):Qqe(this.message.content,o);r.classList.add(this.classForType(this.message.type));const l=this.stylesForType(this.message.type);return r.style.backgroundColor=l.background??"",r.style.color=l.foreground??"",r.style.border=l.border?`1px solid ${l.border}`:"",nt(e,r),null},onHide:()=>{this.state="closed"},layout:t});let i;this.message.type===3?i=F("alertErrorMessage","Error: {0}",this.message.content):this.message.type===2?i=F("alertWarningMessage","Warning: {0}",this.message.content):i=F("alertInfoMessage","Info: {0}",this.message.content),ja(i),this.state="open"}_hideMessage(){this.contextViewProvider&&(this.state==="open"&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),this.state==="open"&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const e=this.value,i=e.charCodeAt(e.length-1)===10?" ":"";(e+i).replace(/\u000c/g,"")?this.mirror.textContent=e+i:this.mirror.innerText=" ",this.layout()}applyStyles(){const e=this.options.inputBoxStyles,t=e.inputBackground??"",i=e.inputForeground??"",n=e.inputBorder??"";this.element.style.backgroundColor=t,this.element.style.color=i,this.input.style.backgroundColor="inherit",this.input.style.color=i,this.element.style.border=`1px solid ${kf(n,"transparent")}`}layout(){if(!this.mirror)return;const e=this.cachedContentHeight;this.cachedContentHeight=Vf(this.mirror),e!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(e){const t=this.inputElement,i=t.selectionStart,n=t.selectionEnd,o=t.value;i!==null&&n!==null&&(this.value=o.substr(0,i)+e+o.substr(n),t.setSelectionRange(i+1,i+1),this.layout())}dispose(){var e;this._hideMessage(),this.message=null,(e=this.actionbar)==null||e.dispose(),super.dispose()}}class oVe extends Gst{constructor(e,t,i){const n=F({key:"history.inputbox.hint.suffix.noparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field ends in a closing parenthesis ")", for example "Filter (e.g. text, !exclude)". The character inserted into the final string is ⇅ to represent the up and down arrow keys.']}," or {0} for history","⇅"),o=F({key:"history.inputbox.hint.suffix.inparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field does NOT end in a closing parenthesis (eg. "Find"). The character inserted into the final string is ⇅ to represent the up and down arrow keys.']}," ({0} for history)","⇅");super(e,t,i),this._onDidFocus=this._register(new fe),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new fe),this.onDidBlur=this._onDidBlur.event,this.history=new Dst(i.history,100);const r=()=>{if(i.showHistoryHint&&i.showHistoryHint()&&!this.placeholder.endsWith(n)&&!this.placeholder.endsWith(o)&&this.history.getHistory().length){const l=this.placeholder.endsWith(")")?n:o,a=this.placeholder+l;i.showPlaceholderOnFocus&&!C3(this.input)?this.placeholder=a:this.setPlaceHolder(a)}};this.observer=new MutationObserver((l,a)=>{l.forEach(d=>{d.target.textContent||r()})}),this.observer.observe(this.input,{attributeFilter:["class"]}),this.onfocus(this.input,()=>r()),this.onblur(this.input,()=>{const l=a=>{if(this.placeholder.endsWith(a)){const d=this.placeholder.slice(0,this.placeholder.length-a.length);return i.showPlaceholderOnFocus?this.placeholder=d:this.setPlaceHolder(d),!0}else return!1};l(o)||l(n)})}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(e){this.value&&(e||this.value!==this.getCurrentValue())&&this.history.add(this.value)}isAtLastInHistory(){return this.history.isLast()}isNowhereInHistory(){return this.history.isNowhere()}showNextValue(){this.history.has(this.value)||this.addToHistory();let e=this.getNextValue();e&&(e=e===this.value?this.getNextValue():e),this.value=e??"",Xg(this.value?this.value:F("clearedInput","Cleared Input"))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let e=this.getPreviousValue();e&&(e=e===this.value?this.getPreviousValue():e),e&&(this.value=e,Xg(this.value))}setPlaceHolder(e){super.setPlaceHolder(e),this.setTooltip(e)}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let e=this.history.current();return e||(e=this.history.last(),this.history.next()),e}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}const Jst=F("defaultLabel","input");class rVe extends ch{constructor(e,t,i){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=this._register(new Lr),this.additionalToggles=[],this._onDidOptionChange=this._register(new fe),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new fe),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new fe),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new fe),this._onKeyUp=this._register(new fe),this._onCaseSensitiveKeyDown=this._register(new fe),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new fe),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.placeholder=i.placeholder||"",this.validation=i.validation,this.label=i.label||Jst,this.showCommonFindToggles=!!i.showCommonFindToggles;const n=i.appendCaseSensitiveLabel||"",o=i.appendWholeWordsLabel||"",r=i.appendRegexLabel||"",l=i.history||[],a=!!i.flexibleHeight,d=!!i.flexibleWidth,c=i.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new oVe(this.domNode,t,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},history:l,showHistoryHint:i.showHistoryHint,flexibleHeight:a,flexibleWidth:d,flexibleMaxHeight:c,inputBoxStyles:i.inputBoxStyles}));const h=this._register(xy());if(this.showCommonFindToggles){this.regex=this._register(new sVe({appendTitle:r,isChecked:!1,hoverDelegate:h,...i.toggleStyles})),this._register(this.regex.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.regex.onKeyDown(m=>{this._onRegexKeyDown.fire(m)})),this.wholeWords=this._register(new nVe({appendTitle:o,isChecked:!1,hoverDelegate:h,...i.toggleStyles})),this._register(this.wholeWords.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this.caseSensitive=this._register(new iVe({appendTitle:n,isChecked:!1,hoverDelegate:h,...i.toggleStyles})),this._register(this.caseSensitive.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.caseSensitive.onKeyDown(m=>{this._onCaseSensitiveKeyDown.fire(m)}));const u=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,m=>{if(m.equals(15)||m.equals(17)||m.equals(9)){const p=u.indexOf(this.domNode.ownerDocument.activeElement);if(p>=0){let g=-1;m.equals(17)?g=(p+1)%u.length:m.equals(15)&&(p===0?g=u.length-1:g=p-1),m.equals(9)?(u[p].blur(),this.inputBox.focus()):g>=0&&u[g].focus(),Un.stop(m,!0)}}})}this.controls=document.createElement("div"),this.controls.className="controls",this.controls.style.display=this.showCommonFindToggles?"":"none",this.caseSensitive&&this.controls.append(this.caseSensitive.domNode),this.wholeWords&&this.controls.appendChild(this.wholeWords.domNode),this.regex&&this.controls.appendChild(this.regex.domNode),this.setAdditionalToggles(i==null?void 0:i.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),e==null||e.appendChild(this.domNode),this._register(Te(this.inputBox.inputElement,"compositionstart",u=>{this.imeSessionInProgress=!0})),this._register(Te(this.inputBox.inputElement,"compositionend",u=>{this.imeSessionInProgress=!1,this._onInput.fire()})),this.onkeydown(this.inputBox.inputElement,u=>this._onKeyDown.fire(u)),this.onkeyup(this.inputBox.inputElement,u=>this._onKeyUp.fire(u)),this.oninput(this.inputBox.inputElement,u=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,u=>this._onMouseDown.fire(u))}get onDidChange(){return this.inputBox.onDidChange}layout(e){this.inputBox.layout(),this.updateInputBoxPadding(e.collapsedFindWidget)}enable(){var e,t,i;this.domNode.classList.remove("disabled"),this.inputBox.enable(),(e=this.regex)==null||e.enable(),(t=this.wholeWords)==null||t.enable(),(i=this.caseSensitive)==null||i.enable();for(const n of this.additionalToggles)n.enable()}disable(){var e,t,i;this.domNode.classList.add("disabled"),this.inputBox.disable(),(e=this.regex)==null||e.disable(),(t=this.wholeWords)==null||t.disable(),(i=this.caseSensitive)==null||i.disable();for(const n of this.additionalToggles)n.disable()}setFocusInputOnOptionClick(e){this.fixFocusOnOptionClickEnabled=e}setEnabled(e){e?this.enable():this.disable()}setAdditionalToggles(e){for(const t of this.additionalToggles)t.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.value=new De;for(const t of e??[])this.additionalTogglesDisposables.value.add(t),this.controls.appendChild(t.domNode),this.additionalTogglesDisposables.value.add(t.onChange(i=>{this._onDidOptionChange.fire(i),!i&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()})),this.additionalToggles.push(t);this.additionalToggles.length>0&&(this.controls.style.display=""),this.updateInputBoxPadding()}updateInputBoxPadding(e=!1){var t,i,n;e?this.inputBox.paddingRight=0:this.inputBox.paddingRight=(((t=this.caseSensitive)==null?void 0:t.width())??0)+(((i=this.wholeWords)==null?void 0:i.width())??0)+(((n=this.regex)==null?void 0:n.width())??0)+this.additionalToggles.reduce((o,r)=>o+r.width(),0)}getValue(){return this.inputBox.value}setValue(e){this.inputBox.value!==e&&(this.inputBox.value=e)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var e;return((e=this.caseSensitive)==null?void 0:e.checked)??!1}setCaseSensitive(e){this.caseSensitive&&(this.caseSensitive.checked=e)}getWholeWords(){var e;return((e=this.wholeWords)==null?void 0:e.checked)??!1}setWholeWords(e){this.wholeWords&&(this.wholeWords.checked=e)}getRegex(){var e;return((e=this.regex)==null?void 0:e.checked)??!1}setRegex(e){this.regex&&(this.regex.checked=e,this.validate())}focusOnCaseSensitive(){var e;(e=this.caseSensitive)==null||e.focus()}highlightFindOptions(){this.domNode.classList.remove("highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add("highlight-"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}showMessage(e){this.inputBox.showMessage(e)}clearMessage(){this.inputBox.hideMessage()}}const Xst=gt;class Yst extends be{constructor(e,t,i){super(),this.parent=e,this.onKeyDown=o=>Fo(this.findInput.inputBox.inputElement,ut.KEY_DOWN,o),this.onDidChange=o=>this.findInput.onDidChange(o),this.container=nt(this.parent,Xst(".quick-input-box")),this.findInput=this._register(new rVe(this.container,void 0,{label:"",inputBoxStyles:t,toggleStyles:i}));const n=this.findInput.inputBox.inputElement;n.role="combobox",n.ariaHasPopup="menu",n.ariaAutoComplete="list",n.ariaExpanded="true"}get value(){return this.findInput.getValue()}set value(e){this.findInput.setValue(e)}select(e=null){this.findInput.inputBox.select(e)}getSelection(){return this.findInput.inputBox.getSelection()}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(e){this.findInput.inputBox.setPlaceHolder(e)}get password(){return this.findInput.inputBox.inputElement.type==="password"}set password(e){this.findInput.inputBox.inputElement.type=e?"password":"text"}set enabled(e){this.findInput.inputBox.inputElement.toggleAttribute("readonly",!e)}set toggles(e){this.findInput.setAdditionalToggles(e)}setAttribute(e,t){this.findInput.inputBox.inputElement.setAttribute(e,t)}showDecoration(e){e===zo.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:e===zo.Info?1:e===zo.Warning?2:3,content:""})}stylesForType(e){return this.findInput.inputBox.stylesForType(e===zo.Info?1:e===zo.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}class _st{get templateId(){return this.renderer.templateId}constructor(e,t){this.renderer=e,this.modelProvider=t}renderTemplate(e){return{data:this.renderer.renderTemplate(e),disposable:be.None}}renderElement(e,t,i,n){var a;if((a=i.disposable)==null||a.dispose(),!i.data)return;const o=this.modelProvider();if(o.isResolved(e))return this.renderer.renderElement(o.get(e),e,i.data,n);const r=new go,l=o.resolve(e,r.token);i.disposable={dispose:()=>r.cancel()},this.renderer.renderPlaceholder(e,i.data),l.then(d=>this.renderer.renderElement(d,e,i.data,n))}disposeTemplate(e){e.disposable&&(e.disposable.dispose(),e.disposable=void 0),e.data&&(this.renderer.disposeTemplate(e.data),e.data=void 0)}}class zst{constructor(e,t){this.modelProvider=e,this.accessibilityProvider=t}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(e){const t=this.modelProvider();return t.isResolved(e)?this.accessibilityProvider.getAriaLabel(t.get(e)):null}}function Ost(s,e){return{...e,accessibilityProvider:e.accessibilityProvider&&new zst(s,e.accessibilityProvider)}}class jst{constructor(e,t,i,n,o={}){const r=()=>this.model,l=n.map(a=>new _st(a,r));this.list=new hh(e,t,i,l,Ost(r,o))}updateOptions(e){this.list.updateOptions(e)}getHTMLElement(){return this.list.getHTMLElement()}get onDidFocus(){return this.list.onDidFocus}get widget(){return this.list}get onDidDispose(){return this.list.onDidDispose}get onMouseDblClick(){return Ut.map(this.list.onMouseDblClick,({element:e,index:t,browserEvent:i})=>({element:e===void 0?void 0:this._model.get(e),index:t,browserEvent:i}))}get onPointer(){return Ut.map(this.list.onPointer,({element:e,index:t,browserEvent:i})=>({element:e===void 0?void 0:this._model.get(e),index:t,browserEvent:i}))}get onDidChangeSelection(){return Ut.map(this.list.onDidChangeSelection,({elements:e,indexes:t,browserEvent:i})=>({elements:e.map(n=>this._model.get(n)),indexes:t,browserEvent:i}))}get model(){return this._model}set model(e){this._model=e,this.list.splice(0,this.list.length,cd(e.length))}getFocus(){return this.list.getFocus()}getSelection(){return this.list.getSelection()}getSelectedElements(){return this.getSelection().map(e=>this.model.get(e))}style(e){this.list.style(e)}dispose(){this.list.dispose()}}var VM=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};const Pst=!1;var i5;(function(s){s.North="north",s.South="south",s.East="east",s.West="west"})(i5||(i5={}));let Hst=4;const Kst=new fe;let qst=300;const $st=new fe;class joe{constructor(e){this.el=e,this.disposables=new De}get onPointerMove(){return this.disposables.add(new fn(ai(this.el),"mousemove")).event}get onPointerUp(){return this.disposables.add(new fn(ai(this.el),"mouseup")).event}dispose(){this.disposables.dispose()}}VM([Po],joe.prototype,"onPointerMove",null);VM([Po],joe.prototype,"onPointerUp",null);class Poe{get onPointerMove(){return this.disposables.add(new fn(this.el,vs.Change)).event}get onPointerUp(){return this.disposables.add(new fn(this.el,vs.End)).event}constructor(e){this.el=e,this.disposables=new De}dispose(){this.disposables.dispose()}}VM([Po],Poe.prototype,"onPointerMove",null);VM([Po],Poe.prototype,"onPointerUp",null);class n5{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(e){this.factory=e}dispose(){}}VM([Po],n5.prototype,"onPointerMove",null);VM([Po],n5.prototype,"onPointerUp",null);const Jme="pointer-events-disabled";class Jl extends be{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(e){this._state!==e&&(this.el.classList.toggle("disabled",e===0),this.el.classList.toggle("minimum",e===1),this.el.classList.toggle("maximum",e===2),this._state=e,this.onDidEnablementChange.fire(e))}set orthogonalStartSash(e){if(this._orthogonalStartSash!==e){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),e){const t=i=>{this.orthogonalStartDragHandleDisposables.clear(),i!==0&&(this._orthogonalStartDragHandle=nt(this.el,gt(".orthogonal-drag-handle.start")),this.orthogonalStartDragHandleDisposables.add(ei(()=>this._orthogonalStartDragHandle.remove())),this.orthogonalStartDragHandleDisposables.add(new fn(this._orthogonalStartDragHandle,"mouseenter")).event(()=>Jl.onMouseEnter(e),void 0,this.orthogonalStartDragHandleDisposables),this.orthogonalStartDragHandleDisposables.add(new fn(this._orthogonalStartDragHandle,"mouseleave")).event(()=>Jl.onMouseLeave(e),void 0,this.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalStartSash=e}}set orthogonalEndSash(e){if(this._orthogonalEndSash!==e){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),e){const t=i=>{this.orthogonalEndDragHandleDisposables.clear(),i!==0&&(this._orthogonalEndDragHandle=nt(this.el,gt(".orthogonal-drag-handle.end")),this.orthogonalEndDragHandleDisposables.add(ei(()=>this._orthogonalEndDragHandle.remove())),this.orthogonalEndDragHandleDisposables.add(new fn(this._orthogonalEndDragHandle,"mouseenter")).event(()=>Jl.onMouseEnter(e),void 0,this.orthogonalEndDragHandleDisposables),this.orthogonalEndDragHandleDisposables.add(new fn(this._orthogonalEndDragHandle,"mouseleave")).event(()=>Jl.onMouseLeave(e),void 0,this.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalEndSash=e}}constructor(e,t,i){super(),this.hoverDelay=qst,this.hoverDelayer=this._register(new Oh(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new fe),this._onDidStart=this._register(new fe),this._onDidChange=this._register(new fe),this._onDidReset=this._register(new fe),this._onDidEnd=this._register(new fe),this.orthogonalStartSashDisposables=this._register(new De),this.orthogonalStartDragHandleDisposables=this._register(new De),this.orthogonalEndSashDisposables=this._register(new De),this.orthogonalEndDragHandleDisposables=this._register(new De),this.onDidStart=this._onDidStart.event,this.onDidChange=this._onDidChange.event,this.onDidReset=this._onDidReset.event,this.onDidEnd=this._onDidEnd.event,this.linkedSash=void 0,this.el=nt(e,gt(".monaco-sash")),i.orthogonalEdge&&this.el.classList.add(`orthogonal-edge-${i.orthogonalEdge}`),hn&&this.el.classList.add("mac");const n=this._register(new fn(this.el,"mousedown")).event;this._register(n(h=>this.onPointerStart(h,new joe(e)),this));const o=this._register(new fn(this.el,"dblclick")).event;this._register(o(this.onPointerDoublePress,this));const r=this._register(new fn(this.el,"mouseenter")).event;this._register(r(()=>Jl.onMouseEnter(this)));const l=this._register(new fn(this.el,"mouseleave")).event;this._register(l(()=>Jl.onMouseLeave(this))),this._register(Hl.addTarget(this.el));const a=this._register(new fn(this.el,vs.Start)).event;this._register(a(h=>this.onPointerStart(h,new Poe(this.el)),this));const d=this._register(new fn(this.el,vs.Tap)).event;let c;this._register(d(h=>{if(c){clearTimeout(c),c=void 0,this.onPointerDoublePress(h);return}clearTimeout(c),c=setTimeout(()=>c=void 0,250)},this)),typeof i.size=="number"?(this.size=i.size,i.orientation===0?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=Hst,this._register(Kst.event(h=>{this.size=h,this.layout()}))),this._register($st.event(h=>this.hoverDelay=h)),this.layoutProvider=t,this.orthogonalStartSash=i.orthogonalStartSash,this.orthogonalEndSash=i.orthogonalEndSash,this.orientation=i.orientation||0,this.orientation===1?(this.el.classList.add("horizontal"),this.el.classList.remove("vertical")):(this.el.classList.remove("horizontal"),this.el.classList.add("vertical")),this.el.classList.toggle("debug",Pst),this.layout()}onPointerStart(e,t){Un.stop(e);let i=!1;if(!e.__orthogonalSashEvent){const p=this.getOrthogonalSash(e);p&&(i=!0,e.__orthogonalSashEvent=!0,p.onPointerStart(e,new n5(t)))}if(this.linkedSash&&!e.__linkedSashEvent&&(e.__linkedSashEvent=!0,this.linkedSash.onPointerStart(e,new n5(t))),!this.state)return;const n=this.el.ownerDocument.getElementsByTagName("iframe");for(const p of n)p.classList.add(Jme);const o=e.pageX,r=e.pageY,l=e.altKey,a={startX:o,currentX:o,startY:r,currentY:r,altKey:l};this.el.classList.add("active"),this._onDidStart.fire(a);const d=sh(this.el),c=()=>{let p="";i?p="all-scroll":this.orientation===1?this.state===1?p="s-resize":this.state===2?p="n-resize":p=hn?"row-resize":"ns-resize":this.state===1?p="e-resize":this.state===2?p="w-resize":p=hn?"col-resize":"ew-resize",d.textContent=`* { cursor: ${p} !important; }`},h=new De;c(),i||this.onDidEnablementChange.event(c,null,h);const u=p=>{Un.stop(p,!1);const g={startX:o,currentX:p.pageX,startY:r,currentY:p.pageY,altKey:l};this._onDidChange.fire(g)},m=p=>{Un.stop(p,!1),d.remove(),this.el.classList.remove("active"),this._onDidEnd.fire(),h.dispose();for(const g of n)g.classList.remove(Jme)};t.onPointerMove(u,null,h),t.onPointerUp(m,null,h),h.add(t)}onPointerDoublePress(e){const t=this.getOrthogonalSash(e);t&&t._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(e,t=!1){e.el.classList.contains("active")?(e.hoverDelayer.cancel(),e.el.classList.add("hover")):e.hoverDelayer.trigger(()=>e.el.classList.add("hover"),e.hoverDelay).then(void 0,()=>{}),!t&&e.linkedSash&&Jl.onMouseEnter(e.linkedSash,!0)}static onMouseLeave(e,t=!1){e.hoverDelayer.cancel(),e.el.classList.remove("hover"),!t&&e.linkedSash&&Jl.onMouseLeave(e.linkedSash,!0)}clearSashHoverState(){Jl.onMouseLeave(this)}layout(){if(this.orientation===0){const e=this.layoutProvider;this.el.style.left=e.getVerticalSashLeft(this)-this.size/2+"px",e.getVerticalSashTop&&(this.el.style.top=e.getVerticalSashTop(this)+"px"),e.getVerticalSashHeight&&(this.el.style.height=e.getVerticalSashHeight(this)+"px")}else{const e=this.layoutProvider;this.el.style.top=e.getHorizontalSashTop(this)-this.size/2+"px",e.getHorizontalSashLeft&&(this.el.style.left=e.getHorizontalSashLeft(this)+"px"),e.getHorizontalSashWidth&&(this.el.style.width=e.getHorizontalSashWidth(this)+"px")}}getOrthogonalSash(e){const t=e.initialTarget??e.target;if(!(!t||!Cr(t))&&t.classList.contains("orthogonal-drag-handle"))return t.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash}dispose(){super.dispose(),this.el.remove()}}const eot={separatorBorder:Je.transparent};class lVe{set size(e){this._size=e}get size(){return this._size}get visible(){return typeof this._cachedVisibleSize>"u"}setVisible(e,t){var i,n;if(e!==this.visible){e?(this.size=Ba(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize=typeof t=="number"?t:this.size,this.size=0),this.container.classList.toggle("visible",e);try{(n=(i=this.view).setVisible)==null||n.call(i,e)}catch(o){console.error("Splitview: Failed to set visible view"),console.error(o)}}}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get proportionalLayout(){return this.view.proportionalLayout??!0}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,typeof i=="number"?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}layout(e,t){this.layoutContainer(e);try{this.view.layout(this.size,e,t)}catch(i){console.error("Splitview: Failed to layout view"),console.error(i)}}dispose(){this.disposable.dispose()}}class tot extends lVe{layoutContainer(e){this.container.style.top=`${e}px`,this.container.style.height=`${this.size}px`}}class iot extends lVe{layoutContainer(e){this.container.style.left=`${e}px`,this.container.style.width=`${this.size}px`}}var G0;(function(s){s[s.Idle=0]="Idle",s[s.Busy=1]="Busy"})(G0||(G0={}));var s5;(function(s){s.Distribute={type:"distribute"};function e(n){return{type:"split",index:n}}s.Split=e;function t(n){return{type:"auto",index:n}}s.Auto=t;function i(n){return{type:"invisible",cachedVisibleSize:n}}s.Invisible=i})(s5||(s5={}));class aVe extends be{get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}get startSnappingEnabled(){return this._startSnappingEnabled}get endSnappingEnabled(){return this._endSnappingEnabled}set orthogonalStartSash(e){for(const t of this.sashItems)t.sash.orthogonalStartSash=e;this._orthogonalStartSash=e}set orthogonalEndSash(e){for(const t of this.sashItems)t.sash.orthogonalEndSash=e;this._orthogonalEndSash=e}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}constructor(e,t={}){super(),this.size=0,this._contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=G0.Idle,this._onDidSashChange=this._register(new fe),this._onDidSashReset=this._register(new fe),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.onDidSashChange=this._onDidSashChange.event,this.onDidSashReset=this._onDidSashReset.event,this.orientation=t.orientation??0,this.inverseAltBehavior=t.inverseAltBehavior??!1,this.proportionalLayout=t.proportionalLayout??!0,this.getSashOrthogonalSize=t.getSashOrthogonalSize,this.el=document.createElement("div"),this.el.classList.add("monaco-split-view2"),this.el.classList.add(this.orientation===0?"vertical":"horizontal"),e.appendChild(this.el),this.sashContainer=nt(this.el,gt(".sash-container")),this.viewContainer=gt(".split-view-container"),this.scrollable=this._register(new FM({forceIntegerValues:!0,smoothScrollDuration:125,scheduleAtNextAnimationFrame:n=>fc(ai(this.el),n)})),this.scrollableElement=this._register(new i9(this.viewContainer,{vertical:this.orientation===0?t.scrollbarVisibility??1:2,horizontal:this.orientation===1?t.scrollbarVisibility??1:2},this.scrollable));const i=this._register(new fn(this.viewContainer,"scroll")).event;this._register(i(n=>{const o=this.scrollableElement.getScrollPosition(),r=Math.abs(this.viewContainer.scrollLeft-o.scrollLeft)<=1?void 0:this.viewContainer.scrollLeft,l=Math.abs(this.viewContainer.scrollTop-o.scrollTop)<=1?void 0:this.viewContainer.scrollTop;(r!==void 0||l!==void 0)&&this.scrollableElement.setScrollPosition({scrollLeft:r,scrollTop:l})})),this.onDidScroll=this.scrollableElement.onScroll,this._register(this.onDidScroll(n=>{n.scrollTopChanged&&(this.viewContainer.scrollTop=n.scrollTop),n.scrollLeftChanged&&(this.viewContainer.scrollLeft=n.scrollLeft)})),nt(this.el,this.scrollableElement.getDomNode()),this.style(t.styles||eot),t.descriptor&&(this.size=t.descriptor.size,t.descriptor.views.forEach((n,o)=>{const r=fa(n.visible)||n.visible?n.size:{type:"invisible",cachedVisibleSize:n.size},l=n.view;this.doAddView(l,r,o,!0)}),this._contentSize=this.viewItems.reduce((n,o)=>n+o.size,0),this.saveProportions())}style(e){e.separatorBorder.isTransparent()?(this.el.classList.remove("separator-border"),this.el.style.removeProperty("--separator-border")):(this.el.classList.add("separator-border"),this.el.style.setProperty("--separator-border",e.separatorBorder.toString()))}addView(e,t,i=this.viewItems.length,n){this.doAddView(e,t,i,n)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.layoutContext=t,this.proportions){let n=0;for(let o=0;o<this.viewItems.length;o++){const r=this.viewItems[o],l=this.proportions[o];typeof l=="number"?n+=l:e-=r.size}for(let o=0;o<this.viewItems.length;o++){const r=this.viewItems[o],l=this.proportions[o];typeof l=="number"&&n>0&&(r.size=Ba(Math.round(l*e/n),r.minimumSize,r.maximumSize))}}else{const n=cd(this.viewItems.length),o=n.filter(l=>this.viewItems[l].priority===1),r=n.filter(l=>this.viewItems[l].priority===2);this.resize(this.viewItems.length-1,e-i,void 0,o,r)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this._contentSize>0&&(this.proportions=this.viewItems.map(e=>e.proportionalLayout&&e.visible?e.size/this._contentSize:void 0))}onSashStart({sash:e,start:t,alt:i}){for(const l of this.viewItems)l.enabled=!1;const n=this.sashItems.findIndex(l=>l.sash===e),o=Pu(Te(this.el.ownerDocument.body,"keydown",l=>r(this.sashDragState.current,l.altKey)),Te(this.el.ownerDocument.body,"keyup",()=>r(this.sashDragState.current,!1))),r=(l,a)=>{const d=this.viewItems.map(p=>p.size);let c=Number.NEGATIVE_INFINITY,h=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(a=!a),a)if(n===this.sashItems.length-1){const g=this.viewItems[n];c=(g.minimumSize-g.size)/2,h=(g.maximumSize-g.size)/2}else{const g=this.viewItems[n+1];c=(g.size-g.maximumSize)/2,h=(g.size-g.minimumSize)/2}let u,m;if(!a){const p=cd(n,-1),g=cd(n+1,this.viewItems.length),f=p.reduce((w,Q)=>w+(this.viewItems[Q].minimumSize-d[Q]),0),b=p.reduce((w,Q)=>w+(this.viewItems[Q].viewMaximumSize-d[Q]),0),U=g.length===0?Number.POSITIVE_INFINITY:g.reduce((w,Q)=>w+(d[Q]-this.viewItems[Q].minimumSize),0),S=g.length===0?Number.NEGATIVE_INFINITY:g.reduce((w,Q)=>w+(d[Q]-this.viewItems[Q].viewMaximumSize),0),Z=Math.max(f,S),R=Math.min(U,b),y=this.findFirstSnapIndex(p),N=this.findFirstSnapIndex(g);if(typeof y=="number"){const w=this.viewItems[y],Q=Math.floor(w.viewMinimumSize/2);u={index:y,limitDelta:w.visible?Z-Q:Z+Q,size:w.size}}if(typeof N=="number"){const w=this.viewItems[N],Q=Math.floor(w.viewMinimumSize/2);m={index:N,limitDelta:w.visible?R+Q:R-Q,size:w.size}}}this.sashDragState={start:l,current:l,index:n,sizes:d,minDelta:c,maxDelta:h,alt:a,snapBefore:u,snapAfter:m,disposable:o}};r(t,i)}onSashChange({current:e}){const{index:t,start:i,sizes:n,alt:o,minDelta:r,maxDelta:l,snapBefore:a,snapAfter:d}=this.sashDragState;this.sashDragState.current=e;const c=e-i,h=this.resize(t,c,n,void 0,void 0,r,l,a,d);if(o){const u=t===this.sashItems.length-1,m=this.viewItems.map(S=>S.size),p=u?t:t+1,g=this.viewItems[p],f=g.size-g.maximumSize,b=g.size-g.minimumSize,U=u?t-1:t+1;this.resize(U,-h,m,void 0,void 0,f,b)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(e){this._onDidSashChange.fire(e),this.sashDragState.disposable.dispose(),this.saveProportions();for(const t of this.viewItems)t.enabled=!0}onViewChange(e,t){const i=this.viewItems.indexOf(e);i<0||i>=this.viewItems.length||(t=typeof t=="number"?t:e.size,t=Ba(t,e.minimumSize,e.maximumSize),this.inverseAltBehavior&&i>0?(this.resize(i-1,Math.floor((e.size-t)/2)),this.distributeEmptySpace(),this.layoutViews()):(e.size=t,this.relayout([i],void 0)))}resizeView(e,t){if(!(e<0||e>=this.viewItems.length)){if(this.state!==G0.Idle)throw new Error("Cant modify splitview");this.state=G0.Busy;try{const i=cd(this.viewItems.length).filter(l=>l!==e),n=[...i.filter(l=>this.viewItems[l].priority===1),e],o=i.filter(l=>this.viewItems[l].priority===2),r=this.viewItems[e];t=Math.round(t),t=Ba(t,r.minimumSize,Math.min(r.maximumSize,this.size)),r.size=t,this.relayout(n,o)}finally{this.state=G0.Idle}}}distributeViewSizes(){const e=[];let t=0;for(const l of this.viewItems)l.maximumSize-l.minimumSize>0&&(e.push(l),t+=l.size);const i=Math.floor(t/e.length);for(const l of e)l.size=Ba(i,l.minimumSize,l.maximumSize);const n=cd(this.viewItems.length),o=n.filter(l=>this.viewItems[l].priority===1),r=n.filter(l=>this.viewItems[l].priority===2);this.relayout(o,r)}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}doAddView(e,t,i=this.viewItems.length,n){if(this.state!==G0.Idle)throw new Error("Cant modify splitview");this.state=G0.Busy;try{const o=gt(".split-view-view");i===this.viewItems.length?this.viewContainer.appendChild(o):this.viewContainer.insertBefore(o,this.viewContainer.children.item(i));const r=e.onDidChange(u=>this.onViewChange(c,u)),l=ei(()=>o.remove()),a=Pu(r,l);let d;typeof t=="number"?d=t:(t.type==="auto"&&(this.areViewsDistributed()?t={type:"distribute"}:t={type:"split",index:t.index}),t.type==="split"?d=this.getViewSize(t.index)/2:t.type==="invisible"?d={cachedVisibleSize:t.cachedVisibleSize}:d=e.minimumSize);const c=this.orientation===0?new tot(o,e,d,a):new iot(o,e,d,a);if(this.viewItems.splice(i,0,c),this.viewItems.length>1){const u={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},m=this.orientation===0?new Jl(this.sashContainer,{getHorizontalSashTop:w=>this.getSashPosition(w),getHorizontalSashWidth:this.getSashOrthogonalSize},{...u,orientation:1}):new Jl(this.sashContainer,{getVerticalSashLeft:w=>this.getSashPosition(w),getVerticalSashHeight:this.getSashOrthogonalSize},{...u,orientation:0}),p=this.orientation===0?w=>({sash:m,start:w.startY,current:w.currentY,alt:w.altKey}):w=>({sash:m,start:w.startX,current:w.currentX,alt:w.altKey}),f=Ut.map(m.onDidStart,p)(this.onSashStart,this),U=Ut.map(m.onDidChange,p)(this.onSashChange,this),Z=Ut.map(m.onDidEnd,()=>this.sashItems.findIndex(w=>w.sash===m))(this.onSashEnd,this),R=m.onDidReset(()=>{const w=this.sashItems.findIndex(J=>J.sash===m),Q=cd(w,-1),C=cd(w+1,this.viewItems.length),v=this.findFirstSnapIndex(Q),Y=this.findFirstSnapIndex(C);typeof v=="number"&&!this.viewItems[v].visible||typeof Y=="number"&&!this.viewItems[Y].visible||this._onDidSashReset.fire(w)}),y=Pu(f,U,Z,R,m),N={sash:m,disposable:y};this.sashItems.splice(i-1,0,N)}o.appendChild(e.element);let h;typeof t!="number"&&t.type==="split"&&(h=[t.index]),n||this.relayout([i],h),!n&&typeof t!="number"&&t.type==="distribute"&&this.distributeViewSizes()}finally{this.state=G0.Idle}}relayout(e,t){const i=this.viewItems.reduce((n,o)=>n+o.size,0);this.resize(this.viewItems.length-1,this.size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(e,t,i=this.viewItems.map(c=>c.size),n,o,r=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY,a,d){if(e<0||e>=this.viewItems.length)return 0;const c=cd(e,-1),h=cd(e+1,this.viewItems.length);if(o)for(const N of o)wj(c,N),wj(h,N);if(n)for(const N of n)Ex(c,N),Ex(h,N);const u=c.map(N=>this.viewItems[N]),m=c.map(N=>i[N]),p=h.map(N=>this.viewItems[N]),g=h.map(N=>i[N]),f=c.reduce((N,w)=>N+(this.viewItems[w].minimumSize-i[w]),0),b=c.reduce((N,w)=>N+(this.viewItems[w].maximumSize-i[w]),0),U=h.length===0?Number.POSITIVE_INFINITY:h.reduce((N,w)=>N+(i[w]-this.viewItems[w].minimumSize),0),S=h.length===0?Number.NEGATIVE_INFINITY:h.reduce((N,w)=>N+(i[w]-this.viewItems[w].maximumSize),0),Z=Math.max(f,S,r),R=Math.min(U,b,l);let y=!1;if(a){const N=this.viewItems[a.index],w=t>=a.limitDelta;y=w!==N.visible,N.setVisible(w,a.size)}if(!y&&d){const N=this.viewItems[d.index],w=t<d.limitDelta;y=w!==N.visible,N.setVisible(w,d.size)}if(y)return this.resize(e,t,i,n,o,r,l);t=Ba(t,Z,R);for(let N=0,w=t;N<u.length;N++){const Q=u[N],C=Ba(m[N]+w,Q.minimumSize,Q.maximumSize),v=C-m[N];w-=v,Q.size=C}for(let N=0,w=t;N<p.length;N++){const Q=p[N],C=Ba(g[N]-w,Q.minimumSize,Q.maximumSize),v=C-g[N];w+=v,Q.size=C}return t}distributeEmptySpace(e){const t=this.viewItems.reduce((l,a)=>l+a.size,0);let i=this.size-t;const n=cd(this.viewItems.length-1,-1),o=n.filter(l=>this.viewItems[l].priority===1),r=n.filter(l=>this.viewItems[l].priority===2);for(const l of r)wj(n,l);for(const l of o)Ex(n,l);typeof e=="number"&&Ex(n,e);for(let l=0;i!==0&&l<n.length;l++){const a=this.viewItems[n[l]],d=Ba(a.size+i,a.minimumSize,a.maximumSize),c=d-a.size;i-=c,a.size=d}}layoutViews(){this._contentSize=this.viewItems.reduce((t,i)=>t+i.size,0);let e=0;for(const t of this.viewItems)t.layout(e,this.layoutContext),e+=t.size;this.sashItems.forEach(t=>t.sash.layout()),this.updateSashEnablement(),this.updateScrollableElement()}updateScrollableElement(){this.orientation===0?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this._contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this._contentSize})}updateSashEnablement(){let e=!1;const t=this.viewItems.map(a=>e=a.size-a.minimumSize>0||e);e=!1;const i=this.viewItems.map(a=>e=a.maximumSize-a.size>0||e),n=[...this.viewItems].reverse();e=!1;const o=n.map(a=>e=a.size-a.minimumSize>0||e).reverse();e=!1;const r=n.map(a=>e=a.maximumSize-a.size>0||e).reverse();let l=0;for(let a=0;a<this.sashItems.length;a++){const{sash:d}=this.sashItems[a],c=this.viewItems[a];l+=c.size;const h=!(t[a]&&r[a+1]),u=!(i[a]&&o[a+1]);if(h&&u){const m=cd(a,-1),p=cd(a+1,this.viewItems.length),g=this.findFirstSnapIndex(m),f=this.findFirstSnapIndex(p),b=typeof g=="number"&&!this.viewItems[g].visible,U=typeof f=="number"&&!this.viewItems[f].visible;b&&o[a]&&(l>0||this.startSnappingEnabled)?d.state=1:U&&t[a]&&(l<this._contentSize||this.endSnappingEnabled)?d.state=2:d.state=0}else h&&!u?d.state=1:!h&&u?d.state=2:d.state=3}}getSashPosition(e){let t=0;for(let i=0;i<this.sashItems.length;i++)if(t+=this.viewItems[i].size,this.sashItems[i].sash===e)return t;return 0}findFirstSnapIndex(e){for(const t of e){const i=this.viewItems[t];if(i.visible&&i.snap)return t}for(const t of e){const i=this.viewItems[t];if(i.visible&&i.maximumSize-i.minimumSize>0)return;if(!i.visible&&i.snap)return t}}areViewsDistributed(){let e,t;for(const i of this.viewItems)if(e=e===void 0?i.size:Math.min(e,i.size),t=t===void 0?i.size:Math.max(t,i.size),t-e>2)return!1;return!0}dispose(){var e;(e=this.sashDragState)==null||e.disposable.dispose(),Ws(this.viewItems),this.viewItems=[],this.sashItems.forEach(t=>t.disposable.dispose()),this.sashItems=[],super.dispose()}}const Y_=class Y_{constructor(e,t,i){this.columns=e,this.getColumnSize=i,this.templateId=Y_.TemplateId,this.renderedTemplates=new Set;const n=new Map(t.map(o=>[o.templateId,o]));this.renderers=[];for(const o of e){const r=n.get(o.templateId);if(!r)throw new Error(`Table cell renderer for template id ${o.templateId} not found.`);this.renderers.push(r)}}renderTemplate(e){const t=nt(e,gt(".monaco-table-tr")),i=[],n=[];for(let r=0;r<this.columns.length;r++){const l=this.renderers[r],a=nt(t,gt(".monaco-table-td",{"data-col-index":r}));a.style.width=`${this.getColumnSize(r)}px`,i.push(a),n.push(l.renderTemplate(a))}const o={container:e,cellContainers:i,cellTemplateData:n};return this.renderedTemplates.add(o),o}renderElement(e,t,i,n){for(let o=0;o<this.columns.length;o++){const l=this.columns[o].project(e);this.renderers[o].renderElement(l,t,i.cellTemplateData[o],n)}}disposeElement(e,t,i,n){for(let o=0;o<this.columns.length;o++){const r=this.renderers[o];if(r.disposeElement){const a=this.columns[o].project(e);r.disposeElement(a,t,i.cellTemplateData[o],n)}}}disposeTemplate(e){for(let t=0;t<this.columns.length;t++)this.renderers[t].disposeTemplate(e.cellTemplateData[t]);dl(e.container),this.renderedTemplates.delete(e)}layoutColumn(e,t){for(const{cellContainers:i}of this.renderedTemplates)i[e].style.width=`${t}px`}};Y_.TemplateId="row";let o5=Y_;function not(s){return{getHeight(e){return s.getHeight(e)},getTemplateId(){return o5.TemplateId}}}class sot extends be{get minimumSize(){return this.column.minimumWidth??120}get maximumSize(){return this.column.maximumWidth??Number.POSITIVE_INFINITY}get onDidChange(){return this.column.onDidChangeWidthConstraints??Ut.None}constructor(e,t){super(),this.column=e,this.index=t,this._onDidLayout=new fe,this.onDidLayout=this._onDidLayout.event,this.element=gt(".monaco-table-th",{"data-col-index":t},e.label),e.tooltip&&this._register(Ap().setupManagedHover(Ka("mouse"),this.element,e.tooltip))}layout(e){this._onDidLayout.fire([this.index,e])}}const __=class __{get onDidChangeFocus(){return this.list.onDidChangeFocus}get onDidChangeSelection(){return this.list.onDidChangeSelection}get onDidScroll(){return this.list.onDidScroll}get onMouseDblClick(){return this.list.onMouseDblClick}get onPointer(){return this.list.onPointer}get onDidFocus(){return this.list.onDidFocus}get scrollTop(){return this.list.scrollTop}set scrollTop(e){this.list.scrollTop=e}get scrollHeight(){return this.list.scrollHeight}get renderHeight(){return this.list.renderHeight}get onDidDispose(){return this.list.onDidDispose}constructor(e,t,i,n,o,r){this.virtualDelegate=i,this.columns=n,this.domId=`table_id_${++__.InstanceCount}`,this.disposables=new De,this.cachedWidth=0,this.cachedHeight=0,this.domNode=nt(t,gt(`.monaco-table.${this.domId}`));const l=n.map((c,h)=>this.disposables.add(new sot(c,h))),a={size:l.reduce((c,h)=>c+h.column.weight,0),views:l.map(c=>({size:c.column.weight,view:c}))};this.splitview=this.disposables.add(new aVe(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:()=>this.cachedHeight,descriptor:a})),this.splitview.el.style.height=`${i.headerRowHeight}px`,this.splitview.el.style.lineHeight=`${i.headerRowHeight}px`;const d=new o5(n,o,c=>this.splitview.getViewSize(c));this.list=this.disposables.add(new hh(e,this.domNode,not(i),[d],r)),Ut.any(...l.map(c=>c.onDidLayout))(([c,h])=>d.layoutColumn(c,h),null,this.disposables),this.splitview.onDidSashReset(c=>{const h=n.reduce((m,p)=>m+p.weight,0),u=n[c].weight/h*this.cachedWidth;this.splitview.resizeView(c,u)},null,this.disposables),this.styleElement=sh(this.domNode),this.style(Mtt)}updateOptions(e){this.list.updateOptions(e)}splice(e,t,i=[]){this.list.splice(e,t,i)}getHTMLElement(){return this.domNode}style(e){const t=[];t.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before {
- top: ${this.virtualDelegate.headerRowHeight+1}px;
- height: calc(100% - ${this.virtualDelegate.headerRowHeight}px);
- }`),this.styleElement.textContent=t.join(`
- `),this.list.style(e)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}};__.InstanceCount=0;let oq=__;var kc;(function(s){s[s.Expanded=0]="Expanded",s[s.Collapsed=1]="Collapsed",s[s.PreserveOrExpanded=2]="PreserveOrExpanded",s[s.PreserveOrCollapsed=3]="PreserveOrCollapsed"})(kc||(kc={}));var SS;(function(s){s[s.Unknown=0]="Unknown",s[s.Twistie=1]="Twistie",s[s.Element=2]="Element",s[s.Filter=3]="Filter"})(SS||(SS={}));class _c extends Error{constructor(e,t){super(`TreeError [${e}] ${t}`)}}class Hoe{constructor(e){this.fn=e,this._map=new WeakMap}map(e){let t=this._map.get(e);return t||(t=this.fn(e),this._map.set(e,t)),t}}function Koe(s){return typeof s=="object"&&"visibility"in s&&"data"in s}function NL(s){switch(s){case!0:return 1;case!1:return 0;default:return s}}function vP(s){return typeof s.collapsible=="boolean"}class oot{constructor(e,t,i,n={}){this.user=e,this.list=t,this.rootRef=[],this.eventBufferer=new Yv,this._onDidChangeCollapseState=new fe,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new fe,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new fe,this.onDidSplice=this._onDidSplice.event,this.refilterDelayer=new Oh(XZe),this.collapseByDefault=typeof n.collapseByDefault>"u"?!1:n.collapseByDefault,this.allowNonCollapsibleParents=n.allowNonCollapsibleParents??!1,this.filter=n.filter,this.autoExpandSingleChildren=typeof n.autoExpandSingleChildren>"u"?!1:n.autoExpandSingleChildren,this.root={parent:void 0,element:i,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(e,t,i=Zn.empty(),n={}){if(e.length===0)throw new _c(this.user,"Invalid tree location");n.diffIdentityProvider?this.spliceSmart(n.diffIdentityProvider,e,t,i,n):this.spliceSimple(e,t,i,n)}spliceSmart(e,t,i,n=Zn.empty(),o,r=o.diffDepth??0){const{parentNode:l}=this.getParentNodeWithListIndex(t);if(!l.lastDiffIds)return this.spliceSimple(t,i,n,o);const a=[...n],d=t[t.length-1],c=new Rg({getElements:()=>l.lastDiffIds},{getElements:()=>[...l.children.slice(0,d),...a,...l.children.slice(d+i)].map(g=>e.getId(g.element).toString())}).ComputeDiff(!1);if(c.quitEarly)return l.lastDiffIds=void 0,this.spliceSimple(t,i,a,o);const h=t.slice(0,-1),u=(g,f,b)=>{if(r>0)for(let U=0;U<b;U++)g--,f--,this.spliceSmart(e,[...h,g,0],Number.MAX_SAFE_INTEGER,a[f].children,o,r-1)};let m=Math.min(l.children.length,d+i),p=a.length;for(const g of c.changes.sort((f,b)=>b.originalStart-f.originalStart))u(m,p,m-(g.originalStart+g.originalLength)),m=g.originalStart,p=g.modifiedStart-d,this.spliceSimple([...h,m],g.originalLength,Zn.slice(a,p,p+g.modifiedLength),o);u(m,p,m)}spliceSimple(e,t,i=Zn.empty(),{onDidCreateNode:n,onDidDeleteNode:o,diffIdentityProvider:r}){const{parentNode:l,listIndex:a,revealed:d,visible:c}=this.getParentNodeWithListIndex(e),h=[],u=Zn.map(i,R=>this.createTreeNode(R,l,l.visible?1:0,d,h,n)),m=e[e.length-1];let p=0;for(let R=m;R>=0&&R<l.children.length;R--){const y=l.children[R];if(y.visible){p=y.visibleChildIndex;break}}const g=[];let f=0,b=0;for(const R of u)g.push(R),b+=R.renderNodeCount,R.visible&&(R.visibleChildIndex=p+f++);const U=Gce(l.children,m,t,g);r?l.lastDiffIds?Gce(l.lastDiffIds,m,t,g.map(R=>r.getId(R.element).toString())):l.lastDiffIds=l.children.map(R=>r.getId(R.element).toString()):l.lastDiffIds=void 0;let S=0;for(const R of U)R.visible&&S++;if(S!==0)for(let R=m+g.length;R<l.children.length;R++){const y=l.children[R];y.visible&&(y.visibleChildIndex-=S)}if(l.visibleChildrenCount+=f-S,d&&c){const R=U.reduce((y,N)=>y+(N.visible?N.renderNodeCount:0),0);this._updateAncestorsRenderNodeCount(l,b-R),this.list.splice(a,R,h)}if(U.length>0&&o){const R=y=>{o(y),y.children.forEach(R)};U.forEach(R)}this._onDidSplice.fire({insertedNodes:g,deletedNodes:U});let Z=l;for(;Z;){if(Z.visibility===2){this.refilterDelayer.trigger(()=>this.refilter());break}Z=Z.parent}}rerender(e){if(e.length===0)throw new _c(this.user,"Invalid tree location");const{node:t,listIndex:i,revealed:n}=this.getTreeNodeWithListIndex(e);t.visible&&n&&this.list.splice(i,1,[t])}has(e){return this.hasTreeNode(e)}getListIndex(e){const{listIndex:t,visible:i,revealed:n}=this.getTreeNodeWithListIndex(e);return i&&n?t:-1}getListRenderCount(e){return this.getTreeNode(e).renderNodeCount}isCollapsible(e){return this.getTreeNode(e).collapsible}setCollapsible(e,t){const i=this.getTreeNode(e);typeof t>"u"&&(t=!i.collapsible);const n={collapsible:t};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(e,n))}isCollapsed(e){return this.getTreeNode(e).collapsed}setCollapsed(e,t,i){const n=this.getTreeNode(e);typeof t>"u"&&(t=!n.collapsed);const o={collapsed:t,recursive:i||!1};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(e,o))}_setCollapseState(e,t){const{node:i,listIndex:n,revealed:o}=this.getTreeNodeWithListIndex(e),r=this._setListNodeCollapseState(i,n,o,t);if(i!==this.root&&this.autoExpandSingleChildren&&r&&!vP(t)&&i.collapsible&&!i.collapsed&&!t.recursive){let l=-1;for(let a=0;a<i.children.length;a++)if(i.children[a].visible)if(l>-1){l=-1;break}else l=a;l>-1&&this._setCollapseState([...e,l],t)}return r}_setListNodeCollapseState(e,t,i,n){const o=this._setNodeCollapseState(e,n,!1);if(!i||!e.visible||!o)return o;const r=e.renderNodeCount,l=this.updateNodeAfterCollapseChange(e),a=r-(t===-1?0:1);return this.list.splice(t+1,a,l.slice(1)),o}_setNodeCollapseState(e,t,i){let n;if(e===this.root?n=!1:(vP(t)?(n=e.collapsible!==t.collapsible,e.collapsible=t.collapsible):e.collapsible?(n=e.collapsed!==t.collapsed,e.collapsed=t.collapsed):n=!1,n&&this._onDidChangeCollapseState.fire({node:e,deep:i})),!vP(t)&&t.recursive)for(const o of e.children)n=this._setNodeCollapseState(o,t,!0)||n;return n}expandTo(e){this.eventBufferer.bufferEvents(()=>{let t=this.getTreeNode(e);for(;t.parent;)t=t.parent,e=e.slice(0,e.length-1),t.collapsed&&this._setCollapseState(e,{collapsed:!1,recursive:!1})})}refilter(){const e=this.root.renderNodeCount,t=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,e,t),this.refilterDelayer.cancel()}createTreeNode(e,t,i,n,o,r){const l={parent:t,element:e.element,children:[],depth:t.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:typeof e.collapsible=="boolean"?e.collapsible:typeof e.collapsed<"u",collapsed:typeof e.collapsed>"u"?this.collapseByDefault:e.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},a=this._filterNode(l,i);l.visibility=a,n&&o.push(l);const d=e.children||Zn.empty(),c=n&&a!==0&&!l.collapsed;let h=0,u=1;for(const m of d){const p=this.createTreeNode(m,l,a,c,o,r);l.children.push(p),u+=p.renderNodeCount,p.visible&&(p.visibleChildIndex=h++)}return this.allowNonCollapsibleParents||(l.collapsible=l.collapsible||l.children.length>0),l.visibleChildrenCount=h,l.visible=a===2?h>0:a===1,l.visible?l.collapsed||(l.renderNodeCount=u):(l.renderNodeCount=0,n&&o.pop()),r==null||r(l),l}updateNodeAfterCollapseChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterCollapseChange(e,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterCollapseChange(e,t){if(e.visible===!1)return 0;if(t.push(e),e.renderNodeCount=1,!e.collapsed)for(const i of e.children)e.renderNodeCount+=this._updateNodeAfterCollapseChange(i,t);return this._onDidChangeRenderNodeCount.fire(e),e.renderNodeCount}updateNodeAfterFilterChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterFilterChange(e,e.visible?1:0,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterFilterChange(e,t,i,n=!0){let o;if(e!==this.root){if(o=this._filterNode(e,t),o===0)return e.visible=!1,e.renderNodeCount=0,!1;n&&i.push(e)}const r=i.length;e.renderNodeCount=e===this.root?0:1;let l=!1;if(!e.collapsed||o!==0){let a=0;for(const d of e.children)l=this._updateNodeAfterFilterChange(d,o,i,n&&!e.collapsed)||l,d.visible&&(d.visibleChildIndex=a++);e.visibleChildrenCount=a}else e.visibleChildrenCount=0;return e!==this.root&&(e.visible=o===2?l:o===1,e.visibility=o),e.visible?e.collapsed||(e.renderNodeCount+=i.length-r):(e.renderNodeCount=0,n&&i.pop()),this._onDidChangeRenderNodeCount.fire(e),e.visible}_updateAncestorsRenderNodeCount(e,t){if(t!==0)for(;e;)e.renderNodeCount+=t,this._onDidChangeRenderNodeCount.fire(e),e=e.parent}_filterNode(e,t){const i=this.filter?this.filter.filter(e.element,t):1;return typeof i=="boolean"?(e.filterData=void 0,i?1:0):Koe(i)?(e.filterData=i.data,NL(i.visibility)):(e.filterData=void 0,NL(i))}hasTreeNode(e,t=this.root){if(!e||e.length===0)return!0;const[i,...n]=e;return i<0||i>t.children.length?!1:this.hasTreeNode(n,t.children[i])}getTreeNode(e,t=this.root){if(!e||e.length===0)return t;const[i,...n]=e;if(i<0||i>t.children.length)throw new _c(this.user,"Invalid tree location");return this.getTreeNode(n,t.children[i])}getTreeNodeWithListIndex(e){if(e.length===0)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:t,listIndex:i,revealed:n,visible:o}=this.getParentNodeWithListIndex(e),r=e[e.length-1];if(r<0||r>t.children.length)throw new _c(this.user,"Invalid tree location");const l=t.children[r];return{node:l,listIndex:i,revealed:n,visible:o&&l.visible}}getParentNodeWithListIndex(e,t=this.root,i=0,n=!0,o=!0){const[r,...l]=e;if(r<0||r>t.children.length)throw new _c(this.user,"Invalid tree location");for(let a=0;a<r;a++)i+=t.children[a].renderNodeCount;return n=n&&!t.collapsed,o=o&&t.visible,l.length===0?{parentNode:t,listIndex:i,revealed:n,visible:o}:this.getParentNodeWithListIndex(l,t.children[r],i+1,n,o)}getNode(e=[]){return this.getTreeNode(e)}getNodeLocation(e){const t=[];let i=e;for(;i.parent;)t.push(i.parent.children.indexOf(i)),i=i.parent;return t.reverse()}getParentNodeLocation(e){if(e.length!==0)return e.length===1?[]:fOe(e)[0]}getFirstElementChild(e){const t=this.getTreeNode(e);if(t.children.length!==0)return t.children[0].element}}class rot extends dk{constructor(e){super(e.elements.map(t=>t.element)),this.data=e}}function kP(s){return s instanceof dk?new rot(s):s}class lot{constructor(e,t){this.modelProvider=e,this.dnd=t,this.autoExpandDisposable=be.None,this.disposables=new De}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map(i=>i.element),t)}onDragStart(e,t){var i,n;(n=(i=this.dnd).onDragStart)==null||n.call(i,kP(e),t)}onDragOver(e,t,i,n,o,r=!0){const l=this.dnd.onDragOver(kP(e),t&&t.element,i,n,o),a=this.autoExpandNode!==t;if(a&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=t),typeof t>"u")return l;if(a&&typeof l!="boolean"&&l.autoExpand&&(this.autoExpandDisposable=kF(()=>{const m=this.modelProvider(),p=m.getNodeLocation(t);m.isCollapsed(p)&&m.setCollapsed(p,!1),this.autoExpandNode=void 0},500,this.disposables)),typeof l=="boolean"||!l.accept||typeof l.bubble>"u"||l.feedback){if(!r){const m=typeof l=="boolean"?l:l.accept,p=typeof l=="boolean"?void 0:l.effect;return{accept:m,effect:p,feedback:[i]}}return l}if(l.bubble===1){const m=this.modelProvider(),p=m.getNodeLocation(t),g=m.getParentNodeLocation(p),f=m.getNode(g),b=g&&m.getListIndex(g);return this.onDragOver(e,f,b,n,o,!1)}const d=this.modelProvider(),c=d.getNodeLocation(t),h=d.getListIndex(c),u=d.getListRenderCount(c);return{...l,feedback:cd(h,h+u)}}drop(e,t,i,n,o){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(kP(e),t&&t.element,i,n,o)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}dispose(){this.disposables.dispose(),this.dnd.dispose()}}function aot(s,e){return e&&{...e,identityProvider:e.identityProvider&&{getId(t){return e.identityProvider.getId(t.element)}},dnd:e.dnd&&new lot(s,e.dnd),multipleSelectionController:e.multipleSelectionController&&{isSelectionSingleChangeEvent(t){return e.multipleSelectionController.isSelectionSingleChangeEvent({...t,element:t.element})},isSelectionRangeChangeEvent(t){return e.multipleSelectionController.isSelectionRangeChangeEvent({...t,element:t.element})}},accessibilityProvider:e.accessibilityProvider&&{...e.accessibilityProvider,getSetSize(t){const i=s(),n=i.getNodeLocation(t),o=i.getParentNodeLocation(n);return i.getNode(o).visibleChildrenCount},getPosInSet(t){return t.visibleChildIndex+1},isChecked:e.accessibilityProvider&&e.accessibilityProvider.isChecked?t=>e.accessibilityProvider.isChecked(t.element):void 0,getRole:e.accessibilityProvider&&e.accessibilityProvider.getRole?t=>e.accessibilityProvider.getRole(t.element):()=>"treeitem",getAriaLabel(t){return e.accessibilityProvider.getAriaLabel(t.element)},getWidgetAriaLabel(){return e.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:e.accessibilityProvider&&e.accessibilityProvider.getWidgetRole?()=>e.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:e.accessibilityProvider&&e.accessibilityProvider.getAriaLevel?t=>e.accessibilityProvider.getAriaLevel(t.element):t=>t.depth,getActiveDescendantId:e.accessibilityProvider.getActiveDescendantId&&(t=>e.accessibilityProvider.getActiveDescendantId(t.element))},keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(t){return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)}}}}class qoe{constructor(e){this.delegate=e}getHeight(e){return this.delegate.getHeight(e.element)}getTemplateId(e){return this.delegate.getTemplateId(e.element)}hasDynamicHeight(e){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(e.element)}setDynamicHeight(e,t){var i,n;(n=(i=this.delegate).setDynamicHeight)==null||n.call(i,e.element,t)}}var Dy;(function(s){s.None="none",s.OnHover="onHover",s.Always="always"})(Dy||(Dy={}));class dot{get elements(){return this._elements}constructor(e,t=[]){this._elements=t,this.disposables=new De,this.onDidChange=Ut.forEach(e,i=>this._elements=i,this.disposables)}dispose(){this.disposables.dispose()}}const AB=class AB{constructor(e,t,i,n,o,r={}){var l;this.renderer=e,this.modelProvider=t,this.activeNodes=n,this.renderedIndentGuides=o,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=AB.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=be.None,this.disposables=new De,this.templateId=e.templateId,this.updateOptions(r),Ut.map(i,a=>a.node)(this.onDidChangeNodeTwistieState,this,this.disposables),(l=e.onDidChangeTwistieState)==null||l.call(e,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(e={}){if(typeof e.indent<"u"){const t=Ba(e.indent,0,40);if(t!==this.indent){this.indent=t;for(const[i,n]of this.renderedNodes)this.renderTreeElement(i,n)}}if(typeof e.renderIndentGuides<"u"){const t=e.renderIndentGuides!==Dy.None;if(t!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=t;for(const[i,n]of this.renderedNodes)this._renderIndentGuides(i,n);if(this.indentGuidesDisposable.dispose(),t){const i=new De;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,i),this.indentGuidesDisposable=i,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}typeof e.hideTwistiesOfChildlessElements<"u"&&(this.hideTwistiesOfChildlessElements=e.hideTwistiesOfChildlessElements)}renderTemplate(e){const t=nt(e,gt(".monaco-tl-row")),i=nt(t,gt(".monaco-tl-indent")),n=nt(t,gt(".monaco-tl-twistie")),o=nt(t,gt(".monaco-tl-contents")),r=this.renderer.renderTemplate(o);return{container:e,indent:i,twistie:n,indentGuidesDisposable:be.None,templateData:r}}renderElement(e,t,i,n){this.renderedNodes.set(e,i),this.renderedElements.set(e.element,e),this.renderTreeElement(e,i),this.renderer.renderElement(e,t,i.templateData,n)}disposeElement(e,t,i,n){var o,r;i.indentGuidesDisposable.dispose(),(r=(o=this.renderer).disposeElement)==null||r.call(o,e,t,i.templateData,n),typeof n=="number"&&(this.renderedNodes.delete(e),this.renderedElements.delete(e.element))}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}onDidChangeTwistieState(e){const t=this.renderedElements.get(e);t&&this.onDidChangeNodeTwistieState(t)}onDidChangeNodeTwistieState(e){const t=this.renderedNodes.get(e);t&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(e,t))}renderTreeElement(e,t){const i=AB.DefaultIndent+(e.depth-1)*this.indent;t.twistie.style.paddingLeft=`${i}px`,t.indent.style.width=`${i+this.indent-16}px`,e.collapsible?t.container.setAttribute("aria-expanded",String(!e.collapsed)):t.container.removeAttribute("aria-expanded"),t.twistie.classList.remove(...ui.asClassNameArray(ct.treeItemExpanded));let n=!1;this.renderer.renderTwistie&&(n=this.renderer.renderTwistie(e.element,t.twistie)),e.collapsible&&(!this.hideTwistiesOfChildlessElements||e.visibleChildrenCount>0)?(n||t.twistie.classList.add(...ui.asClassNameArray(ct.treeItemExpanded)),t.twistie.classList.add("collapsible"),t.twistie.classList.toggle("collapsed",e.collapsed)):t.twistie.classList.remove("collapsible","collapsed"),this._renderIndentGuides(e,t)}_renderIndentGuides(e,t){if(dl(t.indent),t.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const i=new De,n=this.modelProvider();for(;;){const o=n.getNodeLocation(e),r=n.getParentNodeLocation(o);if(!r)break;const l=n.getNode(r),a=gt(".indent-guide",{style:`width: ${this.indent}px`});this.activeIndentNodes.has(l)&&a.classList.add("active"),t.indent.childElementCount===0?t.indent.appendChild(a):t.indent.insertBefore(a,t.indent.firstElementChild),this.renderedIndentGuides.add(l,a),i.add(ei(()=>this.renderedIndentGuides.delete(l,a))),e=l}t.indentGuidesDisposable=i}_onDidChangeActiveNodes(e){if(!this.shouldRenderIndentGuides)return;const t=new Set,i=this.modelProvider();e.forEach(n=>{const o=i.getNodeLocation(n);try{const r=i.getParentNodeLocation(o);n.collapsible&&n.children.length>0&&!n.collapsed?t.add(n):r&&t.add(i.getNode(r))}catch{}}),this.activeIndentNodes.forEach(n=>{t.has(n)||this.renderedIndentGuides.forEach(n,o=>o.classList.remove("active"))}),t.forEach(n=>{this.activeIndentNodes.has(n)||this.renderedIndentGuides.forEach(n,o=>o.classList.add("active"))}),this.activeIndentNodes=t}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),Ws(this.disposables)}};AB.DefaultIndent=8;let rq=AB;class cot{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}constructor(e,t,i){this.tree=e,this.keyboardNavigationLabelProvider=t,this._filter=i,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new De,e.onWillRefilter(this.reset,this,this.disposables)}filter(e,t){let i=1;if(this._filter){const r=this._filter.filter(e,t);if(typeof r=="boolean"?i=r?1:0:Koe(r)?i=NL(r.visibility):i=r,i===0)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:op.Default,visibility:i};const n=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e),o=Array.isArray(n)?n:[n];for(const r of o){const l=r&&r.toString();if(typeof l>"u")return{data:op.Default,visibility:i};let a;if(this.tree.findMatchType===MN.Contiguous){const d=l.toLowerCase().indexOf(this._lowercasePattern);if(d>-1){a=[Number.MAX_SAFE_INTEGER,0];for(let c=this._lowercasePattern.length;c>0;c--)a.push(d+c-1)}}else a=VN(this._pattern,this._lowercasePattern,0,l,l.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(a)return this._matchCount++,o.length===1?{data:a,visibility:i}:{data:{label:l,score:a},visibility:i}}return this.tree.findMode===wf.Filter?typeof this.tree.options.defaultFindVisibility=="number"?this.tree.options.defaultFindVisibility:this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility(e):2:{data:op.Default,visibility:i}}reset(){this._totalCount=0,this._matchCount=0}dispose(){Ws(this.disposables)}}var wf;(function(s){s[s.Highlight=0]="Highlight",s[s.Filter=1]="Filter"})(wf||(wf={}));var MN;(function(s){s[s.Fuzzy=0]="Fuzzy",s[s.Contiguous=1]="Contiguous"})(MN||(MN={}));let hot=class{get pattern(){return this._pattern}get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,this.widget&&(this.widget.mode=this._mode),this.tree.refilter(),this.render(),this._onDidChangeMode.fire(e))}get matchType(){return this._matchType}set matchType(e){e!==this._matchType&&(this._matchType=e,this.widget&&(this.widget.matchType=this._matchType),this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(e))}constructor(e,t,i,n,o,r={}){this.tree=e,this.view=i,this.filter=n,this.contextViewProvider=o,this.options=r,this._pattern="",this.width=0,this._onDidChangeMode=new fe,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new fe,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this._onDidChangePattern=new fe,this._onDidChangeOpenState=new fe,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new De,this.disposables=new De,this._mode=e.options.defaultFindMode??wf.Highlight,this._matchType=e.options.defaultFindMatchType??MN.Fuzzy,t.onDidSplice(this.onDidSpliceModel,this,this.disposables)}updateOptions(e={}){e.defaultFindMode!==void 0&&(this.mode=e.defaultFindMode),e.defaultFindMatchType!==void 0&&(this.matchType=e.defaultFindMatchType)}onDidSpliceModel(){!this.widget||this.pattern.length===0||(this.tree.refilter(),this.render())}render(){var t,i,n;const e=this.filter.totalCount>0&&this.filter.matchCount===0;this.pattern&&e?(ja(F("replFindNoResults","No results")),this.tree.options.showNotFoundMessage??!0?(t=this.widget)==null||t.showMessage({type:2,content:F("not found","No elements found.")}):(i=this.widget)==null||i.showMessage({type:2})):((n=this.widget)==null||n.clearMessage(),this.pattern&&ja(F("replFindResults","{0} results",this.filter.matchCount)))}shouldAllowFocus(e){return!this.widget||!this.pattern||this.filter.totalCount>0&&this.filter.matchCount<=1?!0:!op.isDefault(e.filterData)}layout(e){var t;this.width=e,(t=this.widget)==null||t.layout(e)}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}};function uot(s,e){return s.position===e.position&&dVe(s,e)}function dVe(s,e){return s.node.element===e.node.element&&s.startIndex===e.startIndex&&s.height===e.height&&s.endIndex===e.endIndex}class mot{constructor(e=[]){this.stickyNodes=e}get count(){return this.stickyNodes.length}equal(e){return lo(this.stickyNodes,e.stickyNodes,uot)}lastNodePartiallyVisible(){if(this.count===0)return!1;const e=this.stickyNodes[this.count-1];if(this.count===1)return e.position!==0;const t=this.stickyNodes[this.count-2];return t.position+t.height!==e.position}animationStateChanged(e){if(!lo(this.stickyNodes,e.stickyNodes,dVe)||this.count===0)return!1;const t=this.stickyNodes[this.count-1],i=e.stickyNodes[e.count-1];return t.position!==i.position}}class pot{constrainStickyScrollNodes(e,t,i){for(let n=0;n<e.length;n++){const o=e[n];if(o.position+o.height>i||n>=t)return e.slice(0,n)}return e}}let Xme=class extends be{constructor(e,t,i,n,o,r={}){super(),this.tree=e,this.model=t,this.view=i,this.treeDelegate=o,this.maxWidgetViewRatio=.4;const l=this.validateStickySettings(r);this.stickyScrollMaxItemCount=l.stickyScrollMaxItemCount,this.stickyScrollDelegate=r.stickyScrollDelegate??new pot,this._widget=this._register(new got(i.getScrollableElement(),i,e,n,o,r.accessibilityProvider)),this.onDidChangeHasFocus=this._widget.onDidChangeHasFocus,this.onContextMenu=this._widget.onContextMenu,this._register(i.onDidScroll(()=>this.update())),this._register(i.onDidChangeContentHeight(()=>this.update())),this._register(e.onDidChangeCollapseState(()=>this.update())),this.update()}get height(){return this._widget.height}getNodeAtHeight(e){let t;if(e===0?t=this.view.firstVisibleIndex:t=this.view.indexAt(e+this.view.scrollTop),!(t<0||t>=this.view.length))return this.view.element(t)}update(){const e=this.getNodeAtHeight(0);if(!e||this.tree.scrollTop===0){this._widget.setState(void 0);return}const t=this.findStickyState(e);this._widget.setState(t)}findStickyState(e){const t=[];let i=e,n=0,o=this.getNextStickyNode(i,void 0,n);for(;o&&(t.push(o),n+=o.height,!(t.length<=this.stickyScrollMaxItemCount&&(i=this.getNextVisibleNode(o),!i)));)o=this.getNextStickyNode(i,o.node,n);const r=this.constrainStickyNodes(t);return r.length?new mot(r):void 0}getNextVisibleNode(e){return this.getNodeAtHeight(e.position+e.height)}getNextStickyNode(e,t,i){const n=this.getAncestorUnderPrevious(e,t);if(n&&!(n===e&&(!this.nodeIsUncollapsedParent(e)||this.nodeTopAlignsWithStickyNodesBottom(e,i))))return this.createStickyScrollNode(n,i)}nodeTopAlignsWithStickyNodesBottom(e,t){const i=this.getNodeIndex(e),n=this.view.getElementTop(i),o=t;return this.view.scrollTop===n-o}createStickyScrollNode(e,t){const i=this.treeDelegate.getHeight(e),{startIndex:n,endIndex:o}=this.getNodeRange(e),r=this.calculateStickyNodePosition(o,t,i);return{node:e,position:r,height:i,startIndex:n,endIndex:o}}getAncestorUnderPrevious(e,t=void 0){let i=e,n=this.getParentNode(i);for(;n;){if(n===t)return i;i=n,n=this.getParentNode(i)}if(t===void 0)return i}calculateStickyNodePosition(e,t,i){let n=this.view.getRelativeTop(e);if(n===null&&this.view.firstVisibleIndex===e&&e+1<this.view.length){const d=this.treeDelegate.getHeight(this.view.element(e)),c=this.view.getRelativeTop(e+1);n=c?c-d/this.view.renderHeight:null}if(n===null)return t;const o=this.view.element(e),r=this.treeDelegate.getHeight(o),a=n*this.view.renderHeight+r;return t+i>a&&t<=a?a-i:t}constrainStickyNodes(e){if(e.length===0)return[];const t=this.view.renderHeight*this.maxWidgetViewRatio,i=e[e.length-1];if(e.length<=this.stickyScrollMaxItemCount&&i.position+i.height<=t)return e;const n=this.stickyScrollDelegate.constrainStickyScrollNodes(e,this.stickyScrollMaxItemCount,t);if(!n.length)return[];const o=n[n.length-1];if(n.length>this.stickyScrollMaxItemCount||o.position+o.height>t)throw new Error("stickyScrollDelegate violates constraints");return n}getParentNode(e){const t=this.model.getNodeLocation(e),i=this.model.getParentNodeLocation(t);return i?this.model.getNode(i):void 0}nodeIsUncollapsedParent(e){const t=this.model.getNodeLocation(e);return this.model.getListRenderCount(t)>1}getNodeIndex(e){const t=this.model.getNodeLocation(e);return this.model.getListIndex(t)}getNodeRange(e){const t=this.model.getNodeLocation(e),i=this.model.getListIndex(t);if(i<0)throw new Error("Node not found in tree");const n=this.model.getListRenderCount(t),o=i+n-1;return{startIndex:i,endIndex:o}}nodePositionTopBelowWidget(e){const t=[];let i=this.getParentNode(e);for(;i;)t.push(i),i=this.getParentNode(i);let n=0;for(let o=0;o<t.length&&o<this.stickyScrollMaxItemCount;o++)n+=this.treeDelegate.getHeight(t[o]);return n}domFocus(){this._widget.domFocus()}focusedLast(){return this._widget.focusedLast()}updateOptions(e={}){if(!e.stickyScrollMaxItemCount)return;const t=this.validateStickySettings(e);this.stickyScrollMaxItemCount!==t.stickyScrollMaxItemCount&&(this.stickyScrollMaxItemCount=t.stickyScrollMaxItemCount,this.update())}validateStickySettings(e){let t=7;return typeof e.stickyScrollMaxItemCount=="number"&&(t=Math.max(e.stickyScrollMaxItemCount,1)),{stickyScrollMaxItemCount:t}}},got=class{constructor(e,t,i,n,o,r){this.view=t,this.tree=i,this.treeRenderers=n,this.treeDelegate=o,this.accessibilityProvider=r,this._previousElements=[],this._previousStateDisposables=new De,this._rootDomNode=gt(".monaco-tree-sticky-container.empty"),e.appendChild(this._rootDomNode);const l=gt(".monaco-tree-sticky-container-shadow");this._rootDomNode.appendChild(l),this.stickyScrollFocus=new fot(this._rootDomNode,t),this.onDidChangeHasFocus=this.stickyScrollFocus.onDidChangeHasFocus,this.onContextMenu=this.stickyScrollFocus.onContextMenu}get height(){if(!this._previousState)return 0;const e=this._previousState.stickyNodes[this._previousState.count-1];return e.position+e.height}setState(e){const t=!!this._previousState&&this._previousState.count>0,i=!!e&&e.count>0;if(!t&&!i||t&&i&&this._previousState.equal(e))return;if(t!==i&&this.setVisible(i),!i){this._previousState=void 0,this._previousElements=[],this._previousStateDisposables.clear();return}const n=e.stickyNodes[e.count-1];if(this._previousState&&e.animationStateChanged(this._previousState))this._previousElements[this._previousState.count-1].style.top=`${n.position}px`;else{this._previousStateDisposables.clear();const o=Array(e.count);for(let r=e.count-1;r>=0;r--){const l=e.stickyNodes[r],{element:a,disposable:d}=this.createElement(l,r,e.count);o[r]=a,this._rootDomNode.appendChild(a),this._previousStateDisposables.add(d)}this.stickyScrollFocus.updateElements(o,e),this._previousElements=o}this._previousState=e,this._rootDomNode.style.height=`${n.position+n.height}px`}createElement(e,t,i){const n=e.startIndex,o=document.createElement("div");o.style.top=`${e.position}px`,this.tree.options.setRowHeight!==!1&&(o.style.height=`${e.height}px`),this.tree.options.setRowLineHeight!==!1&&(o.style.lineHeight=`${e.height}px`),o.classList.add("monaco-tree-sticky-row"),o.classList.add("monaco-list-row"),o.setAttribute("data-index",`${n}`),o.setAttribute("data-parity",n%2===0?"even":"odd"),o.setAttribute("id",this.view.getElementID(n));const r=this.setAccessibilityAttributes(o,e.node.element,t,i),l=this.treeDelegate.getTemplateId(e.node),a=this.treeRenderers.find(u=>u.templateId===l);if(!a)throw new Error(`No renderer found for template id ${l}`);let d=e.node;d===this.tree.getNode(this.tree.getNodeLocation(e.node))&&(d=new Proxy(e.node,{}));const c=a.renderTemplate(o);a.renderElement(d,e.startIndex,c,e.height);const h=ei(()=>{r.dispose(),a.disposeElement(d,e.startIndex,c,e.height),a.disposeTemplate(c),o.remove()});return{element:o,disposable:h}}setAccessibilityAttributes(e,t,i,n){if(!this.accessibilityProvider)return be.None;this.accessibilityProvider.getSetSize&&e.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(t,i,n))),this.accessibilityProvider.getPosInSet&&e.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(t,i))),this.accessibilityProvider.getRole&&e.setAttribute("role",this.accessibilityProvider.getRole(t)??"treeitem");const o=this.accessibilityProvider.getAriaLabel(t),r=o&&typeof o!="string"?o:Jh(o),l=yi(d=>{const c=d.readObservable(r);c?e.setAttribute("aria-label",c):e.removeAttribute("aria-label")});typeof o=="string"||o&&e.setAttribute("aria-label",o.get());const a=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(t);return typeof a=="number"&&e.setAttribute("aria-level",`${a}`),e.setAttribute("aria-selected",String(!1)),l}setVisible(e){this._rootDomNode.classList.toggle("empty",!e),e||this.stickyScrollFocus.updateElements([],void 0)}domFocus(){this.stickyScrollFocus.domFocus()}focusedLast(){return this.stickyScrollFocus.focusedLast()}dispose(){this.stickyScrollFocus.dispose(),this._previousStateDisposables.dispose(),this._rootDomNode.remove()}};class fot extends be{get domHasFocus(){return this._domHasFocus}set domHasFocus(e){e!==this._domHasFocus&&(this._onDidChangeHasFocus.fire(e),this._domHasFocus=e)}constructor(e,t){super(),this.container=e,this.view=t,this.focusedIndex=-1,this.elements=[],this._onDidChangeHasFocus=new fe,this.onDidChangeHasFocus=this._onDidChangeHasFocus.event,this._onContextMenu=new fe,this.onContextMenu=this._onContextMenu.event,this._domHasFocus=!1,this._register(Te(this.container,"focus",()=>this.onFocus())),this._register(Te(this.container,"blur",()=>this.onBlur())),this._register(this.view.onDidFocus(()=>this.toggleStickyScrollFocused(!1))),this._register(this.view.onKeyDown(i=>this.onKeyDown(i))),this._register(this.view.onMouseDown(i=>this.onMouseDown(i))),this._register(this.view.onContextMenu(i=>this.handleContextMenu(i)))}handleContextMenu(e){const t=e.browserEvent.target;if(!bL(t)&&!e2(t)){this.focusedLast()&&this.view.domFocus();return}if(!ef(e.browserEvent)){if(!this.state)throw new Error("Context menu should not be triggered when state is undefined");const r=this.state.stickyNodes.findIndex(l=>{var a;return l.node.element===((a=e.element)==null?void 0:a.element)});if(r===-1)throw new Error("Context menu should not be triggered when element is not in sticky scroll widget");this.container.focus(),this.setFocus(r);return}if(!this.state||this.focusedIndex<0)throw new Error("Context menu key should not be triggered when focus is not in sticky scroll widget");const n=this.state.stickyNodes[this.focusedIndex].node.element,o=this.elements[this.focusedIndex];this._onContextMenu.fire({element:n,anchor:o,browserEvent:e.browserEvent,isStickyScroll:!0})}onKeyDown(e){if(this.domHasFocus&&this.state){if(e.key==="ArrowUp")this.setFocusedElement(Math.max(0,this.focusedIndex-1)),e.preventDefault(),e.stopPropagation();else if(e.key==="ArrowDown"||e.key==="ArrowRight"){if(this.focusedIndex>=this.state.count-1){const t=this.state.stickyNodes[this.state.count-1].startIndex+1;this.view.domFocus(),this.view.setFocus([t]),this.scrollNodeUnderWidget(t,this.state)}else this.setFocusedElement(this.focusedIndex+1);e.preventDefault(),e.stopPropagation()}}}onMouseDown(e){const t=e.browserEvent.target;!bL(t)&&!e2(t)||(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation())}updateElements(e,t){if(t&&t.count===0)throw new Error("Sticky scroll state must be undefined when there are no sticky nodes");if(t&&t.count!==e.length)throw new Error("Sticky scroll focus received illigel state");const i=this.focusedIndex;if(this.removeFocus(),this.elements=e,this.state=t,t){const n=Ba(i,0,t.count-1);this.setFocus(n)}else this.domHasFocus&&this.view.domFocus();this.container.tabIndex=t?0:-1}setFocusedElement(e){const t=this.state;if(!t)throw new Error("Cannot set focus when state is undefined");if(this.setFocus(e),!(e<t.count-1)&&t.lastNodePartiallyVisible()){const i=t.stickyNodes[e];this.scrollNodeUnderWidget(i.endIndex+1,t)}}scrollNodeUnderWidget(e,t){const i=t.stickyNodes[t.count-1],n=t.count>1?t.stickyNodes[t.count-2]:void 0,o=this.view.getElementTop(e),r=n?n.position+n.height+i.height:i.height;this.view.scrollTop=o-r}domFocus(){if(!this.state)throw new Error("Cannot focus when state is undefined");this.container.focus()}focusedLast(){return this.state?this.view.getHTMLElement().classList.contains("sticky-scroll-focused"):!1}removeFocus(){this.focusedIndex!==-1&&(this.toggleElementFocus(this.elements[this.focusedIndex],!1),this.focusedIndex=-1)}setFocus(e){if(0>e)throw new Error("addFocus() can not remove focus");if(!this.state&&e>=0)throw new Error("Cannot set focus index when state is undefined");if(this.state&&e>=this.state.count)throw new Error("Cannot set focus index to an index that does not exist");const t=this.focusedIndex;t>=0&&this.toggleElementFocus(this.elements[t],!1),e>=0&&this.toggleElementFocus(this.elements[e],!0),this.focusedIndex=e}toggleElementFocus(e,t){this.toggleElementActiveFocus(e,t&&this.domHasFocus),this.toggleElementPassiveFocus(e,t)}toggleCurrentElementActiveFocus(e){this.focusedIndex!==-1&&this.toggleElementActiveFocus(this.elements[this.focusedIndex],e)}toggleElementActiveFocus(e,t){e.classList.toggle("focused",t)}toggleElementPassiveFocus(e,t){e.classList.toggle("passive-focused",t)}toggleStickyScrollFocused(e){this.view.getHTMLElement().classList.toggle("sticky-scroll-focused",e)}onFocus(){if(!this.state||this.elements.length===0)throw new Error("Cannot focus when state is undefined or elements are empty");this.domHasFocus=!0,this.toggleStickyScrollFocused(!0),this.toggleCurrentElementActiveFocus(!0),this.focusedIndex===-1&&this.setFocus(0)}onBlur(){this.domHasFocus=!1,this.toggleCurrentElementActiveFocus(!1)}dispose(){this.toggleStickyScrollFocused(!1),this._onDidChangeHasFocus.fire(!1),super.dispose()}}function fI(s){let e=SS.Unknown;return Yj(s.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?e=SS.Twistie:Yj(s.browserEvent.target,"monaco-tl-contents","monaco-tl-row")?e=SS.Element:Yj(s.browserEvent.target,"monaco-tree-type-filter","monaco-list")&&(e=SS.Filter),{browserEvent:s.browserEvent,element:s.element?s.element.element:null,target:e}}function bot(s){const e=bL(s.browserEvent.target);return{element:s.element?s.element.element:null,browserEvent:s.browserEvent,anchor:s.anchor,isStickyScroll:e}}function yD(s,e){e(s),s.children.forEach(t=>yD(t,e))}class xP{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(e,t){this.getFirstViewElementWithTrait=e,this.identityProvider=t,this.nodes=[],this._onDidChange=new fe,this.onDidChange=this._onDidChange.event}set(e,t){!(t!=null&&t.__forceEvent)&&lo(this.nodes,e)||this._set(e,!1,t)}_set(e,t,i){if(this.nodes=[...e],this.elements=void 0,this._nodeSet=void 0,!t){const n=this;this._onDidChange.fire({get elements(){return n.get()},browserEvent:i})}}get(){return this.elements||(this.elements=this.nodes.map(e=>e.element)),[...this.elements]}getNodes(){return this.nodes}has(e){return this.nodeSet.has(e)}onDidModelSplice({insertedNodes:e,deletedNodes:t}){if(!this.identityProvider){const a=this.createNodeSet(),d=c=>a.delete(c);t.forEach(c=>yD(c,d)),this.set([...a.values()]);return}const i=new Set,n=a=>i.add(this.identityProvider.getId(a.element).toString());t.forEach(a=>yD(a,n));const o=new Map,r=a=>o.set(this.identityProvider.getId(a.element).toString(),a);e.forEach(a=>yD(a,r));const l=[];for(const a of this.nodes){const d=this.identityProvider.getId(a.element).toString();if(!i.has(d))l.push(a);else{const h=o.get(d);h&&h.visible&&l.push(h)}}if(this.nodes.length>0&&l.length===0){const a=this.getFirstViewElementWithTrait();a&&l.push(a)}this._set(l,!0)}createNodeSet(){const e=new Set;for(const t of this.nodes)e.add(t);return e}}class Uot extends mRe{constructor(e,t,i){super(e),this.tree=t,this.stickyScrollProvider=i}onViewPointer(e){if(dRe(e.browserEvent.target)||RF(e.browserEvent.target)||TT(e.browserEvent.target)||e.browserEvent.isHandledByList)return;const t=e.element;if(!t)return super.onViewPointer(e);if(this.isSelectionRangeChangeEvent(e)||this.isSelectionSingleChangeEvent(e))return super.onViewPointer(e);const i=e.browserEvent.target,n=i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&e.browserEvent.offsetX<16,o=e2(e.browserEvent.target);let r=!1;if(o?r=!0:typeof this.tree.expandOnlyOnTwistieClick=="function"?r=this.tree.expandOnlyOnTwistieClick(t.element):r=!!this.tree.expandOnlyOnTwistieClick,o)this.handleStickyScrollMouseEvent(e,t);else{if(r&&!n&&e.browserEvent.detail!==2)return super.onViewPointer(e);if(!this.tree.expandOnDoubleClick&&e.browserEvent.detail===2)return super.onViewPointer(e)}if(t.collapsible&&(!o||n)){const l=this.tree.getNodeLocation(t),a=e.browserEvent.altKey;if(this.tree.setFocus([l]),this.tree.toggleCollapsed(l,a),n){e.browserEvent.isHandledByList=!0;return}}o||super.onViewPointer(e)}handleStickyScrollMouseEvent(e,t){if(Ntt(e.browserEvent.target)||Rtt(e.browserEvent.target))return;const i=this.stickyScrollProvider();if(!i)throw new Error("Sticky scroll controller not found");const n=this.list.indexOf(t),o=this.list.getElementTop(n),r=i.nodePositionTopBelowWidget(t);this.tree.scrollTop=o-r,this.list.domFocus(),this.list.setFocus([n]),this.list.setSelection([n])}onDoubleClick(e){e.browserEvent.target.classList.contains("monaco-tl-twistie")||!this.tree.expandOnDoubleClick||e.browserEvent.isHandledByList||super.onDoubleClick(e)}onMouseDown(e){const t=e.browserEvent.target;if(!bL(t)&&!e2(t)){super.onMouseDown(e);return}}onContextMenu(e){const t=e.browserEvent.target;if(!bL(t)&&!e2(t)){super.onContextMenu(e);return}}}class Fot extends hh{constructor(e,t,i,n,o,r,l,a){super(e,t,i,n,a),this.focusTrait=o,this.selectionTrait=r,this.anchorTrait=l}createMouseController(e){return new Uot(this,e.tree,e.stickyScrollProvider)}splice(e,t,i=[]){if(super.splice(e,t,i),i.length===0)return;const n=[],o=[];let r;i.forEach((l,a)=>{this.focusTrait.has(l)&&n.push(e+a),this.selectionTrait.has(l)&&o.push(e+a),this.anchorTrait.has(l)&&(r=e+a)}),n.length>0&&super.setFocus(_f([...super.getFocus(),...n])),o.length>0&&super.setSelection(_f([...super.getSelection(),...o])),typeof r=="number"&&super.setAnchor(r)}setFocus(e,t,i=!1){super.setFocus(e,t),i||this.focusTrait.set(e.map(n=>this.element(n)),t)}setSelection(e,t,i=!1){super.setSelection(e,t),i||this.selectionTrait.set(e.map(n=>this.element(n)),t)}setAnchor(e,t=!1){super.setAnchor(e),t||(typeof e>"u"?this.anchorTrait.set([]):this.anchorTrait.set([this.element(e)]))}}class cVe{get onDidScroll(){return this.view.onDidScroll}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return Ut.filter(Ut.map(this.view.onMouseDblClick,fI),e=>e.target!==SS.Filter)}get onMouseOver(){return Ut.map(this.view.onMouseOver,fI)}get onMouseOut(){return Ut.map(this.view.onMouseOut,fI)}get onContextMenu(){var e;return Ut.any(Ut.filter(Ut.map(this.view.onContextMenu,bot),t=>!t.isStickyScroll),((e=this.stickyScrollController)==null?void 0:e.onContextMenu)??Ut.None)}get onPointer(){return Ut.map(this.view.onPointer,fI)}get onKeyDown(){return this.view.onKeyDown}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return Ut.signal(this.model.onDidSplice)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get findMode(){var e;return((e=this.findController)==null?void 0:e.mode)??wf.Highlight}set findMode(e){this.findController&&(this.findController.mode=e)}get findMatchType(){var e;return((e=this.findController)==null?void 0:e.matchType)??MN.Fuzzy}set findMatchType(e){this.findController&&(this.findController.matchType=e)}get expandOnDoubleClick(){return typeof this._options.expandOnDoubleClick>"u"?!0:this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return typeof this._options.expandOnlyOnTwistieClick>"u"?!0:this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(e,t,i,n,o={}){this._user=e,this._options=o,this.eventBufferer=new Yv,this.onDidChangeFindOpenState=Ut.None,this.onDidChangeStickyScrollFocused=Ut.None,this.disposables=new De,this._onWillRefilter=new fe,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new fe,this.treeDelegate=new qoe(i);const r=new jce,l=new jce,a=this.disposables.add(new dot(l.event)),d=new zse;this.renderers=n.map(p=>new rq(p,()=>this.model,r.event,a,d,o));for(const p of this.renderers)this.disposables.add(p);let c;o.keyboardNavigationLabelProvider&&(c=new cot(this,o.keyboardNavigationLabelProvider,o.filter),o={...o,filter:c},this.disposables.add(c)),this.focus=new xP(()=>this.view.getFocusedElements()[0],o.identityProvider),this.selection=new xP(()=>this.view.getSelectedElements()[0],o.identityProvider),this.anchor=new xP(()=>this.view.getAnchorElement(),o.identityProvider),this.view=new Fot(e,t,this.treeDelegate,this.renderers,this.focus,this.selection,this.anchor,{...aot(()=>this.model,o),tree:this,stickyScrollProvider:()=>this.stickyScrollController}),this.model=this.createModel(e,this.view,o),r.input=this.model.onDidChangeCollapseState;const h=Ut.forEach(this.model.onDidSplice,p=>{this.eventBufferer.bufferEvents(()=>{this.focus.onDidModelSplice(p),this.selection.onDidModelSplice(p)})},this.disposables);h(()=>null,null,this.disposables);const u=this.disposables.add(new fe),m=this.disposables.add(new Oh(0));if(this.disposables.add(Ut.any(h,this.focus.onDidChange,this.selection.onDidChange)(()=>{m.trigger(()=>{const p=new Set;for(const g of this.focus.getNodes())p.add(g);for(const g of this.selection.getNodes())p.add(g);u.fire([...p.values()])})})),l.input=u.event,o.keyboardSupport!==!1){const p=Ut.chain(this.view.onKeyDown,g=>g.filter(f=>!RF(f.target)).map(f=>new Ts(f)));Ut.chain(p,g=>g.filter(f=>f.keyCode===15))(this.onLeftArrow,this,this.disposables),Ut.chain(p,g=>g.filter(f=>f.keyCode===17))(this.onRightArrow,this,this.disposables),Ut.chain(p,g=>g.filter(f=>f.keyCode===10))(this.onSpace,this,this.disposables)}if((o.findWidgetEnabled??!0)&&o.keyboardNavigationLabelProvider&&o.contextViewProvider){const p=this.options.findWidgetStyles?{styles:this.options.findWidgetStyles}:void 0;this.findController=new hot(this,this.model,this.view,c,o.contextViewProvider,p),this.focusNavigationFilter=g=>this.findController.shouldAllowFocus(g),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.disposables.add(this.findController),this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindMode=Ut.None,this.onDidChangeFindMatchType=Ut.None;o.enableStickyScroll&&(this.stickyScrollController=new Xme(this,this.model,this.view,this.renderers,this.treeDelegate,o),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus),this.styleElement=sh(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===Dy.Always)}updateOptions(e={}){var t;this._options={...this._options,...e};for(const i of this.renderers)i.updateOptions(e);this.view.updateOptions(this._options),(t=this.findController)==null||t.updateOptions(e),this.updateStickyScroll(e),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===Dy.Always)}get options(){return this._options}updateStickyScroll(e){var t;!this.stickyScrollController&&this._options.enableStickyScroll?(this.stickyScrollController=new Xme(this,this.model,this.view,this.renderers,this.treeDelegate,this._options),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus):this.stickyScrollController&&!this._options.enableStickyScroll&&(this.onDidChangeStickyScrollFocused=Ut.None,this.stickyScrollController.dispose(),this.stickyScrollController=void 0),(t=this.stickyScrollController)==null||t.updateOptions(e)}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(e){this.view.scrollTop=e}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get ariaLabel(){return this.view.ariaLabel}set ariaLabel(e){this.view.ariaLabel=e}domFocus(){var e;(e=this.stickyScrollController)!=null&&e.focusedLast()?this.stickyScrollController.domFocus():this.view.domFocus()}layout(e,t){var i;this.view.layout(e,t),wF(t)&&((i=this.findController)==null||i.layout(t))}style(e){const t=`.${this.view.domId}`,i=[];e.treeIndentGuidesStroke&&(i.push(`.monaco-list${t}:hover .monaco-tl-indent > .indent-guide, .monaco-list${t}.always .monaco-tl-indent > .indent-guide { border-color: ${e.treeInactiveIndentGuidesStroke}; }`),i.push(`.monaco-list${t} .monaco-tl-indent > .indent-guide.active { border-color: ${e.treeIndentGuidesStroke}; }`));const n=e.treeStickyScrollBackground??e.listBackground;n&&(i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container { background-color: ${n}; }`),i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row { background-color: ${n}; }`)),e.treeStickyScrollBorder&&i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container { border-bottom: 1px solid ${e.treeStickyScrollBorder}; }`),e.treeStickyScrollShadow&&i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow { box-shadow: ${e.treeStickyScrollShadow} 0 6px 6px -6px inset; height: 3px; }`),e.listFocusForeground&&(i.push(`.monaco-list${t}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { color: ${e.listFocusForeground}; }`),i.push(`.monaco-list${t}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { color: inherit; }`));const o=kf(e.listFocusAndSelectionOutline,kf(e.listSelectionOutline,e.listFocusOutline??""));o&&(i.push(`.monaco-list${t}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused.selected { outline: 1px solid ${o}; outline-offset: -1px;}`),i.push(`.monaco-list${t}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused.selected { outline: inherit;}`)),e.listFocusOutline&&(i.push(`.monaco-list${t}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }`),i.push(`.monaco-list${t}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { outline: inherit; }`),i.push(`.monaco-workbench.context-menu-visible .monaco-list${t}.last-focused.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.passive-focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }`),i.push(`.monaco-workbench.context-menu-visible .monaco-list${t}.last-focused.sticky-scroll-focused .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`),i.push(`.monaco-workbench.context-menu-visible .monaco-list${t}.last-focused:not(.sticky-scroll-focused) .monaco-tree-sticky-container .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`)),this.styleElement.textContent=i.join(`
- `),this.view.style(e)}getParentElement(e){const t=this.model.getParentNodeLocation(e);return this.model.getNode(t).element}getFirstElementChild(e){return this.model.getFirstElementChild(e)}getNode(e){return this.model.getNode(e)}getNodeLocation(e){return this.model.getNodeLocation(e)}collapse(e,t=!1){return this.model.setCollapsed(e,!0,t)}expand(e,t=!1){return this.model.setCollapsed(e,!1,t)}toggleCollapsed(e,t=!1){return this.model.setCollapsed(e,void 0,t)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(e,t){this.eventBufferer.bufferEvents(()=>{const i=e.map(o=>this.model.getNode(o));this.selection.set(i,t);const n=e.map(o=>this.model.getListIndex(o)).filter(o=>o>-1);this.view.setSelection(n,t,!0)})}getSelection(){return this.selection.get()}setFocus(e,t){this.eventBufferer.bufferEvents(()=>{const i=e.map(o=>this.model.getNode(o));this.focus.set(i,t);const n=e.map(o=>this.model.getListIndex(o)).filter(o=>o>-1);this.view.setFocus(n,t,!0)})}focusNext(e=1,t=!1,i,n=ef(i)&&i.altKey?void 0:this.focusNavigationFilter){this.view.focusNext(e,t,i,n)}focusPrevious(e=1,t=!1,i,n=ef(i)&&i.altKey?void 0:this.focusNavigationFilter){this.view.focusPrevious(e,t,i,n)}focusNextPage(e,t=ef(e)&&e.altKey?void 0:this.focusNavigationFilter){return this.view.focusNextPage(e,t)}focusPreviousPage(e,t=ef(e)&&e.altKey?void 0:this.focusNavigationFilter){return this.view.focusPreviousPage(e,t,()=>{var i;return((i=this.stickyScrollController)==null?void 0:i.height)??0})}focusLast(e,t=ef(e)&&e.altKey?void 0:this.focusNavigationFilter){this.view.focusLast(e,t)}focusFirst(e,t=ef(e)&&e.altKey?void 0:this.focusNavigationFilter){this.view.focusFirst(e,t)}getFocus(){return this.focus.get()}reveal(e,t){this.model.expandTo(e);const i=this.model.getListIndex(e);if(i!==-1)if(!this.stickyScrollController)this.view.reveal(i,t);else{const n=this.stickyScrollController.nodePositionTopBelowWidget(this.getNode(e));this.view.reveal(i,t,n)}}onLeftArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!0)){const r=this.model.getParentNodeLocation(n);if(!r)return;const l=this.model.getListIndex(r);this.view.reveal(l),this.view.setFocus([l])}}onRightArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!1)){if(!i.children.some(a=>a.visible))return;const[r]=this.view.getFocus(),l=r+1;this.view.reveal(l),this.view.setFocus([l])}}onSpace(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],n=this.model.getNodeLocation(i),o=e.browserEvent.altKey;this.model.setCollapsed(n,void 0,o)}dispose(){var e;Ws(this.disposables),(e=this.stickyScrollController)==null||e.dispose(),this.view.dispose()}}class $oe{constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new oot(e,t,null,i),this.onDidSplice=this.model.onDidSplice,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,i.sorter&&(this.sorter={compare(n,o){return i.sorter.compare(n.element,o.element)}}),this.identityProvider=i.identityProvider}setChildren(e,t=Zn.empty(),i={}){const n=this.getElementLocation(e);this._setChildren(n,this.preserveCollapseState(t),i)}_setChildren(e,t=Zn.empty(),i){const n=new Set,o=new Set,r=a=>{var c;if(a.element===null)return;const d=a;if(n.add(d.element),this.nodes.set(d.element,d),this.identityProvider){const h=this.identityProvider.getId(d.element).toString();o.add(h),this.nodesByIdentity.set(h,d)}(c=i.onDidCreateNode)==null||c.call(i,d)},l=a=>{var c;if(a.element===null)return;const d=a;if(n.has(d.element)||this.nodes.delete(d.element),this.identityProvider){const h=this.identityProvider.getId(d.element).toString();o.has(h)||this.nodesByIdentity.delete(h)}(c=i.onDidDeleteNode)==null||c.call(i,d)};this.model.splice([...e,0],Number.MAX_VALUE,t,{...i,onDidCreateNode:r,onDidDeleteNode:l})}preserveCollapseState(e=Zn.empty()){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),Zn.map(e,t=>{let i=this.nodes.get(t.element);if(!i&&this.identityProvider){const r=this.identityProvider.getId(t.element).toString();i=this.nodesByIdentity.get(r)}if(!i){let r;return typeof t.collapsed>"u"?r=void 0:t.collapsed===kc.Collapsed||t.collapsed===kc.PreserveOrCollapsed?r=!0:t.collapsed===kc.Expanded||t.collapsed===kc.PreserveOrExpanded?r=!1:r=!!t.collapsed,{...t,children:this.preserveCollapseState(t.children),collapsed:r}}const n=typeof t.collapsible=="boolean"?t.collapsible:i.collapsible;let o;return typeof t.collapsed>"u"||t.collapsed===kc.PreserveOrCollapsed||t.collapsed===kc.PreserveOrExpanded?o=i.collapsed:t.collapsed===kc.Collapsed?o=!0:t.collapsed===kc.Expanded?o=!1:o=!!t.collapsed,{...t,collapsible:n,collapsed:o,children:this.preserveCollapseState(t.children)}})}rerender(e){const t=this.getElementLocation(e);this.model.rerender(t)}getFirstElementChild(e=null){const t=this.getElementLocation(e);return this.model.getFirstElementChild(t)}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getElementLocation(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getElementLocation(e);return this.model.getListRenderCount(t)}isCollapsible(e){const t=this.getElementLocation(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getElementLocation(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getElementLocation(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getElementLocation(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getElementLocation(e);this.model.expandTo(t)}refilter(){this.model.refilter()}getNode(e=null){if(e===null)return this.model.getNode(this.model.rootRef);const t=this.nodes.get(e);if(!t)throw new _c(this.user,`Tree element not found: ${e}`);return t}getNodeLocation(e){return e.element}getParentNodeLocation(e){if(e===null)throw new _c(this.user,"Invalid getParentNodeLocation call");const t=this.nodes.get(e);if(!t)throw new _c(this.user,`Tree element not found: ${e}`);const i=this.model.getNodeLocation(t),n=this.model.getParentNodeLocation(i);return this.model.getNode(n).element}getElementLocation(e){if(e===null)return[];const t=this.nodes.get(e);if(!t)throw new _c(this.user,`Tree element not found: ${e}`);return this.model.getNodeLocation(t)}}function QD(s){const e=[s.element],t=s.incompressible||!1;return{element:{elements:e,incompressible:t},children:Zn.map(Zn.from(s.children),QD),collapsible:s.collapsible,collapsed:s.collapsed}}function MD(s){const e=[s.element],t=s.incompressible||!1;let i,n;for(;[n,i]=Zn.consume(Zn.from(s.children),2),!(n.length!==1||n[0].incompressible);)s=n[0],e.push(s.element);return{element:{elements:e,incompressible:t},children:Zn.map(Zn.concat(n,i),MD),collapsible:s.collapsible,collapsed:s.collapsed}}function lq(s,e=0){let t;return e<s.element.elements.length-1?t=[lq(s,e+1)]:t=Zn.map(Zn.from(s.children),i=>lq(i,0)),e===0&&s.element.incompressible?{element:s.element.elements[e],children:t,incompressible:!0,collapsible:s.collapsible,collapsed:s.collapsed}:{element:s.element.elements[e],children:t,collapsible:s.collapsible,collapsed:s.collapsed}}function Yme(s){return lq(s,0)}function hVe(s,e,t){return s.element===e?{...s,children:t}:{...s,children:Zn.map(Zn.from(s.children),i=>hVe(i,e,t))}}const Aot=s=>({getId(e){return e.elements.map(t=>s.getId(t).toString()).join("\0")}});class Zot{get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.model=new $oe(e,t,i),this.enabled=typeof i.compressionEnabled>"u"?!0:i.compressionEnabled,this.identityProvider=i.identityProvider}setChildren(e,t=Zn.empty(),i){const n=i.diffIdentityProvider&&Aot(i.diffIdentityProvider);if(e===null){const p=Zn.map(t,this.enabled?MD:QD);this._setChildren(null,p,{diffIdentityProvider:n,diffDepth:1/0});return}const o=this.nodes.get(e);if(!o)throw new _c(this.user,"Unknown compressed tree node");const r=this.model.getNode(o),l=this.model.getParentNodeLocation(o),a=this.model.getNode(l),d=Yme(r),c=hVe(d,e,t),h=(this.enabled?MD:QD)(c),u=i.diffIdentityProvider?(p,g)=>i.diffIdentityProvider.getId(p)===i.diffIdentityProvider.getId(g):void 0;if(lo(h.element.elements,r.element.elements,u)){this._setChildren(o,h.children||Zn.empty(),{diffIdentityProvider:n,diffDepth:1});return}const m=a.children.map(p=>p===r?h:p);this._setChildren(a.element,m,{diffIdentityProvider:n,diffDepth:r.depth-a.depth})}isCompressionEnabled(){return this.enabled}setCompressionEnabled(e){if(e===this.enabled)return;this.enabled=e;const i=this.model.getNode().children,n=Zn.map(i,Yme),o=Zn.map(n,e?MD:QD);this._setChildren(null,o,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(e,t,i){const n=new Set,o=l=>{for(const a of l.element.elements)n.add(a),this.nodes.set(a,l.element)},r=l=>{for(const a of l.element.elements)n.has(a)||this.nodes.delete(a)};this.model.setChildren(e,t,{...i,onDidCreateNode:o,onDidDeleteNode:r})}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getCompressedNode(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getCompressedNode(e);return this.model.getListRenderCount(t)}getNode(e){if(typeof e>"u")return this.model.getNode();const t=this.getCompressedNode(e);return this.model.getNode(t)}getNodeLocation(e){const t=this.model.getNodeLocation(e);return t===null?null:t.elements[t.elements.length-1]}getParentNodeLocation(e){const t=this.getCompressedNode(e),i=this.model.getParentNodeLocation(t);return i===null?null:i.elements[i.elements.length-1]}getFirstElementChild(e){const t=this.getCompressedNode(e);return this.model.getFirstElementChild(t)}isCollapsible(e){const t=this.getCompressedNode(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getCompressedNode(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getCompressedNode(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getCompressedNode(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getCompressedNode(e);this.model.expandTo(t)}rerender(e){const t=this.getCompressedNode(e);this.model.rerender(t)}refilter(){this.model.refilter()}getCompressedNode(e){if(e===null)return null;const t=this.nodes.get(e);if(!t)throw new _c(this.user,`Tree element not found: ${e}`);return t}}const Sot=s=>s[s.length-1];class ere{get element(){return this.node.element===null?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map(e=>new ere(this.unwrapper,e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e,t){this.unwrapper=e,this.node=t}}function Not(s,e){return{splice(t,i,n){e.splice(t,i,n.map(o=>s.map(o)))},updateElementHeight(t,i){e.updateElementHeight(t,i)}}}function Rot(s,e){return{...e,identityProvider:e.identityProvider&&{getId(t){return e.identityProvider.getId(s(t))}},sorter:e.sorter&&{compare(t,i){return e.sorter.compare(t.elements[0],i.elements[0])}},filter:e.filter&&{filter(t,i){return e.filter.filter(s(t),i)}}}}class Vot{get onDidSplice(){return Ut.map(this.model.onDidSplice,({insertedNodes:e,deletedNodes:t})=>({insertedNodes:e.map(i=>this.nodeMapper.map(i)),deletedNodes:t.map(i=>this.nodeMapper.map(i))}))}get onDidChangeCollapseState(){return Ut.map(this.model.onDidChangeCollapseState,({node:e,deep:t})=>({node:this.nodeMapper.map(e),deep:t}))}get onDidChangeRenderNodeCount(){return Ut.map(this.model.onDidChangeRenderNodeCount,e=>this.nodeMapper.map(e))}constructor(e,t,i={}){this.rootRef=null,this.elementMapper=i.elementMapper||Sot;const n=o=>this.elementMapper(o.elements);this.nodeMapper=new Hoe(o=>new ere(n,o)),this.model=new Zot(e,Not(this.nodeMapper,t),Rot(n,i))}setChildren(e,t=Zn.empty(),i={}){this.model.setChildren(e,t,i)}isCompressionEnabled(){return this.model.isCompressionEnabled()}setCompressionEnabled(e){this.model.setCompressionEnabled(e)}has(e){return this.model.has(e)}getListIndex(e){return this.model.getListIndex(e)}getListRenderCount(e){return this.model.getListRenderCount(e)}getNode(e){return this.nodeMapper.map(this.model.getNode(e))}getNodeLocation(e){return e.element}getParentNodeLocation(e){return this.model.getParentNodeLocation(e)}getFirstElementChild(e){const t=this.model.getFirstElementChild(e);return t===null||typeof t>"u"?t:this.elementMapper(t.elements)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}setCollapsed(e,t,i){return this.model.setCollapsed(e,t,i)}expandTo(e){return this.model.expandTo(e)}rerender(e){return this.model.rerender(e)}refilter(){return this.model.refilter()}getCompressedTreeNode(e=null){return this.model.getNode(e)}}var Wot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};class tre extends cVe{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(e,t,i,n,o={}){super(e,t,i,n,o),this.user=e}setChildren(e,t=Zn.empty(),i){this.model.setChildren(e,t,i)}rerender(e){if(e===void 0){this.view.rerender();return}this.model.rerender(e)}hasElement(e){return this.model.has(e)}createModel(e,t,i){return new $oe(e,t,i)}}class uVe{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(e,t,i){this._compressedTreeNodeProvider=e,this.stickyScrollDelegate=t,this.renderer=i,this.templateId=i.templateId,i.onDidChangeTwistieState&&(this.onDidChangeTwistieState=i.onDidChangeTwistieState)}renderTemplate(e){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){let o=this.stickyScrollDelegate.getCompressedNode(e);o||(o=this.compressedTreeNodeProvider.getCompressedTreeNode(e.element)),o.element.elements.length===1?(i.compressedTreeNode=void 0,this.renderer.renderElement(e,t,i.data,n)):(i.compressedTreeNode=o,this.renderer.renderCompressedElements(o,t,i.data,n))}disposeElement(e,t,i,n){var o,r,l,a;i.compressedTreeNode?(r=(o=this.renderer).disposeCompressedElements)==null||r.call(o,i.compressedTreeNode,t,i.data,n):(a=(l=this.renderer).disposeElement)==null||a.call(l,e,t,i.data,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.data)}renderTwistie(e,t){return this.renderer.renderTwistie?this.renderer.renderTwistie(e,t):!1}}Wot([Po],uVe.prototype,"compressedTreeNodeProvider",null);class yot{constructor(e){this.modelProvider=e,this.compressedStickyNodes=new Map}getCompressedNode(e){return this.compressedStickyNodes.get(e)}constrainStickyScrollNodes(e,t,i){if(this.compressedStickyNodes.clear(),e.length===0)return[];for(let n=0;n<e.length;n++){const o=e[n],r=o.position+o.height;if(n+1<e.length&&r+e[n+1].height>i||n>=t-1&&t<e.length){const a=e.slice(0,n),d=e.slice(n),c=this.compressStickyNodes(d);return[...a,c]}}return e}compressStickyNodes(e){if(e.length===0)throw new Error("Can't compress empty sticky nodes");const t=this.modelProvider();if(!t.isCompressionEnabled())return e[0];const i=[];for(let d=0;d<e.length;d++){const c=e[d],h=t.getCompressedTreeNode(c.node.element);if(h.element){if(d!==0&&h.element.incompressible)break;i.push(...h.element.elements)}}if(i.length<2)return e[0];const n=e[e.length-1],o={elements:i,incompressible:!1},r={...n.node,children:[],element:o},l=new Proxy(e[0].node,{}),a={node:l,startIndex:e[0].startIndex,endIndex:n.endIndex,position:e[0].position,height:e[0].height};return this.compressedStickyNodes.set(l,r),a}}function Qot(s,e){return e&&{...e,keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{getKeyboardNavigationLabel(t){let i;try{i=s().getCompressedTreeNode(t)}catch{return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t)}return i.element.elements.length===1?e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t):e.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(i.element.elements)}}}}class mVe extends tre{constructor(e,t,i,n,o={}){const r=()=>this,l=new yot(()=>this.model),a=n.map(d=>new uVe(r,l,d));super(e,t,i,a,{...Qot(r,o),stickyScrollDelegate:l})}setChildren(e,t=Zn.empty(),i){this.model.setChildren(e,t,i)}createModel(e,t,i){return new Vot(e,t,i)}updateOptions(e={}){super.updateOptions(e),typeof e.compressionEnabled<"u"&&this.model.setCompressionEnabled(e.compressionEnabled)}getCompressedTreeNode(e=null){return this.model.getCompressedTreeNode(e)}}function IP(s){return{...s,children:[],refreshPromise:void 0,stale:!0,slow:!1,forceExpanded:!1}}function aq(s,e){return e.parent?e.parent===s?!0:aq(s,e.parent):!1}function Mot(s,e){return s===e||aq(s,e)||aq(e,s)}class ire{get element(){return this.node.element.element}get children(){return this.node.children.map(e=>new ire(e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class wot{constructor(e,t,i){this.renderer=e,this.nodeMapper=t,this.onDidChangeTwistieState=i,this.renderedNodes=new Map,this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(t.classList.add(...ui.asClassNameArray(ct.treeItemLoading)),!0):(t.classList.remove(...ui.asClassNameArray(ct.treeItemLoading)),!1)}disposeElement(e,t,i,n){var o,r;(r=(o=this.renderer).disposeElement)==null||r.call(o,this.nodeMapper.map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear()}}function _me(s){return{browserEvent:s.browserEvent,elements:s.elements.map(e=>e.element)}}function zme(s){return{browserEvent:s.browserEvent,element:s.element&&s.element.element,target:s.target}}class Tot extends dk{constructor(e){super(e.elements.map(t=>t.element)),this.data=e}}function EP(s){return s instanceof dk?new Tot(s):s}class Cot{constructor(e){this.dnd=e}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map(i=>i.element),t)}onDragStart(e,t){var i,n;(n=(i=this.dnd).onDragStart)==null||n.call(i,EP(e),t)}onDragOver(e,t,i,n,o,r=!0){return this.dnd.onDragOver(EP(e),t&&t.element,i,n,o)}drop(e,t,i,n,o){this.dnd.drop(EP(e),t&&t.element,i,n,o)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}dispose(){this.dnd.dispose()}}function pVe(s){return s&&{...s,collapseByDefault:!0,identityProvider:s.identityProvider&&{getId(e){return s.identityProvider.getId(e.element)}},dnd:s.dnd&&new Cot(s.dnd),multipleSelectionController:s.multipleSelectionController&&{isSelectionSingleChangeEvent(e){return s.multipleSelectionController.isSelectionSingleChangeEvent({...e,element:e.element})},isSelectionRangeChangeEvent(e){return s.multipleSelectionController.isSelectionRangeChangeEvent({...e,element:e.element})}},accessibilityProvider:s.accessibilityProvider&&{...s.accessibilityProvider,getPosInSet:void 0,getSetSize:void 0,getRole:s.accessibilityProvider.getRole?e=>s.accessibilityProvider.getRole(e.element):()=>"treeitem",isChecked:s.accessibilityProvider.isChecked?e=>{var t;return!!((t=s.accessibilityProvider)!=null&&t.isChecked(e.element))}:void 0,getAriaLabel(e){return s.accessibilityProvider.getAriaLabel(e.element)},getWidgetAriaLabel(){return s.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:s.accessibilityProvider.getWidgetRole?()=>s.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:s.accessibilityProvider.getAriaLevel&&(e=>s.accessibilityProvider.getAriaLevel(e.element)),getActiveDescendantId:s.accessibilityProvider.getActiveDescendantId&&(e=>s.accessibilityProvider.getActiveDescendantId(e.element))},filter:s.filter&&{filter(e,t){return s.filter.filter(e.element,t)}},keyboardNavigationLabelProvider:s.keyboardNavigationLabelProvider&&{...s.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(e){return s.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element)}},sorter:void 0,expandOnlyOnTwistieClick:typeof s.expandOnlyOnTwistieClick>"u"?void 0:typeof s.expandOnlyOnTwistieClick!="function"?s.expandOnlyOnTwistieClick:e=>s.expandOnlyOnTwistieClick(e.element),defaultFindVisibility:e=>e.hasChildren&&e.stale?1:typeof s.defaultFindVisibility=="number"?s.defaultFindVisibility:typeof s.defaultFindVisibility>"u"?2:s.defaultFindVisibility(e.element)}}function dq(s,e){e(s),s.children.forEach(t=>dq(t,e))}class gVe{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return Ut.map(this.tree.onDidChangeFocus,_me)}get onDidChangeSelection(){return Ut.map(this.tree.onDidChangeSelection,_me)}get onMouseDblClick(){return Ut.map(this.tree.onMouseDblClick,zme)}get onPointer(){return Ut.map(this.tree.onPointer,zme)}get onDidFocus(){return this.tree.onDidFocus}get onDidChangeModel(){return this.tree.onDidChangeModel}get onDidChangeCollapseState(){return this.tree.onDidChangeCollapseState}get onDidChangeFindOpenState(){return this.tree.onDidChangeFindOpenState}get onDidChangeStickyScrollFocused(){return this.tree.onDidChangeStickyScrollFocused}get onDidDispose(){return this.tree.onDidDispose}constructor(e,t,i,n,o,r={}){this.user=e,this.dataSource=o,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new fe,this._onDidChangeNodeSlowState=new fe,this.nodeMapper=new Hoe(l=>new ire(l)),this.disposables=new De,this.identityProvider=r.identityProvider,this.autoExpandSingleChildren=typeof r.autoExpandSingleChildren>"u"?!1:r.autoExpandSingleChildren,this.sorter=r.sorter,this.getDefaultCollapseState=l=>r.collapseByDefault?r.collapseByDefault(l)?kc.PreserveOrCollapsed:kc.PreserveOrExpanded:void 0,this.tree=this.createTree(e,t,i,n,r),this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.onDidChangeFindMatchType=this.tree.onDidChangeFindMatchType,this.root=IP({element:void 0,parent:null,hasChildren:!0,defaultCollapseState:void 0}),this.identityProvider&&(this.root={...this.root,id:null}),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}createTree(e,t,i,n,o){const r=new qoe(i),l=n.map(d=>new wot(d,this.nodeMapper,this._onDidChangeNodeSlowState.event)),a=pVe(o)||{};return new tre(e,t,r,l,a)}updateOptions(e={}){this.tree.updateOptions(e)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(e){this.tree.scrollTop=e}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(e,t){this.tree.layout(e,t)}style(e){this.tree.style(e)}getInput(){return this.root.element}async setInput(e,t){this.refreshPromises.forEach(n=>n.cancel()),this.refreshPromises.clear(),this.root.element=e;const i=t&&{viewState:t,focus:[],selection:[]};await this._updateChildren(e,!0,!1,i),i&&(this.tree.setFocus(i.focus),this.tree.setSelection(i.selection)),t&&typeof t.scrollTop=="number"&&(this.scrollTop=t.scrollTop)}async _updateChildren(e=this.root.element,t=!0,i=!1,n,o){if(typeof this.root.element>"u")throw new _c(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await Ut.toPromise(this._onDidRender.event));const r=this.getDataNode(e);if(await this.refreshAndRenderNode(r,t,n,o),i)try{this.tree.rerender(r)}catch{}}rerender(e){if(e===void 0||e===this.root.element){this.tree.rerender();return}const t=this.getDataNode(e);this.tree.rerender(t)}getNode(e=this.root.element){const t=this.getDataNode(e),i=this.tree.getNode(t===this.root?null:t);return this.nodeMapper.map(i)}collapse(e,t=!1){const i=this.getDataNode(e);return this.tree.collapse(i===this.root?null:i,t)}async expand(e,t=!1){if(typeof this.root.element>"u")throw new _c(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await Ut.toPromise(this._onDidRender.event));const i=this.getDataNode(e);if(this.tree.hasElement(i)&&!this.tree.isCollapsible(i)||(i.refreshPromise&&(await this.root.refreshPromise,await Ut.toPromise(this._onDidRender.event)),i!==this.root&&!i.refreshPromise&&!this.tree.isCollapsed(i)))return!1;const n=this.tree.expand(i===this.root?null:i,t);return i.refreshPromise&&(await this.root.refreshPromise,await Ut.toPromise(this._onDidRender.event)),n}setSelection(e,t){const i=e.map(n=>this.getDataNode(n));this.tree.setSelection(i,t)}getSelection(){return this.tree.getSelection().map(t=>t.element)}setFocus(e,t){const i=e.map(n=>this.getDataNode(n));this.tree.setFocus(i,t)}getFocus(){return this.tree.getFocus().map(t=>t.element)}reveal(e,t){this.tree.reveal(this.getDataNode(e),t)}getParentElement(e){const t=this.tree.getParentElement(this.getDataNode(e));return t&&t.element}getFirstElementChild(e=this.root.element){const t=this.getDataNode(e),i=this.tree.getFirstElementChild(t===this.root?null:t);return i&&i.element}getDataNode(e){const t=this.nodes.get(e===this.root.element?null:e);if(!t)throw new _c(this.user,`Data tree node not found: ${e}`);return t}async refreshAndRenderNode(e,t,i,n){await this.refreshNode(e,t,i),!this.disposables.isDisposed&&this.render(e,i,n)}async refreshNode(e,t,i){let n;if(this.subTreeRefreshPromises.forEach((o,r)=>{!n&&Mot(r,e)&&(n=o.then(()=>this.refreshNode(e,t,i)))}),n)return n;if(e!==this.root&&this.tree.getNode(e).collapsed){e.hasChildren=!!this.dataSource.hasChildren(e.element),e.stale=!0,this.setChildren(e,[],t,i);return}return this.doRefreshSubTree(e,t,i)}async doRefreshSubTree(e,t,i){let n;e.refreshPromise=new Promise(o=>n=o),this.subTreeRefreshPromises.set(e,e.refreshPromise),e.refreshPromise.finally(()=>{e.refreshPromise=void 0,this.subTreeRefreshPromises.delete(e)});try{const o=await this.doRefreshNode(e,t,i);e.stale=!1,await l8.settled(o.map(r=>this.doRefreshSubTree(r,t,i)))}finally{n()}}async doRefreshNode(e,t,i){e.hasChildren=!!this.dataSource.hasChildren(e.element);let n;if(!e.hasChildren)n=Promise.resolve(Zn.empty());else{const o=this.doGetChildren(e);if(Jce(o))n=Promise.resolve(o);else{const r=Pf(800);r.then(()=>{e.slow=!0,this._onDidChangeNodeSlowState.fire(e)},l=>null),n=o.finally(()=>r.cancel())}}try{const o=await n;return this.setChildren(e,o,t,i)}catch(o){if(e!==this.root&&this.tree.hasElement(e)&&this.tree.collapse(e),$h(o))return[];throw o}finally{e.slow&&(e.slow=!1,this._onDidChangeNodeSlowState.fire(e))}}doGetChildren(e){let t=this.refreshPromises.get(e);if(t)return t;const i=this.dataSource.getChildren(e.element);return Jce(i)?this.processChildren(i):(t=Tr(async()=>this.processChildren(await i)),this.refreshPromises.set(e,t),t.finally(()=>{this.refreshPromises.delete(e)}))}_onDidChangeCollapseState({node:e,deep:t}){e.element!==null&&!e.collapsed&&e.element.stale&&(t?this.collapse(e.element.element):this.refreshAndRenderNode(e.element,!1).catch(wi))}setChildren(e,t,i,n){const o=[...t];if(e.children.length===0&&o.length===0)return[];const r=new Map,l=new Map;for(const c of e.children)r.set(c.element,c),this.identityProvider&&l.set(c.id,{node:c,collapsed:this.tree.hasElement(c)&&this.tree.isCollapsed(c)});const a=[],d=o.map(c=>{const h=!!this.dataSource.hasChildren(c);if(!this.identityProvider){const g=IP({element:c,parent:e,hasChildren:h,defaultCollapseState:this.getDefaultCollapseState(c)});return h&&g.defaultCollapseState===kc.PreserveOrExpanded&&a.push(g),g}const u=this.identityProvider.getId(c).toString(),m=l.get(u);if(m){const g=m.node;return r.delete(g.element),this.nodes.delete(g.element),this.nodes.set(c,g),g.element=c,g.hasChildren=h,i?m.collapsed?(g.children.forEach(f=>dq(f,b=>this.nodes.delete(b.element))),g.children.splice(0,g.children.length),g.stale=!0):a.push(g):h&&!m.collapsed&&a.push(g),g}const p=IP({element:c,parent:e,id:u,hasChildren:h,defaultCollapseState:this.getDefaultCollapseState(c)});return n&&n.viewState.focus&&n.viewState.focus.indexOf(u)>-1&&n.focus.push(p),n&&n.viewState.selection&&n.viewState.selection.indexOf(u)>-1&&n.selection.push(p),(n&&n.viewState.expanded&&n.viewState.expanded.indexOf(u)>-1||h&&p.defaultCollapseState===kc.PreserveOrExpanded)&&a.push(p),p});for(const c of r.values())dq(c,h=>this.nodes.delete(h.element));for(const c of d)this.nodes.set(c.element,c);return e.children.splice(0,e.children.length,...d),e!==this.root&&this.autoExpandSingleChildren&&d.length===1&&a.length===0&&(d[0].forceExpanded=!0,a.push(d[0])),a}render(e,t,i){const n=e.children.map(r=>this.asTreeElement(r,t)),o=i&&{...i,diffIdentityProvider:i.diffIdentityProvider&&{getId(r){return i.diffIdentityProvider.getId(r.element)}}};this.tree.setChildren(e===this.root?null:e,n,o),e!==this.root&&this.tree.setCollapsible(e,e.hasChildren),this._onDidRender.fire()}asTreeElement(e,t){if(e.stale)return{element:e,collapsible:e.hasChildren,collapsed:!0};let i;return t&&t.viewState.expanded&&e.id&&t.viewState.expanded.indexOf(e.id)>-1?i=!1:e.forceExpanded?(i=!1,e.forceExpanded=!1):i=e.defaultCollapseState,{element:e,children:e.hasChildren?Zn.map(e.children,n=>this.asTreeElement(n,t)):[],collapsible:e.hasChildren,collapsed:i}}processChildren(e){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),e}dispose(){this.disposables.dispose(),this.tree.dispose()}}class nre{get element(){return{elements:this.node.element.elements.map(e=>e.element),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map(e=>new nre(e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class Bot{constructor(e,t,i,n){this.renderer=e,this.nodeMapper=t,this.compressibleNodeMapperProvider=i,this.onDidChangeTwistieState=n,this.renderedNodes=new Map,this.disposables=[],this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderCompressedElements(e,t,i,n){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(t.classList.add(...ui.asClassNameArray(ct.treeItemLoading)),!0):(t.classList.remove(...ui.asClassNameArray(ct.treeItemLoading)),!1)}disposeElement(e,t,i,n){var o,r;(r=(o=this.renderer).disposeElement)==null||r.call(o,this.nodeMapper.map(e),t,i.templateData,n)}disposeCompressedElements(e,t,i,n){var o,r;(r=(o=this.renderer).disposeCompressedElements)==null||r.call(o,this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=Ws(this.disposables)}}function Lot(s){const e=s&&pVe(s);return e&&{...e,keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getCompressedNodeKeyboardNavigationLabel(t){return s.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.map(i=>i.element))}}}}class vot extends gVe{constructor(e,t,i,n,o,r,l={}){super(e,t,i,o,r,l),this.compressionDelegate=n,this.compressibleNodeMapper=new Hoe(a=>new nre(a)),this.filter=l.filter}createTree(e,t,i,n,o){const r=new qoe(i),l=n.map(d=>new Bot(d,this.nodeMapper,()=>this.compressibleNodeMapper,this._onDidChangeNodeSlowState.event)),a=Lot(o)||{};return new mVe(e,t,r,l,a)}asTreeElement(e,t){return{incompressible:this.compressionDelegate.isIncompressible(e.element),...super.asTreeElement(e,t)}}updateOptions(e={}){this.tree.updateOptions(e)}render(e,t,i){if(!this.identityProvider)return super.render(e,t);const n=m=>this.identityProvider.getId(m).toString(),o=m=>{const p=new Set;for(const g of m){const f=this.tree.getCompressedTreeNode(g===this.root?null:g);if(f.element)for(const b of f.element.elements)p.add(n(b.element))}return p},r=o(this.tree.getSelection()),l=o(this.tree.getFocus());super.render(e,t,i);const a=this.getSelection();let d=!1;const c=this.getFocus();let h=!1;const u=m=>{const p=m.element;if(p)for(let g=0;g<p.elements.length;g++){const f=n(p.elements[g].element),b=p.elements[p.elements.length-1].element;r.has(f)&&a.indexOf(b)===-1&&(a.push(b),d=!0),l.has(f)&&c.indexOf(b)===-1&&(c.push(b),h=!0)}m.children.forEach(u)};u(this.tree.getCompressedTreeNode(e===this.root?null:e)),d&&this.setSelection(a),h&&this.setFocus(c)}processChildren(e){return this.filter&&(e=Zn.filter(e,t=>{const i=this.filter.filter(t,1),n=kot(i);if(n===2)throw new Error("Recursive tree visibility not supported in async data compressed trees");return n===1})),super.processChildren(e)}}function kot(s){return typeof s=="boolean"?s?1:0:Koe(s)?NL(s.visibility):NL(s)}class xot extends cVe{constructor(e,t,i,n,o,r={}){super(e,t,i,n,r),this.user=e,this.dataSource=o,this.identityProvider=r.identityProvider}createModel(e,t,i){return new $oe(e,t,i)}}new yt("isMac",hn,F("isMac","Whether the operating system is macOS"));new yt("isLinux",_a,F("isLinux","Whether the operating system is Linux"));const U9=new yt("isWindows",Tl,F("isWindows","Whether the operating system is Windows")),fVe=new yt("isWeb",jN,F("isWeb","Whether the platform is a web browser"));new yt("isMacNative",hn&&!jN,F("isMacNative","Whether the operating system is macOS on a non-browser platform"));new yt("isIOS",lp,F("isIOS","Whether the operating system is iOS"));new yt("isMobile",dZe,F("isMobile","Whether the platform is a mobile web browser"));new yt("isDevelopment",!1,!0);new yt("productQualityType","",F("productQualityType","Quality type of VS Code"));const bVe="inputFocus",UVe=new yt(bVe,!1,F("inputFocus","Whether keyboard focus is inside an input box"));var cb=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_s=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const iu=un("listService");class Iot{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new De,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}setLastFocusedList(e){var t,i;e!==this._lastFocusedWidget&&((t=this._lastFocusedWidget)==null||t.getHTMLElement().classList.remove("last-focused"),this._lastFocusedWidget=e,(i=this._lastFocusedWidget)==null||i.getHTMLElement().classList.add("last-focused"))}register(e,t){if(this._hasCreatedStyleController||(this._hasCreatedStyleController=!0,new pRe(sh(),"").style($N)),this.lists.some(n=>n.widget===e))throw new Error("Cannot register the same widget multiple times");const i={widget:e,extraContextKeys:t};return this.lists.push(i),C3(e.getHTMLElement())&&this.setLastFocusedList(e),Pu(e.onDidFocus(()=>this.setLastFocusedList(e)),ei(()=>this.lists.splice(this.lists.indexOf(i),1)),e.onDidDispose(()=>{this.lists=this.lists.filter(n=>n!==i),this._lastFocusedWidget===e&&this.setLastFocusedList(void 0)}))}dispose(){this.disposables.dispose()}}const RL=new yt("listScrollAtBoundary","none");Ge.or(RL.isEqualTo("top"),RL.isEqualTo("both"));Ge.or(RL.isEqualTo("bottom"),RL.isEqualTo("both"));const FVe=new yt("listFocus",!0),AVe=new yt("treestickyScrollFocused",!1),F9=new yt("listSupportsMultiselect",!0),ZVe=Ge.and(FVe,Ge.not(bVe),AVe.negate()),sre=new yt("listHasSelectionOrFocus",!1),ore=new yt("listDoubleSelection",!1),rre=new yt("listMultiSelection",!1),A9=new yt("listSelectionNavigation",!1),Eot=new yt("listSupportsFind",!0),lre=new yt("treeElementCanCollapse",!1),Dot=new yt("treeElementHasParent",!1),are=new yt("treeElementCanExpand",!1),Got=new yt("treeElementHasChild",!1),Jot=new yt("treeFindOpen",!1),SVe="listTypeNavigationMode",NVe="listAutomaticKeyboardNavigation";function Z9(s,e){const t=s.createScoped(e.getHTMLElement());return FVe.bindTo(t),t}function S9(s,e){const t=RL.bindTo(s),i=()=>{const n=e.scrollTop===0,o=e.scrollHeight-e.renderHeight-e.scrollTop<1;n&&o?t.set("both"):n?t.set("top"):o?t.set("bottom"):t.set("none")};return i(),e.onDidScroll(i)}const iR="workbench.list.multiSelectModifier",wD="workbench.list.openMode",_h="workbench.list.horizontalScrolling",dre="workbench.list.defaultFindMode",cre="workbench.list.typeNavigationMode",r5="workbench.list.keyboardNavigation",cp="workbench.list.scrollByPage",hre="workbench.list.defaultFindMatchType",VL="workbench.tree.indent",l5="workbench.tree.renderIndentGuides",hp="workbench.list.smoothScrolling",_g="workbench.list.mouseWheelScrollSensitivity",zg="workbench.list.fastScrollSensitivity",a5="workbench.tree.expandMode",d5="workbench.tree.enableStickyScroll",c5="workbench.tree.stickyScrollMaxItemCount";function Og(s){return s.getValue(iR)==="alt"}class Xot extends be{constructor(e){super(),this.configurationService=e,this.useAltAsMultipleSelectionModifier=Og(e),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>{e.affectsConfiguration(iR)&&(this.useAltAsMultipleSelectionModifier=Og(this.configurationService))}))}isSelectionSingleChangeEvent(e){return this.useAltAsMultipleSelectionModifier?e.browserEvent.altKey:hRe(e)}isSelectionRangeChangeEvent(e){return uRe(e)}}function N9(s,e){const t=s.get(Hi),i=s.get(qn),n=new De;return[{...e,keyboardNavigationDelegate:{mightProducePrintableCharacter(r){return i.mightProducePrintableCharacter(r)}},smoothScrolling:!!t.getValue(hp),mouseWheelScrollSensitivity:t.getValue(_g),fastScrollSensitivity:t.getValue(zg),multipleSelectionController:e.multipleSelectionController??n.add(new Xot(t)),keyboardNavigationEventFilter:zot(i),scrollByPage:!!t.getValue(cp)},n]}let Ome=class extends hh{constructor(e,t,i,n,o,r,l,a,d){const c=typeof o.horizontalScrolling<"u"?o.horizontalScrolling:!!a.getValue(_h),[h,u]=d.invokeFunction(N9,o);super(e,t,i,n,{keyboardSupport:!1,...h,horizontalScrolling:c}),this.disposables.add(u),this.contextKeyService=Z9(r,this),this.disposables.add(S9(this.contextKeyService,this)),this.listSupportsMultiSelect=F9.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(o.multipleSelectionSupport!==!1),A9.bindTo(this.contextKeyService).set(!!o.selectionNavigation),this.listHasSelectionOrFocus=sre.bindTo(this.contextKeyService),this.listDoubleSelection=ore.bindTo(this.contextKeyService),this.listMultiSelection=rre.bindTo(this.contextKeyService),this.horizontalScrolling=o.horizontalScrolling,this._useAltAsMultipleSelectionModifier=Og(a),this.disposables.add(this.contextKeyService),this.disposables.add(l.register(this)),this.updateStyles(o.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const p=this.getSelection(),g=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(p.length>0||g.length>0),this.listMultiSelection.set(p.length>1),this.listDoubleSelection.set(p.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const p=this.getSelection(),g=this.getFocus();this.listHasSelectionOrFocus.set(p.length>0||g.length>0)})),this.disposables.add(a.onDidChangeConfiguration(p=>{p.affectsConfiguration(iR)&&(this._useAltAsMultipleSelectionModifier=Og(a));let g={};if(p.affectsConfiguration(_h)&&this.horizontalScrolling===void 0){const f=!!a.getValue(_h);g={...g,horizontalScrolling:f}}if(p.affectsConfiguration(cp)){const f=!!a.getValue(cp);g={...g,scrollByPage:f}}if(p.affectsConfiguration(hp)){const f=!!a.getValue(hp);g={...g,smoothScrolling:f}}if(p.affectsConfiguration(_g)){const f=a.getValue(_g);g={...g,mouseWheelScrollSensitivity:f}}if(p.affectsConfiguration(zg)){const f=a.getValue(zg);g={...g,fastScrollSensitivity:f}}Object.keys(g).length>0&&this.updateOptions(g)})),this.navigator=new RVe(this,{configurationService:a,...o}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?eR(e):$N)}};Ome=cb([_s(5,fi),_s(6,iu),_s(7,Hi),_s(8,ti)],Ome);let jme=class extends jst{constructor(e,t,i,n,o,r,l,a,d){const c=typeof o.horizontalScrolling<"u"?o.horizontalScrolling:!!a.getValue(_h),[h,u]=d.invokeFunction(N9,o);super(e,t,i,n,{keyboardSupport:!1,...h,horizontalScrolling:c}),this.disposables=new De,this.disposables.add(u),this.contextKeyService=Z9(r,this),this.disposables.add(S9(this.contextKeyService,this.widget)),this.horizontalScrolling=o.horizontalScrolling,this.listSupportsMultiSelect=F9.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(o.multipleSelectionSupport!==!1),A9.bindTo(this.contextKeyService).set(!!o.selectionNavigation),this._useAltAsMultipleSelectionModifier=Og(a),this.disposables.add(this.contextKeyService),this.disposables.add(l.register(this)),this.updateStyles(o.overrideStyles),this.disposables.add(a.onDidChangeConfiguration(p=>{p.affectsConfiguration(iR)&&(this._useAltAsMultipleSelectionModifier=Og(a));let g={};if(p.affectsConfiguration(_h)&&this.horizontalScrolling===void 0){const f=!!a.getValue(_h);g={...g,horizontalScrolling:f}}if(p.affectsConfiguration(cp)){const f=!!a.getValue(cp);g={...g,scrollByPage:f}}if(p.affectsConfiguration(hp)){const f=!!a.getValue(hp);g={...g,smoothScrolling:f}}if(p.affectsConfiguration(_g)){const f=a.getValue(_g);g={...g,mouseWheelScrollSensitivity:f}}if(p.affectsConfiguration(zg)){const f=a.getValue(zg);g={...g,fastScrollSensitivity:f}}Object.keys(g).length>0&&this.updateOptions(g)})),this.navigator=new RVe(this,{configurationService:a,...o}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?eR(e):$N)}dispose(){this.disposables.dispose(),super.dispose()}};jme=cb([_s(5,fi),_s(6,iu),_s(7,Hi),_s(8,ti)],jme);let Pme=class extends oq{constructor(e,t,i,n,o,r,l,a,d,c){const h=typeof r.horizontalScrolling<"u"?r.horizontalScrolling:!!d.getValue(_h),[u,m]=c.invokeFunction(N9,r);super(e,t,i,n,o,{keyboardSupport:!1,...u,horizontalScrolling:h}),this.disposables.add(m),this.contextKeyService=Z9(l,this),this.disposables.add(S9(this.contextKeyService,this)),this.listSupportsMultiSelect=F9.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(r.multipleSelectionSupport!==!1),A9.bindTo(this.contextKeyService).set(!!r.selectionNavigation),this.listHasSelectionOrFocus=sre.bindTo(this.contextKeyService),this.listDoubleSelection=ore.bindTo(this.contextKeyService),this.listMultiSelection=rre.bindTo(this.contextKeyService),this.horizontalScrolling=r.horizontalScrolling,this._useAltAsMultipleSelectionModifier=Og(d),this.disposables.add(this.contextKeyService),this.disposables.add(a.register(this)),this.updateStyles(r.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const g=this.getSelection(),f=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(g.length>0||f.length>0),this.listMultiSelection.set(g.length>1),this.listDoubleSelection.set(g.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const g=this.getSelection(),f=this.getFocus();this.listHasSelectionOrFocus.set(g.length>0||f.length>0)})),this.disposables.add(d.onDidChangeConfiguration(g=>{g.affectsConfiguration(iR)&&(this._useAltAsMultipleSelectionModifier=Og(d));let f={};if(g.affectsConfiguration(_h)&&this.horizontalScrolling===void 0){const b=!!d.getValue(_h);f={...f,horizontalScrolling:b}}if(g.affectsConfiguration(cp)){const b=!!d.getValue(cp);f={...f,scrollByPage:b}}if(g.affectsConfiguration(hp)){const b=!!d.getValue(hp);f={...f,smoothScrolling:b}}if(g.affectsConfiguration(_g)){const b=d.getValue(_g);f={...f,mouseWheelScrollSensitivity:b}}if(g.affectsConfiguration(zg)){const b=d.getValue(zg);f={...f,fastScrollSensitivity:b}}Object.keys(f).length>0&&this.updateOptions(f)})),this.navigator=new Yot(this,{configurationService:d,...r}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?eR(e):$N)}dispose(){this.disposables.dispose(),super.dispose()}};Pme=cb([_s(6,fi),_s(7,iu),_s(8,Hi),_s(9,ti)],Pme);class ure extends be{constructor(e,t){super(),this.widget=e,this._onDidOpen=this._register(new fe),this.onDidOpen=this._onDidOpen.event,this._register(Ut.filter(this.widget.onDidChangeSelection,i=>ef(i.browserEvent))(i=>this.onSelectionFromKeyboard(i))),this._register(this.widget.onPointer(i=>this.onPointer(i.element,i.browserEvent))),this._register(this.widget.onMouseDblClick(i=>this.onMouseDblClick(i.element,i.browserEvent))),typeof(t==null?void 0:t.openOnSingleClick)!="boolean"&&(t!=null&&t.configurationService)?(this.openOnSingleClick=(t==null?void 0:t.configurationService.getValue(wD))!=="doubleClick",this._register(t==null?void 0:t.configurationService.onDidChangeConfiguration(i=>{i.affectsConfiguration(wD)&&(this.openOnSingleClick=(t==null?void 0:t.configurationService.getValue(wD))!=="doubleClick")}))):this.openOnSingleClick=(t==null?void 0:t.openOnSingleClick)??!0}onSelectionFromKeyboard(e){if(e.elements.length!==1)return;const t=e.browserEvent,i=typeof t.preserveFocus=="boolean"?t.preserveFocus:!0,n=typeof t.pinned=="boolean"?t.pinned:!i,o=!1;this._open(this.getSelectedElement(),i,n,o,e.browserEvent)}onPointer(e,t){if(!this.openOnSingleClick||t.detail===2)return;const n=t.button===1,o=!0,r=n,l=t.ctrlKey||t.metaKey||t.altKey;this._open(e,o,r,l,t)}onMouseDblClick(e,t){if(!t)return;const i=t.target;if(i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&t.offsetX<16)return;const o=!1,r=!0,l=t.ctrlKey||t.metaKey||t.altKey;this._open(e,o,r,l,t)}_open(e,t,i,n,o){e&&this._onDidOpen.fire({editorOptions:{preserveFocus:t,pinned:i,revealIfVisible:!0},sideBySide:n,element:e,browserEvent:o})}}class RVe extends ure{constructor(e,t){super(e,t),this.widget=e}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class Yot extends ure{constructor(e,t){super(e,t)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class _ot extends ure{constructor(e,t){super(e,t)}getSelectedElement(){return this.widget.getSelection()[0]??void 0}}function zot(s){let e=!1;return t=>{if(t.toKeyCodeChord().isModifierKey())return!1;if(e)return e=!1,!1;const i=s.softDispatch(t,t.target);return i.kind===1?(e=!0,!1):(e=!1,i.kind===0)}}let cq=class extends tre{constructor(e,t,i,n,o,r,l,a,d){const{options:c,getTypeNavigationMode:h,disposable:u}=r.invokeFunction(mk,o);super(e,t,i,n,c),this.disposables.add(u),this.internals=new wN(this,o,h,o.overrideStyles,l,a,d),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};cq=cb([_s(5,ti),_s(6,fi),_s(7,iu),_s(8,Hi)],cq);let Hme=class extends mVe{constructor(e,t,i,n,o,r,l,a,d){const{options:c,getTypeNavigationMode:h,disposable:u}=r.invokeFunction(mk,o);super(e,t,i,n,c),this.disposables.add(u),this.internals=new wN(this,o,h,o.overrideStyles,l,a,d),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};Hme=cb([_s(5,ti),_s(6,fi),_s(7,iu),_s(8,Hi)],Hme);let Kme=class extends xot{constructor(e,t,i,n,o,r,l,a,d,c){const{options:h,getTypeNavigationMode:u,disposable:m}=l.invokeFunction(mk,r);super(e,t,i,n,o,h),this.disposables.add(m),this.internals=new wN(this,r,u,r.overrideStyles,a,d,c),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles!==void 0&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};Kme=cb([_s(6,ti),_s(7,fi),_s(8,iu),_s(9,Hi)],Kme);let hq=class extends gVe{get onDidOpen(){return this.internals.onDidOpen}constructor(e,t,i,n,o,r,l,a,d,c){const{options:h,getTypeNavigationMode:u,disposable:m}=l.invokeFunction(mk,r);super(e,t,i,n,o,h),this.disposables.add(m),this.internals=new wN(this,r,u,r.overrideStyles,a,d,c),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};hq=cb([_s(6,ti),_s(7,fi),_s(8,iu),_s(9,Hi)],hq);let qme=class extends vot{constructor(e,t,i,n,o,r,l,a,d,c,h){const{options:u,getTypeNavigationMode:m,disposable:p}=a.invokeFunction(mk,l);super(e,t,i,n,o,r,u),this.disposables.add(p),this.internals=new wN(this,l,m,l.overrideStyles,d,c,h),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};qme=cb([_s(7,ti),_s(8,fi),_s(9,iu),_s(10,Hi)],qme);function VVe(s){const e=s.getValue(dre);if(e==="highlight")return wf.Highlight;if(e==="filter")return wf.Filter;const t=s.getValue(r5);if(t==="simple"||t==="highlight")return wf.Highlight;if(t==="filter")return wf.Filter}function WVe(s){const e=s.getValue(hre);if(e==="fuzzy")return MN.Fuzzy;if(e==="contiguous")return MN.Contiguous}function mk(s,e){const t=s.get(Hi),i=s.get(ab),n=s.get(fi),o=s.get(ti),r=()=>{const u=n.getContextKeyValue(SVe);if(u==="automatic")return Vg.Automatic;if(u==="trigger"||n.getContextKeyValue(NVe)===!1)return Vg.Trigger;const p=t.getValue(cre);if(p==="automatic")return Vg.Automatic;if(p==="trigger")return Vg.Trigger},l=e.horizontalScrolling!==void 0?e.horizontalScrolling:!!t.getValue(_h),[a,d]=o.invokeFunction(N9,e),c=e.paddingBottom,h=e.renderIndentGuides!==void 0?e.renderIndentGuides:t.getValue(l5);return{getTypeNavigationMode:r,disposable:d,options:{keyboardSupport:!1,...a,indent:typeof t.getValue(VL)=="number"?t.getValue(VL):void 0,renderIndentGuides:h,smoothScrolling:!!t.getValue(hp),defaultFindMode:VVe(t),defaultFindMatchType:WVe(t),horizontalScrolling:l,scrollByPage:!!t.getValue(cp),paddingBottom:c,hideTwistiesOfChildlessElements:e.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:e.expandOnlyOnTwistieClick??t.getValue(a5)==="doubleClick",contextViewProvider:i,findWidgetStyles:Htt,enableStickyScroll:!!t.getValue(d5),stickyScrollMaxItemCount:Number(t.getValue(c5))}}}let wN=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(e,t,i,n,o,r,l){this.tree=e,this.disposables=[],this.contextKeyService=Z9(o,e),this.disposables.push(S9(this.contextKeyService,e)),this.listSupportsMultiSelect=F9.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(t.multipleSelectionSupport!==!1),A9.bindTo(this.contextKeyService).set(!!t.selectionNavigation),this.listSupportFindWidget=Eot.bindTo(this.contextKeyService),this.listSupportFindWidget.set(t.findWidgetEnabled??!0),this.hasSelectionOrFocus=sre.bindTo(this.contextKeyService),this.hasDoubleSelection=ore.bindTo(this.contextKeyService),this.hasMultiSelection=rre.bindTo(this.contextKeyService),this.treeElementCanCollapse=lre.bindTo(this.contextKeyService),this.treeElementHasParent=Dot.bindTo(this.contextKeyService),this.treeElementCanExpand=are.bindTo(this.contextKeyService),this.treeElementHasChild=Got.bindTo(this.contextKeyService),this.treeFindOpen=Jot.bindTo(this.contextKeyService),this.treeStickyScrollFocused=AVe.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=Og(l),this.updateStyleOverrides(n);const d=()=>{const h=e.getFocus()[0];if(!h)return;const u=e.getNode(h);this.treeElementCanCollapse.set(u.collapsible&&!u.collapsed),this.treeElementHasParent.set(!!e.getParentElement(h)),this.treeElementCanExpand.set(u.collapsible&&u.collapsed),this.treeElementHasChild.set(!!e.getFirstElementChild(h))},c=new Set;c.add(SVe),c.add(NVe),this.disposables.push(this.contextKeyService,r.register(e),e.onDidChangeSelection(()=>{const h=e.getSelection(),u=e.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.hasSelectionOrFocus.set(h.length>0||u.length>0),this.hasMultiSelection.set(h.length>1),this.hasDoubleSelection.set(h.length===2)})}),e.onDidChangeFocus(()=>{const h=e.getSelection(),u=e.getFocus();this.hasSelectionOrFocus.set(h.length>0||u.length>0),d()}),e.onDidChangeCollapseState(d),e.onDidChangeModel(d),e.onDidChangeFindOpenState(h=>this.treeFindOpen.set(h)),e.onDidChangeStickyScrollFocused(h=>this.treeStickyScrollFocused.set(h)),l.onDidChangeConfiguration(h=>{let u={};if(h.affectsConfiguration(iR)&&(this._useAltAsMultipleSelectionModifier=Og(l)),h.affectsConfiguration(VL)){const m=l.getValue(VL);u={...u,indent:m}}if(h.affectsConfiguration(l5)&&t.renderIndentGuides===void 0){const m=l.getValue(l5);u={...u,renderIndentGuides:m}}if(h.affectsConfiguration(hp)){const m=!!l.getValue(hp);u={...u,smoothScrolling:m}}if(h.affectsConfiguration(dre)||h.affectsConfiguration(r5)){const m=VVe(l);u={...u,defaultFindMode:m}}if(h.affectsConfiguration(cre)||h.affectsConfiguration(r5)){const m=i();u={...u,typeNavigationMode:m}}if(h.affectsConfiguration(hre)){const m=WVe(l);u={...u,defaultFindMatchType:m}}if(h.affectsConfiguration(_h)&&t.horizontalScrolling===void 0){const m=!!l.getValue(_h);u={...u,horizontalScrolling:m}}if(h.affectsConfiguration(cp)){const m=!!l.getValue(cp);u={...u,scrollByPage:m}}if(h.affectsConfiguration(a5)&&t.expandOnlyOnTwistieClick===void 0&&(u={...u,expandOnlyOnTwistieClick:l.getValue(a5)==="doubleClick"}),h.affectsConfiguration(d5)){const m=l.getValue(d5);u={...u,enableStickyScroll:m}}if(h.affectsConfiguration(c5)){const m=Math.max(1,l.getValue(c5));u={...u,stickyScrollMaxItemCount:m}}if(h.affectsConfiguration(_g)){const m=l.getValue(_g);u={...u,mouseWheelScrollSensitivity:m}}if(h.affectsConfiguration(zg)){const m=l.getValue(zg);u={...u,fastScrollSensitivity:m}}Object.keys(u).length>0&&e.updateOptions(u)}),this.contextKeyService.onDidChangeContext(h=>{h.affectsSome(c)&&e.updateOptions({typeNavigationMode:i()})})),this.navigator=new _ot(e,{configurationService:l,...t}),this.disposables.push(this.navigator)}updateOptions(e){e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyleOverrides(e){this.tree.style(e?eR(e):$N)}dispose(){this.disposables=Ws(this.disposables)}};wN=cb([_s(4,fi),_s(5,iu),_s(6,Hi)],wN);const Oot=fo.as(rm.Configuration);Oot.registerConfiguration({id:"workbench",order:7,title:F("workbenchConfigurationTitle","Workbench"),type:"object",properties:{[iR]:{type:"string",enum:["ctrlCmd","alt"],markdownEnumDescriptions:[F("multiSelectModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),F("multiSelectModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:F({key:"multiSelectModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")},[wD]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:F({key:"openModeModifier",comment:["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]},"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[_h]:{type:"boolean",default:!1,description:F("horizontalScrolling setting","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")},[cp]:{type:"boolean",default:!1,description:F("list.scrollByPage","Controls whether clicks in the scrollbar scroll page by page.")},[VL]:{type:"number",default:8,minimum:4,maximum:40,description:F("tree indent setting","Controls tree indentation in pixels.")},[l5]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:F("render tree indent guides","Controls whether the tree should render indent guides.")},[hp]:{type:"boolean",default:!1,description:F("list smoothScrolling setting","Controls whether lists and trees have smooth scrolling.")},[_g]:{type:"number",default:1,markdownDescription:F("Mouse Wheel Scroll Sensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")},[zg]:{type:"number",default:5,markdownDescription:F("Fast Scroll Sensitivity","Scrolling speed multiplier when pressing `Alt`.")},[dre]:{type:"string",enum:["highlight","filter"],enumDescriptions:[F("defaultFindModeSettingKey.highlight","Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements."),F("defaultFindModeSettingKey.filter","Filter elements when searching.")],default:"highlight",description:F("defaultFindModeSettingKey","Controls the default find mode for lists and trees in the workbench.")},[r5]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[F("keyboardNavigationSettingKey.simple","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),F("keyboardNavigationSettingKey.highlight","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),F("keyboardNavigationSettingKey.filter","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:F("keyboardNavigationSettingKey","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter."),deprecated:!0,deprecationMessage:F("keyboardNavigationSettingKeyDeprecated","Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.")},[hre]:{type:"string",enum:["fuzzy","contiguous"],enumDescriptions:[F("defaultFindMatchTypeSettingKey.fuzzy","Use fuzzy matching when searching."),F("defaultFindMatchTypeSettingKey.contiguous","Use contiguous matching when searching.")],default:"fuzzy",description:F("defaultFindMatchTypeSettingKey","Controls the type of matching used when searching lists and trees in the workbench.")},[a5]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:F("expand mode","Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[d5]:{type:"boolean",default:!0,description:F("sticky scroll","Controls whether sticky scrolling is enabled in trees.")},[c5]:{type:"number",minimum:1,default:7,markdownDescription:F("sticky scroll maximum items","Controls the number of sticky elements displayed in the tree when {0} is enabled.","`#workbench.tree.enableStickyScroll#`")},[cre]:{type:"string",enum:["automatic","trigger"],default:"automatic",markdownDescription:F("typeNavigationMode2","Controls how type navigation works in lists and trees in the workbench. When set to `trigger`, type navigation begins once the `list.triggerTypeNavigation` command is run.")}}});class VF extends be{constructor(e,t){super(),this.options=t,this.text="",this.title="",this.highlights=[],this.didEverRender=!1,this.supportIcons=(t==null?void 0:t.supportIcons)??!1,this.domNode=nt(e,gt("span.monaco-highlighted-label"))}get element(){return this.domNode}set(e,t=[],i="",n){e||(e=""),n&&(e=VF.escapeNewLines(e,t)),!(this.didEverRender&&this.text===e&&this.title===i&&lc(this.highlights,t))&&(this.text=e,this.title=i,this.highlights=t,this.render())}render(){var i,n,o;const e=[];let t=0;for(const r of this.highlights){if(r.end===r.start)continue;if(t<r.start){const d=this.text.substring(t,r.start);this.supportIcons?e.push(...SF(d)):e.push(d),t=r.start}const l=this.text.substring(t,r.end),a=gt("span.highlight",void 0,...this.supportIcons?SF(l):[l]);r.extraClasses&&a.classList.add(...r.extraClasses),e.push(a),t=r.end}if(t<this.text.length){const r=this.text.substring(t);this.supportIcons?e.push(...SF(r)):e.push(r)}if(cl(this.domNode,...e),(n=(i=this.options)==null?void 0:i.hoverDelegate)!=null&&n.showNativeHover)this.domNode.title=this.title;else if(!this.customHover&&this.title!==""){const r=((o=this.options)==null?void 0:o.hoverDelegate)??Ka("mouse");this.customHover=this._register(Ap().setupManagedHover(r,this.domNode,this.title))}else this.customHover&&this.customHover.update(this.title);this.didEverRender=!0}static escapeNewLines(e,t){let i=0,n=0;return e.replace(/\r\n|\r|\n/g,(o,r)=>{n=o===`\r
- `?-1:0,r+=i;for(const l of t)l.end<=r||(l.start>=r&&(l.start+=n),l.end>=r&&(l.end+=n));return i+=n,"⏎"})}}class Rw{constructor(e){this._element=e}get element(){return this._element}set textContent(e){this.disposed||e===this._textContent||(this._textContent=e,this._element.textContent=e)}set classNames(e){this.disposed||lc(e,this._classNames)||(this._classNames=e,this._element.classList.value="",this._element.classList.add(...e))}set empty(e){this.disposed||e===this._empty||(this._empty=e,this._element.style.marginLeft=e?"0":"")}dispose(){this.disposed=!0}}class h5 extends be{constructor(e,t){super(),this.customHovers=new Map,this.creationOptions=t,this.domNode=this._register(new Rw(nt(e,gt(".monaco-icon-label")))),this.labelContainer=nt(this.domNode.element,gt(".monaco-icon-label-container")),this.nameContainer=nt(this.labelContainer,gt("span.monaco-icon-name-container")),t!=null&&t.supportHighlights||t!=null&&t.supportIcons?this.nameNode=this._register(new Hot(this.nameContainer,!!t.supportIcons)):this.nameNode=new jot(this.nameContainer),this.hoverDelegate=(t==null?void 0:t.hoverDelegate)??Ka("mouse")}get element(){return this.domNode.element}setLabel(e,t,i){const n=["monaco-icon-label"],o=["monaco-icon-label-container"];let r="";i&&(i.extraClasses&&n.push(...i.extraClasses),i.italic&&n.push("italic"),i.strikethrough&&n.push("strikethrough"),i.disabledCommand&&o.push("disabled"),i.title&&(typeof i.title=="string"?r+=i.title:r+=e));const l=this.domNode.element.querySelector(".monaco-icon-label-iconpath");if(i!=null&&i.iconPath){let a;!l||!Cr(l)?(a=gt(".monaco-icon-label-iconpath"),this.domNode.element.prepend(a)):a=l,a.style.backgroundImage=Kf(i==null?void 0:i.iconPath)}else l&&l.remove();if(this.domNode.classNames=n,this.domNode.element.setAttribute("aria-label",r),this.labelContainer.classList.value="",this.labelContainer.classList.add(...o),this.setupHover(i!=null&&i.descriptionTitle?this.labelContainer:this.element,i==null?void 0:i.title),this.nameNode.setLabel(e,i),t||this.descriptionNode){const a=this.getOrCreateDescriptionNode();a instanceof VF?(a.set(t||"",i?i.descriptionMatches:void 0,void 0,i==null?void 0:i.labelEscapeNewLines),this.setupHover(a.element,i==null?void 0:i.descriptionTitle)):(a.textContent=t&&(i!=null&&i.labelEscapeNewLines)?VF.escapeNewLines(t,[]):t||"",this.setupHover(a.element,(i==null?void 0:i.descriptionTitle)||""),a.empty=!t)}if(i!=null&&i.suffix||this.suffixNode){const a=this.getOrCreateSuffixNode();a.textContent=(i==null?void 0:i.suffix)??""}}setupHover(e,t){const i=this.customHovers.get(e);if(i&&(i.dispose(),this.customHovers.delete(e)),!t){e.removeAttribute("title");return}if(this.hoverDelegate.showNativeHover)(function(o,r){Vd(r)?o.title=Noe(r):r!=null&&r.markdownNotSupportedFallback?o.title=r.markdownNotSupportedFallback:o.removeAttribute("title")})(e,t);else{const n=Ap().setupManagedHover(this.hoverDelegate,e,t);n&&this.customHovers.set(e,n)}}dispose(){super.dispose();for(const e of this.customHovers.values())e.dispose();this.customHovers.clear()}getOrCreateSuffixNode(){if(!this.suffixNode){const e=this._register(new Rw(HHe(this.nameContainer,gt("span.monaco-icon-suffix-container"))));this.suffixNode=this._register(new Rw(nt(e.element,gt("span.label-suffix"))))}return this.suffixNode}getOrCreateDescriptionNode(){var e;if(!this.descriptionNode){const t=this._register(new Rw(nt(this.labelContainer,gt("span.monaco-icon-description-container"))));(e=this.creationOptions)!=null&&e.supportDescriptionHighlights?this.descriptionNode=this._register(new VF(nt(t.element,gt("span.label-description")),{supportIcons:!!this.creationOptions.supportIcons})):this.descriptionNode=this._register(new Rw(nt(t.element,gt("span.label-description"))))}return this.descriptionNode}}class jot{constructor(e){this.container=e,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(!(this.label===e&&lc(this.options,t)))if(this.label=e,this.options=t,typeof e=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=nt(this.container,gt("a.label-name",{id:t==null?void 0:t.domId}))),this.singleLabel.textContent=e;else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(let i=0;i<e.length;i++){const n=e[i],o=(t==null?void 0:t.domId)&&`${t==null?void 0:t.domId}_${i}`;nt(this.container,gt("a.label-name",{id:o,"data-icon-label-count":e.length,"data-icon-label-index":i,role:"treeitem"},n)),i<e.length-1&&nt(this.container,gt("span.label-separator",void 0,(t==null?void 0:t.separator)||"/"))}}}}function Pot(s,e,t){if(!t)return;let i=0;return s.map(n=>{const o={start:i,end:i+n.length},r=t.map(l=>Dl.intersect(o,l)).filter(l=>!Dl.isEmpty(l)).map(({start:l,end:a})=>({start:l-i,end:a-i}));return i=o.end+e.length,r})}class Hot extends be{constructor(e,t){super(),this.container=e,this.supportIcons=t,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(!(this.label===e&&lc(this.options,t)))if(this.label=e,this.options=t,typeof e=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=this._register(new VF(nt(this.container,gt("a.label-name",{id:t==null?void 0:t.domId})),{supportIcons:this.supportIcons}))),this.singleLabel.set(e,t==null?void 0:t.matches,void 0,t==null?void 0:t.labelEscapeNewLines);else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;const i=(t==null?void 0:t.separator)||"/",n=Pot(e,i,t==null?void 0:t.matches);for(let o=0;o<e.length;o++){const r=e[o],l=n?n[o]:void 0,a=(t==null?void 0:t.domId)&&`${t==null?void 0:t.domId}_${o}`,d=gt("a.label-name",{id:a,"data-icon-label-count":e.length,"data-icon-label-index":o,role:"treeitem"});this._register(new VF(nt(this.container,d),{supportIcons:this.supportIcons})).set(r,l,void 0,t==null?void 0:t.labelEscapeNewLines),o<e.length-1&&nt(d,gt("span.label-separator",void 0,i))}}}}const bI=gt,yVe={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class WM extends be{constructor(e,t,i){super(),this.os=t,this.keyElements=new Set,this.options=i||Object.create(null);const n=this.options.keybindingLabelForeground;this.domNode=nt(e,bI(".monaco-keybinding")),n&&(this.domNode.style.color=n),this.hover=this._register(Ap().setupManagedHover(Ka("mouse"),this.domNode,"")),this.didEverRender=!1,e.appendChild(this.domNode)}get element(){return this.domNode}set(e,t){this.didEverRender&&this.keybinding===e&&WM.areSame(this.matches,t)||(this.keybinding=e,this.matches=t,this.render())}render(){if(this.clear(),this.keybinding){const e=this.keybinding.getChords();e[0]&&this.renderChord(this.domNode,e[0],this.matches?this.matches.firstPart:null);for(let i=1;i<e.length;i++)nt(this.domNode,bI("span.monaco-keybinding-key-chord-separator",void 0," ")),this.renderChord(this.domNode,e[i],this.matches?this.matches.chordPart:null);const t=this.options.disableTitle??!1?void 0:this.keybinding.getAriaLabel()||void 0;this.hover.update(t),this.domNode.setAttribute("aria-label",t||"")}else this.options&&this.options.renderUnboundKeybindings&&this.renderUnbound(this.domNode);this.didEverRender=!0}clear(){dl(this.domNode),this.keyElements.clear()}renderChord(e,t,i){const n=Moe.modifierLabels[this.os];t.ctrlKey&&this.renderKey(e,n.ctrlKey,!!(i!=null&&i.ctrlKey),n.separator),t.shiftKey&&this.renderKey(e,n.shiftKey,!!(i!=null&&i.shiftKey),n.separator),t.altKey&&this.renderKey(e,n.altKey,!!(i!=null&&i.altKey),n.separator),t.metaKey&&this.renderKey(e,n.metaKey,!!(i!=null&&i.metaKey),n.separator);const o=t.keyLabel;o&&this.renderKey(e,o,!!(i!=null&&i.keyCode),"")}renderKey(e,t,i,n){nt(e,this.createKeyElement(t,i?".highlight":"")),n&&nt(e,bI("span.monaco-keybinding-key-separator",void 0,n))}renderUnbound(e){nt(e,this.createKeyElement(F("unbound","Unbound")))}createKeyElement(e,t=""){const i=bI("span.monaco-keybinding-key"+t,void 0,e);return this.keyElements.add(i),this.options.keybindingLabelBackground&&(i.style.backgroundColor=this.options.keybindingLabelBackground),this.options.keybindingLabelBorder&&(i.style.borderColor=this.options.keybindingLabelBorder),this.options.keybindingLabelBottomBorder&&(i.style.borderBottomColor=this.options.keybindingLabelBottomBorder),this.options.keybindingLabelShadow&&(i.style.boxShadow=`inset 0 -1px 0 ${this.options.keybindingLabelShadow}`),i}static areSame(e,t){return e===t||!e&&!t?!0:!!e&&!!t&&lc(e.firstPart,t.firstPart)&&lc(e.chordPart,t.chordPart)}}const $me=new qu(()=>{const s=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:s,collatorIsNumeric:s.resolvedOptions().numeric}});function Kot(s,e,t=!1){const i=s||"",n=e||"",o=$me.value.collator.compare(i,n);return $me.value.collatorIsNumeric&&o===0&&i!==n?i<n?-1:1:o}function qot(s,e,t){const i=s.toLowerCase(),n=e.toLowerCase(),o=$ot(s,e,t);if(o)return o;const r=i.endsWith(t),l=n.endsWith(t);if(r!==l)return r?-1:1;const a=Kot(i,n);return a!==0?a:i.localeCompare(n)}function $ot(s,e,t){const i=s.toLowerCase(),n=e.toLowerCase(),o=i.startsWith(t),r=n.startsWith(t);if(o!==r)return o?-1:1;if(o&&r){if(i.length<n.length)return-1;if(i.length>n.length)return 1}return 0}var R9=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},uq=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},mq;const Wm=gt;class QVe{constructor(e,t,i){this.index=e,this.hasCheckbox=t,this._hidden=!1,this._init=new qu(()=>{const n=i.label??"",o=MT(n).text.trim(),r=i.ariaLabel||[n,this.saneDescription,this.saneDetail].map(l=>s$e(l)).filter(l=>!!l).join(", ");return{saneLabel:n,saneSortLabel:o,saneAriaLabel:r}}),this._saneDescription=i.description,this._saneTooltip=i.tooltip}get saneLabel(){return this._init.value.saneLabel}get saneSortLabel(){return this._init.value.saneSortLabel}get saneAriaLabel(){return this._init.value.saneAriaLabel}get element(){return this._element}set element(e){this._element=e}get hidden(){return this._hidden}set hidden(e){this._hidden=e}get saneDescription(){return this._saneDescription}set saneDescription(e){this._saneDescription=e}get saneDetail(){return this._saneDetail}set saneDetail(e){this._saneDetail=e}get saneTooltip(){return this._saneTooltip}set saneTooltip(e){this._saneTooltip=e}get labelHighlights(){return this._labelHighlights}set labelHighlights(e){this._labelHighlights=e}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(e){this._descriptionHighlights=e}get detailHighlights(){return this._detailHighlights}set detailHighlights(e){this._detailHighlights=e}}class Ul extends QVe{constructor(e,t,i,n,o,r){var l,a,d;super(e,t,o),this.fireButtonTriggered=i,this._onChecked=n,this.item=o,this._separator=r,this._checked=!1,this.onChecked=t?Ut.map(Ut.filter(this._onChecked.event,c=>c.element===this),c=>c.checked):Ut.None,this._saneDetail=o.detail,this._labelHighlights=(l=o.highlights)==null?void 0:l.label,this._descriptionHighlights=(a=o.highlights)==null?void 0:a.description,this._detailHighlights=(d=o.highlights)==null?void 0:d.detail}get separator(){return this._separator}set separator(e){this._separator=e}get checked(){return this._checked}set checked(e){e!==this._checked&&(this._checked=e,this._onChecked.fire({element:this,checked:e}))}get checkboxDisabled(){return!!this.item.disabled}}var sg;(function(s){s[s.NONE=0]="NONE",s[s.MOUSE_HOVER=1]="MOUSE_HOVER",s[s.ACTIVE_ITEM=2]="ACTIVE_ITEM"})(sg||(sg={}));class dZ extends QVe{constructor(e,t,i){super(e,!1,i),this.fireSeparatorButtonTriggered=t,this.separator=i,this.children=new Array,this.focusInsideSeparator=sg.NONE}}class ert{getHeight(e){return e instanceof dZ?30:e.saneDetail?44:22}getTemplateId(e){return e instanceof Ul?u5.ID:m5.ID}}class trt{getWidgetAriaLabel(){return F("quickInput","Quick Input")}getAriaLabel(e){var t;return(t=e.separator)!=null&&t.label?`${e.saneAriaLabel}, ${e.separator.label}`:e.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(e){return e.hasCheckbox?"checkbox":"option"}isChecked(e){if(!(!e.hasCheckbox||!(e instanceof Ul)))return{get value(){return e.checked},onDidChange:t=>e.onChecked(()=>t())}}}class MVe{constructor(e){this.hoverDelegate=e}renderTemplate(e){const t=Object.create(null);t.toDisposeElement=new De,t.toDisposeTemplate=new De,t.entry=nt(e,Wm(".quick-input-list-entry"));const i=nt(t.entry,Wm("label.quick-input-list-label"));t.toDisposeTemplate.add(Fo(i,ut.CLICK,d=>{t.checkbox.offsetParent||d.preventDefault()})),t.checkbox=nt(i,Wm("input.quick-input-list-checkbox")),t.checkbox.type="checkbox";const n=nt(i,Wm(".quick-input-list-rows")),o=nt(n,Wm(".quick-input-list-row")),r=nt(n,Wm(".quick-input-list-row"));t.label=new h5(o,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),t.toDisposeTemplate.add(t.label),t.icon=Dse(t.label.element,Wm(".quick-input-list-icon"));const l=nt(o,Wm(".quick-input-list-entry-keybinding"));t.keybinding=new WM(l,rc),t.toDisposeTemplate.add(t.keybinding);const a=nt(r,Wm(".quick-input-list-label-meta"));return t.detail=new h5(a,{supportHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),t.toDisposeTemplate.add(t.detail),t.separator=nt(t.entry,Wm(".quick-input-list-separator")),t.actionBar=new ih(t.entry,this.hoverDelegate?{hoverDelegate:this.hoverDelegate}:void 0),t.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),t.toDisposeTemplate.add(t.actionBar),t}disposeTemplate(e){e.toDisposeElement.dispose(),e.toDisposeTemplate.dispose()}disposeElement(e,t,i){i.toDisposeElement.clear(),i.actionBar.clear()}}var uQ;let u5=(uQ=class extends MVe{constructor(e,t){super(e),this.themeService=t,this._itemsWithSeparatorsFrequency=new Map}get templateId(){return mq.ID}renderTemplate(e){const t=super.renderTemplate(e);return t.toDisposeTemplate.add(Fo(t.checkbox,ut.CHANGE,i=>{t.element.checked=t.checkbox.checked})),t}renderElement(e,t,i){var u;const n=e.element;i.element=n,n.element=i.entry??void 0;const o=n.item;i.checkbox.checked=n.checked,i.toDisposeElement.add(n.onChecked(m=>i.checkbox.checked=m)),i.checkbox.disabled=n.checkboxDisabled;const{labelHighlights:r,descriptionHighlights:l,detailHighlights:a}=n;if(o.iconPath){const m=yy(this.themeService.getColorTheme().type)?o.iconPath.dark:o.iconPath.light??o.iconPath.dark,p=ni.revive(m);i.icon.className="quick-input-list-icon",i.icon.style.backgroundImage=Kf(p)}else i.icon.style.backgroundImage="",i.icon.className=o.iconClass?`quick-input-list-icon ${o.iconClass}`:"";let d;!n.saneTooltip&&n.saneDescription&&(d={markdown:{value:n.saneDescription,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDescription});const c={matches:r||[],descriptionTitle:d,descriptionMatches:l||[],labelEscapeNewLines:!0};if(c.extraClasses=o.iconClasses,c.italic=o.italic,c.strikethrough=o.strikethrough,i.entry.classList.remove("quick-input-list-separator-as-item"),i.label.setLabel(n.saneLabel,n.saneDescription,c),i.keybinding.set(o.keybinding),n.saneDetail){let m;n.saneTooltip||(m={markdown:{value:n.saneDetail,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDetail}),i.detail.element.style.display="",i.detail.setLabel(n.saneDetail,void 0,{matches:a,title:m,labelEscapeNewLines:!0})}else i.detail.element.style.display="none";(u=n.separator)!=null&&u.label?(i.separator.textContent=n.separator.label,i.separator.style.display="",this.addItemWithSeparator(n)):i.separator.style.display="none",i.entry.classList.toggle("quick-input-list-separator-border",!!n.separator);const h=o.buttons;h&&h.length?(i.actionBar.push(h.map((m,p)=>l2(m,`id-${p}`,()=>n.fireButtonTriggered({button:m,item:n.item}))),{icon:!0,label:!1}),i.entry.classList.add("has-actions")):i.entry.classList.remove("has-actions")}disposeElement(e,t,i){this.removeItemWithSeparator(e.element),super.disposeElement(e,t,i)}isItemWithSeparatorVisible(e){return this._itemsWithSeparatorsFrequency.has(e)}addItemWithSeparator(e){this._itemsWithSeparatorsFrequency.set(e,(this._itemsWithSeparatorsFrequency.get(e)||0)+1)}removeItemWithSeparator(e){const t=this._itemsWithSeparatorsFrequency.get(e)||0;t>1?this._itemsWithSeparatorsFrequency.set(e,t-1):this._itemsWithSeparatorsFrequency.delete(e)}},mq=uQ,uQ.ID="quickpickitem",uQ);u5=mq=R9([uq(1,Rr)],u5);const z_=class z_ extends MVe{constructor(){super(...arguments),this._visibleSeparatorsFrequency=new Map}get templateId(){return z_.ID}get visibleSeparators(){return[...this._visibleSeparatorsFrequency.keys()]}isSeparatorVisible(e){return this._visibleSeparatorsFrequency.has(e)}renderTemplate(e){const t=super.renderTemplate(e);return t.checkbox.style.display="none",t}renderElement(e,t,i){const n=e.element;i.element=n,n.element=i.entry??void 0,n.element.classList.toggle("focus-inside",!!n.focusInsideSeparator);const o=n.separator,{labelHighlights:r,descriptionHighlights:l,detailHighlights:a}=n;i.icon.style.backgroundImage="",i.icon.className="";let d;!n.saneTooltip&&n.saneDescription&&(d={markdown:{value:n.saneDescription,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDescription});const c={matches:r||[],descriptionTitle:d,descriptionMatches:l||[],labelEscapeNewLines:!0};if(i.entry.classList.add("quick-input-list-separator-as-item"),i.label.setLabel(n.saneLabel,n.saneDescription,c),n.saneDetail){let u;n.saneTooltip||(u={markdown:{value:n.saneDetail,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDetail}),i.detail.element.style.display="",i.detail.setLabel(n.saneDetail,void 0,{matches:a,title:u,labelEscapeNewLines:!0})}else i.detail.element.style.display="none";i.separator.style.display="none",i.entry.classList.add("quick-input-list-separator-border");const h=o.buttons;h&&h.length?(i.actionBar.push(h.map((u,m)=>l2(u,`id-${m}`,()=>n.fireSeparatorButtonTriggered({button:u,separator:n.separator}))),{icon:!0,label:!1}),i.entry.classList.add("has-actions")):i.entry.classList.remove("has-actions"),this.addSeparator(n)}disposeElement(e,t,i){var n;this.removeSeparator(e.element),this.isSeparatorVisible(e.element)||(n=e.element.element)==null||n.classList.remove("focus-inside"),super.disposeElement(e,t,i)}addSeparator(e){this._visibleSeparatorsFrequency.set(e,(this._visibleSeparatorsFrequency.get(e)||0)+1)}removeSeparator(e){const t=this._visibleSeparatorsFrequency.get(e)||0;t>1?this._visibleSeparatorsFrequency.set(e,t-1):this._visibleSeparatorsFrequency.delete(e)}};z_.ID="quickpickseparator";let m5=z_,WL=class extends be{constructor(e,t,i,n,o,r){super(),this.parent=e,this.hoverDelegate=t,this.linkOpenerDelegate=i,this.accessibilityService=r,this._onKeyDown=new fe,this._onLeave=new fe,this.onLeave=this._onLeave.event,this._visibleCountObservable=Pi("VisibleCount",0),this.onChangedVisibleCount=Ut.fromObservable(this._visibleCountObservable,this._store),this._allVisibleCheckedObservable=Pi("AllVisibleChecked",!1),this.onChangedAllVisibleChecked=Ut.fromObservable(this._allVisibleCheckedObservable,this._store),this._checkedCountObservable=Pi("CheckedCount",0),this.onChangedCheckedCount=Ut.fromObservable(this._checkedCountObservable,this._store),this._checkedElementsObservable=W6({equalsFn:lo},new Array),this.onChangedCheckedElements=Ut.fromObservable(this._checkedElementsObservable,this._store),this._onButtonTriggered=new fe,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new fe,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._elementChecked=new fe,this._elementCheckedEventBufferer=new Yv,this._hasCheckboxes=!1,this._inputElements=new Array,this._elementTree=new Array,this._itemElements=new Array,this._elementDisposable=this._register(new De),this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._shouldLoop=!0,this._container=nt(this.parent,Wm(".quick-input-list")),this._separatorRenderer=new m5(t),this._itemRenderer=o.createInstance(u5,t),this._tree=this._register(o.createInstance(cq,"QuickInput",this._container,new ert,[this._itemRenderer,this._separatorRenderer],{filter:{filter(l){return l.hidden?0:l instanceof dZ?2:1}},sorter:{compare:(l,a)=>{if(!this.sortByLabel||!this._lastQueryString)return 0;const d=this._lastQueryString.toLowerCase();return nrt(l,a,d)}},accessibilityProvider:new trt,setRowLineHeight:!1,multipleSelectionSupport:!1,hideTwistiesOfChildlessElements:!0,renderIndentGuides:Dy.None,findWidgetEnabled:!1,indent:0,horizontalScrolling:!1,allowNonCollapsibleParents:!0,alwaysConsumeMouseWheel:!0})),this._tree.getHTMLElement().id=n,this._registerListeners()}get onDidChangeFocus(){return Ut.map(this._tree.onDidChangeFocus,e=>e.elements.filter(t=>t instanceof Ul).map(t=>t.item),this._store)}get onDidChangeSelection(){return Ut.map(this._tree.onDidChangeSelection,e=>({items:e.elements.filter(t=>t instanceof Ul).map(t=>t.item),event:e.browserEvent}),this._store)}get displayed(){return this._container.style.display!=="none"}set displayed(e){this._container.style.display=e?"":"none"}get scrollTop(){return this._tree.scrollTop}set scrollTop(e){this._tree.scrollTop=e}get ariaLabel(){return this._tree.ariaLabel}set ariaLabel(e){this._tree.ariaLabel=e??""}set enabled(e){this._tree.getHTMLElement().style.pointerEvents=e?"":"none"}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(e){this._matchOnLabelMode=e}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e}get shouldLoop(){return this._shouldLoop}set shouldLoop(e){this._shouldLoop=e}_registerListeners(){this._registerOnKeyDown(),this._registerOnContainerClick(),this._registerOnMouseMiddleClick(),this._registerOnTreeModelChanged(),this._registerOnElementChecked(),this._registerOnContextMenu(),this._registerHoverListeners(),this._registerSelectionChangeListener(),this._registerSeparatorActionShowingListeners()}_registerOnKeyDown(){this._register(this._tree.onKeyDown(e=>{const t=new Ts(e);switch(t.keyCode){case 10:this.toggleCheckbox();break}this._onKeyDown.fire(t)}))}_registerOnContainerClick(){this._register(Te(this._container,ut.CLICK,e=>{(e.x||e.y)&&this._onLeave.fire()}))}_registerOnMouseMiddleClick(){this._register(Te(this._container,ut.AUXCLICK,e=>{e.button===1&&this._onLeave.fire()}))}_registerOnTreeModelChanged(){this._register(this._tree.onDidChangeModel(()=>{const e=this._itemElements.filter(t=>!t.hidden).length;this._visibleCountObservable.set(e,void 0),this._hasCheckboxes&&this._updateCheckedObservables()}))}_registerOnElementChecked(){this._register(this._elementCheckedEventBufferer.wrapEvent(this._elementChecked.event,(e,t)=>t)(e=>this._updateCheckedObservables()))}_registerOnContextMenu(){this._register(this._tree.onContextMenu(e=>{e.element&&(e.browserEvent.preventDefault(),this._tree.setSelection([e.element]))}))}_registerHoverListeners(){const e=this._register(new YZe(this.hoverDelegate.delay));this._register(this._tree.onMouseOver(async t=>{var i;if(hhe(t.browserEvent.target)){e.cancel();return}if(!(!hhe(t.browserEvent.relatedTarget)&&wr(t.browserEvent.relatedTarget,(i=t.element)==null?void 0:i.element)))try{await e.trigger(async()=>{t.element instanceof Ul&&this.showHover(t.element)})}catch(n){if(!$h(n))throw n}})),this._register(this._tree.onMouseOut(t=>{var i;wr(t.browserEvent.relatedTarget,(i=t.element)==null?void 0:i.element)||e.cancel()}))}_registerSeparatorActionShowingListeners(){this._register(this._tree.onDidChangeFocus(e=>{const t=e.elements[0]?this._tree.getParentElement(e.elements[0]):null;for(const i of this._separatorRenderer.visibleSeparators){const n=i===t;!!(i.focusInsideSeparator&sg.ACTIVE_ITEM)!==n&&(n?i.focusInsideSeparator|=sg.ACTIVE_ITEM:i.focusInsideSeparator&=~sg.ACTIVE_ITEM,this._tree.rerender(i))}})),this._register(this._tree.onMouseOver(e=>{const t=e.element?this._tree.getParentElement(e.element):null;for(const i of this._separatorRenderer.visibleSeparators){if(i!==t)continue;!!(i.focusInsideSeparator&sg.MOUSE_HOVER)||(i.focusInsideSeparator|=sg.MOUSE_HOVER,this._tree.rerender(i))}})),this._register(this._tree.onMouseOut(e=>{const t=e.element?this._tree.getParentElement(e.element):null;for(const i of this._separatorRenderer.visibleSeparators){if(i!==t)continue;!!(i.focusInsideSeparator&sg.MOUSE_HOVER)&&(i.focusInsideSeparator&=~sg.MOUSE_HOVER,this._tree.rerender(i))}}))}_registerSelectionChangeListener(){this._register(this._tree.onDidChangeSelection(e=>{const t=e.elements.filter(i=>i instanceof Ul);t.length!==e.elements.length&&(e.elements.length===1&&e.elements[0]instanceof dZ&&(this._tree.setFocus([e.elements[0].children[0]]),this._tree.reveal(e.elements[0],0)),this._tree.setSelection(t))}))}setAllVisibleChecked(e){this._elementCheckedEventBufferer.bufferEvents(()=>{this._itemElements.forEach(t=>{!t.hidden&&!t.checkboxDisabled&&(t.checked=e)})})}setElements(e){this._elementDisposable.clear(),this._lastQueryString=void 0,this._inputElements=e,this._hasCheckboxes=this.parent.classList.contains("show-checkboxes");let t;this._itemElements=new Array,this._elementTree=e.reduce((i,n,o)=>{let r;if(n.type==="separator"){if(!n.buttons)return i;t=new dZ(o,l=>this._onSeparatorButtonTriggered.fire(l),n),r=t}else{const l=o>0?e[o-1]:void 0;let a;l&&l.type==="separator"&&!l.buttons&&(t=void 0,a=l);const d=new Ul(o,this._hasCheckboxes,c=>this._onButtonTriggered.fire(c),this._elementChecked,n,a);if(this._itemElements.push(d),t)return t.children.push(d),i;r=d}return i.push(r),i},new Array),this._setElementsToTree(this._elementTree),this.accessibilityService.isScreenReaderOptimized()&&setTimeout(()=>{const i=this._tree.getHTMLElement().querySelector(".monaco-list-row.focused"),n=i==null?void 0:i.parentNode;if(i&&n){const o=i.nextSibling;i.remove(),n.insertBefore(i,o)}},0)}setFocusedElements(e){const t=e.map(i=>this._itemElements.find(n=>n.item===i)).filter(i=>!!i).filter(i=>!i.hidden);if(this._tree.setFocus(t),e.length>0){const i=this._tree.getFocus()[0];i&&this._tree.reveal(i)}}getActiveDescendant(){return this._tree.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(e){const t=e.map(i=>this._itemElements.find(n=>n.item===i)).filter(i=>!!i);this._tree.setSelection(t)}getCheckedElements(){return this._itemElements.filter(e=>e.checked).map(e=>e.item)}setCheckedElements(e){this._elementCheckedEventBufferer.bufferEvents(()=>{const t=new Set;for(const i of e)t.add(i);for(const i of this._itemElements)i.checked=t.has(i.item)})}focus(e){var t;if(this._itemElements.length)switch(e===Gs.Second&&this._itemElements.length<2&&(e=Gs.First),e){case Gs.First:this._tree.scrollTop=0,this._tree.focusFirst(void 0,i=>i.element instanceof Ul);break;case Gs.Second:{this._tree.scrollTop=0;let i=!1;this._tree.focusFirst(void 0,n=>n.element instanceof Ul?i?!0:(i=!i,!1):!1);break}case Gs.Last:this._tree.scrollTop=this._tree.scrollHeight,this._tree.focusLast(void 0,i=>i.element instanceof Ul);break;case Gs.Next:{const i=this._tree.getFocus();this._tree.focusNext(void 0,this._shouldLoop,void 0,o=>o.element instanceof Ul?(this._tree.reveal(o.element),!0):!1);const n=this._tree.getFocus();i.length&&i[0]===n[0]&&i[0]===this._itemElements[this._itemElements.length-1]&&this._onLeave.fire();break}case Gs.Previous:{const i=this._tree.getFocus();this._tree.focusPrevious(void 0,this._shouldLoop,void 0,o=>{if(!(o.element instanceof Ul))return!1;const r=this._tree.getParentElement(o.element);return r===null||r.children[0]!==o.element?this._tree.reveal(o.element):this._tree.reveal(r),!0});const n=this._tree.getFocus();i.length&&i[0]===n[0]&&i[0]===this._itemElements[0]&&this._onLeave.fire();break}case Gs.NextPage:this._tree.focusNextPage(void 0,i=>i.element instanceof Ul?(this._tree.reveal(i.element),!0):!1);break;case Gs.PreviousPage:this._tree.focusPreviousPage(void 0,i=>{if(!(i.element instanceof Ul))return!1;const n=this._tree.getParentElement(i.element);return n===null||n.children[0]!==i.element?this._tree.reveal(i.element):this._tree.reveal(n),!0});break;case Gs.NextSeparator:{let i=!1;const n=this._tree.getFocus()[0];this._tree.focusNext(void 0,!0,void 0,r=>{if(i)return!0;if(r.element instanceof dZ)i=!0,this._separatorRenderer.isSeparatorVisible(r.element)?this._tree.reveal(r.element.children[0]):this._tree.reveal(r.element,0);else if(r.element instanceof Ul){if(r.element.separator)return this._itemRenderer.isItemWithSeparatorVisible(r.element)?this._tree.reveal(r.element):this._tree.reveal(r.element,0),!0;if(r.element===this._elementTree[0])return this._tree.reveal(r.element,0),!0}return!1});const o=this._tree.getFocus()[0];n===o&&(this._tree.scrollTop=this._tree.scrollHeight,this._tree.focusLast(void 0,r=>r.element instanceof Ul));break}case Gs.PreviousSeparator:{let i,n=!!((t=this._tree.getFocus()[0])!=null&&t.separator);this._tree.focusPrevious(void 0,!0,void 0,o=>{if(o.element instanceof dZ)n?i||(this._separatorRenderer.isSeparatorVisible(o.element)?this._tree.reveal(o.element):this._tree.reveal(o.element,0),i=o.element.children[0]):n=!0;else if(o.element instanceof Ul&&!i){if(o.element.separator)this._itemRenderer.isItemWithSeparatorVisible(o.element)?this._tree.reveal(o.element):this._tree.reveal(o.element,0),i=o.element;else if(o.element===this._elementTree[0])return this._tree.reveal(o.element,0),!0}return!1}),i&&this._tree.setFocus([i]);break}}}clearFocus(){this._tree.setFocus([])}domFocus(){this._tree.domFocus()}layout(e){this._tree.getHTMLElement().style.maxHeight=e?`${Math.floor(e/44)*44+6}px`:"",this._tree.layout()}filter(e){if(this._lastQueryString=e,!(this._sortByLabel||this._matchOnLabel||this._matchOnDescription||this._matchOnDetail))return this._tree.layout(),!1;const t=e;if(e=e.trim(),!e||!(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))this._itemElements.forEach(i=>{i.labelHighlights=void 0,i.descriptionHighlights=void 0,i.detailHighlights=void 0,i.hidden=!1;const n=i.index&&this._inputElements[i.index-1];i.item&&(i.separator=n&&n.type==="separator"&&!n.buttons?n:void 0)});else{let i;this._itemElements.forEach(n=>{let o;this.matchOnLabelMode==="fuzzy"?o=this.matchOnLabel?bP(e,MT(n.saneLabel))??void 0:void 0:o=this.matchOnLabel?irt(t,MT(n.saneLabel))??void 0:void 0;const r=this.matchOnDescription?bP(e,MT(n.saneDescription||""))??void 0:void 0,l=this.matchOnDetail?bP(e,MT(n.saneDetail||""))??void 0:void 0;if(o||r||l?(n.labelHighlights=o,n.descriptionHighlights=r,n.detailHighlights=l,n.hidden=!1):(n.labelHighlights=void 0,n.descriptionHighlights=void 0,n.detailHighlights=void 0,n.hidden=n.item?!n.item.alwaysShow:!0),n.item?n.separator=void 0:n.separator&&(n.hidden=!0),!this.sortByLabel){const a=n.index&&this._inputElements[n.index-1]||void 0;(a==null?void 0:a.type)==="separator"&&!a.buttons&&(i=a),i&&!n.hidden&&(n.separator=i,i=void 0)}})}return this._setElementsToTree(this._sortByLabel&&e?this._itemElements:this._elementTree),this._tree.layout(),!0}toggleCheckbox(){this._elementCheckedEventBufferer.bufferEvents(()=>{const e=this._tree.getFocus().filter(i=>i instanceof Ul),t=this._allVisibleChecked(e);for(const i of e)i.checkboxDisabled||(i.checked=!t)})}style(e){this._tree.style(e)}toggleHover(){const e=this._tree.getFocus()[0];if(!(e!=null&&e.saneTooltip)||!(e instanceof Ul))return;if(this._lastHover&&!this._lastHover.isDisposed){this._lastHover.dispose();return}this.showHover(e);const t=new De;t.add(this._tree.onDidChangeFocus(i=>{i.elements[0]instanceof Ul&&this.showHover(i.elements[0])})),this._lastHover&&t.add(this._lastHover),this._elementDisposable.add(t)}_setElementsToTree(e){const t=new Array;for(const i of e)i instanceof dZ?t.push({element:i,collapsible:!1,collapsed:!1,children:i.children.map(n=>({element:n,collapsible:!1,collapsed:!1}))}):t.push({element:i,collapsible:!1,collapsed:!1});this._tree.setChildren(null,t)}_allVisibleChecked(e,t=!0){for(let i=0,n=e.length;i<n;i++){const o=e[i];if(!o.hidden)if(o.checked)t=!0;else return!1}return t}_updateCheckedObservables(){po(e=>{this._allVisibleCheckedObservable.set(this._allVisibleChecked(this._itemElements,!1),e);const t=this._itemElements.filter(i=>i.checked).length;this._checkedCountObservable.set(t,e),this._checkedElementsObservable.set(this.getCheckedElements(),e)})}showHover(e){var t,i,n;this._lastHover&&!this._lastHover.isDisposed&&((i=(t=this.hoverDelegate).onDidHideHover)==null||i.call(t),(n=this._lastHover)==null||n.dispose()),!(!e.element||!e.saneTooltip)&&(this._lastHover=this.hoverDelegate.showHover({content:e.saneTooltip,target:e.element,linkHandler:o=>{this.linkOpenerDelegate(o)},appearance:{showPointer:!0},container:this._container,position:{hoverPosition:1}},!1))}};R9([Po],WL.prototype,"onDidChangeFocus",null);R9([Po],WL.prototype,"onDidChangeSelection",null);WL=R9([uq(4,ti),uq(5,Fc)],WL);function irt(s,e){const{text:t,iconOffsets:i}=e;if(!i||i.length===0)return epe(s,t);const n=_v(t," "),o=t.length-n.length,r=epe(s,n);if(r)for(const l of r){const a=i[l.start+o]+o;l.start+=a,l.end+=a}return r}function epe(s,e){const t=e.toLowerCase().indexOf(s.toLowerCase());return t!==-1?[{start:t,end:t+s.length}]:null}function nrt(s,e,t){const i=s.labelHighlights||[],n=e.labelHighlights||[];return i.length&&!n.length?-1:!i.length&&n.length?1:i.length===0&&n.length===0?0:qot(s.saneSortLabel,e.saneSortLabel,t)}const wVe={weight:200,when:Ge.and(Ge.equals(eVe,"quickPick"),Tst),metadata:{description:F("quickPick","Used while in the context of the quick pick. If you change one keybinding for this command, you should change all of the other keybindings (modifier variants) of this command as well.")}};function ec(s,e={}){Oa.registerCommandAndKeybindingRule({...wVe,...s,secondary:srt(s.primary,s.secondary??[],e)})}const p5=hn?256:2048;function srt(s,e,t={}){return t.withAltMod&&e.push(512+s),t.withCtrlMod&&(e.push(p5+s),t.withAltMod&&e.push(512+p5+s)),t.withCmdMod&&hn&&(e.push(2048+s),t.withCtrlMod&&e.push(2048+256+s),t.withAltMod&&(e.push(2048+512+s),t.withCtrlMod&&e.push(2048+512+256+s))),e}function xc(s,e){return t=>{const i=t.get(tu).currentQuickInput;if(i)return e&&i.quickNavigate?i.focus(e):i.focus(s)}}ec({id:"quickInput.pageNext",primary:12,handler:xc(Gs.NextPage)},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});ec({id:"quickInput.pagePrevious",primary:11,handler:xc(Gs.PreviousPage)},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});ec({id:"quickInput.first",primary:p5+14,handler:xc(Gs.First)},{withAltMod:!0,withCmdMod:!0});ec({id:"quickInput.last",primary:p5+13,handler:xc(Gs.Last)},{withAltMod:!0,withCmdMod:!0});ec({id:"quickInput.next",primary:18,handler:xc(Gs.Next)},{withCtrlMod:!0});ec({id:"quickInput.previous",primary:16,handler:xc(Gs.Previous)},{withCtrlMod:!0});const tpe=F("quickInput.nextSeparatorWithQuickAccessFallback","If we're in quick access mode, this will navigate to the next item. If we are not in quick access mode, this will navigate to the next separator."),ipe=F("quickInput.previousSeparatorWithQuickAccessFallback","If we're in quick access mode, this will navigate to the previous item. If we are not in quick access mode, this will navigate to the previous separator.");hn?(ec({id:"quickInput.nextSeparatorWithQuickAccessFallback",primary:2048+18,handler:xc(Gs.NextSeparator,Gs.Next),metadata:{description:tpe}}),ec({id:"quickInput.nextSeparator",primary:2048+512+18,secondary:[2048+256+18],handler:xc(Gs.NextSeparator)},{withCtrlMod:!0}),ec({id:"quickInput.previousSeparatorWithQuickAccessFallback",primary:2048+16,handler:xc(Gs.PreviousSeparator,Gs.Previous),metadata:{description:ipe}}),ec({id:"quickInput.previousSeparator",primary:2048+512+16,secondary:[2048+256+16],handler:xc(Gs.PreviousSeparator)},{withCtrlMod:!0})):(ec({id:"quickInput.nextSeparatorWithQuickAccessFallback",primary:512+18,handler:xc(Gs.NextSeparator,Gs.Next),metadata:{description:tpe}}),ec({id:"quickInput.nextSeparator",primary:2048+512+18,handler:xc(Gs.NextSeparator)}),ec({id:"quickInput.previousSeparatorWithQuickAccessFallback",primary:512+16,handler:xc(Gs.PreviousSeparator,Gs.Previous),metadata:{description:ipe}}),ec({id:"quickInput.previousSeparator",primary:2048+512+16,handler:xc(Gs.PreviousSeparator)}));ec({id:"quickInput.acceptInBackground",when:Ge.and(wVe.when,Ge.or(UVe.negate(),Lst)),primary:17,weight:200+50,handler:s=>{const e=s.get(tu).currentQuickInput;e==null||e.accept(!0)}},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});var ort=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},DP=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},pq;const Xd=gt;var mQ;let gq=(mQ=class extends be{get currentQuickInput(){return this.controller??void 0}get container(){return this._container}constructor(e,t,i,n){super(),this.options=e,this.layoutService=t,this.instantiationService=i,this.contextKeyService=n,this.enabled=!0,this.onDidAcceptEmitter=this._register(new fe),this.onDidCustomEmitter=this._register(new fe),this.onDidTriggerButtonEmitter=this._register(new fe),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new fe),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new fe),this.onHide=this.onHideEmitter.event,this.inQuickInputContext=wst.bindTo(this.contextKeyService),this.quickInputTypeContext=Cst.bindTo(this.contextKeyService),this.endOfQuickInputBoxContext=Bst.bindTo(this.contextKeyService),this.idPrefix=e.idPrefix,this._container=e.container,this.styles=e.styles,this._register(Ut.runAndSubscribe(w3,({window:o,disposables:r})=>this.registerKeyModsListeners(o,r),{window:Us,disposables:this._store})),this._register(BHe(o=>{this.ui&&ai(this.ui.container)===o&&(this.reparentUI(this.layoutService.mainContainer),this.layout(this.layoutService.mainContainerDimension,this.layoutService.mainContainerOffset.quickPickTop))}))}registerKeyModsListeners(e,t){const i=n=>{this.keyMods.ctrlCmd=n.ctrlKey||n.metaKey,this.keyMods.alt=n.altKey};for(const n of[ut.KEY_DOWN,ut.KEY_UP,ut.MOUSE_DOWN])t.add(Te(e,n,i,!0))}getUI(e){if(this.ui)return e&&ai(this._container)!==ai(this.layoutService.activeContainer)&&(this.reparentUI(this.layoutService.activeContainer),this.layout(this.layoutService.activeContainerDimension,this.layoutService.activeContainerOffset.quickPickTop)),this.ui;const t=nt(this._container,Xd(".quick-input-widget.show-file-icons"));t.tabIndex=-1,t.style.display="none";const i=sh(t),n=nt(t,Xd(".quick-input-titlebar")),o=this._register(new ih(n,{hoverDelegate:this.options.hoverDelegate}));o.domNode.classList.add("quick-input-left-action-bar");const r=nt(n,Xd(".quick-input-title")),l=this._register(new ih(n,{hoverDelegate:this.options.hoverDelegate}));l.domNode.classList.add("quick-input-right-action-bar");const a=nt(t,Xd(".quick-input-header")),d=nt(a,Xd("input.quick-input-check-all"));d.type="checkbox",d.setAttribute("aria-label",F("quickInput.checkAll","Toggle all checkboxes")),this._register(Fo(d,ut.CHANGE,k=>{const E=d.checked;Y.setAllVisibleChecked(E)})),this._register(Te(d,ut.CLICK,k=>{(k.x||k.y)&&m.setFocus()}));const c=nt(a,Xd(".quick-input-description")),h=nt(a,Xd(".quick-input-and-message")),u=nt(h,Xd(".quick-input-filter")),m=this._register(new Yst(u,this.styles.inputBox,this.styles.toggle));m.setAttribute("aria-describedby",`${this.idPrefix}message`);const p=nt(u,Xd(".quick-input-visible-count"));p.setAttribute("aria-live","polite"),p.setAttribute("aria-atomic","true");const g=new nq(p,{countFormat:F({key:"quickInput.visibleCount",comment:["This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers."]},"{0} Results")},this.styles.countBadge),f=nt(u,Xd(".quick-input-count"));f.setAttribute("aria-live","polite");const b=new nq(f,{countFormat:F({key:"quickInput.countSelected",comment:["This tells the user how many items are selected in a list of items to select from. The items can be anything."]},"{0} Selected")},this.styles.countBadge),U=this._register(new ih(a,{hoverDelegate:this.options.hoverDelegate}));U.domNode.classList.add("quick-input-inline-action-bar");const S=nt(a,Xd(".quick-input-action")),Z=this._register(new t5(S,this.styles.button));Z.label=F("ok","OK"),this._register(Z.onDidClick(k=>{this.onDidAcceptEmitter.fire()}));const R=nt(a,Xd(".quick-input-action")),y=this._register(new t5(R,{...this.styles.button,supportIcons:!0}));y.label=F("custom","Custom"),this._register(y.onDidClick(k=>{this.onDidCustomEmitter.fire()}));const N=nt(h,Xd(`#${this.idPrefix}message.quick-input-message`)),w=this._register(new sq(t,this.styles.progressBar));w.getContainer().classList.add("quick-input-progress");const Q=nt(t,Xd(".quick-input-html-widget"));Q.tabIndex=-1;const C=nt(t,Xd(".quick-input-description")),v=this.idPrefix+"list",Y=this._register(this.instantiationService.createInstance(WL,t,this.options.hoverDelegate,this.options.linkOpenerDelegate,v));m.setAttribute("aria-controls",v),this._register(Y.onDidChangeFocus(()=>{m.setAttribute("aria-activedescendant",Y.getActiveDescendant()??"")})),this._register(Y.onChangedAllVisibleChecked(k=>{d.checked=k})),this._register(Y.onChangedVisibleCount(k=>{g.setCount(k)})),this._register(Y.onChangedCheckedCount(k=>{b.setCount(k)})),this._register(Y.onLeave(()=>{setTimeout(()=>{this.controller&&(m.setFocus(),this.controller instanceof e5&&this.controller.canSelectMany&&Y.clearFocus())},0)}));const J=ap(t);return this._register(J),this._register(Te(t,ut.FOCUS,k=>{const E=this.getUI();if(wr(k.relatedTarget,E.inputContainer)){const K=E.inputBox.isSelectionAtEnd();this.endOfQuickInputBoxContext.get()!==K&&this.endOfQuickInputBoxContext.set(K)}wr(k.relatedTarget,E.container)||(this.inQuickInputContext.set(!0),this.previousFocusElement=Cr(k.relatedTarget)?k.relatedTarget:void 0)},!0)),this._register(J.onDidBlur(()=>{!this.getUI().ignoreFocusOut&&!this.options.ignoreFocusOut()&&this.hide(Ey.Blur),this.inQuickInputContext.set(!1),this.endOfQuickInputBoxContext.set(!1),this.previousFocusElement=void 0})),this._register(m.onKeyDown(k=>{const E=this.getUI().inputBox.isSelectionAtEnd();this.endOfQuickInputBoxContext.get()!==E&&this.endOfQuickInputBoxContext.set(E)})),this._register(Te(t,ut.FOCUS,k=>{m.setFocus()})),this._register(Fo(t,ut.KEY_DOWN,k=>{if(!wr(k.target,Q))switch(k.keyCode){case 3:Un.stop(k,!0),this.enabled&&this.onDidAcceptEmitter.fire();break;case 9:Un.stop(k,!0),this.hide(Ey.Gesture);break;case 2:if(!k.altKey&&!k.ctrlKey&&!k.metaKey){const E=[".quick-input-list .monaco-action-bar .always-visible",".quick-input-list-entry:hover .monaco-action-bar",".monaco-list-row.focused .monaco-action-bar"];if(t.classList.contains("show-checkboxes")?E.push("input"):E.push("input[type=text]"),this.getUI().list.displayed&&E.push(".monaco-list"),this.getUI().message&&E.push(".quick-input-message a"),this.getUI().widget){if(wr(k.target,this.getUI().widget))break;E.push(".quick-input-html-widget")}const K=t.querySelectorAll(E.join(", "));k.shiftKey&&k.target===K[0]?(Un.stop(k,!0),Y.clearFocus()):!k.shiftKey&&wr(k.target,K[K.length-1])&&(Un.stop(k,!0),K[0].focus())}break;case 10:k.ctrlKey&&(Un.stop(k,!0),this.getUI().list.toggleHover());break}})),this.ui={container:t,styleSheet:i,leftActionBar:o,titleBar:n,title:r,description1:C,description2:c,widget:Q,rightActionBar:l,inlineActionBar:U,checkAll:d,inputContainer:h,filterContainer:u,inputBox:m,visibleCountContainer:p,visibleCount:g,countContainer:f,count:b,okContainer:S,ok:Z,message:N,customButtonContainer:R,customButton:y,list:Y,progressBar:w,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:k=>this.show(k),hide:()=>this.hide(),setVisibilities:k=>this.setVisibilities(k),setEnabled:k=>this.setEnabled(k),setContextKey:k=>this.options.setContextKey(k),linkOpenerDelegate:k=>this.options.linkOpenerDelegate(k)},this.updateStyles(),this.ui}reparentUI(e){this.ui&&(this._container=e,nt(this._container,this.ui.container))}pick(e,t={},i=Gi.None){return new Promise((n,o)=>{let r=c=>{var h;r=n,(h=t.onKeyMods)==null||h.call(t,l.keyMods),n(c)};if(i.isCancellationRequested){r(void 0);return}const l=this.createQuickPick({useSeparators:!0});let a;const d=[l,l.onDidAccept(()=>{if(l.canSelectMany)r(l.selectedItems.slice()),l.hide();else{const c=l.activeItems[0];c&&(r(c),l.hide())}}),l.onDidChangeActive(c=>{const h=c[0];h&&t.onDidFocus&&t.onDidFocus(h)}),l.onDidChangeSelection(c=>{if(!l.canSelectMany){const h=c[0];h&&(r(h),l.hide())}}),l.onDidTriggerItemButton(c=>t.onDidTriggerItemButton&&t.onDidTriggerItemButton({...c,removeItem:()=>{const h=l.items.indexOf(c.item);if(h!==-1){const u=l.items.slice(),m=u.splice(h,1),p=l.activeItems.filter(f=>f!==m[0]),g=l.keepScrollPosition;l.keepScrollPosition=!0,l.items=u,p&&(l.activeItems=p),l.keepScrollPosition=g}}})),l.onDidTriggerSeparatorButton(c=>{var h;return(h=t.onDidTriggerSeparatorButton)==null?void 0:h.call(t,c)}),l.onDidChangeValue(c=>{a&&!c&&(l.activeItems.length!==1||l.activeItems[0]!==a)&&(l.activeItems=[a])}),i.onCancellationRequested(()=>{l.hide()}),l.onDidHide(()=>{Ws(d),r(void 0)})];l.title=t.title,t.value&&(l.value=t.value),l.canSelectMany=!!t.canPickMany,l.placeholder=t.placeHolder,l.ignoreFocusOut=!!t.ignoreFocusLost,l.matchOnDescription=!!t.matchOnDescription,l.matchOnDetail=!!t.matchOnDetail,l.matchOnLabel=t.matchOnLabel===void 0||t.matchOnLabel,l.quickNavigate=t.quickNavigate,l.hideInput=!!t.hideInput,l.contextKey=t.contextKey,l.busy=!0,Promise.all([e,t.activeItem]).then(([c,h])=>{a=h,l.busy=!1,l.items=c,l.canSelectMany&&(l.selectedItems=c.filter(u=>u.type!=="separator"&&u.picked)),a&&(l.activeItems=[a])}),l.show(),Promise.resolve(e).then(void 0,c=>{o(c),l.hide()})})}createQuickPick(e={useSeparators:!1}){const t=this.getUI(!0);return new e5(t)}createInputBox(){const e=this.getUI(!0);return new vst(e)}show(e){const t=this.getUI(!0);this.onShowEmitter.fire();const i=this.controller;this.controller=e,i==null||i.didHide(),this.setEnabled(!0),t.leftActionBar.clear(),t.title.textContent="",t.description1.textContent="",t.description2.textContent="",cl(t.widget),t.rightActionBar.clear(),t.inlineActionBar.clear(),t.checkAll.checked=!1,t.inputBox.placeholder="",t.inputBox.password=!1,t.inputBox.showDecoration(zo.Ignore),t.visibleCount.setCount(0),t.count.setCount(0),cl(t.message),t.progressBar.stop(),t.list.setElements([]),t.list.matchOnDescription=!1,t.list.matchOnDetail=!1,t.list.matchOnLabel=!0,t.list.sortByLabel=!0,t.ignoreFocusOut=!1,t.inputBox.toggles=void 0;const n=this.options.backKeybindingLabel();tq.tooltip=n?F("quickInput.backWithKeybinding","Back ({0})",n):F("quickInput.back","Back"),t.container.style.display="",this.updateLayout(),t.inputBox.setFocus(),this.quickInputTypeContext.set(e.type)}isVisible(){return!!this.ui&&this.ui.container.style.display!=="none"}setVisibilities(e){const t=this.getUI();t.title.style.display=e.title?"":"none",t.description1.style.display=e.description&&(e.inputBox||e.checkAll)?"":"none",t.description2.style.display=e.description&&!(e.inputBox||e.checkAll)?"":"none",t.checkAll.style.display=e.checkAll?"":"none",t.inputContainer.style.display=e.inputBox?"":"none",t.filterContainer.style.display=e.inputBox?"":"none",t.visibleCountContainer.style.display=e.visibleCount?"":"none",t.countContainer.style.display=e.count?"":"none",t.okContainer.style.display=e.ok?"":"none",t.customButtonContainer.style.display=e.customButton?"":"none",t.message.style.display=e.message?"":"none",t.progressBar.getContainer().style.display=e.progressBar?"":"none",t.list.displayed=!!e.list,t.container.classList.toggle("show-checkboxes",!!e.checkBox),t.container.classList.toggle("hidden-input",!e.inputBox&&!e.description),this.updateLayout()}setEnabled(e){if(e!==this.enabled){this.enabled=e;for(const t of this.getUI().leftActionBar.viewItems)t.action.enabled=e;for(const t of this.getUI().rightActionBar.viewItems)t.action.enabled=e;this.getUI().checkAll.disabled=!e,this.getUI().inputBox.enabled=e,this.getUI().ok.enabled=e,this.getUI().list.enabled=e}}hide(e){var o;const t=this.controller;if(!t)return;t.willHide(e);const i=(o=this.ui)==null?void 0:o.container,n=i&&!lSe(i);if(this.controller=null,this.onHideEmitter.fire(),i&&(i.style.display="none"),!n){let r=this.previousFocusElement;for(;r&&!r.offsetParent;)r=r.parentElement??void 0;r!=null&&r.offsetParent?(r.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}t.didHide(e)}layout(e,t){this.dimension=e,this.titleBarOffset=t,this.updateLayout()}updateLayout(){if(this.ui&&this.isVisible()){this.ui.container.style.top=`${this.titleBarOffset}px`;const e=this.ui.container.style,t=Math.min(this.dimension.width*.62,pq.MAX_WIDTH);e.width=t+"px",e.marginLeft="-"+t/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&this.dimension.height*.4)}}applyStyles(e){this.styles=e,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:e,quickInputBackground:t,quickInputForeground:i,widgetBorder:n,widgetShadow:o}=this.styles.widget;this.ui.titleBar.style.backgroundColor=e??"",this.ui.container.style.backgroundColor=t??"",this.ui.container.style.color=i??"",this.ui.container.style.border=n?`1px solid ${n}`:"",this.ui.container.style.boxShadow=o?`0 0 8px 2px ${o}`:"",this.ui.list.style(this.styles.list);const r=[];this.styles.pickerGroup.pickerGroupBorder&&r.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.pickerGroup.pickerGroupBorder}; }`),this.styles.pickerGroup.pickerGroupForeground&&r.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.pickerGroup.pickerGroupForeground}; }`),this.styles.pickerGroup.pickerGroupForeground&&r.push(".quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }"),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(r.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&r.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`),this.styles.keybindingLabel.keybindingLabelBorder&&r.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`),this.styles.keybindingLabel.keybindingLabelBottomBorder&&r.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`),this.styles.keybindingLabel.keybindingLabelShadow&&r.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`),this.styles.keybindingLabel.keybindingLabelForeground&&r.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`),r.push("}"));const l=r.join(`
- `);l!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=l)}}},pq=mQ,mQ.MAX_WIDTH=600,mQ);gq=pq=ort([DP(1,eA),DP(2,ti),DP(3,fi)],gq);var rrt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Vw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let fq=class extends j7e{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get currentQuickInput(){return this.controller.currentQuickInput}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(eq))),this._quickAccess}constructor(e,t,i,n,o){super(i),this.instantiationService=e,this.contextKeyService=t,this.layoutService=n,this.configurationService=o,this._onShow=this._register(new fe),this._onHide=this._register(new fe),this.contexts=new Map}createController(e=this.layoutService,t){const i={idPrefix:"quickInput_",container:e.activeContainer,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:o=>this.setContextKey(o),linkOpenerDelegate:o=>{this.instantiationService.invokeFunction(r=>{r.get(Bd).open(o,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>e.focus(),styles:this.computeStyles(),hoverDelegate:this._register(this.instantiationService.createInstance(iq))},n=this._register(this.instantiationService.createInstance(gq,{...i,...t}));return n.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop),this._register(e.onDidLayoutActiveContainer(o=>{ai(e.activeContainer)===ai(n.container)&&n.layout(o,e.activeContainerOffset.quickPickTop)})),this._register(e.onDidChangeActiveContainer(()=>{n.isVisible()||n.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop)})),this._register(n.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(n.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),n}setContextKey(e){let t;e&&(t=this.contexts.get(e),t||(t=new yt(e,!1).bindTo(this.contextKeyService),this.contexts.set(e,t))),!(t&&t.get())&&(this.resetContextKeys(),t==null||t.set(!0))}resetContextKeys(){this.contexts.forEach(e=>{e.get()&&e.reset()})}pick(e,t,i=Gi.None){return this.controller.pick(e,t,i)}createQuickPick(e={useSeparators:!1}){return this.controller.createQuickPick(e)}createInputBox(){return this.controller.createInputBox()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:Mt(Mue),quickInputForeground:Mt(cqe),quickInputTitleBackground:Mt(hqe),widgetBorder:Mt(bNe),widgetShadow:Mt(bM)},inputBox:XX,toggle:JX,countBadge:fRe,button:jtt,progressBar:Ptt,keybindingLabel:Ott,list:eR({listBackground:Mue,listFocusBackground:aL,listFocusForeground:lL,listInactiveFocusForeground:lL,listInactiveSelectionIconForeground:moe,listInactiveFocusBackground:aL,listFocusOutline:to,listInactiveFocusOutline:to}),pickerGroup:{pickerGroupBorder:Mt(uqe),pickerGroupForeground:Mt(yNe)}}}};fq=rrt([Vw(0,ti),Vw(1,fi),Vw(2,Rr),Vw(3,eA),Vw(4,Hi)],fq);var TVe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},qZ=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let bq=class extends fq{constructor(e,t,i,n,o,r){super(t,i,n,new x8(e.getContainerDomNode(),o),r),this.host=void 0;const l=yL.get(e);if(l){const a=l.widget;this.host={_serviceBrand:void 0,get mainContainer(){return a.getDomNode()},getContainer(){return a.getDomNode()},whenContainerStylesLoaded(){},get containers(){return[a.getDomNode()]},get activeContainer(){return a.getDomNode()},get mainContainerDimension(){return e.getLayoutInfo()},get activeContainerDimension(){return e.getLayoutInfo()},get onDidLayoutMainContainer(){return e.onDidLayoutChange},get onDidLayoutActiveContainer(){return e.onDidLayoutChange},get onDidLayoutContainer(){return Ut.map(e.onDidLayoutChange,d=>({container:a.getDomNode(),dimension:d}))},get onDidChangeActiveContainer(){return Ut.None},get onDidAddContainer(){return Ut.None},get mainContainerOffset(){return{top:0,quickPickTop:0}},get activeContainerOffset(){return{top:0,quickPickTop:0}},focus:()=>e.focus()}}else this.host=void 0}createController(){return super.createController(this.host)}};bq=TVe([qZ(1,ti),qZ(2,fi),qZ(3,Rr),qZ(4,kn),qZ(5,Hi)],bq);let Uq=class{get activeService(){const e=this.codeEditorService.getFocusedCodeEditor();if(!e)throw new Error("Quick input service needs a focused editor to work.");let t=this.mapEditorToService.get(e);if(!t){const i=t=this.instantiationService.createInstance(bq,e);this.mapEditorToService.set(e,t),CF(e.onDidDispose)(()=>{i.dispose(),this.mapEditorToService.delete(e)})}return t}get currentQuickInput(){return this.activeService.currentQuickInput}get quickAccess(){return this.activeService.quickAccess}constructor(e,t){this.instantiationService=e,this.codeEditorService=t,this.mapEditorToService=new Map}pick(e,t,i=Gi.None){return this.activeService.pick(e,t,i)}createQuickPick(e={useSeparators:!1}){return this.activeService.createQuickPick(e)}createInputBox(){return this.activeService.createInputBox()}};Uq=TVe([qZ(0,ti),qZ(1,kn)],Uq);const O_=class O_{static get(e){return e.getContribution(O_.ID)}constructor(e){this.editor=e,this.widget=new Fq(this.editor)}dispose(){this.widget.dispose()}};O_.ID="editor.controller.quickInput";let yL=O_;const j_=class j_{constructor(e){this.codeEditor=e,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return j_.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}};j_.ID="editor.contrib.quickInputWidget";let Fq=j_;Wn(yL.ID,yL,4);class lrt{constructor(e,t,i,n,o){this._parsedThemeRuleBrand=void 0,this.token=e,this.index=t,this.fontStyle=i,this.foreground=n,this.background=o}}function art(s){if(!s||!Array.isArray(s))return[];const e=[];let t=0;for(let i=0,n=s.length;i<n;i++){const o=s[i];let r=-1;if(typeof o.fontStyle=="string"){r=0;const d=o.fontStyle.split(" ");for(let c=0,h=d.length;c<h;c++)switch(d[c]){case"italic":r=r|1;break;case"bold":r=r|2;break;case"underline":r=r|4;break;case"strikethrough":r=r|8;break}}let l=null;typeof o.foreground=="string"&&(l=o.foreground);let a=null;typeof o.background=="string"&&(a=o.background),e[t++]=new lrt(o.token||"",i,r,l,a)}return e}function drt(s,e){s.sort((c,h)=>{const u=prt(c.token,h.token);return u!==0?u:c.index-h.index});let t=0,i="000000",n="ffffff";for(;s.length>=1&&s[0].token==="";){const c=s.shift();c.fontStyle!==-1&&(t=c.fontStyle),c.foreground!==null&&(i=c.foreground),c.background!==null&&(n=c.background)}const o=new hrt;for(const c of e)o.getId(c);const r=o.getId(i),l=o.getId(n),a=new mre(t,r,l),d=new pre(a);for(let c=0,h=s.length;c<h;c++){const u=s[c];d.insert(u.token,u.fontStyle,o.getId(u.foreground),o.getId(u.background))}return new CVe(o,d)}const crt=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;class hrt{constructor(){this._lastColorId=0,this._id2color=[],this._color2id=new Map}getId(e){if(e===null)return 0;const t=e.match(crt);if(!t)throw new Error("Illegal value for token color: "+e);e=t[1].toUpperCase();let i=this._color2id.get(e);return i||(i=++this._lastColorId,this._color2id.set(e,i),this._id2color[i]=Je.fromHex("#"+e),i)}getColorMap(){return this._id2color.slice(0)}}class CVe{static createFromRawTokenTheme(e,t){return this.createFromParsedTokenTheme(art(e),t)}static createFromParsedTokenTheme(e,t){return drt(e,t)}constructor(e,t){this._colorMap=e,this._root=t,this._cache=new Map}getColorMap(){return this._colorMap.getColorMap()}_match(e){return this._root.match(e)}match(e,t){let i=this._cache.get(t);if(typeof i>"u"){const n=this._match(t),o=mrt(t);i=(n.metadata|o<<8)>>>0,this._cache.set(t,i)}return(i|e<<0)>>>0}}const urt=/\b(comment|string|regex|regexp)\b/;function mrt(s){const e=s.match(urt);if(!e)return 0;switch(e[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"regexp":return 3}throw new Error("Unexpected match for standard token type!")}function prt(s,e){return s<e?-1:s>e?1:0}class mre{constructor(e,t,i){this._themeTrieElementRuleBrand=void 0,this._fontStyle=e,this._foreground=t,this._background=i,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new mre(this._fontStyle,this._foreground,this._background)}acceptOverwrite(e,t,i){e!==-1&&(this._fontStyle=e),t!==0&&(this._foreground=t),i!==0&&(this._background=i),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}class pre{constructor(e){this._themeTrieElementBrand=void 0,this._mainRule=e,this._children=new Map}match(e){if(e==="")return this._mainRule;const t=e.indexOf(".");let i,n;t===-1?(i=e,n=""):(i=e.substring(0,t),n=e.substring(t+1));const o=this._children.get(i);return typeof o<"u"?o.match(n):this._mainRule}insert(e,t,i,n){if(e===""){this._mainRule.acceptOverwrite(t,i,n);return}const o=e.indexOf(".");let r,l;o===-1?(r=e,l=""):(r=e.substring(0,o),l=e.substring(o+1));let a=this._children.get(r);typeof a>"u"&&(a=new pre(this._mainRule.clone()),this._children.set(r,a)),a.insert(l,t,i,n)}}function grt(s){const e=[];for(let t=1,i=s.length;t<i;t++){const n=s[t];e[t]=`.mtk${t} { color: ${n}; }`}return e.push(".mtki { font-style: italic; }"),e.push(".mtkb { font-weight: bold; }"),e.push(".mtku { text-decoration: underline; text-underline-position: under; }"),e.push(".mtks { text-decoration: line-through; }"),e.push(".mtks.mtku { text-decoration: underline line-through; text-underline-position: under; }"),e.join(`
- `)}const frt={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"098658"},{token:"attribute.value.unit",foreground:"098658"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[im]:"#FFFFFE",[e0]:"#000000",[gNe]:"#E5EBF1",[hk]:"#D3D3D3",[uk]:"#939393",[loe]:"#ADD6FF4D"}},brt={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name",foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[im]:"#1E1E1E",[e0]:"#D4D4D4",[gNe]:"#3A3D41",[hk]:"#404040",[uk]:"#707070",[loe]:"#ADD6FF26"}},Urt={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[im]:"#000000",[e0]:"#FFFFFF",[hk]:"#FFFFFF",[uk]:"#FFFFFF"}},Frt={base:"hc-light",inherit:!1,rules:[{token:"",foreground:"292929",background:"FFFFFF"},{token:"invalid",foreground:"B5200D"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"264F70"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"B5200D"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"264F78"},{token:"attribute.value",foreground:"0451A5"},{token:"string",foreground:"A31515"},{token:"string.sql",foreground:"B5200D"},{token:"keyword",foreground:"0000FF"},{token:"keyword.flow",foreground:"AF00DB"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[im]:"#FFFFFF",[e0]:"#292929",[hk]:"#292929",[uk]:"#292929"}},Art={IconContribution:"base.contributions.icons"};var npe;(function(s){function e(t,i){let n=t.defaults;for(;ui.isThemeIcon(n);){const o=nR.getIcon(n.id);if(!o)return;n=o.defaults}return n}s.getDefinition=e})(npe||(npe={}));var spe;(function(s){function e(i){return{weight:i.weight,style:i.style,src:i.src.map(n=>({format:n.format,location:n.location.toString()}))}}s.toJSONObject=e;function t(i){const n=o=>Vd(o)?o:void 0;if(i&&Array.isArray(i.src)&&i.src.every(o=>Vd(o.format)&&Vd(o.location)))return{weight:n(i.weight),style:n(i.style),src:i.src.map(o=>({format:o.format,location:ni.parse(o.location)}))}}s.fromJSONObject=t})(spe||(spe={}));class Zrt{constructor(){this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:"object",properties:{fontId:{type:"string",description:F("iconDefinition.fontId","The id of the font to use. If not set, the font that is defined first is used.")},fontCharacter:{type:"string",description:F("iconDefinition.fontCharacter","The font character associated with the icon definition.")}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:"\\\\e030"}}]}},type:"object",properties:{}},this.iconReferenceSchema={type:"string",pattern:`^${ui.iconNameExpression}$`,enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}registerIcon(e,t,i,n){const o=this.iconsById[e];if(o){if(i&&!o.description){o.description=i,this.iconSchema.properties[e].markdownDescription=`${i} $(${e})`;const a=this.iconReferenceSchema.enum.indexOf(e);a!==-1&&(this.iconReferenceSchema.enumDescriptions[a]=i),this._onDidChange.fire()}return o}const r={id:e,description:i,defaults:t,deprecationMessage:n};this.iconsById[e]=r;const l={$ref:"#/definitions/icons"};return n&&(l.deprecationMessage=n),i&&(l.markdownDescription=`${i}: $(${e})`),this.iconSchema.properties[e]=l,this.iconReferenceSchema.enum.push(e),this.iconReferenceSchema.enumDescriptions.push(i||""),this._onDidChange.fire(),{id:e}}getIcons(){return Object.keys(this.iconsById).map(e=>this.iconsById[e])}getIcon(e){return this.iconsById[e]}getIconSchema(){return this.iconSchema}toString(){const e=(o,r)=>o.id.localeCompare(r.id),t=o=>{for(;ui.isThemeIcon(o.defaults);)o=this.iconsById[o.defaults.id];return`codicon codicon-${o?o.id:""}`},i=[];i.push("| preview | identifier | default codicon ID | description"),i.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");const n=Object.keys(this.iconsById).map(o=>this.iconsById[o]);for(const o of n.filter(r=>!!r.description).sort(e))i.push(`|<i class="${t(o)}"></i>|${o.id}|${ui.isThemeIcon(o.defaults)?o.defaults.id:o.id}|${o.description||""}|`);i.push("| preview | identifier "),i.push("| ----------- | --------------------------------- |");for(const o of n.filter(r=>!ui.isThemeIcon(r.defaults)).sort(e))i.push(`|<i class="${t(o)}"></i>|${o.id}|`);return i.join(`
- `)}}const nR=new Zrt;fo.add(Art.IconContribution,nR);function Os(s,e,t,i){return nR.registerIcon(s,e,t,i)}function BVe(){return nR}function Srt(){const s=QZe();for(const e in s){const t="\\"+s[e].toString(16);nR.registerIcon(e,{fontCharacter:t})}}Srt();const LVe="vscode://schemas/icons",vVe=fo.as(_3.JSONContribution);vVe.registerSchema(LVe,nR.getIconSchema());const ope=new cs(()=>vVe.notifySchemaChanged(LVe),200);nR.onDidChange(()=>{ope.isScheduled()||ope.schedule()});const kVe=Os("widget-close",ct.close,F("widgetClose","Icon for the close action in widgets."));Os("goto-previous-location",ct.arrowUp,F("previousChangeIcon","Icon for goto previous editor location."));Os("goto-next-location",ct.arrowDown,F("nextChangeIcon","Icon for goto next editor location."));ui.modify(ct.sync,"spin");ui.modify(ct.loading,"spin");function Nrt(s){const e=new De,t=e.add(new fe),i=BVe();return e.add(i.onDidChange(()=>t.fire())),s&&e.add(s.onDidProductIconThemeChange(()=>t.fire())),{dispose:()=>e.dispose(),onDidChange:t.event,getCSS(){const n=s?s.getProductIconTheme():new xVe,o={},r=[],l=[];for(const a of i.getIcons()){const d=n.getIcon(a);if(!d)continue;const c=d.font,h=`--vscode-icon-${a.id}-font-family`,u=`--vscode-icon-${a.id}-content`;c?(o[c.id]=c.definition,l.push(`${h}: ${zj(c.id)};`,`${u}: '${d.fontCharacter}';`),r.push(`.codicon-${a.id}:before { content: '${d.fontCharacter}'; font-family: ${zj(c.id)}; }`)):(l.push(`${u}: '${d.fontCharacter}'; ${h}: 'codicon';`),r.push(`.codicon-${a.id}:before { content: '${d.fontCharacter}'; }`))}for(const a in o){const d=o[a],c=d.weight?`font-weight: ${d.weight};`:"",h=d.style?`font-style: ${d.style};`:"",u=d.src.map(m=>`${Kf(m.location)} format('${m.format}')`).join(", ");r.push(`@font-face { src: ${u}; font-family: ${zj(a)};${c}${h} font-display: block; }`)}return r.push(`:root { ${l.join(" ")} }`),r.join(`
- `)}}}class xVe{getIcon(e){const t=BVe();let i=e.defaults;for(;ui.isThemeIcon(i);){const n=t.getIcon(i.id);if(!n)return;i=n.defaults}return i}}const uf="vs",J1="vs-dark",YS="hc-black",_S="hc-light",IVe=fo.as(dNe.ColorContribution),Rrt=fo.as(OSe.ThemingContribution);class EVe{constructor(e,t){this.semanticHighlighting=!1,this.themeData=t;const i=t.base;e.length>0?(TD(e)?this.id=e:this.id=i+" "+e,this.themeName=e):(this.id=i,this.themeName=i),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const e=new Map;for(const t in this.themeData.colors)e.set(t,Je.fromHex(this.themeData.colors[t]));if(this.themeData.inherit){const t=Aq(this.themeData.base);for(const i in t.colors)e.has(i)||e.set(i,Je.fromHex(t.colors[i]))}this.colors=e}return this.colors}getColor(e,t){const i=this.getColors().get(e);if(i)return i;if(t!==!1)return this.getDefault(e)}getDefault(e){let t=this.defaultColors[e];return t||(t=IVe.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)}defines(e){return this.getColors().has(e)}get type(){switch(this.base){case uf:return Gh.LIGHT;case YS:return Gh.HIGH_CONTRAST_DARK;case _S:return Gh.HIGH_CONTRAST_LIGHT;default:return Gh.DARK}}get tokenTheme(){if(!this._tokenTheme){let e=[],t=[];if(this.themeData.inherit){const o=Aq(this.themeData.base);e=o.rules,o.encodedTokensColors&&(t=o.encodedTokensColors)}const i=this.themeData.colors["editor.foreground"],n=this.themeData.colors["editor.background"];if(i||n){const o={token:""};i&&(o.foreground=i),n&&(o.background=n),e.push(o)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=CVe.createFromRawTokenTheme(e,t)}return this._tokenTheme}getTokenStyleMetadata(e,t,i){const o=this.tokenTheme._match([e].concat(t).join(".")).metadata,r=Fd.getForeground(o),l=Fd.getFontStyle(o);return{foreground:r,italic:!!(l&1),bold:!!(l&2),underline:!!(l&4),strikethrough:!!(l&8)}}}function TD(s){return s===uf||s===J1||s===YS||s===_S}function Aq(s){switch(s){case uf:return frt;case J1:return brt;case YS:return Urt;case _S:return Frt}}function UI(s){const e=Aq(s);return new EVe(s,e)}class Vrt extends be{constructor(){super(),this._onColorThemeChange=this._register(new fe),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new fe),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new xVe,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(uf,UI(uf)),this._knownThemes.set(J1,UI(J1)),this._knownThemes.set(YS,UI(YS)),this._knownThemes.set(_S,UI(_S));const e=this._register(Nrt(this));this._codiconCSS=e.getCSS(),this._themeCSS="",this._allCSS=`${this._codiconCSS}
- ${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(uf),this._onOSSchemeChanged(),this._register(e.onDidChange(()=>{this._codiconCSS=e.getCSS(),this._updateCSS()})),GZe(Us,"(forced-colors: active)",()=>{this._onOSSchemeChanged()})}registerEditorContainer(e){return dX(e)?this._registerShadowDomContainer(e):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=sh(void 0,e=>{e.className="monaco-colors",e.textContent=this._allCSS}),this._styleElements.push(this._globalStyleElement)),be.None}_registerShadowDomContainer(e){const t=sh(e,i=>{i.className="monaco-colors",i.textContent=this._allCSS});return this._styleElements.push(t),{dispose:()=>{for(let i=0;i<this._styleElements.length;i++)if(this._styleElements[i]===t){this._styleElements.splice(i,1);return}}}}defineTheme(e,t){if(!/^[a-z0-9\-]+$/i.test(e))throw new Error("Illegal theme name!");if(!TD(t.base)&&!TD(e))throw new Error("Illegal theme base!");this._knownThemes.set(e,new EVe(e,t)),TD(e)&&this._knownThemes.forEach(i=>{i.base===e&&i.notifyBaseUpdated()}),this._theme.themeName===e&&this.setTheme(e)}getColorTheme(){return this._theme}setColorMapOverride(e){this._colorMapOverride=e,this._updateThemeOrColorMap()}setTheme(e){let t;this._knownThemes.has(e)?t=this._knownThemes.get(e):t=this._knownThemes.get(uf),this._updateActualTheme(t)}_updateActualTheme(e){!e||this._theme===e||(this._theme=e,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const e=Us.matchMedia("(forced-colors: active)").matches;if(e!==np(this._theme.type)){let t;yy(this._theme.type)?t=e?YS:J1:t=e?_S:uf,this._updateActualTheme(this._knownThemes.get(t))}}}setAutoDetectHighContrast(e){this._autoDetectHighContrast=e,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const e=[],t={},i={addRule:r=>{t[r]||(e.push(r),t[r]=!0)}};Rrt.getThemingParticipants().forEach(r=>r(this._theme,i,this._environment));const n=[];for(const r of IVe.getColors()){const l=this._theme.getColor(r.id,!0);l&&n.push(`${soe(r.id)}: ${l.toString()};`)}i.addRule(`.monaco-editor, .monaco-diff-editor, .monaco-component { ${n.join(`
- `)} }`);const o=this._colorMapOverride||this._theme.tokenTheme.getColorMap();i.addRule(grt(o)),this._themeCSS=e.join(`
- `),this._updateCSS(),Ro.setColorMap(o),this._onColorThemeChange.fire(this._theme)}_updateCSS(){this._allCSS=`${this._codiconCSS}
- ${this._themeCSS}`,this._styleElements.forEach(e=>e.textContent=this._allCSS)}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}getProductIconTheme(){return this._builtInProductIconTheme}}const uh=un("themeService");var Wrt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},GP=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Zq=class extends be{constructor(e,t,i){super(),this._contextKeyService=e,this._layoutService=t,this._configurationService=i,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new fe,this._onDidChangeReducedMotion=new fe,this._onDidChangeLinkUnderline=new fe,this._accessibilityModeEnabledContext=ik.bindTo(this._contextKeyService);const n=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(r=>{r.affectsConfiguration("editor.accessibilitySupport")&&(n(),this._onDidChangeScreenReaderOptimized.fire()),r.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())})),n(),this._register(this.onDidChangeScreenReaderOptimized(()=>n()));const o=Us.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=o.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._linkUnderlinesEnabled=this._configurationService.getValue("accessibility.underlineLinks"),this.initReducedMotionListeners(o),this.initLinkUnderlineListeners()}initReducedMotionListeners(e){this._register(Te(e,"change",()=>{this._systemMotionReduced=e.matches,this._configMotionReduced==="auto"&&this._onDidChangeReducedMotion.fire()}));const t=()=>{const i=this.isMotionReduced();this._layoutService.mainContainer.classList.toggle("reduce-motion",i),this._layoutService.mainContainer.classList.toggle("enable-motion",!i)};t(),this._register(this.onDidChangeReducedMotion(()=>t()))}initLinkUnderlineListeners(){this._register(this._configurationService.onDidChangeConfiguration(t=>{if(t.affectsConfiguration("accessibility.underlineLinks")){const i=this._configurationService.getValue("accessibility.underlineLinks");this._linkUnderlinesEnabled=i,this._onDidChangeLinkUnderline.fire()}}));const e=()=>{const t=this._linkUnderlinesEnabled;this._layoutService.mainContainer.classList.toggle("underline-links",t)};e(),this._register(this.onDidChangeLinkUnderlines(()=>e()))}onDidChangeLinkUnderlines(e){return this._onDidChangeLinkUnderline.event(e)}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const e=this._configurationService.getValue("editor.accessibilitySupport");return e==="on"||e==="auto"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const e=this._configMotionReduced;return e==="on"||e==="auto"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};Zq=Wrt([GP(0,fi),GP(1,eA),GP(2,Hi)],Zq);var V9=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},xg=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},wV,LT;let Sq=class{constructor(e,t,i){this._commandService=e,this._keybindingService=t,this._hiddenStates=new Nq(i)}createMenu(e,t,i){return new g5(e,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...i},this._commandService,this._keybindingService,t)}getMenuActions(e,t,i){const n=new g5(e,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...i},this._commandService,this._keybindingService,t),o=n.getActions(i);return n.dispose(),o}resetHiddenStates(e){this._hiddenStates.reset(e)}};Sq=V9([xg(0,ks),xg(1,qn),xg(2,lm)],Sq);var pQ;let Nq=(pQ=class{constructor(e){this._storageService=e,this._disposables=new De,this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const t=e.get(wV._key,0,"{}");this._data=JSON.parse(t)}catch{this._data=Object.create(null)}this._disposables.add(e.onDidChangeValue(0,wV._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const t=e.get(wV._key,0,"{}");this._data=JSON.parse(t)}catch(t){console.log("FAILED to read storage after UPDATE",t)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(e,t){return this._hiddenByDefaultCache.get(`${e.id}/${t}`)??!1}setDefaultState(e,t,i){this._hiddenByDefaultCache.set(`${e.id}/${t}`,i)}isHidden(e,t){var o;const i=this._isHiddenByDefault(e,t),n=((o=this._data[e.id])==null?void 0:o.includes(t))??!1;return i?!n:n}updateHidden(e,t,i){this._isHiddenByDefault(e,t)&&(i=!i);const o=this._data[e.id];if(i)o?o.indexOf(t)<0&&o.push(t):this._data[e.id]=[t];else if(o){const r=o.indexOf(t);r>=0&&bOe(o,r),o.length===0&&delete this._data[e.id]}this._persist()}reset(e){if(e===void 0)this._data=Object.create(null),this._persist();else{for(const{id:t}of e)this._data[t]&&delete this._data[t];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const e=JSON.stringify(this._data);this._storageService.store(wV._key,e,0,0)}finally{this._ignoreChangeEvent=!1}}},wV=pQ,pQ._key="menu.hiddenCommands",pQ);Nq=wV=V9([xg(0,lm)],Nq);class a2{constructor(e,t){this._id=e,this._collectContextKeysForSubmenus=t,this._menuGroups=[],this._allMenuIds=new Set,this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get allMenuIds(){return this._allMenuIds}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._allMenuIds.clear(),this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const e=this._sort(zr.getMenuItems(this._id));let t;for(const i of e){const n=i.group||"";(!t||t[0]!==n)&&(t=[n,[]],this._menuGroups.push(t)),t[1].push(i),this._collectContextKeysAndSubmenuIds(i)}this._allMenuIds.add(this._id)}_sort(e){return e}_collectContextKeysAndSubmenuIds(e){if(a2._fillInKbExprKeys(e.when,this._structureContextKeys),w1(e)){if(e.command.precondition&&a2._fillInKbExprKeys(e.command.precondition,this._preconditionContextKeys),e.command.toggled){const t=e.command.toggled.condition||e.command.toggled;a2._fillInKbExprKeys(t,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&(zr.getMenuItems(e.submenu).forEach(this._collectContextKeysAndSubmenuIds,this),this._allMenuIds.add(e.submenu))}static _fillInKbExprKeys(e,t){if(e)for(const i of e.keys())t.add(i)}}let Rq=LT=class extends a2{constructor(e,t,i,n,o,r){super(e,i),this._hiddenStates=t,this._commandService=n,this._keybindingService=o,this._contextKeyService=r,this.refresh()}createActionGroups(e){const t=[];for(const i of this._menuGroups){const[n,o]=i;let r;for(const l of o)if(this._contextKeyService.contextMatchesRules(l.when)){const a=w1(l);a&&this._hiddenStates.setDefaultState(this._id,l.command.id,!!l.isHiddenByDefault);const d=yrt(this._id,a?l.command:l,this._hiddenStates);if(a){const c=DVe(this._commandService,this._keybindingService,l.command.id,l.when);(r??(r=[])).push(new dc(l.command,l.alt,e,d,c,this._contextKeyService,this._commandService))}else{const c=new LT(l.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._keybindingService,this._contextKeyService).createActionGroups(e),h=Br.join(...c.map(u=>u[1]));h.length>0&&(r??(r=[])).push(new T1(l,d,h))}}r&&r.length>0&&t.push([n,r])}return t}_sort(e){return e.sort(LT._compareMenuItems)}static _compareMenuItems(e,t){const i=e.group,n=t.group;if(i!==n){if(i){if(!n)return-1}else return 1;if(i==="navigation")return-1;if(n==="navigation")return 1;const l=i.localeCompare(n);if(l!==0)return l}const o=e.order||0,r=t.order||0;return o<r?-1:o>r?1:LT._compareTitles(w1(e)?e.command.title:e.title,w1(t)?t.command.title:t.title)}static _compareTitles(e,t){const i=typeof e=="string"?e:e.original,n=typeof t=="string"?t:t.original;return i.localeCompare(n)}};Rq=LT=V9([xg(3,ks),xg(4,qn),xg(5,fi)],Rq);let g5=class{constructor(e,t,i,n,o,r){this._disposables=new De,this._menuInfo=new Rq(e,t,i.emitEventsForSubmenuChanges,n,o,r);const l=new cs(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},i.eventDebounceDelay);this._disposables.add(l),this._disposables.add(zr.onDidChangeMenu(h=>{for(const u of this._menuInfo.allMenuIds)if(h.has(u)){l.schedule();break}}));const a=this._disposables.add(new De),d=h=>{let u=!1,m=!1,p=!1;for(const g of h)if(u=u||g.isStructuralChange,m=m||g.isEnablementChange,p=p||g.isToggleChange,u&&m&&p)break;return{menu:this,isStructuralChange:u,isEnablementChange:m,isToggleChange:p}},c=()=>{a.add(r.onDidChangeContext(h=>{const u=h.affectsSome(this._menuInfo.structureContextKeys),m=h.affectsSome(this._menuInfo.preconditionContextKeys),p=h.affectsSome(this._menuInfo.toggledContextKeys);(u||m||p)&&this._onDidChange.fire({menu:this,isStructuralChange:u,isEnablementChange:m,isToggleChange:p})})),a.add(t.onDidChange(h=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new UZe({onWillAddFirstListener:c,onDidRemoveLastListener:a.clear.bind(a),delay:i.eventDebounceDelay,merge:d}),this.onDidChange=this._onDidChange.event}getActions(e){return this._menuInfo.createActionGroups(e)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};g5=V9([xg(3,ks),xg(4,qn),xg(5,fi)],g5);function yrt(s,e,t){const i=w4e(e)?e.submenu.id:e.id,n=typeof e.title=="string"?e.title:e.title.value,o=ES({id:`hide/${s.id}/${i}`,label:F("hide.label","Hide '{0}'",n),run(){t.updateHidden(s,i,!0)}}),r=ES({id:`toggle/${s.id}/${i}`,label:n,get checked(){return!t.isHidden(s,i)},run(){t.updateHidden(s,i,!!this.checked)}});return{hide:o,toggle:r,get isHidden(){return!r.checked}}}function DVe(s,e,t,i=void 0,n=!0){return ES({id:`configureKeybinding/${t}`,label:F("configure keybinding","Configure Keybinding"),enabled:n,run(){const r=!!!e.lookupKeybinding(t)&&i?i.serialize():void 0;s.executeCommand("workbench.action.openGlobalKeybindings",`@command:${t}`+(r?` +when:${r}`:""))}})}var Qrt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},rpe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Vq;const lpe="application/vnd.code.resources";var gQ;let Wq=(gQ=class extends be{constructor(e,t){super(),this.layoutService=e,this.logService=t,this.mapTextToType=new Map,this.findText="",this.resources=[],this.resourcesStateHash=void 0,(Of||JZe)&&this.installWebKitWriteTextWorkaround(),this._register(Ut.runAndSubscribe(w3,({window:i,disposables:n})=>{n.add(Te(i.document,"copy",()=>this.clearResourcesState()))},{window:Us,disposables:this._store}))}installWebKitWriteTextWorkaround(){const e=()=>{const t=new hM;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=t,VT().navigator.clipboard.write([new ClipboardItem({"text/plain":t.p})]).catch(async i=>{(!(i instanceof Error)||i.name!=="NotAllowedError"||!t.isRejected)&&this.logService.error(i)})};this._register(Ut.runAndSubscribe(this.layoutService.onDidAddContainer,({container:t,disposables:i})=>{i.add(Te(t,"click",e)),i.add(Te(t,"keydown",e))},{container:this.layoutService.mainContainer,disposables:this._store}))}async writeText(e,t){if(this.clearResourcesState(),t){this.mapTextToType.set(t,e);return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(e);try{return await VT().navigator.clipboard.writeText(e)}catch(i){console.error(i)}this.fallbackWriteText(e)}fallbackWriteText(e){const t=uM(),i=t.activeElement,n=t.body.appendChild(gt("textarea",{"aria-hidden":!0}));n.style.height="1px",n.style.width="1px",n.style.position="absolute",n.value=e,n.focus(),n.select(),t.execCommand("copy"),Cr(i)&&i.focus(),n.remove()}async readText(e){if(e)return this.mapTextToType.get(e)||"";try{return await VT().navigator.clipboard.readText()}catch(t){console.error(t)}return""}async readFindText(){return this.findText}async writeFindText(e){this.findText=e}async readResources(){try{const t=await VT().navigator.clipboard.read();for(const i of t)if(i.types.includes(`web ${lpe}`)){const n=await i.getType(`web ${lpe}`);return JSON.parse(await n.text()).map(r=>ni.from(r))}}catch{}const e=await this.computeResourcesStateHash();return this.resourcesStateHash!==e&&this.clearResourcesState(),this.resources}async computeResourcesStateHash(){if(this.resources.length===0)return;const e=await this.readText();return Q3(e.substring(0,Vq.MAX_RESOURCE_STATE_SOURCE_LENGTH))}clearInternalState(){this.clearResourcesState()}clearResourcesState(){this.resources=[],this.resourcesStateHash=void 0}},Vq=gQ,gQ.MAX_RESOURCE_STATE_SOURCE_LENGTH=1e3,gQ);Wq=Vq=Qrt([rpe(0,eA),rpe(1,Cl)],Wq);const hb=un("clipboardService");var Mrt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},wrt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const d2="data-keybinding-context";let gre=class{constructor(e,t){this._id=e,this._parent=t,this._value=Object.create(null),this._value._contextId=e}get value(){return{...this._value}}setValue(e,t){return this._value[e]!==t?(this._value[e]=t,!0):!1}removeValue(e){return e in this._value?(delete this._value[e],!0):!1}getValue(e){const t=this._value[e];return typeof t>"u"&&this._parent?this._parent.getValue(e):t}};const P_=class P_ extends gre{constructor(){super(-1,null)}setValue(e,t){return!1}removeValue(e){return!1}getValue(e){}};P_.INSTANCE=new P_;let Gy=P_;const ZB=class ZB extends gre{constructor(e,t,i){super(e,null),this._configurationService=t,this._values=v1.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(n=>{if(n.source===7){const o=Array.from(this._values,([r])=>r);this._values.clear(),i.fire(new dpe(o))}else{const o=[];for(const r of n.affectedKeys){const l=`config.${r}`,a=this._values.findSuperstr(l);a!==void 0&&(o.push(...Zn.map(a,([d])=>d)),this._values.deleteSuperstr(l)),this._values.has(l)&&(o.push(l),this._values.delete(l))}i.fire(new dpe(o))}})}dispose(){this._listener.dispose()}getValue(e){if(e.indexOf(ZB._keyPrefix)!==0)return super.getValue(e);if(this._values.has(e))return this._values.get(e);const t=e.substr(ZB._keyPrefix.length),i=this._configurationService.getValue(t);let n;switch(typeof i){case"number":case"boolean":case"string":n=i;break;default:Array.isArray(i)?n=JSON.stringify(i):n=i}return this._values.set(e,n),n}setValue(e,t){return super.setValue(e,t)}removeValue(e){return super.removeValue(e)}};ZB._keyPrefix="config.";let yq=ZB;class Trt{constructor(e,t,i){this._service=e,this._key=t,this._defaultValue=i,this.reset()}set(e){this._service.setContext(this._key,e)}reset(){typeof this._defaultValue>"u"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class ape{constructor(e){this.key=e}affectsSome(e){return e.has(this.key)}allKeysContainedIn(e){return this.affectsSome(e)}}class dpe{constructor(e){this.keys=e}affectsSome(e){for(const t of this.keys)if(e.has(t))return!0;return!1}allKeysContainedIn(e){return this.keys.every(t=>e.has(t))}}class Crt{constructor(e){this.events=e}affectsSome(e){for(const t of this.events)if(t.affectsSome(e))return!0;return!1}allKeysContainedIn(e){return this.events.every(t=>t.allKeysContainedIn(e))}}function Brt(s,e){return s.allKeysContainedIn(new Set(Object.keys(e)))}class GVe extends be{constructor(e){super(),this._onDidChangeContext=this._register(new fN({merge:t=>new Crt(t)})),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=e}createKey(e,t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new Trt(this,e,t)}bufferChangeEvents(e){this._onDidChangeContext.pause();try{e()}finally{this._onDidChangeContext.resume()}}createScoped(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new Lrt(this,e)}contextMatchesRules(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const t=this.getContextValuesContainer(this._myContextId);return e?e.evaluate(t):!0}getContextKeyValue(e){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(e)}setContext(e,t){if(this._isDisposed)return;const i=this.getContextValuesContainer(this._myContextId);i&&i.setValue(e,t)&&this._onDidChangeContext.fire(new ape(e))}removeContext(e){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(e)&&this._onDidChangeContext.fire(new ape(e))}getContext(e){return this._isDisposed?Gy.INSTANCE:this.getContextValuesContainer(vrt(e))}dispose(){super.dispose(),this._isDisposed=!0}}let Qq=class extends GVe{constructor(e){super(0),this._contexts=new Map,this._lastContextId=0;const t=this._register(new yq(this._myContextId,e,this._onDidChangeContext));this._contexts.set(this._myContextId,t)}getContextValuesContainer(e){return this._isDisposed?Gy.INSTANCE:this._contexts.get(e)||Gy.INSTANCE}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const t=++this._lastContextId;return this._contexts.set(t,new gre(t,this.getContextValuesContainer(e))),t}disposeContext(e){this._isDisposed||this._contexts.delete(e)}};Qq=Mrt([wrt(0,Hi)],Qq);class Lrt extends GVe{constructor(e,t){if(super(e.createChildContext()),this._parentChangeListener=this._register(new Lr),this._parent=e,this._updateParentChangeListener(),this._domNode=t,this._domNode.hasAttribute(d2)){let i="";this._domNode.classList&&(i=Array.from(this._domNode.classList.values()).join(", ")),console.error(`Element already has context attribute${i?": "+i:""}`)}this._domNode.setAttribute(d2,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(e=>{const i=this._parent.getContextValuesContainer(this._myContextId).value;Brt(e,i)||this._onDidChangeContext.fire(e)})}dispose(){this._isDisposed||(this._parent.disposeContext(this._myContextId),this._domNode.removeAttribute(d2),super.dispose())}getContextValuesContainer(e){return this._isDisposed?Gy.INSTANCE:this._parent.getContextValuesContainer(e)}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(e)}disposeContext(e){this._isDisposed||this._parent.disposeContext(e)}}function vrt(s){for(;s;){if(s.hasAttribute(d2)){const e=s.getAttribute(d2);return e?parseInt(e,10):NaN}s=s.parentElement}return 0}function krt(s,e,t){s.get(fi).createKey(String(e),xrt(t))}function xrt(s){return sZe(s,e=>{if(typeof e=="object"&&e.$mid===1)return ni.revive(e).toString();if(e instanceof ni)return e.toString()})}Sn.registerCommand("_setContext",krt);Sn.registerCommand({id:"getContextKeyInfo",handler(){return[...yt.all()].sort((s,e)=>s.key.localeCompare(e.key))},metadata:{description:F("getContextKeyInfo","A command that returns information about context keys"),args:[]}});Sn.registerCommand("_generateContextKeyInfo",function(){const s=[],e=new Set;for(const t of yt.all())e.has(t.key)||(e.add(t.key),s.push(t));s.sort((t,i)=>t.key.localeCompare(i.key)),console.log(JSON.stringify(s,void 0,2))});let Irt=class{constructor(e,t){this.key=e,this.data=t,this.incoming=new Map,this.outgoing=new Map}};class cpe{constructor(e){this._hashFn=e,this._nodes=new Map}roots(){const e=[];for(const t of this._nodes.values())t.outgoing.size===0&&e.push(t);return e}insertEdge(e,t){const i=this.lookupOrInsertNode(e),n=this.lookupOrInsertNode(t);i.outgoing.set(n.key,n),n.incoming.set(i.key,i)}removeNode(e){const t=this._hashFn(e);this._nodes.delete(t);for(const i of this._nodes.values())i.outgoing.delete(t),i.incoming.delete(t)}lookupOrInsertNode(e){const t=this._hashFn(e);let i=this._nodes.get(t);return i||(i=new Irt(t,e),this._nodes.set(t,i)),i}isEmpty(){return this._nodes.size===0}toString(){const e=[];for(const[t,i]of this._nodes)e.push(`${t}
- (-> incoming)[${[...i.incoming.keys()].join(", ")}]
- (outgoing ->)[${[...i.outgoing.keys()].join(",")}]
- `);return e.join(`
- `)}findCycleSlow(){for(const[e,t]of this._nodes){const i=new Set([e]),n=this._findCycle(t,i);if(n)return n}}_findCycle(e,t){for(const[i,n]of e.outgoing){if(t.has(i))return[...t,i].join(" -> ");t.add(i);const o=this._findCycle(n,t);if(o)return o;t.delete(i)}}}class yM{constructor(...e){this._entries=new Map;for(const[t,i]of e)this.set(t,i)}set(e,t){const i=this._entries.get(e);return this._entries.set(e,t),i}get(e){return this._entries.get(e)}}const Ert=!1;class hpe extends Error{constructor(e){super("cyclic dependency between services"),this.message=e.findCycleSlow()??`UNABLE to detect cycle, dumping graph:
- ${e.toString()}`}}class f5{constructor(e=new yM,t=!1,i,n=Ert){this._services=e,this._strict=t,this._parent=i,this._enableTracing=n,this._isDisposed=!1,this._servicesToMaybeDispose=new Set,this._children=new Set,this._activeInstantiations=new Set,this._services.set(ti,this),this._globalGraph=n?(i==null?void 0:i._globalGraph)??new cpe(o=>o):void 0}dispose(){if(!this._isDisposed){this._isDisposed=!0,Ws(this._children),this._children.clear();for(const e of this._servicesToMaybeDispose)R3(e)&&e.dispose();this._servicesToMaybeDispose.clear()}}_throwIfDisposed(){if(this._isDisposed)throw new Error("InstantiationService has been disposed")}createChild(e,t){this._throwIfDisposed();const i=this,n=new class extends f5{dispose(){i._children.delete(n),super.dispose()}}(e,this._strict,this,this._enableTracing);return this._children.add(n),t==null||t.add(n),n}invokeFunction(e,...t){this._throwIfDisposed();const i=c2.traceInvocation(this._enableTracing,e);let n=!1;try{return e({get:r=>{if(n)throw Ase("service accessor is only valid during the invocation of its target method");const l=this._getOrCreateServiceInstance(r,i);if(!l)throw new Error(`[invokeFunction] unknown service '${r}'`);return l}},...t)}finally{n=!0,i.stop()}}createInstance(e,...t){this._throwIfDisposed();let i,n;return e instanceof mg?(i=c2.traceCreation(this._enableTracing,e.ctor),n=this._createInstance(e.ctor,e.staticArguments.concat(t),i)):(i=c2.traceCreation(this._enableTracing,e),n=this._createInstance(e,t,i)),i.stop(),n}_createInstance(e,t=[],i){const n=Pm.getServiceDependencies(e).sort((l,a)=>l.index-a.index),o=[];for(const l of n){const a=this._getOrCreateServiceInstance(l.id,i);a||this._throwIfStrict(`[createInstance] ${e.name} depends on UNKNOWN service ${l.id}.`,!1),o.push(a)}const r=n.length>0?n[0].index:t.length;if(t.length!==r){console.trace(`[createInstance] First service dependency of ${e.name} at position ${r+1} conflicts with ${t.length} static arguments`);const l=r-t.length;l>0?t=t.concat(new Array(l)):t=t.slice(0,r)}return Reflect.construct(e,t.concat(o))}_setCreatedServiceInstance(e,t){if(this._services.get(e)instanceof mg)this._services.set(e,t);else if(this._parent)this._parent._setCreatedServiceInstance(e,t);else throw new Error("illegalState - setting UNKNOWN service instance")}_getServiceInstanceOrDescriptor(e){const t=this._services.get(e);return!t&&this._parent?this._parent._getServiceInstanceOrDescriptor(e):t}_getOrCreateServiceInstance(e,t){this._globalGraph&&this._globalGraphImplicitDependency&&this._globalGraph.insertEdge(this._globalGraphImplicitDependency,String(e));const i=this._getServiceInstanceOrDescriptor(e);return i instanceof mg?this._safeCreateAndCacheServiceInstance(e,i,t.branch(e,!0)):(t.branch(e,!1),i)}_safeCreateAndCacheServiceInstance(e,t,i){if(this._activeInstantiations.has(e))throw new Error(`illegal state - RECURSIVELY instantiating service '${e}'`);this._activeInstantiations.add(e);try{return this._createAndCacheServiceInstance(e,t,i)}finally{this._activeInstantiations.delete(e)}}_createAndCacheServiceInstance(e,t,i){var a;const n=new cpe(d=>d.id.toString());let o=0;const r=[{id:e,desc:t,_trace:i}],l=new Set;for(;r.length;){const d=r.pop();if(!l.has(String(d.id))){if(l.add(String(d.id)),n.lookupOrInsertNode(d),o++>1e3)throw new hpe(n);for(const c of Pm.getServiceDependencies(d.desc.ctor)){const h=this._getServiceInstanceOrDescriptor(c.id);if(h||this._throwIfStrict(`[createInstance] ${e} depends on ${c.id} which is NOT registered.`,!0),(a=this._globalGraph)==null||a.insertEdge(String(d.id),String(c.id)),h instanceof mg){const u={id:c.id,desc:h,_trace:d._trace.branch(c.id,!0)};n.insertEdge(d,u),r.push(u)}}}}for(;;){const d=n.roots();if(d.length===0){if(!n.isEmpty())throw new hpe(n);break}for(const{data:c}of d){if(this._getServiceInstanceOrDescriptor(c.id)instanceof mg){const u=this._createServiceInstanceWithOwner(c.id,c.desc.ctor,c.desc.staticArguments,c.desc.supportsDelayedInstantiation,c._trace);this._setCreatedServiceInstance(c.id,u)}n.removeNode(c)}}return this._getServiceInstanceOrDescriptor(e)}_createServiceInstanceWithOwner(e,t,i=[],n,o){if(this._services.get(e)instanceof mg)return this._createServiceInstance(e,t,i,n,o,this._servicesToMaybeDispose);if(this._parent)return this._parent._createServiceInstanceWithOwner(e,t,i,n,o);throw new Error(`illegalState - creating UNKNOWN service instance ${t.name}`)}_createServiceInstance(e,t,i=[],n,o,r){if(n){const l=new f5(void 0,this._strict,this,this._enableTracing);l._globalGraphImplicitDependency=String(e);const a=new Map,d=new nHe(()=>{const c=l._createInstance(t,i,o);for(const[h,u]of a){const m=c[h];if(typeof m=="function")for(const p of u)p.disposable=m.apply(c,p.listener)}return a.clear(),r.add(c),c});return new Proxy(Object.create(null),{get(c,h){if(!d.isInitialized&&typeof h=="string"&&(h.startsWith("onDid")||h.startsWith("onWill"))){let p=a.get(h);return p||(p=new Ia,a.set(h,p)),(f,b,U)=>{if(d.isInitialized)return d.value[h](f,b,U);{const S={listener:[f,b,U],disposable:void 0},Z=p.push(S);return ei(()=>{var y;Z(),(y=S.disposable)==null||y.dispose()})}}}if(h in c)return c[h];const u=d.value;let m=u[h];return typeof m!="function"||(m=m.bind(u),c[h]=m),m},set(c,h,u){return d.value[h]=u,!0},getPrototypeOf(c){return t.prototype}})}else{const l=this._createInstance(t,i,o);return r.add(l),l}}_throwIfStrict(e,t){if(t&&console.warn(e),this._strict)throw new Error(e)}}const Mc=class Mc{static traceInvocation(e,t){return e?new Mc(2,t.name||new Error().stack.split(`
- `).slice(3,4).join(`
- `)):Mc._None}static traceCreation(e,t){return e?new Mc(1,t.name):Mc._None}constructor(e,t){this.type=e,this.name=t,this._start=Date.now(),this._dep=[]}branch(e,t){const i=new Mc(3,e.toString());return this._dep.push([e,t,i]),i}stop(){const e=Date.now()-this._start;Mc._totals+=e;let t=!1;function i(o,r){const l=[],a=new Array(o+1).join(" ");for(const[d,c,h]of r._dep)if(c&&h){t=!0,l.push(`${a}CREATES -> ${d}`);const u=i(o+1,h);u&&l.push(u)}else l.push(`${a}uses -> ${d}`);return l.join(`
- `)}const n=[`${this.type===1?"CREATE":"CALL"} ${this.name}`,`${i(1,this)}`,`DONE, took ${e.toFixed(2)}ms (grand total ${Mc._totals.toFixed(2)}ms)`];(e>2||t)&&Mc.all.add(n.join(`
- `))}};Mc.all=new Set,Mc._None=new class extends Mc{constructor(){super(0,null)}stop(){}branch(){return this}},Mc._totals=0;let c2=Mc;const Drt=new Set([Ti.inMemory,Ti.vscodeSourceControl,Ti.walkThrough,Ti.walkThroughSnippet,Ti.vscodeChatCodeBlock]);class Grt{constructor(){this._byResource=new Or,this._byOwner=new Map}set(e,t,i){let n=this._byResource.get(e);n||(n=new Map,this._byResource.set(e,n)),n.set(t,i);let o=this._byOwner.get(t);o||(o=new Or,this._byOwner.set(t,o)),o.set(e,i)}get(e,t){const i=this._byResource.get(e);return i==null?void 0:i.get(t)}delete(e,t){let i=!1,n=!1;const o=this._byResource.get(e);o&&(i=o.delete(t));const r=this._byOwner.get(t);if(r&&(n=r.delete(e)),i!==n)throw new Error("illegal state");return i&&n}values(e){var t,i;return typeof e=="string"?((t=this._byOwner.get(e))==null?void 0:t.values())??Zn.empty():ni.isUri(e)?((i=this._byResource.get(e))==null?void 0:i.values())??Zn.empty():Zn.map(Zn.concat(...this._byOwner.values()),n=>n[1])}}class Jrt{constructor(e){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new Or,this._service=e,this._subscription=e.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(e){for(const t of e){const i=this._data.get(t);i&&this._substract(i);const n=this._resourceStats(t);this._add(n),this._data.set(t,n)}}_resourceStats(e){const t={errors:0,warnings:0,infos:0,unknowns:0};if(Drt.has(e.scheme))return t;for(const{severity:i}of this._service.read({resource:e}))i===Wo.Error?t.errors+=1:i===Wo.Warning?t.warnings+=1:i===Wo.Info?t.infos+=1:t.unknowns+=1;return t}_substract(e){this.errors-=e.errors,this.warnings-=e.warnings,this.infos-=e.infos,this.unknowns-=e.unknowns}_add(e){this.errors+=e.errors,this.warnings+=e.warnings,this.infos+=e.infos,this.unknowns+=e.unknowns}}class nU{constructor(){this._onMarkerChanged=new UZe({delay:0,merge:nU._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new Grt,this._stats=new Jrt(this)}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(e,t){for(const i of t||[])this.changeOne(e,i,[])}changeOne(e,t,i){if($Ae(i))this._data.delete(t,e)&&this._onMarkerChanged.fire([t]);else{const n=[];for(const o of i){const r=nU._toMarker(e,t,o);r&&n.push(r)}this._data.set(t,e,n),this._onMarkerChanged.fire([t])}}static _toMarker(e,t,i){let{code:n,severity:o,message:r,source:l,startLineNumber:a,startColumn:d,endLineNumber:c,endColumn:h,relatedInformation:u,tags:m}=i;if(r)return a=a>0?a:1,d=d>0?d:1,c=c>=a?c:a,h=h>0?h:d,{resource:t,owner:e,code:n,severity:o,message:r,source:l,startLineNumber:a,startColumn:d,endLineNumber:c,endColumn:h,relatedInformation:u,tags:m}}changeAll(e,t){const i=[],n=this._data.values(e);if(n)for(const o of n){const r=Zn.first(o);r&&(i.push(r.resource),this._data.delete(r.resource,e))}if(ba(t)){const o=new Or;for(const{resource:r,marker:l}of t){const a=nU._toMarker(e,r,l);if(!a)continue;const d=o.get(r);d?d.push(a):(o.set(r,[a]),i.push(r))}for(const[r,l]of o)this._data.set(r,e,l)}i.length>0&&this._onMarkerChanged.fire(i)}read(e=Object.create(null)){let{owner:t,resource:i,severities:n,take:o}=e;if((!o||o<0)&&(o=-1),t&&i){const r=this._data.get(i,t);if(r){const l=[];for(const a of r)if(nU._accept(a,n)){const d=l.push(a);if(o>0&&d===o)break}return l}else return[]}else if(!t&&!i){const r=[];for(const l of this._data.values())for(const a of l)if(nU._accept(a,n)){const d=r.push(a);if(o>0&&d===o)return r}return r}else{const r=this._data.values(i??t),l=[];for(const a of r)for(const d of a)if(nU._accept(d,n)){const c=l.push(d);if(o>0&&c===o)return l}return l}}static _accept(e,t){return t===void 0||(t&e.severity)===e.severity}static _merge(e){const t=new Or;for(const i of e)for(const n of i)t.set(n,!0);return Array.from(t.keys())}}class Xrt extends be{get configurationModel(){return this._configurationModel}constructor(e){super(),this.logService=e,this._configurationModel=ol.createEmptyModel(this.logService)}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=ol.createEmptyModel(this.logService);const e=fo.as(rm.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(e),e)}updateConfigurationModel(e,t){const i=this.getConfigurationDefaultOverrides();for(const n of e){const o=i[n],r=t[n];o!==void 0?this._configurationModel.setValue(n,o):r?this._configurationModel.setValue(n,r.default):this._configurationModel.removeValue(n)}}}const oA=un("accessibilitySignalService"),En=class En{static register(e){return new En(e.fileName)}constructor(e){this.fileName=e}};En.error=En.register({fileName:"error.mp3"}),En.warning=En.register({fileName:"warning.mp3"}),En.success=En.register({fileName:"success.mp3"}),En.foldedArea=En.register({fileName:"foldedAreas.mp3"}),En.break=En.register({fileName:"break.mp3"}),En.quickFixes=En.register({fileName:"quickFixes.mp3"}),En.taskCompleted=En.register({fileName:"taskCompleted.mp3"}),En.taskFailed=En.register({fileName:"taskFailed.mp3"}),En.terminalBell=En.register({fileName:"terminalBell.mp3"}),En.diffLineInserted=En.register({fileName:"diffLineInserted.mp3"}),En.diffLineDeleted=En.register({fileName:"diffLineDeleted.mp3"}),En.diffLineModified=En.register({fileName:"diffLineModified.mp3"}),En.chatRequestSent=En.register({fileName:"chatRequestSent.mp3"}),En.chatResponseReceived1=En.register({fileName:"chatResponseReceived1.mp3"}),En.chatResponseReceived2=En.register({fileName:"chatResponseReceived2.mp3"}),En.chatResponseReceived3=En.register({fileName:"chatResponseReceived3.mp3"}),En.chatResponseReceived4=En.register({fileName:"chatResponseReceived4.mp3"}),En.clear=En.register({fileName:"clear.mp3"}),En.save=En.register({fileName:"save.mp3"}),En.format=En.register({fileName:"format.mp3"}),En.voiceRecordingStarted=En.register({fileName:"voiceRecordingStarted.mp3"}),En.voiceRecordingStopped=En.register({fileName:"voiceRecordingStopped.mp3"}),En.progress=En.register({fileName:"progress.mp3"});let so=En;class Yrt{constructor(e){this.randomOneOf=e}}const ji=class ji{constructor(e,t,i,n,o,r){this.sound=e,this.name=t,this.legacySoundSettingsKey=i,this.settingsKey=n,this.legacyAnnouncementSettingsKey=o,this.announcementMessage=r}static register(e){const t=new Yrt("randomOneOf"in e.sound?e.sound.randomOneOf:[e.sound]),i=new ji(t,e.name,e.legacySoundSettingsKey,e.settingsKey,e.legacyAnnouncementSettingsKey,e.announcementMessage);return ji._signals.add(i),i}};ji._signals=new Set,ji.errorAtPosition=ji.register({name:F("accessibilitySignals.positionHasError.name","Error at Position"),sound:so.error,announcementMessage:F("accessibility.signals.positionHasError","Error"),settingsKey:"accessibility.signals.positionHasError",delaySettingsKey:"accessibility.signalOptions.delays.errorAtPosition"}),ji.warningAtPosition=ji.register({name:F("accessibilitySignals.positionHasWarning.name","Warning at Position"),sound:so.warning,announcementMessage:F("accessibility.signals.positionHasWarning","Warning"),settingsKey:"accessibility.signals.positionHasWarning",delaySettingsKey:"accessibility.signalOptions.delays.warningAtPosition"}),ji.errorOnLine=ji.register({name:F("accessibilitySignals.lineHasError.name","Error on Line"),sound:so.error,legacySoundSettingsKey:"audioCues.lineHasError",legacyAnnouncementSettingsKey:"accessibility.alert.error",announcementMessage:F("accessibility.signals.lineHasError","Error on Line"),settingsKey:"accessibility.signals.lineHasError"}),ji.warningOnLine=ji.register({name:F("accessibilitySignals.lineHasWarning.name","Warning on Line"),sound:so.warning,legacySoundSettingsKey:"audioCues.lineHasWarning",legacyAnnouncementSettingsKey:"accessibility.alert.warning",announcementMessage:F("accessibility.signals.lineHasWarning","Warning on Line"),settingsKey:"accessibility.signals.lineHasWarning"}),ji.foldedArea=ji.register({name:F("accessibilitySignals.lineHasFoldedArea.name","Folded Area on Line"),sound:so.foldedArea,legacySoundSettingsKey:"audioCues.lineHasFoldedArea",legacyAnnouncementSettingsKey:"accessibility.alert.foldedArea",announcementMessage:F("accessibility.signals.lineHasFoldedArea","Folded"),settingsKey:"accessibility.signals.lineHasFoldedArea"}),ji.break=ji.register({name:F("accessibilitySignals.lineHasBreakpoint.name","Breakpoint on Line"),sound:so.break,legacySoundSettingsKey:"audioCues.lineHasBreakpoint",legacyAnnouncementSettingsKey:"accessibility.alert.breakpoint",announcementMessage:F("accessibility.signals.lineHasBreakpoint","Breakpoint"),settingsKey:"accessibility.signals.lineHasBreakpoint"}),ji.inlineSuggestion=ji.register({name:F("accessibilitySignals.lineHasInlineSuggestion.name","Inline Suggestion on Line"),sound:so.quickFixes,legacySoundSettingsKey:"audioCues.lineHasInlineSuggestion",settingsKey:"accessibility.signals.lineHasInlineSuggestion"}),ji.terminalQuickFix=ji.register({name:F("accessibilitySignals.terminalQuickFix.name","Terminal Quick Fix"),sound:so.quickFixes,legacySoundSettingsKey:"audioCues.terminalQuickFix",legacyAnnouncementSettingsKey:"accessibility.alert.terminalQuickFix",announcementMessage:F("accessibility.signals.terminalQuickFix","Quick Fix"),settingsKey:"accessibility.signals.terminalQuickFix"}),ji.onDebugBreak=ji.register({name:F("accessibilitySignals.onDebugBreak.name","Debugger Stopped on Breakpoint"),sound:so.break,legacySoundSettingsKey:"audioCues.onDebugBreak",legacyAnnouncementSettingsKey:"accessibility.alert.onDebugBreak",announcementMessage:F("accessibility.signals.onDebugBreak","Breakpoint"),settingsKey:"accessibility.signals.onDebugBreak"}),ji.noInlayHints=ji.register({name:F("accessibilitySignals.noInlayHints","No Inlay Hints on Line"),sound:so.error,legacySoundSettingsKey:"audioCues.noInlayHints",legacyAnnouncementSettingsKey:"accessibility.alert.noInlayHints",announcementMessage:F("accessibility.signals.noInlayHints","No Inlay Hints"),settingsKey:"accessibility.signals.noInlayHints"}),ji.taskCompleted=ji.register({name:F("accessibilitySignals.taskCompleted","Task Completed"),sound:so.taskCompleted,legacySoundSettingsKey:"audioCues.taskCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.taskCompleted",announcementMessage:F("accessibility.signals.taskCompleted","Task Completed"),settingsKey:"accessibility.signals.taskCompleted"}),ji.taskFailed=ji.register({name:F("accessibilitySignals.taskFailed","Task Failed"),sound:so.taskFailed,legacySoundSettingsKey:"audioCues.taskFailed",legacyAnnouncementSettingsKey:"accessibility.alert.taskFailed",announcementMessage:F("accessibility.signals.taskFailed","Task Failed"),settingsKey:"accessibility.signals.taskFailed"}),ji.terminalCommandFailed=ji.register({name:F("accessibilitySignals.terminalCommandFailed","Terminal Command Failed"),sound:so.error,legacySoundSettingsKey:"audioCues.terminalCommandFailed",legacyAnnouncementSettingsKey:"accessibility.alert.terminalCommandFailed",announcementMessage:F("accessibility.signals.terminalCommandFailed","Command Failed"),settingsKey:"accessibility.signals.terminalCommandFailed"}),ji.terminalCommandSucceeded=ji.register({name:F("accessibilitySignals.terminalCommandSucceeded","Terminal Command Succeeded"),sound:so.success,announcementMessage:F("accessibility.signals.terminalCommandSucceeded","Command Succeeded"),settingsKey:"accessibility.signals.terminalCommandSucceeded"}),ji.terminalBell=ji.register({name:F("accessibilitySignals.terminalBell","Terminal Bell"),sound:so.terminalBell,legacySoundSettingsKey:"audioCues.terminalBell",legacyAnnouncementSettingsKey:"accessibility.alert.terminalBell",announcementMessage:F("accessibility.signals.terminalBell","Terminal Bell"),settingsKey:"accessibility.signals.terminalBell"}),ji.notebookCellCompleted=ji.register({name:F("accessibilitySignals.notebookCellCompleted","Notebook Cell Completed"),sound:so.taskCompleted,legacySoundSettingsKey:"audioCues.notebookCellCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellCompleted",announcementMessage:F("accessibility.signals.notebookCellCompleted","Notebook Cell Completed"),settingsKey:"accessibility.signals.notebookCellCompleted"}),ji.notebookCellFailed=ji.register({name:F("accessibilitySignals.notebookCellFailed","Notebook Cell Failed"),sound:so.taskFailed,legacySoundSettingsKey:"audioCues.notebookCellFailed",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellFailed",announcementMessage:F("accessibility.signals.notebookCellFailed","Notebook Cell Failed"),settingsKey:"accessibility.signals.notebookCellFailed"}),ji.diffLineInserted=ji.register({name:F("accessibilitySignals.diffLineInserted","Diff Line Inserted"),sound:so.diffLineInserted,legacySoundSettingsKey:"audioCues.diffLineInserted",settingsKey:"accessibility.signals.diffLineInserted"}),ji.diffLineDeleted=ji.register({name:F("accessibilitySignals.diffLineDeleted","Diff Line Deleted"),sound:so.diffLineDeleted,legacySoundSettingsKey:"audioCues.diffLineDeleted",settingsKey:"accessibility.signals.diffLineDeleted"}),ji.diffLineModified=ji.register({name:F("accessibilitySignals.diffLineModified","Diff Line Modified"),sound:so.diffLineModified,legacySoundSettingsKey:"audioCues.diffLineModified",settingsKey:"accessibility.signals.diffLineModified"}),ji.chatRequestSent=ji.register({name:F("accessibilitySignals.chatRequestSent","Chat Request Sent"),sound:so.chatRequestSent,legacySoundSettingsKey:"audioCues.chatRequestSent",legacyAnnouncementSettingsKey:"accessibility.alert.chatRequestSent",announcementMessage:F("accessibility.signals.chatRequestSent","Chat Request Sent"),settingsKey:"accessibility.signals.chatRequestSent"}),ji.chatResponseReceived=ji.register({name:F("accessibilitySignals.chatResponseReceived","Chat Response Received"),legacySoundSettingsKey:"audioCues.chatResponseReceived",sound:{randomOneOf:[so.chatResponseReceived1,so.chatResponseReceived2,so.chatResponseReceived3,so.chatResponseReceived4]},settingsKey:"accessibility.signals.chatResponseReceived"}),ji.progress=ji.register({name:F("accessibilitySignals.progress","Progress"),sound:so.progress,legacySoundSettingsKey:"audioCues.chatResponsePending",legacyAnnouncementSettingsKey:"accessibility.alert.progress",announcementMessage:F("accessibility.signals.progress","Progress"),settingsKey:"accessibility.signals.progress"}),ji.clear=ji.register({name:F("accessibilitySignals.clear","Clear"),sound:so.clear,legacySoundSettingsKey:"audioCues.clear",legacyAnnouncementSettingsKey:"accessibility.alert.clear",announcementMessage:F("accessibility.signals.clear","Clear"),settingsKey:"accessibility.signals.clear"}),ji.save=ji.register({name:F("accessibilitySignals.save","Save"),sound:so.save,legacySoundSettingsKey:"audioCues.save",legacyAnnouncementSettingsKey:"accessibility.alert.save",announcementMessage:F("accessibility.signals.save","Save"),settingsKey:"accessibility.signals.save"}),ji.format=ji.register({name:F("accessibilitySignals.format","Format"),sound:so.format,legacySoundSettingsKey:"audioCues.format",legacyAnnouncementSettingsKey:"accessibility.alert.format",announcementMessage:F("accessibility.signals.format","Format"),settingsKey:"accessibility.signals.format"}),ji.voiceRecordingStarted=ji.register({name:F("accessibilitySignals.voiceRecordingStarted","Voice Recording Started"),sound:so.voiceRecordingStarted,legacySoundSettingsKey:"audioCues.voiceRecordingStarted",settingsKey:"accessibility.signals.voiceRecordingStarted"}),ji.voiceRecordingStopped=ji.register({name:F("accessibilitySignals.voiceRecordingStopped","Voice Recording Stopped"),sound:so.voiceRecordingStopped,legacySoundSettingsKey:"audioCues.voiceRecordingStopped",settingsKey:"accessibility.signals.voiceRecordingStopped"});let Gc=ji;class _rt extends be{constructor(e,t=[]){super(),this.logger=new C4e([e,...t]),this._register(e.onDidChangeLogLevel(i=>this.setLevel(i)))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(e){this.logger.setLevel(e)}getLevel(){return this.logger.getLevel()}trace(e,...t){this.logger.trace(e,...t)}debug(e,...t){this.logger.debug(e,...t)}info(e,...t){this.logger.info(e,...t)}warn(e,...t){this.logger.warn(e,...t)}error(e,...t){this.logger.error(e,...t)}}const JVe=[];function QM(s){JVe.push(s)}function zrt(){return JVe.slice(0)}class Ort{getParseResult(e){}}var n0=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},er=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class jrt{constructor(e){this.disposed=!1,this.model=e,this._onWillDispose=new fe}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let Mq=class{constructor(e){this.modelService=e}createModelReference(e){const t=this.modelService.getModel(e);return t?Promise.resolve(new Ije(new jrt(t))):Promise.reject(new Error("Model not found"))}};Mq=n0([er(0,zs)],Mq);const H_=class H_{show(){return H_.NULL_PROGRESS_RUNNER}async showWhile(e,t){await e}};H_.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};let wq=H_;class Prt{withProgress(e,t,i){return t({report:()=>{}})}}class Hrt{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}}class Krt{async confirm(e){return{confirmed:this.doConfirm(e.message,e.detail),checkboxChecked:!1}}doConfirm(e,t){let i=e;return t&&(i=i+`
- `+t),Us.confirm(i)}async prompt(e){var n;let t;if(this.doConfirm(e.message,e.detail)){const o=[...e.buttons??[]];e.cancelButton&&typeof e.cancelButton!="string"&&typeof e.cancelButton!="boolean"&&o.push(e.cancelButton),t=await((n=o[0])==null?void 0:n.run({checkboxChecked:!1}))}return{result:t}}async error(e,t){await this.prompt({type:zo.Error,message:e,detail:t})}}const SB=class SB{info(e){return this.notify({severity:zo.Info,message:e})}warn(e){return this.notify({severity:zo.Warning,message:e})}error(e){return this.notify({severity:zo.Error,message:e})}notify(e){switch(e.severity){case zo.Error:console.error(e.message);break;case zo.Warning:console.warn(e.message);break;default:console.log(e.message);break}return SB.NO_OP}prompt(e,t,i,n){return SB.NO_OP}status(e,t){return be.None}};SB.NO_OP=new q7e;let Tq=SB,Cq=class{constructor(e){this._onWillExecuteCommand=new fe,this._onDidExecuteCommand=new fe,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=e}executeCommand(e,...t){const i=Sn.getCommand(e);if(!i)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});const n=this._instantiationService.invokeFunction.apply(this._instantiationService,[i.handler,...t]);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}};Cq=n0([er(0,ti)],Cq);let Jy=class extends fet{constructor(e,t,i,n,o,r){super(e,t,i,n,o),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const l=m=>{const p=new De;p.add(Te(m,ut.KEY_DOWN,g=>{const f=new Ts(g);this._dispatch(f,f.target)&&(f.preventDefault(),f.stopPropagation())})),p.add(Te(m,ut.KEY_UP,g=>{const f=new Ts(g);this._singleModifierDispatch(f,f.target)&&f.preventDefault()})),this._domNodeListeners.push(new qrt(m,p))},a=m=>{for(let p=0;p<this._domNodeListeners.length;p++){const g=this._domNodeListeners[p];g.domNode===m&&(this._domNodeListeners.splice(p,1),g.dispose())}},d=m=>{m.getOption(61)||l(m.getContainerDomNode())},c=m=>{m.getOption(61)||a(m.getContainerDomNode())};this._register(r.onCodeEditorAdd(d)),this._register(r.onCodeEditorRemove(c)),r.listCodeEditors().forEach(d);const h=m=>{l(m.getContainerDomNode())},u=m=>{a(m.getContainerDomNode())};this._register(r.onDiffEditorAdd(h)),this._register(r.onDiffEditorRemove(u)),r.listDiffEditors().forEach(h)}addDynamicKeybinding(e,t,i,n){return Pu(Sn.registerCommand(e,i),this.addDynamicKeybindings([{keybinding:t,command:e,when:n}]))}addDynamicKeybindings(e){const t=e.map(i=>({keybinding:o8(i.keybinding,rc),command:i.command??null,commandArgs:i.commandArgs,when:i.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}));return this._dynamicKeybindings=this._dynamicKeybindings.concat(t),this.updateResolver(),ei(()=>{for(let i=0;i<this._dynamicKeybindings.length;i++)if(this._dynamicKeybindings[i]===t[0]){this._dynamicKeybindings.splice(i,t.length),this.updateResolver();return}})}updateResolver(){this._cachedResolver=null,this._onDidUpdateKeybindings.fire()}_getResolver(){if(!this._cachedResolver){const e=this._toNormalizedKeybindingItems(Oa.getDefaultKeybindings(),!0),t=this._toNormalizedKeybindingItems(this._dynamicKeybindings,!1);this._cachedResolver=new $C(e,t,i=>this._log(i))}return this._cachedResolver}_documentHasFocus(){return Us.document.hasFocus()}_toNormalizedKeybindingItems(e,t){const i=[];let n=0;for(const o of e){const r=o.when||void 0,l=o.keybinding;if(!l)i[n++]=new $ue(void 0,o.command,o.commandArgs,r,t,null,!1);else{const a=mL.resolveKeybinding(l,rc);for(const d of a)i[n++]=new $ue(d,o.command,o.commandArgs,r,t,null,!1)}}return i}resolveKeyboardEvent(e){const t=new jf(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,e.keyCode);return new mL([t],rc)}};Jy=n0([er(0,fi),er(1,ks),er(2,$l),er(3,jo),er(4,Cl),er(5,kn)],Jy);class qrt extends be{constructor(e,t){super(),this.domNode=e,this._register(t)}}function upe(s){return s&&typeof s=="object"&&(!s.overrideIdentifier||typeof s.overrideIdentifier=="string")&&(!s.resource||s.resource instanceof ni)}let b5=class{constructor(e){this.logService=e,this._onDidChangeConfiguration=new fe,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const t=new Xrt(e);this._configuration=new d9(t.reload(),ol.createEmptyModel(e),ol.createEmptyModel(e),ol.createEmptyModel(e),ol.createEmptyModel(e),ol.createEmptyModel(e),new Or,ol.createEmptyModel(e),new Or,e),t.dispose()}getValue(e,t){const i=typeof e=="string"?e:void 0,n=upe(e)?e:upe(t)?t:{};return this._configuration.getValue(i,n,void 0)}updateValues(e){const t={data:this._configuration.toData()},i=[];for(const n of e){const[o,r]=n;this.getValue(o)!==r&&(this._configuration.updateValue(o,r),i.push(o))}if(i.length>0){const n=new het({keys:i,overrides:[]},t,this._configuration,void 0,this.logService);n.source=8,this._onDidChangeConfiguration.fire(n)}return Promise.resolve()}updateValue(e,t,i,n){return this.updateValues([[e,t]])}inspect(e,t={}){return this._configuration.inspect(e,t,void 0)}};b5=n0([er(0,Cl)],b5);let Bq=class{constructor(e,t,i){this.configurationService=e,this.modelService=t,this.languageService=i,this._onDidChangeConfiguration=new fe,this.configurationService.onDidChangeConfiguration(n=>{this._onDidChangeConfiguration.fire({affectedKeys:n.affectedKeys,affectsConfiguration:(o,r)=>n.affectsConfiguration(r)})})}getValue(e,t,i){const n=ge.isIPosition(t)?t:null,o=n?typeof i=="string"?i:void 0:typeof t=="string"?t:void 0,r=e?this.getLanguage(e,n):void 0;return typeof o>"u"?this.configurationService.getValue({resource:e,overrideIdentifier:r}):this.configurationService.getValue(o,{resource:e,overrideIdentifier:r})}getLanguage(e,t){const i=this.modelService.getModel(e);return i?t?i.getLanguageIdAtPosition(t.lineNumber,t.column):i.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(e)}};Bq=n0([er(0,Hi),er(1,zs),er(2,ao)],Bq);let Lq=class{constructor(e){this.configurationService=e}getEOL(e,t){const i=this.configurationService.getValue("files.eol",{overrideIdentifier:t,resource:e});return i&&typeof i=="string"&&i!=="auto"?i:_a||hn?`
- `:`\r
- `}};Lq=n0([er(0,Hi)],Lq);class $rt{publicLog2(){}}const NB=class NB{constructor(){const e=ni.from({scheme:NB.SCHEME,authority:"model",path:"/"});this.workspace={id:KNe,folders:[new Cet({uri:e,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(e){return e&&e.scheme===NB.SCHEME?this.workspace.folders[0]:null}};NB.SCHEME="inmemory";let vq=NB;function U5(s,e,t){if(!e||!(s instanceof b5))return;const i=[];Object.keys(e).forEach(n=>{oet(n)&&i.push([`editor.${n}`,e[n]]),t&&ret(n)&&i.push([`diffEditor.${n}`,e[n]])}),i.length>0&&s.updateValues(i)}let kq=class{constructor(e){this._modelService=e}hasPreviewHandler(){return!1}async apply(e,t){const i=Array.isArray(e)?e:Qoe.convert(e),n=new Map;for(const l of i){if(!(l instanceof NF))throw new Error("bad edit - only text edits are supported");const a=this._modelService.getModel(l.resource);if(!a)throw new Error("bad edit - model not found");if(typeof l.versionId=="number"&&a.getVersionId()!==l.versionId)throw new Error("bad state - model changed in the meantime");let d=n.get(a);d||(d=[],n.set(a,d)),d.push(mo.replaceMove(z.lift(l.textEdit.range),l.textEdit.text))}let o=0,r=0;for(const[l,a]of n)l.pushStackElement(),l.pushEditOperations([],a,()=>[]),l.pushStackElement(),r+=1,o+=a.length;return{ariaSummary:bN(Z6.bulkEditServiceSummary,o,r),isApplied:o>0}}};kq=n0([er(0,zs)],kq);class elt{getUriLabel(e,t){return e.scheme==="file"?e.fsPath:e.path}getUriBasenameLabel(e){return Hh(e)}}let xq=class extends eet{constructor(e,t){super(e),this._codeEditorService=t}showContextView(e,t,i){if(!t){const n=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();n&&(t=n.getContainerDomNode())}return super.showContextView(e,t,i)}};xq=n0([er(0,eA),er(1,kn)],xq);class tlt{constructor(){this._neverEmitter=new fe,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class ilt extends y6{constructor(){super()}}class nlt extends _rt{constructor(){super(new T4e)}}let Iq=class extends x6{constructor(e,t,i,n,o,r){super(e,t,i,n,o,r),this.configure({blockMouse:!1})}};Iq=n0([er(0,$l),er(1,jo),er(2,ab),er(3,qn),er(4,ah),er(5,fi)],Iq);const Eq={amdModuleId:"vs/editor/common/services/editorSimpleWorker",esmModuleLocation:void 0,label:"editorWorkerService"};let Dq=class extends B8{constructor(e,t,i,n,o){super(Eq,e,t,i,n,o)}};Dq=n0([er(0,zs),er(1,z3),er(2,Cl),er(3,bo),er(4,xt)],Dq);class slt{async playSignal(e,t){}}Fn(Cl,nlt,0);Fn(Hi,b5,0);Fn(z3,Bq,0);Fn(zSe,Lq,0);Fn(WN,vq,0);Fn(vy,elt,0);Fn($l,$rt,0);Fn(qv,Krt,0);Fn(toe,Hrt,0);Fn(jo,Tq,0);Fn(i0,nU,0);Fn(ao,ilt,0);Fn(uh,Vrt,0);Fn(zs,K6,0);Fn(xoe,J6,0);Fn(fi,Qq,0);Fn(HNe,Prt,0);Fn(iA,wq,0);Fn(lm,_tt,0);Fn(Ld,Dq,0);Fn(nk,kq,0);Fn(qNe,tlt,0);Fn(Td,Mq,0);Fn(Fc,Zq,0);Fn(iu,Iot,0);Fn(ks,Cq,0);Fn(qn,Jy,0);Fn(tu,Uq,0);Fn(ab,xq,0);Fn(Bd,G6,0);Fn(hb,Wq,0);Fn(Uc,Iq,0);Fn(ah,Sq,0);Fn(oA,slt,0);Fn(PRe,Ort,0);var Ri;(function(s){const e=new yM;for(const[a,d]of Vhe())e.set(a,d);const t=new f5(e,!0);e.set(ti,t);function i(a){n||r({});const d=e.get(a);if(!d)throw new Error("Missing service "+a);return d instanceof mg?t.invokeFunction(c=>c.get(a)):d}s.get=i;let n=!1;const o=new fe;function r(a){if(n)return t;n=!0;for(const[c,h]of Vhe())e.get(c)||e.set(c,h);for(const c in a)if(a.hasOwnProperty(c)){const h=un(c);e.get(h)instanceof mg&&e.set(h,a[c])}const d=zrt();for(const c of d)try{t.createInstance(c)}catch(h){wi(h)}return o.fire(),t}s.initialize=r;function l(a){if(n)return a();const d=new De,c=d.add(o.event(()=>{c.dispose(),d.add(a())}));return d}s.withServices=l})(Ri||(Ri={}));function olt(s,e){return new rlt(s,e)}class rlt extends ZX{constructor(e,t){const i={amdModuleId:Eq.amdModuleId,esmModuleLocation:Eq.esmModuleLocation,label:t.label};super(i,t.keepIdleModels||!1,e),this._foreignModuleId=t.moduleId,this._foreignModuleCreateData=t.createData||null,this._foreignModuleHost=t.host||null,this._foreignProxy=null}fhr(e,t){if(!this._foreignModuleHost||typeof this._foreignModuleHost[e]!="function")return Promise.reject(new Error("Missing method "+e+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost,t))}catch(i){return Promise.reject(i)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then(e=>{const t=this._foreignModuleHost?KK(this._foreignModuleHost):[];return e.$loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,t).then(i=>{this._foreignModuleCreateData=null;const n=(l,a)=>e.$fmr(l,a),o=(l,a)=>function(){const d=Array.prototype.slice.call(arguments,0);return a(l,d)},r={};for(const l of i)r[l]=o(l,n);return r})})),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(e){return this.workerWithSyncedResources(e).then(t=>this.getProxy())}}const pk={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"};class Da{constructor(e,t,i,n){this.startColumn=e,this.endColumn=t,this.className=i,this.type=n,this._lineDecorationBrand=void 0}static _equals(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type}static equalsArr(e,t){const i=e.length,n=t.length;if(i!==n)return!1;for(let o=0;o<i;o++)if(!Da._equals(e[o],t[o]))return!1;return!0}static extractWrapped(e,t,i){if(e.length===0)return e;const n=t+1,o=i+1,r=i-t,l=[];let a=0;for(const d of e)d.endColumn<=n||d.startColumn>=o||(l[a++]=new Da(Math.max(1,d.startColumn-n+1),Math.min(r+1,d.endColumn-n+1),d.className,d.type));return l}static filter(e,t,i,n){if(e.length===0)return[];const o=[];let r=0;for(let l=0,a=e.length;l<a;l++){const d=e[l],c=d.range;if(c.endLineNumber<t||c.startLineNumber>t||c.isEmpty()&&(d.type===0||d.type===3))continue;const h=c.startLineNumber===t?c.startColumn:i,u=c.endLineNumber===t?c.endColumn:n;o[r++]=new Da(h,u,d.inlineClassName,d.type)}return o}static _typeCompare(e,t){const i=[2,0,1,3];return i[e]-i[t]}static compare(e,t){if(e.startColumn!==t.startColumn)return e.startColumn-t.startColumn;if(e.endColumn!==t.endColumn)return e.endColumn-t.endColumn;const i=Da._typeCompare(e.type,t.type);return i!==0?i:e.className!==t.className?e.className<t.className?-1:1:0}}class mpe{constructor(e,t,i,n){this.startOffset=e,this.endOffset=t,this.className=i,this.metadata=n}}class F5{constructor(){this.stopOffsets=[],this.classNames=[],this.metadata=[],this.count=0}static _metadata(e){let t=0;for(let i=0,n=e.length;i<n;i++)t|=e[i];return t}consumeLowerThan(e,t,i){for(;this.count>0&&this.stopOffsets[0]<e;){let n=0;for(;n+1<this.count&&this.stopOffsets[n]===this.stopOffsets[n+1];)n++;i.push(new mpe(t,this.stopOffsets[n],this.classNames.join(" "),F5._metadata(this.metadata))),t=this.stopOffsets[n]+1,this.stopOffsets.splice(0,n+1),this.classNames.splice(0,n+1),this.metadata.splice(0,n+1),this.count-=n+1}return this.count>0&&t<e&&(i.push(new mpe(t,e-1,this.classNames.join(" "),F5._metadata(this.metadata))),t=e),t}insert(e,t,i){if(this.count===0||this.stopOffsets[this.count-1]<=e)this.stopOffsets.push(e),this.classNames.push(t),this.metadata.push(i);else for(let n=0;n<this.count;n++)if(this.stopOffsets[n]>=e){this.stopOffsets.splice(n,0,e),this.classNames.splice(n,0,t),this.metadata.splice(n,0,i);break}this.count++}}class llt{static normalize(e,t){if(t.length===0)return[];const i=[],n=new F5;let o=0;for(let r=0,l=t.length;r<l;r++){const a=t[r];let d=a.startColumn,c=a.endColumn;const h=a.className,u=a.type===1?2:a.type===2?4:0;if(d>1){const g=e.charCodeAt(d-2);Mr(g)&&d--}if(c>1){const g=e.charCodeAt(c-2);Mr(g)&&c--}const m=d-1,p=c-2;o=n.consumeLowerThan(m,o,i),n.count===0&&(o=m),n.insert(p,h,u)}return n.consumeLowerThan(1073741824,o,i),i}}class Xr{constructor(e,t,i,n){this.endIndex=e,this.type=t,this.metadata=i,this.containsRTL=n,this._linePartBrand=void 0}isWhitespace(){return!!(this.metadata&1)}isPseudoAfter(){return!!(this.metadata&4)}}class XVe{constructor(e,t){this.startOffset=e,this.endOffset=t}equals(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset}}class rA{constructor(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g,f,b,U,S){this.useMonospaceOptimizations=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.continuesWithWrappedLine=n,this.isBasicASCII=o,this.containsRTL=r,this.fauxIndentLength=l,this.lineTokens=a,this.lineDecorations=d.sort(Da.compare),this.tabSize=c,this.startVisibleColumn=h,this.spaceWidth=u,this.stopRenderingLineAfter=g,this.renderWhitespace=f==="all"?4:f==="boundary"?1:f==="selection"?2:f==="trailing"?3:0,this.renderControlCharacters=b,this.fontLigatures=U,this.selectionsOnLine=S&&S.sort((y,N)=>y.startOffset<N.startOffset?-1:1);const Z=Math.abs(p-u),R=Math.abs(m-u);Z<R?(this.renderSpaceWidth=p,this.renderSpaceCharCode=11825):(this.renderSpaceWidth=m,this.renderSpaceCharCode=183)}sameSelection(e){if(this.selectionsOnLine===null)return e===null;if(e===null||e.length!==this.selectionsOnLine.length)return!1;for(let t=0;t<this.selectionsOnLine.length;t++)if(!this.selectionsOnLine[t].equals(e[t]))return!1;return!0}equals(e){return this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineContent===e.lineContent&&this.continuesWithWrappedLine===e.continuesWithWrappedLine&&this.isBasicASCII===e.isBasicASCII&&this.containsRTL===e.containsRTL&&this.fauxIndentLength===e.fauxIndentLength&&this.tabSize===e.tabSize&&this.startVisibleColumn===e.startVisibleColumn&&this.spaceWidth===e.spaceWidth&&this.renderSpaceWidth===e.renderSpaceWidth&&this.renderSpaceCharCode===e.renderSpaceCharCode&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.fontLigatures===e.fontLigatures&&Da.equalsArr(this.lineDecorations,e.lineDecorations)&&this.lineTokens.equals(e.lineTokens)&&this.sameSelection(e.selectionsOnLine)}}class YVe{constructor(e,t){this.partIndex=e,this.charIndex=t}}class pg{static getPartIndex(e){return(e&4294901760)>>>16}static getCharIndex(e){return(e&65535)>>>0}constructor(e,t){this.length=e,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(e,t,i,n){const o=(t<<16|i<<0)>>>0;this._data[e-1]=o,this._horizontalOffset[e-1]=n}getHorizontalOffset(e){return this._horizontalOffset.length===0?0:this._horizontalOffset[e-1]}charOffsetToPartData(e){return this.length===0?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]}getDomPosition(e){const t=this.charOffsetToPartData(e-1),i=pg.getPartIndex(t),n=pg.getCharIndex(t);return new YVe(i,n)}getColumn(e,t){return this.partDataToCharOffset(e.partIndex,t,e.charIndex)+1}partDataToCharOffset(e,t,i){if(this.length===0)return 0;const n=(e<<16|i<<0)>>>0;let o=0,r=this.length-1;for(;o+1<r;){const g=o+r>>>1,f=this._data[g];if(f===n)return g;f>n?r=g:o=g}if(o===r)return o;const l=this._data[o],a=this._data[r];if(l===n)return o;if(a===n)return r;const d=pg.getPartIndex(l),c=pg.getCharIndex(l),h=pg.getPartIndex(a);let u;d!==h?u=t:u=pg.getCharIndex(a);const m=i-c,p=u-i;return m<=p?o:r}}class Gq{constructor(e,t,i){this._renderLineOutputBrand=void 0,this.characterMapping=e,this.containsRTL=t,this.containsForeignElements=i}}function gk(s,e){if(s.lineContent.length===0){if(s.lineDecorations.length>0){e.appendString("<span>");let t=0,i=0,n=0;for(const r of s.lineDecorations)(r.type===1||r.type===2)&&(e.appendString('<span class="'),e.appendString(r.className),e.appendString('"></span>'),r.type===1&&(n|=1,t++),r.type===2&&(n|=2,i++));e.appendString("</span>");const o=new pg(1,t+i);return o.setColumnInfo(1,t,0,0),new Gq(o,!1,n)}return e.appendString("<span><span></span></span>"),new Gq(new pg(0,0),!1,0)}return flt(clt(s),e)}class alt{constructor(e,t,i,n){this.characterMapping=e,this.html=t,this.containsRTL=i,this.containsForeignElements=n}}function W9(s){const e=new gM(1e4),t=gk(s,e);return new alt(t.characterMapping,e.build(),t.containsRTL,t.containsForeignElements)}class dlt{constructor(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g,f){this.fontIsMonospace=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.len=n,this.isOverflowing=o,this.overflowingCharCount=r,this.parts=l,this.containsForeignElements=a,this.fauxIndentLength=d,this.tabSize=c,this.startVisibleColumn=h,this.containsRTL=u,this.spaceWidth=m,this.renderSpaceCharCode=p,this.renderWhitespace=g,this.renderControlCharacters=f}}function clt(s){const e=s.lineContent;let t,i,n;s.stopRenderingLineAfter!==-1&&s.stopRenderingLineAfter<e.length?(t=!0,i=e.length-s.stopRenderingLineAfter,n=s.stopRenderingLineAfter):(t=!1,i=0,n=e.length);let o=hlt(e,s.containsRTL,s.lineTokens,s.fauxIndentLength,n);s.renderControlCharacters&&!s.isBasicASCII&&(o=mlt(e,o)),(s.renderWhitespace===4||s.renderWhitespace===1||s.renderWhitespace===2&&s.selectionsOnLine||s.renderWhitespace===3&&!s.continuesWithWrappedLine)&&(o=plt(s,e,n,o));let r=0;if(s.lineDecorations.length>0){for(let l=0,a=s.lineDecorations.length;l<a;l++){const d=s.lineDecorations[l];d.type===3||d.type===1?r|=1:d.type===2&&(r|=2)}o=glt(e,n,o,s.lineDecorations)}return s.containsRTL||(o=ult(e,o,!s.isBasicASCII||s.fontLigatures)),new dlt(s.useMonospaceOptimizations,s.canUseHalfwidthRightwardsArrow,e,n,t,i,o,r,s.fauxIndentLength,s.tabSize,s.startVisibleColumn,s.containsRTL,s.spaceWidth,s.renderSpaceCharCode,s.renderWhitespace,s.renderControlCharacters)}function hlt(s,e,t,i,n){const o=[];let r=0;i>0&&(o[r++]=new Xr(i,"",0,!1));let l=i;for(let a=0,d=t.getCount();a<d;a++){const c=t.getEndOffset(a);if(c<=i)continue;const h=t.getClassName(a);if(c>=n){const m=e?Ny(s.substring(l,n)):!1;o[r++]=new Xr(n,h,0,m);break}const u=e?Ny(s.substring(l,c)):!1;o[r++]=new Xr(c,h,0,u),l=c}return o}function ult(s,e,t){let i=0;const n=[];let o=0;if(t)for(let r=0,l=e.length;r<l;r++){const a=e[r],d=a.endIndex;if(i+50<d){const c=a.type,h=a.metadata,u=a.containsRTL;let m=-1,p=i;for(let g=i;g<d;g++)s.charCodeAt(g)===32&&(m=g),m!==-1&&g-p>=50&&(n[o++]=new Xr(m+1,c,h,u),p=m+1,m=-1);p!==d&&(n[o++]=new Xr(d,c,h,u))}else n[o++]=a;i=d}else for(let r=0,l=e.length;r<l;r++){const a=e[r],d=a.endIndex,c=d-i;if(c>50){const h=a.type,u=a.metadata,m=a.containsRTL,p=Math.ceil(c/50);for(let g=1;g<p;g++){const f=i+g*50;n[o++]=new Xr(f,h,u,m)}n[o++]=new Xr(d,h,u,m)}else n[o++]=a;i=d}return n}function _Ve(s){return s<32?s!==9:s===127||s>=8234&&s<=8238||s>=8294&&s<=8297||s>=8206&&s<=8207||s===1564}function mlt(s,e){const t=[];let i=new Xr(0,"",0,!1),n=0;for(const o of e){const r=o.endIndex;for(;n<r;n++){const l=s.charCodeAt(n);_Ve(l)&&(n>i.endIndex&&(i=new Xr(n,o.type,o.metadata,o.containsRTL),t.push(i)),i=new Xr(n+1,"mtkcontrol",o.metadata,!1),t.push(i))}n>i.endIndex&&(i=new Xr(r,o.type,o.metadata,o.containsRTL),t.push(i))}return t}function plt(s,e,t,i){const n=s.continuesWithWrappedLine,o=s.fauxIndentLength,r=s.tabSize,l=s.startVisibleColumn,a=s.useMonospaceOptimizations,d=s.selectionsOnLine,c=s.renderWhitespace===1,h=s.renderWhitespace===3,u=s.renderSpaceWidth!==s.spaceWidth,m=[];let p=0,g=0,f=i[g].type,b=i[g].containsRTL,U=i[g].endIndex;const S=i.length;let Z=!1,R=Ua(e),y;R===-1?(Z=!0,R=t,y=t):y=ip(e);let N=!1,w=0,Q=d&&d[w],C=l%r;for(let Y=o;Y<t;Y++){const J=e.charCodeAt(Y);Q&&Y>=Q.endOffset&&(w++,Q=d&&d[w]);let k;if(Y<R||Y>y)k=!0;else if(J===9)k=!0;else if(J===32)if(c)if(N)k=!0;else{const E=Y+1<t?e.charCodeAt(Y+1):0;k=E===32||E===9}else k=!0;else k=!1;if(k&&d&&(k=!!Q&&Q.startOffset<=Y&&Q.endOffset>Y),k&&h&&(k=Z||Y>y),k&&b&&Y>=R&&Y<=y&&(k=!1),N){if(!k||!a&&C>=r){if(u){const E=p>0?m[p-1].endIndex:o;for(let K=E+1;K<=Y;K++)m[p++]=new Xr(K,"mtkw",1,!1)}else m[p++]=new Xr(Y,"mtkw",1,!1);C=C%r}}else(Y===U||k&&Y>o)&&(m[p++]=new Xr(Y,f,0,b),C=C%r);for(J===9?C=r:vF(J)?C+=2:C++,N=k;Y===U&&(g++,g<S);)f=i[g].type,b=i[g].containsRTL,U=i[g].endIndex}let v=!1;if(N)if(n&&c){const Y=t>0?e.charCodeAt(t-1):0,J=t>1?e.charCodeAt(t-2):0;Y===32&&J!==32&&J!==9||(v=!0)}else v=!0;if(v)if(u){const Y=p>0?m[p-1].endIndex:o;for(let J=Y+1;J<=t;J++)m[p++]=new Xr(J,"mtkw",1,!1)}else m[p++]=new Xr(t,"mtkw",1,!1);else m[p++]=new Xr(t,f,0,b);return m}function glt(s,e,t,i){i.sort(Da.compare);const n=llt.normalize(s,i),o=n.length;let r=0;const l=[];let a=0,d=0;for(let h=0,u=t.length;h<u;h++){const m=t[h],p=m.endIndex,g=m.type,f=m.metadata,b=m.containsRTL;for(;r<o&&n[r].startOffset<p;){const U=n[r];if(U.startOffset>d&&(d=U.startOffset,l[a++]=new Xr(d,g,f,b)),U.endOffset+1<=p)d=U.endOffset+1,l[a++]=new Xr(d,g+" "+U.className,f|U.metadata,b),r++;else{d=p,l[a++]=new Xr(d,g+" "+U.className,f|U.metadata,b);break}}p>d&&(d=p,l[a++]=new Xr(d,g,f,b))}const c=t[t.length-1].endIndex;if(r<o&&n[r].startOffset===c)for(;r<o&&n[r].startOffset===c;){const h=n[r];l[a++]=new Xr(d,h.className,h.metadata,!1),r++}return l}function flt(s,e){const t=s.fontIsMonospace,i=s.canUseHalfwidthRightwardsArrow,n=s.containsForeignElements,o=s.lineContent,r=s.len,l=s.isOverflowing,a=s.overflowingCharCount,d=s.parts,c=s.fauxIndentLength,h=s.tabSize,u=s.startVisibleColumn,m=s.containsRTL,p=s.spaceWidth,g=s.renderSpaceCharCode,f=s.renderWhitespace,b=s.renderControlCharacters,U=new pg(r+1,d.length);let S=!1,Z=0,R=u,y=0,N=0,w=0;m?e.appendString('<span dir="ltr">'):e.appendString("<span>");for(let Q=0,C=d.length;Q<C;Q++){const v=d[Q],Y=v.endIndex,J=v.type,k=v.containsRTL,E=f!==0&&v.isWhitespace(),K=E&&!t&&(J==="mtkw"||!n),de=Z===Y&&v.isPseudoAfter();if(y=0,e.appendString("<span "),k&&e.appendString('style="unicode-bidi:isolate" '),e.appendString('class="'),e.appendString(K?"mtkz":J),e.appendASCIICharCode(34),E){let ee=0;{let le=Z,Fe=R;for(;le<Y;le++){const ze=(o.charCodeAt(le)===9?h-Fe%h:1)|0;ee+=ze,le>=c&&(Fe+=ze)}}for(K&&(e.appendString(' style="width:'),e.appendString(String(p*ee)),e.appendString('px"')),e.appendASCIICharCode(62);Z<Y;Z++){U.setColumnInfo(Z+1,Q-w,y,N),w=0;const le=o.charCodeAt(Z);let Fe,Ue;if(le===9){Fe=h-R%h|0,Ue=Fe,!i||Ue>1?e.appendCharCode(8594):e.appendCharCode(65515);for(let ze=2;ze<=Ue;ze++)e.appendCharCode(160)}else Fe=2,Ue=1,e.appendCharCode(g),e.appendCharCode(8204);y+=Fe,N+=Ue,Z>=c&&(R+=Ue)}}else for(e.appendASCIICharCode(62);Z<Y;Z++){U.setColumnInfo(Z+1,Q-w,y,N),w=0;const ee=o.charCodeAt(Z);let le=1,Fe=1;switch(ee){case 9:le=h-R%h,Fe=le;for(let Ue=1;Ue<=le;Ue++)e.appendCharCode(160);break;case 32:e.appendCharCode(160);break;case 60:e.appendString("<");break;case 62:e.appendString(">");break;case 38:e.appendString("&");break;case 0:b?e.appendCharCode(9216):e.appendString("�");break;case 65279:case 8232:case 8233:case 133:e.appendCharCode(65533);break;default:vF(ee)&&Fe++,b&&ee<32?e.appendCharCode(9216+ee):b&&ee===127?e.appendCharCode(9249):b&&_Ve(ee)?(e.appendString("[U+"),e.appendString(blt(ee)),e.appendString("]"),le=8,Fe=le):e.appendCharCode(ee)}y+=le,N+=Fe,Z>=c&&(R+=Fe)}de?w++:w=0,Z>=r&&!S&&v.isPseudoAfter()&&(S=!0,U.setColumnInfo(Z+1,Q,y,N)),e.appendString("</span>")}return S||U.setColumnInfo(r+1,d.length-1,y,N),l&&(e.appendString('<span class="mtkoverflow">'),e.appendString(F("showMore","Show more ({0})",Ult(a))),e.appendString("</span>")),e.appendString("</span>"),new Gq(U,m,n)}function blt(s){return s.toString(16).toUpperCase().padStart(4,"0")}function Ult(s){return s<1024?F("overflow.chars","{0} chars",s):s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}class ppe{constructor(e,t,i,n){this._viewportBrand=void 0,this.top=e|0,this.left=t|0,this.width=i|0,this.height=n|0}}class Flt{constructor(e,t){this.tabSize=e,this.data=t}}class fre{constructor(e,t,i,n,o,r,l){this._viewLineDataBrand=void 0,this.content=e,this.continuesWithWrappedLine=t,this.minColumn=i,this.maxColumn=n,this.startVisibleColumn=o,this.tokens=r,this.inlineDecorations=l}}class rh{constructor(e,t,i,n,o,r,l,a,d,c){this.minColumn=e,this.maxColumn=t,this.content=i,this.continuesWithWrappedLine=n,this.isBasicASCII=rh.isBasicASCII(i,r),this.containsRTL=rh.containsRTL(i,this.isBasicASCII,o),this.tokens=l,this.inlineDecorations=a,this.tabSize=d,this.startVisibleColumn=c}static isBasicASCII(e,t){return t?Ov(e):!0}static containsRTL(e,t,i){return!t&&i?Ny(e):!1}}class h2{constructor(e,t,i){this.range=e,this.inlineClassName=t,this.type=i}}class Alt{constructor(e,t,i,n){this.startOffset=e,this.endOffset=t,this.inlineClassName=i,this.inlineClassNameAffectsLetterSpacing=n}toInlineDecoration(e){return new h2(new z(e,this.startOffset+1,e,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}class zVe{constructor(e,t){this._viewModelDecorationBrand=void 0,this.range=e,this.options=t}}class QL{constructor(e,t,i){this.color=e,this.zIndex=t,this.data=i}static compareByRenderingProps(e,t){return e.zIndex===t.zIndex?e.color<t.color?-1:e.color>t.color?1:0:e.zIndex-t.zIndex}static equals(e,t){return e.color===t.color&&e.zIndex===t.zIndex&&lo(e.data,t.data)}static equalsArr(e,t){return lo(e,t,QL.equals)}}function Zlt(s){return Array.isArray(s)}function Slt(s){return!Zlt(s)}function OVe(s){return typeof s=="string"}function gpe(s){return!OVe(s)}function $Z(s){return!s}function If(s,e){return s.ignoreCase&&e?e.toLowerCase():e}function fpe(s){return s.replace(/[&<>'"_]/g,"-")}function Nlt(s,e){console.log(`${s.languageId}: ${e}`)}function qs(s,e){return new Error(`${s.languageId}: ${e}`)}function NU(s,e,t,i,n){const o=/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g;let r=null;return e.replace(o,function(l,a,d,c,h,u,m,p,g){return $Z(d)?$Z(c)?!$Z(h)&&h<i.length?If(s,i[h]):!$Z(m)&&s&&typeof s[m]=="string"?s[m]:(r===null&&(r=n.split("."),r.unshift(n)),!$Z(u)&&u<r.length?If(s,r[u]):""):If(s,t):"$"})}function Rlt(s,e,t){const i=/\$[sS](\d\d?)/g;let n=null;return e.replace(i,function(o,r){return n===null&&(n=t.split("."),n.unshift(t)),!$Z(r)&&r<n.length?If(s,n[r]):""})}function FI(s,e){let t=e;for(;t&&t.length>0;){const i=s.tokenizer[t];if(i)return i;const n=t.lastIndexOf(".");n<0?t=null:t=t.substr(0,n)}return null}function Vlt(s,e){let t=e;for(;t&&t.length>0;){if(s.stateNames[t])return!0;const n=t.lastIndexOf(".");n<0?t=null:t=t.substr(0,n)}return!1}var Wlt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ylt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Jq;const jVe=5,K_=class K_{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(e!==null&&e.depth>=this._maxCacheDepth)return new X1(e,t);let i=X1.getStackElementId(e);i.length>0&&(i+="|"),i+=t;let n=this._entries[i];return n||(n=new X1(e,t),this._entries[i]=n,n)}};K_._INSTANCE=new K_(jVe);let ML=K_;class X1{constructor(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(e){let t="";for(;e!==null;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}static _equals(e,t){for(;e!==null&&t!==null;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return e===null&&t===null}equals(e){return X1._equals(this,e)}push(e){return ML.create(this,e)}pop(){return this.parent}popall(){let e=this;for(;e.parent;)e=e.parent;return e}switchTo(e){return ML.create(this.parent,e)}}class QW{constructor(e,t){this.languageId=e,this.state=t}equals(e){return this.languageId===e.languageId&&this.state.equals(e.state)}clone(){return this.state.clone()===this.state?this:new QW(this.languageId,this.state)}}const q_=class q_{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(t!==null)return new u2(e,t);if(e!==null&&e.depth>=this._maxCacheDepth)return new u2(e,t);const i=X1.getStackElementId(e);let n=this._entries[i];return n||(n=new u2(e,null),this._entries[i]=n,n)}};q_._INSTANCE=new q_(jVe);let RU=q_;class u2{constructor(e,t){this.stack=e,this.embeddedLanguageData=t}clone(){return(this.embeddedLanguageData?this.embeddedLanguageData.clone():null)===this.embeddedLanguageData?this:RU.create(this.stack,this.embeddedLanguageData)}equals(e){return!(e instanceof u2)||!this.stack.equals(e.stack)?!1:this.embeddedLanguageData===null&&e.embeddedLanguageData===null?!0:this.embeddedLanguageData===null||e.embeddedLanguageData===null?!1:this.embeddedLanguageData.equals(e.embeddedLanguageData)}}class Qlt{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(e){this._languageId=e}emit(e,t){this._lastTokenType===t&&this._lastTokenLanguage===this._languageId||(this._lastTokenType=t,this._lastTokenLanguage=this._languageId,this._tokens.push(new JB(e,t,this._languageId)))}nestedLanguageTokenize(e,t,i,n){const o=i.languageId,r=i.state,l=Ro.get(o);if(!l)return this.enterLanguage(o),this.emit(n,""),r;const a=l.tokenize(e,t,r);if(n!==0)for(const d of a.tokens)this._tokens.push(new JB(d.offset+n,d.type,d.language));else this._tokens=this._tokens.concat(a.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,a.endState}finalize(e){return new Vse(this._tokens,e)}}class A5{constructor(e,t){this._languageService=e,this._theme=t,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(e){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(e)}emit(e,t){const i=this._theme.match(this._currentLanguageId,t)|1024;this._lastTokenMetadata!==i&&(this._lastTokenMetadata=i,this._tokens.push(e),this._tokens.push(i))}static _merge(e,t,i){const n=e!==null?e.length:0,o=t.length,r=i!==null?i.length:0;if(n===0&&o===0&&r===0)return new Uint32Array(0);if(n===0&&o===0)return i;if(o===0&&r===0)return e;const l=new Uint32Array(n+o+r);e!==null&&l.set(e);for(let a=0;a<o;a++)l[n+a]=t[a];return i!==null&&l.set(i,n+o),l}nestedLanguageTokenize(e,t,i,n){const o=i.languageId,r=i.state,l=Ro.get(o);if(!l)return this.enterLanguage(o),this.emit(n,""),r;const a=l.tokenizeEncoded(e,t,r);if(n!==0)for(let d=0,c=a.tokens.length;d<c;d+=2)a.tokens[d]+=n;return this._prependTokens=A5._merge(this._prependTokens,this._tokens,a.tokens),this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0,a.endState}finalize(e){return new V3(A5._merge(this._prependTokens,this._tokens,null),e)}}let wL=Jq=class extends be{constructor(e,t,i,n,o){super(),this._configurationService=o,this._languageService=e,this._standaloneThemeService=t,this._languageId=i,this._lexer=n,this._embeddedLanguages=Object.create(null),this.embeddedLoaded=Promise.resolve(void 0);let r=!1;this._register(Ro.onDidChange(l=>{if(r)return;let a=!1;for(let d=0,c=l.changedLanguages.length;d<c;d++){const h=l.changedLanguages[d];if(this._embeddedLanguages[h]){a=!0;break}}a&&(r=!0,Ro.handleChange([this._languageId]),r=!1)})),this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}),this._register(this._configurationService.onDidChangeConfiguration(l=>{l.affectsConfiguration("editor.maxTokenizationLineLength")&&(this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}))}))}getLoadStatus(){const e=[];for(const t in this._embeddedLanguages){const i=Ro.get(t);if(i){if(i instanceof Jq){const n=i.getLoadStatus();n.loaded===!1&&e.push(n.promise)}continue}Ro.isResolved(t)||e.push(Ro.getOrCreate(t))}return e.length===0?{loaded:!0}:{loaded:!1,promise:Promise.all(e).then(t=>{})}}getInitialState(){const e=ML.create(null,this._lexer.start);return RU.create(e,null)}tokenize(e,t,i){if(e.length>=this._maxTokenizationLineLength)return Woe(this._languageId,i);const n=new Qlt,o=this._tokenize(e,t,i,n);return n.finalize(o)}tokenizeEncoded(e,t,i){if(e.length>=this._maxTokenizationLineLength)return a9(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),i);const n=new A5(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),o=this._tokenize(e,t,i,n);return n.finalize(o)}_tokenize(e,t,i,n){return i.embeddedLanguageData?this._nestedTokenize(e,t,i,0,n):this._myTokenize(e,t,i,0,n)}_findLeavingNestedLanguageOffset(e,t){let i=this._lexer.tokenizer[t.stack.state];if(!i&&(i=FI(this._lexer,t.stack.state),!i))throw qs(this._lexer,"tokenizer state is not defined: "+t.stack.state);let n=-1,o=!1;for(const r of i){if(!gpe(r.action)||r.action.nextEmbedded!=="@pop")continue;o=!0;let l=r.resolveRegex(t.stack.state);const a=l.source;if(a.substr(0,4)==="^(?:"&&a.substr(a.length-1,1)===")"){const c=(l.ignoreCase?"i":"")+(l.unicode?"u":"");l=new RegExp(a.substr(4,a.length-5),c)}const d=e.search(l);d===-1||d!==0&&r.matchOnlyAtLineStart||(n===-1||d<n)&&(n=d)}if(!o)throw qs(this._lexer,'no rule containing nextEmbedded: "@pop" in tokenizer embedded state: '+t.stack.state);return n}_nestedTokenize(e,t,i,n,o){const r=this._findLeavingNestedLanguageOffset(e,i);if(r===-1){const d=o.nestedLanguageTokenize(e,t,i.embeddedLanguageData,n);return RU.create(i.stack,new QW(i.embeddedLanguageData.languageId,d))}const l=e.substring(0,r);l.length>0&&o.nestedLanguageTokenize(l,!1,i.embeddedLanguageData,n);const a=e.substring(r);return this._myTokenize(a,t,i,n+r,o)}_safeRuleName(e){return e?e.name:"(unknown)"}_myTokenize(e,t,i,n,o){o.enterLanguage(this._languageId);const r=e.length,l=t&&this._lexer.includeLF?e+`
- `:e,a=l.length;let d=i.embeddedLanguageData,c=i.stack,h=0,u=null,m=!0;for(;m||h<a;){const p=h,g=c.depth,f=u?u.groups.length:0,b=c.state;let U=null,S=null,Z=null,R=null,y=null;if(u){U=u.matches;const Q=u.groups.shift();S=Q.matched,Z=Q.action,R=u.rule,u.groups.length===0&&(u=null)}else{if(!m&&h>=a)break;m=!1;let Q=this._lexer.tokenizer[b];if(!Q&&(Q=FI(this._lexer,b),!Q))throw qs(this._lexer,"tokenizer state is not defined: "+b);const C=l.substr(h);for(const v of Q)if((h===0||!v.matchOnlyAtLineStart)&&(U=C.match(v.resolveRegex(b)),U)){S=U[0],Z=v.action;break}}if(U||(U=[""],S=""),Z||(h<a&&(U=[l.charAt(h)],S=U[0]),Z=this._lexer.defaultToken),S===null)break;for(h+=S.length;Slt(Z)&&gpe(Z)&&Z.test;)Z=Z.test(S,U,b,h===a);let N=null;if(typeof Z=="string"||Array.isArray(Z))N=Z;else if(Z.group)N=Z.group;else if(Z.token!==null&&Z.token!==void 0){if(Z.tokenSubst?N=NU(this._lexer,Z.token,S,U,b):N=Z.token,Z.nextEmbedded)if(Z.nextEmbedded==="@pop"){if(!d)throw qs(this._lexer,"cannot pop embedded language if not inside one");d=null}else{if(d)throw qs(this._lexer,"cannot enter embedded language from within an embedded language");y=NU(this._lexer,Z.nextEmbedded,S,U,b)}if(Z.goBack&&(h=Math.max(0,h-Z.goBack)),Z.switchTo&&typeof Z.switchTo=="string"){let Q=NU(this._lexer,Z.switchTo,S,U,b);if(Q[0]==="@"&&(Q=Q.substr(1)),FI(this._lexer,Q))c=c.switchTo(Q);else throw qs(this._lexer,"trying to switch to a state '"+Q+"' that is undefined in rule: "+this._safeRuleName(R))}else{if(Z.transform&&typeof Z.transform=="function")throw qs(this._lexer,"action.transform not supported");if(Z.next)if(Z.next==="@push"){if(c.depth>=this._lexer.maxStack)throw qs(this._lexer,"maximum tokenizer stack size reached: ["+c.state+","+c.parent.state+",...]");c=c.push(b)}else if(Z.next==="@pop"){if(c.depth<=1)throw qs(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(R));c=c.pop()}else if(Z.next==="@popall")c=c.popall();else{let Q=NU(this._lexer,Z.next,S,U,b);if(Q[0]==="@"&&(Q=Q.substr(1)),FI(this._lexer,Q))c=c.push(Q);else throw qs(this._lexer,"trying to set a next state '"+Q+"' that is undefined in rule: "+this._safeRuleName(R))}}Z.log&&typeof Z.log=="string"&&Nlt(this._lexer,this._lexer.languageId+": "+NU(this._lexer,Z.log,S,U,b))}if(N===null)throw qs(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(R));const w=Q=>{const C=this._languageService.getLanguageIdByLanguageName(Q)||this._languageService.getLanguageIdByMimeType(Q)||Q,v=this._getNestedEmbeddedLanguageData(C);if(h<a){const Y=e.substr(h);return this._nestedTokenize(Y,t,RU.create(c,v),n+h,o)}else return RU.create(c,v)};if(Array.isArray(N)){if(u&&u.groups.length>0)throw qs(this._lexer,"groups cannot be nested: "+this._safeRuleName(R));if(U.length!==N.length+1)throw qs(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(R));let Q=0;for(let C=1;C<U.length;C++)Q+=U[C].length;if(Q!==S.length)throw qs(this._lexer,"with groups, all characters should be matched in consecutive groups in rule: "+this._safeRuleName(R));u={rule:R,matches:U,groups:[]};for(let C=0;C<N.length;C++)u.groups[C]={action:N[C],matched:U[C+1]};h-=S.length;continue}else{if(N==="@rematch"&&(h-=S.length,S="",U=null,N="",y!==null))return w(y);if(S.length===0){if(a===0||g!==c.depth||b!==c.state||(u?u.groups.length:0)!==f)continue;throw qs(this._lexer,"no progress in tokenizer in rule: "+this._safeRuleName(R))}let Q=null;if(OVe(N)&&N.indexOf("@brackets")===0){const C=N.substr(9),v=Mlt(this._lexer,S);if(!v)throw qs(this._lexer,"@brackets token returned but no bracket defined as: "+S);Q=fpe(v.token+C)}else{const C=N===""?"":N+this._lexer.tokenPostfix;Q=fpe(C)}p<r&&o.emit(p+n,Q)}if(y!==null)return w(y)}return RU.create(c,d)}_getNestedEmbeddedLanguageData(e){if(!this._languageService.isRegisteredLanguageId(e))return new QW(e,Ly);e!==this._languageId&&(this._languageService.requestBasicLanguageFeatures(e),Ro.getOrCreate(e),this._embeddedLanguages[e]=!0);const t=Ro.get(e);return t?new QW(e,t.getInitialState()):new QW(e,Ly)}};wL=Jq=Wlt([ylt(4,Hi)],wL);function Mlt(s,e){if(!e)return null;e=If(s,e);const t=s.brackets;for(const i of t){if(i.open===e)return{token:i.token,bracketType:1};if(i.close===e)return{token:i.token,bracketType:-1}}return null}const JP=lb("standaloneColorizer",{createHTML:s=>s});class bre{static colorizeElement(e,t,i,n){n=n||{};const o=n.theme||"vs",r=n.mimeType||i.getAttribute("lang")||i.getAttribute("data-lang");if(!r)return console.error("Mode not detected"),Promise.resolve();const l=t.getLanguageIdByMimeType(r)||r;e.setTheme(o);const a=i.firstChild?i.firstChild.nodeValue:"";i.className+=" "+o;const d=c=>{const h=(JP==null?void 0:JP.createHTML(c))??c;i.innerHTML=h};return this.colorize(t,a||"",l,n).then(d,c=>console.error(c))}static async colorize(e,t,i,n){const o=e.languageIdCodec;let r=4;n&&typeof n.tabSize=="number"&&(r=n.tabSize),Cse(t)&&(t=t.substr(1));const l=Kg(t);if(!e.isRegisteredLanguageId(i))return bpe(l,r,o);const a=await Ro.getOrCreate(i);return a?wlt(l,r,a,o):bpe(l,r,o)}static colorizeLine(e,t,i,n,o=4){const r=rh.isBasicASCII(e,t),l=rh.containsRTL(e,r,i);return W9(new rA(!1,!0,e,!1,r,l,0,n,[],o,0,0,0,0,-1,"none",!1,!1,null)).html}static colorizeModelLine(e,t,i=4){const n=e.getLineContent(t);e.tokenization.forceTokenization(t);const r=e.tokenization.getLineTokens(t).inflate();return this.colorizeLine(n,e.mightContainNonBasicASCII(),e.mightContainRTL(),r,i)}}function wlt(s,e,t,i){return new Promise((n,o)=>{const r=()=>{const l=Tlt(s,e,t,i);if(t instanceof wL){const a=t.getLoadStatus();if(a.loaded===!1){a.promise.then(r,o);return}}n(l)};r()})}function bpe(s,e,t){let i=[];const o=new Uint32Array(2);o[0]=0,o[1]=33587200;for(let r=0,l=s.length;r<l;r++){const a=s[r];o[0]=a.length;const d=new Pr(o,a,t),c=rh.isBasicASCII(a,!0),h=rh.containsRTL(a,c,!0),u=W9(new rA(!1,!0,a,!1,c,h,0,d,[],e,0,0,0,0,-1,"none",!1,!1,null));i=i.concat(u.html),i.push("<br/>")}return i.join("")}function Tlt(s,e,t,i){let n=[],o=t.getInitialState();for(let r=0,l=s.length;r<l;r++){const a=s[r],d=t.tokenizeEncoded(a,!0,o);Pr.convertToEndOffset(d.tokens,a.length);const c=new Pr(d.tokens,a,i),h=rh.isBasicASCII(a,!0),u=rh.containsRTL(a,h,!0),m=W9(new rA(!1,!0,a,!1,h,u,0,c.inflate(),[],e,0,0,0,0,-1,"none",!1,!1,null));n=n.concat(m.html),n.push("<br/>"),o=d.endState}return n.join("")}var Clt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Blt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Nv;let Z5=(Nv=class{constructor(e,t){}dispose(){}},Nv.ID="editor.contrib.markerDecorations",Nv);Z5=Clt([Blt(1,xoe)],Z5);Wn(Z5.ID,Z5,0);class PVe extends be{constructor(e,t){super(),this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,this._referenceDomElement=e,this._width=-1,this._height=-1,this._resizeObserver=null,this.measureReferenceDomElement(!1,t)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this._width}getHeight(){return this._height}startObserving(){if(!this._resizeObserver&&this._referenceDomElement){let e=null;const t=()=>{e?this.observe({width:e.width,height:e.height}):this.observe()};let i=!1,n=!1;const o=()=>{if(i&&!n)try{i=!1,n=!0,t()}finally{fc(ai(this._referenceDomElement),()=>{n=!1,o()})}};this._resizeObserver=new ResizeObserver(r=>{r&&r[0]&&r[0].contentRect?e={width:r[0].contentRect.width,height:r[0].contentRect.height}:e=null,i=!0,o()}),this._resizeObserver.observe(this._referenceDomElement)}}stopObserving(){this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null)}observe(e){this.measureReferenceDomElement(!0,e)}measureReferenceDomElement(e,t){let i=0,n=0;t?(i=t.width,n=t.height):this._referenceDomElement&&(i=this._referenceDomElement.clientWidth,n=this._referenceDomElement.clientHeight),i=Math.max(5,i),n=Math.max(5,n),(this._width!==i||this._height!==n)&&(this._width=i,this._height=n,e&&this._onDidChange.fire())}}const p1=class p1{constructor(e,t){this.key=e,this.migrate=t}apply(e){const t=p1._read(e,this.key),i=o=>p1._read(e,o),n=(o,r)=>p1._write(e,o,r);this.migrate(t,i,n)}static _read(e,t){if(typeof e>"u")return;const i=t.indexOf(".");if(i>=0){const n=t.substring(0,i);return this._read(e[n],t.substring(i+1))}return e[t]}static _write(e,t,i){const n=t.indexOf(".");if(n>=0){const o=t.substring(0,n);e[o]=e[o]||{},this._write(e[o],t.substring(n+1),i);return}e[t]=i}};p1.items=[];let TL=p1;function Zp(s,e){TL.items.push(new TL(s,e))}function Ac(s,e){Zp(s,(t,i,n)=>{if(typeof t<"u"){for(const[o,r]of e)if(t===o){n(s,r);return}}})}function Llt(s){TL.items.forEach(e=>e.apply(s))}Ac("wordWrap",[[!0,"on"],[!1,"off"]]);Ac("lineNumbers",[[!0,"on"],[!1,"off"]]);Ac("cursorBlinking",[["visible","solid"]]);Ac("renderWhitespace",[[!0,"boundary"],[!1,"none"]]);Ac("renderLineHighlight",[[!0,"line"],[!1,"none"]]);Ac("acceptSuggestionOnEnter",[[!0,"on"],[!1,"off"]]);Ac("tabCompletion",[[!1,"off"],[!0,"onlySnippets"]]);Ac("hover",[[!0,{enabled:!0}],[!1,{enabled:!1}]]);Ac("parameterHints",[[!0,{enabled:!0}],[!1,{enabled:!1}]]);Ac("autoIndent",[[!1,"advanced"],[!0,"full"]]);Ac("matchBrackets",[[!0,"always"],[!1,"never"]]);Ac("renderFinalNewline",[[!0,"on"],[!1,"off"]]);Ac("cursorSmoothCaretAnimation",[[!0,"on"],[!1,"off"]]);Ac("occurrencesHighlight",[[!0,"singleFile"],[!1,"off"]]);Ac("wordBasedSuggestions",[[!0,"matchingDocuments"],[!1,"off"]]);Zp("autoClosingBrackets",(s,e,t)=>{s===!1&&(t("autoClosingBrackets","never"),typeof e("autoClosingQuotes")>"u"&&t("autoClosingQuotes","never"),typeof e("autoSurround")>"u"&&t("autoSurround","never"))});Zp("renderIndentGuides",(s,e,t)=>{typeof s<"u"&&(t("renderIndentGuides",void 0),typeof e("guides.indentation")>"u"&&t("guides.indentation",!!s))});Zp("highlightActiveIndentGuide",(s,e,t)=>{typeof s<"u"&&(t("highlightActiveIndentGuide",void 0),typeof e("guides.highlightActiveIndentation")>"u"&&t("guides.highlightActiveIndentation",!!s))});const vlt={method:"showMethods",function:"showFunctions",constructor:"showConstructors",deprecated:"showDeprecated",field:"showFields",variable:"showVariables",class:"showClasses",struct:"showStructs",interface:"showInterfaces",module:"showModules",property:"showProperties",event:"showEvents",operator:"showOperators",unit:"showUnits",value:"showValues",constant:"showConstants",enum:"showEnums",enumMember:"showEnumMembers",keyword:"showKeywords",text:"showWords",color:"showColors",file:"showFiles",reference:"showReferences",folder:"showFolders",typeParameter:"showTypeParameters",snippet:"showSnippets"};Zp("suggest.filteredTypes",(s,e,t)=>{if(s&&typeof s=="object"){for(const i of Object.entries(vlt))s[i[0]]===!1&&typeof e(`suggest.${i[1]}`)>"u"&&t(`suggest.${i[1]}`,!1);t("suggest.filteredTypes",void 0)}});Zp("quickSuggestions",(s,e,t)=>{if(typeof s=="boolean"){const i=s?"on":"off";t("quickSuggestions",{comments:i,strings:i,other:i})}});Zp("experimental.stickyScroll.enabled",(s,e,t)=>{typeof s=="boolean"&&(t("experimental.stickyScroll.enabled",void 0),typeof e("stickyScroll.enabled")>"u"&&t("stickyScroll.enabled",s))});Zp("experimental.stickyScroll.maxLineCount",(s,e,t)=>{typeof s=="number"&&(t("experimental.stickyScroll.maxLineCount",void 0),typeof e("stickyScroll.maxLineCount")>"u"&&t("stickyScroll.maxLineCount",s))});Zp("codeActionsOnSave",(s,e,t)=>{if(s&&typeof s=="object"){let i=!1;const n={};for(const o of Object.entries(s))typeof o[1]=="boolean"?(i=!0,n[o[0]]=o[1]?"explicit":"never"):n[o[0]]=o[1];i&&t("codeActionsOnSave",n)}});Zp("codeActionWidget.includeNearbyQuickfixes",(s,e,t)=>{typeof s=="boolean"&&(t("codeActionWidget.includeNearbyQuickfixes",void 0),typeof e("codeActionWidget.includeNearbyQuickFixes")>"u"&&t("codeActionWidget.includeNearbyQuickFixes",s))});Zp("lightbulb.enabled",(s,e,t)=>{typeof s=="boolean"&&t("lightbulb.enabled",s?void 0:"off")});class klt{constructor(){this._tabFocus=!1,this._onDidChangeTabFocus=new fe,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(){return this._tabFocus}setTabFocusMode(e){this._tabFocus=e,this._onDidChangeTabFocus.fire(this._tabFocus)}}const Xy=new klt;var xlt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ilt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Xq=class extends be{constructor(e,t,i,n,o){super(),this._accessibilityService=o,this._onDidChange=this._register(new fe),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new fe),this.onDidChangeFast=this._onDidChangeFast.event,this._isDominatedByLongLines=!1,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._reservedHeight=0,this._glyphMarginDecorationLaneCount=1,this._computeOptionsMemory=new gZe,this.isSimpleWidget=e,this.contextMenuId=t,this._containerObserver=this._register(new PVe(n,i.dimension)),this._targetWindowId=ai(n).vscodeWindowId,this._rawOptions=Upe(i),this._validatedOptions=VU.validateOptions(this._rawOptions),this.options=this._computeOptions(),this.options.get(13)&&this._containerObserver.startObserving(),this._register(kh.onDidChangeZoomLevel(()=>this._recomputeOptions())),this._register(Xy.onDidChangeTabFocus(()=>this._recomputeOptions())),this._register(this._containerObserver.onDidChange(()=>this._recomputeOptions())),this._register(f8.onDidChange(()=>this._recomputeOptions())),this._register(PB.getInstance(ai(n)).onDidChange(()=>this._recomputeOptions())),this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(()=>this._recomputeOptions()))}_recomputeOptions(){const e=this._computeOptions(),t=VU.checkEquals(this.options,e);t!==null&&(this.options=e,this._onDidChangeFast.fire(t),this._onDidChange.fire(t))}_computeOptions(){const e=this._readEnvConfiguration(),t=IS.createFromValidatedSettings(this._validatedOptions,e.pixelRatio,this.isSimpleWidget),i=this._readFontInfo(t),n={memory:this._computeOptionsMemory,outerWidth:e.outerWidth,outerHeight:e.outerHeight-this._reservedHeight,fontInfo:i,extraEditorClassName:e.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:e.emptySelectionClipboard,pixelRatio:e.pixelRatio,tabFocusMode:Xy.getTabFocusMode(),accessibilitySupport:e.accessibilitySupport,glyphMarginDecorationLaneCount:this._glyphMarginDecorationLaneCount};return VU.computeOptions(this._validatedOptions,n)}_readEnvConfiguration(){return{extraEditorClassName:Dlt(),outerWidth:this._containerObserver.getWidth(),outerHeight:this._containerObserver.getHeight(),emptySelectionClipboard:xS||zh,pixelRatio:PB.getInstance(che(this._targetWindowId,!0).window).value,accessibilitySupport:this._accessibilityService.isScreenReaderOptimized()?2:this._accessibilityService.getAccessibilitySupport()}}_readFontInfo(e){return f8.readFontInfo(che(this._targetWindowId,!0).window,e)}getRawOptions(){return this._rawOptions}updateOptions(e){const t=Upe(e);VU.applyUpdate(this._rawOptions,t)&&(this._validatedOptions=VU.validateOptions(this._rawOptions),this._recomputeOptions())}observeContainer(e){this._containerObserver.observe(e)}setIsDominatedByLongLines(e){this._isDominatedByLongLines!==e&&(this._isDominatedByLongLines=e,this._recomputeOptions())}setModelLineCount(e){const t=Elt(e);this._lineNumbersDigitCount!==t&&(this._lineNumbersDigitCount=t,this._recomputeOptions())}setViewLineCount(e){this._viewLineCount!==e&&(this._viewLineCount=e,this._recomputeOptions())}setReservedHeight(e){this._reservedHeight!==e&&(this._reservedHeight=e,this._recomputeOptions())}setGlyphMarginDecorationLaneCount(e){this._glyphMarginDecorationLaneCount!==e&&(this._glyphMarginDecorationLaneCount=e,this._recomputeOptions())}};Xq=xlt([Ilt(4,Fc)],Xq);function Elt(s){let e=0;for(;s;)s=Math.floor(s/10),e++;return e||1}function Dlt(){let s="";return!Of&&!JZe&&(s+="no-user-select "),Of&&(s+="no-minimap-shadow ",s+="enable-user-select "),hn&&(s+="mac "),s}class Glt{constructor(){this._values=[]}_read(e){return this._values[e]}get(e){return this._values[e]}_write(e,t){this._values[e]=t}}class Jlt{constructor(){this._values=[]}_read(e){if(e>=this._values.length)throw new Error("Cannot read uninitialized value");return this._values[e]}get(e){return this._read(e)}_write(e,t){this._values[e]=t}}class VU{static validateOptions(e){const t=new Glt;for(const i of bW){const n=i.name==="_never_"?void 0:e[i.name];t._write(i.id,i.validate(n))}return t}static computeOptions(e,t){const i=new Jlt;for(const n of bW)i._write(n.id,n.compute(t,i,e._read(n.id)));return i}static _deepEquals(e,t){if(typeof e!="object"||typeof t!="object"||!e||!t)return e===t;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)?lo(e,t):!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const i in e)if(!VU._deepEquals(e[i],t[i]))return!1;return!0}static checkEquals(e,t){const i=[];let n=!1;for(const o of bW){const r=!VU._deepEquals(e._read(o.id),t._read(o.id));i[o.id]=r,r&&(n=!0)}return n?new pZe(i):null}static applyUpdate(e,t){let i=!1;for(const n of bW)if(t.hasOwnProperty(n.name)){const o=n.applyUpdate(e[n.name],t[n.name]);e[n.name]=o.newValue,i=i||o.didChange}return i}}function Upe(s){const e=$0(s);return Llt(e),e}var qU;(function(s){const e={total:0,min:Number.MAX_VALUE,max:0},t={...e},i={...e},n={...e};let o=0;const r={keydown:0,input:0,render:0};function l(){b(),performance.mark("inputlatency/start"),performance.mark("keydown/start"),r.keydown=1,queueMicrotask(a)}s.onKeyDown=l;function a(){r.keydown===1&&(performance.mark("keydown/end"),r.keydown=2)}function d(){performance.mark("input/start"),r.input=1,f()}s.onBeforeInput=d;function c(){r.input===0&&d(),queueMicrotask(h)}s.onInput=c;function h(){r.input===1&&(performance.mark("input/end"),r.input=2)}function u(){b()}s.onKeyUp=u;function m(){b()}s.onSelectionChange=m;function p(){r.keydown===2&&r.input===2&&r.render===0&&(performance.mark("render/start"),r.render=1,queueMicrotask(g),f())}s.onRenderStart=p;function g(){r.render===1&&(performance.mark("render/end"),r.render=2)}function f(){setTimeout(b)}function b(){r.keydown===2&&r.input===2&&r.render===2&&(performance.mark("inputlatency/end"),performance.measure("keydown","keydown/start","keydown/end"),performance.measure("input","input/start","input/end"),performance.measure("render","render/start","render/end"),performance.measure("inputlatency","inputlatency/start","inputlatency/end"),U("keydown",e),U("input",t),U("render",i),U("inputlatency",n),o++,S())}function U(N,w){const Q=performance.getEntriesByName(N)[0].duration;w.total+=Q,w.min=Math.min(w.min,Q),w.max=Math.max(w.max,Q)}function S(){performance.clearMarks("keydown/start"),performance.clearMarks("keydown/end"),performance.clearMarks("input/start"),performance.clearMarks("input/end"),performance.clearMarks("render/start"),performance.clearMarks("render/end"),performance.clearMarks("inputlatency/start"),performance.clearMarks("inputlatency/end"),performance.clearMeasures("keydown"),performance.clearMeasures("input"),performance.clearMeasures("render"),performance.clearMeasures("inputlatency"),r.keydown=0,r.input=0,r.render=0}function Z(){if(o===0)return;const N={keydown:R(e),input:R(t),render:R(i),total:R(n),sampleCount:o};return y(e),y(t),y(i),y(n),o=0,N}s.getAndClearMeasurements=Z;function R(N){return{average:N.total/o,max:N.max,min:N.min}}function y(N){N.total=0,N.min=Number.MAX_VALUE,N.max=0}})(qU||(qU={}));class y9{constructor(e,t){this.x=e,this.y=t,this._pageCoordinatesBrand=void 0}toClientCoordinates(e){return new HVe(this.x-e.scrollX,this.y-e.scrollY)}}class HVe{constructor(e,t){this.clientX=e,this.clientY=t,this._clientCoordinatesBrand=void 0}toPageCoordinates(e){return new y9(this.clientX+e.scrollX,this.clientY+e.scrollY)}}class Xlt{constructor(e,t,i,n){this.x=e,this.y=t,this.width=i,this.height=n,this._editorPagePositionBrand=void 0}}class Ylt{constructor(e,t){this.x=e,this.y=t,this._positionRelativeToEditorBrand=void 0}}function Ure(s){const e=Lo(s);return new Xlt(e.left,e.top,e.width,e.height)}function Fre(s,e,t){const i=e.width/s.offsetWidth,n=e.height/s.offsetHeight,o=(t.x-e.x)/i,r=(t.y-e.y)/n;return new Ylt(o,r)}class XF extends _u{constructor(e,t,i){super(ai(i),e),this._editorMouseEventBrand=void 0,this.isFromPointerCapture=t,this.pos=new y9(this.posx,this.posy),this.editorPos=Ure(i),this.relativePos=Fre(i,this.editorPos,this.pos)}}class _lt{constructor(e){this._editorViewDomNode=e}_create(e){return new XF(e,!1,this._editorViewDomNode)}onContextMenu(e,t){return Te(e,"contextmenu",i=>{t(this._create(i))})}onMouseUp(e,t){return Te(e,"mouseup",i=>{t(this._create(i))})}onMouseDown(e,t){return Te(e,ut.MOUSE_DOWN,i=>{t(this._create(i))})}onPointerDown(e,t){return Te(e,ut.POINTER_DOWN,i=>{t(this._create(i),i.pointerId)})}onMouseLeave(e,t){return Te(e,ut.MOUSE_LEAVE,i=>{t(this._create(i))})}onMouseMove(e,t){return Te(e,"mousemove",i=>t(this._create(i)))}}class zlt{constructor(e){this._editorViewDomNode=e}_create(e){return new XF(e,!1,this._editorViewDomNode)}onPointerUp(e,t){return Te(e,"pointerup",i=>{t(this._create(i))})}onPointerDown(e,t){return Te(e,ut.POINTER_DOWN,i=>{t(this._create(i),i.pointerId)})}onPointerLeave(e,t){return Te(e,ut.POINTER_LEAVE,i=>{t(this._create(i))})}onPointerMove(e,t){return Te(e,"pointermove",i=>t(this._create(i)))}}class Olt extends be{constructor(e){super(),this._editorViewDomNode=e,this._globalPointerMoveMonitor=this._register(new UM),this._keydownListener=null}startMonitoring(e,t,i,n,o){this._keydownListener=Fo(e.ownerDocument,"keydown",r=>{r.toKeyCodeChord().isModifierKey()||this._globalPointerMoveMonitor.stopMonitoring(!0,r.browserEvent)},!0),this._globalPointerMoveMonitor.startMonitoring(e,t,i,r=>{n(new XF(r,!0,this._editorViewDomNode))},r=>{this._keydownListener.dispose(),o(r)})}stopMonitoring(){this._globalPointerMoveMonitor.stopMonitoring(!0)}}const $_=class $_{constructor(e){this._editor=e,this._instanceId=++$_._idPool,this._counter=0,this._rules=new Map,this._garbageCollectionScheduler=new cs(()=>this.garbageCollect(),1e3)}createClassNameRef(e){const t=this.getOrCreateRule(e);return t.increaseRefCount(),{className:t.className,dispose:()=>{t.decreaseRefCount(),this._garbageCollectionScheduler.schedule()}}}getOrCreateRule(e){const t=this.computeUniqueKey(e);let i=this._rules.get(t);if(!i){const n=this._counter++;i=new jlt(t,`dyn-rule-${this._instanceId}-${n}`,dX(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0,e),this._rules.set(t,i)}return i}computeUniqueKey(e){return JSON.stringify(e)}garbageCollect(){for(const e of this._rules.values())e.hasReferences()||(this._rules.delete(e.key),e.dispose())}};$_._idPool=0;let S5=$_;class jlt{constructor(e,t,i,n){this.key=e,this.className=t,this.properties=n,this._referenceCount=0,this._styleElementDisposables=new De,this._styleElement=sh(i,void 0,this._styleElementDisposables),this._styleElement.textContent=this.getCssText(this.className,this.properties)}getCssText(e,t){let i=`.${e} {`;for(const n in t){const o=t[n];let r;typeof o=="object"?r=Mt(o.id):r=o;const l=Plt(n);i+=`
- ${l}: ${r};`}return i+=`
- }`,i}dispose(){this._styleElementDisposables.dispose(),this._styleElement=void 0}increaseRefCount(){this._referenceCount++}decreaseRefCount(){this._referenceCount--}hasReferences(){return this._referenceCount>0}}function Plt(s){return s.replace(/(^[A-Z])/,([e])=>e.toLowerCase()).replace(/([A-Z])/g,([e])=>`-${e.toLowerCase()}`)}class fk extends be{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onCompositionStart(e){return!1}onCompositionEnd(e){return!1}onConfigurationChanged(e){return!1}onCursorStateChanged(e){return!1}onDecorationsChanged(e){return!1}onFlushed(e){return!1}onFocusChanged(e){return!1}onLanguageConfigurationChanged(e){return!1}onLineMappingChanged(e){return!1}onLinesChanged(e){return!1}onLinesDeleted(e){return!1}onLinesInserted(e){return!1}onRevealRangeRequest(e){return!1}onScrollChanged(e){return!1}onThemeChanged(e){return!1}onTokensChanged(e){return!1}onTokensColorsChanged(e){return!1}onZonesChanged(e){return!1}handleEvents(e){let t=!1;for(let i=0,n=e.length;i<n;i++){const o=e[i];switch(o.type){case 0:this.onCompositionStart(o)&&(t=!0);break;case 1:this.onCompositionEnd(o)&&(t=!0);break;case 2:this.onConfigurationChanged(o)&&(t=!0);break;case 3:this.onCursorStateChanged(o)&&(t=!0);break;case 4:this.onDecorationsChanged(o)&&(t=!0);break;case 5:this.onFlushed(o)&&(t=!0);break;case 6:this.onFocusChanged(o)&&(t=!0);break;case 7:this.onLanguageConfigurationChanged(o)&&(t=!0);break;case 8:this.onLineMappingChanged(o)&&(t=!0);break;case 9:this.onLinesChanged(o)&&(t=!0);break;case 10:this.onLinesDeleted(o)&&(t=!0);break;case 11:this.onLinesInserted(o)&&(t=!0);break;case 12:this.onRevealRangeRequest(o)&&(t=!0);break;case 13:this.onScrollChanged(o)&&(t=!0);break;case 15:this.onTokensChanged(o)&&(t=!0);break;case 14:this.onThemeChanged(o)&&(t=!0);break;case 16:this.onTokensColorsChanged(o)&&(t=!0);break;case 17:this.onZonesChanged(o)&&(t=!0);break;default:console.info("View received unknown event: "),console.info(o)}}t&&(this._shouldRender=!0)}}class Zc extends fk{constructor(e){super(),this._context=e,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}}class up{static write(e,t){e.setAttribute("data-mprt",String(t))}static read(e){const t=e.getAttribute("data-mprt");return t===null?0:parseInt(t,10)}static collect(e,t){const i=[];let n=0;for(;e&&e!==e.ownerDocument.body&&e!==t;)e.nodeType===e.ELEMENT_NODE&&(i[n++]=this.read(e)),e=e.parentElement;const o=new Uint8Array(n);for(let r=0;r<n;r++)o[r]=i[n-r-1];return o}}class Hlt{constructor(e,t){this._restrictedRenderingContextBrand=void 0,this._viewLayout=e,this.viewportData=t,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}getScrolledTopFromAbsoluteTop(e){return e-this.scrollTop}getVerticalOffsetForLineNumber(e,t){return this._viewLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e,t){return this._viewLayout.getVerticalOffsetAfterLineNumber(e,t)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}class Klt extends Hlt{constructor(e,t,i){super(e,t),this._renderingContextBrand=void 0,this._viewLines=i}linesVisibleRangesForRange(e,t){return this._viewLines.linesVisibleRangesForRange(e,t)}visibleRangeForPosition(e){return this._viewLines.visibleRangeForPosition(e)}}class qlt{constructor(e,t,i,n){this.outsideRenderedLine=e,this.lineNumber=t,this.ranges=i,this.continuesOnNextLine=n}}class Q9{static from(e){const t=new Array(e.length);for(let i=0,n=e.length;i<n;i++){const o=e[i];t[i]=new Q9(o.left,o.width)}return t}constructor(e,t){this._horizontalRangeBrand=void 0,this.left=Math.round(e),this.width=Math.round(t)}toString(){return`[${this.left},${this.width}]`}}class zS{constructor(e,t){this._floatHorizontalRangeBrand=void 0,this.left=e,this.width=t}toString(){return`[${this.left},${this.width}]`}static compare(e,t){return e.left-t.left}}class $lt{constructor(e,t){this.outsideRenderedLine=e,this.originalLeft=t,this.left=Math.round(this.originalLeft)}}class Fpe{constructor(e,t){this.outsideRenderedLine=e,this.ranges=t}}class CD{static _createRange(){return this._handyReadyRange||(this._handyReadyRange=document.createRange()),this._handyReadyRange}static _detachRange(e,t){e.selectNodeContents(t)}static _readClientRects(e,t,i,n,o){const r=this._createRange();try{return r.setStart(e,t),r.setEnd(i,n),r.getClientRects()}catch{return null}finally{this._detachRange(r,o)}}static _mergeAdjacentRanges(e){if(e.length===1)return e;e.sort(zS.compare);const t=[];let i=0,n=e[0];for(let o=1,r=e.length;o<r;o++){const l=e[o];n.left+n.width+.9>=l.left?n.width=Math.max(n.width,l.left+l.width-n.left):(t[i++]=n,n=l)}return t[i++]=n,t}static _createHorizontalRangesFromClientRects(e,t,i){if(!e||e.length===0)return null;const n=[];for(let o=0,r=e.length;o<r;o++){const l=e[o];n[o]=new zS(Math.max(0,(l.left-t)/i),l.width/i)}return this._mergeAdjacentRanges(n)}static readHorizontalRanges(e,t,i,n,o,r){const a=e.children.length-1;if(0>a)return null;if(t=Math.min(a,Math.max(0,t)),n=Math.min(a,Math.max(0,n)),t===n&&i===o&&i===0&&!e.children[t].firstChild){const u=e.children[t].getClientRects();return r.markDidDomLayout(),this._createHorizontalRangesFromClientRects(u,r.clientRectDeltaLeft,r.clientRectScale)}t!==n&&n>0&&o===0&&(n--,o=1073741824);let d=e.children[t].firstChild,c=e.children[n].firstChild;if((!d||!c)&&(!d&&i===0&&t>0&&(d=e.children[t-1].firstChild,i=1073741824),!c&&o===0&&n>0&&(c=e.children[n-1].firstChild,o=1073741824)),!d||!c)return null;i=Math.min(d.textContent.length,Math.max(0,i)),o=Math.min(c.textContent.length,Math.max(0,o));const h=this._readClientRects(d,i,c,o,r.endNode);return r.markDidDomLayout(),this._createHorizontalRangesFromClientRects(h,r.clientRectDeltaLeft,r.clientRectScale)}}const eat=function(){return $m?!0:!(_a||zh||Of)}();let Y1=!0;class Ape{constructor(e,t){this.themeType=t;const i=e.options,n=i.get(50);i.get(38)==="off"?this.renderWhitespace=i.get(100):this.renderWhitespace="none",this.renderControlCharacters=i.get(95),this.spaceWidth=n.spaceWidth,this.middotWidth=n.middotWidth,this.wsmiddotWidth=n.wsmiddotWidth,this.useMonospaceOptimizations=n.isMonospace&&!i.get(33),this.canUseHalfwidthRightwardsArrow=n.canUseHalfwidthRightwardsArrow,this.lineHeight=i.get(67),this.stopRenderingLineAfter=i.get(118),this.fontLigatures=i.get(51)}equals(e){return this.themeType===e.themeType&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.fontLigatures===e.fontLigatures}}const ez=class ez{constructor(e){this._options=e,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(e){if(this._renderedViewLine)this._renderedViewLine.domNode=Kn(e);else throw new Error("I have no rendered view line to set the dom node to...")}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(e){this._isMaybeInvalid=!0,this._options=e}onSelectionChanged(){return np(this._options.themeType)||this._options.renderWhitespace==="selection"?(this._isMaybeInvalid=!0,!0):!1}renderLine(e,t,i,n,o){if(this._isMaybeInvalid===!1)return!1;this._isMaybeInvalid=!1;const r=n.getViewLineRenderingData(e),l=this._options,a=Da.filter(r.inlineDecorations,e,r.minColumn,r.maxColumn);let d=null;if(np(l.themeType)||this._options.renderWhitespace==="selection"){const m=n.selections;for(const p of m){if(p.endLineNumber<e||p.startLineNumber>e)continue;const g=p.startLineNumber===e?p.startColumn:r.minColumn,f=p.endLineNumber===e?p.endColumn:r.maxColumn;g<f&&(np(l.themeType)&&a.push(new Da(g,f,"inline-selected-text",0)),this._options.renderWhitespace==="selection"&&(d||(d=[]),d.push(new XVe(g-1,f-1))))}}const c=new rA(l.useMonospaceOptimizations,l.canUseHalfwidthRightwardsArrow,r.content,r.continuesWithWrappedLine,r.isBasicASCII,r.containsRTL,r.minColumn-1,r.tokens,a,r.tabSize,r.startVisibleColumn,l.spaceWidth,l.middotWidth,l.wsmiddotWidth,l.stopRenderingLineAfter,l.renderWhitespace,l.renderControlCharacters,l.fontLigatures!==TF.OFF,d);if(this._renderedViewLine&&this._renderedViewLine.input.equals(c))return!1;o.appendString('<div style="top:'),o.appendString(String(t)),o.appendString("px;height:"),o.appendString(String(i)),o.appendString('px;" class="'),o.appendString(ez.CLASS_NAME),o.appendString('">');const h=gk(c,o);o.appendString("</div>");let u=null;return Y1&&eat&&r.isBasicASCII&&l.useMonospaceOptimizations&&h.containsForeignElements===0&&(u=new AI(this._renderedViewLine?this._renderedViewLine.domNode:null,c,h.characterMapping)),u||(u=qVe(this._renderedViewLine?this._renderedViewLine.domNode:null,c,h.characterMapping,h.containsRTL,h.containsForeignElements)),this._renderedViewLine=u,!0}layoutLine(e,t,i){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(t),this._renderedViewLine.domNode.setHeight(i))}getWidth(e){return this._renderedViewLine?this._renderedViewLine.getWidth(e):0}getWidthIsFast(){return this._renderedViewLine?this._renderedViewLine.getWidthIsFast():!0}needsMonospaceFontCheck(){return this._renderedViewLine?this._renderedViewLine instanceof AI:!1}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof AI?this._renderedViewLine.monospaceAssumptionsAreValid():Y1}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof AI&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(e,t,i,n){if(!this._renderedViewLine)return null;t=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,t)),i=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,i));const o=this._renderedViewLine.input.stopRenderingLineAfter;if(o!==-1&&t>o+1&&i>o+1)return new Fpe(!0,[new zS(this.getWidth(n),0)]);o!==-1&&t>o+1&&(t=o+1),o!==-1&&i>o+1&&(i=o+1);const r=this._renderedViewLine.getVisibleRangesForRange(e,t,i,n);return r&&r.length>0?new Fpe(!1,r):null}getColumnOfNodeOffset(e,t){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(e,t):1}};ez.CLASS_NAME="view-line";let mf=ez;class AI{constructor(e,t,i){this._cachedWidth=-1,this.domNode=e,this.input=t;const n=Math.floor(t.lineContent.length/300);if(n>0){this._keyColumnPixelOffsetCache=new Float32Array(n);for(let o=0;o<n;o++)this._keyColumnPixelOffsetCache[o]=-1}else this._keyColumnPixelOffsetCache=null;this._characterMapping=i,this._charWidth=t.spaceWidth}getWidth(e){if(!this.domNode||this.input.lineContent.length<300){const t=this._characterMapping.getHorizontalOffset(this._characterMapping.length);return Math.round(this._charWidth*t)}return this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,e==null||e.markDidDomLayout()),this._cachedWidth}getWidthIsFast(){return this.input.lineContent.length<300||this._cachedWidth!==-1}monospaceAssumptionsAreValid(){if(!this.domNode)return Y1;if(this.input.lineContent.length<300){const e=this.getWidth(null),t=this.domNode.domNode.firstChild.offsetWidth;Math.abs(e-t)>=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),Y1=!1)}return Y1}toSlowRenderedLine(){return qVe(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(e,t,i,n){const o=this._getColumnPixelOffset(e,t,n),r=this._getColumnPixelOffset(e,i,n);return[new zS(o,r-o)]}_getColumnPixelOffset(e,t,i){if(t<=300){const d=this._characterMapping.getHorizontalOffset(t);return this._charWidth*d}const n=Math.floor((t-1)/300)-1,o=(n+1)*300+1;let r=-1;if(this._keyColumnPixelOffsetCache&&(r=this._keyColumnPixelOffsetCache[n],r===-1&&(r=this._actualReadPixelOffset(e,o,i),this._keyColumnPixelOffsetCache[n]=r)),r===-1){const d=this._characterMapping.getHorizontalOffset(t);return this._charWidth*d}const l=this._characterMapping.getHorizontalOffset(o),a=this._characterMapping.getHorizontalOffset(t);return r+this._charWidth*(a-l)}_getReadingTarget(e){return e.domNode.firstChild}_actualReadPixelOffset(e,t,i){if(!this.domNode)return-1;const n=this._characterMapping.getDomPosition(t),o=CD.readHorizontalRanges(this._getReadingTarget(this.domNode),n.partIndex,n.charIndex,n.partIndex,n.charIndex,i);return!o||o.length===0?-1:o[0].left}getColumnOfNodeOffset(e,t){return Are(this._characterMapping,e,t)}}class KVe{constructor(e,t,i,n,o){if(this.domNode=e,this.input=t,this._characterMapping=i,this._isWhitespaceOnly=/^\s*$/.test(t.lineContent),this._containsForeignElements=o,this._cachedWidth=-1,this._pixelOffsetCache=null,!n||this._characterMapping.length===0){this._pixelOffsetCache=new Float32Array(Math.max(2,this._characterMapping.length+1));for(let r=0,l=this._characterMapping.length;r<=l;r++)this._pixelOffsetCache[r]=-1}}_getReadingTarget(e){return e.domNode.firstChild}getWidth(e){return this.domNode?(this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,e==null||e.markDidDomLayout()),this._cachedWidth):0}getWidthIsFast(){return this._cachedWidth!==-1}getVisibleRangesForRange(e,t,i,n){if(!this.domNode)return null;if(this._pixelOffsetCache!==null){const o=this._readPixelOffset(this.domNode,e,t,n);if(o===-1)return null;const r=this._readPixelOffset(this.domNode,e,i,n);return r===-1?null:[new zS(o,r-o)]}return this._readVisibleRangesForRange(this.domNode,e,t,i,n)}_readVisibleRangesForRange(e,t,i,n,o){if(i===n){const r=this._readPixelOffset(e,t,i,o);return r===-1?null:[new zS(r,0)]}else return this._readRawVisibleRangesForRange(e,i,n,o)}_readPixelOffset(e,t,i,n){if(this._characterMapping.length===0){if(this._containsForeignElements===0||this._containsForeignElements===2)return 0;if(this._containsForeignElements===1)return this.getWidth(n);const o=this._getReadingTarget(e);return o.firstChild?(n.markDidDomLayout(),o.firstChild.offsetWidth):0}if(this._pixelOffsetCache!==null){const o=this._pixelOffsetCache[i];if(o!==-1)return o;const r=this._actualReadPixelOffset(e,t,i,n);return this._pixelOffsetCache[i]=r,r}return this._actualReadPixelOffset(e,t,i,n)}_actualReadPixelOffset(e,t,i,n){if(this._characterMapping.length===0){const a=CD.readHorizontalRanges(this._getReadingTarget(e),0,0,0,0,n);return!a||a.length===0?-1:a[0].left}if(i===this._characterMapping.length&&this._isWhitespaceOnly&&this._containsForeignElements===0)return this.getWidth(n);const o=this._characterMapping.getDomPosition(i),r=CD.readHorizontalRanges(this._getReadingTarget(e),o.partIndex,o.charIndex,o.partIndex,o.charIndex,n);if(!r||r.length===0)return-1;const l=r[0].left;if(this.input.isBasicASCII){const a=this._characterMapping.getHorizontalOffset(i),d=Math.round(this.input.spaceWidth*a);if(Math.abs(d-l)<=1)return d}return l}_readRawVisibleRangesForRange(e,t,i,n){if(t===1&&i===this._characterMapping.length)return[new zS(0,this.getWidth(n))];const o=this._characterMapping.getDomPosition(t),r=this._characterMapping.getDomPosition(i);return CD.readHorizontalRanges(this._getReadingTarget(e),o.partIndex,o.charIndex,r.partIndex,r.charIndex,n)}getColumnOfNodeOffset(e,t){return Are(this._characterMapping,e,t)}}class tat extends KVe{_readVisibleRangesForRange(e,t,i,n,o){const r=super._readVisibleRangesForRange(e,t,i,n,o);if(!r||r.length===0||i===n||i===1&&n===this._characterMapping.length)return r;if(!this.input.containsRTL){const l=this._readPixelOffset(e,t,n,o);if(l!==-1){const a=r[r.length-1];a.left<l&&(a.width=l-a.left)}}return r}}const qVe=function(){return xS?iat:nat}();function iat(s,e,t,i,n){return new tat(s,e,t,i,n)}function nat(s,e,t,i,n){return new KVe(s,e,t,i,n)}function Are(s,e,t){const i=e.textContent.length;let n=-1;for(;e;)e=e.previousSibling,n++;return s.getColumn(new YVe(n,t),i)}class CL{static whitespaceVisibleColumn(e,t,i){const n=e.length;let o=0,r=-1,l=-1;for(let a=0;a<n;a++){if(a===t)return[r,l,o];switch(o%i===0&&(r=a,l=o),e.charCodeAt(a)){case 32:o+=1;break;case 9:o=Zr.nextRenderTabStop(o,i);break;default:return[-1,-1,-1]}}return t===n?[r,l,o]:[-1,-1,-1]}static atomicPosition(e,t,i,n){const o=e.length,[r,l,a]=CL.whitespaceVisibleColumn(e,t,i);if(a===-1)return-1;let d;switch(n){case 0:d=!0;break;case 1:d=!1;break;case 2:if(a%i===0)return t;d=a%i<=i/2;break}if(d){if(r===-1)return-1;let u=l;for(let m=r;m<o;++m){if(u===l+i)return r;switch(e.charCodeAt(m)){case 32:u+=1;break;case 9:u=Zr.nextRenderTabStop(u,i);break;default:return-1}}return u===l+i?r:-1}const c=Zr.nextRenderTabStop(a,i);let h=a;for(let u=t;u<o;u++){if(h===c)return u;switch(e.charCodeAt(u)){case 32:h+=1;break;case 9:h=Zr.nextRenderTabStop(h,i);break;default:return-1}}return h===c?o:-1}}class Jb{constructor(e=null){this.hitTarget=e,this.type=0}}class $Ve{get hitTarget(){return this.spanNode}constructor(e,t,i){this.position=e,this.spanNode=t,this.injectedText=i,this.type=1}}var eS;(function(s){function e(t,i,n){const o=t.getPositionFromDOMInfo(i,n);return o?new $Ve(o,i,null):new Jb(i)}s.createFromDOMInfo=e})(eS||(eS={}));class sat{constructor(e,t){this.lastViewCursorsRenderData=e,this.lastTextareaPosition=t}}class ha{static _deduceRage(e,t=null){return!t&&e?new z(e.lineNumber,e.column,e.lineNumber,e.column):t??null}static createUnknown(e,t,i){return{type:0,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createTextarea(e,t){return{type:1,element:e,mouseColumn:t,position:null,range:null}}static createMargin(e,t,i,n,o,r){return{type:e,element:t,mouseColumn:i,position:n,range:o,detail:r}}static createViewZone(e,t,i,n,o){return{type:e,element:t,mouseColumn:i,position:n,range:this._deduceRage(n),detail:o}}static createContentText(e,t,i,n,o){return{type:6,element:e,mouseColumn:t,position:i,range:this._deduceRage(i,n),detail:o}}static createContentEmpty(e,t,i,n){return{type:7,element:e,mouseColumn:t,position:i,range:this._deduceRage(i),detail:n}}static createContentWidget(e,t,i){return{type:9,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createScrollbar(e,t,i){return{type:11,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createOverlayWidget(e,t,i){return{type:12,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createOutsideEditor(e,t,i,n){return{type:13,element:null,mouseColumn:e,position:t,range:this._deduceRage(t),outsidePosition:i,outsideDistance:n}}static _typeToString(e){return e===1?"TEXTAREA":e===2?"GUTTER_GLYPH_MARGIN":e===3?"GUTTER_LINE_NUMBERS":e===4?"GUTTER_LINE_DECORATIONS":e===5?"GUTTER_VIEW_ZONE":e===6?"CONTENT_TEXT":e===7?"CONTENT_EMPTY":e===8?"CONTENT_VIEW_ZONE":e===9?"CONTENT_WIDGET":e===10?"OVERVIEW_RULER":e===11?"SCROLLBAR":e===12?"OVERLAY_WIDGET":"UNKNOWN"}static toString(e){return this._typeToString(e.type)+": "+e.position+" - "+e.range+" - "+JSON.stringify(e.detail)}}class Aa{static isTextArea(e){return e.length===2&&e[0]===3&&e[1]===7}static isChildOfViewLines(e){return e.length>=4&&e[0]===3&&e[3]===8}static isStrictChildOfViewLines(e){return e.length>4&&e[0]===3&&e[3]===8}static isChildOfScrollableElement(e){return e.length>=2&&e[0]===3&&e[1]===6}static isChildOfMinimap(e){return e.length>=2&&e[0]===3&&e[1]===9}static isChildOfContentWidgets(e){return e.length>=4&&e[0]===3&&e[3]===1}static isChildOfOverflowGuard(e){return e.length>=1&&e[0]===3}static isChildOfOverflowingContentWidgets(e){return e.length>=1&&e[0]===2}static isChildOfOverlayWidgets(e){return e.length>=2&&e[0]===3&&e[1]===4}static isChildOfOverflowingOverlayWidgets(e){return e.length>=1&&e[0]===5}}class Yy{constructor(e,t,i){this.viewModel=e.viewModel;const n=e.configuration.options;this.layoutInfo=n.get(146),this.viewDomNode=t.viewDomNode,this.lineHeight=n.get(67),this.stickyTabStops=n.get(117),this.typicalHalfwidthCharacterWidth=n.get(50).typicalHalfwidthCharacterWidth,this.lastRenderData=i,this._context=e,this._viewHelper=t}getZoneAtCoord(e){return Yy.getZoneAtCoord(this._context,e)}static getZoneAtCoord(e,t){const i=e.viewLayout.getWhitespaceAtVerticalOffset(t);if(i){const n=i.verticalOffset+i.height/2,o=e.viewModel.getLineCount();let r=null,l,a=null;return i.afterLineNumber!==o&&(a=new ge(i.afterLineNumber+1,1)),i.afterLineNumber>0&&(r=new ge(i.afterLineNumber,e.viewModel.getLineMaxColumn(i.afterLineNumber))),a===null?l=r:r===null?l=a:t<n?l=r:l=a,{viewZoneId:i.id,afterLineNumber:i.afterLineNumber,positionBefore:r,positionAfter:a,position:l}}return null}getFullLineRangeAtCoord(e){if(this._context.viewLayout.isAfterLines(e)){const n=this._context.viewModel.getLineCount(),o=this._context.viewModel.getLineMaxColumn(n);return{range:new z(n,o,n,o),isAfterLines:!0}}const t=this._context.viewLayout.getLineNumberAtVerticalOffset(e),i=this._context.viewModel.getLineMaxColumn(t);return{range:new z(t,1,t,i),isAfterLines:!1}}getLineNumberAtVerticalOffset(e){return this._context.viewLayout.getLineNumberAtVerticalOffset(e)}isAfterLines(e){return this._context.viewLayout.isAfterLines(e)}isInTopPadding(e){return this._context.viewLayout.isInTopPadding(e)}isInBottomPadding(e){return this._context.viewLayout.isInBottomPadding(e)}getVerticalOffsetForLineNumber(e){return this._context.viewLayout.getVerticalOffsetForLineNumber(e)}findAttribute(e,t){return Yy._findAttribute(e,t,this._viewHelper.viewDomNode)}static _findAttribute(e,t,i){for(;e&&e!==e.ownerDocument.body;){if(e.hasAttribute&&e.hasAttribute(t))return e.getAttribute(t);if(e===i)return null;e=e.parentNode}return null}getLineWidth(e){return this._viewHelper.getLineWidth(e)}visibleRangeForPosition(e,t){return this._viewHelper.visibleRangeForPosition(e,t)}getPositionFromDOMInfo(e,t){return this._viewHelper.getPositionFromDOMInfo(e,t)}getCurrentScrollTop(){return this._context.viewLayout.getCurrentScrollTop()}getCurrentScrollLeft(){return this._context.viewLayout.getCurrentScrollLeft()}}class oat{constructor(e,t,i,n){this.editorPos=t,this.pos=i,this.relativePos=n,this.mouseVerticalOffset=Math.max(0,e.getCurrentScrollTop()+this.relativePos.y),this.mouseContentHorizontalOffset=e.getCurrentScrollLeft()+this.relativePos.x-e.layoutInfo.contentLeft,this.isInMarginArea=this.relativePos.x<e.layoutInfo.contentLeft&&this.relativePos.x>=e.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,da._getMouseColumn(this.mouseContentHorizontalOffset,e.typicalHalfwidthCharacterWidth))}}class rat extends oat{get target(){return this._useHitTestTarget?this.hitTestResult.value.hitTarget:this._eventTarget}get targetPath(){return this._targetPathCacheElement!==this.target&&(this._targetPathCacheElement=this.target,this._targetPathCacheValue=up.collect(this.target,this._ctx.viewDomNode)),this._targetPathCacheValue}constructor(e,t,i,n,o){super(e,t,i,n),this.hitTestResult=new qu(()=>da.doHitTest(this._ctx,this)),this._targetPathCacheElement=null,this._targetPathCacheValue=new Uint8Array(0),this._ctx=e,this._eventTarget=o;const r=!!this._eventTarget;this._useHitTestTarget=!r}toString(){return`pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}
- target: ${this.target?this.target.outerHTML:null}`}get wouldBenefitFromHitTestTargetSwitch(){return!this._useHitTestTarget&&this.hitTestResult.value.hitTarget!==null&&this.target!==this.hitTestResult.value.hitTarget}switchToHitTestTarget(){this._useHitTestTarget=!0}_getMouseColumn(e=null){return e&&e.column<this._ctx.viewModel.getLineMaxColumn(e.lineNumber)?Zr.visibleColumnFromColumn(this._ctx.viewModel.getLineContent(e.lineNumber),e.column,this._ctx.viewModel.model.getOptions().tabSize)+1:this.mouseColumn}fulfillUnknown(e=null){return ha.createUnknown(this.target,this._getMouseColumn(e),e)}fulfillTextarea(){return ha.createTextarea(this.target,this._getMouseColumn())}fulfillMargin(e,t,i,n){return ha.createMargin(e,this.target,this._getMouseColumn(t),t,i,n)}fulfillViewZone(e,t,i){return ha.createViewZone(e,this.target,this._getMouseColumn(t),t,i)}fulfillContentText(e,t,i){return ha.createContentText(this.target,this._getMouseColumn(e),e,t,i)}fulfillContentEmpty(e,t){return ha.createContentEmpty(this.target,this._getMouseColumn(e),e,t)}fulfillContentWidget(e){return ha.createContentWidget(this.target,this._getMouseColumn(),e)}fulfillScrollbar(e){return ha.createScrollbar(this.target,this._getMouseColumn(e),e)}fulfillOverlayWidget(e){return ha.createOverlayWidget(this.target,this._getMouseColumn(),e)}}const Zpe={isAfterLines:!0};function XP(s){return{isAfterLines:!1,horizontalDistanceToText:s}}class da{constructor(e,t){this._context=e,this._viewHelper=t}mouseTargetIsWidget(e){const t=e.target,i=up.collect(t,this._viewHelper.viewDomNode);return!!(Aa.isChildOfContentWidgets(i)||Aa.isChildOfOverflowingContentWidgets(i)||Aa.isChildOfOverlayWidgets(i)||Aa.isChildOfOverflowingOverlayWidgets(i))}createMouseTarget(e,t,i,n,o){const r=new Yy(this._context,this._viewHelper,e),l=new rat(r,t,i,n,o);try{const a=da._createMouseTarget(r,l);if(a.type===6&&r.stickyTabStops&&a.position!==null){const d=da._snapToSoftTabBoundary(a.position,r.viewModel),c=z.fromPositions(d,d).plusRange(a.range);return l.fulfillContentText(d,c,a.detail)}return a}catch{return l.fulfillUnknown()}}static _createMouseTarget(e,t){if(t.target===null)return t.fulfillUnknown();const i=t;let n=null;return!Aa.isChildOfOverflowGuard(t.targetPath)&&!Aa.isChildOfOverflowingContentWidgets(t.targetPath)&&!Aa.isChildOfOverflowingOverlayWidgets(t.targetPath)&&(n=n||t.fulfillUnknown()),n=n||da._hitTestContentWidget(e,i),n=n||da._hitTestOverlayWidget(e,i),n=n||da._hitTestMinimap(e,i),n=n||da._hitTestScrollbarSlider(e,i),n=n||da._hitTestViewZone(e,i),n=n||da._hitTestMargin(e,i),n=n||da._hitTestViewCursor(e,i),n=n||da._hitTestTextArea(e,i),n=n||da._hitTestViewLines(e,i),n=n||da._hitTestScrollbar(e,i),n||t.fulfillUnknown()}static _hitTestContentWidget(e,t){if(Aa.isChildOfContentWidgets(t.targetPath)||Aa.isChildOfOverflowingContentWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillContentWidget(i):t.fulfillUnknown()}return null}static _hitTestOverlayWidget(e,t){if(Aa.isChildOfOverlayWidgets(t.targetPath)||Aa.isChildOfOverflowingOverlayWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillOverlayWidget(i):t.fulfillUnknown()}return null}static _hitTestViewCursor(e,t){if(t.target){const i=e.lastRenderData.lastViewCursorsRenderData;for(const n of i)if(t.target===n.domNode)return t.fulfillContentText(n.position,null,{mightBeForeignElement:!1,injectedText:null})}if(t.isInContentArea){const i=e.lastRenderData.lastViewCursorsRenderData,n=t.mouseContentHorizontalOffset,o=t.mouseVerticalOffset;for(const r of i){if(n<r.contentLeft||n>r.contentLeft+r.width)continue;const l=e.getVerticalOffsetForLineNumber(r.position.lineNumber);if(l<=o&&o<=l+r.height)return t.fulfillContentText(r.position,null,{mightBeForeignElement:!1,injectedText:null})}}return null}static _hitTestViewZone(e,t){const i=e.getZoneAtCoord(t.mouseVerticalOffset);if(i){const n=t.isInContentArea?8:5;return t.fulfillViewZone(n,i.position,i)}return null}static _hitTestTextArea(e,t){return Aa.isTextArea(t.targetPath)?e.lastRenderData.lastTextareaPosition?t.fulfillContentText(e.lastRenderData.lastTextareaPosition,null,{mightBeForeignElement:!1,injectedText:null}):t.fulfillTextarea():null}static _hitTestMargin(e,t){if(t.isInMarginArea){const i=e.getFullLineRangeAtCoord(t.mouseVerticalOffset),n=i.range.getStartPosition();let o=Math.abs(t.relativePos.x);const r={isAfterLines:i.isAfterLines,glyphMarginLeft:e.layoutInfo.glyphMarginLeft,glyphMarginWidth:e.layoutInfo.glyphMarginWidth,lineNumbersWidth:e.layoutInfo.lineNumbersWidth,offsetX:o};if(o-=e.layoutInfo.glyphMarginLeft,o<=e.layoutInfo.glyphMarginWidth){const l=e.viewModel.coordinatesConverter.convertViewPositionToModelPosition(i.range.getStartPosition()),a=e.viewModel.glyphLanes.getLanesAtLine(l.lineNumber);return r.glyphMarginLane=a[Math.floor(o/e.lineHeight)],t.fulfillMargin(2,n,i.range,r)}return o-=e.layoutInfo.glyphMarginWidth,o<=e.layoutInfo.lineNumbersWidth?t.fulfillMargin(3,n,i.range,r):(o-=e.layoutInfo.lineNumbersWidth,t.fulfillMargin(4,n,i.range,r))}return null}static _hitTestViewLines(e,t){if(!Aa.isChildOfViewLines(t.targetPath))return null;if(e.isInTopPadding(t.mouseVerticalOffset))return t.fulfillContentEmpty(new ge(1,1),Zpe);if(e.isAfterLines(t.mouseVerticalOffset)||e.isInBottomPadding(t.mouseVerticalOffset)){const n=e.viewModel.getLineCount(),o=e.viewModel.getLineMaxColumn(n);return t.fulfillContentEmpty(new ge(n,o),Zpe)}if(Aa.isStrictChildOfViewLines(t.targetPath)){const n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);if(e.viewModel.getLineLength(n)===0){const r=e.getLineWidth(n),l=XP(t.mouseContentHorizontalOffset-r);return t.fulfillContentEmpty(new ge(n,1),l)}const o=e.getLineWidth(n);if(t.mouseContentHorizontalOffset>=o){const r=XP(t.mouseContentHorizontalOffset-o),l=new ge(n,e.viewModel.getLineMaxColumn(n));return t.fulfillContentEmpty(l,r)}}const i=t.hitTestResult.value;return i.type===1?da.createMouseTargetFromHitTestPosition(e,t,i.spanNode,i.position,i.injectedText):t.wouldBenefitFromHitTestTargetSwitch?(t.switchToHitTestTarget(),this._createMouseTarget(e,t)):t.fulfillUnknown()}static _hitTestMinimap(e,t){if(Aa.isChildOfMinimap(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new ge(i,n))}return null}static _hitTestScrollbarSlider(e,t){if(Aa.isChildOfScrollableElement(t.targetPath)&&t.target&&t.target.nodeType===1){const i=t.target.className;if(i&&/\b(slider|scrollbar)\b/.test(i)){const n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),o=e.viewModel.getLineMaxColumn(n);return t.fulfillScrollbar(new ge(n,o))}}return null}static _hitTestScrollbar(e,t){if(Aa.isChildOfScrollableElement(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new ge(i,n))}return null}getMouseColumn(e){const t=this._context.configuration.options,i=t.get(146),n=this._context.viewLayout.getCurrentScrollLeft()+e.x-i.contentLeft;return da._getMouseColumn(n,t.get(50).typicalHalfwidthCharacterWidth)}static _getMouseColumn(e,t){return e<0?1:Math.round(e/t)+1}static createMouseTargetFromHitTestPosition(e,t,i,n,o){const r=n.lineNumber,l=n.column,a=e.getLineWidth(r);if(t.mouseContentHorizontalOffset>a){const b=XP(t.mouseContentHorizontalOffset-a);return t.fulfillContentEmpty(n,b)}const d=e.visibleRangeForPosition(r,l);if(!d)return t.fulfillUnknown(n);const c=d.left;if(Math.abs(t.mouseContentHorizontalOffset-c)<1)return t.fulfillContentText(n,null,{mightBeForeignElement:!!o,injectedText:o});const h=[];if(h.push({offset:d.left,column:l}),l>1){const b=e.visibleRangeForPosition(r,l-1);b&&h.push({offset:b.left,column:l-1})}const u=e.viewModel.getLineMaxColumn(r);if(l<u){const b=e.visibleRangeForPosition(r,l+1);b&&h.push({offset:b.left,column:l+1})}h.sort((b,U)=>b.offset-U.offset);const m=t.pos.toClientCoordinates(ai(e.viewDomNode)),p=i.getBoundingClientRect(),g=p.left<=m.clientX&&m.clientX<=p.right;let f=null;for(let b=1;b<h.length;b++){const U=h[b-1],S=h[b];if(U.offset<=t.mouseContentHorizontalOffset&&t.mouseContentHorizontalOffset<=S.offset){f=new z(r,U.column,r,S.column);const Z=Math.abs(U.offset-t.mouseContentHorizontalOffset),R=Math.abs(S.offset-t.mouseContentHorizontalOffset);n=Z<R?new ge(r,U.column):new ge(r,S.column);break}}return t.fulfillContentText(n,f,{mightBeForeignElement:!g||!!o,injectedText:o})}static _doHitTestWithCaretRangeFromPoint(e,t){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.getVerticalOffsetForLineNumber(i),o=n+e.lineHeight;if(!(i===e.viewModel.getLineCount()&&t.mouseVerticalOffset>o)){const l=Math.floor((n+o)/2);let a=t.pos.y+(l-t.mouseVerticalOffset);a<=t.editorPos.y&&(a=t.editorPos.y+1),a>=t.editorPos.y+t.editorPos.height&&(a=t.editorPos.y+t.editorPos.height-1);const d=new y9(t.pos.x,a),c=this._actualDoHitTestWithCaretRangeFromPoint(e,d.toClientCoordinates(ai(e.viewDomNode)));if(c.type===1)return c}return this._actualDoHitTestWithCaretRangeFromPoint(e,t.pos.toClientCoordinates(ai(e.viewDomNode)))}static _actualDoHitTestWithCaretRangeFromPoint(e,t){const i=AN(e.viewDomNode);let n;if(i?typeof i.caretRangeFromPoint>"u"?n=lat(i,t.clientX,t.clientY):n=i.caretRangeFromPoint(t.clientX,t.clientY):n=e.viewDomNode.ownerDocument.caretRangeFromPoint(t.clientX,t.clientY),!n||!n.startContainer)return new Jb;const o=n.startContainer;if(o.nodeType===o.TEXT_NODE){const r=o.parentNode,l=r?r.parentNode:null,a=l?l.parentNode:null;return(a&&a.nodeType===a.ELEMENT_NODE?a.className:null)===mf.CLASS_NAME?eS.createFromDOMInfo(e,r,n.startOffset):new Jb(o.parentNode)}else if(o.nodeType===o.ELEMENT_NODE){const r=o.parentNode,l=r?r.parentNode:null;return(l&&l.nodeType===l.ELEMENT_NODE?l.className:null)===mf.CLASS_NAME?eS.createFromDOMInfo(e,o,o.textContent.length):new Jb(o)}return new Jb}static _doHitTestWithCaretPositionFromPoint(e,t){const i=e.viewDomNode.ownerDocument.caretPositionFromPoint(t.clientX,t.clientY);if(i.offsetNode.nodeType===i.offsetNode.TEXT_NODE){const n=i.offsetNode.parentNode,o=n?n.parentNode:null,r=o?o.parentNode:null;return(r&&r.nodeType===r.ELEMENT_NODE?r.className:null)===mf.CLASS_NAME?eS.createFromDOMInfo(e,i.offsetNode.parentNode,i.offset):new Jb(i.offsetNode.parentNode)}if(i.offsetNode.nodeType===i.offsetNode.ELEMENT_NODE){const n=i.offsetNode.parentNode,o=n&&n.nodeType===n.ELEMENT_NODE?n.className:null,r=n?n.parentNode:null,l=r&&r.nodeType===r.ELEMENT_NODE?r.className:null;if(o===mf.CLASS_NAME){const a=i.offsetNode.childNodes[Math.min(i.offset,i.offsetNode.childNodes.length-1)];if(a)return eS.createFromDOMInfo(e,a,0)}else if(l===mf.CLASS_NAME)return eS.createFromDOMInfo(e,i.offsetNode,0)}return new Jb(i.offsetNode)}static _snapToSoftTabBoundary(e,t){const i=t.getLineContent(e.lineNumber),{tabSize:n}=t.model.getOptions(),o=CL.atomicPosition(i,e.column-1,n,2);return o!==-1?new ge(e.lineNumber,o+1):e}static doHitTest(e,t){let i=new Jb;if(typeof e.viewDomNode.ownerDocument.caretRangeFromPoint=="function"?i=this._doHitTestWithCaretRangeFromPoint(e,t):e.viewDomNode.ownerDocument.caretPositionFromPoint&&(i=this._doHitTestWithCaretPositionFromPoint(e,t.pos.toClientCoordinates(ai(e.viewDomNode)))),i.type===1){const n=e.viewModel.getInjectedTextAt(i.position),o=e.viewModel.normalizePosition(i.position,2);(n||!o.equals(i.position))&&(i=new $Ve(o,i.spanNode,n))}return i}}function lat(s,e,t){const i=document.createRange();let n=s.elementFromPoint(e,t);if(n!==null){for(;n&&n.firstChild&&n.firstChild.nodeType!==n.firstChild.TEXT_NODE&&n.lastChild&&n.lastChild.firstChild;)n=n.lastChild;const o=n.getBoundingClientRect(),r=ai(n),l=r.getComputedStyle(n,null).getPropertyValue("font-style"),a=r.getComputedStyle(n,null).getPropertyValue("font-variant"),d=r.getComputedStyle(n,null).getPropertyValue("font-weight"),c=r.getComputedStyle(n,null).getPropertyValue("font-size"),h=r.getComputedStyle(n,null).getPropertyValue("line-height"),u=r.getComputedStyle(n,null).getPropertyValue("font-family"),m=`${l} ${a} ${d} ${c}/${h} ${u}`,p=n.innerText;let g=o.left,f=0,b;if(e>o.left+o.width)f=p.length;else{const U=Yq.getInstance();for(let S=0;S<p.length+1;S++){if(b=U.getCharWidth(p.charAt(S),m)/2,g+=b,e<g){f=S;break}g+=b}}i.setStart(n.firstChild,f),i.setEnd(n.firstChild,f)}return i}const uS=class uS{static getInstance(){return uS._INSTANCE||(uS._INSTANCE=new uS),uS._INSTANCE}constructor(){this._cache={},this._canvas=document.createElement("canvas")}getCharWidth(e,t){const i=e+t;if(this._cache[i])return this._cache[i];const n=this._canvas.getContext("2d");n.font=t;const r=n.measureText(e).width;return this._cache[i]=r,r}};uS._INSTANCE=null;let Yq=uS;class Zre extends fk{constructor(e,t,i){super(),this._mouseLeaveMonitor=null,this._context=e,this.viewController=t,this.viewHelper=i,this.mouseTargetFactory=new da(this._context,i),this._mouseDownOperation=this._register(new aat(this._context,this.viewController,this.viewHelper,this.mouseTargetFactory,(r,l)=>this._createMouseTarget(r,l),r=>this._getMouseColumn(r))),this.lastMouseLeaveTime=-1,this._height=this._context.configuration.options.get(146).height;const n=new _lt(this.viewHelper.viewDomNode);this._register(n.onContextMenu(this.viewHelper.viewDomNode,r=>this._onContextMenu(r,!0))),this._register(n.onMouseMove(this.viewHelper.viewDomNode,r=>{this._onMouseMove(r),this._mouseLeaveMonitor||(this._mouseLeaveMonitor=Te(this.viewHelper.viewDomNode.ownerDocument,"mousemove",l=>{this.viewHelper.viewDomNode.contains(l.target)||this._onMouseLeave(new XF(l,!1,this.viewHelper.viewDomNode))}))})),this._register(n.onMouseUp(this.viewHelper.viewDomNode,r=>this._onMouseUp(r))),this._register(n.onMouseLeave(this.viewHelper.viewDomNode,r=>this._onMouseLeave(r)));let o=0;this._register(n.onPointerDown(this.viewHelper.viewDomNode,(r,l)=>{o=l})),this._register(Te(this.viewHelper.viewDomNode,ut.POINTER_UP,r=>{this._mouseDownOperation.onPointerUp()})),this._register(n.onMouseDown(this.viewHelper.viewDomNode,r=>this._onMouseDown(r,o))),this._setupMouseWheelZoomListener(),this._context.addEventHandler(this)}_setupMouseWheelZoomListener(){const e=MX.INSTANCE;let t=0,i=kh.getZoomLevel(),n=!1,o=0;const r=a=>{if(this.viewController.emitMouseWheel(a),!this._context.configuration.options.get(76))return;const d=new FN(a);if(e.acceptStandardWheelEvent(d),e.isPhysicalMouseWheel()){if(l(a)){const c=kh.getZoomLevel(),h=d.deltaY>0?1:-1;kh.setZoomLevel(c+h),d.preventDefault(),d.stopPropagation()}}else Date.now()-t>50&&(i=kh.getZoomLevel(),n=l(a),o=0),t=Date.now(),o+=d.deltaY,n&&(kh.setZoomLevel(i+o/5),d.preventDefault(),d.stopPropagation())};this._register(Te(this.viewHelper.viewDomNode,ut.MOUSE_WHEEL,r,{capture:!0,passive:!1}));function l(a){return hn?(a.metaKey||a.ctrlKey)&&!a.shiftKey&&!a.altKey:a.ctrlKey&&!a.metaKey&&!a.shiftKey&&!a.altKey}}dispose(){this._context.removeEventHandler(this),this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),super.dispose()}onConfigurationChanged(e){if(e.hasChanged(146)){const t=this._context.configuration.options.get(146).height;this._height!==t&&(this._height=t,this._mouseDownOperation.onHeightChanged())}return!1}onCursorStateChanged(e){return this._mouseDownOperation.onCursorStateChanged(e),!1}onFocusChanged(e){return!1}getTargetAtClientPoint(e,t){const n=new HVe(e,t).toPageCoordinates(ai(this.viewHelper.viewDomNode)),o=Ure(this.viewHelper.viewDomNode);if(n.y<o.y||n.y>o.y+o.height||n.x<o.x||n.x>o.x+o.width)return null;const r=Fre(this.viewHelper.viewDomNode,o,n);return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),o,n,r,null)}_createMouseTarget(e,t){let i=e.target;if(!this.viewHelper.viewDomNode.contains(i)){const n=AN(this.viewHelper.viewDomNode);n&&(i=n.elementsFromPoint(e.posx,e.posy).find(o=>this.viewHelper.viewDomNode.contains(o)))}return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),e.editorPos,e.pos,e.relativePos,t?i:null)}_getMouseColumn(e){return this.mouseTargetFactory.getMouseColumn(e.relativePos)}_onContextMenu(e,t){this.viewController.emitContextMenu({event:e,target:this._createMouseTarget(e,t)})}_onMouseMove(e){this.mouseTargetFactory.mouseTargetIsWidget(e)||e.preventDefault(),!(this._mouseDownOperation.isActive()||e.timestamp<this.lastMouseLeaveTime)&&this.viewController.emitMouseMove({event:e,target:this._createMouseTarget(e,!0)})}_onMouseLeave(e){this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),this.lastMouseLeaveTime=new Date().getTime(),this.viewController.emitMouseLeave({event:e,target:null})}_onMouseUp(e){this.viewController.emitMouseUp({event:e,target:this._createMouseTarget(e,!0)})}_onMouseDown(e,t){const i=this._createMouseTarget(e,!0),n=i.type===6||i.type===7,o=i.type===2||i.type===3||i.type===4,r=i.type===3,l=this._context.configuration.options.get(110),a=i.type===8||i.type===5,d=i.type===9;let c=e.leftButton||e.middleButton;hn&&e.leftButton&&e.ctrlKey&&(c=!1);const h=()=>{e.preventDefault(),this.viewHelper.focusTextArea()};if(c&&(n||r&&l))h(),this._mouseDownOperation.start(i.type,e,t);else if(o)e.preventDefault();else if(a){const u=i.detail;c&&this.viewHelper.shouldSuppressMouseDownOnViewZone(u.viewZoneId)&&(h(),this._mouseDownOperation.start(i.type,e,t),e.preventDefault())}else d&&this.viewHelper.shouldSuppressMouseDownOnWidget(i.detail)&&(h(),e.preventDefault());this.viewController.emitMouseDown({event:e,target:i})}}class aat extends be{constructor(e,t,i,n,o,r){super(),this._context=e,this._viewController=t,this._viewHelper=i,this._mouseTargetFactory=n,this._createMouseTarget=o,this._getMouseColumn=r,this._mouseMoveMonitor=this._register(new Olt(this._viewHelper.viewDomNode)),this._topBottomDragScrolling=this._register(new dat(this._context,this._viewHelper,this._mouseTargetFactory,(l,a,d)=>this._dispatchMouse(l,a,d))),this._mouseState=new _q,this._currentSelection=new _t(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(e){this._lastMouseEvent=e,this._mouseState.setModifiers(e);const t=this._findMousePosition(e,!1);t&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:e,target:t}):t.type===13&&(t.outsidePosition==="above"||t.outsidePosition==="below")?this._topBottomDragScrolling.start(t,e):(this._topBottomDragScrolling.stop(),this._dispatchMouse(t,!0,1)))}start(e,t,i){this._lastMouseEvent=t,this._mouseState.setStartedOnLineNumbers(e===3),this._mouseState.setStartButtons(t),this._mouseState.setModifiers(t);const n=this._findMousePosition(t,!0);if(!n||!n.position)return;this._mouseState.trySetCount(t.detail,n.position),t.detail=this._mouseState.count;const o=this._context.configuration.options;if(!o.get(92)&&o.get(35)&&!o.get(22)&&!this._mouseState.altKey&&t.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&n.type===6&&n.position&&this._currentSelection.containsPosition(n.position)){this._mouseState.isDragAndDrop=!0,this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,r=>this._onMouseDownThenMove(r),r=>{const l=this._findMousePosition(this._lastMouseEvent,!1);ef(r)?this._viewController.emitMouseDropCanceled():this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:l?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()});return}this._mouseState.isDragAndDrop=!1,this._dispatchMouse(n,t.shiftKey,1),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,r=>this._onMouseDownThenMove(r),()=>this._stop()))}_stop(){this._isActive=!1,this._topBottomDragScrolling.stop()}onHeightChanged(){this._mouseMoveMonitor.stopMonitoring()}onPointerUp(){this._mouseMoveMonitor.stopMonitoring()}onCursorStateChanged(e){this._currentSelection=e.selections[0]}_getPositionOutsideEditor(e){const t=e.editorPos,i=this._context.viewModel,n=this._context.viewLayout,o=this._getMouseColumn(e);if(e.posy<t.y){const l=t.y-e.posy,a=Math.max(n.getCurrentScrollTop()-l,0),d=Yy.getZoneAtCoord(this._context,a);if(d){const h=this._helpPositionJumpOverViewZone(d);if(h)return ha.createOutsideEditor(o,h,"above",l)}const c=n.getLineNumberAtVerticalOffset(a);return ha.createOutsideEditor(o,new ge(c,1),"above",l)}if(e.posy>t.y+t.height){const l=e.posy-t.y-t.height,a=n.getCurrentScrollTop()+e.relativePos.y,d=Yy.getZoneAtCoord(this._context,a);if(d){const h=this._helpPositionJumpOverViewZone(d);if(h)return ha.createOutsideEditor(o,h,"below",l)}const c=n.getLineNumberAtVerticalOffset(a);return ha.createOutsideEditor(o,new ge(c,i.getLineMaxColumn(c)),"below",l)}const r=n.getLineNumberAtVerticalOffset(n.getCurrentScrollTop()+e.relativePos.y);if(e.posx<t.x){const l=t.x-e.posx;return ha.createOutsideEditor(o,new ge(r,1),"left",l)}if(e.posx>t.x+t.width){const l=e.posx-t.x-t.width;return ha.createOutsideEditor(o,new ge(r,i.getLineMaxColumn(r)),"right",l)}return null}_findMousePosition(e,t){const i=this._getPositionOutsideEditor(e);if(i)return i;const n=this._createMouseTarget(e,t);if(!n.position)return null;if(n.type===8||n.type===5){const r=this._helpPositionJumpOverViewZone(n.detail);if(r)return ha.createViewZone(n.type,n.element,n.mouseColumn,r,n.detail)}return n}_helpPositionJumpOverViewZone(e){const t=new ge(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),i=e.positionBefore,n=e.positionAfter;return i&&n?i.isBefore(t)?i:n:null}_dispatchMouse(e,t,i){e.position&&this._viewController.dispatchMouse({position:e.position,mouseColumn:e.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,revealType:i,inSelectionMode:t,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton,onInjectedText:e.type===6&&e.detail.injectedText!==null})}}class dat extends be{constructor(e,t,i,n){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=n,this._operation=null}dispose(){super.dispose(),this.stop()}start(e,t){this._operation?this._operation.setPosition(e,t):this._operation=new cat(this._context,this._viewHelper,this._mouseTargetFactory,this._dispatchMouse,e,t)}stop(){this._operation&&(this._operation.dispose(),this._operation=null)}}class cat extends be{constructor(e,t,i,n,o,r){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=n,this._position=o,this._mouseEvent=r,this._lastTime=Date.now(),this._animationFrameDisposable=fc(ai(r.browserEvent),()=>this._execute())}dispose(){this._animationFrameDisposable.dispose(),super.dispose()}setPosition(e,t){this._position=e,this._mouseEvent=t}_tick(){const e=Date.now(),t=e-this._lastTime;return this._lastTime=e,t}_getScrollSpeed(){const e=this._context.configuration.options.get(67),t=this._context.configuration.options.get(146).height/e,i=this._position.outsideDistance/e;return i<=1.5?Math.max(30,t*(1+i)):i<=3?Math.max(60,t*(2+i)):Math.max(200,t*(7+i))}_execute(){const e=this._context.configuration.options.get(67),t=this._getScrollSpeed(),i=this._tick(),n=t*(i/1e3)*e,o=this._position.outsidePosition==="above"?-n:n;this._context.viewModel.viewLayout.deltaScrollNow(0,o),this._viewHelper.renderNow();const r=this._context.viewLayout.getLinesViewportData(),l=this._position.outsidePosition==="above"?r.startLineNumber:r.endLineNumber;let a;{const d=Ure(this._viewHelper.viewDomNode),c=this._context.configuration.options.get(146).horizontalScrollbarHeight,h=new y9(this._mouseEvent.pos.x,d.y+d.height-c-.1),u=Fre(this._viewHelper.viewDomNode,d,h);a=this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(),d,h,u,null)}(!a.position||a.position.lineNumber!==l)&&(this._position.outsidePosition==="above"?a=ha.createOutsideEditor(this._position.mouseColumn,new ge(l,1),"above",this._position.outsideDistance):a=ha.createOutsideEditor(this._position.mouseColumn,new ge(l,this._context.viewModel.getLineMaxColumn(l)),"below",this._position.outsideDistance)),this._dispatchMouse(a,!0,2),this._animationFrameDisposable=fc(ai(a.element),()=>this._execute())}}const tz=class tz{get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get metaKey(){return this._metaKey}get shiftKey(){return this._shiftKey}get leftButton(){return this._leftButton}get middleButton(){return this._middleButton}get startedOnLineNumbers(){return this._startedOnLineNumbers}constructor(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}get count(){return this._lastMouseDownCount}setModifiers(e){this._altKey=e.altKey,this._ctrlKey=e.ctrlKey,this._metaKey=e.metaKey,this._shiftKey=e.shiftKey}setStartButtons(e){this._leftButton=e.leftButton,this._middleButton=e.middleButton}setStartedOnLineNumbers(e){this._startedOnLineNumbers=e}trySetCount(e,t){const i=new Date().getTime();i-this._lastSetMouseDownCountTime>tz.CLEAR_MOUSE_DOWN_COUNT_TIME&&(e=1),this._lastSetMouseDownCountTime=i,e>this._lastMouseDownCount+1&&(e=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(t)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=t,this._lastMouseDownCount=Math.min(e,this._lastMouseDownPositionEqualCount)}};tz.CLEAR_MOUSE_DOWN_COUNT_TIME=400;let _q=tz;const g1=class g1{constructor(e,t,i,n,o){this.value=e,this.selectionStart=t,this.selectionEnd=i,this.selection=n,this.newlineCountBeforeSelection=o}toString(){return`[ <${this.value}>, selectionStart: ${this.selectionStart}, selectionEnd: ${this.selectionEnd}]`}static readFromTextArea(e,t){const i=e.getValue(),n=e.getSelectionStart(),o=e.getSelectionEnd();let r;if(t){const l=i.substring(0,n),a=t.value.substring(0,t.selectionStart);l===a&&(r=t.newlineCountBeforeSelection)}return new g1(i,n,o,null,r)}collapseSelection(){return this.selectionStart===this.value.length?this:new g1(this.value,this.value.length,this.value.length,null,void 0)}writeToTextArea(e,t,i){t.setValue(e,this.value),i&&t.setSelectionRange(e,this.selectionStart,this.selectionEnd)}deduceEditorPosition(e){var n,o,r,l;if(e<=this.selectionStart){const a=this.value.substring(e,this.selectionStart);return this._finishDeduceEditorPosition(((n=this.selection)==null?void 0:n.getStartPosition())??null,a,-1)}if(e>=this.selectionEnd){const a=this.value.substring(this.selectionEnd,e);return this._finishDeduceEditorPosition(((o=this.selection)==null?void 0:o.getEndPosition())??null,a,1)}const t=this.value.substring(this.selectionStart,e);if(t.indexOf(String.fromCharCode(8230))===-1)return this._finishDeduceEditorPosition(((r=this.selection)==null?void 0:r.getStartPosition())??null,t,1);const i=this.value.substring(e,this.selectionEnd);return this._finishDeduceEditorPosition(((l=this.selection)==null?void 0:l.getEndPosition())??null,i,-1)}_finishDeduceEditorPosition(e,t,i){let n=0,o=-1;for(;(o=t.indexOf(`
- `,o+1))!==-1;)n++;return[e,i*t.length,n]}static deduceInput(e,t,i){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};const n=Math.min(LF(e.value,t.value),e.selectionStart,t.selectionStart),o=Math.min(nX(e.value,t.value),e.value.length-e.selectionEnd,t.value.length-t.selectionEnd);e.value.substring(n,e.value.length-o);const r=t.value.substring(n,t.value.length-o),l=e.selectionStart-n,a=e.selectionEnd-n,d=t.selectionStart-n,c=t.selectionEnd-n;if(d===c){const u=e.selectionStart-n;return{text:r,replacePrevCharCnt:u,replaceNextCharCnt:0,positionDelta:0}}const h=a-l;return{text:r,replacePrevCharCnt:h,replaceNextCharCnt:0,positionDelta:0}}static deduceAndroidCompositionInput(e,t){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(e.value===t.value)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:t.selectionEnd-e.selectionEnd};const i=Math.min(LF(e.value,t.value),e.selectionEnd),n=Math.min(nX(e.value,t.value),e.value.length-e.selectionEnd),o=e.value.substring(i,e.value.length-n),r=t.value.substring(i,t.value.length-n);e.selectionStart-i;const l=e.selectionEnd-i;t.selectionStart-i;const a=t.selectionEnd-i;return{text:r,replacePrevCharCnt:l,replaceNextCharCnt:o.length-l,positionDelta:a-r.length}}};g1.EMPTY=new g1("",0,0,null,void 0);let ua=g1;class MW{static _getPageOfLine(e,t){return Math.floor((e-1)/t)}static _getRangeForPage(e,t){const i=e*t,n=i+1,o=i+t;return new z(n,1,o+1,1)}static fromEditorSelection(e,t,i,n){const r=MW._getPageOfLine(t.startLineNumber,i),l=MW._getRangeForPage(r,i),a=MW._getPageOfLine(t.endLineNumber,i),d=MW._getRangeForPage(a,i);let c=l.intersectRanges(new z(1,1,t.startLineNumber,t.startColumn));if(n&&e.getValueLengthInRange(c,1)>500){const b=e.modifyPosition(c.getEndPosition(),-500);c=z.fromPositions(b,c.getEndPosition())}const h=e.getValueInRange(c,1),u=e.getLineCount(),m=e.getLineMaxColumn(u);let p=d.intersectRanges(new z(t.endLineNumber,t.endColumn,u,m));if(n&&e.getValueLengthInRange(p,1)>500){const b=e.modifyPosition(p.getStartPosition(),500);p=z.fromPositions(p.getStartPosition(),b)}const g=e.getValueInRange(p,1);let f;if(r===a||r+1===a)f=e.getValueInRange(t,1);else{const b=l.intersectRanges(t),U=d.intersectRanges(t);f=e.getValueInRange(b,1)+String.fromCharCode(8230)+e.getValueInRange(U,1)}return n&&f.length>2*500&&(f=f.substring(0,500)+String.fromCharCode(8230)+f.substring(f.length-500,f.length)),new ua(h+f+g,h.length,h.length+f.length,t,c.endLineNumber-c.startLineNumber)}}var hat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Spe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},N5;(function(s){s.Tap="-monaco-textarea-synthetic-tap"})(N5||(N5={}));const zq={forceCopyWithSyntaxHighlighting:!1},iz=class iz{constructor(){this._lastState=null}set(e,t){this._lastState={lastCopiedValue:e,data:t}}get(e){return this._lastState&&this._lastState.lastCopiedValue===e?this._lastState.data:(this._lastState=null,null)}};iz.INSTANCE=new iz;let BL=iz;class uat{constructor(){this._lastTypeTextLength=0}handleCompositionUpdate(e){e=e||"";const t={text:e,replacePrevCharCnt:this._lastTypeTextLength,replaceNextCharCnt:0,positionDelta:0};return this._lastTypeTextLength=e.length,t}}let Oq=class extends be{get textAreaState(){return this._textAreaState}constructor(e,t,i,n,o,r){super(),this._host=e,this._textArea=t,this._OS=i,this._browser=n,this._accessibilityService=o,this._logService=r,this._onFocus=this._register(new fe),this.onFocus=this._onFocus.event,this._onBlur=this._register(new fe),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new fe),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new fe),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new fe),this.onCut=this._onCut.event,this._onPaste=this._register(new fe),this.onPaste=this._onPaste.event,this._onType=this._register(new fe),this.onType=this._onType.event,this._onCompositionStart=this._register(new fe),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new fe),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new fe),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new fe),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._asyncFocusGainWriteScreenReaderContent=this._register(new Lr),this._asyncTriggerCut=this._register(new cs(()=>this._onCut.fire(),0)),this._textAreaState=ua.EMPTY,this._selectionChangeListener=null,this._accessibilityService.isScreenReaderOptimized()&&this.writeNativeTextAreaContent("ctor"),this._register(Ut.runAndSubscribe(this._accessibilityService.onDidChangeScreenReaderOptimized,()=>{this._accessibilityService.isScreenReaderOptimized()&&!this._asyncFocusGainWriteScreenReaderContent.value?this._asyncFocusGainWriteScreenReaderContent.value=this._register(new cs(()=>this.writeNativeTextAreaContent("asyncFocusGain"),0)):this._asyncFocusGainWriteScreenReaderContent.clear()})),this._hasFocus=!1,this._currentComposition=null;let l=null;this._register(this._textArea.onKeyDown(a=>{const d=new Ts(a);(d.keyCode===114||this._currentComposition&&d.keyCode===1)&&d.stopPropagation(),d.equals(9)&&d.preventDefault(),l=d,this._onKeyDown.fire(d)})),this._register(this._textArea.onKeyUp(a=>{const d=new Ts(a);this._onKeyUp.fire(d)})),this._register(this._textArea.onCompositionStart(a=>{const d=new uat;if(this._currentComposition){this._currentComposition=d;return}if(this._currentComposition=d,this._OS===2&&l&&l.equals(114)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===a.data&&(l.code==="ArrowRight"||l.code==="ArrowLeft")){d.handleCompositionUpdate("x"),this._onCompositionStart.fire({data:a.data});return}if(this._browser.isAndroid){this._onCompositionStart.fire({data:a.data});return}this._onCompositionStart.fire({data:a.data})})),this._register(this._textArea.onCompositionUpdate(a=>{const d=this._currentComposition;if(!d)return;if(this._browser.isAndroid){const h=ua.readFromTextArea(this._textArea,this._textAreaState),u=ua.deduceAndroidCompositionInput(this._textAreaState,h);this._textAreaState=h,this._onType.fire(u),this._onCompositionUpdate.fire(a);return}const c=d.handleCompositionUpdate(a.data);this._textAreaState=ua.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(c),this._onCompositionUpdate.fire(a)})),this._register(this._textArea.onCompositionEnd(a=>{const d=this._currentComposition;if(!d)return;if(this._currentComposition=null,this._browser.isAndroid){const h=ua.readFromTextArea(this._textArea,this._textAreaState),u=ua.deduceAndroidCompositionInput(this._textAreaState,h);this._textAreaState=h,this._onType.fire(u),this._onCompositionEnd.fire();return}const c=d.handleCompositionUpdate(a.data);this._textAreaState=ua.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(c),this._onCompositionEnd.fire()})),this._register(this._textArea.onInput(a=>{if(this._textArea.setIgnoreSelectionChangeTime("received input event"),this._currentComposition)return;const d=ua.readFromTextArea(this._textArea,this._textAreaState),c=ua.deduceInput(this._textAreaState,d,this._OS===2);c.replacePrevCharCnt===0&&c.text.length===1&&(Mr(c.text.charCodeAt(0))||c.text.charCodeAt(0)===127)||(this._textAreaState=d,(c.text!==""||c.replacePrevCharCnt!==0||c.replaceNextCharCnt!==0||c.positionDelta!==0)&&this._onType.fire(c))})),this._register(this._textArea.onCut(a=>{this._textArea.setIgnoreSelectionChangeTime("received cut event"),this._ensureClipboardGetsEditorSelection(a),this._asyncTriggerCut.schedule()})),this._register(this._textArea.onCopy(a=>{this._ensureClipboardGetsEditorSelection(a)})),this._register(this._textArea.onPaste(a=>{if(this._textArea.setIgnoreSelectionChangeTime("received paste event"),a.preventDefault(),!a.clipboardData)return;let[d,c]=jq.getTextData(a.clipboardData);d&&(c=c||BL.INSTANCE.get(d),this._onPaste.fire({text:d,metadata:c}))})),this._register(this._textArea.onFocus(()=>{const a=this._hasFocus;this._setHasFocus(!0),this._accessibilityService.isScreenReaderOptimized()&&this._browser.isSafari&&!a&&this._hasFocus&&(this._asyncFocusGainWriteScreenReaderContent.value||(this._asyncFocusGainWriteScreenReaderContent.value=new cs(()=>this.writeNativeTextAreaContent("asyncFocusGain"),0)),this._asyncFocusGainWriteScreenReaderContent.value.schedule())})),this._register(this._textArea.onBlur(()=>{this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("blurWithoutCompositionEnd"),this._onCompositionEnd.fire()),this._setHasFocus(!1)})),this._register(this._textArea.onSyntheticTap(()=>{this._browser.isAndroid&&this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("tapWithoutCompositionEnd"),this._onCompositionEnd.fire())}))}_installSelectionChangeListener(){let e=0;return Te(this._textArea.ownerDocument,"selectionchange",t=>{if(qU.onSelectionChange(),!this._hasFocus||this._currentComposition||!this._browser.isChrome)return;const i=Date.now(),n=i-e;if(e=i,n<5)return;const o=i-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),o<100||!this._textAreaState.selection)return;const r=this._textArea.getValue();if(this._textAreaState.value!==r)return;const l=this._textArea.getSelectionStart(),a=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===l&&this._textAreaState.selectionEnd===a)return;const d=this._textAreaState.deduceEditorPosition(l),c=this._host.deduceModelPosition(d[0],d[1],d[2]),h=this._textAreaState.deduceEditorPosition(a),u=this._host.deduceModelPosition(h[0],h[1],h[2]),m=new _t(c.lineNumber,c.column,u.lineNumber,u.column);this._onSelectionChangeRequest.fire(m)})}dispose(){super.dispose(),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}focusTextArea(){this._setHasFocus(!0),this.refreshFocusState()}isFocused(){return this._hasFocus}refreshFocusState(){this._setHasFocus(this._textArea.hasFocus())}_setHasFocus(e){this._hasFocus!==e&&(this._hasFocus=e,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&this.writeNativeTextAreaContent("focusgain"),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}_setAndWriteTextAreaState(e,t){this._hasFocus||(t=t.collapseSelection()),t.writeToTextArea(e,this._textArea,this._hasFocus),this._textAreaState=t}writeNativeTextAreaContent(e){!this._accessibilityService.isScreenReaderOptimized()&&e==="render"||this._currentComposition||(this._logService.trace(`writeTextAreaState(reason: ${e})`),this._setAndWriteTextAreaState(e,this._host.getScreenReaderContent()))}_ensureClipboardGetsEditorSelection(e){const t=this._host.getDataToCopy(),i={version:1,isFromEmptySelection:t.isFromEmptySelection,multicursorText:t.multicursorText,mode:t.mode};BL.INSTANCE.set(this._browser.isFirefox?t.text.replace(/\r\n/g,`
- `):t.text,i),e.preventDefault(),e.clipboardData&&jq.setTextData(e.clipboardData,t.text,t.html,i)}};Oq=hat([Spe(4,Fc),Spe(5,Cl)],Oq);const jq={getTextData(s){const e=s.getData(Bo.text);let t=null;const i=s.getData("vscode-editor-data");if(typeof i=="string")try{t=JSON.parse(i),t.version!==1&&(t=null)}catch{}return e.length===0&&t===null&&s.files.length>0?[Array.prototype.slice.call(s.files,0).map(o=>o.name).join(`
- `),null]:[e,t]},setTextData(s,e,t,i){s.setData(Bo.text,e),typeof t=="string"&&s.setData("text/html",t),s.setData("vscode-editor-data",JSON.stringify(i))}};class mat extends be{get ownerDocument(){return this._actual.ownerDocument}constructor(e){super(),this._actual=e,this.onKeyDown=this._register(new fn(this._actual,"keydown")).event,this.onKeyUp=this._register(new fn(this._actual,"keyup")).event,this.onCompositionStart=this._register(new fn(this._actual,"compositionstart")).event,this.onCompositionUpdate=this._register(new fn(this._actual,"compositionupdate")).event,this.onCompositionEnd=this._register(new fn(this._actual,"compositionend")).event,this.onBeforeInput=this._register(new fn(this._actual,"beforeinput")).event,this.onInput=this._register(new fn(this._actual,"input")).event,this.onCut=this._register(new fn(this._actual,"cut")).event,this.onCopy=this._register(new fn(this._actual,"copy")).event,this.onPaste=this._register(new fn(this._actual,"paste")).event,this.onFocus=this._register(new fn(this._actual,"focus")).event,this.onBlur=this._register(new fn(this._actual,"blur")).event,this._onSyntheticTap=this._register(new fe),this.onSyntheticTap=this._onSyntheticTap.event,this._ignoreSelectionChangeTime=0,this._register(this.onKeyDown(()=>qU.onKeyDown())),this._register(this.onBeforeInput(()=>qU.onBeforeInput())),this._register(this.onInput(()=>qU.onInput())),this._register(this.onKeyUp(()=>qU.onKeyUp())),this._register(Te(this._actual,N5.Tap,()=>this._onSyntheticTap.fire()))}hasFocus(){const e=AN(this._actual);return e?e.activeElement===this._actual:this._actual.isConnected?Ql()===this._actual:!1}setIgnoreSelectionChangeTime(e){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.value}setValue(e,t){const i=this._actual;i.value!==t&&(this.setIgnoreSelectionChangeTime("setValue"),i.value=t)}getSelectionStart(){return this._actual.selectionDirection==="backward"?this._actual.selectionEnd:this._actual.selectionStart}getSelectionEnd(){return this._actual.selectionDirection==="backward"?this._actual.selectionStart:this._actual.selectionEnd}setSelectionRange(e,t,i){const n=this._actual;let o=null;const r=AN(n);r?o=r.activeElement:o=Ql();const l=ai(o),a=o===n,d=n.selectionStart,c=n.selectionEnd;if(a&&d===t&&c===i){zh&&l.parent!==l&&n.focus();return}if(a){this.setIgnoreSelectionChangeTime("setSelectionRange"),n.setSelectionRange(t,i),zh&&l.parent!==l&&n.focus();return}try{const h=jHe(n);this.setIgnoreSelectionChangeTime("setSelectionRange"),n.focus(),n.setSelectionRange(t,i),PHe(n,h)}catch{}}}class pat extends Zre{constructor(e,t,i){super(e,t,i),this._register(Hl.addTarget(this.viewHelper.linesContentDomNode)),this._register(Te(this.viewHelper.linesContentDomNode,vs.Tap,o=>this.onTap(o))),this._register(Te(this.viewHelper.linesContentDomNode,vs.Change,o=>this.onChange(o))),this._register(Te(this.viewHelper.linesContentDomNode,vs.Contextmenu,o=>this._onContextMenu(new XF(o,!1,this.viewHelper.viewDomNode),!1))),this._lastPointerType="mouse",this._register(Te(this.viewHelper.linesContentDomNode,"pointerdown",o=>{const r=o.pointerType;if(r==="mouse"){this._lastPointerType="mouse";return}else r==="touch"?this._lastPointerType="touch":this._lastPointerType="pen"}));const n=new zlt(this.viewHelper.viewDomNode);this._register(n.onPointerMove(this.viewHelper.viewDomNode,o=>this._onMouseMove(o))),this._register(n.onPointerUp(this.viewHelper.viewDomNode,o=>this._onMouseUp(o))),this._register(n.onPointerLeave(this.viewHelper.viewDomNode,o=>this._onMouseLeave(o))),this._register(n.onPointerDown(this.viewHelper.viewDomNode,(o,r)=>this._onMouseDown(o,r)))}onTap(e){!e.initialTarget||!this.viewHelper.linesContentDomNode.contains(e.initialTarget)||(e.preventDefault(),this.viewHelper.focusTextArea(),this._dispatchGesture(e,!1))}onChange(e){this._lastPointerType==="touch"&&this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY),this._lastPointerType==="pen"&&this._dispatchGesture(e,!0)}_dispatchGesture(e,t){const i=this._createMouseTarget(new XF(e,!1,this.viewHelper.viewDomNode),!1);i.position&&this.viewController.dispatchMouse({position:i.position,mouseColumn:i.position.column,startedOnLineNumbers:!1,revealType:1,mouseDownCount:e.tapCount,inSelectionMode:t,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1,onInjectedText:i.type===6&&i.detail.injectedText!==null})}_onMouseDown(e,t){e.browserEvent.pointerType!=="touch"&&super._onMouseDown(e,t)}}class gat extends Zre{constructor(e,t,i){super(e,t,i),this._register(Hl.addTarget(this.viewHelper.linesContentDomNode)),this._register(Te(this.viewHelper.linesContentDomNode,vs.Tap,n=>this.onTap(n))),this._register(Te(this.viewHelper.linesContentDomNode,vs.Change,n=>this.onChange(n))),this._register(Te(this.viewHelper.linesContentDomNode,vs.Contextmenu,n=>this._onContextMenu(new XF(n,!1,this.viewHelper.viewDomNode),!1)))}onTap(e){e.preventDefault(),this.viewHelper.focusTextArea();const t=this._createMouseTarget(new XF(e,!1,this.viewHelper.viewDomNode),!1);if(t.position){const i=document.createEvent("CustomEvent");i.initEvent(N5.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(i),this.viewController.moveTo(t.position,1)}}onChange(e){this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)}}class fat extends be{constructor(e,t,i){super(),(lp||DOe&&dZe)&&Bse.pointerEvents?this.handler=this._register(new pat(e,t,i)):Us.TouchEvent?this.handler=this._register(new gat(e,t,i)):this.handler=this._register(new Zre(e,t,i))}getTargetAtClientPoint(e,t){return this.handler.getTargetAtClientPoint(e,t)}}class sR extends fk{}const nz=class nz extends sR{constructor(e){super(),this._context=e,this._readConfig(),this._lastCursorModelPosition=new ge(1,1),this._renderResult=null,this._activeLineNumber=1,this._context.addEventHandler(this)}_readConfig(){const e=this._context.configuration.options;this._lineHeight=e.get(67);const t=e.get(68);this._renderLineNumbers=t.renderType,this._renderCustomLineNumbers=t.renderFn,this._renderFinalNewline=e.get(96);const i=e.get(146);this._lineNumbersLeft=i.lineNumbersLeft,this._lineNumbersWidth=i.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return this._readConfig(),!0}onCursorStateChanged(e){const t=e.selections[0].getPosition();this._lastCursorModelPosition=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(t);let i=!1;return this._activeLineNumber!==t.lineNumber&&(this._activeLineNumber=t.lineNumber,i=!0),(this._renderLineNumbers===2||this._renderLineNumbers===3)&&(i=!0),i}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onDecorationsChanged(e){return e.affectsLineNumber}_getLineRenderLineNumber(e){const t=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new ge(e,1));if(t.column!==1)return"";const i=t.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(i);if(this._renderLineNumbers===2){const n=Math.abs(this._lastCursorModelPosition.lineNumber-i);return n===0?'<span class="relative-current-line-number">'+i+"</span>":String(n)}if(this._renderLineNumbers===3){if(this._lastCursorModelPosition.lineNumber===i||i%10===0)return String(i);const n=this._context.viewModel.getLineCount();return i===n?String(i):""}return String(i)}prepareRender(e){if(this._renderLineNumbers===0){this._renderResult=null;return}const t=_a?this._lineHeight%2===0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,o=this._context.viewModel.getDecorationsInViewport(e.visibleRange).filter(d=>!!d.options.lineNumberClassName);o.sort((d,c)=>z.compareRangesUsingEnds(d.range,c.range));let r=0;const l=this._context.viewModel.getLineCount(),a=[];for(let d=i;d<=n;d++){const c=d-i;let h=this._getLineRenderLineNumber(d),u="";for(;r<o.length&&o[r].range.endLineNumber<d;)r++;for(let m=r;m<o.length;m++){const{range:p,options:g}=o[m];p.startLineNumber<=d&&(u+=" "+g.lineNumberClassName)}if(!h&&!u){a[c]="";continue}d===l&&this._context.viewModel.getLineLength(d)===0&&(this._renderFinalNewline==="off"&&(h=""),this._renderFinalNewline==="dimmed"&&(u+=" dimmed-line-number")),d===this._activeLineNumber&&(u+=" active-line-number"),a[c]=`<div class="${nz.CLASS_NAME}${t}${u}" style="left:${this._lineNumbersLeft}px;width:${this._lineNumbersWidth}px;">${h}</div>`}this._renderResult=a}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}};nz.CLASS_NAME="line-numbers";let R5=nz;eu((s,e)=>{const t=s.getColor(rit),i=s.getColor(Ait);i?e.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${i}; }`):t&&e.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${t.transparent(.4)}; }`)});const f1=class f1 extends Zc{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(146);this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._domNode=Kn(document.createElement("div")),this._domNode.setClassName(f1.OUTER_CLASS_NAME),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._glyphMarginBackgroundDomNode=Kn(document.createElement("div")),this._glyphMarginBackgroundDomNode.setClassName(f1.CLASS_NAME),this._domNode.appendChild(this._glyphMarginBackgroundDomNode)}dispose(){super.dispose()}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollTopChanged}prepareRender(e){}render(e){this._domNode.setLayerHinting(this._canUseLayerHinting),this._domNode.setContain("strict");const t=e.scrollTop-e.bigNumbersDelta;this._domNode.setTop(-t);const i=Math.min(e.scrollHeight,1e6);this._domNode.setHeight(i),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(i)}};f1.CLASS_NAME="glyph-margin",f1.OUTER_CLASS_NAME="margin";let V5=f1;const _1="monaco-mouse-cursor-text";var bat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Npe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Uat{constructor(e,t,i,n,o){this._context=e,this.modelLineNumber=t,this.distanceToModelLineStart=i,this.widthOfHiddenLineTextBefore=n,this.distanceToModelLineEnd=o,this._visibleTextAreaBrand=void 0,this.startPosition=null,this.endPosition=null,this.visibleTextareaStart=null,this.visibleTextareaEnd=null,this._previousPresentation=null}prepareRender(e){const t=new ge(this.modelLineNumber,this.distanceToModelLineStart+1),i=new ge(this.modelLineNumber,this._context.viewModel.model.getLineMaxColumn(this.modelLineNumber)-this.distanceToModelLineEnd);this.startPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(t),this.endPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i),this.startPosition.lineNumber===this.endPosition.lineNumber?(this.visibleTextareaStart=e.visibleRangeForPosition(this.startPosition),this.visibleTextareaEnd=e.visibleRangeForPosition(this.endPosition)):(this.visibleTextareaStart=null,this.visibleTextareaEnd=null)}definePresentation(e){return this._previousPresentation||(e?this._previousPresentation=e:this._previousPresentation={foreground:1,italic:!1,bold:!1,underline:!1,strikethrough:!1}),this._previousPresentation}}const YP=zh;let Pq=class extends Zc{constructor(e,t,i,n,o){super(e),this._keybindingService=n,this._instantiationService=o,this._primaryCursorPosition=new ge(1,1),this._primaryCursorVisibleRange=null,this._viewController=t,this._visibleRangeProvider=i,this._scrollLeft=0,this._scrollTop=0;const r=this._context.configuration.options,l=r.get(146);this._setAccessibilityOptions(r),this._contentLeft=l.contentLeft,this._contentWidth=l.contentWidth,this._contentHeight=l.height,this._fontInfo=r.get(50),this._lineHeight=r.get(67),this._emptySelectionClipboard=r.get(37),this._copyWithSyntaxHighlighting=r.get(25),this._visibleTextArea=null,this._selections=[new _t(1,1,1,1)],this._modelSelections=[new _t(1,1,1,1)],this._lastRenderPosition=null,this.textArea=Kn(document.createElement("textarea")),up.write(this.textArea,7),this.textArea.setClassName(`inputarea ${_1}`),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:a}=this._context.viewModel.model.getOptions();this.textArea.domNode.style.tabSize=`${a*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("autocorrect","off"),this.textArea.setAttribute("autocapitalize","off"),this.textArea.setAttribute("autocomplete","off"),this.textArea.setAttribute("spellcheck","false"),this.textArea.setAttribute("aria-label",this._getAriaLabel(r)),this.textArea.setAttribute("aria-required",r.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(r.get(125))),this.textArea.setAttribute("role","textbox"),this.textArea.setAttribute("aria-roledescription",F("editor","editor")),this.textArea.setAttribute("aria-multiline","true"),this.textArea.setAttribute("aria-autocomplete",r.get(92)?"none":"both"),this._ensureReadOnlyAttribute(),this.textAreaCover=Kn(document.createElement("div")),this.textAreaCover.setPosition("absolute");const d={getLineCount:()=>this._context.viewModel.getLineCount(),getLineMaxColumn:u=>this._context.viewModel.getLineMaxColumn(u),getValueInRange:(u,m)=>this._context.viewModel.getValueInRange(u,m),getValueLengthInRange:(u,m)=>this._context.viewModel.getValueLengthInRange(u,m),modifyPosition:(u,m)=>this._context.viewModel.modifyPosition(u,m)},c={getDataToCopy:()=>{const u=this._context.viewModel.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,Tl),m=this._context.viewModel.model.getEOL(),p=this._emptySelectionClipboard&&this._modelSelections.length===1&&this._modelSelections[0].isEmpty(),g=Array.isArray(u)?u:null,f=Array.isArray(u)?u.join(m):u;let b,U=null;if(zq.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&f.length<65536){const S=this._context.viewModel.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);S&&(b=S.html,U=S.mode)}return{isFromEmptySelection:p,multicursorText:g,text:f,html:b,mode:U}},getScreenReaderContent:()=>{if(this._accessibilitySupport===1){const u=this._selections[0];if(hn&&u.isEmpty()){const p=u.getStartPosition();let g=this._getWordBeforePosition(p);if(g.length===0&&(g=this._getCharacterBeforePosition(p)),g.length>0)return new ua(g,g.length,g.length,z.fromPositions(p),0)}const m=500;if(hn&&!u.isEmpty()&&d.getValueLengthInRange(u,0)<m){const p=d.getValueInRange(u,0);return new ua(p,0,p.length,u,0)}if(Of&&!u.isEmpty()){const p="vscode-placeholder";return new ua(p,0,p.length,null,void 0)}return ua.EMPTY}if($ce){const u=this._selections[0];if(u.isEmpty()){const m=u.getStartPosition(),[p,g]=this._getAndroidWordAtPosition(m);if(p.length>0)return new ua(p,g,g,z.fromPositions(m),0)}return ua.EMPTY}return MW.fromEditorSelection(d,this._selections[0],this._accessibilityPageSize,this._accessibilitySupport===0)},deduceModelPosition:(u,m,p)=>this._context.viewModel.deduceModelPositionRelativeToViewPosition(u,m,p)},h=this._register(new mat(this.textArea.domNode));this._textAreaInput=this._register(this._instantiationService.createInstance(Oq,c,h,rc,{isAndroid:$ce,isChrome:jv,isFirefox:zh,isSafari:Of})),this._register(this._textAreaInput.onKeyDown(u=>{this._viewController.emitKeyDown(u)})),this._register(this._textAreaInput.onKeyUp(u=>{this._viewController.emitKeyUp(u)})),this._register(this._textAreaInput.onPaste(u=>{let m=!1,p=null,g=null;u.metadata&&(m=this._emptySelectionClipboard&&!!u.metadata.isFromEmptySelection,p=typeof u.metadata.multicursorText<"u"?u.metadata.multicursorText:null,g=u.metadata.mode),this._viewController.paste(u.text,m,p,g)})),this._register(this._textAreaInput.onCut(()=>{this._viewController.cut()})),this._register(this._textAreaInput.onType(u=>{u.replacePrevCharCnt||u.replaceNextCharCnt||u.positionDelta?this._viewController.compositionType(u.text,u.replacePrevCharCnt,u.replaceNextCharCnt,u.positionDelta):this._viewController.type(u.text)})),this._register(this._textAreaInput.onSelectionChangeRequest(u=>{this._viewController.setSelection(u)})),this._register(this._textAreaInput.onCompositionStart(u=>{const m=this.textArea.domNode,p=this._modelSelections[0],{distanceToModelLineStart:g,widthOfHiddenTextBefore:f}=(()=>{const U=m.value.substring(0,Math.min(m.selectionStart,m.selectionEnd)),S=U.lastIndexOf(`
- `),Z=U.substring(S+1),R=Z.lastIndexOf(" "),y=Z.length-R-1,N=p.getStartPosition(),w=Math.min(N.column-1,y),Q=N.column-1-w,C=Z.substring(0,Z.length-w),{tabSize:v}=this._context.viewModel.model.getOptions(),Y=Fat(this.textArea.domNode.ownerDocument,C,this._fontInfo,v);return{distanceToModelLineStart:Q,widthOfHiddenTextBefore:Y}})(),{distanceToModelLineEnd:b}=(()=>{const U=m.value.substring(Math.max(m.selectionStart,m.selectionEnd)),S=U.indexOf(`
- `),Z=S===-1?U:U.substring(0,S),R=Z.indexOf(" "),y=R===-1?Z.length:Z.length-R-1,N=p.getEndPosition(),w=Math.min(this._context.viewModel.model.getLineMaxColumn(N.lineNumber)-N.column,y);return{distanceToModelLineEnd:this._context.viewModel.model.getLineMaxColumn(N.lineNumber)-N.column-w}})();this._context.viewModel.revealRange("keyboard",!0,z.fromPositions(this._selections[0].getStartPosition()),0,1),this._visibleTextArea=new Uat(this._context,p.startLineNumber,g,f,b),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render(),this.textArea.setClassName(`inputarea ${_1} ime-input`),this._viewController.compositionStart(),this._context.viewModel.onCompositionStart()})),this._register(this._textAreaInput.onCompositionUpdate(u=>{this._visibleTextArea&&(this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render())})),this._register(this._textAreaInput.onCompositionEnd(()=>{this._visibleTextArea=null,this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._render(),this.textArea.setClassName(`inputarea ${_1}`),this._viewController.compositionEnd(),this._context.viewModel.onCompositionEnd()})),this._register(this._textAreaInput.onFocus(()=>{this._context.viewModel.setHasFocus(!0)})),this._register(this._textAreaInput.onBlur(()=>{this._context.viewModel.setHasFocus(!1)})),this._register(qC.onDidChange(()=>{this._ensureReadOnlyAttribute()}))}writeScreenReaderContent(e){this._textAreaInput.writeNativeTextAreaContent(e)}dispose(){super.dispose()}_getAndroidWordAtPosition(e){const t='`~!@#$%^&*()-=+[{]}\\|;:",.<>/?',i=this._context.viewModel.getLineContent(e.lineNumber),n=Ph(t,[]);let o=!0,r=e.column,l=!0,a=e.column,d=0;for(;d<50&&(o||l);){if(o&&r<=1&&(o=!1),o){const c=i.charCodeAt(r-2);n.get(c)!==0?o=!1:r--}if(l&&a>i.length&&(l=!1),l){const c=i.charCodeAt(a-1);n.get(c)!==0?l=!1:a++}d++}return[i.substring(r-1,a-1),e.column-r]}_getWordBeforePosition(e){const t=this._context.viewModel.getLineContent(e.lineNumber),i=Ph(this._context.configuration.options.get(132),[]);let n=e.column,o=0;for(;n>1;){const r=t.charCodeAt(n-2);if(i.get(r)!==0||o>50)return t.substring(n-1,e.column-1);o++,n--}return t.substring(0,e.column-1)}_getCharacterBeforePosition(e){if(e.column>1){const i=this._context.viewModel.getLineContent(e.lineNumber).charAt(e.column-2);if(!Mr(i.charCodeAt(0)))return i}return""}_getAriaLabel(e){var i,n,o;if(e.get(2)===1){const r=(i=this._keybindingService.lookupKeybinding("editor.action.toggleScreenReaderAccessibilityMode"))==null?void 0:i.getAriaLabel(),l=(n=this._keybindingService.lookupKeybinding("workbench.action.showCommands"))==null?void 0:n.getAriaLabel(),a=(o=this._keybindingService.lookupKeybinding("workbench.action.openGlobalKeybindings"))==null?void 0:o.getAriaLabel(),d=F("accessibilityModeOff","The editor is not accessible at this time.");return r?F("accessibilityOffAriaLabel","{0} To enable screen reader optimized mode, use {1}",d,r):l?F("accessibilityOffAriaLabelNoKb","{0} To enable screen reader optimized mode, open the quick pick with {1} and run the command Toggle Screen Reader Accessibility Mode, which is currently not triggerable via keyboard.",d,l):a?F("accessibilityOffAriaLabelNoKbs","{0} Please assign a keybinding for the command Toggle Screen Reader Accessibility Mode by accessing the keybindings editor with {1} and run it.",d,a):d}return e.get(4)}_setAccessibilityOptions(e){this._accessibilitySupport=e.get(2);const t=e.get(3);this._accessibilitySupport===2&&t===Up.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=t;const n=e.get(146).wrappingColumn;if(n!==-1&&this._accessibilitySupport!==1){const o=e.get(50);this._textAreaWrapping=!0,this._textAreaWidth=Math.round(n*o.typicalHalfwidthCharacterWidth)}else this._textAreaWrapping=!1,this._textAreaWidth=YP?0:1}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);this._setAccessibilityOptions(t),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._contentHeight=i.height,this._fontInfo=t.get(50),this._lineHeight=t.get(67),this._emptySelectionClipboard=t.get(37),this._copyWithSyntaxHighlighting=t.get(25),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:n}=this._context.viewModel.model.getOptions();return this.textArea.domNode.style.tabSize=`${n*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("aria-label",this._getAriaLabel(t)),this.textArea.setAttribute("aria-required",t.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(t.get(125))),(e.hasChanged(34)||e.hasChanged(92))&&this._ensureReadOnlyAttribute(),e.hasChanged(2)&&this._textAreaInput.writeNativeTextAreaContent("strategy changed"),!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),this._modelSelections=e.modelSelections.slice(0),this._textAreaInput.writeNativeTextAreaContent("selection changed"),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0}onZonesChanged(e){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(e){e.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",e.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),e.role&&this.textArea.setAttribute("role",e.role)}_ensureReadOnlyAttribute(){const e=this._context.configuration.options;!qC.enabled||e.get(34)&&e.get(92)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")}prepareRender(e){var t;this._primaryCursorPosition=new ge(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=e.visibleRangeForPosition(this._primaryCursorPosition),(t=this._visibleTextArea)==null||t.prepareRender(e)}render(e){this._textAreaInput.writeNativeTextAreaContent("render"),this._render()}_render(){if(this._visibleTextArea){const i=this._visibleTextArea.visibleTextareaStart,n=this._visibleTextArea.visibleTextareaEnd,o=this._visibleTextArea.startPosition,r=this._visibleTextArea.endPosition;if(o&&r&&i&&n&&n.left>=this._scrollLeft&&i.left<=this._scrollLeft+this._contentWidth){const l=this._context.viewLayout.getVerticalOffsetForLineNumber(this._primaryCursorPosition.lineNumber)-this._scrollTop,a=this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));let d=this._visibleTextArea.widthOfHiddenLineTextBefore,c=this._contentLeft+i.left-this._scrollLeft,h=n.left-i.left+1;if(c<this._contentLeft){const b=this._contentLeft-c;c+=b,d+=b,h-=b}h>this._contentWidth&&(h=this._contentWidth);const u=this._context.viewModel.getViewLineData(o.lineNumber),m=u.tokens.findTokenIndexAtOffset(o.column-1),p=u.tokens.findTokenIndexAtOffset(r.column-1),g=m===p,f=this._visibleTextArea.definePresentation(g?u.tokens.getPresentation(m):null);this.textArea.domNode.scrollTop=a*this._lineHeight,this.textArea.domNode.scrollLeft=d,this._doRender({lastRenderPosition:null,top:l,left:c,width:h,height:this._lineHeight,useCover:!1,color:(Ro.getColorMap()||[])[f.foreground],italic:f.italic,bold:f.bold,underline:f.underline,strikethrough:f.strikethrough})}return}if(!this._primaryCursorVisibleRange){this._renderAtTopLeft();return}const e=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(e<this._contentLeft||e>this._contentLeft+this._contentWidth){this._renderAtTopLeft();return}const t=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;if(t<0||t>this._contentHeight){this._renderAtTopLeft();return}if(hn||this._accessibilitySupport===2){this._doRender({lastRenderPosition:this._primaryCursorPosition,top:t,left:this._textAreaWrapping?this._contentLeft:e,width:this._textAreaWidth,height:this._lineHeight,useCover:!1}),this.textArea.domNode.scrollLeft=this._primaryCursorVisibleRange.left;const i=this._textAreaInput.textAreaState.newlineCountBeforeSelection??this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));this.textArea.domNode.scrollTop=i*this._lineHeight;return}this._doRender({lastRenderPosition:this._primaryCursorPosition,top:t,left:this._textAreaWrapping?this._contentLeft:e,width:this._textAreaWidth,height:YP?0:1,useCover:!1})}_newlinecount(e){let t=0,i=-1;do{if(i=e.indexOf(`
- `,i+1),i===-1)break;t++}while(!0);return t}_renderAtTopLeft(){this._doRender({lastRenderPosition:null,top:0,left:0,width:this._textAreaWidth,height:YP?0:1,useCover:!0})}_doRender(e){this._lastRenderPosition=e.lastRenderPosition;const t=this.textArea,i=this.textAreaCover;hl(t,this._fontInfo),t.setTop(e.top),t.setLeft(e.left),t.setWidth(e.width),t.setHeight(e.height),t.setColor(e.color?Je.Format.CSS.formatHex(e.color):""),t.setFontStyle(e.italic?"italic":""),e.bold&&t.setFontWeight("bold"),t.setTextDecoration(`${e.underline?" underline":""}${e.strikethrough?" line-through":""}`),i.setTop(e.useCover?e.top:0),i.setLeft(e.useCover?e.left:0),i.setWidth(e.useCover?e.width:0),i.setHeight(e.useCover?e.height:0);const n=this._context.configuration.options;n.get(57)?i.setClassName("monaco-editor-background textAreaCover "+V5.OUTER_CLASS_NAME):n.get(68).renderType!==0?i.setClassName("monaco-editor-background textAreaCover "+R5.CLASS_NAME):i.setClassName("monaco-editor-background textAreaCover")}};Pq=bat([Npe(3,qn),Npe(4,ti)],Pq);function Fat(s,e,t,i){if(e.length===0)return 0;const n=s.createElement("div");n.style.position="absolute",n.style.top="-50000px",n.style.width="50000px";const o=s.createElement("span");hl(o,t),o.style.whiteSpace="pre",o.style.tabSize=`${i*t.spaceWidth}px`,o.append(e),n.appendChild(o),s.body.appendChild(n);const r=o.offsetWidth;return n.remove(),r}const Aat=()=>!0,Zat=()=>!1,Sat=s=>s===" "||s===" ";class XR{static shouldRecreate(e){return e.hasChanged(146)||e.hasChanged(132)||e.hasChanged(37)||e.hasChanged(77)||e.hasChanged(79)||e.hasChanged(80)||e.hasChanged(6)||e.hasChanged(7)||e.hasChanged(11)||e.hasChanged(9)||e.hasChanged(10)||e.hasChanged(14)||e.hasChanged(129)||e.hasChanged(50)||e.hasChanged(92)||e.hasChanged(131)}constructor(e,t,i,n){this.languageConfigurationService=n,this._cursorMoveConfigurationBrand=void 0,this._languageId=e;const o=i.options,r=o.get(146),l=o.get(50);this.readOnly=o.get(92),this.tabSize=t.tabSize,this.indentSize=t.indentSize,this.insertSpaces=t.insertSpaces,this.stickyTabStops=o.get(117),this.lineHeight=l.lineHeight,this.typicalHalfwidthCharacterWidth=l.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(r.height/this.lineHeight)-2),this.useTabStops=o.get(129),this.wordSeparators=o.get(132),this.emptySelectionClipboard=o.get(37),this.copyWithSyntaxHighlighting=o.get(25),this.multiCursorMergeOverlapping=o.get(77),this.multiCursorPaste=o.get(79),this.multiCursorLimit=o.get(80),this.autoClosingBrackets=o.get(6),this.autoClosingComments=o.get(7),this.autoClosingQuotes=o.get(11),this.autoClosingDelete=o.get(9),this.autoClosingOvertype=o.get(10),this.autoSurround=o.get(14),this.autoIndent=o.get(12),this.wordSegmenterLocales=o.get(131),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(e,this.autoClosingQuotes,!0),comment:this._getShouldAutoClose(e,this.autoClosingComments,!1),bracket:this._getShouldAutoClose(e,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(e).getAutoClosingPairs();const a=this.languageConfigurationService.getLanguageConfiguration(e).getSurroundingPairs();if(a)for(const c of a)this.surroundingPairs[c.open]=c.close;const d=this.languageConfigurationService.getLanguageConfiguration(e).comments;this.blockCommentStartToken=(d==null?void 0:d.blockCommentStartToken)??null}get electricChars(){var e;if(!this._electricChars){this._electricChars={};const t=(e=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)==null?void 0:e.getElectricCharacters();if(t)for(const i of t)this._electricChars[i]=!0}return this._electricChars}onElectricCharacter(e,t,i){const n=FS(t,i-1),o=this.languageConfigurationService.getLanguageConfiguration(n.languageId).electricCharacter;return o?o.onElectricCharacter(e,n,i-n.firstCharOffset):null}normalizeIndentation(e){return Ioe(e,this.indentSize,this.insertSpaces)}_getShouldAutoClose(e,t,i){switch(t){case"beforeWhitespace":return Sat;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(e,i);case"always":return Aat;case"never":return Zat}}_getLanguageDefinedShouldAutoClose(e,t){const i=this.languageConfigurationService.getLanguageConfiguration(e).getAutoCloseBeforeSet(t);return n=>i.indexOf(n)!==-1}visibleColumnFromColumn(e,t){return Zr.visibleColumnFromColumn(e.getLineContent(t.lineNumber),t.column,this.tabSize)}columnFromVisibleColumn(e,t,i){const n=Zr.columnFromVisibleColumn(e.getLineContent(t),i,this.tabSize),o=e.getLineMinColumn(t);if(n<o)return o;const r=e.getLineMaxColumn(t);return n>r?r:n}}let Bn=class eWe{static fromModelState(e){return new Nat(e)}static fromViewState(e){return new Rat(e)}static fromModelSelection(e){const t=_t.liftSelection(e),i=new nl(z.fromPositions(t.getSelectionStart()),0,0,t.getPosition(),0);return eWe.fromModelState(i)}static fromModelSelections(e){const t=[];for(let i=0,n=e.length;i<n;i++)t[i]=this.fromModelSelection(e[i]);return t}constructor(e,t){this._cursorStateBrand=void 0,this.modelState=e,this.viewState=t}equals(e){return this.viewState.equals(e.viewState)&&this.modelState.equals(e.modelState)}};class Nat{constructor(e){this.modelState=e,this.viewState=null}}class Rat{constructor(e){this.modelState=null,this.viewState=e}}class nl{constructor(e,t,i,n,o){this.selectionStart=e,this.selectionStartKind=t,this.selectionStartLeftoverVisibleColumns=i,this.position=n,this.leftoverVisibleColumns=o,this._singleCursorStateBrand=void 0,this.selection=nl._computeSelection(this.selectionStart,this.position)}equals(e){return this.selectionStartLeftoverVisibleColumns===e.selectionStartLeftoverVisibleColumns&&this.leftoverVisibleColumns===e.leftoverVisibleColumns&&this.selectionStartKind===e.selectionStartKind&&this.position.equals(e.position)&&this.selectionStart.equalsRange(e.selectionStart)}hasSelection(){return!this.selection.isEmpty()||!this.selectionStart.isEmpty()}move(e,t,i,n){return e?new nl(this.selectionStart,this.selectionStartKind,this.selectionStartLeftoverVisibleColumns,new ge(t,i),n):new nl(new z(t,i,t,i),0,n,new ge(t,i),n)}static _computeSelection(e,t){return e.isEmpty()||!t.isBeforeOrEqual(e.getStartPosition())?_t.fromPositions(e.getStartPosition(),t):_t.fromPositions(e.getEndPosition(),t)}}class Qd{constructor(e,t,i){this._editOperationResultBrand=void 0,this.type=e,this.commands=t,this.shouldPushStackElementBefore=i.shouldPushStackElementBefore,this.shouldPushStackElementAfter=i.shouldPushStackElementAfter}}function YF(s){return s==="'"||s==='"'||s==="`"}class tS{static columnSelect(e,t,i,n,o,r){const l=Math.abs(o-i)+1,a=i>o,d=n>r,c=n<r,h=[];for(let u=0;u<l;u++){const m=i+(a?-u:u),p=e.columnFromVisibleColumn(t,m,n),g=e.columnFromVisibleColumn(t,m,r),f=e.visibleColumnFromColumn(t,new ge(m,p)),b=e.visibleColumnFromColumn(t,new ge(m,g));c&&(f>r||b<n)||d&&(b>n||f<r)||h.push(new nl(new z(m,p,m,p),0,0,new ge(m,g),0))}if(h.length===0)for(let u=0;u<l;u++){const m=i+(a?-u:u),p=t.getLineMaxColumn(m);h.push(new nl(new z(m,p,m,p),0,0,new ge(m,p),0))}return{viewStates:h,reversed:a,fromLineNumber:i,fromVisualColumn:n,toLineNumber:o,toVisualColumn:r}}static columnSelectLeft(e,t,i){let n=i.toViewVisualColumn;return n>0&&n--,tS.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,n)}static columnSelectRight(e,t,i){let n=0;const o=Math.min(i.fromViewLineNumber,i.toViewLineNumber),r=Math.max(i.fromViewLineNumber,i.toViewLineNumber);for(let a=o;a<=r;a++){const d=t.getLineMaxColumn(a),c=e.visibleColumnFromColumn(t,new ge(a,d));n=Math.max(n,c)}let l=i.toViewVisualColumn;return l<n&&l++,this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,l)}static columnSelectUp(e,t,i,n){const o=n?e.pageSize:1,r=Math.max(1,i.toViewLineNumber-o);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,r,i.toViewVisualColumn)}static columnSelectDown(e,t,i,n){const o=n?e.pageSize:1,r=Math.min(t.getLineCount(),i.toViewLineNumber+o);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,r,i.toViewVisualColumn)}}class Wl{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return _t.fromPositions(n.getEndPosition())}}class Vat{constructor(e,t){this._range=e,this._text=t}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return _t.fromRange(n,0)}}class BD{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return _t.fromPositions(n.getStartPosition())}}class W5{constructor(e,t,i,n,o=!1){this._range=e,this._text=t,this._columnDeltaOffset=n,this._lineNumberDeltaOffset=i,this.insertsAutoWhitespace=o}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return _t.fromPositions(n.getEndPosition().delta(this._lineNumberDeltaOffset,this._columnDeltaOffset))}}class Sre{constructor(e,t,i,n=!1){this._range=e,this._text=t,this._initialSelection=i,this._forceMoveMarkers=n,this._selectionId=null}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=t.trackSelection(this._initialSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}class _P{constructor(e,t,i){this._cursorPositionBrand=void 0,this.lineNumber=e,this.column=t,this.leftoverVisibleColumns=i}}class ts{static leftPosition(e,t){if(t.column>e.getLineMinColumn(t.lineNumber))return t.delta(void 0,-kZe(e.getLineContent(t.lineNumber),t.column-1));if(t.lineNumber>1){const i=t.lineNumber-1;return new ge(i,e.getLineMaxColumn(i))}else return t}static leftPositionAtomicSoftTabs(e,t,i){if(t.column<=e.getLineIndentColumn(t.lineNumber)){const n=e.getLineMinColumn(t.lineNumber),o=e.getLineContent(t.lineNumber),r=CL.atomicPosition(o,t.column-1,i,0);if(r!==-1&&r+1>=n)return new ge(t.lineNumber,r+1)}return this.leftPosition(e,t)}static left(e,t,i){const n=e.stickyTabStops?ts.leftPositionAtomicSoftTabs(t,i,e.tabSize):ts.leftPosition(t,i);return new _P(n.lineNumber,n.column,0)}static moveLeft(e,t,i,n,o){let r,l;if(i.hasSelection()&&!n)r=i.selection.startLineNumber,l=i.selection.startColumn;else{const a=i.position.delta(void 0,-(o-1)),d=t.normalizePosition(ts.clipPositionColumn(a,t),0),c=ts.left(e,t,d);r=c.lineNumber,l=c.column}return i.move(n,r,l,0)}static clipPositionColumn(e,t){return new ge(e.lineNumber,ts.clipRange(e.column,t.getLineMinColumn(e.lineNumber),t.getLineMaxColumn(e.lineNumber)))}static clipRange(e,t,i){return e<t?t:e>i?i:e}static rightPosition(e,t,i){return i<e.getLineMaxColumn(t)?i=i+wse(e.getLineContent(t),i-1):t<e.getLineCount()&&(t=t+1,i=e.getLineMinColumn(t)),new ge(t,i)}static rightPositionAtomicSoftTabs(e,t,i,n,o){if(i<e.getLineIndentColumn(t)){const r=e.getLineContent(t),l=CL.atomicPosition(r,i-1,n,1);if(l!==-1)return new ge(t,l+1)}return this.rightPosition(e,t,i)}static right(e,t,i){const n=e.stickyTabStops?ts.rightPositionAtomicSoftTabs(t,i.lineNumber,i.column,e.tabSize,e.indentSize):ts.rightPosition(t,i.lineNumber,i.column);return new _P(n.lineNumber,n.column,0)}static moveRight(e,t,i,n,o){let r,l;if(i.hasSelection()&&!n)r=i.selection.endLineNumber,l=i.selection.endColumn;else{const a=i.position.delta(void 0,o-1),d=t.normalizePosition(ts.clipPositionColumn(a,t),1),c=ts.right(e,t,d);r=c.lineNumber,l=c.column}return i.move(n,r,l,0)}static vertical(e,t,i,n,o,r,l,a){const d=Zr.visibleColumnFromColumn(t.getLineContent(i),n,e.tabSize)+o,c=t.getLineCount(),h=i===1&&n===1,u=i===c&&n===t.getLineMaxColumn(i),m=r<i?h:u;if(i=r,i<1?(i=1,l?n=t.getLineMinColumn(i):n=Math.min(t.getLineMaxColumn(i),n)):i>c?(i=c,l?n=t.getLineMaxColumn(i):n=Math.min(t.getLineMaxColumn(i),n)):n=e.columnFromVisibleColumn(t,i,d),m?o=0:o=d-Zr.visibleColumnFromColumn(t.getLineContent(i),n,e.tabSize),a!==void 0){const p=new ge(i,n),g=t.normalizePosition(p,a);o=o+(n-g.column),i=g.lineNumber,n=g.column}return new _P(i,n,o)}static down(e,t,i,n,o,r,l){return this.vertical(e,t,i,n,o,i+r,l,4)}static moveDown(e,t,i,n,o){let r,l;i.hasSelection()&&!n?(r=i.selection.endLineNumber,l=i.selection.endColumn):(r=i.position.lineNumber,l=i.position.column);let a=0,d;do if(d=ts.down(e,t,r+a,l,i.leftoverVisibleColumns,o,!0),t.normalizePosition(new ge(d.lineNumber,d.column),2).lineNumber>r)break;while(a++<10&&r+a<t.getLineCount());return i.move(n,d.lineNumber,d.column,d.leftoverVisibleColumns)}static translateDown(e,t,i){const n=i.selection,o=ts.down(e,t,n.selectionStartLineNumber,n.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),r=ts.down(e,t,n.positionLineNumber,n.positionColumn,i.leftoverVisibleColumns,1,!1);return new nl(new z(o.lineNumber,o.column,o.lineNumber,o.column),0,o.leftoverVisibleColumns,new ge(r.lineNumber,r.column),r.leftoverVisibleColumns)}static up(e,t,i,n,o,r,l){return this.vertical(e,t,i,n,o,i-r,l,3)}static moveUp(e,t,i,n,o){let r,l;i.hasSelection()&&!n?(r=i.selection.startLineNumber,l=i.selection.startColumn):(r=i.position.lineNumber,l=i.position.column);const a=ts.up(e,t,r,l,i.leftoverVisibleColumns,o,!0);return i.move(n,a.lineNumber,a.column,a.leftoverVisibleColumns)}static translateUp(e,t,i){const n=i.selection,o=ts.up(e,t,n.selectionStartLineNumber,n.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),r=ts.up(e,t,n.positionLineNumber,n.positionColumn,i.leftoverVisibleColumns,1,!1);return new nl(new z(o.lineNumber,o.column,o.lineNumber,o.column),0,o.leftoverVisibleColumns,new ge(r.lineNumber,r.column),r.leftoverVisibleColumns)}static _isBlankLine(e,t){return e.getLineFirstNonWhitespaceColumn(t)===0}static moveToPrevBlankLine(e,t,i,n){let o=i.position.lineNumber;for(;o>1&&this._isBlankLine(t,o);)o--;for(;o>1&&!this._isBlankLine(t,o);)o--;return i.move(n,o,t.getLineMinColumn(o),0)}static moveToNextBlankLine(e,t,i,n){const o=t.getLineCount();let r=i.position.lineNumber;for(;r<o&&this._isBlankLine(t,r);)r++;for(;r<o&&!this._isBlankLine(t,r);)r++;return i.move(n,r,t.getLineMinColumn(r),0)}static moveToBeginningOfLine(e,t,i,n){const o=i.position.lineNumber,r=t.getLineMinColumn(o),l=t.getLineFirstNonWhitespaceColumn(o)||r;let a;return i.position.column===l?a=r:a=l,i.move(n,o,a,0)}static moveToEndOfLine(e,t,i,n,o){const r=i.position.lineNumber,l=t.getLineMaxColumn(r);return i.move(n,r,l,o?1073741824-l:0)}static moveToBeginningOfBuffer(e,t,i,n){return i.move(n,1,1,0)}static moveToEndOfBuffer(e,t,i,n){const o=t.getLineCount(),r=t.getLineMaxColumn(o);return i.move(n,o,r,0)}}class TN{static deleteRight(e,t,i,n){const o=[];let r=e!==3;for(let l=0,a=n.length;l<a;l++){const d=n[l];let c=d;if(c.isEmpty()){const h=d.getPosition(),u=ts.right(t,i,h);c=new z(u.lineNumber,u.column,h.lineNumber,h.column)}if(c.isEmpty()){o[l]=null;continue}c.startLineNumber!==c.endLineNumber&&(r=!0),o[l]=new Wl(c,"")}return[r,o]}static isAutoClosingPairDelete(e,t,i,n,o,r,l){if(t==="never"&&i==="never"||e==="never")return!1;for(let a=0,d=r.length;a<d;a++){const c=r[a],h=c.getPosition();if(!c.isEmpty())return!1;const u=o.getLineContent(h.lineNumber);if(h.column<2||h.column>=u.length+1)return!1;const m=u.charAt(h.column-2),p=n.get(m);if(!p)return!1;if(YF(m)){if(i==="never")return!1}else if(t==="never")return!1;const g=u.charAt(h.column-1);let f=!1;for(const b of p)b.open===m&&b.close===g&&(f=!0);if(!f)return!1;if(e==="auto"){let b=!1;for(let U=0,S=l.length;U<S;U++){const Z=l[U];if(h.lineNumber===Z.startLineNumber&&h.column===Z.startColumn){b=!0;break}}if(!b)return!1}}return!0}static _runAutoClosingPairDelete(e,t,i){const n=[];for(let o=0,r=i.length;o<r;o++){const l=i[o].getPosition(),a=new z(l.lineNumber,l.column-1,l.lineNumber,l.column+1);n[o]=new Wl(a,"")}return[!0,n]}static deleteLeft(e,t,i,n,o){if(this.isAutoClosingPairDelete(t.autoClosingDelete,t.autoClosingBrackets,t.autoClosingQuotes,t.autoClosingPairs.autoClosingPairsOpenByEnd,i,n,o))return this._runAutoClosingPairDelete(t,i,n);const r=[];let l=e!==2;for(let a=0,d=n.length;a<d;a++){const c=TN.getDeleteRange(n[a],i,t);if(c.isEmpty()){r[a]=null;continue}c.startLineNumber!==c.endLineNumber&&(l=!0),r[a]=new Wl(c,"")}return[l,r]}static getDeleteRange(e,t,i){if(!e.isEmpty())return e;const n=e.getPosition();if(i.useTabStops&&n.column>1){const o=t.getLineContent(n.lineNumber),r=Ua(o),l=r===-1?o.length+1:r+1;if(n.column<=l){const a=i.visibleColumnFromColumn(t,n),d=Zr.prevIndentTabStop(a,i.indentSize),c=i.columnFromVisibleColumn(t,n.lineNumber,d);return new z(n.lineNumber,c,n.lineNumber,n.column)}}return z.fromPositions(TN.getPositionAfterDeleteLeft(n,t),n)}static getPositionAfterDeleteLeft(e,t){if(e.column>1){const i=DPe(e.column-1,t.getLineContent(e.lineNumber));return e.with(void 0,i+1)}else if(e.lineNumber>1){const i=e.lineNumber-1;return new ge(i,t.getLineMaxColumn(i))}else return e}static cut(e,t,i){const n=[];let o=null;i.sort((r,l)=>ge.compare(r.getStartPosition(),l.getEndPosition()));for(let r=0,l=i.length;r<l;r++){const a=i[r];if(a.isEmpty())if(e.emptySelectionClipboard){const d=a.getPosition();let c,h,u,m;d.lineNumber<t.getLineCount()?(c=d.lineNumber,h=1,u=d.lineNumber+1,m=1):d.lineNumber>1&&(o==null?void 0:o.endLineNumber)!==d.lineNumber?(c=d.lineNumber-1,h=t.getLineMaxColumn(d.lineNumber-1),u=d.lineNumber,m=t.getLineMaxColumn(d.lineNumber)):(c=d.lineNumber,h=1,u=d.lineNumber,m=t.getLineMaxColumn(d.lineNumber));const p=new z(c,h,u,m);o=p,p.isEmpty()?n[r]=null:n[r]=new Wl(p,"")}else n[r]=null;else n[r]=new Wl(a,"")}return new Qd(0,n,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}class Pn{static _createWord(e,t,i,n,o){return{start:n,end:o,wordType:t,nextCharClass:i}}static _createIntlWord(e,t){return{start:e.index,end:e.index+e.segment.length,wordType:1,nextCharClass:t}}static _findPreviousWordOnLine(e,t,i){const n=t.getLineContent(i.lineNumber);return this._doFindPreviousWordOnLine(n,e,i)}static _doFindPreviousWordOnLine(e,t,i){let n=0;const o=t.findPrevIntlWordBeforeOrAtOffset(e,i.column-2);for(let r=i.column-2;r>=0;r--){const l=e.charCodeAt(r),a=t.get(l);if(o&&r===o.index)return this._createIntlWord(o,a);if(a===0){if(n===2)return this._createWord(e,n,a,r+1,this._findEndOfWord(e,t,n,r+1));n=1}else if(a===2){if(n===1)return this._createWord(e,n,a,r+1,this._findEndOfWord(e,t,n,r+1));n=2}else if(a===1&&n!==0)return this._createWord(e,n,a,r+1,this._findEndOfWord(e,t,n,r+1))}return n!==0?this._createWord(e,n,1,0,this._findEndOfWord(e,t,n,0)):null}static _findEndOfWord(e,t,i,n){const o=t.findNextIntlWordAtOrAfterOffset(e,n),r=e.length;for(let l=n;l<r;l++){const a=e.charCodeAt(l),d=t.get(a);if(o&&l===o.index+o.segment.length||d===1||i===1&&d===2||i===2&&d===0)return l}return r}static _findNextWordOnLine(e,t,i){const n=t.getLineContent(i.lineNumber);return this._doFindNextWordOnLine(n,e,i)}static _doFindNextWordOnLine(e,t,i){let n=0;const o=e.length,r=t.findNextIntlWordAtOrAfterOffset(e,i.column-1);for(let l=i.column-1;l<o;l++){const a=e.charCodeAt(l),d=t.get(a);if(r&&l===r.index)return this._createIntlWord(r,d);if(d===0){if(n===2)return this._createWord(e,n,d,this._findStartOfWord(e,t,n,l-1),l);n=1}else if(d===2){if(n===1)return this._createWord(e,n,d,this._findStartOfWord(e,t,n,l-1),l);n=2}else if(d===1&&n!==0)return this._createWord(e,n,d,this._findStartOfWord(e,t,n,l-1),l)}return n!==0?this._createWord(e,n,1,this._findStartOfWord(e,t,n,o-1),o):null}static _findStartOfWord(e,t,i,n){const o=t.findPrevIntlWordBeforeOrAtOffset(e,n);for(let r=n;r>=0;r--){const l=e.charCodeAt(r),a=t.get(l);if(o&&r===o.index)return r;if(a===1||i===1&&a===2||i===2&&a===0)return r+1}return 0}static moveWordLeft(e,t,i,n,o){let r=i.lineNumber,l=i.column;l===1&&r>1&&(r=r-1,l=t.getLineMaxColumn(r));let a=Pn._findPreviousWordOnLine(e,t,new ge(r,l));if(n===0)return new ge(r,a?a.start+1:1);if(n===1)return!o&&a&&a.wordType===2&&a.end-a.start===1&&a.nextCharClass===0&&(a=Pn._findPreviousWordOnLine(e,t,new ge(r,a.start+1))),new ge(r,a?a.start+1:1);if(n===3){for(;a&&a.wordType===2;)a=Pn._findPreviousWordOnLine(e,t,new ge(r,a.start+1));return new ge(r,a?a.start+1:1)}return a&&l<=a.end+1&&(a=Pn._findPreviousWordOnLine(e,t,new ge(r,a.start+1))),new ge(r,a?a.end+1:1)}static _moveWordPartLeft(e,t){const i=t.lineNumber,n=e.getLineMaxColumn(i);if(t.column===1)return i>1?new ge(i-1,e.getLineMaxColumn(i-1)):t;const o=e.getLineContent(i);for(let r=t.column-1;r>1;r--){const l=o.charCodeAt(r-2),a=o.charCodeAt(r-1);if(l===95&&a!==95)return new ge(i,r);if(l===45&&a!==45)return new ge(i,r);if((_U(l)||Xx(l))&&ug(a))return new ge(i,r);if(ug(l)&&ug(a)&&r+1<n){const d=o.charCodeAt(r);if(_U(d)||Xx(d))return new ge(i,r)}}return new ge(i,1)}static moveWordRight(e,t,i,n){let o=i.lineNumber,r=i.column,l=!1;r===t.getLineMaxColumn(o)&&o<t.getLineCount()&&(l=!0,o=o+1,r=1);let a=Pn._findNextWordOnLine(e,t,new ge(o,r));if(n===2)a&&a.wordType===2&&a.end-a.start===1&&a.nextCharClass===0&&(a=Pn._findNextWordOnLine(e,t,new ge(o,a.end+1))),a?r=a.end+1:r=t.getLineMaxColumn(o);else if(n===3){for(l&&(r=0);a&&(a.wordType===2||a.start+1<=r);)a=Pn._findNextWordOnLine(e,t,new ge(o,a.end+1));a?r=a.start+1:r=t.getLineMaxColumn(o)}else a&&!l&&r>=a.start+1&&(a=Pn._findNextWordOnLine(e,t,new ge(o,a.end+1))),a?r=a.start+1:r=t.getLineMaxColumn(o);return new ge(o,r)}static _moveWordPartRight(e,t){const i=t.lineNumber,n=e.getLineMaxColumn(i);if(t.column===n)return i<e.getLineCount()?new ge(i+1,1):t;const o=e.getLineContent(i);for(let r=t.column+1;r<n;r++){const l=o.charCodeAt(r-2),a=o.charCodeAt(r-1);if(l!==95&&a===95)return new ge(i,r);if(l!==45&&a===45)return new ge(i,r);if((_U(l)||Xx(l))&&ug(a))return new ge(i,r);if(ug(l)&&ug(a)&&r+1<n){const d=o.charCodeAt(r);if(_U(d)||Xx(d))return new ge(i,r)}}return new ge(i,n)}static _deleteWordLeftWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=t.column-2,o=ip(i,n);return o+1<n?new z(t.lineNumber,o+2,t.lineNumber,t.column):null}static deleteWordLeft(e,t){const i=e.wordSeparators,n=e.model,o=e.selection,r=e.whitespaceHeuristics;if(!o.isEmpty())return o;if(TN.isAutoClosingPairDelete(e.autoClosingDelete,e.autoClosingBrackets,e.autoClosingQuotes,e.autoClosingPairs.autoClosingPairsOpenByEnd,e.model,[e.selection],e.autoClosedCharacters)){const h=e.selection.getPosition();return new z(h.lineNumber,h.column-1,h.lineNumber,h.column+1)}const l=new ge(o.positionLineNumber,o.positionColumn);let a=l.lineNumber,d=l.column;if(a===1&&d===1)return null;if(r){const h=this._deleteWordLeftWhitespace(n,l);if(h)return h}let c=Pn._findPreviousWordOnLine(i,n,l);return t===0?c?d=c.start+1:d>1?d=1:(a--,d=n.getLineMaxColumn(a)):(c&&d<=c.end+1&&(c=Pn._findPreviousWordOnLine(i,n,new ge(a,c.start+1))),c?d=c.end+1:d>1?d=1:(a--,d=n.getLineMaxColumn(a))),new z(a,d,l.lineNumber,l.column)}static deleteInsideWord(e,t,i){if(!i.isEmpty())return i;const n=new ge(i.positionLineNumber,i.positionColumn),o=this._deleteInsideWordWhitespace(t,n);return o||this._deleteInsideWordDetermineDeleteRange(e,t,n)}static _charAtIsWhitespace(e,t){const i=e.charCodeAt(t);return i===32||i===9}static _deleteInsideWordWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=i.length;if(n===0)return null;let o=Math.max(t.column-2,0);if(!this._charAtIsWhitespace(i,o))return null;let r=Math.min(t.column-1,n-1);if(!this._charAtIsWhitespace(i,r))return null;for(;o>0&&this._charAtIsWhitespace(i,o-1);)o--;for(;r+1<n&&this._charAtIsWhitespace(i,r+1);)r++;return new z(t.lineNumber,o+1,t.lineNumber,r+2)}static _deleteInsideWordDetermineDeleteRange(e,t,i){const n=t.getLineContent(i.lineNumber),o=n.length;if(o===0)return i.lineNumber>1?new z(i.lineNumber-1,t.getLineMaxColumn(i.lineNumber-1),i.lineNumber,1):i.lineNumber<t.getLineCount()?new z(i.lineNumber,1,i.lineNumber+1,1):new z(i.lineNumber,1,i.lineNumber,1);const r=h=>h.start+1<=i.column&&i.column<=h.end+1,l=(h,u)=>(h=Math.min(h,i.column),u=Math.max(u,i.column),new z(i.lineNumber,h,i.lineNumber,u)),a=h=>{let u=h.start+1,m=h.end+1,p=!1;for(;m-1<o&&this._charAtIsWhitespace(n,m-1);)p=!0,m++;if(!p)for(;u>1&&this._charAtIsWhitespace(n,u-2);)u--;return l(u,m)},d=Pn._findPreviousWordOnLine(e,t,i);if(d&&r(d))return a(d);const c=Pn._findNextWordOnLine(e,t,i);return c&&r(c)?a(c):d&&c?l(d.end+1,c.start+1):d?l(d.start+1,d.end+1):c?l(c.start+1,c.end+1):l(1,o+1)}static _deleteWordPartLeft(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),n=Pn._moveWordPartLeft(e,i);return new z(i.lineNumber,i.column,n.lineNumber,n.column)}static _findFirstNonWhitespaceChar(e,t){const i=e.length;for(let n=t;n<i;n++){const o=e.charAt(n);if(o!==" "&&o!==" ")return n}return i}static _deleteWordRightWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=t.column-1,o=this._findFirstNonWhitespaceChar(i,n);return n+1<o?new z(t.lineNumber,t.column,t.lineNumber,o+1):null}static deleteWordRight(e,t){const i=e.wordSeparators,n=e.model,o=e.selection,r=e.whitespaceHeuristics;if(!o.isEmpty())return o;const l=new ge(o.positionLineNumber,o.positionColumn);let a=l.lineNumber,d=l.column;const c=n.getLineCount(),h=n.getLineMaxColumn(a);if(a===c&&d===h)return null;if(r){const m=this._deleteWordRightWhitespace(n,l);if(m)return m}let u=Pn._findNextWordOnLine(i,n,l);return t===2?u?d=u.end+1:d<h||a===c?d=h:(a++,u=Pn._findNextWordOnLine(i,n,new ge(a,1)),u?d=u.start+1:d=n.getLineMaxColumn(a)):(u&&d>=u.start+1&&(u=Pn._findNextWordOnLine(i,n,new ge(a,u.end+1))),u?d=u.start+1:d<h||a===c?d=h:(a++,u=Pn._findNextWordOnLine(i,n,new ge(a,1)),u?d=u.start+1:d=n.getLineMaxColumn(a))),new z(a,d,l.lineNumber,l.column)}static _deleteWordPartRight(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),n=Pn._moveWordPartRight(e,i);return new z(i.lineNumber,i.column,n.lineNumber,n.column)}static _createWordAtPosition(e,t,i){const n=new z(t,i.start+1,t,i.end+1);return{word:e.getValueInRange(n),startColumn:n.startColumn,endColumn:n.endColumn}}static getWordAtPosition(e,t,i,n){const o=Ph(t,i),r=Pn._findPreviousWordOnLine(o,e,n);if(r&&r.wordType===1&&r.start<=n.column-1&&n.column-1<=r.end)return Pn._createWordAtPosition(e,n.lineNumber,r);const l=Pn._findNextWordOnLine(o,e,n);return l&&l.wordType===1&&l.start<=n.column-1&&n.column-1<=l.end?Pn._createWordAtPosition(e,n.lineNumber,l):null}static word(e,t,i,n,o){const r=Ph(e.wordSeparators,e.wordSegmenterLocales),l=Pn._findPreviousWordOnLine(r,t,o),a=Pn._findNextWordOnLine(r,t,o);if(!n){let m,p;return l&&l.wordType===1&&l.start<=o.column-1&&o.column-1<=l.end?(m=l.start+1,p=l.end+1):a&&a.wordType===1&&a.start<=o.column-1&&o.column-1<=a.end?(m=a.start+1,p=a.end+1):(l?m=l.end+1:m=1,a?p=a.start+1:p=t.getLineMaxColumn(o.lineNumber)),new nl(new z(o.lineNumber,m,o.lineNumber,p),1,0,new ge(o.lineNumber,p),0)}let d,c;l&&l.wordType===1&&l.start<o.column-1&&o.column-1<l.end?(d=l.start+1,c=l.end+1):a&&a.wordType===1&&a.start<o.column-1&&o.column-1<a.end?(d=a.start+1,c=a.end+1):(d=o.column,c=o.column);const h=o.lineNumber;let u;if(i.selectionStart.containsPosition(o))u=i.selectionStart.endColumn;else if(o.isBeforeOrEqual(i.selectionStart.getStartPosition())){u=d;const m=new ge(h,u);i.selectionStart.containsPosition(m)&&(u=i.selectionStart.endColumn)}else{u=c;const m=new ge(h,u);i.selectionStart.containsPosition(m)&&(u=i.selectionStart.startColumn)}return i.move(!0,h,u,0)}}class M9 extends Pn{static deleteWordPartLeft(e){const t=ZI([Pn.deleteWordLeft(e,0),Pn.deleteWordLeft(e,2),Pn._deleteWordPartLeft(e.model,e.selection)]);return t.sort(z.compareRangesUsingEnds),t[2]}static deleteWordPartRight(e){const t=ZI([Pn.deleteWordRight(e,0),Pn.deleteWordRight(e,2),Pn._deleteWordPartRight(e.model,e.selection)]);return t.sort(z.compareRangesUsingStarts),t[0]}static moveWordPartLeft(e,t,i,n){const o=ZI([Pn.moveWordLeft(e,t,i,0,n),Pn.moveWordLeft(e,t,i,2,n),Pn._moveWordPartLeft(t,i)]);return o.sort(ge.compare),o[2]}static moveWordPartRight(e,t,i){const n=ZI([Pn.moveWordRight(e,t,i,0),Pn.moveWordRight(e,t,i,2),Pn._moveWordPartRight(t,i)]);return n.sort(ge.compare),n[0]}}function ZI(s){return s.filter(e=>!!e)}class el{static addCursorDown(e,t,i){const n=[];let o=0;for(let r=0,l=t.length;r<l;r++){const a=t[r];n[o++]=new Bn(a.modelState,a.viewState),i?n[o++]=Bn.fromModelState(ts.translateDown(e.cursorConfig,e.model,a.modelState)):n[o++]=Bn.fromViewState(ts.translateDown(e.cursorConfig,e,a.viewState))}return n}static addCursorUp(e,t,i){const n=[];let o=0;for(let r=0,l=t.length;r<l;r++){const a=t[r];n[o++]=new Bn(a.modelState,a.viewState),i?n[o++]=Bn.fromModelState(ts.translateUp(e.cursorConfig,e.model,a.modelState)):n[o++]=Bn.fromViewState(ts.translateUp(e.cursorConfig,e,a.viewState))}return n}static moveToBeginningOfLine(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o];n[o]=this._moveToLineStart(e,l,i)}return n}static _moveToLineStart(e,t,i){const n=t.viewState.position.column,o=t.modelState.position.column,r=n===o,l=t.viewState.position.lineNumber,a=e.getLineFirstNonWhitespaceColumn(l);return!r&&!(n===a)?this._moveToLineStartByView(e,t,i):this._moveToLineStartByModel(e,t,i)}static _moveToLineStartByView(e,t,i){return Bn.fromViewState(ts.moveToBeginningOfLine(e.cursorConfig,e,t.viewState,i))}static _moveToLineStartByModel(e,t,i){return Bn.fromModelState(ts.moveToBeginningOfLine(e.cursorConfig,e.model,t.modelState,i))}static moveToEndOfLine(e,t,i,n){const o=[];for(let r=0,l=t.length;r<l;r++){const a=t[r];o[r]=this._moveToLineEnd(e,a,i,n)}return o}static _moveToLineEnd(e,t,i,n){const o=t.viewState.position,r=e.getLineMaxColumn(o.lineNumber),l=o.column===r,a=t.modelState.position,d=e.model.getLineMaxColumn(a.lineNumber),c=r-o.column===d-a.column;return l||c?this._moveToLineEndByModel(e,t,i,n):this._moveToLineEndByView(e,t,i,n)}static _moveToLineEndByView(e,t,i,n){return Bn.fromViewState(ts.moveToEndOfLine(e.cursorConfig,e,t.viewState,i,n))}static _moveToLineEndByModel(e,t,i,n){return Bn.fromModelState(ts.moveToEndOfLine(e.cursorConfig,e.model,t.modelState,i,n))}static expandLineSelection(e,t){const i=[];for(let n=0,o=t.length;n<o;n++){const r=t[n],l=r.modelState.selection.startLineNumber,a=e.model.getLineCount();let d=r.modelState.selection.endLineNumber,c;d===a?c=e.model.getLineMaxColumn(a):(d++,c=1),i[n]=Bn.fromModelState(new nl(new z(l,1,l,1),0,0,new ge(d,c),0))}return i}static moveToBeginningOfBuffer(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o];n[o]=Bn.fromModelState(ts.moveToBeginningOfBuffer(e.cursorConfig,e.model,l.modelState,i))}return n}static moveToEndOfBuffer(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o];n[o]=Bn.fromModelState(ts.moveToEndOfBuffer(e.cursorConfig,e.model,l.modelState,i))}return n}static selectAll(e,t){const i=e.model.getLineCount(),n=e.model.getLineMaxColumn(i);return Bn.fromModelState(new nl(new z(1,1,1,1),0,0,new ge(i,n),0))}static line(e,t,i,n,o){const r=e.model.validatePosition(n),l=o?e.coordinatesConverter.validateViewPosition(new ge(o.lineNumber,o.column),r):e.coordinatesConverter.convertModelPositionToViewPosition(r);if(!i){const d=e.model.getLineCount();let c=r.lineNumber+1,h=1;return c>d&&(c=d,h=e.model.getLineMaxColumn(c)),Bn.fromModelState(new nl(new z(r.lineNumber,1,c,h),2,0,new ge(c,h),0))}const a=t.modelState.selectionStart.getStartPosition().lineNumber;if(r.lineNumber<a)return Bn.fromViewState(t.viewState.move(!0,l.lineNumber,1,0));if(r.lineNumber>a){const d=e.getLineCount();let c=l.lineNumber+1,h=1;return c>d&&(c=d,h=e.getLineMaxColumn(c)),Bn.fromViewState(t.viewState.move(!0,c,h,0))}else{const d=t.modelState.selectionStart.getEndPosition();return Bn.fromModelState(t.modelState.move(!0,d.lineNumber,d.column,0))}}static word(e,t,i,n){const o=e.model.validatePosition(n);return Bn.fromModelState(Pn.word(e.cursorConfig,e.model,t.modelState,i,o))}static cancelSelection(e,t){if(!t.modelState.hasSelection())return new Bn(t.modelState,t.viewState);const i=t.viewState.position.lineNumber,n=t.viewState.position.column;return Bn.fromViewState(new nl(new z(i,n,i,n),0,0,new ge(i,n),0))}static moveTo(e,t,i,n,o){if(i){if(t.modelState.selectionStartKind===1)return this.word(e,t,i,n);if(t.modelState.selectionStartKind===2)return this.line(e,t,i,n,o)}const r=e.model.validatePosition(n),l=o?e.coordinatesConverter.validateViewPosition(new ge(o.lineNumber,o.column),r):e.coordinatesConverter.convertModelPositionToViewPosition(r);return Bn.fromViewState(t.viewState.move(i,l.lineNumber,l.column,0))}static simpleMove(e,t,i,n,o,r){switch(i){case 0:return r===4?this._moveHalfLineLeft(e,t,n):this._moveLeft(e,t,n,o);case 1:return r===4?this._moveHalfLineRight(e,t,n):this._moveRight(e,t,n,o);case 2:return r===2?this._moveUpByViewLines(e,t,n,o):this._moveUpByModelLines(e,t,n,o);case 3:return r===2?this._moveDownByViewLines(e,t,n,o):this._moveDownByModelLines(e,t,n,o);case 4:return r===2?t.map(l=>Bn.fromViewState(ts.moveToPrevBlankLine(e.cursorConfig,e,l.viewState,n))):t.map(l=>Bn.fromModelState(ts.moveToPrevBlankLine(e.cursorConfig,e.model,l.modelState,n)));case 5:return r===2?t.map(l=>Bn.fromViewState(ts.moveToNextBlankLine(e.cursorConfig,e,l.viewState,n))):t.map(l=>Bn.fromModelState(ts.moveToNextBlankLine(e.cursorConfig,e.model,l.modelState,n)));case 6:return this._moveToViewMinColumn(e,t,n);case 7:return this._moveToViewFirstNonWhitespaceColumn(e,t,n);case 8:return this._moveToViewCenterColumn(e,t,n);case 9:return this._moveToViewMaxColumn(e,t,n);case 10:return this._moveToViewLastNonWhitespaceColumn(e,t,n);default:return null}}static viewportMove(e,t,i,n,o){const r=e.getCompletelyVisibleViewRange(),l=e.coordinatesConverter.convertViewRangeToModelRange(r);switch(i){case 11:{const a=this._firstLineNumberInRange(e.model,l,o),d=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,t[0],n,a,d)]}case 13:{const a=this._lastLineNumberInRange(e.model,l,o),d=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,t[0],n,a,d)]}case 12:{const a=Math.round((l.startLineNumber+l.endLineNumber)/2),d=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,t[0],n,a,d)]}case 14:{const a=[];for(let d=0,c=t.length;d<c;d++){const h=t[d];a[d]=this.findPositionInViewportIfOutside(e,h,r,n)}return a}default:return null}}static findPositionInViewportIfOutside(e,t,i,n){const o=t.viewState.position.lineNumber;if(i.startLineNumber<=o&&o<=i.endLineNumber-1)return new Bn(t.modelState,t.viewState);{let r;o>i.endLineNumber-1?r=i.endLineNumber-1:o<i.startLineNumber?r=i.startLineNumber:r=o;const l=ts.vertical(e.cursorConfig,e,o,t.viewState.position.column,t.viewState.leftoverVisibleColumns,r,!1);return Bn.fromViewState(t.viewState.move(n,l.lineNumber,l.column,l.leftoverVisibleColumns))}}static _firstLineNumberInRange(e,t,i){let n=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(n)&&n++,Math.min(t.endLineNumber,n+i-1)}static _lastLineNumberInRange(e,t,i){let n=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(n)&&n++,Math.max(n,t.endLineNumber-i+1)}static _moveLeft(e,t,i,n){return t.map(o=>Bn.fromViewState(ts.moveLeft(e.cursorConfig,e,o.viewState,i,n)))}static _moveHalfLineLeft(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.viewState.position.lineNumber,d=Math.round(e.getLineLength(a)/2);n[o]=Bn.fromViewState(ts.moveLeft(e.cursorConfig,e,l.viewState,i,d))}return n}static _moveRight(e,t,i,n){return t.map(o=>Bn.fromViewState(ts.moveRight(e.cursorConfig,e,o.viewState,i,n)))}static _moveHalfLineRight(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.viewState.position.lineNumber,d=Math.round(e.getLineLength(a)/2);n[o]=Bn.fromViewState(ts.moveRight(e.cursorConfig,e,l.viewState,i,d))}return n}static _moveDownByViewLines(e,t,i,n){const o=[];for(let r=0,l=t.length;r<l;r++){const a=t[r];o[r]=Bn.fromViewState(ts.moveDown(e.cursorConfig,e,a.viewState,i,n))}return o}static _moveDownByModelLines(e,t,i,n){const o=[];for(let r=0,l=t.length;r<l;r++){const a=t[r];o[r]=Bn.fromModelState(ts.moveDown(e.cursorConfig,e.model,a.modelState,i,n))}return o}static _moveUpByViewLines(e,t,i,n){const o=[];for(let r=0,l=t.length;r<l;r++){const a=t[r];o[r]=Bn.fromViewState(ts.moveUp(e.cursorConfig,e,a.viewState,i,n))}return o}static _moveUpByModelLines(e,t,i,n){const o=[];for(let r=0,l=t.length;r<l;r++){const a=t[r];o[r]=Bn.fromModelState(ts.moveUp(e.cursorConfig,e.model,a.modelState,i,n))}return o}static _moveToViewPosition(e,t,i,n,o){return Bn.fromViewState(t.viewState.move(i,n,o,0))}static _moveToModelPosition(e,t,i,n,o){return Bn.fromModelState(t.modelState.move(i,n,o,0))}static _moveToViewMinColumn(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.viewState.position.lineNumber,d=e.getLineMinColumn(a);n[o]=this._moveToViewPosition(e,l,i,a,d)}return n}static _moveToViewFirstNonWhitespaceColumn(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.viewState.position.lineNumber,d=e.getLineFirstNonWhitespaceColumn(a);n[o]=this._moveToViewPosition(e,l,i,a,d)}return n}static _moveToViewCenterColumn(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.viewState.position.lineNumber,d=Math.round((e.getLineMaxColumn(a)+e.getLineMinColumn(a))/2);n[o]=this._moveToViewPosition(e,l,i,a,d)}return n}static _moveToViewMaxColumn(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.viewState.position.lineNumber,d=e.getLineMaxColumn(a);n[o]=this._moveToViewPosition(e,l,i,a,d)}return n}static _moveToViewLastNonWhitespaceColumn(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.viewState.position.lineNumber,d=e.getLineLastNonWhitespaceColumn(a);n[o]=this._moveToViewPosition(e,l,i,a,d)}return n}}var y5;(function(s){const e=function(i){if(!_r(i))return!1;const n=i;return!(!Vd(n.to)||!fa(n.select)&&!iZe(n.select)||!fa(n.by)&&!Vd(n.by)||!fa(n.value)&&!wF(n.value))};s.metadata={description:"Move cursor to a logical position in the view",args:[{name:"Cursor move argument object",description:`Property-value pairs that can be passed through this argument:
- * 'to': A mandatory logical position value providing where to move the cursor.
- \`\`\`
- 'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',
- 'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'
- 'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'
- 'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'
- \`\`\`
- * 'by': Unit to move. Default is computed based on 'to' value.
- \`\`\`
- 'line', 'wrappedLine', 'character', 'halfLine'
- \`\`\`
- * 'value': Number of units to move. Default is '1'.
- * 'select': If 'true' makes the selection. Default is 'false'.
- `,constraint:e,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["left","right","up","down","prevBlankLine","nextBlankLine","wrappedLineStart","wrappedLineEnd","wrappedLineColumnCenter","wrappedLineFirstNonWhitespaceCharacter","wrappedLineLastNonWhitespaceCharacter","viewPortTop","viewPortCenter","viewPortBottom","viewPortIfOutside"]},by:{type:"string",enum:["line","wrappedLine","character","halfLine"]},value:{type:"number",default:1},select:{type:"boolean",default:!1}}}}]},s.RawDirection={Left:"left",Right:"right",Up:"up",Down:"down",PrevBlankLine:"prevBlankLine",NextBlankLine:"nextBlankLine",WrappedLineStart:"wrappedLineStart",WrappedLineFirstNonWhitespaceCharacter:"wrappedLineFirstNonWhitespaceCharacter",WrappedLineColumnCenter:"wrappedLineColumnCenter",WrappedLineEnd:"wrappedLineEnd",WrappedLineLastNonWhitespaceCharacter:"wrappedLineLastNonWhitespaceCharacter",ViewPortTop:"viewPortTop",ViewPortCenter:"viewPortCenter",ViewPortBottom:"viewPortBottom",ViewPortIfOutside:"viewPortIfOutside"},s.RawUnit={Line:"line",WrappedLine:"wrappedLine",Character:"character",HalfLine:"halfLine"};function t(i){if(!i.to)return null;let n;switch(i.to){case s.RawDirection.Left:n=0;break;case s.RawDirection.Right:n=1;break;case s.RawDirection.Up:n=2;break;case s.RawDirection.Down:n=3;break;case s.RawDirection.PrevBlankLine:n=4;break;case s.RawDirection.NextBlankLine:n=5;break;case s.RawDirection.WrappedLineStart:n=6;break;case s.RawDirection.WrappedLineFirstNonWhitespaceCharacter:n=7;break;case s.RawDirection.WrappedLineColumnCenter:n=8;break;case s.RawDirection.WrappedLineEnd:n=9;break;case s.RawDirection.WrappedLineLastNonWhitespaceCharacter:n=10;break;case s.RawDirection.ViewPortTop:n=11;break;case s.RawDirection.ViewPortBottom:n=13;break;case s.RawDirection.ViewPortCenter:n=12;break;case s.RawDirection.ViewPortIfOutside:n=14;break;default:return null}let o=0;switch(i.by){case s.RawUnit.Line:o=1;break;case s.RawUnit.WrappedLine:o=2;break;case s.RawUnit.Character:o=3;break;case s.RawUnit.HalfLine:o=4;break}return{direction:n,unit:o,select:!!i.select,value:i.value||1}}s.parse=t})(y5||(y5={}));class Nre{constructor(e,t,i){this._indentRulesSupport=t,this._indentationLineProcessor=new tWe(e,i)}shouldIncrease(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldIncrease(i)}shouldDecrease(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldDecrease(i)}shouldIgnore(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldIgnore(i)}shouldIndentNextLine(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldIndentNextLine(i)}}class Rre{constructor(e,t){this.model=e,this.indentationLineProcessor=new tWe(e,t)}getProcessedTokenContextAroundRange(e){const t=this._getProcessedTokensBeforeRange(e),i=this._getProcessedTokensAfterRange(e),n=this._getProcessedPreviousLineTokens(e);return{beforeRangeProcessedTokens:t,afterRangeProcessedTokens:i,previousLineProcessedTokens:n}}_getProcessedTokensBeforeRange(e){this.model.tokenization.forceTokenization(e.startLineNumber);const t=this.model.tokenization.getLineTokens(e.startLineNumber),i=FS(t,e.startColumn-1);let n;if(Vre(this.model,e.getStartPosition())){const r=e.startColumn-1-i.firstCharOffset,l=i.firstCharOffset,a=l+r;n=t.sliceAndInflate(l,a,0)}else{const r=e.startColumn-1;n=t.sliceAndInflate(0,r,0)}return this.indentationLineProcessor.getProcessedTokens(n)}_getProcessedTokensAfterRange(e){const t=e.isEmpty()?e.getStartPosition():e.getEndPosition();this.model.tokenization.forceTokenization(t.lineNumber);const i=this.model.tokenization.getLineTokens(t.lineNumber),n=FS(i,t.column-1),o=t.column-1-n.firstCharOffset,r=n.firstCharOffset+o,l=n.firstCharOffset+n.getLineLength(),a=i.sliceAndInflate(r,l,0);return this.indentationLineProcessor.getProcessedTokens(a)}_getProcessedPreviousLineTokens(e){const t=m=>{this.model.tokenization.forceTokenization(m);const p=this.model.tokenization.getLineTokens(m),g=this.model.getLineMaxColumn(m)-1;return FS(p,g)};this.model.tokenization.forceTokenization(e.startLineNumber);const i=this.model.tokenization.getLineTokens(e.startLineNumber),n=FS(i,e.startColumn-1),o=Pr.createEmpty("",n.languageIdCodec),r=e.startLineNumber-1;if(r===0||!(n.firstCharOffset===0))return o;const d=t(r);if(!(n.languageId===d.languageId))return o;const h=d.toIViewLineTokens();return this.indentationLineProcessor.getProcessedTokens(h)}}class tWe{constructor(e,t){this.model=e,this.languageConfigurationService=t}getProcessedLine(e,t){var r,l;const i=(a,d)=>{const c=Rs(a);return d+a.substring(c.length)};(l=(r=this.model.tokenization).forceTokenization)==null||l.call(r,e);const n=this.model.tokenization.getLineTokens(e);let o=this.getProcessedTokens(n).getLineContent();return t!==void 0&&(o=i(o,t)),o}getProcessedTokens(e){const t=a=>a===2||a===3||a===1,i=e.getLanguageId(0),o=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew.getBracketRegExp({global:!0}),r=[];return e.forEach(a=>{const d=e.getStandardTokenType(a);let c=e.getTokenText(a);t(d)&&(c=c.replace(o,""));const h=e.getMetadata(a);r.push({text:c,metadata:h})}),Pr.createFromTextAndMetadata(r,e.languageIdCodec)}}function Vre(s,e){s.tokenization.forceTokenization(e.lineNumber);const t=s.tokenization.getLineTokens(e.lineNumber),i=FS(t,e.column-1),n=i.firstCharOffset===0,o=t.getLanguageId(0)===i.languageId;return!n&&!o}function z1(s,e,t,i){e.tokenization.forceTokenization(t.startLineNumber);const n=e.getLanguageIdAtPosition(t.startLineNumber,t.startColumn),o=i.getLanguageConfiguration(n);if(!o)return null;const l=new Rre(e,i).getProcessedTokenContextAroundRange(t),a=l.previousLineProcessedTokens.getLineContent(),d=l.beforeRangeProcessedTokens.getLineContent(),c=l.afterRangeProcessedTokens.getLineContent(),h=o.onEnter(s,a,d,c);if(!h)return null;const u=h.indentAction;let m=h.appendText;const p=h.removeText||0;m?u===ar.Indent&&(m=" "+m):u===ar.Indent||u===ar.IndentOutdent?m=" ":m="";let g=vSe(e,t.startLineNumber,t.startColumn);return p&&(g=g.substring(0,g.length-p)),{indentAction:u,appendText:m,removeText:p,indentation:g}}var Wat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},yat=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},LD;const zP=Object.create(null);function QA(s,e){if(e<=0)return"";zP[s]||(zP[s]=["",s]);const t=zP[s];for(let i=t.length;i<=e;i++)t[i]=t[i-1]+s;return t[e]}let Kh=LD=class{static unshiftIndent(e,t,i,n,o){const r=Zr.visibleColumnFromColumn(e,t,i);if(o){const l=QA(" ",n),d=Zr.prevIndentTabStop(r,n)/n;return QA(l,d)}else{const l=" ",d=Zr.prevRenderTabStop(r,i)/i;return QA(l,d)}}static shiftIndent(e,t,i,n,o){const r=Zr.visibleColumnFromColumn(e,t,i);if(o){const l=QA(" ",n),d=Zr.nextIndentTabStop(r,n)/n;return QA(l,d)}else{const l=" ",d=Zr.nextRenderTabStop(r,i)/i;return QA(l,d)}}constructor(e,t,i){this._languageConfigurationService=i,this._opts=t,this._selection=e,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}_addEditOperation(e,t,i){this._useLastEditRangeForCursorEndPosition?e.addTrackedEditOperation(t,i):e.addEditOperation(t,i)}getEditOperations(e,t){const i=this._selection.startLineNumber;let n=this._selection.endLineNumber;this._selection.endColumn===1&&i!==n&&(n=n-1);const{tabSize:o,indentSize:r,insertSpaces:l}=this._opts,a=i===n;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(e.getLineContent(i))&&(this._useLastEditRangeForCursorEndPosition=!0);let d=0,c=0;for(let h=i;h<=n;h++,d=c){c=0;const u=e.getLineContent(h);let m=Ua(u);if(this._opts.isUnshift&&(u.length===0||m===0)||!a&&!this._opts.isUnshift&&u.length===0)continue;if(m===-1&&(m=u.length),h>1&&Zr.visibleColumnFromColumn(u,m+1,o)%r!==0&&e.tokenization.isCheapToTokenize(h-1)){const f=z1(this._opts.autoIndent,e,new z(h-1,e.getLineMaxColumn(h-1),h-1,e.getLineMaxColumn(h-1)),this._languageConfigurationService);if(f){if(c=d,f.appendText)for(let b=0,U=f.appendText.length;b<U&&c<r&&f.appendText.charCodeAt(b)===32;b++)c++;f.removeText&&(c=Math.max(0,c-f.removeText));for(let b=0;b<c&&!(m===0||u.charCodeAt(m-1)!==32);b++)m--}}if(this._opts.isUnshift&&m===0)continue;let p;this._opts.isUnshift?p=LD.unshiftIndent(u,m+1,o,r,l):p=LD.shiftIndent(u,m+1,o,r,l),this._addEditOperation(t,new z(h,1,h,m+1),p),h===i&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn<=m+1)}}else{!this._opts.isUnshift&&this._selection.isEmpty()&&e.getLineLength(i)===0&&(this._useLastEditRangeForCursorEndPosition=!0);const d=l?QA(" ",r):" ";for(let c=i;c<=n;c++){const h=e.getLineContent(c);let u=Ua(h);if(!(this._opts.isUnshift&&(h.length===0||u===0))&&!(!a&&!this._opts.isUnshift&&h.length===0)&&(u===-1&&(u=h.length),!(this._opts.isUnshift&&u===0)))if(this._opts.isUnshift){u=Math.min(u,r);for(let m=0;m<u;m++)if(h.charCodeAt(m)===9){u=m+1;break}this._addEditOperation(t,new z(c,1,c,u+1),"")}else this._addEditOperation(t,new z(c,1,c,1),d),c===i&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn===1)}}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){if(this._useLastEditRangeForCursorEndPosition){const n=t.getInverseEditOperations()[0];return new _t(n.range.endLineNumber,n.range.endColumn,n.range.endLineNumber,n.range.endColumn)}const i=t.getTrackedSelection(this._selectionId);if(this._selectionStartColumnStaysPut){const n=this._selection.startColumn;return i.startColumn<=n?i:i.getDirection()===0?new _t(i.startLineNumber,n,i.endLineNumber,i.endColumn):new _t(i.endLineNumber,i.endColumn,i.startLineNumber,n)}return i}};Kh=LD=Wat([yat(2,bo)],Kh);class Qat{constructor(e,t,i){this._range=e,this._charBeforeSelection=t,this._charAfterSelection=i}getEditOperations(e,t){t.addTrackedEditOperation(new z(this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),t.addTrackedEditOperation(new z(this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)}computeCursorState(e,t){const i=t.getInverseEditOperations(),n=i[0].range,o=i[1].range;return new _t(n.endLineNumber,n.endColumn,o.endLineNumber,o.endColumn-this._charAfterSelection.length)}}class Mat{constructor(e,t,i){this._position=e,this._text=t,this._charAfter=i}getEditOperations(e,t){t.addTrackedEditOperation(new z(this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column),this._text+this._charAfter)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return new _t(n.endLineNumber,n.startColumn,n.endLineNumber,n.endColumn-this._charAfter.length)}}function wat(s,e,t){const i=s.tokenization.getLanguageIdAtPosition(e,0);if(e>1){let n,o=-1;for(n=e-1;n>=1;n--){if(s.tokenization.getLanguageIdAtPosition(n,0)!==i)return o;const r=s.getLineContent(n);if(t.shouldIgnore(n)||/^\s+$/.test(r)||r===""){o=n;continue}return n}}return-1}function LL(s,e,t,i=!0,n){if(s<4)return null;const o=n.getLanguageConfiguration(e.tokenization.getLanguageId()).indentRulesSupport;if(!o)return null;const r=new Nre(e,o,n);if(t<=1)return{indentation:"",action:null};for(let a=t-1;a>0&&e.getLineContent(a)==="";a--)if(a===1)return{indentation:"",action:null};const l=wat(e,t,r);if(l<0)return null;if(l<1)return{indentation:"",action:null};if(r.shouldIncrease(l)||r.shouldIndentNextLine(l)){const a=e.getLineContent(l);return{indentation:Rs(a),action:ar.Indent,line:l}}else if(r.shouldDecrease(l)){const a=e.getLineContent(l);return{indentation:Rs(a),action:null,line:l}}else{if(l===1)return{indentation:Rs(e.getLineContent(l)),action:null,line:l};const a=l-1,d=o.getIndentMetadata(e.getLineContent(a));if(!(d&3)&&d&4){let c=0;for(let h=a-1;h>0;h--)if(!r.shouldIndentNextLine(h)){c=h;break}return{indentation:Rs(e.getLineContent(c+1)),action:null,line:c+1}}if(i)return{indentation:Rs(e.getLineContent(l)),action:null,line:l};for(let c=l;c>0;c--){if(r.shouldIncrease(c))return{indentation:Rs(e.getLineContent(c)),action:ar.Indent,line:c};if(r.shouldIndentNextLine(c)){let h=0;for(let u=c-1;u>0;u--)if(!r.shouldIndentNextLine(c)){h=u;break}return{indentation:Rs(e.getLineContent(h+1)),action:null,line:h+1}}else if(r.shouldDecrease(c))return{indentation:Rs(e.getLineContent(c)),action:null,line:c}}return{indentation:Rs(e.getLineContent(1)),action:null,line:1}}}function m2(s,e,t,i,n,o){if(s<4)return null;const r=o.getLanguageConfiguration(t);if(!r)return null;const l=o.getLanguageConfiguration(t).indentRulesSupport;if(!l)return null;const a=new Nre(e,l,o),d=LL(s,e,i,void 0,o);if(d){const c=d.line;if(c!==void 0){let h=!0;for(let u=c;u<i-1;u++)if(!/^\s*$/.test(e.getLineContent(u))){h=!1;break}if(h){const u=r.onEnter(s,"",e.getLineContent(c),"");if(u){let m=Rs(e.getLineContent(c));return u.removeText&&(m=m.substring(0,m.length-u.removeText)),u.indentAction===ar.Indent||u.indentAction===ar.IndentOutdent?m=n.shiftIndent(m):u.indentAction===ar.Outdent&&(m=n.unshiftIndent(m)),a.shouldDecrease(i)&&(m=n.unshiftIndent(m)),u.appendText&&(m+=u.appendText),Rs(m)}}}return a.shouldDecrease(i)?d.action===ar.Indent?d.indentation:n.unshiftIndent(d.indentation):d.action===ar.Indent?n.shiftIndent(d.indentation):d.indentation}return null}function Tat(s,e,t,i,n){if(s<4)return null;const o=e.getLanguageIdAtPosition(t.startLineNumber,t.startColumn),r=n.getLanguageConfiguration(o).indentRulesSupport;if(!r)return null;e.tokenization.forceTokenization(t.startLineNumber);const a=new Rre(e,n).getProcessedTokenContextAroundRange(t),d=a.afterRangeProcessedTokens,c=a.beforeRangeProcessedTokens,h=Rs(c.getLineContent()),u=Bat(e,t.startLineNumber,c),m=Vre(e,t.getStartPosition()),p=e.getLineContent(t.startLineNumber),g=Rs(p),f=LL(s,u,t.startLineNumber+1,void 0,n);if(!f){const U=m?g:h;return{beforeEnter:U,afterEnter:U}}let b=m?g:f.indentation;return f.action===ar.Indent&&(b=i.shiftIndent(b)),r.shouldDecrease(d.getLineContent())&&(b=i.unshiftIndent(b)),{beforeEnter:m?g:h,afterEnter:b}}function Cat(s,e,t,i,n,o){const r=s.autoIndent;if(r<4||Vre(e,t.getStartPosition()))return null;const a=e.getLanguageIdAtPosition(t.startLineNumber,t.startColumn),d=o.getLanguageConfiguration(a).indentRulesSupport;if(!d)return null;const h=new Rre(e,o).getProcessedTokenContextAroundRange(t),u=h.beforeRangeProcessedTokens.getLineContent(),m=h.afterRangeProcessedTokens.getLineContent(),p=u+m,g=u+i+m;if(!d.shouldDecrease(p)&&d.shouldDecrease(g)){const b=LL(r,e,t.startLineNumber,!1,o);if(!b)return null;let U=b.indentation;return b.action!==ar.Indent&&(U=n.unshiftIndent(U)),U}const f=t.startLineNumber-1;if(f>0){const b=e.getLineContent(f);if(d.shouldIndentNextLine(b)&&d.shouldIncrease(g)){const U=LL(r,e,t.startLineNumber,!1,o),S=U==null?void 0:U.indentation;if(S!==void 0){const Z=e.getLineContent(t.startLineNumber),R=Rs(Z),N=n.shiftIndent(S)===R,w=/^\s*$/.test(p),Q=s.autoClosingPairs.autoClosingPairsOpenByEnd.get(i),v=Q&&Q.length>0&&w;if(N&&v)return S}}}return null}function iWe(s,e,t){const i=t.getLanguageConfiguration(s.getLanguageId()).indentRulesSupport;return!i||e<1||e>s.getLineCount()?null:i.getIndentMetadata(s.getLineContent(e))}function Bat(s,e,t){return{tokenization:{getLineTokens:n=>n===e?t:s.tokenization.getLineTokens(n),getLanguageId:()=>s.getLanguageId(),getLanguageIdAtPosition:(n,o)=>s.getLanguageIdAtPosition(n,o)},getLineContent:n=>n===e?t.getLineContent():s.getLineContent(n)}}class Lat{static getEdits(e,t,i,n,o){if(!o&&this._isAutoIndentType(e,t,i)){const r=[];for(const a of i){const d=this._findActualIndentationForSelection(e,t,a,n);if(d===null)return;r.push({selection:a,indentation:d})}const l=Hq.getAutoClosingPairClose(e,t,i,n,!1);return this._getIndentationAndAutoClosingPairEdits(e,t,r,n,l)}}static _isAutoIndentType(e,t,i){if(e.autoIndent<4)return!1;for(let n=0,o=i.length;n<o;n++)if(!t.tokenization.isCheapToTokenize(i[n].getEndPosition().lineNumber))return!1;return!0}static _findActualIndentationForSelection(e,t,i,n){const o=Cat(e,t,i,n,{shiftIndent:l=>Qre(e,l),unshiftIndent:l=>Q5(e,l)},e.languageConfigurationService);if(o===null)return null;const r=vSe(t,i.startLineNumber,i.startColumn);return o===e.normalizeIndentation(r)?null:o}static _getIndentationAndAutoClosingPairEdits(e,t,i,n,o){const r=i.map(({selection:a,indentation:d})=>{if(o!==null){const c=this._getEditFromIndentationAndSelection(e,t,d,a,n,!1);return new _at(c,a,n,o)}else{const c=this._getEditFromIndentationAndSelection(e,t,d,a,n,!0);return cZ(c.range,c.text,!1)}}),l={shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1};return new Qd(4,r,l)}static _getEditFromIndentationAndSelection(e,t,i,n,o,r=!0){const l=n.startLineNumber,a=t.getLineFirstNonWhitespaceColumn(l);let d=e.normalizeIndentation(i);if(a!==0){const h=t.getLineContent(l);d+=h.substring(a-1,n.startColumn-1)}return d+=r?o:"",{range:new z(l,1,n.endLineNumber,n.endColumn),text:d}}}class vat{static getEdits(e,t,i,n,o,r){if(nWe(t,i,n,o,r))return this._runAutoClosingOvertype(e,n,r)}static _runAutoClosingOvertype(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const a=t[o].getPosition(),d=new z(a.lineNumber,a.column,a.lineNumber,a.column+1);n[o]=new Wl(d,i)}return new Qd(4,n,{shouldPushStackElementBefore:T9(e,4),shouldPushStackElementAfter:!1})}}class kat{static getEdits(e,t,i,n,o){if(nWe(e,t,i,n,o)){const r=i.map(l=>new Wl(new z(l.positionLineNumber,l.positionColumn,l.positionLineNumber,l.positionColumn+1),"",!1));return new Qd(4,r,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}}}class Hq{static getEdits(e,t,i,n,o,r){if(!r){const l=this.getAutoClosingPairClose(e,t,i,n,o);if(l!==null)return this._runAutoClosingOpenCharType(i,n,o,l)}}static _runAutoClosingOpenCharType(e,t,i,n){const o=[];for(let r=0,l=e.length;r<l;r++){const a=e[r];o[r]=new Yat(a,t,!i,n)}return new Qd(4,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}static getAutoClosingPairClose(e,t,i,n,o){for(const p of i)if(!p.isEmpty())return null;const r=i.map(p=>{const g=p.getPosition();return o?{lineNumber:g.lineNumber,beforeColumn:g.column-n.length,afterColumn:g.column}:{lineNumber:g.lineNumber,beforeColumn:g.column,afterColumn:g.column}}),l=this._findAutoClosingPairOpen(e,t,r.map(p=>new ge(p.lineNumber,p.beforeColumn)),n);if(!l)return null;let a,d;if(YF(n)?(a=e.autoClosingQuotes,d=e.shouldAutoCloseBefore.quote):(e.blockCommentStartToken?l.open.includes(e.blockCommentStartToken):!1)?(a=e.autoClosingComments,d=e.shouldAutoCloseBefore.comment):(a=e.autoClosingBrackets,d=e.shouldAutoCloseBefore.bracket),a==="never")return null;const h=this._findContainedAutoClosingPair(e,l),u=h?h.close:"";let m=!0;for(const p of r){const{lineNumber:g,beforeColumn:f,afterColumn:b}=p,U=t.getLineContent(g),S=U.substring(0,f-1),Z=U.substring(b-1);if(Z.startsWith(u)||(m=!1),Z.length>0){const w=Z.charAt(0);if(!this._isBeforeClosingBrace(e,Z)&&!d(w))return null}if(l.open.length===1&&(n==="'"||n==='"')&&a!=="always"){const w=Ph(e.wordSeparators,[]);if(S.length>0){const Q=S.charCodeAt(S.length-1);if(w.get(Q)===0)return null}}if(!t.tokenization.isCheapToTokenize(g))return null;t.tokenization.forceTokenization(g);const R=t.tokenization.getLineTokens(g),y=FS(R,f-1);if(!l.shouldAutoClose(y,f-y.firstCharOffset))return null;const N=l.findNeutralCharacter();if(N){const w=t.tokenization.getTokenTypeIfInsertingCharacter(g,f,N);if(!l.isOK(w))return null}}return m?l.close.substring(0,l.close.length-u.length):l.close}static _findContainedAutoClosingPair(e,t){if(t.open.length<=1)return null;const i=t.close.charAt(t.close.length-1),n=e.autoClosingPairs.autoClosingPairsCloseByEnd.get(i)||[];let o=null;for(const r of n)r.open!==t.open&&t.open.includes(r.open)&&t.close.endsWith(r.close)&&(!o||r.open.length>o.open.length)&&(o=r);return o}static _findAutoClosingPairOpen(e,t,i,n){const o=e.autoClosingPairs.autoClosingPairsOpenByEnd.get(n);if(!o)return null;let r=null;for(const l of o)if(r===null||l.open.length>r.open.length){let a=!0;for(const d of i)if(t.getValueInRange(new z(d.lineNumber,d.column-l.open.length+1,d.lineNumber,d.column))+n!==l.open){a=!1;break}a&&(r=l)}return r}static _isBeforeClosingBrace(e,t){const i=t.charAt(0),n=e.autoClosingPairs.autoClosingPairsOpenByStart.get(i)||[],o=e.autoClosingPairs.autoClosingPairsCloseByStart.get(i)||[],r=n.some(a=>t.startsWith(a.open)),l=o.some(a=>t.startsWith(a.close));return!r&&l}}class xat{static getEdits(e,t,i,n,o){if(!o&&this._isSurroundSelectionType(e,t,i,n))return this._runSurroundSelectionType(e,i,n)}static _runSurroundSelectionType(e,t,i){const n=[];for(let o=0,r=t.length;o<r;o++){const l=t[o],a=e.surroundingPairs[i];n[o]=new Qat(l,i,a)}return new Qd(0,n,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _isSurroundSelectionType(e,t,i,n){if(!sWe(e,n)||!e.surroundingPairs.hasOwnProperty(n))return!1;const o=YF(n);for(const r of i){if(r.isEmpty())return!1;let l=!0;for(let a=r.startLineNumber;a<=r.endLineNumber;a++){const d=t.getLineContent(a),c=a===r.startLineNumber?r.startColumn-1:0,h=a===r.endLineNumber?r.endColumn-1:d.length,u=d.substring(c,h);if(/[^ \t]/.test(u)){l=!1;break}}if(l)return!1;if(o&&r.startLineNumber===r.endLineNumber&&r.startColumn+1===r.endColumn){const a=t.getValueInRange(r);if(YF(a))return!1}}return!0}}class Iat{static getEdits(e,t,i,n,o,r){if(!r&&this._isTypeInterceptorElectricChar(t,i,n)){const l=this._typeInterceptorElectricChar(e,t,i,n[0],o);if(l)return l}}static _isTypeInterceptorElectricChar(e,t,i){return!!(i.length===1&&t.tokenization.isCheapToTokenize(i[0].getEndPosition().lineNumber))}static _typeInterceptorElectricChar(e,t,i,n,o){if(!t.electricChars.hasOwnProperty(o)||!n.isEmpty())return null;const r=n.getPosition();i.tokenization.forceTokenization(r.lineNumber);const l=i.tokenization.getLineTokens(r.lineNumber);let a;try{a=t.onElectricCharacter(o,l,r.column)}catch(d){return wi(d),null}if(!a)return null;if(a.matchOpenBracket){const d=(l.getLineContent()+o).lastIndexOf(a.matchOpenBracket)+1,c=i.bracketPairs.findMatchingBracketUp(a.matchOpenBracket,{lineNumber:r.lineNumber,column:d},500);if(c){if(c.startLineNumber===r.lineNumber)return null;const h=i.getLineContent(c.startLineNumber),u=Rs(h),m=t.normalizeIndentation(u),p=i.getLineContent(r.lineNumber),g=i.getLineFirstNonWhitespaceColumn(r.lineNumber)||r.column,f=p.substring(g-1,r.column-1),b=m+f+o,U=new z(r.lineNumber,1,r.lineNumber,r.column),S=new Wl(U,b);return new Qd(yre(b,e),[S],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!0})}}return null}}class Eat{static getEdits(e,t,i){const n=[];for(let r=0,l=t.length;r<l;r++)n[r]=new Wl(t[r],i);const o=yre(i,e);return new Qd(o,n,{shouldPushStackElementBefore:T9(e,o),shouldPushStackElementAfter:!1})}}class w9{static getEdits(e,t,i,n,o){if(!o&&n===`
- `){const r=[];for(let l=0,a=i.length;l<a;l++)r[l]=this._enter(e,t,!1,i[l]);return new Qd(4,r,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}}static _enter(e,t,i,n){if(e.autoIndent===0)return cZ(n,`
- `,i);if(!t.tokenization.isCheapToTokenize(n.getStartPosition().lineNumber)||e.autoIndent===1){const a=t.getLineContent(n.startLineNumber),d=Rs(a).substring(0,n.startColumn-1);return cZ(n,`
- `+e.normalizeIndentation(d),i)}const o=z1(e.autoIndent,t,n,e.languageConfigurationService);if(o){if(o.indentAction===ar.None)return cZ(n,`
- `+e.normalizeIndentation(o.indentation+o.appendText),i);if(o.indentAction===ar.Indent)return cZ(n,`
- `+e.normalizeIndentation(o.indentation+o.appendText),i);if(o.indentAction===ar.IndentOutdent){const a=e.normalizeIndentation(o.indentation),d=e.normalizeIndentation(o.indentation+o.appendText),c=`
- `+d+`
- `+a;return i?new BD(n,c,!0):new W5(n,c,-1,d.length-a.length,!0)}else if(o.indentAction===ar.Outdent){const a=Q5(e,o.indentation);return cZ(n,`
- `+e.normalizeIndentation(a+o.appendText),i)}}const r=t.getLineContent(n.startLineNumber),l=Rs(r).substring(0,n.startColumn-1);if(e.autoIndent>=4){const a=Tat(e.autoIndent,t,n,{unshiftIndent:d=>Q5(e,d),shiftIndent:d=>Qre(e,d),normalizeIndentation:d=>e.normalizeIndentation(d)},e.languageConfigurationService);if(a){let d=e.visibleColumnFromColumn(t,n.getEndPosition());const c=n.endColumn,h=t.getLineContent(n.endLineNumber),u=Ua(h);if(u>=0?n=n.setEndPosition(n.endLineNumber,Math.max(n.endColumn,u+1)):n=n.setEndPosition(n.endLineNumber,t.getLineMaxColumn(n.endLineNumber)),i)return new BD(n,`
- `+e.normalizeIndentation(a.afterEnter),!0);{let m=0;return c<=u+1&&(e.insertSpaces||(d=Math.ceil(d/e.indentSize)),m=Math.min(d+1-e.normalizeIndentation(a.afterEnter).length-1,0)),new W5(n,`
- `+e.normalizeIndentation(a.afterEnter),0,m,!0)}}}return cZ(n,`
- `+e.normalizeIndentation(l),i)}static lineInsertBefore(e,t,i){if(t===null||i===null)return[];const n=[];for(let o=0,r=i.length;o<r;o++){let l=i[o].positionLineNumber;if(l===1)n[o]=new BD(new z(1,1,1,1),`
- `);else{l--;const a=t.getLineMaxColumn(l);n[o]=this._enter(e,t,!1,new z(l,a,l,a))}}return n}static lineInsertAfter(e,t,i){if(t===null||i===null)return[];const n=[];for(let o=0,r=i.length;o<r;o++){const l=i[o].positionLineNumber,a=t.getLineMaxColumn(l);n[o]=this._enter(e,t,!1,new z(l,a,l,a))}return n}static lineBreakInsert(e,t,i){const n=[];for(let o=0,r=i.length;o<r;o++)n[o]=this._enter(e,t,!0,i[o]);return n}}class Dat{static getEdits(e,t,i,n,o,r){const l=this._distributePasteToCursors(e,i,n,o,r);return l?(i=i.sort(z.compareRangesUsingStarts),this._distributedPaste(e,t,i,l)):this._simplePaste(e,t,i,n,o)}static _distributePasteToCursors(e,t,i,n,o){if(n||t.length===1)return null;if(o&&o.length===t.length)return o;if(e.multiCursorPaste==="spread"){i.charCodeAt(i.length-1)===10&&(i=i.substring(0,i.length-1)),i.charCodeAt(i.length-1)===13&&(i=i.substring(0,i.length-1));const r=Kg(i);if(r.length===t.length)return r}return null}static _distributedPaste(e,t,i,n){const o=[];for(let r=0,l=i.length;r<l;r++)o[r]=new Wl(i[r],n[r]);return new Qd(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _simplePaste(e,t,i,n,o){const r=[];for(let l=0,a=i.length;l<a;l++){const d=i[l],c=d.getPosition();if(o&&!d.isEmpty()&&(o=!1),o&&n.indexOf(`
- `)!==n.length-1&&(o=!1),o){const h=new z(c.lineNumber,1,c.lineNumber,1);r[l]=new Sre(h,n,d,!0)}else r[l]=new Wl(d,n)}return new Qd(0,r,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}class Gat{static getEdits(e,t,i,n,o,r,l,a){const d=n.map(c=>this._compositionType(i,c,o,r,l,a));return new Qd(4,d,{shouldPushStackElementBefore:T9(e,4),shouldPushStackElementAfter:!1})}static _compositionType(e,t,i,n,o,r){if(!t.isEmpty())return null;const l=t.getPosition(),a=Math.max(1,l.column-n),d=Math.min(e.getLineMaxColumn(l.lineNumber),l.column+o),c=new z(l.lineNumber,a,l.lineNumber,d);return e.getValueInRange(c)===i&&r===0?null:new W5(c,i,0,r)}}class Jat{static getEdits(e,t,i){const n=[];for(let r=0,l=t.length;r<l;r++)n[r]=new Wl(t[r],i);const o=yre(i,e);return new Qd(o,n,{shouldPushStackElementBefore:T9(e,o),shouldPushStackElementAfter:!1})}}class Xat{static getCommands(e,t,i){const n=[];for(let o=0,r=i.length;o<r;o++){const l=i[o];if(l.isEmpty()){const a=t.getLineContent(l.startLineNumber);if(/^\s*$/.test(a)&&t.tokenization.isCheapToTokenize(l.startLineNumber)){let d=this._goodIndentForLine(e,t,l.startLineNumber);d=d||" ";const c=e.normalizeIndentation(d);if(!a.startsWith(c)){n[o]=new Wl(new z(l.startLineNumber,1,l.startLineNumber,a.length+1),c,!0);continue}}n[o]=this._replaceJumpToNextIndent(e,t,l,!0)}else{if(l.startLineNumber===l.endLineNumber){const a=t.getLineMaxColumn(l.startLineNumber);if(l.startColumn!==1||l.endColumn!==a){n[o]=this._replaceJumpToNextIndent(e,t,l,!1);continue}}n[o]=new Kh(l,{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService)}}return n}static _goodIndentForLine(e,t,i){let n=null,o="";const r=LL(e.autoIndent,t,i,!1,e.languageConfigurationService);if(r)n=r.action,o=r.indentation;else if(i>1){let l;for(l=i-1;l>=1;l--){const c=t.getLineContent(l);if(ip(c)>=0)break}if(l<1)return null;const a=t.getLineMaxColumn(l),d=z1(e.autoIndent,t,new z(l,a,l,a),e.languageConfigurationService);d&&(o=d.indentation+d.appendText)}return n&&(n===ar.Indent&&(o=Qre(e,o)),n===ar.Outdent&&(o=Q5(e,o)),o=e.normalizeIndentation(o)),o||null}static _replaceJumpToNextIndent(e,t,i,n){let o="";const r=i.getStartPosition();if(e.insertSpaces){const l=e.visibleColumnFromColumn(t,r),a=e.indentSize,d=a-l%a;for(let c=0;c<d;c++)o+=" "}else o=" ";return new Wl(i,o,n)}}class Wre extends W5{constructor(e,t,i,n,o,r){super(e,t,i,n),this._openCharacter=o,this._closeCharacter=r,this.closeCharacterRange=null,this.enclosingRange=null}_computeCursorStateWithRange(e,t,i){return this.closeCharacterRange=new z(t.startLineNumber,t.endColumn-this._closeCharacter.length,t.endLineNumber,t.endColumn),this.enclosingRange=new z(t.startLineNumber,t.endColumn-this._openCharacter.length-this._closeCharacter.length,t.endLineNumber,t.endColumn),super.computeCursorState(e,i)}}class Yat extends Wre{constructor(e,t,i,n){const o=(i?t:"")+n,r=0,l=-n.length;super(e,o,r,l,t,n)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return this._computeCursorStateWithRange(e,n,t)}}class _at extends Wre{constructor(e,t,i,n){const o=i+n,r=0,l=i.length;super(t,o,r,l,i,n),this._autoIndentationEdit=e,this._autoClosingEdit={range:t,text:o}}getEditOperations(e,t){t.addTrackedEditOperation(this._autoIndentationEdit.range,this._autoIndentationEdit.text),t.addTrackedEditOperation(this._autoClosingEdit.range,this._autoClosingEdit.text)}computeCursorState(e,t){const i=t.getInverseEditOperations();if(i.length!==2)throw new Error("There should be two inverse edit operations!");const n=i[0].range,o=i[1].range,r=n.plusRange(o);return this._computeCursorStateWithRange(e,r,t)}}function yre(s,e){return s===" "?e===5||e===6?6:5:4}function T9(s,e){return Vpe(s)&&!Vpe(e)?!0:s===5?!1:Rpe(s)!==Rpe(e)}function Rpe(s){return s===6||s===5?"space":s}function Vpe(s){return s===4||s===5||s===6}function nWe(s,e,t,i,n){if(s.autoClosingOvertype==="never"||!s.autoClosingPairs.autoClosingPairsCloseSingleChar.has(n))return!1;for(let o=0,r=t.length;o<r;o++){const l=t[o];if(!l.isEmpty())return!1;const a=l.getPosition(),d=e.getLineContent(a.lineNumber);if(d.charAt(a.column-1)!==n)return!1;const h=YF(n);if((a.column>2?d.charCodeAt(a.column-2):0)===92&&h)return!1;if(s.autoClosingOvertype==="auto"){let m=!1;for(let p=0,g=i.length;p<g;p++){const f=i[p];if(a.lineNumber===f.startLineNumber&&a.column===f.startColumn){m=!0;break}}if(!m)return!1}}return!0}function cZ(s,e,t){return t?new BD(s,e,!0):new Wl(s,e,!0)}function Qre(s,e,t){return t=t||1,Kh.shiftIndent(e,e.length+t,s.tabSize,s.indentSize,s.insertSpaces)}function Q5(s,e,t){return t=t||1,Kh.unshiftIndent(e,e.length+t,s.tabSize,s.indentSize,s.insertSpaces)}function sWe(s,e){return YF(e)?s.autoSurround==="quotes"||s.autoSurround==="languageDefined":s.autoSurround==="brackets"||s.autoSurround==="languageDefined"}class WU{static indent(e,t,i){if(t===null||i===null)return[];const n=[];for(let o=0,r=i.length;o<r;o++)n[o]=new Kh(i[o],{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService);return n}static outdent(e,t,i){const n=[];for(let o=0,r=i.length;o<r;o++)n[o]=new Kh(i[o],{isUnshift:!0,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService);return n}static paste(e,t,i,n,o,r){return Dat.getEdits(e,t,i,n,o,r)}static tab(e,t,i){return Xat.getCommands(e,t,i)}static compositionType(e,t,i,n,o,r,l,a){return Gat.getEdits(e,t,i,n,o,r,l,a)}static compositionEndWithInterceptors(e,t,i,n,o,r){if(!n)return null;let l=null;for(const u of n)if(l===null)l=u.insertedText;else if(l!==u.insertedText)return null;if(!l||l.length!==1)return null;const a=l;let d=!1;for(const u of n)if(u.deletedText.length!==0){d=!0;break}if(d){if(!sWe(t,a)||!t.surroundingPairs.hasOwnProperty(a))return null;const u=YF(a);for(const g of n)if(g.deletedSelectionStart!==0||g.deletedSelectionEnd!==g.deletedText.length||/^[ \t]+$/.test(g.deletedText)||u&&YF(g.deletedText))return null;const m=[];for(const g of o){if(!g.isEmpty())return null;m.push(g.getPosition())}if(m.length!==n.length)return null;const p=[];for(let g=0,f=m.length;g<f;g++)p.push(new Mat(m[g],n[g].deletedText,t.surroundingPairs[a]));return new Qd(4,p,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const c=kat.getEdits(t,i,o,r,a);if(c!==void 0)return c;const h=Hq.getEdits(t,i,o,a,!0,!1);return h!==void 0?h:null}static typeWithInterceptors(e,t,i,n,o,r,l){const a=w9.getEdits(i,n,o,l,e);if(a!==void 0)return a;const d=Lat.getEdits(i,n,o,l,e);if(d!==void 0)return d;const c=vat.getEdits(t,i,n,o,r,l);if(c!==void 0)return c;const h=Hq.getEdits(i,n,o,l,!1,e);if(h!==void 0)return h;const u=xat.getEdits(i,n,o,l,e);if(u!==void 0)return u;const m=Iat.getEdits(t,i,n,o,l,e);return m!==void 0?m:Eat.getEdits(t,o,l)}static typeWithoutInterceptors(e,t,i,n,o){return Jat.getEdits(e,n,o)}}class zat{constructor(e,t,i,n,o,r){this.deletedText=e,this.deletedSelectionStart=t,this.deletedSelectionEnd=i,this.insertedText=n,this.insertedSelectionStart=o,this.insertedSelectionEnd=r}}var $;(function(s){s.editorSimpleInput=new yt("editorSimpleInput",!1,!0),s.editorTextFocus=new yt("editorTextFocus",!1,F("editorTextFocus","Whether the editor text has focus (cursor is blinking)")),s.focus=new yt("editorFocus",!1,F("editorFocus","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)")),s.textInputFocus=new yt("textInputFocus",!1,F("textInputFocus","Whether an editor or a rich text input has focus (cursor is blinking)")),s.readOnly=new yt("editorReadonly",!1,F("editorReadonly","Whether the editor is read-only")),s.inDiffEditor=new yt("inDiffEditor",!1,F("inDiffEditor","Whether the context is a diff editor")),s.isEmbeddedDiffEditor=new yt("isEmbeddedDiffEditor",!1,F("isEmbeddedDiffEditor","Whether the context is an embedded diff editor")),s.inMultiDiffEditor=new yt("inMultiDiffEditor",!1,F("inMultiDiffEditor","Whether the context is a multi diff editor")),s.multiDiffEditorAllCollapsed=new yt("multiDiffEditorAllCollapsed",void 0,F("multiDiffEditorAllCollapsed","Whether all files in multi diff editor are collapsed")),s.hasChanges=new yt("diffEditorHasChanges",!1,F("diffEditorHasChanges","Whether the diff editor has changes")),s.comparingMovedCode=new yt("comparingMovedCode",!1,F("comparingMovedCode","Whether a moved code block is selected for comparison")),s.accessibleDiffViewerVisible=new yt("accessibleDiffViewerVisible",!1,F("accessibleDiffViewerVisible","Whether the accessible diff viewer is visible")),s.diffEditorRenderSideBySideInlineBreakpointReached=new yt("diffEditorRenderSideBySideInlineBreakpointReached",!1,F("diffEditorRenderSideBySideInlineBreakpointReached","Whether the diff editor render side by side inline breakpoint is reached")),s.diffEditorInlineMode=new yt("diffEditorInlineMode",!1,F("diffEditorInlineMode","Whether inline mode is active")),s.diffEditorOriginalWritable=new yt("diffEditorOriginalWritable",!1,F("diffEditorOriginalWritable","Whether modified is writable in the diff editor")),s.diffEditorModifiedWritable=new yt("diffEditorModifiedWritable",!1,F("diffEditorModifiedWritable","Whether modified is writable in the diff editor")),s.diffEditorOriginalUri=new yt("diffEditorOriginalUri","",F("diffEditorOriginalUri","The uri of the original document")),s.diffEditorModifiedUri=new yt("diffEditorModifiedUri","",F("diffEditorModifiedUri","The uri of the modified document")),s.columnSelection=new yt("editorColumnSelection",!1,F("editorColumnSelection","Whether `editor.columnSelection` is enabled")),s.writable=s.readOnly.toNegated(),s.hasNonEmptySelection=new yt("editorHasSelection",!1,F("editorHasSelection","Whether the editor has text selected")),s.hasOnlyEmptySelection=s.hasNonEmptySelection.toNegated(),s.hasMultipleSelections=new yt("editorHasMultipleSelections",!1,F("editorHasMultipleSelections","Whether the editor has multiple selections")),s.hasSingleSelection=s.hasMultipleSelections.toNegated(),s.tabMovesFocus=new yt("editorTabMovesFocus",!1,F("editorTabMovesFocus","Whether `Tab` will move focus out of the editor")),s.tabDoesNotMoveFocus=s.tabMovesFocus.toNegated(),s.isInEmbeddedEditor=new yt("isInEmbeddedEditor",!1,!0),s.canUndo=new yt("canUndo",!1,!0),s.canRedo=new yt("canRedo",!1,!0),s.hoverVisible=new yt("editorHoverVisible",!1,F("editorHoverVisible","Whether the editor hover is visible")),s.hoverFocused=new yt("editorHoverFocused",!1,F("editorHoverFocused","Whether the editor hover is focused")),s.stickyScrollFocused=new yt("stickyScrollFocused",!1,F("stickyScrollFocused","Whether the sticky scroll is focused")),s.stickyScrollVisible=new yt("stickyScrollVisible",!1,F("stickyScrollVisible","Whether the sticky scroll is visible")),s.standaloneColorPickerVisible=new yt("standaloneColorPickerVisible",!1,F("standaloneColorPickerVisible","Whether the standalone color picker is visible")),s.standaloneColorPickerFocused=new yt("standaloneColorPickerFocused",!1,F("standaloneColorPickerFocused","Whether the standalone color picker is focused")),s.inCompositeEditor=new yt("inCompositeEditor",void 0,F("inCompositeEditor","Whether the editor is part of a larger editor (e.g. notebooks)")),s.notInCompositeEditor=s.inCompositeEditor.toNegated(),s.languageId=new yt("editorLangId","",F("editorLangId","The language identifier of the editor")),s.hasCompletionItemProvider=new yt("editorHasCompletionItemProvider",!1,F("editorHasCompletionItemProvider","Whether the editor has a completion item provider")),s.hasCodeActionsProvider=new yt("editorHasCodeActionsProvider",!1,F("editorHasCodeActionsProvider","Whether the editor has a code actions provider")),s.hasCodeLensProvider=new yt("editorHasCodeLensProvider",!1,F("editorHasCodeLensProvider","Whether the editor has a code lens provider")),s.hasDefinitionProvider=new yt("editorHasDefinitionProvider",!1,F("editorHasDefinitionProvider","Whether the editor has a definition provider")),s.hasDeclarationProvider=new yt("editorHasDeclarationProvider",!1,F("editorHasDeclarationProvider","Whether the editor has a declaration provider")),s.hasImplementationProvider=new yt("editorHasImplementationProvider",!1,F("editorHasImplementationProvider","Whether the editor has an implementation provider")),s.hasTypeDefinitionProvider=new yt("editorHasTypeDefinitionProvider",!1,F("editorHasTypeDefinitionProvider","Whether the editor has a type definition provider")),s.hasHoverProvider=new yt("editorHasHoverProvider",!1,F("editorHasHoverProvider","Whether the editor has a hover provider")),s.hasDocumentHighlightProvider=new yt("editorHasDocumentHighlightProvider",!1,F("editorHasDocumentHighlightProvider","Whether the editor has a document highlight provider")),s.hasDocumentSymbolProvider=new yt("editorHasDocumentSymbolProvider",!1,F("editorHasDocumentSymbolProvider","Whether the editor has a document symbol provider")),s.hasReferenceProvider=new yt("editorHasReferenceProvider",!1,F("editorHasReferenceProvider","Whether the editor has a reference provider")),s.hasRenameProvider=new yt("editorHasRenameProvider",!1,F("editorHasRenameProvider","Whether the editor has a rename provider")),s.hasSignatureHelpProvider=new yt("editorHasSignatureHelpProvider",!1,F("editorHasSignatureHelpProvider","Whether the editor has a signature help provider")),s.hasInlayHintsProvider=new yt("editorHasInlayHintsProvider",!1,F("editorHasInlayHintsProvider","Whether the editor has an inline hints provider")),s.hasDocumentFormattingProvider=new yt("editorHasDocumentFormattingProvider",!1,F("editorHasDocumentFormattingProvider","Whether the editor has a document formatting provider")),s.hasDocumentSelectionFormattingProvider=new yt("editorHasDocumentSelectionFormattingProvider",!1,F("editorHasDocumentSelectionFormattingProvider","Whether the editor has a document selection formatting provider")),s.hasMultipleDocumentFormattingProvider=new yt("editorHasMultipleDocumentFormattingProvider",!1,F("editorHasMultipleDocumentFormattingProvider","Whether the editor has multiple document formatting providers")),s.hasMultipleDocumentSelectionFormattingProvider=new yt("editorHasMultipleDocumentSelectionFormattingProvider",!1,F("editorHasMultipleDocumentSelectionFormattingProvider","Whether the editor has multiple document selection formatting providers"))})($||($={}));const zn=0;class Mo extends Nr{runEditorCommand(e,t,i){const n=t._getViewModel();n&&this.runCoreEditorCommand(n,i||{})}}var Fl;(function(s){const e=function(i){if(!_r(i))return!1;const n=i;return!(!Vd(n.to)||!fa(n.by)&&!Vd(n.by)||!fa(n.value)&&!wF(n.value)||!fa(n.revealCursor)&&!iZe(n.revealCursor))};s.metadata={description:"Scroll editor in the given direction",args:[{name:"Editor scroll argument object",description:"Property-value pairs that can be passed through this argument:\n * 'to': A mandatory direction value.\n ```\n 'up', 'down'\n ```\n * 'by': Unit to move. Default is computed based on 'to' value.\n ```\n 'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n ```\n * 'value': Number of units to move. Default is '1'.\n * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n ",constraint:e,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["up","down"]},by:{type:"string",enum:["line","wrappedLine","page","halfPage","editor"]},value:{type:"number",default:1},revealCursor:{type:"boolean"}}}}]},s.RawDirection={Up:"up",Right:"right",Down:"down",Left:"left"},s.RawUnit={Line:"line",WrappedLine:"wrappedLine",Page:"page",HalfPage:"halfPage",Editor:"editor",Column:"column"};function t(i){let n;switch(i.to){case s.RawDirection.Up:n=1;break;case s.RawDirection.Right:n=2;break;case s.RawDirection.Down:n=3;break;case s.RawDirection.Left:n=4;break;default:return null}let o;switch(i.by){case s.RawUnit.Line:o=1;break;case s.RawUnit.WrappedLine:o=2;break;case s.RawUnit.Page:o=3;break;case s.RawUnit.HalfPage:o=4;break;case s.RawUnit.Editor:o=5;break;case s.RawUnit.Column:o=6;break;default:o=2}const r=Math.floor(i.value||1),l=!!i.revealCursor;return{direction:n,unit:o,value:r,revealCursor:l,select:!!i.select}}s.parse=t})(Fl||(Fl={}));var wW;(function(s){const e=function(t){if(!_r(t))return!1;const i=t;return!(!wF(i.lineNumber)&&!Vd(i.lineNumber)||!fa(i.at)&&!Vd(i.at))};s.metadata={description:"Reveal the given line at the given logical position",args:[{name:"Reveal line argument object",description:"Property-value pairs that can be passed through this argument:\n * 'lineNumber': A mandatory line number value.\n * 'at': Logical position at which line has to be revealed.\n ```\n 'top', 'center', 'bottom'\n ```\n ",constraint:e,schema:{type:"object",required:["lineNumber"],properties:{lineNumber:{type:["number","string"]},at:{type:"string",enum:["top","center","bottom"]}}}}]},s.RawAtArgument={Top:"top",Center:"center",Bottom:"bottom"}})(wW||(wW={}));class Kq{constructor(e){e.addImplementation(1e4,"code-editor",(t,i)=>{const n=t.get(kn).getFocusedCodeEditor();return n&&n.hasTextFocus()?this._runEditorCommand(t,n,i):!1}),e.addImplementation(1e3,"generic-dom-input-textarea",(t,i)=>{const n=Ql();return n&&["input","textarea"].indexOf(n.tagName.toLowerCase())>=0?(this.runDOMCommand(n),!0):!1}),e.addImplementation(0,"generic-dom",(t,i)=>{const n=t.get(kn).getActiveCodeEditor();return n?(n.focus(),this._runEditorCommand(t,n,i)):!1})}_runEditorCommand(e,t,i){const n=this.runEditorCommand(e,t,i);return n||!0}}var xr;(function(s){class e extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){if(!S.position)return;U.model.pushStackElement(),U.setCursorStates(S.source,3,[el.moveTo(U,U.getPrimaryCursorState(),this._inSelectionMode,S.position,S.viewPosition)])&&S.revealType!==2&&U.revealAllCursors(S.source,!0,!0)}}s.MoveTo=Vt(new e({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),s.MoveToSelect=Vt(new e({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));class t extends Mo{runCoreEditorCommand(U,S){U.model.pushStackElement();const Z=this._getColumnSelectResult(U,U.getPrimaryCursorState(),U.getCursorColumnSelectData(),S);Z!==null&&(U.setCursorStates(S.source,3,Z.viewStates.map(R=>Bn.fromViewState(R))),U.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:Z.fromLineNumber,fromViewVisualColumn:Z.fromVisualColumn,toViewLineNumber:Z.toLineNumber,toViewVisualColumn:Z.toVisualColumn}),Z.reversed?U.revealTopMostCursor(S.source):U.revealBottomMostCursor(S.source))}}s.ColumnSelect=Vt(new class extends t{constructor(){super({id:"columnSelect",precondition:void 0})}_getColumnSelectResult(b,U,S,Z){if(typeof Z.position>"u"||typeof Z.viewPosition>"u"||typeof Z.mouseColumn>"u")return null;const R=b.model.validatePosition(Z.position),y=b.coordinatesConverter.validateViewPosition(new ge(Z.viewPosition.lineNumber,Z.viewPosition.column),R),N=Z.doColumnSelect?S.fromViewLineNumber:y.lineNumber,w=Z.doColumnSelect?S.fromViewVisualColumn:Z.mouseColumn-1;return tS.columnSelect(b.cursorConfig,b,N,w,y.lineNumber,Z.mouseColumn-1)}}),s.CursorColumnSelectLeft=Vt(new class extends t{constructor(){super({id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(b,U,S,Z){return tS.columnSelectLeft(b.cursorConfig,b,S)}}),s.CursorColumnSelectRight=Vt(new class extends t{constructor(){super({id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(b,U,S,Z){return tS.columnSelectRight(b.cursorConfig,b,S)}});class i extends t{constructor(U){super(U),this._isPaged=U.isPaged}_getColumnSelectResult(U,S,Z,R){return tS.columnSelectUp(U.cursorConfig,U,Z,this._isPaged)}}s.CursorColumnSelectUp=Vt(new i({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3600,linux:{primary:0}}})),s.CursorColumnSelectPageUp=Vt(new i({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3595,linux:{primary:0}}}));class n extends t{constructor(U){super(U),this._isPaged=U.isPaged}_getColumnSelectResult(U,S,Z,R){return tS.columnSelectDown(U.cursorConfig,U,Z,this._isPaged)}}s.CursorColumnSelectDown=Vt(new n({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3602,linux:{primary:0}}})),s.CursorColumnSelectPageDown=Vt(new n({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3596,linux:{primary:0}}}));class o extends Mo{constructor(){super({id:"cursorMove",precondition:void 0,metadata:y5.metadata})}runCoreEditorCommand(U,S){const Z=y5.parse(S);Z&&this._runCursorMove(U,S.source,Z)}_runCursorMove(U,S,Z){U.model.pushStackElement(),U.setCursorStates(S,3,o._move(U,U.getCursorStates(),Z)),U.revealAllCursors(S,!0)}static _move(U,S,Z){const R=Z.select,y=Z.value;switch(Z.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return el.simpleMove(U,S,Z.direction,R,y,Z.unit);case 11:case 13:case 12:case 14:return el.viewportMove(U,S,Z.direction,R,y);default:return null}}}s.CursorMoveImpl=o,s.CursorMove=Vt(new o);class r extends Mo{constructor(U){super(U),this._staticArgs=U.args}runCoreEditorCommand(U,S){let Z=this._staticArgs;this._staticArgs.value===-1&&(Z={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:S.pageSize||U.cursorConfig.pageSize}),U.model.pushStackElement(),U.setCursorStates(S.source,3,el.simpleMove(U,U.getCursorStates(),Z.direction,Z.select,Z.value,Z.unit)),U.revealAllCursors(S.source,!0)}}s.CursorLeft=Vt(new r({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),s.CursorLeftSelect=Vt(new r({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1039}})),s.CursorRight=Vt(new r({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),s.CursorRightSelect=Vt(new r({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1041}})),s.CursorUp=Vt(new r({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),s.CursorUpSelect=Vt(new r({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),s.CursorPageUp=Vt(new r({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:11}})),s.CursorPageUpSelect=Vt(new r({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1035}})),s.CursorDown=Vt(new r({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),s.CursorDownSelect=Vt(new r({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),s.CursorPageDown=Vt(new r({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:12}})),s.CursorPageDownSelect=Vt(new r({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1036}})),s.CreateCursor=Vt(new class extends Mo{constructor(){super({id:"createCursor",precondition:void 0})}runCoreEditorCommand(b,U){if(!U.position)return;let S;U.wholeLine?S=el.line(b,b.getPrimaryCursorState(),!1,U.position,U.viewPosition):S=el.moveTo(b,b.getPrimaryCursorState(),!1,U.position,U.viewPosition);const Z=b.getCursorStates();if(Z.length>1){const R=S.modelState?S.modelState.position:null,y=S.viewState?S.viewState.position:null;for(let N=0,w=Z.length;N<w;N++){const Q=Z[N];if(!(R&&!Q.modelState.selection.containsPosition(R))&&!(y&&!Q.viewState.selection.containsPosition(y))){Z.splice(N,1),b.model.pushStackElement(),b.setCursorStates(U.source,3,Z);return}}}Z.push(S),b.model.pushStackElement(),b.setCursorStates(U.source,3,Z)}}),s.LastCursorMoveToSelect=Vt(new class extends Mo{constructor(){super({id:"_lastCursorMoveToSelect",precondition:void 0})}runCoreEditorCommand(b,U){if(!U.position)return;const S=b.getLastAddedCursorIndex(),Z=b.getCursorStates(),R=Z.slice(0);R[S]=el.moveTo(b,Z[S],!0,U.position,U.viewPosition),b.model.pushStackElement(),b.setCursorStates(U.source,3,R)}});class l extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){U.model.pushStackElement(),U.setCursorStates(S.source,3,el.moveToBeginningOfLine(U,U.getCursorStates(),this._inSelectionMode)),U.revealAllCursors(S.source,!0)}}s.CursorHome=Vt(new l({inSelectionMode:!1,id:"cursorHome",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:14,mac:{primary:14,secondary:[2063]}}})),s.CursorHomeSelect=Vt(new l({inSelectionMode:!0,id:"cursorHomeSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1038,mac:{primary:1038,secondary:[3087]}}}));class a extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){U.model.pushStackElement(),U.setCursorStates(S.source,3,this._exec(U.getCursorStates())),U.revealAllCursors(S.source,!0)}_exec(U){const S=[];for(let Z=0,R=U.length;Z<R;Z++){const y=U[Z],N=y.modelState.position.lineNumber;S[Z]=Bn.fromModelState(y.modelState.move(this._inSelectionMode,N,1,0))}return S}}s.CursorLineStart=Vt(new a({inSelectionMode:!1,id:"cursorLineStart",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:0,mac:{primary:287}}})),s.CursorLineStartSelect=Vt(new a({inSelectionMode:!0,id:"cursorLineStartSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:0,mac:{primary:1311}}}));class d extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){U.model.pushStackElement(),U.setCursorStates(S.source,3,el.moveToEndOfLine(U,U.getCursorStates(),this._inSelectionMode,S.sticky||!1)),U.revealAllCursors(S.source,!0)}}s.CursorEnd=Vt(new d({inSelectionMode:!1,id:"cursorEnd",precondition:void 0,kbOpts:{args:{sticky:!1},weight:zn,kbExpr:$.textInputFocus,primary:13,mac:{primary:13,secondary:[2065]}},metadata:{description:"Go to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:F("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}})),s.CursorEndSelect=Vt(new d({inSelectionMode:!0,id:"cursorEndSelect",precondition:void 0,kbOpts:{args:{sticky:!1},weight:zn,kbExpr:$.textInputFocus,primary:1037,mac:{primary:1037,secondary:[3089]}},metadata:{description:"Select to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:F("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}}));class c extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){U.model.pushStackElement(),U.setCursorStates(S.source,3,this._exec(U,U.getCursorStates())),U.revealAllCursors(S.source,!0)}_exec(U,S){const Z=[];for(let R=0,y=S.length;R<y;R++){const N=S[R],w=N.modelState.position.lineNumber,Q=U.model.getLineMaxColumn(w);Z[R]=Bn.fromModelState(N.modelState.move(this._inSelectionMode,w,Q,0))}return Z}}s.CursorLineEnd=Vt(new c({inSelectionMode:!1,id:"cursorLineEnd",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:0,mac:{primary:291}}})),s.CursorLineEndSelect=Vt(new c({inSelectionMode:!0,id:"cursorLineEndSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:0,mac:{primary:1315}}}));class h extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){U.model.pushStackElement(),U.setCursorStates(S.source,3,el.moveToBeginningOfBuffer(U,U.getCursorStates(),this._inSelectionMode)),U.revealAllCursors(S.source,!0)}}s.CursorTop=Vt(new h({inSelectionMode:!1,id:"cursorTop",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:2062,mac:{primary:2064}}})),s.CursorTopSelect=Vt(new h({inSelectionMode:!0,id:"cursorTopSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3086,mac:{primary:3088}}}));class u extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){U.model.pushStackElement(),U.setCursorStates(S.source,3,el.moveToEndOfBuffer(U,U.getCursorStates(),this._inSelectionMode)),U.revealAllCursors(S.source,!0)}}s.CursorBottom=Vt(new u({inSelectionMode:!1,id:"cursorBottom",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:2061,mac:{primary:2066}}})),s.CursorBottomSelect=Vt(new u({inSelectionMode:!0,id:"cursorBottomSelect",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:3085,mac:{primary:3090}}}));class m extends Mo{constructor(){super({id:"editorScroll",precondition:void 0,metadata:Fl.metadata})}determineScrollMethod(U){const S=[6],Z=[1,2,3,4,5,6],R=[4,2],y=[1,3];return S.includes(U.unit)&&R.includes(U.direction)?this._runHorizontalEditorScroll.bind(this):Z.includes(U.unit)&&y.includes(U.direction)?this._runVerticalEditorScroll.bind(this):null}runCoreEditorCommand(U,S){const Z=Fl.parse(S);if(!Z)return;const R=this.determineScrollMethod(Z);R&&R(U,S.source,Z)}_runVerticalEditorScroll(U,S,Z){const R=this._computeDesiredScrollTop(U,Z);if(Z.revealCursor){const y=U.getCompletelyVisibleViewRangeAtScrollTop(R);U.setCursorStates(S,3,[el.findPositionInViewportIfOutside(U,U.getPrimaryCursorState(),y,Z.select)])}U.viewLayout.setScrollPosition({scrollTop:R},0)}_computeDesiredScrollTop(U,S){if(S.unit===1){const y=U.viewLayout.getFutureViewport(),N=U.getCompletelyVisibleViewRangeAtScrollTop(y.top),w=U.coordinatesConverter.convertViewRangeToModelRange(N);let Q;S.direction===1?Q=Math.max(1,w.startLineNumber-S.value):Q=Math.min(U.model.getLineCount(),w.startLineNumber+S.value);const C=U.coordinatesConverter.convertModelPositionToViewPosition(new ge(Q,1));return U.viewLayout.getVerticalOffsetForLineNumber(C.lineNumber)}if(S.unit===5){let y=0;return S.direction===3&&(y=U.model.getLineCount()-U.cursorConfig.pageSize),U.viewLayout.getVerticalOffsetForLineNumber(y)}let Z;S.unit===3?Z=U.cursorConfig.pageSize*S.value:S.unit===4?Z=Math.round(U.cursorConfig.pageSize/2)*S.value:Z=S.value;const R=(S.direction===1?-1:1)*Z;return U.viewLayout.getCurrentScrollTop()+R*U.cursorConfig.lineHeight}_runHorizontalEditorScroll(U,S,Z){const R=this._computeDesiredScrollLeft(U,Z);U.viewLayout.setScrollPosition({scrollLeft:R},0)}_computeDesiredScrollLeft(U,S){const Z=(S.direction===4?-1:1)*S.value;return U.viewLayout.getCurrentScrollLeft()+Z*U.cursorConfig.typicalHalfwidthCharacterWidth}}s.EditorScrollImpl=m,s.EditorScroll=Vt(new m),s.ScrollLineUp=Vt(new class extends Mo{constructor(){super({id:"scrollLineUp",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:2064,mac:{primary:267}}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Up,by:Fl.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:U.source})}}),s.ScrollPageUp=Vt(new class extends Mo{constructor(){super({id:"scrollPageUp",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:2059,win:{primary:523},linux:{primary:523}}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Up,by:Fl.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:U.source})}}),s.ScrollEditorTop=Vt(new class extends Mo{constructor(){super({id:"scrollEditorTop",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Up,by:Fl.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:U.source})}}),s.ScrollLineDown=Vt(new class extends Mo{constructor(){super({id:"scrollLineDown",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:2066,mac:{primary:268}}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Down,by:Fl.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:U.source})}}),s.ScrollPageDown=Vt(new class extends Mo{constructor(){super({id:"scrollPageDown",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:2060,win:{primary:524},linux:{primary:524}}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Down,by:Fl.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:U.source})}}),s.ScrollEditorBottom=Vt(new class extends Mo{constructor(){super({id:"scrollEditorBottom",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Down,by:Fl.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:U.source})}}),s.ScrollLeft=Vt(new class extends Mo{constructor(){super({id:"scrollLeft",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Left,by:Fl.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:U.source})}}),s.ScrollRight=Vt(new class extends Mo{constructor(){super({id:"scrollRight",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus}})}runCoreEditorCommand(b,U){s.EditorScroll.runCoreEditorCommand(b,{to:Fl.RawDirection.Right,by:Fl.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:U.source})}});class p extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){S.position&&(U.model.pushStackElement(),U.setCursorStates(S.source,3,[el.word(U,U.getPrimaryCursorState(),this._inSelectionMode,S.position)]),S.revealType!==2&&U.revealAllCursors(S.source,!0,!0))}}s.WordSelect=Vt(new p({inSelectionMode:!1,id:"_wordSelect",precondition:void 0})),s.WordSelectDrag=Vt(new p({inSelectionMode:!0,id:"_wordSelectDrag",precondition:void 0})),s.LastCursorWordSelect=Vt(new class extends Mo{constructor(){super({id:"lastCursorWordSelect",precondition:void 0})}runCoreEditorCommand(b,U){if(!U.position)return;const S=b.getLastAddedCursorIndex(),Z=b.getCursorStates(),R=Z.slice(0),y=Z[S];R[S]=el.word(b,y,y.modelState.hasSelection(),U.position),b.model.pushStackElement(),b.setCursorStates(U.source,3,R)}});class g extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){S.position&&(U.model.pushStackElement(),U.setCursorStates(S.source,3,[el.line(U,U.getPrimaryCursorState(),this._inSelectionMode,S.position,S.viewPosition)]),S.revealType!==2&&U.revealAllCursors(S.source,!1,!0))}}s.LineSelect=Vt(new g({inSelectionMode:!1,id:"_lineSelect",precondition:void 0})),s.LineSelectDrag=Vt(new g({inSelectionMode:!0,id:"_lineSelectDrag",precondition:void 0}));class f extends Mo{constructor(U){super(U),this._inSelectionMode=U.inSelectionMode}runCoreEditorCommand(U,S){if(!S.position)return;const Z=U.getLastAddedCursorIndex(),R=U.getCursorStates(),y=R.slice(0);y[Z]=el.line(U,R[Z],this._inSelectionMode,S.position,S.viewPosition),U.model.pushStackElement(),U.setCursorStates(S.source,3,y)}}s.LastCursorLineSelect=Vt(new f({inSelectionMode:!1,id:"lastCursorLineSelect",precondition:void 0})),s.LastCursorLineSelectDrag=Vt(new f({inSelectionMode:!0,id:"lastCursorLineSelectDrag",precondition:void 0})),s.CancelSelection=Vt(new class extends Mo{constructor(){super({id:"cancelSelection",precondition:$.hasNonEmptySelection,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(b,U){b.model.pushStackElement(),b.setCursorStates(U.source,3,[el.cancelSelection(b,b.getPrimaryCursorState())]),b.revealAllCursors(U.source,!0)}}),s.RemoveSecondaryCursors=Vt(new class extends Mo{constructor(){super({id:"removeSecondaryCursors",precondition:$.hasMultipleSelections,kbOpts:{weight:zn+1,kbExpr:$.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(b,U){b.model.pushStackElement(),b.setCursorStates(U.source,3,[b.getPrimaryCursorState()]),b.revealAllCursors(U.source,!0),Xg(F("removedCursor","Removed secondary cursors"))}}),s.RevealLine=Vt(new class extends Mo{constructor(){super({id:"revealLine",precondition:void 0,metadata:wW.metadata})}runCoreEditorCommand(b,U){const S=U,Z=S.lineNumber||0;let R=typeof Z=="number"?Z+1:parseInt(Z)+1;R<1&&(R=1);const y=b.model.getLineCount();R>y&&(R=y);const N=new z(R,1,R,b.model.getLineMaxColumn(R));let w=0;if(S.at)switch(S.at){case wW.RawAtArgument.Top:w=3;break;case wW.RawAtArgument.Center:w=1;break;case wW.RawAtArgument.Bottom:w=4;break}const Q=b.coordinatesConverter.convertModelRangeToViewRange(N);b.revealRange(U.source,!1,Q,w,0)}}),s.SelectAll=new class extends Kq{constructor(){super(k4e)}runDOMCommand(b){zh&&(b.focus(),b.select()),b.ownerDocument.execCommand("selectAll")}runEditorCommand(b,U,S){const Z=U._getViewModel();Z&&this.runCoreEditorCommand(Z,S)}runCoreEditorCommand(b,U){b.model.pushStackElement(),b.setCursorStates("keyboard",3,[el.selectAll(b,b.getPrimaryCursorState())])}},s.SetSelection=Vt(new class extends Mo{constructor(){super({id:"setSelection",precondition:void 0})}runCoreEditorCommand(b,U){U.selection&&(b.model.pushStackElement(),b.setCursorStates(U.source,3,[Bn.fromModelSelection(U.selection)]))}})})(xr||(xr={}));const Oat=Ge.and($.textInputFocus,$.columnSelection);function MM(s,e){Oa.registerKeybindingRule({id:s,primary:e,when:Oat,weight:zn+1})}MM(xr.CursorColumnSelectLeft.id,1039);MM(xr.CursorColumnSelectRight.id,1041);MM(xr.CursorColumnSelectUp.id,1040);MM(xr.CursorColumnSelectPageUp.id,1035);MM(xr.CursorColumnSelectDown.id,1042);MM(xr.CursorColumnSelectPageDown.id,1036);function Wpe(s){return s.register(),s}var O1;(function(s){class e extends Nr{runEditorCommand(i,n,o){const r=n._getViewModel();r&&this.runCoreEditingCommand(n,r,o||{})}}s.CoreEditingCommand=e,s.LineBreakInsert=Vt(new class extends e{constructor(){super({id:"lineBreakInsert",precondition:$.writable,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(t,i,n){t.pushUndoStop(),t.executeCommands(this.id,w9.lineBreakInsert(i.cursorConfig,i.model,i.getCursorStates().map(o=>o.modelState.selection)))}}),s.Outdent=Vt(new class extends e{constructor(){super({id:"outdent",precondition:$.writable,kbOpts:{weight:zn,kbExpr:Ge.and($.editorTextFocus,$.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(t,i,n){t.pushUndoStop(),t.executeCommands(this.id,WU.outdent(i.cursorConfig,i.model,i.getCursorStates().map(o=>o.modelState.selection))),t.pushUndoStop()}}),s.Tab=Vt(new class extends e{constructor(){super({id:"tab",precondition:$.writable,kbOpts:{weight:zn,kbExpr:Ge.and($.editorTextFocus,$.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(t,i,n){t.pushUndoStop(),t.executeCommands(this.id,WU.tab(i.cursorConfig,i.model,i.getCursorStates().map(o=>o.modelState.selection))),t.pushUndoStop()}}),s.DeleteLeft=Vt(new class extends e{constructor(){super({id:"deleteLeft",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(t,i,n){const[o,r]=TN.deleteLeft(i.getPrevEditOperationType(),i.cursorConfig,i.model,i.getCursorStates().map(l=>l.modelState.selection),i.getCursorAutoClosedCharacters());o&&t.pushUndoStop(),t.executeCommands(this.id,r),i.setPrevEditOperationType(2)}}),s.DeleteRight=Vt(new class extends e{constructor(){super({id:"deleteRight",precondition:void 0,kbOpts:{weight:zn,kbExpr:$.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(t,i,n){const[o,r]=TN.deleteRight(i.getPrevEditOperationType(),i.cursorConfig,i.model,i.getCursorStates().map(l=>l.modelState.selection));o&&t.pushUndoStop(),t.executeCommands(this.id,r),i.setPrevEditOperationType(3)}}),s.Undo=new class extends Kq{constructor(){super(SSe)}runDOMCommand(t){t.ownerDocument.execCommand("undo")}runEditorCommand(t,i,n){if(!(!i.hasModel()||i.getOption(92)===!0))return i.getModel().undo()}},s.Redo=new class extends Kq{constructor(){super(NSe)}runDOMCommand(t){t.ownerDocument.execCommand("redo")}runEditorCommand(t,i,n){if(!(!i.hasModel()||i.getOption(92)===!0))return i.getModel().redo()}}})(O1||(O1={}));class ype extends J3{constructor(e,t,i){super({id:e,precondition:void 0,metadata:i}),this._handlerId=t}runCommand(e,t){const i=e.get(kn).getFocusedCodeEditor();i&&i.trigger("keyboard",this._handlerId,t)}}function oR(s,e){Wpe(new ype("default:"+s,s)),Wpe(new ype(s,s,e))}oR("type",{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]});oR("replacePreviousChar");oR("compositionType");oR("compositionStart");oR("compositionEnd");oR("paste");oR("cut");class jat{constructor(e,t,i,n){this.configuration=e,this.viewModel=t,this.userInputEvents=i,this.commandDelegate=n}paste(e,t,i,n){this.commandDelegate.paste(e,t,i,n)}type(e){this.commandDelegate.type(e)}compositionType(e,t,i,n){this.commandDelegate.compositionType(e,t,i,n)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(e){xr.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:e})}_validateViewColumn(e){const t=this.viewModel.getLineMinColumn(e.lineNumber);return e.column<t?new ge(e.lineNumber,t):e}_hasMulticursorModifier(e){switch(this.configuration.options.get(78)){case"altKey":return e.altKey;case"ctrlKey":return e.ctrlKey;case"metaKey":return e.metaKey;default:return!1}}_hasNonMulticursorModifier(e){switch(this.configuration.options.get(78)){case"altKey":return e.ctrlKey||e.metaKey;case"ctrlKey":return e.altKey||e.metaKey;case"metaKey":return e.ctrlKey||e.altKey;default:return!1}}dispatchMouse(e){const t=this.configuration.options,i=_a&&t.get(108),n=t.get(22);e.middleButton&&!i?this._columnSelect(e.position,e.mouseColumn,e.inSelectionMode):e.startedOnLineNumbers?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelect(e.position,e.revealType):this._createCursor(e.position,!0):e.inSelectionMode?this._lineSelectDrag(e.position,e.revealType):this._lineSelect(e.position,e.revealType):e.mouseDownCount>=4?this._selectAll():e.mouseDownCount===3?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelectDrag(e.position,e.revealType):this._lastCursorLineSelect(e.position,e.revealType):e.inSelectionMode?this._lineSelectDrag(e.position,e.revealType):this._lineSelect(e.position,e.revealType):e.mouseDownCount===2?e.onInjectedText||(this._hasMulticursorModifier(e)?this._lastCursorWordSelect(e.position,e.revealType):e.inSelectionMode?this._wordSelectDrag(e.position,e.revealType):this._wordSelect(e.position,e.revealType)):this._hasMulticursorModifier(e)?this._hasNonMulticursorModifier(e)||(e.shiftKey?this._columnSelect(e.position,e.mouseColumn,!0):e.inSelectionMode?this._lastCursorMoveToSelect(e.position,e.revealType):this._createCursor(e.position,!1)):e.inSelectionMode?e.altKey?this._columnSelect(e.position,e.mouseColumn,!0):n?this._columnSelect(e.position,e.mouseColumn,!0):this._moveToSelect(e.position,e.revealType):this.moveTo(e.position,e.revealType)}_usualArgs(e,t){return e=this._validateViewColumn(e),{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,revealType:t}}moveTo(e,t){xr.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_moveToSelect(e,t){xr.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_columnSelect(e,t,i){e=this._validateViewColumn(e),xr.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,mouseColumn:t,doColumnSelect:i})}_createCursor(e,t){e=this._validateViewColumn(e),xr.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,wholeLine:t})}_lastCursorMoveToSelect(e,t){xr.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelect(e,t){xr.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelectDrag(e,t){xr.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorWordSelect(e,t){xr.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelect(e,t){xr.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelectDrag(e,t){xr.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelect(e,t){xr.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelectDrag(e,t){xr.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_selectAll(){xr.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}_convertViewToModelPosition(e){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)}emitKeyDown(e){this.userInputEvents.emitKeyDown(e)}emitKeyUp(e){this.userInputEvents.emitKeyUp(e)}emitContextMenu(e){this.userInputEvents.emitContextMenu(e)}emitMouseMove(e){this.userInputEvents.emitMouseMove(e)}emitMouseLeave(e){this.userInputEvents.emitMouseLeave(e)}emitMouseUp(e){this.userInputEvents.emitMouseUp(e)}emitMouseDown(e){this.userInputEvents.emitMouseDown(e)}emitMouseDrag(e){this.userInputEvents.emitMouseDrag(e)}emitMouseDrop(e){this.userInputEvents.emitMouseDrop(e)}emitMouseDropCanceled(){this.userInputEvents.emitMouseDropCanceled()}emitMouseWheel(e){this.userInputEvents.emitMouseWheel(e)}}class oWe{constructor(e){this._lineFactory=e,this._set(1,[])}flush(){this._set(1,[])}_set(e,t){this._lines=t,this._rendLineNumberStart=e}_get(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}getStartLineNumber(){return this._rendLineNumberStart}getEndLineNumber(){return this._rendLineNumberStart+this._lines.length-1}getCount(){return this._lines.length}getLine(e){const t=e-this._rendLineNumberStart;if(t<0||t>=this._lines.length)throw new _n("Illegal value for lineNumber");return this._lines[t]}onLinesDeleted(e,t){if(this.getCount()===0)return null;const i=this.getStartLineNumber(),n=this.getEndLineNumber();if(t<i){const a=t-e+1;return this._rendLineNumberStart-=a,null}if(e>n)return null;let o=0,r=0;for(let a=i;a<=n;a++){const d=a-this._rendLineNumberStart;e<=a&&a<=t&&(r===0?(o=d,r=1):r++)}if(e<i){let a=0;t<i?a=t-e+1:a=i-e,this._rendLineNumberStart-=a}return this._lines.splice(o,r)}onLinesChanged(e,t){const i=e+t-1;if(this.getCount()===0)return!1;const n=this.getStartLineNumber(),o=this.getEndLineNumber();let r=!1;for(let l=e;l<=i;l++)l>=n&&l<=o&&(this._lines[l-this._rendLineNumberStart].onContentChanged(),r=!0);return r}onLinesInserted(e,t){if(this.getCount()===0)return null;const i=t-e+1,n=this.getStartLineNumber(),o=this.getEndLineNumber();if(e<=n)return this._rendLineNumberStart+=i,null;if(e>o)return null;if(i+e>o)return this._lines.splice(e-this._rendLineNumberStart,o-e+1);const r=[];for(let h=0;h<i;h++)r[h]=this._lineFactory.createLine();const l=e-this._rendLineNumberStart,a=this._lines.slice(0,l),d=this._lines.slice(l,this._lines.length-i),c=this._lines.slice(this._lines.length-i,this._lines.length);return this._lines=a.concat(r).concat(d),c}onTokensChanged(e){if(this.getCount()===0)return!1;const t=this.getStartLineNumber(),i=this.getEndLineNumber();let n=!1;for(let o=0,r=e.length;o<r;o++){const l=e[o];if(l.toLineNumber<t||l.fromLineNumber>i)continue;const a=Math.max(t,l.fromLineNumber),d=Math.min(i,l.toLineNumber);for(let c=a;c<=d;c++){const h=c-this._rendLineNumberStart;this._lines[h].onTokensChanged(),n=!0}}return n}}class rWe{constructor(e){this._lineFactory=e,this.domNode=this._createDomNode(),this._linesCollection=new oWe(this._lineFactory)}_createDomNode(){const e=Kn(document.createElement("div"));return e.setClassName("view-layer"),e.setPosition("absolute"),e.domNode.setAttribute("role","presentation"),e.domNode.setAttribute("aria-hidden","true"),e}onConfigurationChanged(e){return!!e.hasChanged(146)}onFlushed(e){return this._linesCollection.flush(),!0}onLinesChanged(e){return this._linesCollection.onLinesChanged(e.fromLineNumber,e.count)}onLinesDeleted(e){const t=this._linesCollection.onLinesDeleted(e.fromLineNumber,e.toLineNumber);if(t)for(let i=0,n=t.length;i<n;i++){const o=t[i].getDomNode();o==null||o.remove()}return!0}onLinesInserted(e){const t=this._linesCollection.onLinesInserted(e.fromLineNumber,e.toLineNumber);if(t)for(let i=0,n=t.length;i<n;i++){const o=t[i].getDomNode();o==null||o.remove()}return!0}onScrollChanged(e){return e.scrollTopChanged}onTokensChanged(e){return this._linesCollection.onTokensChanged(e.ranges)}onZonesChanged(e){return!0}getStartLineNumber(){return this._linesCollection.getStartLineNumber()}getEndLineNumber(){return this._linesCollection.getEndLineNumber()}getVisibleLine(e){return this._linesCollection.getLine(e)}renderLines(e){const t=this._linesCollection._get(),i=new qq(this.domNode.domNode,this._lineFactory,e),n={rendLineNumberStart:t.rendLineNumberStart,lines:t.lines,linesLength:t.lines.length},o=i.render(n,e.startLineNumber,e.endLineNumber,e.relativeVerticalOffset);this._linesCollection._set(o.rendLineNumberStart,o.lines)}}const q0=class q0{constructor(e,t,i){this._domNode=e,this._lineFactory=t,this._viewportData=i}render(e,t,i,n){const o={rendLineNumberStart:e.rendLineNumberStart,lines:e.lines.slice(0),linesLength:e.linesLength};if(o.rendLineNumberStart+o.linesLength-1<t||i<o.rendLineNumberStart){o.rendLineNumberStart=t,o.linesLength=i-t+1,o.lines=[];for(let r=t;r<=i;r++)o.lines[r-t]=this._lineFactory.createLine();return this._finishRendering(o,!0,n),o}if(this._renderUntouchedLines(o,Math.max(t-o.rendLineNumberStart,0),Math.min(i-o.rendLineNumberStart,o.linesLength-1),n,t),o.rendLineNumberStart>t){const r=t,l=Math.min(i,o.rendLineNumberStart-1);r<=l&&(this._insertLinesBefore(o,r,l,n,t),o.linesLength+=l-r+1)}else if(o.rendLineNumberStart<t){const r=Math.min(o.linesLength,t-o.rendLineNumberStart);r>0&&(this._removeLinesBefore(o,r),o.linesLength-=r)}if(o.rendLineNumberStart=t,o.rendLineNumberStart+o.linesLength-1<i){const r=o.rendLineNumberStart+o.linesLength,l=i;r<=l&&(this._insertLinesAfter(o,r,l,n,t),o.linesLength+=l-r+1)}else if(o.rendLineNumberStart+o.linesLength-1>i){const r=Math.max(0,i-o.rendLineNumberStart+1),a=o.linesLength-1-r+1;a>0&&(this._removeLinesAfter(o,a),o.linesLength-=a)}return this._finishRendering(o,!1,n),o}_renderUntouchedLines(e,t,i,n,o){const r=e.rendLineNumberStart,l=e.lines;for(let a=t;a<=i;a++){const d=r+a;l[a].layoutLine(d,n[d-o],this._viewportData.lineHeight)}}_insertLinesBefore(e,t,i,n,o){const r=[];let l=0;for(let a=t;a<=i;a++)r[l++]=this._lineFactory.createLine();e.lines=r.concat(e.lines)}_removeLinesBefore(e,t){for(let i=0;i<t;i++){const n=e.lines[i].getDomNode();n==null||n.remove()}e.lines.splice(0,t)}_insertLinesAfter(e,t,i,n,o){const r=[];let l=0;for(let a=t;a<=i;a++)r[l++]=this._lineFactory.createLine();e.lines=e.lines.concat(r)}_removeLinesAfter(e,t){const i=e.linesLength-t;for(let n=0;n<t;n++){const o=e.lines[i+n].getDomNode();o==null||o.remove()}e.lines.splice(i,t)}_finishRenderingNewLines(e,t,i,n){q0._ttPolicy&&(i=q0._ttPolicy.createHTML(i));const o=this._domNode.lastChild;t||!o?this._domNode.innerHTML=i:o.insertAdjacentHTML("afterend",i);let r=this._domNode.lastChild;for(let l=e.linesLength-1;l>=0;l--){const a=e.lines[l];n[l]&&(a.setDomNode(r),r=r.previousSibling)}}_finishRenderingInvalidLines(e,t,i){const n=document.createElement("div");q0._ttPolicy&&(t=q0._ttPolicy.createHTML(t)),n.innerHTML=t;for(let o=0;o<e.linesLength;o++){const r=e.lines[o];if(i[o]){const l=n.firstChild,a=r.getDomNode();a.parentNode.replaceChild(l,a),r.setDomNode(l)}}}_finishRendering(e,t,i){const n=q0._sb,o=e.linesLength,r=e.lines,l=e.rendLineNumberStart,a=[];{n.reset();let d=!1;for(let c=0;c<o;c++){const h=r[c];a[c]=!1,!(h.getDomNode()||!h.renderLine(c+l,i[c],this._viewportData.lineHeight,this._viewportData,n))&&(a[c]=!0,d=!0)}d&&this._finishRenderingNewLines(e,t,n.build(),a)}{n.reset();let d=!1;const c=[];for(let h=0;h<o;h++){const u=r[h];c[h]=!1,!(a[h]||!u.renderLine(h+l,i[h],this._viewportData.lineHeight,this._viewportData,n))&&(c[h]=!0,d=!0)}d&&this._finishRenderingInvalidLines(e,n.build(),c)}}};q0._ttPolicy=lb("editorViewLayer",{createHTML:e=>e}),q0._sb=new gM(1e5);let qq=q0;class lWe extends Zc{constructor(e){super(e),this._dynamicOverlays=[],this._isFocused=!1,this._visibleLines=new rWe({createLine:()=>new Pat(this._dynamicOverlays)}),this.domNode=this._visibleLines.domNode;const i=this._context.configuration.options.get(50);hl(this.domNode,i),this.domNode.setClassName("view-overlays")}shouldRender(){if(super.shouldRender())return!0;for(let e=0,t=this._dynamicOverlays.length;e<t;e++)if(this._dynamicOverlays[e].shouldRender())return!0;return!1}dispose(){super.dispose();for(let e=0,t=this._dynamicOverlays.length;e<t;e++)this._dynamicOverlays[e].dispose();this._dynamicOverlays=[]}getDomNode(){return this.domNode}addDynamicOverlay(e){this._dynamicOverlays.push(e)}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e);const i=this._context.configuration.options.get(50);return hl(this.domNode,i),!0}onFlushed(e){return this._visibleLines.onFlushed(e)}onFocusChanged(e){return this._isFocused=e.isFocused,!0}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onScrollChanged(e){return this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._visibleLines.onZonesChanged(e)}prepareRender(e){const t=this._dynamicOverlays.filter(i=>i.shouldRender());for(let i=0,n=t.length;i<n;i++){const o=t[i];o.prepareRender(e),o.onDidRender()}}render(e){this._viewOverlaysRender(e),this.domNode.toggleClassName("focused",this._isFocused)}_viewOverlaysRender(e){this._visibleLines.renderLines(e.viewportData)}}class Pat{constructor(e){this._dynamicOverlays=e,this._domNode=null,this._renderedContent=null}getDomNode(){return this._domNode?this._domNode.domNode:null}setDomNode(e){this._domNode=Kn(e)}onContentChanged(){}onTokensChanged(){}renderLine(e,t,i,n,o){let r="";for(let l=0,a=this._dynamicOverlays.length;l<a;l++){const d=this._dynamicOverlays[l];r+=d.render(n.startLineNumber,e)}return this._renderedContent===r?!1:(this._renderedContent=r,o.appendString('<div style="top:'),o.appendString(String(t)),o.appendString("px;height:"),o.appendString(String(i)),o.appendString('px;">'),o.appendString(r),o.appendString("</div>"),!0)}layoutLine(e,t,i){this._domNode&&(this._domNode.setTop(t),this._domNode.setHeight(i))}}class Hat extends lWe{constructor(e){super(e);const i=this._context.configuration.options.get(146);this._contentWidth=i.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(e){const i=this._context.configuration.options.get(146);return this._contentWidth=i.contentWidth,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollWidthChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e),this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth))}}class Kat extends lWe{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(146);this._contentLeft=i.contentLeft,this.domNode.setClassName("margin-view-overlays"),this.domNode.setWidth(1),hl(this.domNode,t.get(50))}onConfigurationChanged(e){const t=this._context.configuration.options;hl(this.domNode,t.get(50));const i=t.get(146);return this._contentLeft=i.contentLeft,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollHeightChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e);const t=Math.min(e.scrollHeight,1e6);this.domNode.setHeight(t),this.domNode.setWidth(this._contentLeft)}}class C9{constructor(e){this.onKeyDown=null,this.onKeyUp=null,this.onContextMenu=null,this.onMouseMove=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseDrag=null,this.onMouseDrop=null,this.onMouseDropCanceled=null,this.onMouseWheel=null,this._coordinatesConverter=e}emitKeyDown(e){var t;(t=this.onKeyDown)==null||t.call(this,e)}emitKeyUp(e){var t;(t=this.onKeyUp)==null||t.call(this,e)}emitContextMenu(e){var t;(t=this.onContextMenu)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseMove(e){var t;(t=this.onMouseMove)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseLeave(e){var t;(t=this.onMouseLeave)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDown(e){var t;(t=this.onMouseDown)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseUp(e){var t;(t=this.onMouseUp)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrag(e){var t;(t=this.onMouseDrag)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrop(e){var t;(t=this.onMouseDrop)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDropCanceled(){var e;(e=this.onMouseDropCanceled)==null||e.call(this)}emitMouseWheel(e){var t;(t=this.onMouseWheel)==null||t.call(this,e)}_convertViewToModelMouseEvent(e){return e.target?{event:e.event,target:this._convertViewToModelMouseTarget(e.target)}:e}_convertViewToModelMouseTarget(e){return C9.convertViewToModelMouseTarget(e,this._coordinatesConverter)}static convertViewToModelMouseTarget(e,t){const i={...e};return i.position&&(i.position=t.convertViewPositionToModelPosition(i.position)),i.range&&(i.range=t.convertViewRangeToModelRange(i.range)),(i.type===5||i.type===8)&&(i.detail=this.convertViewToModelViewZoneData(i.detail,t)),i}static convertViewToModelViewZoneData(e,t){return{viewZoneId:e.viewZoneId,positionBefore:e.positionBefore?t.convertViewPositionToModelPosition(e.positionBefore):e.positionBefore,positionAfter:e.positionAfter?t.convertViewPositionToModelPosition(e.positionAfter):e.positionAfter,position:t.convertViewPositionToModelPosition(e.position),afterLineNumber:t.convertViewPositionToModelPosition(new ge(e.afterLineNumber,1)).lineNumber}}}class qat extends Zc{constructor(e){super(e),this.blocks=[],this.contentWidth=-1,this.contentLeft=0,this.domNode=Kn(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("blockDecorations-container"),this.update()}update(){let e=!1;const i=this._context.configuration.options.get(146),n=i.contentWidth-i.verticalScrollbarWidth;this.contentWidth!==n&&(this.contentWidth=n,e=!0);const o=i.contentLeft;return this.contentLeft!==o&&(this.contentLeft=o,e=!0),e}dispose(){super.dispose()}onConfigurationChanged(e){return this.update()}onScrollChanged(e){return e.scrollTopChanged||e.scrollLeftChanged}onDecorationsChanged(e){return!0}onZonesChanged(e){return!0}prepareRender(e){}render(e){let t=0;const i=e.getDecorationsInViewport();for(const n of i){if(!n.options.blockClassName)continue;let o=this.blocks[t];o||(o=this.blocks[t]=Kn(document.createElement("div")),this.domNode.appendChild(o));let r,l;n.options.blockIsAfterEnd?(r=e.getVerticalOffsetAfterLineNumber(n.range.endLineNumber,!1),l=e.getVerticalOffsetAfterLineNumber(n.range.endLineNumber,!0)):(r=e.getVerticalOffsetForLineNumber(n.range.startLineNumber,!0),l=n.range.isEmpty()&&!n.options.blockDoesNotCollapse?e.getVerticalOffsetForLineNumber(n.range.startLineNumber,!1):e.getVerticalOffsetAfterLineNumber(n.range.endLineNumber,!0));const[a,d,c,h]=n.options.blockPadding??[0,0,0,0];o.setClassName("blockDecorations-block "+n.options.blockClassName),o.setLeft(this.contentLeft-h),o.setWidth(this.contentWidth+h+d),o.setTop(r-e.scrollTop-a),o.setHeight(l-r+a+c),t++}for(let n=t;n<this.blocks.length;n++)this.blocks[n].domNode.remove();this.blocks.length=t}}class $at extends Zc{constructor(e,t){super(e),this._viewDomNode=t,this._widgets={},this.domNode=Kn(document.createElement("div")),up.write(this.domNode,1),this.domNode.setClassName("contentWidgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this.overflowingContentWidgetsDomNode=Kn(document.createElement("div")),up.write(this.overflowingContentWidgetsDomNode,2),this.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets")}dispose(){super.dispose(),this._widgets={}}onConfigurationChanged(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onConfigurationChanged(e);return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLineMappingChanged(e){return this._updateAnchorsViewPositions(),!0}onLinesChanged(e){return this._updateAnchorsViewPositions(),!0}onLinesDeleted(e){return this._updateAnchorsViewPositions(),!0}onLinesInserted(e){return this._updateAnchorsViewPositions(),!0}onScrollChanged(e){return!0}onZonesChanged(e){return!0}_updateAnchorsViewPositions(){const e=Object.keys(this._widgets);for(const t of e)this._widgets[t].updateAnchorViewPosition()}addWidget(e){const t=new edt(this._context,this._viewDomNode,e);this._widgets[t.id]=t,t.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(t.domNode):this.domNode.appendChild(t.domNode),this.setShouldRender()}setWidgetPosition(e,t,i,n,o){this._widgets[e.getId()].setPosition(t,i,n,o),this.setShouldRender()}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const i=this._widgets[t];delete this._widgets[t];const n=i.domNode.domNode;n.remove(),n.removeAttribute("monaco-visible-content-widget"),this.setShouldRender()}}shouldSuppressMouseDownOnWidget(e){return this._widgets.hasOwnProperty(e)?this._widgets[e].suppressMouseDown:!1}onBeforeRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onBeforeRender(e)}prepareRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].prepareRender(e)}render(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].render(e)}}class edt{constructor(e,t,i){this._primaryAnchor=new Ww(null,null),this._secondaryAnchor=new Ww(null,null),this._context=e,this._viewDomNode=t,this._actual=i,this.domNode=Kn(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;const n=this._context.configuration.options,o=n.get(146);this._fixedOverflowWidgets=n.get(42),this._contentWidth=o.contentWidth,this._contentLeft=o.contentLeft,this._lineHeight=n.get(67),this._affinity=null,this._preference=[],this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?"fixed":"absolute"),this.domNode.setDisplay("none"),this.domNode.setVisibility("hidden"),this.domNode.setAttribute("widgetId",this.id),this.domNode.setMaxWidth(this._maxWidth)}onConfigurationChanged(e){const t=this._context.configuration.options;if(this._lineHeight=t.get(67),e.hasChanged(146)){const i=t.get(146);this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._maxWidth=this._getMaxWidth()}}updateAnchorViewPosition(){this._setPosition(this._affinity,this._primaryAnchor.modelPosition,this._secondaryAnchor.modelPosition)}_setPosition(e,t,i){this._affinity=e,this._primaryAnchor=n(t,this._context.viewModel,this._affinity),this._secondaryAnchor=n(i,this._context.viewModel,this._affinity);function n(o,r,l){if(!o)return new Ww(null,null);const a=r.model.validatePosition(o);if(r.coordinatesConverter.modelPositionIsVisible(a)){const d=r.coordinatesConverter.convertModelPositionToViewPosition(a,l??void 0);return new Ww(o,d)}return new Ww(o,null)}}_getMaxWidth(){const e=this.domNode.domNode.ownerDocument,t=e.defaultView;return this.allowEditorOverflow?(t==null?void 0:t.innerWidth)||e.documentElement.offsetWidth||e.body.offsetWidth:this._contentWidth}setPosition(e,t,i,n){this._setPosition(n,e,t),this._preference=i,this._primaryAnchor.viewPosition&&this._preference&&this._preference.length>0?this.domNode.setDisplay("block"):this.domNode.setDisplay("none"),this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1}_layoutBoxInViewport(e,t,i,n){const o=e.top,r=o,l=e.top+e.height,a=n.viewportHeight-l,d=o-i,c=r>=i,h=l,u=a>=i;let m=e.left;return m+t>n.scrollLeft+n.viewportWidth&&(m=n.scrollLeft+n.viewportWidth-t),m<n.scrollLeft&&(m=n.scrollLeft),{fitsAbove:c,aboveTop:d,fitsBelow:u,belowTop:h,left:m}}_layoutHorizontalSegmentInPage(e,t,i,n){const l=Math.max(15,t.left-n),a=Math.min(t.left+t.width+n,e.width-15),c=this._viewDomNode.domNode.ownerDocument.defaultView;let h=t.left+i-((c==null?void 0:c.scrollX)??0);if(h+n>a){const u=h-(a-n);h-=u,i-=u}if(h<l){const u=h-l;h-=u,i-=u}return[i,h]}_layoutBoxInPage(e,t,i,n){const o=e.top-i,r=e.top+e.height,l=Lo(this._viewDomNode.domNode),a=this._viewDomNode.domNode.ownerDocument,d=a.defaultView,c=l.top+o-((d==null?void 0:d.scrollY)??0),h=l.top+r-((d==null?void 0:d.scrollY)??0),u=Hf(a.body),[m,p]=this._layoutHorizontalSegmentInPage(u,l,e.left-n.scrollLeft+this._contentLeft,t),g=22,f=22,b=c>=g,U=h+i<=u.height-f;return this._fixedOverflowWidgets?{fitsAbove:b,aboveTop:Math.max(c,g),fitsBelow:U,belowTop:h,left:p}:{fitsAbove:b,aboveTop:o,fitsBelow:U,belowTop:r,left:m}}_prepareRenderWidgetAtExactPositionOverflowing(e){return new yw(e.top,e.left+this._contentLeft)}_getAnchorsCoordinates(e){var r,l;const t=o(this._primaryAnchor.viewPosition,this._affinity,this._lineHeight),i=((r=this._secondaryAnchor.viewPosition)==null?void 0:r.lineNumber)===((l=this._primaryAnchor.viewPosition)==null?void 0:l.lineNumber)?this._secondaryAnchor.viewPosition:null,n=o(i,this._affinity,this._lineHeight);return{primary:t,secondary:n};function o(a,d,c){if(!a)return null;const h=e.visibleRangeForPosition(a);if(!h)return null;const u=a.column===1&&d===3?0:h.left,m=e.getVerticalOffsetForLineNumber(a.lineNumber)-e.scrollTop;return new Qpe(m,u,c)}}_reduceAnchorCoordinates(e,t,i){if(!t)return e;const n=this._context.configuration.options.get(50);let o=t.left;return o<e.left?o=Math.max(o,e.left-i+n.typicalFullwidthCharacterWidth):o=Math.min(o,e.left+i-n.typicalFullwidthCharacterWidth),new Qpe(e.top,o,e.height)}_prepareRenderWidget(e){if(!this._preference||this._preference.length===0)return null;const{primary:t,secondary:i}=this._getAnchorsCoordinates(e);if(!t)return{kind:"offViewport",preserveFocus:this.domNode.domNode.contains(this.domNode.domNode.ownerDocument.activeElement)};if(this._cachedDomNodeOffsetWidth===-1||this._cachedDomNodeOffsetHeight===-1){let r=null;if(typeof this._actual.beforeRender=="function"&&(r=OP(this._actual.beforeRender,this._actual)),r)this._cachedDomNodeOffsetWidth=r.width,this._cachedDomNodeOffsetHeight=r.height;else{const a=this.domNode.domNode.getBoundingClientRect();this._cachedDomNodeOffsetWidth=Math.round(a.width),this._cachedDomNodeOffsetHeight=Math.round(a.height)}}const n=this._reduceAnchorCoordinates(t,i,this._cachedDomNodeOffsetWidth);let o;this.allowEditorOverflow?o=this._layoutBoxInPage(n,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,e):o=this._layoutBoxInViewport(n,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,e);for(let r=1;r<=2;r++)for(const l of this._preference)if(l===1){if(!o)return null;if(r===2||o.fitsAbove)return{kind:"inViewport",coordinate:new yw(o.aboveTop,o.left),position:1}}else if(l===2){if(!o)return null;if(r===2||o.fitsBelow)return{kind:"inViewport",coordinate:new yw(o.belowTop,o.left),position:2}}else return this.allowEditorOverflow?{kind:"inViewport",coordinate:this._prepareRenderWidgetAtExactPositionOverflowing(new yw(n.top,n.left)),position:0}:{kind:"inViewport",coordinate:new yw(n.top,n.left),position:0};return null}onBeforeRender(e){!this._primaryAnchor.viewPosition||!this._preference||this._primaryAnchor.viewPosition.lineNumber<e.startLineNumber||this._primaryAnchor.viewPosition.lineNumber>e.endLineNumber||this.domNode.setMaxWidth(this._maxWidth)}prepareRender(e){this._renderData=this._prepareRenderWidget(e)}render(e){var t;if(!this._renderData||this._renderData.kind==="offViewport"){this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,((t=this._renderData)==null?void 0:t.kind)==="offViewport"&&this._renderData.preserveFocus?this.domNode.setTop(-1e3):this.domNode.setVisibility("hidden")),typeof this._actual.afterRender=="function"&&OP(this._actual.afterRender,this._actual,null);return}this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+e.scrollTop-e.bigNumbersDelta),this.domNode.setLeft(this._renderData.coordinate.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0),typeof this._actual.afterRender=="function"&&OP(this._actual.afterRender,this._actual,this._renderData.position)}}class Ww{constructor(e,t){this.modelPosition=e,this.viewPosition=t}}class yw{constructor(e,t){this.top=e,this.left=t,this._coordinateBrand=void 0}}class Qpe{constructor(e,t,i){this.top=e,this.left=t,this.height=i,this._anchorCoordinateBrand=void 0}}function OP(s,e,...t){try{return s.call(e,...t)}catch{return null}}class aWe extends sR{constructor(e){super(),this._context=e;const t=this._context.configuration.options,i=t.get(146);this._renderLineHighlight=t.get(97),this._renderLineHighlightOnlyWhenFocus=t.get(98),this._wordWrap=i.isViewportWrapping,this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._selectionIsEmpty=!0,this._focused=!1,this._cursorLineNumbers=[1],this._selections=[new _t(1,1,1,1)],this._renderData=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}_readFromSelections(){let e=!1;const t=new Set;for(const o of this._selections)t.add(o.positionLineNumber);const i=Array.from(t);i.sort((o,r)=>o-r),lo(this._cursorLineNumbers,i)||(this._cursorLineNumbers=i,e=!0);const n=this._selections.every(o=>o.isEmpty());return this._selectionIsEmpty!==n&&(this._selectionIsEmpty=n,e=!0),e}onThemeChanged(e){return this._readFromSelections()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._renderLineHighlight=t.get(97),this._renderLineHighlightOnlyWhenFocus=t.get(98),this._wordWrap=i.isViewportWrapping,this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,!0}onCursorStateChanged(e){return this._selections=e.selections,this._readFromSelections()}onFlushed(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollWidthChanged||e.scrollTopChanged}onZonesChanged(e){return!0}onFocusChanged(e){return this._renderLineHighlightOnlyWhenFocus?(this._focused=e.isFocused,!0):!1}prepareRender(e){if(!this._shouldRenderThis()){this._renderData=null;return}const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=[];for(let r=t;r<=i;r++){const l=r-t;n[l]=""}if(this._wordWrap){const r=this._renderOne(e,!1);for(const l of this._cursorLineNumbers){const a=this._context.viewModel.coordinatesConverter,d=a.convertViewPositionToModelPosition(new ge(l,1)).lineNumber,c=a.convertModelPositionToViewPosition(new ge(d,1)).lineNumber,h=a.convertModelPositionToViewPosition(new ge(d,this._context.viewModel.model.getLineMaxColumn(d))).lineNumber,u=Math.max(c,t),m=Math.min(h,i);for(let p=u;p<=m;p++){const g=p-t;n[g]=r}}}const o=this._renderOne(e,!0);for(const r of this._cursorLineNumbers){if(r<t||r>i)continue;const l=r-t;n[l]=o}this._renderData=n}render(e,t){if(!this._renderData)return"";const i=t-e;return i>=this._renderData.length?"":this._renderData[i]}_shouldRenderInMargin(){return(this._renderLineHighlight==="gutter"||this._renderLineHighlight==="all")&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}_shouldRenderInContent(){return(this._renderLineHighlight==="line"||this._renderLineHighlight==="all")&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}class tdt extends aWe{_renderOne(e,t){return`<div class="${"current-line"+(this._shouldRenderInMargin()?" current-line-both":"")+(t?" current-line-exact":"")}" style="width:${Math.max(e.scrollWidth,this._contentWidth)}px;"></div>`}_shouldRenderThis(){return this._shouldRenderInContent()}_shouldRenderOther(){return this._shouldRenderInMargin()}}class idt extends aWe{_renderOne(e,t){return`<div class="${"current-line"+(this._shouldRenderInMargin()?" current-line-margin":"")+(this._shouldRenderOther()?" current-line-margin-both":"")+(this._shouldRenderInMargin()&&t?" current-line-exact-margin":"")}" style="width:${this._contentLeft}px"></div>`}_shouldRenderThis(){return!0}_shouldRenderOther(){return this._shouldRenderInContent()}}eu((s,e)=>{const t=s.getColor(ARe);if(t&&(e.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${t}; }`),e.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${t}; border: none; }`)),!t||t.isTransparent()||s.defines(gme)){const i=s.getColor(gme);i&&(e.addRule(`.monaco-editor .view-overlays .current-line-exact { border: 2px solid ${i}; }`),e.addRule(`.monaco-editor .margin-view-overlays .current-line-exact-margin { border: 2px solid ${i}; }`),np(s.type)&&(e.addRule(".monaco-editor .view-overlays .current-line-exact { border-width: 1px; }"),e.addRule(".monaco-editor .margin-view-overlays .current-line-exact-margin { border-width: 1px; }")))}});class ndt extends sR{constructor(e){super(),this._context=e;const t=this._context.configuration.options;this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}prepareRender(e){const t=e.getDecorationsInViewport();let i=[],n=0;for(let a=0,d=t.length;a<d;a++){const c=t[a];c.options.className&&(i[n++]=c)}i=i.sort((a,d)=>{if(a.options.zIndex<d.options.zIndex)return-1;if(a.options.zIndex>d.options.zIndex)return 1;const c=a.options.className,h=d.options.className;return c<h?-1:c>h?1:z.compareRangesUsingStarts(a.range,d.range)});const o=e.visibleRange.startLineNumber,r=e.visibleRange.endLineNumber,l=[];for(let a=o;a<=r;a++){const d=a-o;l[d]=""}this._renderWholeLineDecorations(e,i,l),this._renderNormalDecorations(e,i,l),this._renderResult=l}_renderWholeLineDecorations(e,t,i){const n=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber;for(let r=0,l=t.length;r<l;r++){const a=t[r];if(!a.options.isWholeLine)continue;const d='<div class="cdr '+a.options.className+'" style="left:0;width:100%;"></div>',c=Math.max(a.range.startLineNumber,n),h=Math.min(a.range.endLineNumber,o);for(let u=c;u<=h;u++){const m=u-n;i[m]+=d}}}_renderNormalDecorations(e,t,i){const n=e.visibleRange.startLineNumber;let o=null,r=!1,l=null,a=!1;for(let d=0,c=t.length;d<c;d++){const h=t[d];if(h.options.isWholeLine)continue;const u=h.options.className,m=!!h.options.showIfCollapsed;let p=h.range;if(m&&p.endColumn===1&&p.endLineNumber!==p.startLineNumber&&(p=new z(p.startLineNumber,p.startColumn,p.endLineNumber-1,this._context.viewModel.getLineMaxColumn(p.endLineNumber-1))),o===u&&r===m&&z.areIntersectingOrTouching(l,p)){l=z.plusRange(l,p);continue}o!==null&&this._renderNormalDecoration(e,l,o,a,r,n,i),o=u,r=m,l=p,a=h.options.shouldFillLineOnLineBreak??!1}o!==null&&this._renderNormalDecoration(e,l,o,a,r,n,i)}_renderNormalDecoration(e,t,i,n,o,r,l){const a=e.linesVisibleRangesForRange(t,i==="findMatch");if(a)for(let d=0,c=a.length;d<c;d++){const h=a[d];if(h.outsideRenderedLine)continue;const u=h.lineNumber-r;if(o&&h.ranges.length===1){const m=h.ranges[0];if(m.width<this._typicalHalfwidthCharacterWidth){const p=Math.round(m.left+m.width/2),g=Math.max(0,Math.round(p-this._typicalHalfwidthCharacterWidth/2));h.ranges[0]=new Q9(g,this._typicalHalfwidthCharacterWidth)}}for(let m=0,p=h.ranges.length;m<p;m++){const g=n&&h.continuesOnNextLine&&p===1,f=h.ranges[m],b='<div class="cdr '+i+'" style="left:'+String(f.left)+"px;width:"+(g?"100%;":String(f.width)+"px;")+'"></div>';l[u]+=b}}}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class sdt extends Zc{constructor(e,t,i,n){super(e);const o=this._context.configuration.options,r=o.get(104),l=o.get(75),a=o.get(40),d=o.get(107),c={listenOnDomNode:i.domNode,className:"editor-scrollable "+v8(e.theme.type),useShadows:!1,lazyRender:!0,vertical:r.vertical,horizontal:r.horizontal,verticalHasArrows:r.verticalHasArrows,horizontalHasArrows:r.horizontalHasArrows,verticalScrollbarSize:r.verticalScrollbarSize,verticalSliderSize:r.verticalSliderSize,horizontalScrollbarSize:r.horizontalScrollbarSize,horizontalSliderSize:r.horizontalSliderSize,handleMouseWheel:r.handleMouseWheel,alwaysConsumeMouseWheel:r.alwaysConsumeMouseWheel,arrowSize:r.arrowSize,mouseWheelScrollSensitivity:l,fastScrollSensitivity:a,scrollPredominantAxis:d,scrollByPage:r.scrollByPage};this.scrollbar=this._register(new i9(t.domNode,c,this._context.viewLayout.getScrollable())),up.write(this.scrollbar.getDomNode(),6),this.scrollbarDomNode=Kn(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition("absolute"),this._setLayout();const h=(u,m,p)=>{const g={};if(m){const f=u.scrollTop;f&&(g.scrollTop=this._context.viewLayout.getCurrentScrollTop()+f,u.scrollTop=0)}if(p){const f=u.scrollLeft;f&&(g.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+f,u.scrollLeft=0)}this._context.viewModel.viewLayout.setScrollPosition(g,1)};this._register(Te(i.domNode,"scroll",u=>h(i.domNode,!0,!0))),this._register(Te(t.domNode,"scroll",u=>h(t.domNode,!0,!1))),this._register(Te(n.domNode,"scroll",u=>h(n.domNode,!0,!1))),this._register(Te(this.scrollbarDomNode.domNode,"scroll",u=>h(this.scrollbarDomNode.domNode,!0,!1)))}dispose(){super.dispose()}_setLayout(){const e=this._context.configuration.options,t=e.get(146);this.scrollbarDomNode.setLeft(t.contentLeft),e.get(73).side==="right"?this.scrollbarDomNode.setWidth(t.contentWidth+t.minimap.minimapWidth):this.scrollbarDomNode.setWidth(t.contentWidth),this.scrollbarDomNode.setHeight(t.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarPointerDown(e){this.scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this.scrollbar.delegateScrollFromMouseWheelEvent(e)}onConfigurationChanged(e){if(e.hasChanged(104)||e.hasChanged(75)||e.hasChanged(40)){const t=this._context.configuration.options,i=t.get(104),n=t.get(75),o=t.get(40),r=t.get(107),l={vertical:i.vertical,horizontal:i.horizontal,verticalScrollbarSize:i.verticalScrollbarSize,horizontalScrollbarSize:i.horizontalScrollbarSize,scrollByPage:i.scrollByPage,handleMouseWheel:i.handleMouseWheel,mouseWheelScrollSensitivity:n,fastScrollSensitivity:o,scrollPredominantAxis:r};this.scrollbar.updateOptions(l)}return e.hasChanged(146)&&this._setLayout(),!0}onScrollChanged(e){return!0}onThemeChanged(e){return this.scrollbar.updateClassName("editor-scrollable "+v8(this._context.theme.type)),!0}prepareRender(e){}render(e){this.scrollbar.renderNow()}}class $q{constructor(e,t,i,n,o){this.startLineNumber=e,this.endLineNumber=t,this.className=i,this.tooltip=n,this._decorationToRenderBrand=void 0,this.zIndex=o??0}}class odt{constructor(e,t,i){this.className=e,this.zIndex=t,this.tooltip=i}}class rdt{constructor(){this.decorations=[]}add(e){this.decorations.push(e)}getDecorations(){return this.decorations}}class dWe extends sR{_render(e,t,i){const n=[];for(let l=e;l<=t;l++){const a=l-e;n[a]=new rdt}if(i.length===0)return n;i.sort((l,a)=>l.className===a.className?l.startLineNumber===a.startLineNumber?l.endLineNumber-a.endLineNumber:l.startLineNumber-a.startLineNumber:l.className<a.className?-1:1);let o=null,r=0;for(let l=0,a=i.length;l<a;l++){const d=i[l],c=d.className,h=d.zIndex;let u=Math.max(d.startLineNumber,e)-e;const m=Math.min(d.endLineNumber,t)-e;o===c?(u=Math.max(r+1,u),r=Math.max(r,m)):(o=c,r=m);for(let p=u;p<=r;p++)n[p].add(new odt(c,h,d.tooltip))}return n}}class ldt extends Zc{constructor(e){super(e),this._widgets={},this._context=e;const t=this._context.configuration.options,i=t.get(146);this.domNode=Kn(document.createElement("div")),this.domNode.setClassName("glyph-margin-widgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this._lineHeight=t.get(67),this._glyphMargin=t.get(57),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._glyphMarginDecorationLaneCount=i.glyphMarginDecorationLaneCount,this._managedDomNodes=[],this._decorationGlyphsToRender=[]}dispose(){this._managedDomNodes=[],this._decorationGlyphsToRender=[],this._widgets={},super.dispose()}getWidgets(){return Object.values(this._widgets)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._lineHeight=t.get(67),this._glyphMargin=t.get(57),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._glyphMarginDecorationLaneCount=i.glyphMarginDecorationLaneCount,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}addWidget(e){const t=Kn(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:e.getPosition(),domNode:t,renderInfo:null},t.setPosition("absolute"),t.setDisplay("none"),t.setAttribute("widgetId",e.getId()),this.domNode.appendChild(t),this.setShouldRender()}setWidgetPosition(e,t){const i=this._widgets[e.getId()];return i.preference.lane===t.lane&&i.preference.zIndex===t.zIndex&&z.equalsRange(i.preference.range,t.range)?!1:(i.preference=t,this.setShouldRender(),!0)}removeWidget(e){const t=e.getId();if(this._widgets[t]){const n=this._widgets[t].domNode.domNode;delete this._widgets[t],n.remove(),this.setShouldRender()}}_collectDecorationBasedGlyphRenderRequest(e,t){var r;const i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,o=e.getDecorationsInViewport();for(const l of o){const a=l.options.glyphMarginClassName;if(!a)continue;const d=Math.max(l.range.startLineNumber,i),c=Math.min(l.range.endLineNumber,n),h=((r=l.options.glyphMargin)==null?void 0:r.position)??em.Center,u=l.options.zIndex??0;for(let m=d;m<=c;m++){const p=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new ge(m,0)),g=this._context.viewModel.glyphLanes.getLanesAtLine(p.lineNumber).indexOf(h);t.push(new adt(m,g,u,a))}}}_collectWidgetBasedGlyphRenderRequest(e,t){const i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber;for(const o of Object.values(this._widgets)){const r=o.preference.range,{startLineNumber:l,endLineNumber:a}=this._context.viewModel.coordinatesConverter.convertModelRangeToViewRange(z.lift(r));if(!l||!a||a<i||l>n)continue;const d=Math.max(l,i),c=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new ge(d,0)),h=this._context.viewModel.glyphLanes.getLanesAtLine(c.lineNumber).indexOf(o.preference.lane);t.push(new ddt(d,h,o.preference.zIndex,o))}}_collectSortedGlyphRenderRequests(e){const t=[];return this._collectDecorationBasedGlyphRenderRequest(e,t),this._collectWidgetBasedGlyphRenderRequest(e,t),t.sort((i,n)=>i.lineNumber===n.lineNumber?i.laneIndex===n.laneIndex?i.zIndex===n.zIndex?n.type===i.type?i.type===0&&n.type===0?i.className<n.className?-1:1:0:n.type-i.type:n.zIndex-i.zIndex:i.laneIndex-n.laneIndex:i.lineNumber-n.lineNumber),t}prepareRender(e){if(!this._glyphMargin){this._decorationGlyphsToRender=[];return}for(const n of Object.values(this._widgets))n.renderInfo=null;const t=new zf(this._collectSortedGlyphRenderRequests(e)),i=[];for(;t.length>0;){const n=t.peek();if(!n)break;const o=t.takeWhile(l=>l.lineNumber===n.lineNumber&&l.laneIndex===n.laneIndex);if(!o||o.length===0)break;const r=o[0];if(r.type===0){const l=[];for(const a of o){if(a.zIndex!==r.zIndex||a.type!==r.type)break;(l.length===0||l[l.length-1]!==a.className)&&l.push(a.className)}i.push(r.accept(l.join(" ")))}else r.widget.renderInfo={lineNumber:r.lineNumber,laneIndex:r.laneIndex}}this._decorationGlyphsToRender=i}render(e){if(!this._glyphMargin){for(const i of Object.values(this._widgets))i.domNode.setDisplay("none");for(;this._managedDomNodes.length>0;){const i=this._managedDomNodes.pop();i==null||i.domNode.remove()}return}const t=Math.round(this._glyphMarginWidth/this._glyphMarginDecorationLaneCount);for(const i of Object.values(this._widgets))if(!i.renderInfo)i.domNode.setDisplay("none");else{const n=e.viewportData.relativeVerticalOffset[i.renderInfo.lineNumber-e.viewportData.startLineNumber],o=this._glyphMarginLeft+i.renderInfo.laneIndex*this._lineHeight;i.domNode.setDisplay("block"),i.domNode.setTop(n),i.domNode.setLeft(o),i.domNode.setWidth(t),i.domNode.setHeight(this._lineHeight)}for(let i=0;i<this._decorationGlyphsToRender.length;i++){const n=this._decorationGlyphsToRender[i],o=e.viewportData.relativeVerticalOffset[n.lineNumber-e.viewportData.startLineNumber],r=this._glyphMarginLeft+n.laneIndex*this._lineHeight;let l;i<this._managedDomNodes.length?l=this._managedDomNodes[i]:(l=Kn(document.createElement("div")),this._managedDomNodes.push(l),this.domNode.appendChild(l)),l.setClassName("cgmr codicon "+n.combinedClassName),l.setPosition("absolute"),l.setTop(o),l.setLeft(r),l.setWidth(t),l.setHeight(this._lineHeight)}for(;this._managedDomNodes.length>this._decorationGlyphsToRender.length;){const i=this._managedDomNodes.pop();i==null||i.domNode.remove()}}}class adt{constructor(e,t,i,n){this.lineNumber=e,this.laneIndex=t,this.zIndex=i,this.className=n,this.type=0}accept(e){return new cdt(this.lineNumber,this.laneIndex,e)}}class ddt{constructor(e,t,i,n){this.lineNumber=e,this.laneIndex=t,this.zIndex=i,this.widget=n,this.type=1}}class cdt{constructor(e,t,i){this.lineNumber=e,this.laneIndex=t,this.combinedClassName=i}}class hdt extends sR{constructor(e){super(),this._context=e,this._primaryPosition=null;const t=this._context.configuration.options,i=t.get(147),n=t.get(50);this._spaceWidth=n.spaceWidth,this._maxIndentLeft=i.wrappingColumn===-1?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(147),n=t.get(50);return this._spaceWidth=n.spaceWidth,this._maxIndentLeft=i.wrappingColumn===-1?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),!0}onCursorStateChanged(e){var n;const i=e.selections[0].getPosition();return(n=this._primaryPosition)!=null&&n.equals(i)?!1:(this._primaryPosition=i,!0)}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onLanguageConfigurationChanged(e){return!0}prepareRender(e){var a,d;if(!this._bracketPairGuideOptions.indentation&&this._bracketPairGuideOptions.bracketPairs===!1){this._renderResult=null;return}const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=e.scrollWidth,o=this._primaryPosition,r=this.getGuidesByLine(t,Math.min(i+1,this._context.viewModel.getLineCount()),o),l=[];for(let c=t;c<=i;c++){const h=c-t,u=r[h];let m="";const p=((a=e.visibleRangeForPosition(new ge(c,1)))==null?void 0:a.left)??0;for(const g of u){const f=g.column===-1?p+(g.visibleColumn-1)*this._spaceWidth:e.visibleRangeForPosition(new ge(c,g.column)).left;if(f>n||this._maxIndentLeft>0&&f>this._maxIndentLeft)break;const b=g.horizontalLine?g.horizontalLine.top?"horizontal-top":"horizontal-bottom":"vertical",U=g.horizontalLine?(((d=e.visibleRangeForPosition(new ge(c,g.horizontalLine.endColumn)))==null?void 0:d.left)??f+this._spaceWidth)-f:this._spaceWidth;m+=`<div class="core-guide ${g.className} ${b}" style="left:${f}px;width:${U}px"></div>`}l[h]=m}this._renderResult=l}getGuidesByLine(e,t,i){const n=this._bracketPairGuideOptions.bracketPairs!==!1?this._context.viewModel.getBracketGuidesInRangeByLine(e,t,i,{highlightActive:this._bracketPairGuideOptions.highlightActiveBracketPair,horizontalGuides:this._bracketPairGuideOptions.bracketPairsHorizontal===!0?JS.Enabled:this._bracketPairGuideOptions.bracketPairsHorizontal==="active"?JS.EnabledForActive:JS.Disabled,includeInactive:this._bracketPairGuideOptions.bracketPairs===!0}):null,o=this._bracketPairGuideOptions.indentation?this._context.viewModel.getLinesIndentGuides(e,t):null;let r=0,l=0,a=0;if(this._bracketPairGuideOptions.highlightActiveIndentation!==!1&&i){const h=this._context.viewModel.getActiveIndentGuide(i.lineNumber,e,t);r=h.startLineNumber,l=h.endLineNumber,a=h.indent}const{indentSize:d}=this._context.viewModel.model.getOptions(),c=[];for(let h=e;h<=t;h++){const u=new Array;c.push(u);const m=n?n[h-e]:[],p=new zf(m),g=o?o[h-e]:0;for(let f=1;f<=g;f++){const b=(f-1)*d+1,U=(this._bracketPairGuideOptions.highlightActiveIndentation==="always"||m.length===0)&&r<=h&&h<=l&&f===a;u.push(...p.takeWhile(Z=>Z.visibleColumn<b)||[]);const S=p.peek();(!S||S.visibleColumn!==b||S.horizontalLine)&&u.push(new ZS(b,-1,`core-guide-indent lvl-${(f-1)%30}`+(U?" indent-active":""),null,-1,-1))}u.push(...p.takeWhile(f=>!0)||[])}return c}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}function YR(s){if(!(s&&s.isTransparent()))return s}eu((s,e)=>{const t=[{bracketColor:RRe,guideColor:wit,guideColorActive:kit},{bracketColor:VRe,guideColor:Tit,guideColorActive:xit},{bracketColor:WRe,guideColor:Cit,guideColorActive:Iit},{bracketColor:yRe,guideColor:Bit,guideColorActive:Eit},{bracketColor:QRe,guideColor:Lit,guideColorActive:Dit},{bracketColor:MRe,guideColor:vit,guideColorActive:Git}],i=new DRe,n=[{indentColor:hk,indentColorActive:uk},{indentColor:dit,indentColorActive:pit},{indentColor:cit,indentColorActive:git},{indentColor:hit,indentColorActive:fit},{indentColor:uit,indentColorActive:bit},{indentColor:mit,indentColorActive:Uit}],o=t.map(l=>{const a=s.getColor(l.bracketColor),d=s.getColor(l.guideColor),c=s.getColor(l.guideColorActive),h=YR(YR(d)??(a==null?void 0:a.transparent(.3))),u=YR(YR(c)??a);if(!(!h||!u))return{guideColor:h,guideColorActive:u}}).filter(Lg),r=n.map(l=>{const a=s.getColor(l.indentColor),d=s.getColor(l.indentColorActive),c=YR(a),h=YR(d);if(!(!c||!h))return{indentColor:c,indentColorActive:h}}).filter(Lg);if(o.length>0){for(let l=0;l<30;l++){const a=o[l%o.length];e.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(l).replace(/ /g,".")} { --guide-color: ${a.guideColor}; --guide-color-active: ${a.guideColorActive}; }`)}e.addRule(".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }"),e.addRule(".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }"),e.addRule(".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }"),e.addRule(`.monaco-editor .vertical.${i.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`),e.addRule(`.monaco-editor .horizontal-top.${i.activeClassName} { border-top: 1px solid var(--guide-color-active); }`),e.addRule(`.monaco-editor .horizontal-bottom.${i.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`)}if(r.length>0){for(let l=0;l<30;l++){const a=r[l%r.length];e.addRule(`.monaco-editor .lines-content .core-guide-indent.lvl-${l} { --indent-color: ${a.indentColor}; --indent-color-active: ${a.indentColorActive}; }`)}e.addRule(".monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }"),e.addRule(".monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }")}});class jP{get didDomLayout(){return this._didDomLayout}readClientRect(){if(!this._clientRectRead){this._clientRectRead=!0;const e=this._domNode.getBoundingClientRect();this.markDidDomLayout(),this._clientRectDeltaLeft=e.left,this._clientRectScale=e.width/this._domNode.offsetWidth}}get clientRectDeltaLeft(){return this._clientRectRead||this.readClientRect(),this._clientRectDeltaLeft}get clientRectScale(){return this._clientRectRead||this.readClientRect(),this._clientRectScale}constructor(e,t){this._domNode=e,this.endNode=t,this._didDomLayout=!1,this._clientRectDeltaLeft=0,this._clientRectScale=1,this._clientRectRead=!1}markDidDomLayout(){this._didDomLayout=!0}}class udt{constructor(){this._currentVisibleRange=new z(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(e){this._currentVisibleRange=e}}class mdt{constructor(e,t,i,n,o,r,l){this.minimalReveal=e,this.lineNumber=t,this.startColumn=i,this.endColumn=n,this.startScrollTop=o,this.stopScrollTop=r,this.scrollType=l,this.type="range",this.minLineNumber=t,this.maxLineNumber=t}}class pdt{constructor(e,t,i,n,o){this.minimalReveal=e,this.selections=t,this.startScrollTop=i,this.stopScrollTop=n,this.scrollType=o,this.type="selections";let r=t[0].startLineNumber,l=t[0].endLineNumber;for(let a=1,d=t.length;a<d;a++){const c=t[a];r=Math.min(r,c.startLineNumber),l=Math.max(l,c.endLineNumber)}this.minLineNumber=r,this.maxLineNumber=l}}const sz=class sz extends Zc{constructor(e,t){super(e);const i=this._context.configuration,n=this._context.configuration.options,o=n.get(50),r=n.get(147);this._lineHeight=n.get(67),this._typicalHalfwidthCharacterWidth=o.typicalHalfwidthCharacterWidth,this._isViewportWrapping=r.isViewportWrapping,this._revealHorizontalRightPadding=n.get(101),this._cursorSurroundingLines=n.get(29),this._cursorSurroundingLinesStyle=n.get(30),this._canUseLayerHinting=!n.get(32),this._viewLineOptions=new Ape(i,this._context.theme.type),this._linesContent=t,this._textRangeRestingSpot=document.createElement("div"),this._visibleLines=new rWe({createLine:()=>new mf(this._viewLineOptions)}),this.domNode=this._visibleLines.domNode,up.write(this.domNode,8),this.domNode.setClassName(`view-lines ${_1}`),hl(this.domNode,o),this._maxLineWidth=0,this._asyncUpdateLineWidths=new cs(()=>{this._updateLineWidthsSlow()},200),this._asyncCheckMonospaceFontAssumptions=new cs(()=>{this._checkMonospaceFontAssumptions()},2e3),this._lastRenderedData=new udt,this._horizontalRevealRequest=null,this._stickyScrollEnabled=n.get(116).enabled,this._maxNumberStickyLines=n.get(116).maxLineCount}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e),e.hasChanged(147)&&(this._maxLineWidth=0);const t=this._context.configuration.options,i=t.get(50),n=t.get(147);return this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._isViewportWrapping=n.isViewportWrapping,this._revealHorizontalRightPadding=t.get(101),this._cursorSurroundingLines=t.get(29),this._cursorSurroundingLinesStyle=t.get(30),this._canUseLayerHinting=!t.get(32),this._stickyScrollEnabled=t.get(116).enabled,this._maxNumberStickyLines=t.get(116).maxLineCount,hl(this.domNode,i),this._onOptionsMaybeChanged(),e.hasChanged(146)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const e=this._context.configuration,t=new Ape(e,this._context.theme.type);if(!this._viewLineOptions.equals(t)){this._viewLineOptions=t;const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let o=i;o<=n;o++)this._visibleLines.getVisibleLine(o).onOptionsChanged(this._viewLineOptions);return!0}return!1}onCursorStateChanged(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=!1;for(let o=t;o<=i;o++)n=this._visibleLines.getVisibleLine(o).onSelectionChanged()||n;return n}onDecorationsChanged(e){{const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let n=t;n<=i;n++)this._visibleLines.getVisibleLine(n).onDecorationsChanged()}return!0}onFlushed(e){const t=this._visibleLines.onFlushed(e);return this._maxLineWidth=0,t}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onRevealRangeRequest(e){const t=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),e.source,e.minimalReveal,e.range,e.selections,e.verticalType);if(t===-1)return!1;let i=this._context.viewLayout.validateScrollPosition({scrollTop:t});e.revealHorizontal?e.range&&e.range.startLineNumber!==e.range.endLineNumber?i={scrollTop:i.scrollTop,scrollLeft:0}:e.range?this._horizontalRevealRequest=new mdt(e.minimalReveal,e.range.startLineNumber,e.range.startColumn,e.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType):e.selections&&e.selections.length>0&&(this._horizontalRevealRequest=new pdt(e.minimalReveal,e.selections,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType)):this._horizontalRevealRequest=null;const o=Math.abs(this._context.viewLayout.getCurrentScrollTop()-i.scrollTop)<=this._lineHeight?1:e.scrollType;return this._context.viewModel.viewLayout.setScrollPosition(i,o),!0}onScrollChanged(e){if(this._horizontalRevealRequest&&e.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&e.scrollTopChanged){const t=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),i=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(e.scrollTop<t||e.scrollTop>i)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(e.scrollWidth),this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(e)}onThemeChanged(e){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(e,t){const i=this._getViewLineDomNode(e);if(i===null)return null;const n=this._getLineNumberFor(i);if(n===-1||n<1||n>this._context.viewModel.getLineCount())return null;if(this._context.viewModel.getLineMaxColumn(n)===1)return new ge(n,1);const o=this._visibleLines.getStartLineNumber(),r=this._visibleLines.getEndLineNumber();if(n<o||n>r)return null;let l=this._visibleLines.getVisibleLine(n).getColumnOfNodeOffset(e,t);const a=this._context.viewModel.getLineMinColumn(n);return l<a&&(l=a),new ge(n,l)}_getViewLineDomNode(e){for(;e&&e.nodeType===1;){if(e.className===mf.CLASS_NAME)return e;e=e.parentElement}return null}_getLineNumberFor(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let n=t;n<=i;n++){const o=this._visibleLines.getVisibleLine(n);if(e===o.getDomNode())return n}return-1}getLineWidth(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();if(e<t||e>i)return-1;const n=new jP(this.domNode.domNode,this._textRangeRestingSpot),o=this._visibleLines.getVisibleLine(e).getWidth(n);return this._updateLineWidthsSlowIfDomDidLayout(n),o}linesVisibleRangesForRange(e,t){if(this.shouldRender())return null;const i=e.endLineNumber,n=z.intersectRanges(e,this._lastRenderedData.getCurrentVisibleRange());if(!n)return null;const o=[];let r=0;const l=new jP(this.domNode.domNode,this._textRangeRestingSpot);let a=0;t&&(a=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new ge(n.startLineNumber,1)).lineNumber);const d=this._visibleLines.getStartLineNumber(),c=this._visibleLines.getEndLineNumber();for(let h=n.startLineNumber;h<=n.endLineNumber;h++){if(h<d||h>c)continue;const u=h===n.startLineNumber?n.startColumn:1,m=h!==n.endLineNumber,p=m?this._context.viewModel.getLineMaxColumn(h):n.endColumn,g=this._visibleLines.getVisibleLine(h).getVisibleRangesForRange(h,u,p,l);if(g){if(t&&h<i){const f=a;a=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new ge(h+1,1)).lineNumber,f!==a&&(g.ranges[g.ranges.length-1].width+=this._typicalHalfwidthCharacterWidth)}o[r++]=new qlt(g.outsideRenderedLine,h,Q9.from(g.ranges),m)}}return this._updateLineWidthsSlowIfDomDidLayout(l),r===0?null:o}_visibleRangesForLineRange(e,t,i){if(this.shouldRender()||e<this._visibleLines.getStartLineNumber()||e>this._visibleLines.getEndLineNumber())return null;const n=new jP(this.domNode.domNode,this._textRangeRestingSpot),o=this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(e,t,i,n);return this._updateLineWidthsSlowIfDomDidLayout(n),o}visibleRangeForPosition(e){const t=this._visibleRangesForLineRange(e.lineNumber,e.column,e.column);return t?new $lt(t.outsideRenderedLine,t.ranges[0].left):null}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidthsSlowIfDomDidLayout(e){e.didDomLayout&&(this._asyncUpdateLineWidths.isScheduled()||(this._asyncUpdateLineWidths.cancel(),this._updateLineWidthsSlow()))}_updateLineWidths(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=1,o=!0;for(let r=t;r<=i;r++){const l=this._visibleLines.getVisibleLine(r);if(e&&!l.getWidthIsFast()){o=!1;continue}n=Math.max(n,l.getWidth(null))}return o&&t===1&&i===this._context.viewModel.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(n),o}_checkMonospaceFontAssumptions(){let e=-1,t=-1;const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let o=i;o<=n;o++){const r=this._visibleLines.getVisibleLine(o);if(r.needsMonospaceFontCheck()){const l=r.getWidth(null);l>t&&(t=l,e=o)}}if(e!==-1&&!this._visibleLines.getVisibleLine(e).monospaceAssumptionsAreValid())for(let o=i;o<=n;o++)this._visibleLines.getVisibleLine(o).onMonospaceAssumptionsInvalidated()}prepareRender(){throw new Error("Not supported")}render(){throw new Error("Not supported")}renderText(e){if(this._visibleLines.renderLines(e),this._lastRenderedData.setCurrentVisibleRange(e.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const i=this._horizontalRevealRequest;if(e.startLineNumber<=i.minLineNumber&&i.maxLineNumber<=e.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const n=this._computeScrollLeftToReveal(i);n&&(this._isViewportWrapping||this._ensureMaxLineWidth(n.maxHorizontalOffset),this._context.viewModel.viewLayout.setScrollPosition({scrollLeft:n.scrollLeft},i.scrollType))}}if(this._updateLineWidthsFast()?this._asyncUpdateLineWidths.cancel():this._asyncUpdateLineWidths.schedule(),_a&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let o=i;o<=n;o++)if(this._visibleLines.getVisibleLine(o).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");const t=this._context.viewLayout.getCurrentScrollTop()-e.bigNumbersDelta;this._linesContent.setTop(-t),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(e){const t=Math.ceil(e);this._maxLineWidth<t&&(this._maxLineWidth=t,this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth))}_computeScrollTopToRevealRange(e,t,i,n,o,r){const l=e.top,a=e.height,d=l+a;let c,h,u;if(o&&o.length>0){let b=o[0].startLineNumber,U=o[0].endLineNumber;for(let S=1,Z=o.length;S<Z;S++){const R=o[S];b=Math.min(b,R.startLineNumber),U=Math.max(U,R.endLineNumber)}c=!1,h=this._context.viewLayout.getVerticalOffsetForLineNumber(b),u=this._context.viewLayout.getVerticalOffsetForLineNumber(U)+this._lineHeight}else if(n)c=!0,h=this._context.viewLayout.getVerticalOffsetForLineNumber(n.startLineNumber),u=this._context.viewLayout.getVerticalOffsetForLineNumber(n.endLineNumber)+this._lineHeight;else return-1;const m=(t==="mouse"||i)&&this._cursorSurroundingLinesStyle==="default";let p=0,g=0;if(m)i||(p=this._lineHeight);else{const b=a/this._lineHeight,U=Math.max(this._cursorSurroundingLines,this._stickyScrollEnabled?this._maxNumberStickyLines:0),S=Math.min(b/2,U);p=S*this._lineHeight,g=Math.max(0,S-1)*this._lineHeight}i||(r===0||r===4)&&(g+=this._lineHeight),h-=p,u+=g;let f;if(u-h>a){if(!c)return-1;f=h}else if(r===5||r===6)if(r===6&&l<=h&&u<=d)f=l;else{const b=Math.max(5*this._lineHeight,a*.2),U=h-b,S=u-a;f=Math.max(S,U)}else if(r===1||r===2)if(r===2&&l<=h&&u<=d)f=l;else{const b=(h+u)/2;f=Math.max(0,b-a/2)}else f=this._computeMinimumScrolling(l,d,h,u,r===3,r===4);return f}_computeScrollLeftToReveal(e){const t=this._context.viewLayout.getCurrentViewport(),i=this._context.configuration.options.get(146),n=t.left,o=n+t.width-i.verticalScrollbarWidth;let r=1073741824,l=0;if(e.type==="range"){const d=this._visibleRangesForLineRange(e.lineNumber,e.startColumn,e.endColumn);if(!d)return null;for(const c of d.ranges)r=Math.min(r,Math.round(c.left)),l=Math.max(l,Math.round(c.left+c.width))}else for(const d of e.selections){if(d.startLineNumber!==d.endLineNumber)return null;const c=this._visibleRangesForLineRange(d.startLineNumber,d.startColumn,d.endColumn);if(!c)return null;for(const h of c.ranges)r=Math.min(r,Math.round(h.left)),l=Math.max(l,Math.round(h.left+h.width))}return e.minimalReveal||(r=Math.max(0,r-sz.HORIZONTAL_EXTRA_PX),l+=this._revealHorizontalRightPadding),e.type==="selections"&&l-r>t.width?null:{scrollLeft:this._computeMinimumScrolling(n,o,r,l),maxHorizontalOffset:l}}_computeMinimumScrolling(e,t,i,n,o,r){e=e|0,t=t|0,i=i|0,n=n|0,o=!!o,r=!!r;const l=t-e;if(n-i<l){if(o)return i;if(r)return Math.max(0,n-l);if(i<e)return i;if(n>t)return Math.max(0,n-l)}else return i;return e}};sz.HORIZONTAL_EXTRA_PX=30;let e$=sz;class gdt extends dWe{constructor(e){super(),this._context=e;const i=this._context.configuration.options.get(146);this._decorationsLeft=i.decorationsLeft,this._decorationsWidth=i.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const i=this._context.configuration.options.get(146);return this._decorationsLeft=i.decorationsLeft,this._decorationsWidth=i.decorationsWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport(),i=[];let n=0;for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.options.linesDecorationsClassName,d=l.options.zIndex;a&&(i[n++]=new $q(l.range.startLineNumber,l.range.endLineNumber,a,l.options.linesDecorationsTooltip??null,d));const c=l.options.firstLineDecorationClassName;c&&(i[n++]=new $q(l.range.startLineNumber,l.range.startLineNumber,c,l.options.linesDecorationsTooltip??null,d))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=this._render(t,i,this._getDecorations(e)),o=this._decorationsLeft.toString(),r=this._decorationsWidth.toString(),l='" style="left:'+o+"px;width:"+r+'px;"></div>',a=[];for(let d=t;d<=i;d++){const c=d-t,h=n[c].getDecorations();let u="";for(const m of h){let p='<div class="cldr '+m.className;m.tooltip!==null&&(p+='" title="'+m.tooltip),p+=l,u+=p}a[c]=u}this._renderResult=a}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}class fdt extends dWe{constructor(e){super(),this._context=e,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport(),i=[];let n=0;for(let o=0,r=t.length;o<r;o++){const l=t[o],a=l.options.marginClassName,d=l.options.zIndex;a&&(i[n++]=new $q(l.range.startLineNumber,l.range.endLineNumber,a,null,d))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=this._render(t,i,this._getDecorations(e)),o=[];for(let r=t;r<=i;r++){const l=r-t,a=n[l].getDecorations();let d="";for(const c of a)d+='<div class="cmdr '+c.className+'" style=""></div>';o[l]=d}this._renderResult=o}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}const gU=class gU{constructor(e,t,i,n){this._rgba8Brand=void 0,this.r=gU._clamp(e),this.g=gU._clamp(t),this.b=gU._clamp(i),this.a=gU._clamp(n)}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}static _clamp(e){return e<0?0:e>255?255:e|0}};gU.Empty=new gU(0,0,0,0);let Ef=gU;const oz=class oz extends be{static getInstance(){return this._INSTANCE||(this._INSTANCE=new oz),this._INSTANCE}constructor(){super(),this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._updateColorMap(),this._register(Ro.onDidChange(e=>{e.changedColorMap&&this._updateColorMap()}))}_updateColorMap(){const e=Ro.getColorMap();if(!e){this._colors=[Ef.Empty],this._backgroundIsLight=!0;return}this._colors=[Ef.Empty];for(let i=1;i<e.length;i++){const n=e[i].rgba;this._colors[i]=new Ef(n.r,n.g,n.b,Math.round(n.a*255))}const t=e[2].getRelativeLuminance();this._backgroundIsLight=t>=.5,this._onDidChange.fire(void 0)}getColor(e){return(e<1||e>=this._colors.length)&&(e=2),this._colors[e]}backgroundIsLight(){return this._backgroundIsLight}};oz._INSTANCE=null;let M5=oz;const bdt=(()=>{const s=[];for(let e=32;e<=126;e++)s.push(e);return s.push(65533),s})(),Udt=(s,e)=>(s-=32,s<0||s>96?e<=2?(s+96)%96:96-1:s);class vL{constructor(e,t){this.scale=t,this._minimapCharRendererBrand=void 0,this.charDataNormal=vL.soften(e,12/15),this.charDataLight=vL.soften(e,50/60)}static soften(e,t){const i=new Uint8ClampedArray(e.length);for(let n=0,o=e.length;n<o;n++)i[n]=gX(e[n]*t);return i}renderChar(e,t,i,n,o,r,l,a,d,c,h){const u=1*this.scale,m=2*this.scale,p=h?1:m;if(t+u>e.width||i+p>e.height){console.warn("bad render request outside image data");return}const g=c?this.charDataLight:this.charDataNormal,f=Udt(n,d),b=e.width*4,U=l.r,S=l.g,Z=l.b,R=o.r-U,y=o.g-S,N=o.b-Z,w=Math.max(r,a),Q=e.data;let C=f*u*m,v=i*b+t*4;for(let Y=0;Y<p;Y++){let J=v;for(let k=0;k<u;k++){const E=g[C++]/255*(r/255);Q[J++]=U+R*E,Q[J++]=S+y*E,Q[J++]=Z+N*E,Q[J++]=w}v+=b}}blockRenderChar(e,t,i,n,o,r,l,a){const d=1*this.scale,c=2*this.scale,h=a?1:c;if(t+d>e.width||i+h>e.height){console.warn("bad render request outside image data");return}const u=e.width*4,m=.5*(o/255),p=r.r,g=r.g,f=r.b,b=n.r-p,U=n.g-g,S=n.b-f,Z=p+b*m,R=g+U*m,y=f+S*m,N=Math.max(o,l),w=e.data;let Q=i*u+t*4;for(let C=0;C<h;C++){let v=Q;for(let Y=0;Y<d;Y++)w[v++]=Z,w[v++]=R,w[v++]=y,w[v++]=N;Q+=u}}}const Mpe={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15},wpe=s=>{const e=new Uint8ClampedArray(s.length/2);for(let t=0;t<s.length;t+=2)e[t>>1]=Mpe[s[t]]<<4|Mpe[s[t+1]]&15;return e},Tpe={1:CF(()=>wpe("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792")),2:CF(()=>wpe("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126"))};class p2{static create(e,t){if(this.lastCreated&&e===this.lastCreated.scale&&t===this.lastFontFamily)return this.lastCreated;let i;return Tpe[e]?i=new vL(Tpe[e](),e):i=p2.createFromSampleData(p2.createSampleData(t).data,e),this.lastFontFamily=t,this.lastCreated=i,i}static createSampleData(e){const t=document.createElement("canvas"),i=t.getContext("2d");t.style.height="16px",t.height=16,t.width=96*10,t.style.width=96*10+"px",i.fillStyle="#ffffff",i.font=`bold 16px ${e}`,i.textBaseline="middle";let n=0;for(const o of bdt)i.fillText(String.fromCharCode(o),n,16/2),n+=10;return i.getImageData(0,0,96*10,16)}static createFromSampleData(e,t){if(e.length!==61440)throw new Error("Unexpected source in MinimapCharRenderer");const n=p2._downsample(e,t);return new vL(n,t)}static _downsampleChar(e,t,i,n,o){const r=1*o,l=2*o;let a=n,d=0;for(let c=0;c<l;c++){const h=c/l*16,u=(c+1)/l*16;for(let m=0;m<r;m++){const p=m/r*10,g=(m+1)/r*10;let f=0,b=0;for(let S=h;S<u;S++){const Z=t+Math.floor(S)*3840,R=1-(S-Math.floor(S));for(let y=p;y<g;y++){const N=1-(y-Math.floor(y)),w=Z+Math.floor(y)*4,Q=N*R;b+=Q,f+=e[w]*e[w+3]/255*Q}}const U=f/b;d=Math.max(d,U),i[a++]=gX(U)}}return d}static _downsample(e,t){const i=2*t*1*t,n=i*96,o=new Uint8ClampedArray(n);let r=0,l=0,a=0;for(let d=0;d<96;d++)a=Math.max(a,this._downsampleChar(e,l,o,r,t)),r+=i,l+=10*4;if(a>0){const d=255/a;for(let c=0;c<n;c++)o[c]*=d}return o}}const cWe=Tl?'"Segoe WPC", "Segoe UI", sans-serif':hn?"-apple-system, BlinkMacSystemFont, sans-serif":'system-ui, "Ubuntu", "Droid Sans", sans-serif',Fdt=140,Adt=2;class j1{constructor(e,t,i){const n=e.options,o=n.get(144),r=n.get(146),l=r.minimap,a=n.get(50),d=n.get(73);this.renderMinimap=l.renderMinimap,this.size=d.size,this.minimapHeightIsEditorHeight=l.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=n.get(106),this.paddingTop=n.get(84).top,this.paddingBottom=n.get(84).bottom,this.showSlider=d.showSlider,this.autohide=d.autohide,this.pixelRatio=o,this.typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this.lineHeight=n.get(67),this.minimapLeft=l.minimapLeft,this.minimapWidth=l.minimapWidth,this.minimapHeight=r.height,this.canvasInnerWidth=l.minimapCanvasInnerWidth,this.canvasInnerHeight=l.minimapCanvasInnerHeight,this.canvasOuterWidth=l.minimapCanvasOuterWidth,this.canvasOuterHeight=l.minimapCanvasOuterHeight,this.isSampling=l.minimapIsSampling,this.editorHeight=r.height,this.fontScale=l.minimapScale,this.minimapLineHeight=l.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.sectionHeaderFontFamily=cWe,this.sectionHeaderFontSize=d.sectionHeaderFontSize*o,this.sectionHeaderLetterSpacing=d.sectionHeaderLetterSpacing,this.sectionHeaderFontColor=j1._getSectionHeaderColor(t,i.getColor(1)),this.charRenderer=CF(()=>p2.create(this.fontScale,a.fontFamily)),this.defaultBackgroundColor=i.getColor(2),this.backgroundColor=j1._getMinimapBackground(t,this.defaultBackgroundColor),this.foregroundAlpha=j1._getMinimapForegroundOpacity(t)}static _getMinimapBackground(e,t){const i=e.getColor(l6e);return i?new Ef(i.rgba.r,i.rgba.g,i.rgba.b,Math.round(255*i.rgba.a)):t}static _getMinimapForegroundOpacity(e){const t=e.getColor(a6e);return t?Ef._clamp(Math.round(255*t.rgba.a)):255}static _getSectionHeaderColor(e,t){const i=e.getColor(e0);return i?new Ef(i.rgba.r,i.rgba.g,i.rgba.b,Math.round(255*i.rgba.a)):t}equals(e){return this.renderMinimap===e.renderMinimap&&this.size===e.size&&this.minimapHeightIsEditorHeight===e.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===e.scrollBeyondLastLine&&this.paddingTop===e.paddingTop&&this.paddingBottom===e.paddingBottom&&this.showSlider===e.showSlider&&this.autohide===e.autohide&&this.pixelRatio===e.pixelRatio&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.lineHeight===e.lineHeight&&this.minimapLeft===e.minimapLeft&&this.minimapWidth===e.minimapWidth&&this.minimapHeight===e.minimapHeight&&this.canvasInnerWidth===e.canvasInnerWidth&&this.canvasInnerHeight===e.canvasInnerHeight&&this.canvasOuterWidth===e.canvasOuterWidth&&this.canvasOuterHeight===e.canvasOuterHeight&&this.isSampling===e.isSampling&&this.editorHeight===e.editorHeight&&this.fontScale===e.fontScale&&this.minimapLineHeight===e.minimapLineHeight&&this.minimapCharWidth===e.minimapCharWidth&&this.sectionHeaderFontSize===e.sectionHeaderFontSize&&this.sectionHeaderLetterSpacing===e.sectionHeaderLetterSpacing&&this.defaultBackgroundColor&&this.defaultBackgroundColor.equals(e.defaultBackgroundColor)&&this.backgroundColor&&this.backgroundColor.equals(e.backgroundColor)&&this.foregroundAlpha===e.foregroundAlpha}}class g2{constructor(e,t,i,n,o,r,l,a,d){this.scrollTop=e,this.scrollHeight=t,this.sliderNeeded=i,this._computedSliderRatio=n,this.sliderTop=o,this.sliderHeight=r,this.topPaddingLineCount=l,this.startLineNumber=a,this.endLineNumber=d}getDesiredScrollTopFromDelta(e){return Math.round(this.scrollTop+e/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(e){return Math.round((e-this.sliderHeight/2)/this._computedSliderRatio)}intersectWithViewport(e){const t=Math.max(this.startLineNumber,e.startLineNumber),i=Math.min(this.endLineNumber,e.endLineNumber);return t>i?null:[t,i]}getYForLineNumber(e,t){return+(e-this.startLineNumber+this.topPaddingLineCount)*t}static create(e,t,i,n,o,r,l,a,d,c,h){const u=e.pixelRatio,m=e.minimapLineHeight,p=Math.floor(e.canvasInnerHeight/m),g=e.lineHeight;if(e.minimapHeightIsEditorHeight){let y=a*e.lineHeight+e.paddingTop+e.paddingBottom;e.scrollBeyondLastLine&&(y+=Math.max(0,o-e.lineHeight-e.paddingBottom));const N=Math.max(1,Math.floor(o*o/y)),w=Math.max(0,e.minimapHeight-N),Q=w/(c-o),C=d*Q,v=w>0,Y=Math.floor(e.canvasInnerHeight/e.minimapLineHeight),J=Math.floor(e.paddingTop/e.lineHeight);return new g2(d,c,v,Q,C,N,J,1,Math.min(l,Y))}let f;if(r&&i!==l){const y=i-t+1;f=Math.floor(y*m/u)}else{const y=o/g;f=Math.floor(y*m/u)}const b=Math.floor(e.paddingTop/g);let U=Math.floor(e.paddingBottom/g);if(e.scrollBeyondLastLine){const y=o/g;U=Math.max(U,y-1)}let S;if(U>0){const y=o/g;S=(b+l+U-y-1)*m/u}else S=Math.max(0,(b+l)*m/u-f);S=Math.min(e.minimapHeight-f,S);const Z=S/(c-o),R=d*Z;if(p>=b+l+U){const y=S>0;return new g2(d,c,y,Z,R,f,b,1,l)}else{let y;t>1?y=t+b:y=Math.max(1,d/g);let N,w=Math.max(1,Math.floor(y-R*u/m));w<b?(N=b-w+1,w=1):(N=0,w=Math.max(1,w-b)),h&&h.scrollHeight===c&&(h.scrollTop>d&&(w=Math.min(w,h.startLineNumber),N=Math.max(N,h.topPaddingLineCount)),h.scrollTop<d&&(w=Math.max(w,h.startLineNumber),N=Math.min(N,h.topPaddingLineCount)));const Q=Math.min(l,w-N+p-1),C=(d-n)/g;let v;return d>=e.paddingTop?v=(t-w+N+C)*m/u:v=d/e.paddingTop*(N+C)*m/u,new g2(d,c,!0,Z,v,f,N,w,Q)}}}const rz=class rz{constructor(e){this.dy=e}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}};rz.INVALID=new rz(-1);let w5=rz;class Cpe{constructor(e,t,i){this.renderedLayout=e,this._imageData=t,this._renderedLines=new oWe({createLine:()=>w5.INVALID}),this._renderedLines._set(e.startLineNumber,i)}linesEquals(e){if(!this.scrollEquals(e))return!1;const i=this._renderedLines._get().lines;for(let n=0,o=i.length;n<o;n++)if(i[n].dy===-1)return!1;return!0}scrollEquals(e){return this.renderedLayout.startLineNumber===e.startLineNumber&&this.renderedLayout.endLineNumber===e.endLineNumber}_get(){const e=this._renderedLines._get();return{imageData:this._imageData,rendLineNumberStart:e.rendLineNumberStart,lines:e.lines}}onLinesChanged(e,t){return this._renderedLines.onLinesChanged(e,t)}onLinesDeleted(e,t){this._renderedLines.onLinesDeleted(e,t)}onLinesInserted(e,t){this._renderedLines.onLinesInserted(e,t)}onTokensChanged(e){return this._renderedLines.onTokensChanged(e)}}class Mre{constructor(e,t,i,n){this._backgroundFillData=Mre._createBackgroundFillData(t,i,n),this._buffers=[e.createImageData(t,i),e.createImageData(t,i)],this._lastUsedBuffer=0}getBuffer(){this._lastUsedBuffer=1-this._lastUsedBuffer;const e=this._buffers[this._lastUsedBuffer];return e.data.set(this._backgroundFillData),e}static _createBackgroundFillData(e,t,i){const n=i.r,o=i.g,r=i.b,l=i.a,a=new Uint8ClampedArray(e*t*4);let d=0;for(let c=0;c<t;c++)for(let h=0;h<e;h++)a[d]=n,a[d+1]=o,a[d+2]=r,a[d+3]=l,d+=4;return a}}class kL{static compute(e,t,i){if(e.renderMinimap===0||!e.isSampling)return[null,[]];const{minimapLineCount:n}=y1.computeContainedMinimapLineCount({viewLineCount:t,scrollBeyondLastLine:e.scrollBeyondLastLine,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:e.editorHeight,lineHeight:e.lineHeight,pixelRatio:e.pixelRatio}),o=t/n,r=o/2;if(!i||i.minimapLines.length===0){const f=[];if(f[0]=1,n>1){for(let b=0,U=n-1;b<U;b++)f[b]=Math.round(b*o+r);f[n-1]=t}return[new kL(o,f),[]]}const l=i.minimapLines,a=l.length,d=[];let c=0,h=0,u=1;const m=10;let p=[],g=null;for(let f=0;f<n;f++){const b=Math.max(u,Math.round(f*o)),U=Math.max(b,Math.round((f+1)*o));for(;c<a&&l[c]<b;){if(p.length<m){const Z=c+1+h;g&&g.type==="deleted"&&g._oldIndex===c-1?g.deleteToLineNumber++:(g={type:"deleted",_oldIndex:c,deleteFromLineNumber:Z,deleteToLineNumber:Z},p.push(g)),h--}c++}let S;if(c<a&&l[c]<=U)S=l[c],c++;else if(f===0?S=1:f+1===n?S=t:S=Math.round(f*o+r),p.length<m){const Z=c+1+h;g&&g.type==="inserted"&&g._i===f-1?g.insertToLineNumber++:(g={type:"inserted",_i:f,insertFromLineNumber:Z,insertToLineNumber:Z},p.push(g)),h++}d[f]=S,u=S}if(p.length<m)for(;c<a;){const f=c+1+h;g&&g.type==="deleted"&&g._oldIndex===c-1?g.deleteToLineNumber++:(g={type:"deleted",_oldIndex:c,deleteFromLineNumber:f,deleteToLineNumber:f},p.push(g)),h--,c++}else p=[{type:"flush"}];return[new kL(o,d),p]}constructor(e,t){this.samplingRatio=e,this.minimapLines=t}modelLineToMinimapLine(e){return Math.min(this.minimapLines.length,Math.max(1,Math.round(e/this.samplingRatio)))}modelLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e)-1;for(;i>0&&this.minimapLines[i-1]>=e;)i--;let n=this.modelLineToMinimapLine(t)-1;for(;n+1<this.minimapLines.length&&this.minimapLines[n+1]<=t;)n++;if(i===n){const o=this.minimapLines[i];if(o<e||o>t)return null}return[i+1,n+1]}decorationLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e),n=this.modelLineToMinimapLine(t);return e!==t&&n===i&&(n===this.minimapLines.length?i>1&&i--:n++),[i,n]}onLinesDeleted(e){const t=e.toLineNumber-e.fromLineNumber+1;let i=this.minimapLines.length,n=0;for(let o=this.minimapLines.length-1;o>=0&&!(this.minimapLines[o]<e.fromLineNumber);o--)this.minimapLines[o]<=e.toLineNumber?(this.minimapLines[o]=Math.max(1,e.fromLineNumber-1),i=Math.min(i,o),n=Math.max(n,o)):this.minimapLines[o]-=t;return[i,n]}onLinesInserted(e){const t=e.toLineNumber-e.fromLineNumber+1;for(let i=this.minimapLines.length-1;i>=0&&!(this.minimapLines[i]<e.fromLineNumber);i--)this.minimapLines[i]+=t}}class Zdt extends Zc{constructor(e){super(e),this._sectionHeaderCache=new $g(10,1.5),this.tokensColorTracker=M5.getInstance(),this._selections=[],this._minimapSelections=null,this.options=new j1(this._context.configuration,this._context.theme,this.tokensColorTracker);const[t]=kL.compute(this.options,this._context.viewModel.getLineCount(),null);this._samplingState=t,this._shouldCheckSampling=!1,this._actual=new TW(e.theme,this)}dispose(){this._actual.dispose(),super.dispose()}getDomNode(){return this._actual.getDomNode()}_onOptionsMaybeChanged(){const e=new j1(this._context.configuration,this._context.theme,this.tokensColorTracker);return this.options.equals(e)?!1:(this.options=e,this._recreateLineSampling(),this._actual.onDidChangeOptions(),!0)}onConfigurationChanged(e){return this._onOptionsMaybeChanged()}onCursorStateChanged(e){return this._selections=e.selections,this._minimapSelections=null,this._actual.onSelectionChanged()}onDecorationsChanged(e){return e.affectsMinimap?this._actual.onDecorationsChanged():!1}onFlushed(e){return this._samplingState&&(this._shouldCheckSampling=!0),this._actual.onFlushed()}onLinesChanged(e){if(this._samplingState){const t=this._samplingState.modelLineRangeToMinimapLineRange(e.fromLineNumber,e.fromLineNumber+e.count-1);return t?this._actual.onLinesChanged(t[0],t[1]-t[0]+1):!1}else return this._actual.onLinesChanged(e.fromLineNumber,e.count)}onLinesDeleted(e){if(this._samplingState){const[t,i]=this._samplingState.onLinesDeleted(e);return t<=i&&this._actual.onLinesChanged(t+1,i-t+1),this._shouldCheckSampling=!0,!0}else return this._actual.onLinesDeleted(e.fromLineNumber,e.toLineNumber)}onLinesInserted(e){return this._samplingState?(this._samplingState.onLinesInserted(e),this._shouldCheckSampling=!0,!0):this._actual.onLinesInserted(e.fromLineNumber,e.toLineNumber)}onScrollChanged(e){return this._actual.onScrollChanged()}onThemeChanged(e){return this._actual.onThemeChanged(),this._onOptionsMaybeChanged(),!0}onTokensChanged(e){if(this._samplingState){const t=[];for(const i of e.ranges){const n=this._samplingState.modelLineRangeToMinimapLineRange(i.fromLineNumber,i.toLineNumber);n&&t.push({fromLineNumber:n[0],toLineNumber:n[1]})}return t.length?this._actual.onTokensChanged(t):!1}else return this._actual.onTokensChanged(e.ranges)}onTokensColorsChanged(e){return this._onOptionsMaybeChanged(),this._actual.onTokensColorsChanged()}onZonesChanged(e){return this._actual.onZonesChanged()}prepareRender(e){this._shouldCheckSampling&&(this._shouldCheckSampling=!1,this._recreateLineSampling())}render(e){let t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber;this._samplingState&&(t=this._samplingState.modelLineToMinimapLine(t),i=this._samplingState.modelLineToMinimapLine(i));const n={viewportContainsWhitespaceGaps:e.viewportData.whitespaceViewportData.length>0,scrollWidth:e.scrollWidth,scrollHeight:e.scrollHeight,viewportStartLineNumber:t,viewportEndLineNumber:i,viewportStartLineNumberVerticalOffset:e.getVerticalOffsetForLineNumber(t),scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,viewportWidth:e.viewportWidth,viewportHeight:e.viewportHeight};this._actual.render(n)}_recreateLineSampling(){this._minimapSelections=null;const e=!!this._samplingState,[t,i]=kL.compute(this.options,this._context.viewModel.getLineCount(),this._samplingState);if(this._samplingState=t,e&&this._samplingState)for(const n of i)switch(n.type){case"deleted":this._actual.onLinesDeleted(n.deleteFromLineNumber,n.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(n.insertFromLineNumber,n.insertToLineNumber);break;case"flush":this._actual.onFlushed();break}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.viewModel.getLineCount()}getRealLineCount(){return this._context.viewModel.getLineCount()}getLineContent(e){return this._samplingState?this._context.viewModel.getLineContent(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineContent(e)}getLineMaxColumn(e){return this._samplingState?this._context.viewModel.getLineMaxColumn(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineMaxColumn(e)}getMinimapLinesRenderingData(e,t,i){if(this._samplingState){const n=[];for(let o=0,r=t-e+1;o<r;o++)i[o]?n[o]=this._context.viewModel.getViewLineData(this._samplingState.minimapLines[e+o-1]):n[o]=null;return n}return this._context.viewModel.getMinimapLinesRenderingData(e,t,i).data}getSelections(){if(this._minimapSelections===null)if(this._samplingState){this._minimapSelections=[];for(const e of this._selections){const[t,i]=this._samplingState.decorationLineRangeToMinimapLineRange(e.startLineNumber,e.endLineNumber);this._minimapSelections.push(new _t(t,e.startColumn,i,e.endColumn))}}else this._minimapSelections=this._selections;return this._minimapSelections}getMinimapDecorationsInViewport(e,t){const i=this._getMinimapDecorationsInViewport(e,t).filter(n=>{var o;return!((o=n.options.minimap)!=null&&o.sectionHeaderStyle)});if(this._samplingState){const n=[];for(const o of i){if(!o.options.minimap)continue;const r=o.range,l=this._samplingState.modelLineToMinimapLine(r.startLineNumber),a=this._samplingState.modelLineToMinimapLine(r.endLineNumber);n.push(new zVe(new z(l,r.startColumn,a,r.endColumn),o.options))}return n}return i}getSectionHeaderDecorationsInViewport(e,t){const i=this.options.minimapLineHeight,o=this.options.sectionHeaderFontSize/i;return e=Math.floor(Math.max(1,e-o)),this._getMinimapDecorationsInViewport(e,t).filter(r=>{var l;return!!((l=r.options.minimap)!=null&&l.sectionHeaderStyle)})}_getMinimapDecorationsInViewport(e,t){let i;if(this._samplingState){const n=this._samplingState.minimapLines[e-1],o=this._samplingState.minimapLines[t-1];i=new z(n,1,o,this._context.viewModel.getLineMaxColumn(o))}else i=new z(e,1,t,this._context.viewModel.getLineMaxColumn(t));return this._context.viewModel.getMinimapDecorationsInRange(i)}getSectionHeaderText(e,t){var r;const i=(r=e.options.minimap)==null?void 0:r.sectionHeaderText;if(!i)return null;const n=this._sectionHeaderCache.get(i);if(n)return n;const o=t(i);return this._sectionHeaderCache.set(i,o),o}getOptions(){return this._context.viewModel.model.getOptions()}revealLineNumber(e){this._samplingState&&(e=this._samplingState.minimapLines[e-1]),this._context.viewModel.revealRange("mouse",!1,new z(e,1,e,1),1,0)}setScrollTop(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e},1)}}class TW extends be{constructor(e,t){super(),this._renderDecorations=!1,this._gestureInProgress=!1,this._theme=e,this._model=t,this._lastRenderData=null,this._buffers=null,this._selectionColor=this._theme.getColor(Que),this._domNode=Kn(document.createElement("div")),up.write(this._domNode,9),this._domNode.setClassName(this._getMinimapDomNodeClassName()),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._shadow=Kn(document.createElement("div")),this._shadow.setClassName("minimap-shadow-hidden"),this._domNode.appendChild(this._shadow),this._canvas=Kn(document.createElement("canvas")),this._canvas.setPosition("absolute"),this._canvas.setLeft(0),this._domNode.appendChild(this._canvas),this._decorationsCanvas=Kn(document.createElement("canvas")),this._decorationsCanvas.setPosition("absolute"),this._decorationsCanvas.setClassName("minimap-decorations-layer"),this._decorationsCanvas.setLeft(0),this._domNode.appendChild(this._decorationsCanvas),this._slider=Kn(document.createElement("div")),this._slider.setPosition("absolute"),this._slider.setClassName("minimap-slider"),this._slider.setLayerHinting(!0),this._slider.setContain("strict"),this._domNode.appendChild(this._slider),this._sliderHorizontal=Kn(document.createElement("div")),this._sliderHorizontal.setPosition("absolute"),this._sliderHorizontal.setClassName("minimap-slider-horizontal"),this._slider.appendChild(this._sliderHorizontal),this._applyLayout(),this._pointerDownListener=Fo(this._domNode.domNode,ut.POINTER_DOWN,i=>{if(i.preventDefault(),this._model.options.renderMinimap===0||!this._lastRenderData)return;if(this._model.options.size!=="proportional"){if(i.button===0&&this._lastRenderData){const d=Lo(this._slider.domNode),c=d.top+d.height/2;this._startSliderDragging(i,c,this._lastRenderData.renderedLayout)}return}const o=this._model.options.minimapLineHeight,r=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*i.offsetY;let a=Math.floor(r/o)+this._lastRenderData.renderedLayout.startLineNumber-this._lastRenderData.renderedLayout.topPaddingLineCount;a=Math.min(a,this._model.getLineCount()),this._model.revealLineNumber(a)}),this._sliderPointerMoveMonitor=new UM,this._sliderPointerDownListener=Fo(this._slider.domNode,ut.POINTER_DOWN,i=>{i.preventDefault(),i.stopPropagation(),i.button===0&&this._lastRenderData&&this._startSliderDragging(i,i.pageY,this._lastRenderData.renderedLayout)}),this._gestureDisposable=Hl.addTarget(this._domNode.domNode),this._sliderTouchStartListener=Te(this._domNode.domNode,vs.Start,i=>{i.preventDefault(),i.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName("active",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(i))},{passive:!1}),this._sliderTouchMoveListener=Te(this._domNode.domNode,vs.Change,i=>{i.preventDefault(),i.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(i)},{passive:!1}),this._sliderTouchEndListener=Fo(this._domNode.domNode,vs.End,i=>{i.preventDefault(),i.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName("active",!1)})}_startSliderDragging(e,t,i){if(!e.target||!(e.target instanceof Element))return;const n=e.pageX;this._slider.toggleClassName("active",!0);const o=(r,l)=>{const a=Lo(this._domNode.domNode),d=Math.min(Math.abs(l-n),Math.abs(l-a.left),Math.abs(l-a.left-a.width));if(Tl&&d>Fdt){this._model.setScrollTop(i.scrollTop);return}const c=r-t;this._model.setScrollTop(i.getDesiredScrollTopFromDelta(c))};e.pageY!==t&&o(e.pageY,n),this._sliderPointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,r=>o(r.pageY,r.pageX),()=>{this._slider.toggleClassName("active",!1)})}scrollDueToTouchEvent(e){const t=this._domNode.domNode.getBoundingClientRect().top,i=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(e.pageY-t);this._model.setScrollTop(i)}dispose(){this._pointerDownListener.dispose(),this._sliderPointerMoveMonitor.dispose(),this._sliderPointerDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),super.dispose()}_getMinimapDomNodeClassName(){const e=["minimap"];return this._model.options.showSlider==="always"?e.push("slider-always"):e.push("slider-mouseover"),this._model.options.autohide&&e.push("autohide"),e.join(" ")}getDomNode(){return this._domNode}_applyLayout(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}_getBuffer(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new Mre(this._canvas.domNode.getContext("2d"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}onDidChangeOptions(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}onSelectionChanged(){return this._renderDecorations=!0,!0}onDecorationsChanged(){return this._renderDecorations=!0,!0}onFlushed(){return this._lastRenderData=null,!0}onLinesChanged(e,t){return this._lastRenderData?this._lastRenderData.onLinesChanged(e,t):!1}onLinesDeleted(e,t){var i;return(i=this._lastRenderData)==null||i.onLinesDeleted(e,t),!0}onLinesInserted(e,t){var i;return(i=this._lastRenderData)==null||i.onLinesInserted(e,t),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(Que),this._renderDecorations=!0,!0}onTokensChanged(e){return this._lastRenderData?this._lastRenderData.onTokensChanged(e):!1}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(e){if(this._model.options.renderMinimap===0){this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),this._sliderHorizontal.setHeight(0);return}e.scrollLeft+e.viewportWidth>=e.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");const i=g2.create(this._model.options,e.viewportStartLineNumber,e.viewportEndLineNumber,e.viewportStartLineNumberVerticalOffset,e.viewportHeight,e.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),e.scrollTop,e.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(i.sliderNeeded?"block":"none"),this._slider.setTop(i.sliderTop),this._slider.setHeight(i.sliderHeight),this._sliderHorizontal.setLeft(0),this._sliderHorizontal.setWidth(this._model.options.minimapWidth),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(i.sliderHeight),this.renderDecorations(i),this._lastRenderData=this.renderLines(i)}renderDecorations(e){if(this._renderDecorations){this._renderDecorations=!1;const t=this._model.getSelections();t.sort(z.compareRangesUsingStarts);const i=this._model.getMinimapDecorationsInViewport(e.startLineNumber,e.endLineNumber);i.sort((u,m)=>(u.options.zIndex||0)-(m.options.zIndex||0));const{canvasInnerWidth:n,canvasInnerHeight:o}=this._model.options,r=this._model.options.minimapLineHeight,l=this._model.options.minimapCharWidth,a=this._model.getOptions().tabSize,d=this._decorationsCanvas.domNode.getContext("2d");d.clearRect(0,0,n,o);const c=new Bpe(e.startLineNumber,e.endLineNumber,!1);this._renderSelectionLineHighlights(d,t,c,e,r),this._renderDecorationsLineHighlights(d,i,c,e,r);const h=new Bpe(e.startLineNumber,e.endLineNumber,null);this._renderSelectionsHighlights(d,t,h,e,r,a,l,n),this._renderDecorationsHighlights(d,i,h,e,r,a,l,n),this._renderSectionHeaders(e)}}_renderSelectionLineHighlights(e,t,i,n,o){if(!this._selectionColor||this._selectionColor.isTransparent())return;e.fillStyle=this._selectionColor.transparent(.5).toString();let r=0,l=0;for(const a of t){const d=n.intersectWithViewport(a);if(!d)continue;const[c,h]=d;for(let p=c;p<=h;p++)i.set(p,!0);const u=n.getYForLineNumber(c,o),m=n.getYForLineNumber(h,o);l>=u||(l>r&&e.fillRect(Gp,r,e.canvas.width,l-r),r=u),l=m}l>r&&e.fillRect(Gp,r,e.canvas.width,l-r)}_renderDecorationsLineHighlights(e,t,i,n,o){const r=new Map;for(let l=t.length-1;l>=0;l--){const a=t[l],d=a.options.minimap;if(!d||d.position!==1)continue;const c=n.intersectWithViewport(a.range);if(!c)continue;const[h,u]=c,m=d.getColor(this._theme.value);if(!m||m.isTransparent())continue;let p=r.get(m.toString());p||(p=m.transparent(.5).toString(),r.set(m.toString(),p)),e.fillStyle=p;for(let g=h;g<=u;g++){if(i.has(g))continue;i.set(g,!0);const f=n.getYForLineNumber(h,o);e.fillRect(Gp,f,e.canvas.width,o)}}}_renderSelectionsHighlights(e,t,i,n,o,r,l,a){if(!(!this._selectionColor||this._selectionColor.isTransparent()))for(const d of t){const c=n.intersectWithViewport(d);if(!c)continue;const[h,u]=c;for(let m=h;m<=u;m++)this.renderDecorationOnLine(e,i,d,this._selectionColor,n,m,o,o,r,l,a)}}_renderDecorationsHighlights(e,t,i,n,o,r,l,a){for(const d of t){const c=d.options.minimap;if(!c)continue;const h=n.intersectWithViewport(d.range);if(!h)continue;const[u,m]=h,p=c.getColor(this._theme.value);if(!(!p||p.isTransparent()))for(let g=u;g<=m;g++)switch(c.position){case 1:this.renderDecorationOnLine(e,i,d.range,p,n,g,o,o,r,l,a);continue;case 2:{const f=n.getYForLineNumber(g,o),b=2;this.renderDecoration(e,p,b,f,Adt,o);continue}}}}renderDecorationOnLine(e,t,i,n,o,r,l,a,d,c,h){const u=o.getYForLineNumber(r,a);if(u+l<0||u>this._model.options.canvasInnerHeight)return;const{startLineNumber:m,endLineNumber:p}=i,g=m===r?i.startColumn:1,f=p===r?i.endColumn:this._model.getLineMaxColumn(r),b=this.getXOffsetForPosition(t,r,g,d,c,h),U=this.getXOffsetForPosition(t,r,f,d,c,h);this.renderDecoration(e,n,b,u,U-b,l)}getXOffsetForPosition(e,t,i,n,o,r){if(i===1)return Gp;if((i-1)*o>=r)return r;let a=e.get(t);if(!a){const d=this._model.getLineContent(t);a=[Gp];let c=Gp;for(let h=1;h<d.length+1;h++){const u=d.charCodeAt(h-1),m=u===9?n*o:vF(u)?2*o:o,p=c+m;if(p>=r){a[h]=r;break}a[h]=p,c=p}e.set(t,a)}return i-1<a.length?a[i-1]:r}renderDecoration(e,t,i,n,o,r){e.fillStyle=t&&t.toString()||"",e.fillRect(i,n,o,r)}_renderSectionHeaders(e){var g;const t=this._model.options.minimapLineHeight,i=this._model.options.sectionHeaderFontSize,n=this._model.options.sectionHeaderLetterSpacing,o=i*1.5,{canvasInnerWidth:r}=this._model.options,l=this._model.options.backgroundColor,a=`rgb(${l.r} ${l.g} ${l.b} / .7)`,d=this._model.options.sectionHeaderFontColor,c=`rgb(${d.r} ${d.g} ${d.b})`,h=c,u=this._decorationsCanvas.domNode.getContext("2d");u.letterSpacing=n+"px",u.font="500 "+i+"px "+this._model.options.sectionHeaderFontFamily,u.strokeStyle=h,u.lineWidth=.2;const m=this._model.getSectionHeaderDecorationsInViewport(e.startLineNumber,e.endLineNumber);m.sort((f,b)=>f.range.startLineNumber-b.range.startLineNumber);const p=TW._fitSectionHeader.bind(null,u,r-Gp);for(const f of m){const b=e.getYForLineNumber(f.range.startLineNumber,t)+i,U=b-i,S=U+2,Z=this._model.getSectionHeaderText(f,p);TW._renderSectionLabel(u,Z,((g=f.options.minimap)==null?void 0:g.sectionHeaderStyle)===2,a,c,r,U,o,b,S)}}static _fitSectionHeader(e,t,i){if(!i)return i;const n="…",o=e.measureText(i).width,r=e.measureText(n).width;if(o<=t||o<=r)return i;const l=i.length,a=o/i.length,d=Math.floor((t-r)/a)-1;let c=Math.ceil(d/2);for(;c>0&&/\s/.test(i[c-1]);)--c;return i.substring(0,c)+n+i.substring(l-(d-c))}static _renderSectionLabel(e,t,i,n,o,r,l,a,d,c){t&&(e.fillStyle=n,e.fillRect(0,l,r,a),e.fillStyle=o,e.fillText(t,Gp,d)),i&&(e.beginPath(),e.moveTo(0,c),e.lineTo(r,c),e.closePath(),e.stroke())}renderLines(e){const t=e.startLineNumber,i=e.endLineNumber,n=this._model.options.minimapLineHeight;if(this._lastRenderData&&this._lastRenderData.linesEquals(e)){const E=this._lastRenderData._get();return new Cpe(e,E.imageData,E.lines)}const o=this._getBuffer();if(!o)return null;const[r,l,a]=TW._renderUntouchedLines(o,e.topPaddingLineCount,t,i,n,this._lastRenderData),d=this._model.getMinimapLinesRenderingData(t,i,a),c=this._model.getOptions().tabSize,h=this._model.options.defaultBackgroundColor,u=this._model.options.backgroundColor,m=this._model.options.foregroundAlpha,p=this._model.tokensColorTracker,g=p.backgroundIsLight(),f=this._model.options.renderMinimap,b=this._model.options.charRenderer(),U=this._model.options.fontScale,S=this._model.options.minimapCharWidth,R=(f===1?2:2+1)*U,y=n>R?Math.floor((n-R)/2):0,N=u.a/255,w=new Ef(Math.round((u.r-h.r)*N+h.r),Math.round((u.g-h.g)*N+h.g),Math.round((u.b-h.b)*N+h.b),255);let Q=e.topPaddingLineCount*n;const C=[];for(let E=0,K=i-t+1;E<K;E++)a[E]&&TW._renderLine(o,w,u.a,g,f,S,p,m,b,Q,y,c,d[E],U,n),C[E]=new w5(Q),Q+=n;const v=r===-1?0:r,J=(l===-1?o.height:l)-v;return this._canvas.domNode.getContext("2d").putImageData(o,0,0,0,v,o.width,J),new Cpe(e,o,C)}static _renderUntouchedLines(e,t,i,n,o,r){const l=[];if(!r){for(let Q=0,C=n-i+1;Q<C;Q++)l[Q]=!0;return[-1,-1,l]}const a=r._get(),d=a.imageData.data,c=a.rendLineNumberStart,h=a.lines,u=h.length,m=e.width,p=e.data,g=(n-i+1)*o*m*4;let f=-1,b=-1,U=-1,S=-1,Z=-1,R=-1,y=t*o;for(let Q=i;Q<=n;Q++){const C=Q-i,v=Q-c,Y=v>=0&&v<u?h[v].dy:-1;if(Y===-1){l[C]=!0,y+=o;continue}const J=Y*m*4,k=(Y+o)*m*4,E=y*m*4,K=(y+o)*m*4;S===J&&R===E?(S=k,R=K):(U!==-1&&(p.set(d.subarray(U,S),Z),f===-1&&U===0&&U===Z&&(f=S),b===-1&&S===g&&U===Z&&(b=U)),U=J,S=k,Z=E,R=K),l[C]=!1,y+=o}U!==-1&&(p.set(d.subarray(U,S),Z),f===-1&&U===0&&U===Z&&(f=S),b===-1&&S===g&&U===Z&&(b=U));const N=f===-1?-1:f/(m*4),w=b===-1?-1:b/(m*4);return[N,w,l]}static _renderLine(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g){const f=m.content,b=m.tokens,U=e.width-r,S=g===1;let Z=Gp,R=0,y=0;for(let N=0,w=b.getCount();N<w;N++){const Q=b.getEndOffset(N),C=b.getForeground(N),v=l.getColor(C);for(;R<Q;R++){if(Z>U)return;const Y=f.charCodeAt(R);if(Y===9){const J=u-(R+y)%u;y+=J-1,Z+=J*r}else if(Y===32)Z+=r;else{const J=vF(Y)?2:1;for(let k=0;k<J;k++)if(o===2?d.blockRenderChar(e,Z,c+h,v,a,t,i,S):d.renderChar(e,Z,c+h,Y,v,a,t,i,p,n,S),Z+=r,Z>U)return}}}}}class Bpe{constructor(e,t,i){this._startLineNumber=e,this._endLineNumber=t,this._defaultValue=i,this._values=[];for(let n=0,o=this._endLineNumber-this._startLineNumber+1;n<o;n++)this._values[n]=i}has(e){return this.get(e)!==this._defaultValue}set(e,t){e<this._startLineNumber||e>this._endLineNumber||(this._values[e-this._startLineNumber]=t)}get(e){return e<this._startLineNumber||e>this._endLineNumber?this._defaultValue:this._values[e-this._startLineNumber]}}class Sdt extends Zc{constructor(e,t){super(e),this._viewDomNode=t;const n=this._context.configuration.options.get(146);this._widgets={},this._verticalScrollbarWidth=n.verticalScrollbarWidth,this._minimapWidth=n.minimap.minimapWidth,this._horizontalScrollbarHeight=n.horizontalScrollbarHeight,this._editorHeight=n.height,this._editorWidth=n.width,this._viewDomNodeRect={top:0,left:0,width:0,height:0},this._domNode=Kn(document.createElement("div")),up.write(this._domNode,4),this._domNode.setClassName("overlayWidgets"),this.overflowingOverlayWidgetsDomNode=Kn(document.createElement("div")),up.write(this.overflowingOverlayWidgetsDomNode,5),this.overflowingOverlayWidgetsDomNode.setClassName("overflowingOverlayWidgets")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(e){const i=this._context.configuration.options.get(146);return this._verticalScrollbarWidth=i.verticalScrollbarWidth,this._minimapWidth=i.minimap.minimapWidth,this._horizontalScrollbarHeight=i.horizontalScrollbarHeight,this._editorHeight=i.height,this._editorWidth=i.width,!0}addWidget(e){const t=Kn(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:null,domNode:t},t.setPosition("absolute"),t.setAttribute("widgetId",e.getId()),e.allowEditorOverflow?this.overflowingOverlayWidgetsDomNode.appendChild(t):this._domNode.appendChild(t),this.setShouldRender(),this._updateMaxMinWidth()}setWidgetPosition(e,t){const i=this._widgets[e.getId()],n=t?t.preference:null,o=t==null?void 0:t.stackOridinal;return i.preference===n&&i.stack===o?(this._updateMaxMinWidth(),!1):(i.preference=n,i.stack=o,this.setShouldRender(),this._updateMaxMinWidth(),!0)}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const n=this._widgets[t].domNode.domNode;delete this._widgets[t],n.remove(),this.setShouldRender(),this._updateMaxMinWidth()}}_updateMaxMinWidth(){var i,n;let e=0;const t=Object.keys(this._widgets);for(let o=0,r=t.length;o<r;o++){const l=t[o],d=(n=(i=this._widgets[l].widget).getMinContentWidthInPx)==null?void 0:n.call(i);typeof d<"u"&&(e=Math.max(e,d))}this._context.viewLayout.setOverlayWidgetsMinWidth(e)}_renderWidget(e,t){const i=e.domNode;if(e.preference===null){i.setTop("");return}const n=2*this._verticalScrollbarWidth+this._minimapWidth;if(e.preference===0||e.preference===1){if(e.preference===1){const o=i.domNode.clientHeight;i.setTop(this._editorHeight-o-2*this._horizontalScrollbarHeight)}else i.setTop(0);e.stack!==void 0?(i.setTop(t[e.preference]),t[e.preference]+=i.domNode.clientWidth):i.setRight(n)}else if(e.preference===2)i.domNode.style.right="50%",e.stack!==void 0?(i.setTop(t[2]),t[2]+=i.domNode.clientHeight):i.setTop(0);else{const{top:o,left:r}=e.preference;if(this._context.configuration.options.get(42)&&e.widget.allowEditorOverflow){const a=this._viewDomNodeRect;i.setTop(o+a.top),i.setLeft(r+a.left),i.setPosition("fixed")}else i.setTop(o),i.setLeft(r),i.setPosition("absolute")}}prepareRender(e){this._viewDomNodeRect=Lo(this._viewDomNode.domNode)}render(e){this._domNode.setWidth(this._editorWidth);const t=Object.keys(this._widgets),i=Array.from({length:2+1},()=>0);t.sort((n,o)=>(this._widgets[n].stack||0)-(this._widgets[o].stack||0));for(let n=0,o=t.length;n<o;n++){const r=t[n];this._renderWidget(this._widgets[r],i)}}}class Ndt{constructor(e,t){const i=e.options;this.lineHeight=i.get(67),this.pixelRatio=i.get(144),this.overviewRulerLanes=i.get(83),this.renderBorder=i.get(82);const n=t.getColor(Zit);this.borderColor=n?n.toString():null,this.hideCursor=i.get(59);const o=t.getColor(f9);this.cursorColorSingle=o?o.transparent(.7).toString():null;const r=t.getColor(ZRe);this.cursorColorPrimary=r?r.transparent(.7).toString():null;const l=t.getColor(SRe);this.cursorColorSecondary=l?l.transparent(.7).toString():null,this.themeType=t.type;const a=i.get(73),d=a.enabled,c=a.side,h=t.getColor(Sit),u=Ro.getDefaultBackground();h?this.backgroundColor=h:d&&c==="right"?this.backgroundColor=u:this.backgroundColor=null;const p=i.get(146).overviewRuler;this.top=p.top,this.right=p.right,this.domWidth=p.width,this.domHeight=p.height,this.overviewRulerLanes===0?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);const[g,f]=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes);this.x=g,this.w=f}_initLanes(e,t,i){const n=t-e;if(i>=3){const o=Math.floor(n/3),r=Math.floor(n/3),l=n-o-r,a=e,d=a+o,c=a+o+l;return[[0,a,d,a,c,a,d,a],[0,o,l,o+l,r,o+l+r,l+r,o+l+r]]}else if(i===2){const o=Math.floor(n/2),r=n-o,l=e,a=l+o;return[[0,l,l,l,a,l,l,l],[0,o,o,o,r,o+r,o+r,o+r]]}else{const o=e,r=n;return[[0,o,o,o,o,o,o,o],[0,r,r,r,r,r,r,r]]}}equals(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColorSingle===e.cursorColorSingle&&this.cursorColorPrimary===e.cursorColorPrimary&&this.cursorColorSecondary===e.cursorColorSecondary&&this.themeType===e.themeType&&Je.equals(this.backgroundColor,e.backgroundColor)&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight}}class Rdt extends Zc{constructor(e){super(e),this._actualShouldRender=0,this._renderedDecorations=[],this._renderedCursorPositions=[],this._domNode=Kn(document.createElement("canvas")),this._domNode.setClassName("decorationsOverviewRuler"),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._domNode.setAttribute("aria-hidden","true"),this._updateSettings(!1),this._tokensColorTrackerListener=Ro.onDidChange(t=>{t.changedColorMap&&this._updateSettings(!0)}),this._cursorPositions=[{position:new ge(1,1),color:this._settings.cursorColorSingle}]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(e){const t=new Ndt(this._context.configuration,this._context.theme);return this._settings&&this._settings.equals(t)?!1:(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),!0)}_markRenderingIsNeeded(){return this._actualShouldRender=2,!0}_markRenderingIsMaybeNeeded(){return this._actualShouldRender=1,!0}onConfigurationChanged(e){return this._updateSettings(!1)?this._markRenderingIsNeeded():!1}onCursorStateChanged(e){this._cursorPositions=[];for(let t=0,i=e.selections.length;t<i;t++){let n=this._settings.cursorColorSingle;i>1&&(n=t===0?this._settings.cursorColorPrimary:this._settings.cursorColorSecondary),this._cursorPositions.push({position:e.selections[t].getPosition(),color:n})}return this._cursorPositions.sort((t,i)=>ge.compare(t.position,i.position)),this._markRenderingIsMaybeNeeded()}onDecorationsChanged(e){return e.affectsOverviewRuler?this._markRenderingIsMaybeNeeded():!1}onFlushed(e){return this._markRenderingIsNeeded()}onScrollChanged(e){return e.scrollHeightChanged?this._markRenderingIsNeeded():!1}onZonesChanged(e){return this._markRenderingIsNeeded()}onThemeChanged(e){return this._updateSettings(!1)?this._markRenderingIsNeeded():!1}getDomNode(){return this._domNode.domNode}prepareRender(e){}render(e){this._render(),this._actualShouldRender=0}_render(){const e=this._settings.backgroundColor;if(this._settings.overviewRulerLanes===0){this._domNode.setBackgroundColor(e?Je.Format.CSS.formatHexA(e):""),this._domNode.setDisplay("none");return}const t=this._context.viewModel.getAllOverviewRulerDecorations(this._context.theme);if(t.sort(QL.compareByRenderingProps),this._actualShouldRender===1&&!QL.equalsArr(this._renderedDecorations,t)&&(this._actualShouldRender=2),this._actualShouldRender===1&&!lo(this._renderedCursorPositions,this._cursorPositions,(p,g)=>p.position.lineNumber===g.position.lineNumber&&p.color===g.color)&&(this._actualShouldRender=2),this._actualShouldRender===1)return;this._renderedDecorations=t,this._renderedCursorPositions=this._cursorPositions,this._domNode.setDisplay("block");const i=this._settings.canvasWidth,n=this._settings.canvasHeight,o=this._settings.lineHeight,r=this._context.viewLayout,l=this._context.viewLayout.getScrollHeight(),a=n/l,d=6*this._settings.pixelRatio|0,c=d/2|0,h=this._domNode.domNode.getContext("2d");e?e.isOpaque()?(h.fillStyle=Je.Format.CSS.formatHexA(e),h.fillRect(0,0,i,n)):(h.clearRect(0,0,i,n),h.fillStyle=Je.Format.CSS.formatHexA(e),h.fillRect(0,0,i,n)):h.clearRect(0,0,i,n);const u=this._settings.x,m=this._settings.w;for(const p of t){const g=p.color,f=p.data;h.fillStyle=g;let b=0,U=0,S=0;for(let Z=0,R=f.length/3;Z<R;Z++){const y=f[3*Z],N=f[3*Z+1],w=f[3*Z+2];let Q=r.getVerticalOffsetForLineNumber(N)*a|0,C=(r.getVerticalOffsetForLineNumber(w)+o)*a|0;if(C-Q<d){let Y=(Q+C)/2|0;Y<c?Y=c:Y+c>n&&(Y=n-c),Q=Y-c,C=Y+c}Q>S+1||y!==b?(Z!==0&&h.fillRect(u[b],U,m[b],S-U),b=y,U=Q,S=C):C>S&&(S=C)}h.fillRect(u[b],U,m[b],S-U)}if(!this._settings.hideCursor){const p=2*this._settings.pixelRatio|0,g=p/2|0,f=this._settings.x[7],b=this._settings.w[7];let U=-100,S=-100,Z=null;for(let R=0,y=this._cursorPositions.length;R<y;R++){const N=this._cursorPositions[R].color;if(!N)continue;const w=this._cursorPositions[R].position;let Q=r.getVerticalOffsetForLineNumber(w.lineNumber)*a|0;Q<g?Q=g:Q+g>n&&(Q=n-g);const C=Q-g,v=C+p;C>S+1||N!==Z?(R!==0&&Z&&h.fillRect(f,U,b,S-U),U=C,S=v):v>S&&(S=v),Z=N,h.fillStyle=N}Z&&h.fillRect(f,U,b,S-U)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(h.beginPath(),h.lineWidth=1,h.strokeStyle=this._settings.borderColor,h.moveTo(0,0),h.lineTo(0,n),h.moveTo(1,0),h.lineTo(i,0),h.stroke())}}class Lpe{constructor(e,t,i){this._colorZoneBrand=void 0,this.from=e|0,this.to=t|0,this.colorId=i|0}static compare(e,t){return e.colorId===t.colorId?e.from===t.from?e.to-t.to:e.from-t.from:e.colorId-t.colorId}}class hWe{constructor(e,t,i,n){this._overviewRulerZoneBrand=void 0,this.startLineNumber=e,this.endLineNumber=t,this.heightInLines=i,this.color=n,this._colorZone=null}static compare(e,t){return e.color===t.color?e.startLineNumber===t.startLineNumber?e.heightInLines===t.heightInLines?e.endLineNumber-t.endLineNumber:e.heightInLines-t.heightInLines:e.startLineNumber-t.startLineNumber:e.color<t.color?-1:1}setColorZone(e){this._colorZone=e}getColorZones(){return this._colorZone}}class Vdt{constructor(e){this._getVerticalOffsetForLine=e,this._zones=[],this._colorZonesInvalid=!1,this._lineHeight=0,this._domWidth=0,this._domHeight=0,this._outerHeight=0,this._pixelRatio=1,this._lastAssignedId=0,this._color2Id=Object.create(null),this._id2Color=[]}getId2Color(){return this._id2Color}setZones(e){this._zones=e,this._zones.sort(hWe.compare)}setLineHeight(e){return this._lineHeight===e?!1:(this._lineHeight=e,this._colorZonesInvalid=!0,!0)}setPixelRatio(e){this._pixelRatio=e,this._colorZonesInvalid=!0}getDOMWidth(){return this._domWidth}getCanvasWidth(){return this._domWidth*this._pixelRatio}setDOMWidth(e){return this._domWidth===e?!1:(this._domWidth=e,this._colorZonesInvalid=!0,!0)}getDOMHeight(){return this._domHeight}getCanvasHeight(){return this._domHeight*this._pixelRatio}setDOMHeight(e){return this._domHeight===e?!1:(this._domHeight=e,this._colorZonesInvalid=!0,!0)}getOuterHeight(){return this._outerHeight}setOuterHeight(e){return this._outerHeight===e?!1:(this._outerHeight=e,this._colorZonesInvalid=!0,!0)}resolveColorZones(){const e=this._colorZonesInvalid,t=Math.floor(this._lineHeight),i=Math.floor(this.getCanvasHeight()),n=Math.floor(this._outerHeight),o=i/n,r=Math.floor(4*this._pixelRatio/2),l=[];for(let a=0,d=this._zones.length;a<d;a++){const c=this._zones[a];if(!e){const Z=c.getColorZones();if(Z){l.push(Z);continue}}const h=this._getVerticalOffsetForLine(c.startLineNumber),u=c.heightInLines===0?this._getVerticalOffsetForLine(c.endLineNumber)+t:h+c.heightInLines*t,m=Math.floor(o*h),p=Math.floor(o*u);let g=Math.floor((m+p)/2),f=p-g;f<r&&(f=r),g-f<0&&(g=f),g+f>i&&(g=i-f);const b=c.color;let U=this._color2Id[b];U||(U=++this._lastAssignedId,this._color2Id[b]=U,this._id2Color[U]=b);const S=new Lpe(g-f,g+f,U);c.setColorZone(S),l.push(S)}return this._colorZonesInvalid=!1,l.sort(Lpe.compare),l}}class Wdt extends fk{constructor(e,t){super(),this._context=e;const i=this._context.configuration.options;this._domNode=Kn(document.createElement("canvas")),this._domNode.setClassName(t),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._zoneManager=new Vdt(n=>this._context.viewLayout.getVerticalOffsetForLineNumber(n)),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(i.get(67)),this._zoneManager.setPixelRatio(i.get(144)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return e.hasChanged(67)&&(this._zoneManager.setLineHeight(t.get(67)),this._render()),e.hasChanged(144)&&(this._zoneManager.setPixelRatio(t.get(144)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}onFlushed(e){return this._render(),!0}onScrollChanged(e){return e.scrollHeightChanged&&(this._zoneManager.setOuterHeight(e.scrollHeight),this._render()),!0}onZonesChanged(e){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(e){this._domNode.setTop(e.top),this._domNode.setRight(e.right);let t=!1;t=this._zoneManager.setDOMWidth(e.width)||t,t=this._zoneManager.setDOMHeight(e.height)||t,t&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}setZones(e){this._zoneManager.setZones(e),this._render()}_render(){if(this._zoneManager.getOuterHeight()===0)return!1;const e=this._zoneManager.getCanvasWidth(),t=this._zoneManager.getCanvasHeight(),i=this._zoneManager.resolveColorZones(),n=this._zoneManager.getId2Color(),o=this._domNode.domNode.getContext("2d");return o.clearRect(0,0,e,t),i.length>0&&this._renderOneLane(o,i,n,e),!0}_renderOneLane(e,t,i,n){let o=0,r=0,l=0;for(const a of t){const d=a.colorId,c=a.from,h=a.to;d!==o?(e.fillRect(0,r,n,l-r),o=d,e.fillStyle=i[o],r=c,l=h):l>=c?l=Math.max(l,h):(e.fillRect(0,r,n,l-r),r=c,l=h)}e.fillRect(0,r,n,l-r)}}class ydt extends Zc{constructor(e){super(e),this.domNode=Kn(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("view-rulers"),this._renderedRulers=[];const t=this._context.configuration.options;this._rulers=t.get(103),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth}dispose(){super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._rulers=t.get(103),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onScrollChanged(e){return e.scrollHeightChanged}prepareRender(e){}_ensureRulersCount(){const e=this._renderedRulers.length,t=this._rulers.length;if(e===t)return;if(e<t){const{tabSize:n}=this._context.viewModel.model.getOptions(),o=n;let r=t-e;for(;r>0;){const l=Kn(document.createElement("div"));l.setClassName("view-ruler"),l.setWidth(o),this.domNode.appendChild(l),this._renderedRulers.push(l),r--}return}let i=e-t;for(;i>0;){const n=this._renderedRulers.pop();this.domNode.removeChild(n),i--}}render(e){this._ensureRulersCount();for(let t=0,i=this._rulers.length;t<i;t++){const n=this._renderedRulers[t],o=this._rulers[t];n.setBoxShadow(o.color?`1px 0 0 0 ${o.color} inset`:""),n.setHeight(Math.min(e.scrollHeight,1e6)),n.setLeft(o.column*this._typicalHalfwidthCharacterWidth)}}}class Qdt extends Zc{constructor(e){super(e),this._scrollTop=0,this._width=0,this._updateWidth(),this._shouldShow=!1;const i=this._context.configuration.options.get(104);this._useShadows=i.useShadows,this._domNode=Kn(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true")}dispose(){super.dispose()}_updateShouldShow(){const e=this._useShadows&&this._scrollTop>0;return this._shouldShow!==e?(this._shouldShow=e,!0):!1}getDomNode(){return this._domNode}_updateWidth(){const t=this._context.configuration.options.get(146);t.minimap.renderMinimap===0||t.minimap.minimapWidth>0&&t.minimap.minimapLeft===0?this._width=t.width:this._width=t.width-t.verticalScrollbarWidth}onConfigurationChanged(e){const i=this._context.configuration.options.get(104);return this._useShadows=i.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(e){return this._scrollTop=e.scrollTop,this._updateShouldShow()}prepareRender(e){}render(e){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}class Mdt{constructor(e){this.left=e.left,this.width=e.width,this.startStyle=null,this.endStyle=null}}class wdt{constructor(e,t){this.lineNumber=e,this.ranges=t}}function Tdt(s){return new Mdt(s)}function Cdt(s){return new wdt(s.lineNumber,s.ranges.map(Tdt))}const Go=class Go extends sR{constructor(e){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=e;const t=this._context.configuration.options;this._roundedSelection=t.get(102),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._roundedSelection=t.get(102),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_visibleRangesHaveGaps(e){for(let t=0,i=e.length;t<i;t++)if(e[t].ranges.length>1)return!0;return!1}_enrichVisibleRangesWithStyle(e,t,i){const n=this._typicalHalfwidthCharacterWidth/4;let o=null,r=null;if(i&&i.length>0&&t.length>0){const l=t[0].lineNumber;if(l===e.startLineNumber)for(let d=0;!o&&d<i.length;d++)i[d].lineNumber===l&&(o=i[d].ranges[0]);const a=t[t.length-1].lineNumber;if(a===e.endLineNumber)for(let d=i.length-1;!r&&d>=0;d--)i[d].lineNumber===a&&(r=i[d].ranges[0]);o&&!o.startStyle&&(o=null),r&&!r.startStyle&&(r=null)}for(let l=0,a=t.length;l<a;l++){const d=t[l].ranges[0],c=d.left,h=d.left+d.width,u={top:0,bottom:0},m={top:0,bottom:0};if(l>0){const p=t[l-1].ranges[0].left,g=t[l-1].ranges[0].left+t[l-1].ranges[0].width;SI(c-p)<n?u.top=2:c>p&&(u.top=1),SI(h-g)<n?m.top=2:p<h&&h<g&&(m.top=1)}else o&&(u.top=o.startStyle.top,m.top=o.endStyle.top);if(l+1<a){const p=t[l+1].ranges[0].left,g=t[l+1].ranges[0].left+t[l+1].ranges[0].width;SI(c-p)<n?u.bottom=2:p<c&&c<g&&(u.bottom=1),SI(h-g)<n?m.bottom=2:h<g&&(m.bottom=1)}else r&&(u.bottom=r.startStyle.bottom,m.bottom=r.endStyle.bottom);d.startStyle=u,d.endStyle=m}}_getVisibleRangesWithStyle(e,t,i){const o=(t.linesVisibleRangesForRange(e,!0)||[]).map(Cdt);return!this._visibleRangesHaveGaps(o)&&this._roundedSelection&&this._enrichVisibleRangesWithStyle(t.visibleRange,o,i),o}_createSelectionPiece(e,t,i,n,o){return'<div class="cslr '+i+'" style="top:'+e.toString()+"px;bottom:"+t.toString()+"px;left:"+n.toString()+"px;width:"+o.toString()+'px;"></div>'}_actualRenderOneSelection(e,t,i,n){if(n.length===0)return;const o=!!n[0].ranges[0].startStyle,r=n[0].lineNumber,l=n[n.length-1].lineNumber;for(let a=0,d=n.length;a<d;a++){const c=n[a],h=c.lineNumber,u=h-t,m=i&&h===r?1:0,p=i&&h!==r&&h===l?1:0;let g="",f="";for(let b=0,U=c.ranges.length;b<U;b++){const S=c.ranges[b];if(o){const R=S.startStyle,y=S.endStyle;if(R.top===1||R.bottom===1){g+=this._createSelectionPiece(m,p,Go.SELECTION_CLASS_NAME,S.left-Go.ROUNDED_PIECE_WIDTH,Go.ROUNDED_PIECE_WIDTH);let N=Go.EDITOR_BACKGROUND_CLASS_NAME;R.top===1&&(N+=" "+Go.SELECTION_TOP_RIGHT),R.bottom===1&&(N+=" "+Go.SELECTION_BOTTOM_RIGHT),g+=this._createSelectionPiece(m,p,N,S.left-Go.ROUNDED_PIECE_WIDTH,Go.ROUNDED_PIECE_WIDTH)}if(y.top===1||y.bottom===1){g+=this._createSelectionPiece(m,p,Go.SELECTION_CLASS_NAME,S.left+S.width,Go.ROUNDED_PIECE_WIDTH);let N=Go.EDITOR_BACKGROUND_CLASS_NAME;y.top===1&&(N+=" "+Go.SELECTION_TOP_LEFT),y.bottom===1&&(N+=" "+Go.SELECTION_BOTTOM_LEFT),g+=this._createSelectionPiece(m,p,N,S.left+S.width,Go.ROUNDED_PIECE_WIDTH)}}let Z=Go.SELECTION_CLASS_NAME;if(o){const R=S.startStyle,y=S.endStyle;R.top===0&&(Z+=" "+Go.SELECTION_TOP_LEFT),R.bottom===0&&(Z+=" "+Go.SELECTION_BOTTOM_LEFT),y.top===0&&(Z+=" "+Go.SELECTION_TOP_RIGHT),y.bottom===0&&(Z+=" "+Go.SELECTION_BOTTOM_RIGHT)}f+=this._createSelectionPiece(m,p,Z,S.left,S.width)}e[u][0]+=g,e[u][1]+=f}}prepareRender(e){const t=[],i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber;for(let r=i;r<=n;r++){const l=r-i;t[l]=["",""]}const o=[];for(let r=0,l=this._selections.length;r<l;r++){const a=this._selections[r];if(a.isEmpty()){o[r]=null;continue}const d=this._getVisibleRangesWithStyle(a,e,this._previousFrameVisibleRangesWithStyle[r]);o[r]=d,this._actualRenderOneSelection(t,i,this._selections.length>1,d)}this._previousFrameVisibleRangesWithStyle=o,this._renderResult=t.map(([r,l])=>r+l)}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}};Go.SELECTION_CLASS_NAME="selected-text",Go.SELECTION_TOP_LEFT="top-left-radius",Go.SELECTION_BOTTOM_LEFT="bottom-left-radius",Go.SELECTION_TOP_RIGHT="top-right-radius",Go.SELECTION_BOTTOM_RIGHT="bottom-right-radius",Go.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",Go.ROUNDED_PIECE_WIDTH=10;let t$=Go;eu((s,e)=>{const t=s.getColor(E8e);t&&!t.isTransparent()&&e.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${t}; }`)});function SI(s){return s<0?-s:s}class vpe{constructor(e,t,i,n,o,r,l){this.top=e,this.left=t,this.paddingLeft=i,this.width=n,this.height=o,this.textContent=r,this.textContentClassName=l}}var Tf;(function(s){s[s.Single=0]="Single",s[s.MultiPrimary=1]="MultiPrimary",s[s.MultiSecondary=2]="MultiSecondary"})(Tf||(Tf={}));class kpe{constructor(e,t){this._context=e;const i=this._context.configuration.options,n=i.get(50);this._cursorStyle=i.get(28),this._lineHeight=i.get(67),this._typicalHalfwidthCharacterWidth=n.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(i.get(31),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=Kn(document.createElement("div")),this._domNode.setClassName(`cursor ${_1}`),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),hl(this._domNode,n),this._domNode.setDisplay("none"),this._position=new ge(1,1),this._pluralityClass="",this.setPlurality(t),this._lastRenderedContent="",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}setPlurality(e){switch(e){default:case Tf.Single:this._pluralityClass="";break;case Tf.MultiPrimary:this._pluralityClass="cursor-primary";break;case Tf.MultiSecondary:this._pluralityClass="cursor-secondary";break}}show(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(50);return this._cursorStyle=t.get(28),this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(31),this._typicalHalfwidthCharacterWidth),hl(this._domNode,i),!0}onCursorPositionChanged(e,t){return t?this._domNode.domNode.style.transitionProperty="none":this._domNode.domNode.style.transitionProperty="",this._position=e,!0}_getGraphemeAwarePosition(){const{lineNumber:e,column:t}=this._position,i=this._context.viewModel.getLineContent(e),[n,o]=LPe(i,t-1);return[new ge(e,n+1),i.substring(n,o)]}_prepareRender(e){let t="",i="";const[n,o]=this._getGraphemeAwarePosition();if(this._cursorStyle===sl.Line||this._cursorStyle===sl.LineThin){const u=e.visibleRangeForPosition(n);if(!u||u.outsideRenderedLine)return null;const m=ai(this._domNode.domNode);let p;this._cursorStyle===sl.Line?(p=uhe(m,this._lineCursorWidth>0?this._lineCursorWidth:2),p>2&&(t=o,i=this._getTokenClassName(n))):p=uhe(m,1);let g=u.left,f=0;p>=2&&g>=1&&(f=1,g-=f);const b=e.getVerticalOffsetForLineNumber(n.lineNumber)-e.bigNumbersDelta;return new vpe(b,g,f,p,this._lineHeight,t,i)}const r=e.linesVisibleRangesForRange(new z(n.lineNumber,n.column,n.lineNumber,n.column+o.length),!1);if(!r||r.length===0)return null;const l=r[0];if(l.outsideRenderedLine||l.ranges.length===0)return null;const a=l.ranges[0],d=o===" "?this._typicalHalfwidthCharacterWidth:a.width<1?this._typicalHalfwidthCharacterWidth:a.width;this._cursorStyle===sl.Block&&(t=o,i=this._getTokenClassName(n));let c=e.getVerticalOffsetForLineNumber(n.lineNumber)-e.bigNumbersDelta,h=this._lineHeight;return(this._cursorStyle===sl.Underline||this._cursorStyle===sl.UnderlineThin)&&(c+=this._lineHeight-2,h=2),new vpe(c,a.left,0,d,h,t,i)}_getTokenClassName(e){const t=this._context.viewModel.getViewLineData(e.lineNumber),i=t.tokens.findTokenIndexAtOffset(e.column-1);return t.tokens.getClassName(i)}prepareRender(e){this._renderData=this._prepareRender(e)}render(e){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName(`cursor ${this._pluralityClass} ${_1} ${this._renderData.textContentClassName}`),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setPaddingLeft(this._renderData.paddingLeft),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)}}const RB=class RB extends Zc{constructor(e){super(e);const t=this._context.configuration.options;this._readOnly=t.get(92),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._selectionIsEmpty=!0,this._isComposingInput=!1,this._isVisible=!1,this._primaryCursor=new kpe(this._context,Tf.Single),this._secondaryCursors=[],this._renderData=[],this._domNode=Kn(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._updateDomClassName(),this._domNode.appendChild(this._primaryCursor.getDomNode()),this._startCursorBlinkAnimation=new om,this._cursorFlatBlinkInterval=new xse,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onCompositionStart(e){return this._isComposingInput=!0,this._updateBlinking(),!0}onCompositionEnd(e){return this._isComposingInput=!1,this._updateBlinking(),!0}onConfigurationChanged(e){const t=this._context.configuration.options;this._readOnly=t.get(92),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(e);for(let i=0,n=this._secondaryCursors.length;i<n;i++)this._secondaryCursors[i].onConfigurationChanged(e);return!0}_onCursorPositionChanged(e,t,i){const n=this._secondaryCursors.length!==t.length||this._cursorSmoothCaretAnimation==="explicit"&&i!==3;if(this._primaryCursor.setPlurality(t.length?Tf.MultiPrimary:Tf.Single),this._primaryCursor.onCursorPositionChanged(e,n),this._updateBlinking(),this._secondaryCursors.length<t.length){const o=t.length-this._secondaryCursors.length;for(let r=0;r<o;r++){const l=new kpe(this._context,Tf.MultiSecondary);this._domNode.domNode.insertBefore(l.getDomNode().domNode,this._primaryCursor.getDomNode().domNode.nextSibling),this._secondaryCursors.push(l)}}else if(this._secondaryCursors.length>t.length){const o=this._secondaryCursors.length-t.length;for(let r=0;r<o;r++)this._domNode.removeChild(this._secondaryCursors[0].getDomNode()),this._secondaryCursors.splice(0,1)}for(let o=0;o<t.length;o++)this._secondaryCursors[o].onCursorPositionChanged(t[o],n)}onCursorStateChanged(e){const t=[];for(let n=0,o=e.selections.length;n<o;n++)t[n]=e.selections[n].getPosition();this._onCursorPositionChanged(t[0],t.slice(1),e.reason);const i=e.selections[0].isEmpty();return this._selectionIsEmpty!==i&&(this._selectionIsEmpty=i,this._updateDomClassName()),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onFocusChanged(e){return this._editorHasFocus=e.isFocused,this._updateBlinking(),!1}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return!0}onTokensChanged(e){const t=i=>{for(let n=0,o=e.ranges.length;n<o;n++)if(e.ranges[n].fromLineNumber<=i.lineNumber&&i.lineNumber<=e.ranges[n].toLineNumber)return!0;return!1};if(t(this._primaryCursor.getPosition()))return!0;for(const i of this._secondaryCursors)if(t(i.getPosition()))return!0;return!1}onZonesChanged(e){return!0}_getCursorBlinking(){return this._isComposingInput||!this._editorHasFocus?0:this._readOnly?5:this._cursorBlinking}_updateBlinking(){this._startCursorBlinkAnimation.cancel(),this._cursorFlatBlinkInterval.cancel();const e=this._getCursorBlinking(),t=e===0,i=e===5;t?this._hide():this._show(),this._blinkingEnabled=!1,this._updateDomClassName(),!t&&!i&&(e===1?this._cursorFlatBlinkInterval.cancelAndSet(()=>{this._isVisible?this._hide():this._show()},RB.BLINK_INTERVAL,ai(this._domNode.domNode)):this._startCursorBlinkAnimation.setIfNotSet(()=>{this._blinkingEnabled=!0,this._updateDomClassName()},RB.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let e="cursors-layer";switch(this._selectionIsEmpty||(e+=" has-selection"),this._cursorStyle){case sl.Line:e+=" cursor-line-style";break;case sl.Block:e+=" cursor-block-style";break;case sl.Underline:e+=" cursor-underline-style";break;case sl.LineThin:e+=" cursor-line-thin-style";break;case sl.BlockOutline:e+=" cursor-block-outline-style";break;case sl.UnderlineThin:e+=" cursor-underline-thin-style";break;default:e+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:e+=" cursor-blink";break;case 2:e+=" cursor-smooth";break;case 3:e+=" cursor-phase";break;case 4:e+=" cursor-expand";break;case 5:e+=" cursor-solid";break;default:e+=" cursor-solid"}else e+=" cursor-solid";return(this._cursorSmoothCaretAnimation==="on"||this._cursorSmoothCaretAnimation==="explicit")&&(e+=" cursor-smooth-caret-animation"),e}_show(){this._primaryCursor.show();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].show();this._isVisible=!0}_hide(){this._primaryCursor.hide();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].hide();this._isVisible=!1}prepareRender(e){this._primaryCursor.prepareRender(e);for(let t=0,i=this._secondaryCursors.length;t<i;t++)this._secondaryCursors[t].prepareRender(e)}render(e){const t=[];let i=0;const n=this._primaryCursor.render(e);n&&(t[i++]=n);for(let o=0,r=this._secondaryCursors.length;o<r;o++){const l=this._secondaryCursors[o].render(e);l&&(t[i++]=l)}this._renderData=t}getLastRenderData(){return this._renderData}};RB.BLINK_INTERVAL=500;let i$=RB;eu((s,e)=>{const t=[{class:".cursor",foreground:f9,background:voe},{class:".cursor-primary",foreground:ZRe,background:sit},{class:".cursor-secondary",foreground:SRe,background:oit}];for(const i of t){const n=s.getColor(i.foreground);if(n){let o=s.getColor(i.background);o||(o=n.opposite()),e.addRule(`.monaco-editor .cursors-layer ${i.class} { background-color: ${n}; border-color: ${n}; color: ${o}; }`),np(s.type)&&e.addRule(`.monaco-editor .cursors-layer.has-selection ${i.class} { border-left: 1px solid ${o}; border-right: 1px solid ${o}; }`)}}});const PP=()=>{throw new Error("Invalid change accessor")};class Bdt extends Zc{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(146);this._lineHeight=t.get(67),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,this.domNode=Kn(document.createElement("div")),this.domNode.setClassName("view-zones"),this.domNode.setPosition("absolute"),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.marginDomNode=Kn(document.createElement("div")),this.marginDomNode.setClassName("margin-view-zones"),this.marginDomNode.setPosition("absolute"),this.marginDomNode.setAttribute("role","presentation"),this.marginDomNode.setAttribute("aria-hidden","true"),this._zones={}}dispose(){super.dispose(),this._zones={}}_recomputeWhitespacesProps(){const e=this._context.viewLayout.getWhitespaces(),t=new Map;for(const n of e)t.set(n.id,n);let i=!1;return this._context.viewModel.changeWhitespace(n=>{const o=Object.keys(this._zones);for(let r=0,l=o.length;r<l;r++){const a=o[r],d=this._zones[a],c=this._computeWhitespaceProps(d.delegate);d.isInHiddenArea=c.isInHiddenArea;const h=t.get(a);h&&(h.afterLineNumber!==c.afterViewLineNumber||h.height!==c.heightInPx)&&(n.changeOneWhitespace(a,c.afterViewLineNumber,c.heightInPx),this._safeCallOnComputedHeight(d.delegate,c.heightInPx),i=!0)}}),i}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._lineHeight=t.get(67),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,e.hasChanged(67)&&this._recomputeWhitespacesProps(),!0}onLineMappingChanged(e){return this._recomputeWhitespacesProps()}onLinesDeleted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}onLinesInserted(e){return!0}_getZoneOrdinal(e){return e.ordinal??e.afterColumn??1e4}_computeWhitespaceProps(e){if(e.afterLineNumber===0)return{isInHiddenArea:!1,afterViewLineNumber:0,heightInPx:this._heightInPixels(e),minWidthInPx:this._minWidthInPixels(e)};let t;if(typeof e.afterColumn<"u")t=this._context.viewModel.model.validatePosition({lineNumber:e.afterLineNumber,column:e.afterColumn});else{const r=this._context.viewModel.model.validatePosition({lineNumber:e.afterLineNumber,column:1}).lineNumber;t=new ge(r,this._context.viewModel.model.getLineMaxColumn(r))}let i;t.column===this._context.viewModel.model.getLineMaxColumn(t.lineNumber)?i=this._context.viewModel.model.validatePosition({lineNumber:t.lineNumber+1,column:1}):i=this._context.viewModel.model.validatePosition({lineNumber:t.lineNumber,column:t.column+1});const n=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(t,e.afterColumnAffinity,!0),o=e.showInHiddenAreas||this._context.viewModel.coordinatesConverter.modelPositionIsVisible(i);return{isInHiddenArea:!o,afterViewLineNumber:n.lineNumber,heightInPx:o?this._heightInPixels(e):0,minWidthInPx:this._minWidthInPixels(e)}}changeViewZones(e){let t=!1;return this._context.viewModel.changeWhitespace(i=>{const n={addZone:o=>(t=!0,this._addZone(i,o)),removeZone:o=>{o&&(t=this._removeZone(i,o)||t)},layoutZone:o=>{o&&(t=this._layoutZone(i,o)||t)}};Ldt(e,n),n.addZone=PP,n.removeZone=PP,n.layoutZone=PP}),t}_addZone(e,t){const i=this._computeWhitespaceProps(t),o={whitespaceId:e.insertWhitespace(i.afterViewLineNumber,this._getZoneOrdinal(t),i.heightInPx,i.minWidthInPx),delegate:t,isInHiddenArea:i.isInHiddenArea,isVisible:!1,domNode:Kn(t.domNode),marginDomNode:t.marginDomNode?Kn(t.marginDomNode):null};return this._safeCallOnComputedHeight(o.delegate,i.heightInPx),o.domNode.setPosition("absolute"),o.domNode.domNode.style.width="100%",o.domNode.setDisplay("none"),o.domNode.setAttribute("monaco-view-zone",o.whitespaceId),this.domNode.appendChild(o.domNode),o.marginDomNode&&(o.marginDomNode.setPosition("absolute"),o.marginDomNode.domNode.style.width="100%",o.marginDomNode.setDisplay("none"),o.marginDomNode.setAttribute("monaco-view-zone",o.whitespaceId),this.marginDomNode.appendChild(o.marginDomNode)),this._zones[o.whitespaceId]=o,this.setShouldRender(),o.whitespaceId}_removeZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t];return delete this._zones[t],e.removeWhitespace(i.whitespaceId),i.domNode.removeAttribute("monaco-visible-view-zone"),i.domNode.removeAttribute("monaco-view-zone"),i.domNode.domNode.remove(),i.marginDomNode&&(i.marginDomNode.removeAttribute("monaco-visible-view-zone"),i.marginDomNode.removeAttribute("monaco-view-zone"),i.marginDomNode.domNode.remove()),this.setShouldRender(),!0}return!1}_layoutZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t],n=this._computeWhitespaceProps(i.delegate);return i.isInHiddenArea=n.isInHiddenArea,e.changeOneWhitespace(i.whitespaceId,n.afterViewLineNumber,n.heightInPx),this._safeCallOnComputedHeight(i.delegate,n.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(e){return this._zones.hasOwnProperty(e)?!!this._zones[e].delegate.suppressMouseDown:!1}_heightInPixels(e){return typeof e.heightInPx=="number"?e.heightInPx:typeof e.heightInLines=="number"?this._lineHeight*e.heightInLines:this._lineHeight}_minWidthInPixels(e){return typeof e.minWidthInPx=="number"?e.minWidthInPx:0}_safeCallOnComputedHeight(e,t){if(typeof e.onComputedHeight=="function")try{e.onComputedHeight(t)}catch(i){wi(i)}}_safeCallOnDomNodeTop(e,t){if(typeof e.onDomNodeTop=="function")try{e.onDomNodeTop(t)}catch(i){wi(i)}}prepareRender(e){}render(e){const t=e.viewportData.whitespaceViewportData,i={};let n=!1;for(const r of t)this._zones[r.id].isInHiddenArea||(i[r.id]=r,n=!0);const o=Object.keys(this._zones);for(let r=0,l=o.length;r<l;r++){const a=o[r],d=this._zones[a];let c=0,h=0,u="none";i.hasOwnProperty(a)?(c=i[a].verticalOffset-e.bigNumbersDelta,h=i[a].height,u="block",d.isVisible||(d.domNode.setAttribute("monaco-visible-view-zone","true"),d.isVisible=!0),this._safeCallOnDomNodeTop(d.delegate,e.getScrolledTopFromAbsoluteTop(i[a].verticalOffset))):(d.isVisible&&(d.domNode.removeAttribute("monaco-visible-view-zone"),d.isVisible=!1),this._safeCallOnDomNodeTop(d.delegate,e.getScrolledTopFromAbsoluteTop(-1e6))),d.domNode.setTop(c),d.domNode.setHeight(h),d.domNode.setDisplay(u),d.marginDomNode&&(d.marginDomNode.setTop(c),d.marginDomNode.setHeight(h),d.marginDomNode.setDisplay(u))}n&&(this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth)),this.marginDomNode.setWidth(this._contentLeft))}}function Ldt(s,e){try{return s(e)}catch(t){wi(t)}}class vdt extends sR{constructor(e){super(),this._context=e,this._options=new xpe(this._context.configuration),this._selection=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=new xpe(this._context.configuration);return this._options.equals(t)?e.hasChanged(146):(this._options=t,!0)}onCursorStateChanged(e){return this._selection=e.selections,this._options.renderWhitespace==="selection"}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}prepareRender(e){if(this._options.renderWhitespace==="none"){this._renderResult=null;return}const t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber-t+1,o=new Array(n);for(let l=0;l<n;l++)o[l]=!0;const r=this._context.viewModel.getMinimapLinesRenderingData(e.viewportData.startLineNumber,e.viewportData.endLineNumber,o);this._renderResult=[];for(let l=e.viewportData.startLineNumber;l<=e.viewportData.endLineNumber;l++){const a=l-e.viewportData.startLineNumber,d=r.data[a];let c=null;if(this._options.renderWhitespace==="selection"){const h=this._selection;for(const u of h){if(u.endLineNumber<l||u.startLineNumber>l)continue;const m=u.startLineNumber===l?u.startColumn:d.minColumn,p=u.endLineNumber===l?u.endColumn:d.maxColumn;m<p&&(c||(c=[]),c.push(new XVe(m-1,p-1)))}}this._renderResult[a]=this._applyRenderWhitespace(e,l,c,d)}}_applyRenderWhitespace(e,t,i,n){if(this._options.renderWhitespace==="selection"&&!i||this._options.renderWhitespace==="trailing"&&n.continuesWithWrappedLine)return"";const o=this._context.theme.getColor(koe),r=this._options.renderWithSVG,l=n.content,a=this._options.stopRenderingLineAfter===-1?l.length:Math.min(this._options.stopRenderingLineAfter,l.length),d=n.continuesWithWrappedLine,c=n.minColumn-1,h=this._options.renderWhitespace==="boundary",u=this._options.renderWhitespace==="trailing",m=this._options.lineHeight,p=this._options.middotWidth,g=this._options.wsmiddotWidth,f=this._options.spaceWidth,b=Math.abs(g-f),U=Math.abs(p-f),S=b<U?11825:183,Z=this._options.canUseHalfwidthRightwardsArrow;let R="",y=!1,N=Ua(l),w;N===-1?(y=!0,N=a,w=a):w=ip(l);let Q=0,C=i&&i[Q],v=0;for(let Y=c;Y<a;Y++){const J=l.charCodeAt(Y);if(C&&Y>=C.endOffset&&(Q++,C=i&&i[Q]),J!==9&&J!==32||u&&!y&&Y<=w)continue;if(h&&Y>=N&&Y<=w&&J===32){const E=Y-1>=0?l.charCodeAt(Y-1):0,K=Y+1<a?l.charCodeAt(Y+1):0;if(E!==32&&K!==32)continue}if(h&&d&&Y===a-1){const E=Y-1>=0?l.charCodeAt(Y-1):0;if(J===32&&E!==32&&E!==9)continue}if(i&&(!C||C.startOffset>Y||C.endOffset<=Y))continue;const k=e.visibleRangeForPosition(new ge(t,Y+1));k&&(r?(v=Math.max(v,k.left),J===9?R+=this._renderArrow(m,f,k.left):R+=`<circle cx="${(k.left+f/2).toFixed(2)}" cy="${(m/2).toFixed(2)}" r="${(f/7).toFixed(2)}" />`):J===9?R+=`<div class="mwh" style="left:${k.left}px;height:${m}px;">${Z?String.fromCharCode(65515):String.fromCharCode(8594)}</div>`:R+=`<div class="mwh" style="left:${k.left}px;height:${m}px;">${String.fromCharCode(S)}</div>`)}return r?(v=Math.round(v+f),`<svg style="bottom:0;position:absolute;width:${v}px;height:${m}px" viewBox="0 0 ${v} ${m}" xmlns="http://www.w3.org/2000/svg" fill="${o}">`+R+"</svg>"):R}_renderArrow(e,t,i){const n=t/7,o=t,r=e/2,l=i,a={x:0,y:n/2},d={x:100/125*o,y:a.y},c={x:d.x-.2*d.x,y:d.y+.2*d.x},h={x:c.x+.1*d.x,y:c.y+.1*d.x},u={x:h.x+.35*d.x,y:h.y-.35*d.x},m={x:u.x,y:-u.y},p={x:h.x,y:-h.y},g={x:c.x,y:-c.y},f={x:d.x,y:-d.y},b={x:a.x,y:-a.y};return`<path d="M ${[a,d,c,h,u,m,p,g,f,b].map(Z=>`${(l+Z.x).toFixed(2)} ${(r+Z.y).toFixed(2)}`).join(" L ")}" />`}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class xpe{constructor(e){const t=e.options,i=t.get(50),n=t.get(38);n==="off"?(this.renderWhitespace="none",this.renderWithSVG=!1):n==="svg"?(this.renderWhitespace=t.get(100),this.renderWithSVG=!0):(this.renderWhitespace=t.get(100),this.renderWithSVG=!1),this.spaceWidth=i.spaceWidth,this.middotWidth=i.middotWidth,this.wsmiddotWidth=i.wsmiddotWidth,this.canUseHalfwidthRightwardsArrow=i.canUseHalfwidthRightwardsArrow,this.lineHeight=t.get(67),this.stopRenderingLineAfter=t.get(118)}equals(e){return this.renderWhitespace===e.renderWhitespace&&this.renderWithSVG===e.renderWithSVG&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter}}class kdt{constructor(e,t,i,n){this.selections=e,this.startLineNumber=t.startLineNumber|0,this.endLineNumber=t.endLineNumber|0,this.relativeVerticalOffset=t.relativeVerticalOffset,this.bigNumbersDelta=t.bigNumbersDelta|0,this.lineHeight=t.lineHeight|0,this.whitespaceViewportData=i,this._model=n,this.visibleRange=new z(t.startLineNumber,this._model.getLineMinColumn(t.startLineNumber),t.endLineNumber,this._model.getLineMaxColumn(t.endLineNumber))}getViewLineRenderingData(e){return this._model.getViewportViewLineRenderingData(this.visibleRange,e)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}class xdt{get type(){return this._theme.type}get value(){return this._theme}constructor(e){this._theme=e}update(e){this._theme=e}getColor(e){return this._theme.getColor(e)}}class Idt{constructor(e,t,i){this.configuration=e,this.theme=new xdt(t),this.viewModel=i,this.viewLayout=i.viewLayout}addEventHandler(e){this.viewModel.addViewEventHandler(e)}removeEventHandler(e){this.viewModel.removeViewEventHandler(e)}}var Edt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ddt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let n$=class extends fk{constructor(e,t,i,n,o,r,l){super(),this._instantiationService=l,this._shouldRecomputeGlyphMarginLanes=!1,this._selections=[new _t(1,1,1,1)],this._renderAnimationFrame=null;const a=new jat(t,n,o,e);this._context=new Idt(t,i,n),this._context.addEventHandler(this),this._viewParts=[],this._textAreaHandler=this._instantiationService.createInstance(Pq,this._context,a,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=Kn(document.createElement("div")),this._linesContent.setClassName("lines-content monaco-editor-background"),this._linesContent.setPosition("absolute"),this.domNode=Kn(document.createElement("div")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute("role","code"),this._overflowGuardContainer=Kn(document.createElement("div")),up.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName("overflow-guard"),this._scrollbar=new sdt(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new e$(this._context,this._linesContent),this._viewZones=new Bdt(this._context),this._viewParts.push(this._viewZones);const d=new Rdt(this._context);this._viewParts.push(d);const c=new Qdt(this._context);this._viewParts.push(c);const h=new Hat(this._context);this._viewParts.push(h),h.addDynamicOverlay(new tdt(this._context)),h.addDynamicOverlay(new t$(this._context)),h.addDynamicOverlay(new hdt(this._context)),h.addDynamicOverlay(new ndt(this._context)),h.addDynamicOverlay(new vdt(this._context));const u=new Kat(this._context);this._viewParts.push(u),u.addDynamicOverlay(new idt(this._context)),u.addDynamicOverlay(new fdt(this._context)),u.addDynamicOverlay(new gdt(this._context)),u.addDynamicOverlay(new R5(this._context)),this._glyphMarginWidgets=new ldt(this._context),this._viewParts.push(this._glyphMarginWidgets);const m=new V5(this._context);m.getDomNode().appendChild(this._viewZones.marginDomNode),m.getDomNode().appendChild(u.getDomNode()),m.getDomNode().appendChild(this._glyphMarginWidgets.domNode),this._viewParts.push(m),this._contentWidgets=new $at(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new i$(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new Sdt(this._context,this.domNode),this._viewParts.push(this._overlayWidgets);const p=new ydt(this._context);this._viewParts.push(p);const g=new qat(this._context);this._viewParts.push(g);const f=new Zdt(this._context);if(this._viewParts.push(f),d){const b=this._scrollbar.getOverviewRulerLayoutInfo();b.parent.insertBefore(d.getDomNode(),b.insertBefore)}this._linesContent.appendChild(h.getDomNode()),this._linesContent.appendChild(p.domNode),this._linesContent.appendChild(this._viewZones.domNode),this._linesContent.appendChild(this._viewLines.getDomNode()),this._linesContent.appendChild(this._contentWidgets.domNode),this._linesContent.appendChild(this._viewCursors.getDomNode()),this._overflowGuardContainer.appendChild(m.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(c.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(f.getDomNode()),this._overflowGuardContainer.appendChild(g.domNode),this.domNode.appendChild(this._overflowGuardContainer),r?(r.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode),r.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode)):(this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode)),this._applyLayout(),this._pointerHandler=this._register(new fat(this._context,a,this._createPointerHandlerHelper()))}_computeGlyphMarginLanes(){const e=this._context.viewModel.model,t=this._context.viewModel.glyphLanes;let i=[],n=0;i=i.concat(e.getAllMarginDecorations().map(o=>{var l,a;const r=((l=o.options.glyphMargin)==null?void 0:l.position)??em.Center;return n=Math.max(n,o.range.endLineNumber),{range:o.range,lane:r,persist:(a=o.options.glyphMargin)==null?void 0:a.persistLane}})),i=i.concat(this._glyphMarginWidgets.getWidgets().map(o=>{const r=e.validateRange(o.preference.range);return n=Math.max(n,r.endLineNumber),{range:r,lane:o.preference.lane}})),i.sort((o,r)=>z.compareRangesUsingStarts(o.range,r.range)),t.reset(n);for(const o of i)t.push(o.lane,o.range,o.persist);return t}_createPointerHandlerHelper(){return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,viewLinesDomNode:this._viewLines.getDomNode().domNode,focusTextArea:()=>{this.focus()},dispatchTextAreaEvent:e=>{this._textAreaHandler.textArea.domNode.dispatchEvent(e)},getLastRenderData:()=>{const e=this._viewCursors.getLastRenderData()||[],t=this._textAreaHandler.getLastRenderData();return new sat(e,t)},renderNow:()=>{this.render(!0,!1)},shouldSuppressMouseDownOnViewZone:e=>this._viewZones.shouldSuppressMouseDownOnViewZone(e),shouldSuppressMouseDownOnWidget:e=>this._contentWidgets.shouldSuppressMouseDownOnWidget(e),getPositionFromDOMInfo:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(e,t)),visibleRangeForPosition:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new ge(e,t))),getLineWidth:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(e))}}_createTextAreaHandlerHelper(){return{visibleRangeForPosition:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(e))}}_applyLayout(){const t=this._context.configuration.options.get(146);this.domNode.setWidth(t.width),this.domNode.setHeight(t.height),this._overflowGuardContainer.setWidth(t.width),this._overflowGuardContainer.setHeight(t.height),this._linesContent.setWidth(16777216),this._linesContent.setHeight(16777216)}_getEditorClassName(){const e=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(143)+" "+v8(this._context.theme.type)+e}handleEvents(e){super.handleEvents(e),this._scheduleRender()}onConfigurationChanged(e){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(e){return this._selections=e.selections,!1}onDecorationsChanged(e){return e.affectsGlyphMargin&&(this._shouldRecomputeGlyphMarginLanes=!0),!1}onFocusChanged(e){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(e){return this._context.theme.update(e.theme),this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){this._renderAnimationFrame!==null&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(const e of this._viewParts)e.dispose();super.dispose()}_scheduleRender(){var e;if(this._store.isDisposed)throw new _n;if(this._renderAnimationFrame===null){const t=this._createCoordinatedRendering();this._renderAnimationFrame=s$.INSTANCE.scheduleCoordinatedRendering({window:ai((e=this.domNode)==null?void 0:e.domNode),prepareRenderText:()=>{if(this._store.isDisposed)throw new _n;try{return t.prepareRenderText()}finally{this._renderAnimationFrame=null}},renderText:()=>{if(this._store.isDisposed)throw new _n;return t.renderText()},prepareRender:(i,n)=>{if(this._store.isDisposed)throw new _n;return t.prepareRender(i,n)},render:(i,n)=>{if(this._store.isDisposed)throw new _n;return t.render(i,n)}})}}_flushAccumulatedAndRenderNow(){const e=this._createCoordinatedRendering();$U(()=>e.prepareRenderText());const t=$U(()=>e.renderText());if(t){const[i,n]=t;$U(()=>e.prepareRender(i,n)),$U(()=>e.render(i,n))}}_getViewPartsToRender(){const e=[];let t=0;for(const i of this._viewParts)i.shouldRender()&&(e[t++]=i);return e}_createCoordinatedRendering(){return{prepareRenderText:()=>{if(this._shouldRecomputeGlyphMarginLanes){this._shouldRecomputeGlyphMarginLanes=!1;const e=this._computeGlyphMarginLanes();this._context.configuration.setGlyphMarginDecorationLaneCount(e.requiredLanes)}qU.onRenderStart()},renderText:()=>{if(!this.domNode.domNode.isConnected)return null;let e=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&e.length===0)return null;const t=this._context.viewLayout.getLinesViewportData();this._context.viewModel.setViewport(t.startLineNumber,t.endLineNumber,t.centeredLineNumber);const i=new kdt(this._selections,t,this._context.viewLayout.getWhitespaceViewportData(),this._context.viewModel);return this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(i),this._viewLines.shouldRender()&&(this._viewLines.renderText(i),this._viewLines.onDidRender(),e=this._getViewPartsToRender()),[e,new Klt(this._context.viewLayout,i,this._viewLines)]},prepareRender:(e,t)=>{for(const i of e)i.prepareRender(t)},render:(e,t)=>{for(const i of e)i.render(t),i.onDidRender()}}}delegateVerticalScrollbarPointerDown(e){this._scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this._scrollbar.delegateScrollFromMouseWheelEvent(e)}restoreState(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft},1),this._context.viewModel.visibleLinesStabilized()}getOffsetForColumn(e,t){const i=this._context.viewModel.model.validatePosition({lineNumber:e,column:t}),n=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i);this._flushAccumulatedAndRenderNow();const o=this._viewLines.visibleRangeForPosition(new ge(n.lineNumber,n.column));return o?o.left:-1}getTargetAtClientPoint(e,t){const i=this._pointerHandler.getTargetAtClientPoint(e,t);return i?C9.convertViewToModelMouseTarget(i,this._context.viewModel.coordinatesConverter):null}createOverviewRuler(e){return new Wdt(this._context,e)}change(e){this._viewZones.changeViewZones(e),this._scheduleRender()}render(e,t){if(t){this._viewLines.forceShouldRender();for(const i of this._viewParts)i.forceShouldRender()}e?this._flushAccumulatedAndRenderNow():this._scheduleRender()}writeScreenReaderContent(e){this._textAreaHandler.writeScreenReaderContent(e)}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(e){this._textAreaHandler.setAriaOptions(e)}addContentWidget(e){this._contentWidgets.addWidget(e.widget),this.layoutContentWidget(e),this._scheduleRender()}layoutContentWidget(e){var t,i,n,o;this._contentWidgets.setWidgetPosition(e.widget,((t=e.position)==null?void 0:t.position)??null,((i=e.position)==null?void 0:i.secondaryPosition)??null,((n=e.position)==null?void 0:n.preference)??null,((o=e.position)==null?void 0:o.positionAffinity)??null),this._scheduleRender()}removeContentWidget(e){this._contentWidgets.removeWidget(e.widget),this._scheduleRender()}addOverlayWidget(e){this._overlayWidgets.addWidget(e.widget),this.layoutOverlayWidget(e),this._scheduleRender()}layoutOverlayWidget(e){this._overlayWidgets.setWidgetPosition(e.widget,e.position)&&this._scheduleRender()}removeOverlayWidget(e){this._overlayWidgets.removeWidget(e.widget),this._scheduleRender()}addGlyphMarginWidget(e){this._glyphMarginWidgets.addWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}layoutGlyphMarginWidget(e){const t=e.position;this._glyphMarginWidgets.setWidgetPosition(e.widget,t)&&(this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender())}removeGlyphMarginWidget(e){this._glyphMarginWidgets.removeWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}};n$=Edt([Ddt(6,ti)],n$);function $U(s){try{return s()}catch(e){return wi(e),null}}const lz=class lz{constructor(){this._coordinatedRenderings=[],this._animationFrameRunners=new Map}scheduleCoordinatedRendering(e){return this._coordinatedRenderings.push(e),this._scheduleRender(e.window),{dispose:()=>{const t=this._coordinatedRenderings.indexOf(e);if(t!==-1&&(this._coordinatedRenderings.splice(t,1),this._coordinatedRenderings.length===0)){for(const[i,n]of this._animationFrameRunners)n.dispose();this._animationFrameRunners.clear()}}}}_scheduleRender(e){if(!this._animationFrameRunners.has(e)){const t=()=>{this._animationFrameRunners.delete(e),this._onRenderScheduled()};this._animationFrameRunners.set(e,aX(e,t,100))}}_onRenderScheduled(){const e=this._coordinatedRenderings.slice(0);this._coordinatedRenderings=[];for(const i of e)$U(()=>i.prepareRenderText());const t=[];for(let i=0,n=e.length;i<n;i++){const o=e[i];t[i]=$U(()=>o.renderText())}for(let i=0,n=e.length;i<n;i++){const o=e[i],r=t[i];if(!r)continue;const[l,a]=r;$U(()=>o.prepareRender(l,a))}for(let i=0,n=e.length;i<n;i++){const o=e[i],r=t[i];if(!r)continue;const[l,a]=r;$U(()=>o.render(l,a))}}};lz.INSTANCE=new lz;let s$=lz;class f2{constructor(e,t,i,n,o){this.injectionOffsets=e,this.injectionOptions=t,this.breakOffsets=i,this.breakOffsetsVisibleColumn=n,this.wrappedTextIndentLength=o}getOutputLineCount(){return this.breakOffsets.length}getMinOutputOffset(e){return e>0?this.wrappedTextIndentLength:0}getLineLength(e){const t=e>0?this.breakOffsets[e-1]:0;let n=this.breakOffsets[e]-t;return e>0&&(n+=this.wrappedTextIndentLength),n}getMaxOutputOffset(e){return this.getLineLength(e)}translateToInputOffset(e,t){e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength));let n=e===0?t:this.breakOffsets[e-1]+t;if(this.injectionOffsets!==null)for(let o=0;o<this.injectionOffsets.length&&n>this.injectionOffsets[o];o++)n<this.injectionOffsets[o]+this.injectionOptions[o].content.length?n=this.injectionOffsets[o]:n-=this.injectionOptions[o].content.length;return n}translateToOutputPosition(e,t=2){let i=e;if(this.injectionOffsets!==null)for(let n=0;n<this.injectionOffsets.length&&!(e<this.injectionOffsets[n]||t!==1&&e===this.injectionOffsets[n]);n++)i+=this.injectionOptions[n].content.length;return this.offsetInInputWithInjectionsToOutputPosition(i,t)}offsetInInputWithInjectionsToOutputPosition(e,t=2){let i=0,n=this.breakOffsets.length-1,o=0,r=0;for(;i<=n;){o=i+(n-i)/2|0;const a=this.breakOffsets[o];if(r=o>0?this.breakOffsets[o-1]:0,t===0)if(e<=r)n=o-1;else if(e>a)i=o+1;else break;else if(e<r)n=o-1;else if(e>=a)i=o+1;else break}let l=e-r;return o>0&&(l+=this.wrappedTextIndentLength),new NI(o,l)}normalizeOutputPosition(e,t,i){if(this.injectionOffsets!==null){const n=this.outputPositionToOffsetInInputWithInjections(e,t),o=this.normalizeOffsetInInputWithInjectionsAroundInjections(n,i);if(o!==n)return this.offsetInInputWithInjectionsToOutputPosition(o,i)}if(i===0){if(e>0&&t===this.getMinOutputOffset(e))return new NI(e-1,this.getMaxOutputOffset(e-1))}else if(i===1){const n=this.getOutputLineCount()-1;if(e<n&&t===this.getMaxOutputOffset(e))return new NI(e+1,this.getMinOutputOffset(e+1))}return new NI(e,t)}outputPositionToOffsetInInputWithInjections(e,t){return e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength)),(e>0?this.breakOffsets[e-1]:0)+t}normalizeOffsetInInputWithInjectionsAroundInjections(e,t){const i=this.getInjectedTextAtOffset(e);if(!i)return e;if(t===2){if(e===i.offsetInInputWithInjections+i.length&&Ipe(this.injectionOptions[i.injectedTextIndex].cursorStops))return i.offsetInInputWithInjections+i.length;{let n=i.offsetInInputWithInjections;if(Epe(this.injectionOptions[i.injectedTextIndex].cursorStops))return n;let o=i.injectedTextIndex-1;for(;o>=0&&this.injectionOffsets[o]===this.injectionOffsets[i.injectedTextIndex]&&!(Ipe(this.injectionOptions[o].cursorStops)||(n-=this.injectionOptions[o].content.length,Epe(this.injectionOptions[o].cursorStops)));)o--;return n}}else if(t===1||t===4){let n=i.offsetInInputWithInjections+i.length,o=i.injectedTextIndex;for(;o+1<this.injectionOffsets.length&&this.injectionOffsets[o+1]===this.injectionOffsets[o];)n+=this.injectionOptions[o+1].content.length,o++;return n}else if(t===0||t===3){let n=i.offsetInInputWithInjections,o=i.injectedTextIndex;for(;o-1>=0&&this.injectionOffsets[o-1]===this.injectionOffsets[o];)n-=this.injectionOptions[o-1].content.length,o--;return n}G3()}getInjectedText(e,t){const i=this.outputPositionToOffsetInInputWithInjections(e,t),n=this.getInjectedTextAtOffset(i);return n?{options:this.injectionOptions[n.injectedTextIndex]}:null}getInjectedTextAtOffset(e){const t=this.injectionOffsets,i=this.injectionOptions;if(t!==null){let n=0;for(let o=0;o<t.length;o++){const r=i[o].content.length,l=t[o]+n,a=t[o]+n+r;if(l>e)break;if(e<=a)return{injectedTextIndex:o,offsetInInputWithInjections:l,length:r};n+=r}}}}function Ipe(s){return s==null?!0:s===zu.Right||s===zu.Both}function Epe(s){return s==null?!0:s===zu.Left||s===zu.Both}class NI{constructor(e,t){this.outputLineIndex=e,this.outputOffset=t}toString(){return`${this.outputLineIndex}:${this.outputOffset}`}toPosition(e){return new ge(e+this.outputLineIndex,this.outputOffset+1)}}const HP=lb("domLineBreaksComputer",{createHTML:s=>s});class wre{static create(e){return new wre(new WeakRef(e))}constructor(e){this.targetWindow=e}createLineBreaksComputer(e,t,i,n,o){const r=[],l=[];return{addRequest:(a,d,c)=>{r.push(a),l.push(d)},finalize:()=>Gdt(YU(this.targetWindow.deref()),r,e,t,i,n,o,l)}}}function Gdt(s,e,t,i,n,o,r,l){function a(Q){const C=l[Q];if(C){const v=dp.applyInjectedText(e[Q],C),Y=C.map(k=>k.options),J=C.map(k=>k.column-1);return new f2(J,Y,[v.length],[],0)}else return null}if(n===-1){const Q=[];for(let C=0,v=e.length;C<v;C++)Q[C]=a(C);return Q}const d=Math.round(n*t.typicalHalfwidthCharacterWidth),h=Math.round(i*(o===3?2:o===2?1:0)),u=Math.ceil(t.spaceWidth*h),m=document.createElement("div");hl(m,t);const p=new gM(1e4),g=[],f=[],b=[],U=[],S=[];for(let Q=0;Q<e.length;Q++){const C=dp.applyInjectedText(e[Q],l[Q]);let v=0,Y=0,J=d;if(o!==0)if(v=Ua(C),v===-1)v=0;else{for(let de=0;de<v;de++){const ee=C.charCodeAt(de)===9?i-Y%i:1;Y+=ee}const K=Math.ceil(t.spaceWidth*Y);K+t.typicalFullwidthCharacterWidth>d?(v=0,Y=0):J=d-K}const k=C.substr(v),E=Jdt(k,Y,i,J,p,u);g[Q]=v,f[Q]=Y,b[Q]=k,U[Q]=E[0],S[Q]=E[1]}const Z=p.build(),R=(HP==null?void 0:HP.createHTML(Z))??Z;m.innerHTML=R,m.style.position="absolute",m.style.top="10000",r==="keepAll"?(m.style.wordBreak="keep-all",m.style.overflowWrap="anywhere"):(m.style.wordBreak="inherit",m.style.overflowWrap="break-word"),s.document.body.appendChild(m);const y=document.createRange(),N=Array.prototype.slice.call(m.children,0),w=[];for(let Q=0;Q<e.length;Q++){const C=N[Q],v=Xdt(y,C,b[Q],U[Q]);if(v===null){w[Q]=a(Q);continue}const Y=g[Q],J=f[Q]+h,k=S[Q],E=[];for(let le=0,Fe=v.length;le<Fe;le++)E[le]=k[v[le]];if(Y!==0)for(let le=0,Fe=v.length;le<Fe;le++)v[le]+=Y;let K,de;const ee=l[Q];ee?(K=ee.map(le=>le.options),de=ee.map(le=>le.column-1)):(K=null,de=null),w[Q]=new f2(de,K,v,E,J)}return m.remove(),w}function Jdt(s,e,t,i,n,o){if(o!==0){const u=String(o);n.appendString('<div style="text-indent: -'),n.appendString(u),n.appendString("px; padding-left: "),n.appendString(u),n.appendString("px; box-sizing: border-box; width:")}else n.appendString('<div style="width:');n.appendString(String(i)),n.appendString('px;">');const r=s.length;let l=e,a=0;const d=[],c=[];let h=0<r?s.charCodeAt(0):0;n.appendString("<span>");for(let u=0;u<r;u++){u!==0&&u%16384===0&&n.appendString("</span><span>"),d[u]=a,c[u]=l;const m=h;h=u+1<r?s.charCodeAt(u+1):0;let p=1,g=1;switch(m){case 9:p=t-l%t,g=p;for(let f=1;f<=p;f++)f<p?n.appendCharCode(160):n.appendASCIICharCode(32);break;case 32:h===32?n.appendCharCode(160):n.appendASCIICharCode(32);break;case 60:n.appendString("<");break;case 62:n.appendString(">");break;case 38:n.appendString("&");break;case 0:n.appendString("�");break;case 65279:case 8232:case 8233:case 133:n.appendCharCode(65533);break;default:vF(m)&&g++,m<32?n.appendCharCode(9216+m):n.appendCharCode(m)}a+=p,l+=g}return n.appendString("</span>"),d[s.length]=a,c[s.length]=l,n.appendString("</div>"),[d,c]}function Xdt(s,e,t,i){if(t.length<=1)return null;const n=Array.prototype.slice.call(e.children,0),o=[];try{o$(s,n,i,0,null,t.length-1,null,o)}catch(r){return console.log(r),null}return o.length===0?null:(o.push(t.length),o)}function o$(s,e,t,i,n,o,r,l){if(i===o||(n=n||KP(s,e,t[i],t[i+1]),r=r||KP(s,e,t[o],t[o+1]),Math.abs(n[0].top-r[0].top)<=.1))return;if(i+1===o){l.push(o);return}const a=i+(o-i)/2|0,d=KP(s,e,t[a],t[a+1]);o$(s,e,t,i,n,a,d,l),o$(s,e,t,a,d,o,r,l)}function KP(s,e,t,i){return s.setStart(e[t/16384|0].firstChild,t%16384),s.setEnd(e[i/16384|0].firstChild,i%16384),s.getClientRects()}class Ydt extends be{constructor(){super(),this._editor=null,this._instantiationService=null,this._instances=this._register(new Zse),this._pending=new Map,this._finishedInstantiation=[],this._finishedInstantiation[0]=!1,this._finishedInstantiation[1]=!1,this._finishedInstantiation[2]=!1,this._finishedInstantiation[3]=!1}initialize(e,t,i){this._editor=e,this._instantiationService=i;for(const n of t){if(this._pending.has(n.id)){wi(new Error(`Cannot have two contributions with the same id ${n.id}`));continue}this._pending.set(n.id,n)}this._instantiateSome(0),this._register(RT(ai(this._editor.getDomNode()),()=>{this._instantiateSome(1)})),this._register(RT(ai(this._editor.getDomNode()),()=>{this._instantiateSome(2)})),this._register(RT(ai(this._editor.getDomNode()),()=>{this._instantiateSome(3)},5e3))}saveViewState(){const e={};for(const[t,i]of this._instances)typeof i.saveViewState=="function"&&(e[t]=i.saveViewState());return e}restoreViewState(e){for(const[t,i]of this._instances)typeof i.restoreViewState=="function"&&i.restoreViewState(e[t])}get(e){return this._instantiateById(e),this._instances.get(e)||null}onBeforeInteractionEvent(){this._instantiateSome(2)}onAfterModelAttached(){var e;return RT(ai((e=this._editor)==null?void 0:e.getDomNode()),()=>{this._instantiateSome(1)},50)}_instantiateSome(e){if(this._finishedInstantiation[e])return;this._finishedInstantiation[e]=!0;const t=this._findPendingContributionsByInstantiation(e);for(const i of t)this._instantiateById(i.id)}_findPendingContributionsByInstantiation(e){const t=[];for(const[,i]of this._pending)i.instantiation===e&&t.push(i);return t}_instantiateById(e){const t=this._pending.get(e);if(t){if(this._pending.delete(e),!this._instantiationService||!this._editor)throw new Error("Cannot instantiate contributions before being initialized!");try{const i=this._instantiationService.createInstance(t.ctor,this._editor);this._instances.set(t.id,i),typeof i.restoreViewState=="function"&&t.instantiation!==0&&console.warn(`Editor contribution '${t.id}' should be eager instantiated because it uses saveViewState / restoreViewState.`)}catch(i){wi(i)}}}}class uWe{constructor(e,t,i,n,o,r,l){this.id=e,this.label=t,this.alias=i,this.metadata=n,this._precondition=o,this._run=r,this._contextKeyService=l}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(e){return this.isSupported()?this._run(e):Promise.resolve(void 0)}}class Tre{static create(e){return new Tre(e.get(135),e.get(134))}constructor(e,t){this.classifier=new _dt(e,t)}createLineBreaksComputer(e,t,i,n,o){const r=[],l=[],a=[];return{addRequest:(d,c,h)=>{r.push(d),l.push(c),a.push(h)},finalize:()=>{const d=e.typicalFullwidthCharacterWidth/e.typicalHalfwidthCharacterWidth,c=[];for(let h=0,u=r.length;h<u;h++){const m=l[h],p=a[h];p&&!p.injectionOptions&&!m?c[h]=zdt(this.classifier,p,r[h],t,i,d,n,o):c[h]=Odt(this.classifier,r[h],m,t,i,d,n,o)}return r$.length=0,l$.length=0,c}}}}class _dt extends fM{constructor(e,t){super(0);for(let i=0;i<e.length;i++)this.set(e.charCodeAt(i),1);for(let i=0;i<t.length;i++)this.set(t.charCodeAt(i),2)}get(e){return e>=0&&e<256?this._asciiMap[e]:e>=12352&&e<=12543||e>=13312&&e<=19903||e>=19968&&e<=40959?3:this._map.get(e)||this._defaultValue}}let r$=[],l$=[];function zdt(s,e,t,i,n,o,r,l){if(n===-1)return null;const a=t.length;if(a<=1)return null;const d=l==="keepAll",c=e.breakOffsets,h=e.breakOffsetsVisibleColumn,u=mWe(t,i,n,o,r),m=n-u,p=r$,g=l$;let f=0,b=0,U=0,S=n;const Z=c.length;let R=0;if(R>=0){let y=Math.abs(h[R]-S);for(;R+1<Z;){const N=Math.abs(h[R+1]-S);if(N>=y)break;y=N,R++}}for(;R<Z;){let y=R<0?0:c[R],N=R<0?0:h[R];b>y&&(y=b,N=U);let w=0,Q=0,C=0,v=0;if(N<=S){let J=N,k=y===0?0:t.charCodeAt(y-1),E=y===0?0:s.get(k),K=!0;for(let de=y;de<a;de++){const ee=de,le=t.charCodeAt(de);let Fe,Ue;if(Mr(le)?(de++,Fe=0,Ue=2):(Fe=s.get(le),Ue=b2(le,J,i,o)),ee>b&&a$(k,E,le,Fe,d)&&(w=ee,Q=J),J+=Ue,J>S){ee>b?(C=ee,v=J-Ue):(C=de+1,v=J),J-Q>m&&(w=0),K=!1;break}k=le,E=Fe}if(K){f>0&&(p[f]=c[c.length-1],g[f]=h[c.length-1],f++);break}}if(w===0){let J=N,k=t.charCodeAt(y),E=s.get(k),K=!1;for(let de=y-1;de>=b;de--){const ee=de+1,le=t.charCodeAt(de);if(le===9){K=!0;break}let Fe,Ue;if(UN(le)?(de--,Fe=0,Ue=2):(Fe=s.get(le),Ue=vF(le)?o:1),J<=S){if(C===0&&(C=ee,v=J),J<=S-m)break;if(a$(le,Fe,k,E,d)){w=ee,Q=J;break}}J-=Ue,k=le,E=Fe}if(w!==0){const de=m-(v-Q);if(de<=i){const ee=t.charCodeAt(C);let le;Mr(ee)?le=2:le=b2(ee,v,i,o),de-le<0&&(w=0)}}if(K){R--;continue}}if(w===0&&(w=C,Q=v),w<=b){const J=t.charCodeAt(b);Mr(J)?(w=b+2,Q=U+2):(w=b+1,Q=U+b2(J,U,i,o))}for(b=w,p[f]=w,U=Q,g[f]=Q,f++,S=Q+m;R<0||R<Z&&h[R]<Q;)R++;let Y=Math.abs(h[R]-S);for(;R+1<Z;){const J=Math.abs(h[R+1]-S);if(J>=Y)break;Y=J,R++}}return f===0?null:(p.length=f,g.length=f,r$=e.breakOffsets,l$=e.breakOffsetsVisibleColumn,e.breakOffsets=p,e.breakOffsetsVisibleColumn=g,e.wrappedTextIndentLength=u,e)}function Odt(s,e,t,i,n,o,r,l){const a=dp.applyInjectedText(e,t);let d,c;if(t&&t.length>0?(d=t.map(Q=>Q.options),c=t.map(Q=>Q.column-1)):(d=null,c=null),n===-1)return d?new f2(c,d,[a.length],[],0):null;const h=a.length;if(h<=1)return d?new f2(c,d,[a.length],[],0):null;const u=l==="keepAll",m=mWe(a,i,n,o,r),p=n-m,g=[],f=[];let b=0,U=0,S=0,Z=n,R=a.charCodeAt(0),y=s.get(R),N=b2(R,0,i,o),w=1;Mr(R)&&(N+=1,R=a.charCodeAt(1),y=s.get(R),w++);for(let Q=w;Q<h;Q++){const C=Q,v=a.charCodeAt(Q);let Y,J;Mr(v)?(Q++,Y=0,J=2):(Y=s.get(v),J=b2(v,N,i,o)),a$(R,y,v,Y,u)&&(U=C,S=N),N+=J,N>Z&&((U===0||N-S>p)&&(U=C,S=N-J),g[b]=U,f[b]=S,b++,Z=S+p,U=0),R=v,y=Y}return b===0&&(!t||t.length===0)?null:(g[b]=h,f[b]=N,new f2(c,d,g,f,m))}function b2(s,e,t,i){return s===9?t-e%t:vF(s)||s<32?i:1}function Dpe(s,e){return e-s%e}function a$(s,e,t,i,n){return t!==32&&(e===2&&i!==2||e!==1&&i===1||!n&&e===3&&i!==2||!n&&i===3&&e!==1)}function mWe(s,e,t,i,n){let o=0;if(n!==0){const r=Ua(s);if(r!==-1){for(let a=0;a<r;a++){const d=s.charCodeAt(a)===9?Dpe(o,e):1;o+=d}const l=n===3?2:n===2?1:0;for(let a=0;a<l;a++){const d=Dpe(o,e);o+=d}o+i>t&&(o=0)}}return o}class T5{constructor(e){this._selTrackedRange=null,this._trackSelection=!0,this._setState(e,new nl(new z(1,1,1,1),0,0,new ge(1,1),0),new nl(new z(1,1,1,1),0,0,new ge(1,1),0))}dispose(e){this._removeTrackedRange(e)}startTrackingSelection(e){this._trackSelection=!0,this._updateTrackedRange(e)}stopTrackingSelection(e){this._trackSelection=!1,this._removeTrackedRange(e)}_updateTrackedRange(e){this._trackSelection&&(this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,this.modelState.selection,0))}_removeTrackedRange(e){this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,null,0)}asCursorState(){return new Bn(this.modelState,this.viewState)}readSelectionFromMarkers(e){const t=e.model._getTrackedRange(this._selTrackedRange);return this.modelState.selection.isEmpty()&&!t.isEmpty()?_t.fromRange(t.collapseToEnd(),this.modelState.selection.getDirection()):_t.fromRange(t,this.modelState.selection.getDirection())}ensureValidState(e){this._setState(e,this.modelState,this.viewState)}setState(e,t,i){this._setState(e,t,i)}static _validatePositionWithCache(e,t,i,n){return t.equals(i)?n:e.normalizePosition(t,2)}static _validateViewState(e,t){const i=t.position,n=t.selectionStart.getStartPosition(),o=t.selectionStart.getEndPosition(),r=e.normalizePosition(i,2),l=this._validatePositionWithCache(e,n,i,r),a=this._validatePositionWithCache(e,o,n,l);return i.equals(r)&&n.equals(l)&&o.equals(a)?t:new nl(z.fromPositions(l,a),t.selectionStartKind,t.selectionStartLeftoverVisibleColumns+n.column-l.column,r,t.leftoverVisibleColumns+i.column-r.column)}_setState(e,t,i){if(i&&(i=T5._validateViewState(e.viewModel,i)),t){const n=e.model.validateRange(t.selectionStart),o=t.selectionStart.equalsRange(n)?t.selectionStartLeftoverVisibleColumns:0,r=e.model.validatePosition(t.position),l=t.position.equals(r)?t.leftoverVisibleColumns:0;t=new nl(n,t.selectionStartKind,o,r,l)}else{if(!i)return;const n=e.model.validateRange(e.coordinatesConverter.convertViewRangeToModelRange(i.selectionStart)),o=e.model.validatePosition(e.coordinatesConverter.convertViewPositionToModelPosition(i.position));t=new nl(n,i.selectionStartKind,i.selectionStartLeftoverVisibleColumns,o,i.leftoverVisibleColumns)}if(i){const n=e.coordinatesConverter.validateViewRange(i.selectionStart,t.selectionStart),o=e.coordinatesConverter.validateViewPosition(i.position,t.position);i=new nl(n,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,o,t.leftoverVisibleColumns)}else{const n=e.coordinatesConverter.convertModelPositionToViewPosition(new ge(t.selectionStart.startLineNumber,t.selectionStart.startColumn)),o=e.coordinatesConverter.convertModelPositionToViewPosition(new ge(t.selectionStart.endLineNumber,t.selectionStart.endColumn)),r=new z(n.lineNumber,n.column,o.lineNumber,o.column),l=e.coordinatesConverter.convertModelPositionToViewPosition(t.position);i=new nl(r,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,l,t.leftoverVisibleColumns)}this.modelState=t,this.viewState=i,this._updateTrackedRange(e)}}class Gpe{constructor(e){this.context=e,this.cursors=[new T5(e)],this.lastAddedCursorIndex=0}dispose(){for(const e of this.cursors)e.dispose(this.context)}startTrackingSelections(){for(const e of this.cursors)e.startTrackingSelection(this.context)}stopTrackingSelections(){for(const e of this.cursors)e.stopTrackingSelection(this.context)}updateContext(e){this.context=e}ensureValidState(){for(const e of this.cursors)e.ensureValidState(this.context)}readSelectionFromMarkers(){return this.cursors.map(e=>e.readSelectionFromMarkers(this.context))}getAll(){return this.cursors.map(e=>e.asCursorState())}getViewPositions(){return this.cursors.map(e=>e.viewState.position)}getTopMostViewPosition(){return i7e(this.cursors,Ja(e=>e.viewState.position,ge.compare)).viewState.position}getBottomMostViewPosition(){return t7e(this.cursors,Ja(e=>e.viewState.position,ge.compare)).viewState.position}getSelections(){return this.cursors.map(e=>e.modelState.selection)}getViewSelections(){return this.cursors.map(e=>e.viewState.selection)}setSelections(e){this.setStates(Bn.fromModelSelections(e))}getPrimaryCursor(){return this.cursors[0].asCursorState()}setStates(e){e!==null&&(this.cursors[0].setState(this.context,e[0].modelState,e[0].viewState),this._setSecondaryStates(e.slice(1)))}_setSecondaryStates(e){const t=this.cursors.length-1,i=e.length;if(t<i){const n=i-t;for(let o=0;o<n;o++)this._addSecondaryCursor()}else if(t>i){const n=t-i;for(let o=0;o<n;o++)this._removeSecondaryCursor(this.cursors.length-2)}for(let n=0;n<i;n++)this.cursors[n+1].setState(this.context,e[n].modelState,e[n].viewState)}killSecondaryCursors(){this._setSecondaryStates([])}_addSecondaryCursor(){this.cursors.push(new T5(this.context)),this.lastAddedCursorIndex=this.cursors.length-1}getLastAddedCursorIndex(){return this.cursors.length===1||this.lastAddedCursorIndex===0?0:this.lastAddedCursorIndex}_removeSecondaryCursor(e){this.lastAddedCursorIndex>=e+1&&this.lastAddedCursorIndex--,this.cursors[e+1].dispose(this.context),this.cursors.splice(e+1,1)}normalize(){if(this.cursors.length===1)return;const e=this.cursors.slice(0),t=[];for(let i=0,n=e.length;i<n;i++)t.push({index:i,selection:e[i].modelState.selection});t.sort(Ja(i=>i.selection,z.compareRangesUsingStarts));for(let i=0;i<t.length-1;i++){const n=t[i],o=t[i+1],r=n.selection,l=o.selection;if(!this.context.cursorConfig.multiCursorMergeOverlapping)continue;let a;if(l.isEmpty()||r.isEmpty()?a=l.getStartPosition().isBeforeOrEqual(r.getEndPosition()):a=l.getStartPosition().isBefore(r.getEndPosition()),a){const d=n.index<o.index?i:i+1,c=n.index<o.index?i+1:i,h=t[c].index,u=t[d].index,m=t[c].selection,p=t[d].selection;if(!m.equalsSelection(p)){const g=m.plusRange(p),f=m.selectionStartLineNumber===m.startLineNumber&&m.selectionStartColumn===m.startColumn,b=p.selectionStartLineNumber===p.startLineNumber&&p.selectionStartColumn===p.startColumn;let U;h===this.lastAddedCursorIndex?(U=f,this.lastAddedCursorIndex=u):U=b;let S;U?S=new _t(g.startLineNumber,g.startColumn,g.endLineNumber,g.endColumn):S=new _t(g.endLineNumber,g.endColumn,g.startLineNumber,g.startColumn),t[d].selection=S;const Z=Bn.fromModelSelection(S);e[u].setState(this.context,Z.modelState,Z.viewState)}for(const g of t)g.index>h&&g.index--;e.splice(h,1),t.splice(c,1),this._removeSecondaryCursor(h-1),i--}}}}class Jpe{constructor(e,t,i,n){this._cursorContextBrand=void 0,this.model=e,this.viewModel=t,this.coordinatesConverter=i,this.cursorConfig=n}}class jdt{constructor(){this.type=0}}class Pdt{constructor(){this.type=1}}class Hdt{constructor(e){this.type=2,this._source=e}hasChanged(e){return this._source.hasChanged(e)}}class Kdt{constructor(e,t,i){this.selections=e,this.modelSelections=t,this.reason=i,this.type=3}}class MA{constructor(e){this.type=4,e?(this.affectsMinimap=e.affectsMinimap,this.affectsOverviewRuler=e.affectsOverviewRuler,this.affectsGlyphMargin=e.affectsGlyphMargin,this.affectsLineNumber=e.affectsLineNumber):(this.affectsMinimap=!0,this.affectsOverviewRuler=!0,this.affectsGlyphMargin=!0,this.affectsLineNumber=!0)}}class RI{constructor(){this.type=5}}class qdt{constructor(e){this.type=6,this.isFocused=e}}class $dt{constructor(){this.type=7}}class VI{constructor(){this.type=8}}class pWe{constructor(e,t){this.fromLineNumber=e,this.count=t,this.type=9}}class d${constructor(e,t){this.type=10,this.fromLineNumber=e,this.toLineNumber=t}}class c${constructor(e,t){this.type=11,this.fromLineNumber=e,this.toLineNumber=t}}class U2{constructor(e,t,i,n,o,r,l){this.source=e,this.minimalReveal=t,this.range=i,this.selections=n,this.verticalType=o,this.revealHorizontal=r,this.scrollType=l,this.type=12}}class ect{constructor(e){this.type=13,this.scrollWidth=e.scrollWidth,this.scrollLeft=e.scrollLeft,this.scrollHeight=e.scrollHeight,this.scrollTop=e.scrollTop,this.scrollWidthChanged=e.scrollWidthChanged,this.scrollLeftChanged=e.scrollLeftChanged,this.scrollHeightChanged=e.scrollHeightChanged,this.scrollTopChanged=e.scrollTopChanged}}class tct{constructor(e){this.theme=e,this.type=14}}class ict{constructor(e){this.type=15,this.ranges=e}}class nct{constructor(){this.type=16}}let sct=class{constructor(){this.type=17}};class oct extends be{constructor(){super(),this._onEvent=this._register(new fe),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(e){this._addOutgoingEvent(e),this._emitOutgoingEvents()}_addOutgoingEvent(e){for(let t=0,i=this._outgoingEvents.length;t<i;t++){const n=this._outgoingEvents[t].kind===e.kind?this._outgoingEvents[t].attemptToMerge(e):null;if(n){this._outgoingEvents[t]=n;return}}this._outgoingEvents.push(e)}_emitOutgoingEvents(){for(;this._outgoingEvents.length>0;){if(this._collector||this._isConsumingViewEventQueue)return;const e=this._outgoingEvents.shift();e.isNoOp()||this._onEvent.fire(e)}}addViewEventHandler(e){for(let t=0,i=this._eventHandlers.length;t<i;t++)this._eventHandlers[t]===e&&console.warn("Detected duplicate listener in ViewEventDispatcher",e);this._eventHandlers.push(e)}removeViewEventHandler(e){for(let t=0;t<this._eventHandlers.length;t++)if(this._eventHandlers[t]===e){this._eventHandlers.splice(t,1);break}}beginEmitViewEvents(){return this._collectorCnt++,this._collectorCnt===1&&(this._collector=new rct),this._collector}endEmitViewEvents(){if(this._collectorCnt--,this._collectorCnt===0){const e=this._collector.outgoingEvents,t=this._collector.viewEvents;this._collector=null;for(const i of e)this._addOutgoingEvent(i);t.length>0&&this._emitMany(t)}this._emitOutgoingEvents()}emitSingleViewEvent(e){try{this.beginEmitViewEvents().emitViewEvent(e)}finally{this.endEmitViewEvents()}}_emitMany(e){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(e):this._viewEventQueue=e,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const e=this._viewEventQueue;this._viewEventQueue=null;const t=this._eventHandlers.slice(0);for(const i of t)i.handleEvents(e)}}}class rct{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(e){this.viewEvents.push(e)}emitOutgoingEvent(e){this.outgoingEvents.push(e)}}class Cre{constructor(e,t,i,n){this.kind=0,this._oldContentWidth=e,this._oldContentHeight=t,this.contentWidth=i,this.contentHeight=n,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}attemptToMerge(e){return e.kind!==this.kind?null:new Cre(this._oldContentWidth,this._oldContentHeight,e.contentWidth,e.contentHeight)}}class Bre{constructor(e,t){this.kind=1,this.oldHasFocus=e,this.hasFocus=t}isNoOp(){return this.oldHasFocus===this.hasFocus}attemptToMerge(e){return e.kind!==this.kind?null:new Bre(this.oldHasFocus,e.hasFocus)}}class Lre{constructor(e,t,i,n,o,r,l,a){this.kind=2,this._oldScrollWidth=e,this._oldScrollLeft=t,this._oldScrollHeight=i,this._oldScrollTop=n,this.scrollWidth=o,this.scrollLeft=r,this.scrollHeight=l,this.scrollTop=a,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}isNoOp(){return!this.scrollWidthChanged&&!this.scrollLeftChanged&&!this.scrollHeightChanged&&!this.scrollTopChanged}attemptToMerge(e){return e.kind!==this.kind?null:new Lre(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop)}}class lct{constructor(){this.kind=3}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class act{constructor(){this.kind=4}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class C5{constructor(e,t,i,n,o,r,l){this.kind=6,this.oldSelections=e,this.selections=t,this.oldModelVersionId=i,this.modelVersionId=n,this.source=o,this.reason=r,this.reachedMaxCursorCount=l}static _selectionsAreEqual(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;const i=e.length,n=t.length;if(i!==n)return!1;for(let o=0;o<i;o++)if(!e[o].equalsSelection(t[o]))return!1;return!0}isNoOp(){return C5._selectionsAreEqual(this.oldSelections,this.selections)&&this.oldModelVersionId===this.modelVersionId}attemptToMerge(e){return e.kind!==this.kind?null:new C5(this.oldSelections,e.selections,this.oldModelVersionId,e.modelVersionId,e.source,e.reason,this.reachedMaxCursorCount||e.reachedMaxCursorCount)}}class dct{constructor(){this.kind=5}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class cct{constructor(e){this.event=e,this.kind=7}isNoOp(){return!1}attemptToMerge(e){return null}}class hct{constructor(e){this.event=e,this.kind=8}isNoOp(){return!1}attemptToMerge(e){return null}}class uct{constructor(e){this.event=e,this.kind=9}isNoOp(){return!1}attemptToMerge(e){return null}}class mct{constructor(e){this.event=e,this.kind=10}isNoOp(){return!1}attemptToMerge(e){return null}}class pct{constructor(e){this.event=e,this.kind=11}isNoOp(){return!1}attemptToMerge(e){return null}}class gct{constructor(e){this.event=e,this.kind=12}isNoOp(){return!1}attemptToMerge(e){return null}}class fct extends be{constructor(e,t,i,n){super(),this._model=e,this._knownModelVersionId=this._model.getVersionId(),this._viewModel=t,this._coordinatesConverter=i,this.context=new Jpe(this._model,this._viewModel,this._coordinatesConverter,n),this._cursors=new Gpe(this.context),this._hasFocus=!1,this._isHandling=!1,this._compositionState=null,this._columnSelectData=null,this._autoClosedActions=[],this._prevEditOperationType=0}dispose(){this._cursors.dispose(),this._autoClosedActions=Ws(this._autoClosedActions),super.dispose()}updateConfiguration(e){this.context=new Jpe(this._model,this._viewModel,this._coordinatesConverter,e),this._cursors.updateContext(this.context)}onLineMappingChanged(e){this._knownModelVersionId===this._model.getVersionId()&&this.setStates(e,"viewModel",0,this.getCursorStates())}setHasFocus(e){this._hasFocus=e}_validateAutoClosedActions(){if(this._autoClosedActions.length>0){const e=this._cursors.getSelections();for(let t=0;t<this._autoClosedActions.length;t++){const i=this._autoClosedActions[t];i.isValid(e)||(i.dispose(),this._autoClosedActions.splice(t,1),t--)}}}getPrimaryCursorState(){return this._cursors.getPrimaryCursor()}getLastAddedCursorIndex(){return this._cursors.getLastAddedCursorIndex()}getCursorStates(){return this._cursors.getAll()}setStates(e,t,i,n){let o=!1;const r=this.context.cursorConfig.multiCursorLimit;n!==null&&n.length>r&&(n=n.slice(0,r),o=!0);const l=F2.from(this._model,this);return this._cursors.setStates(n),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,t,i,l,o)}setCursorColumnSelectData(e){this._columnSelectData=e}revealAll(e,t,i,n,o,r){const l=this._cursors.getViewPositions();let a=null,d=null;l.length>1?d=this._cursors.getViewSelections():a=z.fromPositions(l[0],l[0]),e.emitViewEvent(new U2(t,i,a,d,n,o,r))}revealPrimary(e,t,i,n,o,r){const a=[this._cursors.getPrimaryCursor().viewState.selection];e.emitViewEvent(new U2(t,i,null,a,n,o,r))}saveState(){const e=[],t=this._cursors.getSelections();for(let i=0,n=t.length;i<n;i++){const o=t[i];e.push({inSelectionMode:!o.isEmpty(),selectionStart:{lineNumber:o.selectionStartLineNumber,column:o.selectionStartColumn},position:{lineNumber:o.positionLineNumber,column:o.positionColumn}})}return e}restoreState(e,t){const i=[];for(let n=0,o=t.length;n<o;n++){const r=t[n];let l=1,a=1;r.position&&r.position.lineNumber&&(l=r.position.lineNumber),r.position&&r.position.column&&(a=r.position.column);let d=l,c=a;r.selectionStart&&r.selectionStart.lineNumber&&(d=r.selectionStart.lineNumber),r.selectionStart&&r.selectionStart.column&&(c=r.selectionStart.column),i.push({selectionStartLineNumber:d,selectionStartColumn:c,positionLineNumber:l,positionColumn:a})}this.setStates(e,"restoreState",0,Bn.fromModelSelections(i)),this.revealAll(e,"restoreState",!1,0,!0,1)}onModelContentChanged(e,t){if(t instanceof HRe){if(this._isHandling)return;this._isHandling=!0;try{this.setStates(e,"modelChange",0,this.getCursorStates())}finally{this._isHandling=!1}}else{const i=t.rawContentChangedEvent;if(this._knownModelVersionId=i.versionId,this._isHandling)return;const n=i.containsEvent(1);if(this._prevEditOperationType=0,n)this._cursors.dispose(),this._cursors=new Gpe(this.context),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,"model",1,null,!1);else if(this._hasFocus&&i.resultingSelection&&i.resultingSelection.length>0){const o=Bn.fromModelSelections(i.resultingSelection);this.setStates(e,"modelChange",i.isUndoing?5:i.isRedoing?6:2,o)&&this.revealAll(e,"modelChange",!1,0,!0,0)}else{const o=this._cursors.readSelectionFromMarkers();this.setStates(e,"modelChange",2,Bn.fromModelSelections(o))}}}getSelection(){return this._cursors.getPrimaryCursor().modelState.selection}getTopMostViewPosition(){return this._cursors.getTopMostViewPosition()}getBottomMostViewPosition(){return this._cursors.getBottomMostViewPosition()}getCursorColumnSelectData(){if(this._columnSelectData)return this._columnSelectData;const e=this._cursors.getPrimaryCursor(),t=e.viewState.selectionStart.getStartPosition(),i=e.viewState.position;return{isReal:!1,fromViewLineNumber:t.lineNumber,fromViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,t),toViewLineNumber:i.lineNumber,toViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,i)}}getSelections(){return this._cursors.getSelections()}setSelections(e,t,i,n){this.setStates(e,t,n,Bn.fromModelSelections(i))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(e){this._prevEditOperationType=e}_pushAutoClosedAction(e,t){const i=[],n=[];for(let l=0,a=e.length;l<a;l++)i.push({range:e[l],options:{description:"auto-closed-character",inlineClassName:"auto-closed-character",stickiness:1}}),n.push({range:t[l],options:{description:"auto-closed-enclosing",stickiness:1}});const o=this._model.deltaDecorations([],i),r=this._model.deltaDecorations([],n);this._autoClosedActions.push(new Xpe(this._model,o,r))}_executeEditOperation(e){if(!e)return;e.shouldPushStackElementBefore&&this._model.pushStackElement();const t=bct.executeCommands(this._model,this._cursors.getSelections(),e.commands);if(t){this._interpretCommandResult(t);const i=[],n=[];for(let o=0;o<e.commands.length;o++){const r=e.commands[o];r instanceof Wre&&r.enclosingRange&&r.closeCharacterRange&&(i.push(r.closeCharacterRange),n.push(r.enclosingRange))}i.length>0&&this._pushAutoClosedAction(i,n),this._prevEditOperationType=e.type}e.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(e){(!e||e.length===0)&&(e=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(e),this._cursors.normalize()}_emitStateChangedIfNecessary(e,t,i,n,o){const r=F2.from(this._model,this);if(r.equals(n))return!1;const l=this._cursors.getSelections(),a=this._cursors.getViewSelections();if(e.emitViewEvent(new Kdt(a,l,i)),!n||n.cursorState.length!==r.cursorState.length||r.cursorState.some((d,c)=>!d.modelState.equals(n.cursorState[c].modelState))){const d=n?n.cursorState.map(h=>h.modelState.selection):null,c=n?n.modelVersionId:0;e.emitOutgoingEvent(new C5(d,l,c,r.modelVersionId,t||"keyboard",i,o))}return!0}_findAutoClosingPairs(e){if(!e.length)return null;const t=[];for(let i=0,n=e.length;i<n;i++){const o=e[i];if(!o.text||o.text.indexOf(`
- `)>=0)return null;const r=o.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!r)return null;const l=r[1],a=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(l);if(!a||a.length!==1)return null;const d=a[0].open,c=o.text.length-r[2].length-1,h=o.text.lastIndexOf(d,c-1);if(h===-1)return null;t.push([h,c])}return t}executeEdits(e,t,i,n){let o=null;t==="snippet"&&(o=this._findAutoClosingPairs(i)),o&&(i[0]._isTracked=!0);const r=[],l=[],a=this._model.pushEditOperations(this.getSelections(),i,d=>{if(o)for(let h=0,u=o.length;h<u;h++){const[m,p]=o[h],g=d[h],f=g.range.startLineNumber,b=g.range.startColumn-1+m,U=g.range.startColumn-1+p;r.push(new z(f,U+1,f,U+2)),l.push(new z(f,b+1,f,U+2))}const c=n(d);return c&&(this._isHandling=!0),c});a&&(this._isHandling=!1,this.setSelections(e,t,a,0)),r.length>0&&this._pushAutoClosedAction(r,l)}_executeEdit(e,t,i,n=0){if(this.context.cursorConfig.readOnly)return;const o=F2.from(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),e()}catch(r){wi(r)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(t,i,n,o,!1)&&this.revealAll(t,i,!1,0,!0,0)}getAutoClosedCharacters(){return Xpe.getAllAutoClosedCharacters(this._autoClosedActions)}startComposition(e){this._compositionState=new A2(this._model,this.getSelections())}endComposition(e,t){const i=this._compositionState?this._compositionState.deduceOutcome(this._model,this.getSelections()):null;this._compositionState=null,this._executeEdit(()=>{t==="keyboard"&&this._executeEditOperation(WU.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,i,this.getSelections(),this.getAutoClosedCharacters()))},e,t)}type(e,t,i){this._executeEdit(()=>{if(i==="keyboard"){const n=t.length;let o=0;for(;o<n;){const r=wse(t,o),l=t.substr(o,r);this._executeEditOperation(WU.typeWithInterceptors(!!this._compositionState,this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),this.getAutoClosedCharacters(),l)),o+=r}}else this._executeEditOperation(WU.typeWithoutInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t))},e,i)}compositionType(e,t,i,n,o,r){if(t.length===0&&i===0&&n===0){if(o!==0){const l=this.getSelections().map(a=>{const d=a.getPosition();return new _t(d.lineNumber,d.column+o,d.lineNumber,d.column+o)});this.setSelections(e,r,l,0)}return}this._executeEdit(()=>{this._executeEditOperation(WU.compositionType(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t,i,n,o))},e,r)}paste(e,t,i,n,o){this._executeEdit(()=>{this._executeEditOperation(WU.paste(this.context.cursorConfig,this._model,this.getSelections(),t,i,n||[]))},e,o,4)}cut(e,t){this._executeEdit(()=>{this._executeEditOperation(TN.cut(this.context.cursorConfig,this._model,this.getSelections()))},e,t)}executeCommand(e,t,i){this._executeEdit(()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new Qd(0,[t],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},e,i)}executeCommands(e,t,i){this._executeEdit(()=>{this._executeEditOperation(new Qd(0,t,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},e,i)}}class F2{static from(e,t){return new F2(e.getVersionId(),t.getCursorStates())}constructor(e,t){this.modelVersionId=e,this.cursorState=t}equals(e){if(!e||this.modelVersionId!==e.modelVersionId||this.cursorState.length!==e.cursorState.length)return!1;for(let t=0,i=this.cursorState.length;t<i;t++)if(!this.cursorState[t].equals(e.cursorState[t]))return!1;return!0}}class Xpe{static getAllAutoClosedCharacters(e){let t=[];for(const i of e)t=t.concat(i.getAutoClosedCharactersRanges());return t}constructor(e,t,i){this._model=e,this._autoClosedCharactersDecorations=t,this._autoClosedEnclosingDecorations=i}dispose(){this._autoClosedCharactersDecorations=this._model.deltaDecorations(this._autoClosedCharactersDecorations,[]),this._autoClosedEnclosingDecorations=this._model.deltaDecorations(this._autoClosedEnclosingDecorations,[])}getAutoClosedCharactersRanges(){const e=[];for(let t=0;t<this._autoClosedCharactersDecorations.length;t++){const i=this._model.getDecorationRange(this._autoClosedCharactersDecorations[t]);i&&e.push(i)}return e}isValid(e){const t=[];for(let i=0;i<this._autoClosedEnclosingDecorations.length;i++){const n=this._model.getDecorationRange(this._autoClosedEnclosingDecorations[i]);if(n&&(t.push(n),n.startLineNumber!==n.endLineNumber))return!1}t.sort(z.compareRangesUsingStarts),e.sort(z.compareRangesUsingStarts);for(let i=0;i<e.length;i++)if(i>=t.length||!t[i].strictContainsRange(e[i]))return!1;return!0}}class bct{static executeCommands(e,t,i){const n={model:e,selectionsBefore:t,trackedRanges:[],trackedRangesDirection:[]},o=this._innerExecuteCommands(n,i);for(let r=0,l=n.trackedRanges.length;r<l;r++)n.model._setTrackedRange(n.trackedRanges[r],null,0);return o}static _innerExecuteCommands(e,t){if(this._arrayIsEmpty(t))return null;const i=this._getEditOperations(e,t);if(i.operations.length===0)return null;const n=i.operations,o=this._getLoserCursorMap(n);if(o.hasOwnProperty("0"))return console.warn("Ignoring commands"),null;const r=[];for(let d=0,c=n.length;d<c;d++)o.hasOwnProperty(n[d].identifier.major.toString())||r.push(n[d]);i.hadTrackedEditOperation&&r.length>0&&(r[0]._isTracked=!0);let l=e.model.pushEditOperations(e.selectionsBefore,r,d=>{const c=[];for(let m=0;m<e.selectionsBefore.length;m++)c[m]=[];for(const m of d)m.identifier&&c[m.identifier.major].push(m);const h=(m,p)=>m.identifier.minor-p.identifier.minor,u=[];for(let m=0;m<e.selectionsBefore.length;m++)c[m].length>0?(c[m].sort(h),u[m]=t[m].computeCursorState(e.model,{getInverseEditOperations:()=>c[m],getTrackedSelection:p=>{const g=parseInt(p,10),f=e.model._getTrackedRange(e.trackedRanges[g]);return e.trackedRangesDirection[g]===0?new _t(f.startLineNumber,f.startColumn,f.endLineNumber,f.endColumn):new _t(f.endLineNumber,f.endColumn,f.startLineNumber,f.startColumn)}})):u[m]=e.selectionsBefore[m];return u});l||(l=e.selectionsBefore);const a=[];for(const d in o)o.hasOwnProperty(d)&&a.push(parseInt(d,10));a.sort((d,c)=>c-d);for(const d of a)l.splice(d,1);return l}static _arrayIsEmpty(e){for(let t=0,i=e.length;t<i;t++)if(e[t])return!1;return!0}static _getEditOperations(e,t){let i=[],n=!1;for(let o=0,r=t.length;o<r;o++){const l=t[o];if(l){const a=this._getEditOperationsFromCommand(e,o,l);i=i.concat(a.operations),n=n||a.hadTrackedEditOperation}}return{operations:i,hadTrackedEditOperation:n}}static _getEditOperationsFromCommand(e,t,i){const n=[];let o=0;const r=(h,u,m=!1)=>{z.isEmpty(h)&&u===""||n.push({identifier:{major:t,minor:o++},range:h,text:u,forceMoveMarkers:m,isAutoWhitespaceEdit:i.insertsAutoWhitespace})};let l=!1;const c={addEditOperation:r,addTrackedEditOperation:(h,u,m)=>{l=!0,r(h,u,m)},trackSelection:(h,u)=>{const m=_t.liftSelection(h);let p;if(m.isEmpty())if(typeof u=="boolean")u?p=2:p=3;else{const b=e.model.getLineMaxColumn(m.startLineNumber);m.startColumn===b?p=2:p=3}else p=1;const g=e.trackedRanges.length,f=e.model._setTrackedRange(null,m,p);return e.trackedRanges[g]=f,e.trackedRangesDirection[g]=m.getDirection(),g.toString()}};try{i.getEditOperations(e.model,c)}catch(h){return wi(h),{operations:[],hadTrackedEditOperation:!1}}return{operations:n,hadTrackedEditOperation:l}}static _getLoserCursorMap(e){e=e.slice(0),e.sort((i,n)=>-z.compareRangesUsingEnds(i.range,n.range));const t={};for(let i=1;i<e.length;i++){const n=e[i-1],o=e[i];if(z.getStartPosition(n.range).isBefore(z.getEndPosition(o.range))){let r;n.identifier.major>o.identifier.major?r=n.identifier.major:r=o.identifier.major,t[r.toString()]=!0;for(let l=0;l<e.length;l++)e[l].identifier.major===r&&(e.splice(l,1),l<i&&i--,l--);i>0&&i--}}return t}}class Uct{constructor(e,t,i){this.text=e,this.startSelection=t,this.endSelection=i}}class A2{static _capture(e,t){const i=[];for(const n of t){if(n.startLineNumber!==n.endLineNumber)return null;i.push(new Uct(e.getLineContent(n.startLineNumber),n.startColumn-1,n.endColumn-1))}return i}constructor(e,t){this._original=A2._capture(e,t)}deduceOutcome(e,t){if(!this._original)return null;const i=A2._capture(e,t);if(!i||this._original.length!==i.length)return null;const n=[];for(let o=0,r=this._original.length;o<r;o++)n.push(A2._deduceOutcome(this._original[o],i[o]));return n}static _deduceOutcome(e,t){const i=Math.min(e.startSelection,t.startSelection,LF(e.text,t.text)),n=Math.min(e.text.length-e.endSelection,t.text.length-t.endSelection,nX(e.text,t.text)),o=e.text.substring(i,e.text.length-n),r=t.text.substring(i,t.text.length-n);return new zat(o,e.startSelection-i,e.endSelection-i,r,t.startSelection-i,t.endSelection-i)}}class Fct{constructor(){this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}insert(e){this._hasPending=!0,this._inserts.push(e)}change(e){this._hasPending=!0,this._changes.push(e)}remove(e){this._hasPending=!0,this._removes.push(e)}mustCommit(){return this._hasPending}commit(e){if(!this._hasPending)return;const t=this._inserts,i=this._changes,n=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],e._commitPendingChanges(t,i,n)}}class Act{constructor(e,t,i,n,o){this.id=e,this.afterLineNumber=t,this.ordinal=i,this.height=n,this.minWidth=o,this.prefixSum=0}}var HS;let Zct=(HS=class{constructor(e,t,i,n){this._instanceId=EZe(++HS.INSTANCE_COUNT),this._pendingChanges=new Fct,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=e,this._lineHeight=t,this._paddingTop=i,this._paddingBottom=n}static findInsertionIndex(e,t,i){let n=0,o=e.length;for(;n<o;){const r=n+o>>>1;t===e[r].afterLineNumber?i<e[r].ordinal?o=r:n=r+1:t<e[r].afterLineNumber?o=r:n=r+1}return n}setLineHeight(e){this._checkPendingChanges(),this._lineHeight=e}setPadding(e,t){this._paddingTop=e,this._paddingBottom=t}onFlushed(e){this._checkPendingChanges(),this._lineCount=e}changeWhitespace(e){let t=!1;try{e({insertWhitespace:(n,o,r,l)=>{t=!0,n=n|0,o=o|0,r=r|0,l=l|0;const a=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new Act(a,n,o,r,l)),a},changeOneWhitespace:(n,o,r)=>{t=!0,o=o|0,r=r|0,this._pendingChanges.change({id:n,newAfterLineNumber:o,newHeight:r})},removeWhitespace:n=>{t=!0,this._pendingChanges.remove({id:n})}})}finally{this._pendingChanges.commit(this)}return t}_commitPendingChanges(e,t,i){if((e.length>0||i.length>0)&&(this._minWidth=-1),e.length+t.length+i.length<=1){for(const a of e)this._insertWhitespace(a);for(const a of t)this._changeOneWhitespace(a.id,a.newAfterLineNumber,a.newHeight);for(const a of i){const d=this._findWhitespaceIndex(a.id);d!==-1&&this._removeWhitespace(d)}return}const n=new Set;for(const a of i)n.add(a.id);const o=new Map;for(const a of t)o.set(a.id,a);const r=a=>{const d=[];for(const c of a)if(!n.has(c.id)){if(o.has(c.id)){const h=o.get(c.id);c.afterLineNumber=h.newAfterLineNumber,c.height=h.newHeight}d.push(c)}return d},l=r(this._arr).concat(r(e));l.sort((a,d)=>a.afterLineNumber===d.afterLineNumber?a.ordinal-d.ordinal:a.afterLineNumber-d.afterLineNumber),this._arr=l,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(e){const t=HS.findInsertionIndex(this._arr,e.afterLineNumber,e.ordinal);this._arr.splice(t,0,e),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,t-1)}_findWhitespaceIndex(e){const t=this._arr;for(let i=0,n=t.length;i<n;i++)if(t[i].id===e)return i;return-1}_changeOneWhitespace(e,t,i){const n=this._findWhitespaceIndex(e);if(n!==-1&&(this._arr[n].height!==i&&(this._arr[n].height=i,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,n-1)),this._arr[n].afterLineNumber!==t)){const o=this._arr[n];this._removeWhitespace(n),o.afterLineNumber=t,this._insertWhitespace(o)}}_removeWhitespace(e){this._arr.splice(e,1),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,e-1)}onLinesDeleted(e,t){this._checkPendingChanges(),e=e|0,t=t|0,this._lineCount-=t-e+1;for(let i=0,n=this._arr.length;i<n;i++){const o=this._arr[i].afterLineNumber;e<=o&&o<=t?this._arr[i].afterLineNumber=e-1:o>t&&(this._arr[i].afterLineNumber-=t-e+1)}}onLinesInserted(e,t){this._checkPendingChanges(),e=e|0,t=t|0,this._lineCount+=t-e+1;for(let i=0,n=this._arr.length;i<n;i++){const o=this._arr[i].afterLineNumber;e<=o&&(this._arr[i].afterLineNumber+=t-e+1)}}getWhitespacesTotalHeight(){return this._checkPendingChanges(),this._arr.length===0?0:this.getWhitespacesAccumulatedHeight(this._arr.length-1)}getWhitespacesAccumulatedHeight(e){this._checkPendingChanges(),e=e|0;let t=Math.max(0,this._prefixSumValidIndex+1);t===0&&(this._arr[0].prefixSum=this._arr[0].height,t++);for(let i=t;i<=e;i++)this._arr[i].prefixSum=this._arr[i-1].prefixSum+this._arr[i].height;return this._prefixSumValidIndex=Math.max(this._prefixSumValidIndex,e),this._arr[e].prefixSum}getLinesTotalHeight(){this._checkPendingChanges();const e=this._lineHeight*this._lineCount,t=this.getWhitespacesTotalHeight();return e+t+this._paddingTop+this._paddingBottom}getWhitespaceAccumulatedHeightBeforeLineNumber(e){this._checkPendingChanges(),e=e|0;const t=this._findLastWhitespaceBeforeLineNumber(e);return t===-1?0:this.getWhitespacesAccumulatedHeight(t)}_findLastWhitespaceBeforeLineNumber(e){e=e|0;const t=this._arr;let i=0,n=t.length-1;for(;i<=n;){const r=(n-i|0)/2|0,l=i+r|0;if(t[l].afterLineNumber<e){if(l+1>=t.length||t[l+1].afterLineNumber>=e)return l;i=l+1|0}else n=l-1|0}return-1}_findFirstWhitespaceAfterLineNumber(e){e=e|0;const i=this._findLastWhitespaceBeforeLineNumber(e)+1;return i<this._arr.length?i:-1}getFirstWhitespaceIndexAfterLineNumber(e){return this._checkPendingChanges(),e=e|0,this._findFirstWhitespaceAfterLineNumber(e)}getVerticalOffsetForLineNumber(e,t=!1){this._checkPendingChanges(),e=e|0;let i;e>1?i=this._lineHeight*(e-1):i=0;const n=this.getWhitespaceAccumulatedHeightBeforeLineNumber(e-(t?1:0));return i+n+this._paddingTop}getVerticalOffsetAfterLineNumber(e,t=!1){this._checkPendingChanges(),e=e|0;const i=this._lineHeight*e,n=this.getWhitespaceAccumulatedHeightBeforeLineNumber(e+(t?1:0));return i+n+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),this._minWidth===-1){let e=0;for(let t=0,i=this._arr.length;t<i;t++)e=Math.max(e,this._arr[t].minWidth);this._minWidth=e}return this._minWidth}isAfterLines(e){this._checkPendingChanges();const t=this.getLinesTotalHeight();return e>t}isInTopPadding(e){return this._paddingTop===0?!1:(this._checkPendingChanges(),e<this._paddingTop)}isInBottomPadding(e){if(this._paddingBottom===0)return!1;this._checkPendingChanges();const t=this.getLinesTotalHeight();return e>=t-this._paddingBottom}getLineNumberAtOrAfterVerticalOffset(e){if(this._checkPendingChanges(),e=e|0,e<0)return 1;const t=this._lineCount|0,i=this._lineHeight;let n=1,o=t;for(;n<o;){const r=(n+o)/2|0,l=this.getVerticalOffsetForLineNumber(r)|0;if(e>=l+i)n=r+1;else{if(e>=l)return r;o=r}}return n>t?t:n}getLinesViewportData(e,t){this._checkPendingChanges(),e=e|0,t=t|0;const i=this._lineHeight,n=this.getLineNumberAtOrAfterVerticalOffset(e)|0,o=this.getVerticalOffsetForLineNumber(n)|0;let r=this._lineCount|0,l=this.getFirstWhitespaceIndexAfterLineNumber(n)|0;const a=this.getWhitespacesCount()|0;let d,c;l===-1?(l=a,c=r+1,d=0):(c=this.getAfterLineNumberForWhitespaceIndex(l)|0,d=this.getHeightForWhitespaceIndex(l)|0);let h=o,u=h;const m=5e5;let p=0;o>=m&&(p=Math.floor(o/m)*m,p=Math.floor(p/i)*i,u-=p);const g=[],f=e+(t-e)/2;let b=-1;for(let R=n;R<=r;R++){if(b===-1){const y=h,N=h+i;(y<=f&&f<N||y>f)&&(b=R)}for(h+=i,g[R-n]=u,u+=i;c===R;)u+=d,h+=d,l++,l>=a?c=r+1:(c=this.getAfterLineNumberForWhitespaceIndex(l)|0,d=this.getHeightForWhitespaceIndex(l)|0);if(h>=t){r=R;break}}b===-1&&(b=r);const U=this.getVerticalOffsetForLineNumber(r)|0;let S=n,Z=r;return S<Z&&o<e&&S++,S<Z&&U+i>t&&Z--,{bigNumbersDelta:p,startLineNumber:n,endLineNumber:r,relativeVerticalOffset:g,centeredLineNumber:b,completelyVisibleStartLineNumber:S,completelyVisibleEndLineNumber:Z,lineHeight:this._lineHeight}}getVerticalOffsetForWhitespaceIndex(e){this._checkPendingChanges(),e=e|0;const t=this.getAfterLineNumberForWhitespaceIndex(e);let i;t>=1?i=this._lineHeight*t:i=0;let n;return e>0?n=this.getWhitespacesAccumulatedHeight(e-1):n=0,i+n+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(e){this._checkPendingChanges(),e=e|0;let t=0,i=this.getWhitespacesCount()-1;if(i<0)return-1;const n=this.getVerticalOffsetForWhitespaceIndex(i),o=this.getHeightForWhitespaceIndex(i);if(e>=n+o)return-1;for(;t<i;){const r=Math.floor((t+i)/2),l=this.getVerticalOffsetForWhitespaceIndex(r),a=this.getHeightForWhitespaceIndex(r);if(e>=l+a)t=r+1;else{if(e>=l)return r;i=r}}return t}getWhitespaceAtVerticalOffset(e){this._checkPendingChanges(),e=e|0;const t=this.getWhitespaceIndexAtOrAfterVerticallOffset(e);if(t<0||t>=this.getWhitespacesCount())return null;const i=this.getVerticalOffsetForWhitespaceIndex(t);if(i>e)return null;const n=this.getHeightForWhitespaceIndex(t),o=this.getIdForWhitespaceIndex(t),r=this.getAfterLineNumberForWhitespaceIndex(t);return{id:o,afterLineNumber:r,verticalOffset:i,height:n}}getWhitespaceViewportData(e,t){this._checkPendingChanges(),e=e|0,t=t|0;const i=this.getWhitespaceIndexAtOrAfterVerticallOffset(e),n=this.getWhitespacesCount()-1;if(i<0)return[];const o=[];for(let r=i;r<=n;r++){const l=this.getVerticalOffsetForWhitespaceIndex(r),a=this.getHeightForWhitespaceIndex(r);if(l>=t)break;o.push({id:this.getIdForWhitespaceIndex(r),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(r),verticalOffset:l,height:a})}return o}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].id}getAfterLineNumberForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].afterLineNumber}getHeightForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].height}},HS.INSTANCE_COUNT=0,HS);const Sct=125;class vT{constructor(e,t,i,n){e=e|0,t=t|0,i=i|0,n=n|0,e<0&&(e=0),t<0&&(t=0),i<0&&(i=0),n<0&&(n=0),this.width=e,this.contentWidth=t,this.scrollWidth=Math.max(e,t),this.height=i,this.contentHeight=n,this.scrollHeight=Math.max(i,n)}equals(e){return this.width===e.width&&this.contentWidth===e.contentWidth&&this.height===e.height&&this.contentHeight===e.contentHeight}}class Nct extends be{constructor(e,t){super(),this._onDidContentSizeChange=this._register(new fe),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._dimensions=new vT(0,0,0,0),this._scrollable=this._register(new FM({forceIntegerValues:!0,smoothScrollDuration:e,scheduleAtNextAnimationFrame:t})),this.onDidScroll=this._scrollable.onScroll}getScrollable(){return this._scrollable}setSmoothScrollDuration(e){this._scrollable.setSmoothScrollDuration(e)}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}getScrollDimensions(){return this._dimensions}setScrollDimensions(e){if(this._dimensions.equals(e))return;const t=this._dimensions;this._dimensions=e,this._scrollable.setScrollDimensions({width:e.width,scrollWidth:e.scrollWidth,height:e.height,scrollHeight:e.scrollHeight},!0);const i=t.contentWidth!==e.contentWidth,n=t.contentHeight!==e.contentHeight;(i||n)&&this._onDidContentSizeChange.fire(new Cre(t.contentWidth,t.contentHeight,e.contentWidth,e.contentHeight))}getFutureScrollPosition(){return this._scrollable.getFutureScrollPosition()}getCurrentScrollPosition(){return this._scrollable.getCurrentScrollPosition()}setScrollPositionNow(e){this._scrollable.setScrollPositionNow(e)}setScrollPositionSmooth(e){this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}}class Rct extends be{constructor(e,t,i){super(),this._configuration=e;const n=this._configuration.options,o=n.get(146),r=n.get(84);this._linesLayout=new Zct(t,n.get(67),r.top,r.bottom),this._maxLineWidth=0,this._overlayWidgetsMinWidth=0,this._scrollable=this._register(new Nct(0,i)),this._configureSmoothScrollDuration(),this._scrollable.setScrollDimensions(new vT(o.contentWidth,0,o.height,0)),this.onDidScroll=this._scrollable.onDidScroll,this.onDidContentSizeChange=this._scrollable.onDidContentSizeChange,this._updateHeight()}dispose(){super.dispose()}getScrollable(){return this._scrollable.getScrollable()}onHeightMaybeChanged(){this._updateHeight()}_configureSmoothScrollDuration(){this._scrollable.setSmoothScrollDuration(this._configuration.options.get(115)?Sct:0)}onConfigurationChanged(e){const t=this._configuration.options;if(e.hasChanged(67)&&this._linesLayout.setLineHeight(t.get(67)),e.hasChanged(84)){const i=t.get(84);this._linesLayout.setPadding(i.top,i.bottom)}if(e.hasChanged(146)){const i=t.get(146),n=i.contentWidth,o=i.height,r=this._scrollable.getScrollDimensions(),l=r.contentWidth;this._scrollable.setScrollDimensions(new vT(n,r.contentWidth,o,this._getContentHeight(n,o,l)))}else this._updateHeight();e.hasChanged(115)&&this._configureSmoothScrollDuration()}onFlushed(e){this._linesLayout.onFlushed(e)}onLinesDeleted(e,t){this._linesLayout.onLinesDeleted(e,t)}onLinesInserted(e,t){this._linesLayout.onLinesInserted(e,t)}_getHorizontalScrollbarHeight(e,t){const n=this._configuration.options.get(104);return n.horizontal===2||e>=t?0:n.horizontalScrollbarSize}_getContentHeight(e,t,i){const n=this._configuration.options;let o=this._linesLayout.getLinesTotalHeight();return n.get(106)?o+=Math.max(0,t-n.get(67)-n.get(84).bottom):n.get(104).ignoreHorizontalScrollbarInContentHeight||(o+=this._getHorizontalScrollbarHeight(e,i)),o}_updateHeight(){const e=this._scrollable.getScrollDimensions(),t=e.width,i=e.height,n=e.contentWidth;this._scrollable.setScrollDimensions(new vT(t,e.contentWidth,i,this._getContentHeight(t,i,n)))}getCurrentViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new ppe(t.scrollTop,t.scrollLeft,e.width,e.height)}getFutureViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new ppe(t.scrollTop,t.scrollLeft,e.width,e.height)}_computeContentWidth(){const e=this._configuration.options,t=this._maxLineWidth,i=e.get(147),n=e.get(50),o=e.get(146);if(i.isViewportWrapping){const r=e.get(73);return t>o.contentWidth+n.typicalHalfwidthCharacterWidth&&r.enabled&&r.side==="right"?t+o.verticalScrollbarWidth:t}else{const r=e.get(105)*n.typicalHalfwidthCharacterWidth,l=this._linesLayout.getWhitespaceMinWidth();return Math.max(t+r+o.verticalScrollbarWidth,l,this._overlayWidgetsMinWidth)}}setMaxLineWidth(e){this._maxLineWidth=e,this._updateContentWidth()}setOverlayWidgetsMinWidth(e){this._overlayWidgetsMinWidth=e,this._updateContentWidth()}_updateContentWidth(){const e=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new vT(e.width,this._computeContentWidth(),e.height,e.contentHeight)),this._updateHeight()}saveState(){const e=this._scrollable.getFutureScrollPosition(),t=e.scrollTop,i=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t),n=this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(i);return{scrollTop:t,scrollTopWithoutViewZones:t-n,scrollLeft:e.scrollLeft}}changeWhitespace(e){const t=this._linesLayout.changeWhitespace(e);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(e,t=!1){return this._linesLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e,t=!1){return this._linesLayout.getVerticalOffsetAfterLineNumber(e,t)}isAfterLines(e){return this._linesLayout.isAfterLines(e)}isInTopPadding(e){return this._linesLayout.isInTopPadding(e)}isInBottomPadding(e){return this._linesLayout.isInBottomPadding(e)}getLineNumberAtVerticalOffset(e){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)}getWhitespaceAtVerticalOffset(e){return this._linesLayout.getWhitespaceAtVerticalOffset(e)}getLinesViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(e.top,e.top+e.height)}getLinesViewportDataAtScrollTop(e){const t=this._scrollable.getScrollDimensions();return e+t.height>t.scrollHeight&&(e=t.scrollHeight-t.height),e<0&&(e=0),this._linesLayout.getLinesViewportData(e,e+t.height)}getWhitespaceViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(e.top,e.top+e.height)}getWhitespaces(){return this._linesLayout.getWhitespaces()}getContentWidth(){return this._scrollable.getScrollDimensions().contentWidth}getScrollWidth(){return this._scrollable.getScrollDimensions().scrollWidth}getContentHeight(){return this._scrollable.getScrollDimensions().contentHeight}getScrollHeight(){return this._scrollable.getScrollDimensions().scrollHeight}getCurrentScrollLeft(){return this._scrollable.getCurrentScrollPosition().scrollLeft}getCurrentScrollTop(){return this._scrollable.getCurrentScrollPosition().scrollTop}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}setScrollPosition(e,t){t===1?this._scrollable.setScrollPositionNow(e):this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}deltaScrollNow(e,t){const i=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:i.scrollLeft+e,scrollTop:i.scrollTop+t})}}class Vct{constructor(e,t,i,n,o){this.editorId=e,this.model=t,this.configuration=i,this._linesCollection=n,this._coordinatesConverter=o,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}_clearCachedModelDecorationsResolver(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}dispose(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}reset(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onModelDecorationsChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onLineMappingChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}_getOrCreateViewModelDecoration(e){const t=e.id;let i=this._decorationsCache[t];if(!i){const n=e.range,o=e.options;let r;if(o.isWholeLine){const l=this._coordinatesConverter.convertModelPositionToViewPosition(new ge(n.startLineNumber,1),0,!1,!0),a=this._coordinatesConverter.convertModelPositionToViewPosition(new ge(n.endLineNumber,this.model.getLineMaxColumn(n.endLineNumber)),1);r=new z(l.lineNumber,l.column,a.lineNumber,a.column)}else r=this._coordinatesConverter.convertModelRangeToViewRange(n,1);i=new zVe(r,o),this._decorationsCache[t]=i}return i}getMinimapDecorationsInRange(e){return this._getDecorationsInRange(e,!0,!1).decorations}getDecorationsViewportData(e){let t=this._cachedModelDecorationsResolver!==null;return t=t&&e.equalsRange(this._cachedModelDecorationsResolverViewRange),t||(this._cachedModelDecorationsResolver=this._getDecorationsInRange(e,!1,!1),this._cachedModelDecorationsResolverViewRange=e),this._cachedModelDecorationsResolver}getInlineDecorationsOnLine(e,t=!1,i=!1){const n=new z(e,this._linesCollection.getViewLineMinColumn(e),e,this._linesCollection.getViewLineMaxColumn(e));return this._getDecorationsInRange(n,t,i).inlineDecorations[0]}_getDecorationsInRange(e,t,i){const n=this._linesCollection.getDecorationsInRange(e,this.editorId,PJ(this.configuration.options),t,i),o=e.startLineNumber,r=e.endLineNumber,l=[];let a=0;const d=[];for(let c=o;c<=r;c++)d[c-o]=[];for(let c=0,h=n.length;c<h;c++){const u=n[c],m=u.options;if(!vre(this.model,u))continue;const p=this._getOrCreateViewModelDecoration(u),g=p.range;if(l[a++]=p,m.inlineClassName){const f=new h2(g,m.inlineClassName,m.inlineClassNameAffectsLetterSpacing?3:0),b=Math.max(o,g.startLineNumber),U=Math.min(r,g.endLineNumber);for(let S=b;S<=U;S++)d[S-o].push(f)}if(m.beforeContentClassName&&o<=g.startLineNumber&&g.startLineNumber<=r){const f=new h2(new z(g.startLineNumber,g.startColumn,g.startLineNumber,g.startColumn),m.beforeContentClassName,1);d[g.startLineNumber-o].push(f)}if(m.afterContentClassName&&o<=g.endLineNumber&&g.endLineNumber<=r){const f=new h2(new z(g.endLineNumber,g.endColumn,g.endLineNumber,g.endColumn),m.afterContentClassName,2);d[g.endLineNumber-o].push(f)}}return{decorations:l,inlineDecorations:d}}}function vre(s,e){return!(e.options.hideInCommentTokens&&kre(s,e)||e.options.hideInStringTokens&&xre(s,e))}function kre(s,e){return gWe(s,e.range,t=>t===1)}function xre(s,e){return gWe(s,e.range,t=>t===2)}function gWe(s,e,t){for(let i=e.startLineNumber;i<=e.endLineNumber;i++){const n=s.tokenization.getLineTokens(i),o=i===e.startLineNumber,r=i===e.endLineNumber;let l=o?n.findTokenIndexAtOffset(e.startColumn-1):0;for(;l<n.getCount()&&!(r&&n.getStartOffset(l)>e.endColumn-1);){if(!t(n.getStandardTokenType(l)))return!1;l++}}return!0}function qP(s,e){return s===null?e?B5.INSTANCE:L5.INSTANCE:new Wct(s,e)}class Wct{constructor(e,t){this._projectionData=e,this._isVisible=t}isVisible(){return this._isVisible}setVisible(e){return this._isVisible=e,this}getProjectionData(){return this._projectionData}getViewLineCount(){return this._isVisible?this._projectionData.getOutputLineCount():0}getViewLineContent(e,t,i){this._assertVisible();const n=i>0?this._projectionData.breakOffsets[i-1]:0,o=this._projectionData.breakOffsets[i];let r;if(this._projectionData.injectionOffsets!==null){const l=this._projectionData.injectionOffsets.map((d,c)=>new dp(0,0,d+1,this._projectionData.injectionOptions[c],0));r=dp.applyInjectedText(e.getLineContent(t),l).substring(n,o)}else r=e.getValueInRange({startLineNumber:t,startColumn:n+1,endLineNumber:t,endColumn:o+1});return i>0&&(r=Ype(this._projectionData.wrappedTextIndentLength)+r),r}getViewLineLength(e,t,i){return this._assertVisible(),this._projectionData.getLineLength(i)}getViewLineMinColumn(e,t,i){return this._assertVisible(),this._projectionData.getMinOutputOffset(i)+1}getViewLineMaxColumn(e,t,i){return this._assertVisible(),this._projectionData.getMaxOutputOffset(i)+1}getViewLineData(e,t,i){const n=new Array;return this.getViewLinesData(e,t,i,1,0,[!0],n),n[0]}getViewLinesData(e,t,i,n,o,r,l){this._assertVisible();const a=this._projectionData,d=a.injectionOffsets,c=a.injectionOptions;let h=null;if(d){h=[];let m=0,p=0;for(let g=0;g<a.getOutputLineCount();g++){const f=new Array;h[g]=f;const b=g>0?a.breakOffsets[g-1]:0,U=a.breakOffsets[g];for(;p<d.length;){const S=c[p].content.length,Z=d[p]+m,R=Z+S;if(Z>U)break;if(b<R){const y=c[p];if(y.inlineClassName){const N=g>0?a.wrappedTextIndentLength:0,w=N+Math.max(Z-b,0),Q=N+Math.min(R-b,U-b);w!==Q&&f.push(new Alt(w,Q,y.inlineClassName,y.inlineClassNameAffectsLetterSpacing))}}if(R<=U)m+=S,p++;else break}}}let u;d?u=e.tokenization.getLineTokens(t).withInserted(d.map((m,p)=>({offset:m,text:c[p].content,tokenMetadata:Pr.defaultTokenMetadata}))):u=e.tokenization.getLineTokens(t);for(let m=i;m<i+n;m++){const p=o+m-i;if(!r[p]){l[p]=null;continue}l[p]=this._getViewLineData(u,h?h[m]:null,m)}}_getViewLineData(e,t,i){this._assertVisible();const n=this._projectionData,o=i>0?n.wrappedTextIndentLength:0,r=i>0?n.breakOffsets[i-1]:0,l=n.breakOffsets[i],a=e.sliceAndInflate(r,l,o);let d=a.getLineContent();i>0&&(d=Ype(n.wrappedTextIndentLength)+d);const c=this._projectionData.getMinOutputOffset(i)+1,h=d.length+1,u=i+1<this.getViewLineCount(),m=i===0?0:n.breakOffsetsVisibleColumn[i-1];return new fre(d,u,c,h,m,a,t)}getModelColumnOfViewPosition(e,t){return this._assertVisible(),this._projectionData.translateToInputOffset(e,t-1)+1}getViewPositionOfModelPosition(e,t,i=2){return this._assertVisible(),this._projectionData.translateToOutputPosition(t-1,i).toPosition(e)}getViewLineNumberOfModelPosition(e,t){this._assertVisible();const i=this._projectionData.translateToOutputPosition(t-1);return e+i.outputLineIndex}normalizePosition(e,t,i){const n=t.lineNumber-e;return this._projectionData.normalizeOutputPosition(e,t.column-1,i).toPosition(n)}getInjectedTextAt(e,t){return this._projectionData.getInjectedText(e,t-1)}_assertVisible(){if(!this._isVisible)throw new Error("Not supported")}}const az=class az{constructor(){}isVisible(){return!0}setVisible(e){return e?this:L5.INSTANCE}getProjectionData(){return null}getViewLineCount(){return 1}getViewLineContent(e,t,i){return e.getLineContent(t)}getViewLineLength(e,t,i){return e.getLineLength(t)}getViewLineMinColumn(e,t,i){return e.getLineMinColumn(t)}getViewLineMaxColumn(e,t,i){return e.getLineMaxColumn(t)}getViewLineData(e,t,i){const n=e.tokenization.getLineTokens(t),o=n.getLineContent();return new fre(o,!1,1,o.length+1,0,n.inflate(),null)}getViewLinesData(e,t,i,n,o,r,l){if(!r[o]){l[o]=null;return}l[o]=this.getViewLineData(e,t,0)}getModelColumnOfViewPosition(e,t){return t}getViewPositionOfModelPosition(e,t){return new ge(e,t)}getViewLineNumberOfModelPosition(e,t){return e}normalizePosition(e,t,i){return t}getInjectedTextAt(e,t){return null}};az.INSTANCE=new az;let B5=az;const dz=class dz{constructor(){}isVisible(){return!1}setVisible(e){return e?B5.INSTANCE:this}getProjectionData(){return null}getViewLineCount(){return 0}getViewLineContent(e,t,i){throw new Error("Not supported")}getViewLineLength(e,t,i){throw new Error("Not supported")}getViewLineMinColumn(e,t,i){throw new Error("Not supported")}getViewLineMaxColumn(e,t,i){throw new Error("Not supported")}getViewLineData(e,t,i){throw new Error("Not supported")}getViewLinesData(e,t,i,n,o,r,l){throw new Error("Not supported")}getModelColumnOfViewPosition(e,t){throw new Error("Not supported")}getViewPositionOfModelPosition(e,t){throw new Error("Not supported")}getViewLineNumberOfModelPosition(e,t){throw new Error("Not supported")}normalizePosition(e,t,i){throw new Error("Not supported")}getInjectedTextAt(e,t){throw new Error("Not supported")}};dz.INSTANCE=new dz;let L5=dz;const $P=[""];function Ype(s){if(s>=$P.length)for(let e=1;e<=s;e++)$P[e]=yct(e);return $P[s]}function yct(s){return new Array(s+1).join(" ")}class Qct{constructor(e,t,i,n,o,r,l,a,d,c){this._editorId=e,this.model=t,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=i,this._monospaceLineBreaksComputerFactory=n,this.fontInfo=o,this.tabSize=r,this.wrappingStrategy=l,this.wrappingColumn=a,this.wrappingIndent=d,this.wordBreak=c,this._constructLines(!0,null)}dispose(){this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[])}createCoordinatesConverter(){return new wct(this)}_constructLines(e,t){this.modelLineProjections=[],e&&(this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[]));const i=this.model.getLinesContent(),n=this.model.getInjectedTextDecorations(this._editorId),o=i.length,r=this.createLineBreaksComputer(),l=new zf(dp.fromDecorations(n));for(let g=0;g<o;g++){const f=l.takeWhile(b=>b.lineNumber===g+1);r.addRequest(i[g],f,t?t[g]:null)}const a=r.finalize(),d=[],c=this.hiddenAreasDecorationIds.map(g=>this.model.getDecorationRange(g)).sort(z.compareRangesUsingStarts);let h=1,u=0,m=-1,p=m+1<c.length?u+1:o+2;for(let g=0;g<o;g++){const f=g+1;f===p&&(m++,h=c[m].startLineNumber,u=c[m].endLineNumber,p=m+1<c.length?u+1:o+2);const b=f>=h&&f<=u,U=qP(a[g],!b);d[g]=U.getViewLineCount(),this.modelLineProjections[g]=U}this._validModelVersionId=this.model.getVersionId(),this.projectedModelLineLineCounts=new D7e(d)}getHiddenAreas(){return this.hiddenAreasDecorationIds.map(e=>this.model.getDecorationRange(e))}setHiddenAreas(e){const t=e.map(u=>this.model.validateRange(u)),i=Mct(t),n=this.hiddenAreasDecorationIds.map(u=>this.model.getDecorationRange(u)).sort(z.compareRangesUsingStarts);if(i.length===n.length){let u=!1;for(let m=0;m<i.length;m++)if(!i[m].equalsRange(n[m])){u=!0;break}if(!u)return!1}const o=i.map(u=>({range:u,options:ki.EMPTY}));this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,o);const r=i;let l=1,a=0,d=-1,c=d+1<r.length?a+1:this.modelLineProjections.length+2,h=!1;for(let u=0;u<this.modelLineProjections.length;u++){const m=u+1;m===c&&(d++,l=r[d].startLineNumber,a=r[d].endLineNumber,c=d+1<r.length?a+1:this.modelLineProjections.length+2);let p=!1;if(m>=l&&m<=a?this.modelLineProjections[u].isVisible()&&(this.modelLineProjections[u]=this.modelLineProjections[u].setVisible(!1),p=!0):(h=!0,this.modelLineProjections[u].isVisible()||(this.modelLineProjections[u]=this.modelLineProjections[u].setVisible(!0),p=!0)),p){const g=this.modelLineProjections[u].getViewLineCount();this.projectedModelLineLineCounts.setValue(u,g)}}return h||this.setHiddenAreas([]),!0}modelPositionIsVisible(e,t){return e<1||e>this.modelLineProjections.length?!1:this.modelLineProjections[e-1].isVisible()}getModelLineViewLineCount(e){return e<1||e>this.modelLineProjections.length?1:this.modelLineProjections[e-1].getViewLineCount()}setTabSize(e){return this.tabSize===e?!1:(this.tabSize=e,this._constructLines(!1,null),!0)}setWrappingSettings(e,t,i,n,o){const r=this.fontInfo.equals(e),l=this.wrappingStrategy===t,a=this.wrappingColumn===i,d=this.wrappingIndent===n,c=this.wordBreak===o;if(r&&l&&a&&d&&c)return!1;const h=r&&l&&!a&&d&&c;this.fontInfo=e,this.wrappingStrategy=t,this.wrappingColumn=i,this.wrappingIndent=n,this.wordBreak=o;let u=null;if(h){u=[];for(let m=0,p=this.modelLineProjections.length;m<p;m++)u[m]=this.modelLineProjections[m].getProjectionData()}return this._constructLines(!1,u),!0}createLineBreaksComputer(){return(this.wrappingStrategy==="advanced"?this._domLineBreaksComputerFactory:this._monospaceLineBreaksComputerFactory).createLineBreaksComputer(this.fontInfo,this.tabSize,this.wrappingColumn,this.wrappingIndent,this.wordBreak)}onModelFlushed(){this._constructLines(!0,null)}onModelLinesDeleted(e,t,i){if(!e||e<=this._validModelVersionId)return null;const n=t===1?1:this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,o=this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections.splice(t-1,i-t+1),this.projectedModelLineLineCounts.removeValues(t-1,i-t+1),new d$(n,o)}onModelLinesInserted(e,t,i,n){if(!e||e<=this._validModelVersionId)return null;const o=t>2&&!this.modelLineProjections[t-2].isVisible(),r=t===1?1:this.projectedModelLineLineCounts.getPrefixSum(t-1)+1;let l=0;const a=[],d=[];for(let c=0,h=n.length;c<h;c++){const u=qP(n[c],!o);a.push(u);const m=u.getViewLineCount();l+=m,d[c]=m}return this.modelLineProjections=this.modelLineProjections.slice(0,t-1).concat(a).concat(this.modelLineProjections.slice(t-1)),this.projectedModelLineLineCounts.insertValues(t-1,d),new c$(r,r+l-1)}onModelLineChanged(e,t,i){if(e!==null&&e<=this._validModelVersionId)return[!1,null,null,null];const n=t-1,o=this.modelLineProjections[n].getViewLineCount(),r=this.modelLineProjections[n].isVisible(),l=qP(i,r);this.modelLineProjections[n]=l;const a=this.modelLineProjections[n].getViewLineCount();let d=!1,c=0,h=-1,u=0,m=-1,p=0,g=-1;o>a?(c=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=c+a-1,p=h+1,g=p+(o-a)-1,d=!0):o<a?(c=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=c+o-1,u=h+1,m=u+(a-o)-1,d=!0):(c=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=c+a-1),this.projectedModelLineLineCounts.setValue(n,a);const f=c<=h?new pWe(c,h-c+1):null,b=u<=m?new c$(u,m):null,U=p<=g?new d$(p,g):null;return[d,f,b,U]}acceptVersionId(e){this._validModelVersionId=e,this.modelLineProjections.length===1&&!this.modelLineProjections[0].isVisible()&&this.setHiddenAreas([])}getViewLineCount(){return this.projectedModelLineLineCounts.getTotalSum()}_toValidViewLineNumber(e){if(e<1)return 1;const t=this.getViewLineCount();return e>t?t:e|0}getActiveIndentGuide(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t),i=this._toValidViewLineNumber(i);const n=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),o=this.convertViewPositionToModelPosition(t,this.getViewLineMinColumn(t)),r=this.convertViewPositionToModelPosition(i,this.getViewLineMinColumn(i)),l=this.model.guides.getActiveIndentGuide(n.lineNumber,o.lineNumber,r.lineNumber),a=this.convertModelPositionToViewPosition(l.startLineNumber,1),d=this.convertModelPositionToViewPosition(l.endLineNumber,this.model.getLineMaxColumn(l.endLineNumber));return{startLineNumber:a.lineNumber,endLineNumber:d.lineNumber,indent:l.indent}}getViewLineInfo(e){e=this._toValidViewLineNumber(e);const t=this.projectedModelLineLineCounts.getIndexOf(e-1),i=t.index,n=t.remainder;return new _pe(i+1,n)}getMinColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getMaxColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getModelStartPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),n=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new ge(e.modelLineNumber,n)}getModelEndPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),n=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new ge(e.modelLineNumber,n)}getViewLineInfosGroupedByModelRanges(e,t){const i=this.getViewLineInfo(e),n=this.getViewLineInfo(t),o=new Array;let r=this.getModelStartPositionOfViewLine(i),l=new Array;for(let a=i.modelLineNumber;a<=n.modelLineNumber;a++){const d=this.modelLineProjections[a-1];if(d.isVisible()){const c=a===i.modelLineNumber?i.modelLineWrappedLineIdx:0,h=a===n.modelLineNumber?n.modelLineWrappedLineIdx+1:d.getViewLineCount();for(let u=c;u<h;u++)l.push(new _pe(a,u))}if(!d.isVisible()&&r){const c=new ge(a-1,this.model.getLineMaxColumn(a-1)+1),h=z.fromPositions(r,c);o.push(new zpe(h,l)),l=[],r=null}else d.isVisible()&&!r&&(r=new ge(a,1))}if(r){const a=z.fromPositions(r,this.getModelEndPositionOfViewLine(n));o.push(new zpe(a,l))}return o}getViewLinesBracketGuides(e,t,i,n){const o=i?this.convertViewPositionToModelPosition(i.lineNumber,i.column):null,r=[];for(const l of this.getViewLineInfosGroupedByModelRanges(e,t)){const a=l.modelRange.startLineNumber,d=this.model.guides.getLinesBracketGuides(a,l.modelRange.endLineNumber,o,n);for(const c of l.viewLines){const u=d[c.modelLineNumber-a].map(m=>{if(m.forWrappedLinesAfterColumn!==-1&&this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.forWrappedLinesAfterColumn).lineNumber>=c.modelLineWrappedLineIdx||m.forWrappedLinesBeforeOrAtColumn!==-1&&this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.forWrappedLinesBeforeOrAtColumn).lineNumber<c.modelLineWrappedLineIdx)return;if(!m.horizontalLine)return m;let p=-1;if(m.column!==-1){const b=this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.column);if(b.lineNumber===c.modelLineWrappedLineIdx)p=b.column;else if(b.lineNumber<c.modelLineWrappedLineIdx)p=this.getMinColumnOfViewLine(c);else if(b.lineNumber>c.modelLineWrappedLineIdx)return}const g=this.convertModelPositionToViewPosition(c.modelLineNumber,m.horizontalLine.endColumn),f=this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.horizontalLine.endColumn);return f.lineNumber===c.modelLineWrappedLineIdx?new ZS(m.visibleColumn,p,m.className,new i2(m.horizontalLine.top,g.column),-1,-1):f.lineNumber<c.modelLineWrappedLineIdx||m.visibleColumn!==-1?void 0:new ZS(m.visibleColumn,p,m.className,new i2(m.horizontalLine.top,this.getMaxColumnOfViewLine(c)),-1,-1)});r.push(u.filter(m=>!!m))}}return r}getViewLinesIndentGuides(e,t){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const i=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),n=this.convertViewPositionToModelPosition(t,this.getViewLineMaxColumn(t));let o=[];const r=[],l=[],a=i.lineNumber-1,d=n.lineNumber-1;let c=null;for(let p=a;p<=d;p++){const g=this.modelLineProjections[p];if(g.isVisible()){const f=g.getViewLineNumberOfModelPosition(0,p===a?i.column:1),b=g.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(p+1)),U=b-f+1;let S=0;U>1&&g.getViewLineMinColumn(this.model,p+1,b)===1&&(S=f===0?1:2),r.push(U),l.push(S),c===null&&(c=new ge(p+1,0))}else c!==null&&(o=o.concat(this.model.guides.getLinesIndentGuides(c.lineNumber,p)),c=null)}c!==null&&(o=o.concat(this.model.guides.getLinesIndentGuides(c.lineNumber,n.lineNumber)),c=null);const h=t-e+1,u=new Array(h);let m=0;for(let p=0,g=o.length;p<g;p++){let f=o[p];const b=Math.min(h-m,r[p]),U=l[p];let S;U===2?S=0:U===1?S=1:S=b;for(let Z=0;Z<b;Z++)Z===S&&(f=0),u[m++]=f}return u}getViewLineContent(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineContent(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineLength(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineLength(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineMinColumn(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineMinColumn(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineMaxColumn(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineMaxColumn(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineData(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineData(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLinesData(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const n=this.projectedModelLineLineCounts.getIndexOf(e-1);let o=e;const r=n.index,l=n.remainder,a=[];for(let d=r,c=this.model.getLineCount();d<c;d++){const h=this.modelLineProjections[d];if(!h.isVisible())continue;const u=d===r?l:0;let m=h.getViewLineCount()-u,p=!1;if(o+m>t&&(p=!0,m=t-o+1),h.getViewLinesData(this.model,d+1,u,m,o-e,i,a),o+=m,p)break}return a}validateViewPosition(e,t,i){e=this._toValidViewLineNumber(e);const n=this.projectedModelLineLineCounts.getIndexOf(e-1),o=n.index,r=n.remainder,l=this.modelLineProjections[o],a=l.getViewLineMinColumn(this.model,o+1,r),d=l.getViewLineMaxColumn(this.model,o+1,r);t<a&&(t=a),t>d&&(t=d);const c=l.getModelColumnOfViewPosition(r,t);return this.model.validatePosition(new ge(o+1,c)).equals(i)?new ge(e,t):this.convertModelPositionToViewPosition(i.lineNumber,i.column)}validateViewRange(e,t){const i=this.validateViewPosition(e.startLineNumber,e.startColumn,t.getStartPosition()),n=this.validateViewPosition(e.endLineNumber,e.endColumn,t.getEndPosition());return new z(i.lineNumber,i.column,n.lineNumber,n.column)}convertViewPositionToModelPosition(e,t){const i=this.getViewLineInfo(e),n=this.modelLineProjections[i.modelLineNumber-1].getModelColumnOfViewPosition(i.modelLineWrappedLineIdx,t);return this.model.validatePosition(new ge(i.modelLineNumber,n))}convertViewRangeToModelRange(e){const t=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),i=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);return new z(t.lineNumber,t.column,i.lineNumber,i.column)}convertModelPositionToViewPosition(e,t,i=2,n=!1,o=!1){const r=this.model.validatePosition(new ge(e,t)),l=r.lineNumber,a=r.column;let d=l-1,c=!1;if(o)for(;d<this.modelLineProjections.length&&!this.modelLineProjections[d].isVisible();)d++,c=!0;else for(;d>0&&!this.modelLineProjections[d].isVisible();)d--,c=!0;if(d===0&&!this.modelLineProjections[d].isVisible())return new ge(n?0:1,1);const h=1+this.projectedModelLineLineCounts.getPrefixSum(d);let u;return c?o?u=this.modelLineProjections[d].getViewPositionOfModelPosition(h,1,i):u=this.modelLineProjections[d].getViewPositionOfModelPosition(h,this.model.getLineMaxColumn(d+1),i):u=this.modelLineProjections[l-1].getViewPositionOfModelPosition(h,a,i),u}convertModelRangeToViewRange(e,t=0){if(e.isEmpty()){const i=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,t);return z.fromPositions(i)}else{const i=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,1),n=this.convertModelPositionToViewPosition(e.endLineNumber,e.endColumn,0);return new z(i.lineNumber,i.column,n.lineNumber,n.column)}}getViewLineNumberOfModelPosition(e,t){let i=e-1;if(this.modelLineProjections[i].isVisible()){const o=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(o,t)}for(;i>0&&!this.modelLineProjections[i].isVisible();)i--;if(i===0&&!this.modelLineProjections[i].isVisible())return 1;const n=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(n,this.model.getLineMaxColumn(i+1))}getDecorationsInRange(e,t,i,n,o){const r=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),l=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);if(l.lineNumber-r.lineNumber<=e.endLineNumber-e.startLineNumber)return this.model.getDecorationsInRange(new z(r.lineNumber,1,l.lineNumber,l.column),t,i,n,o);let a=[];const d=r.lineNumber-1,c=l.lineNumber-1;let h=null;for(let g=d;g<=c;g++)if(this.modelLineProjections[g].isVisible())h===null&&(h=new ge(g+1,g===d?r.column:1));else if(h!==null){const b=this.model.getLineMaxColumn(g);a=a.concat(this.model.getDecorationsInRange(new z(h.lineNumber,h.column,g,b),t,i,n)),h=null}h!==null&&(a=a.concat(this.model.getDecorationsInRange(new z(h.lineNumber,h.column,l.lineNumber,l.column),t,i,n)),h=null),a.sort((g,f)=>{const b=z.compareRangesUsingStarts(g.range,f.range);return b===0?g.id<f.id?-1:g.id>f.id?1:0:b});const u=[];let m=0,p=null;for(const g of a){const f=g.id;p!==f&&(p=f,u[m++]=g)}return u}getInjectedTextAt(e){const t=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[t.modelLineNumber-1].getInjectedTextAt(t.modelLineWrappedLineIdx,e.column)}normalizePosition(e,t){const i=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[i.modelLineNumber-1].normalizePosition(i.modelLineWrappedLineIdx,e,t)}getLineIndentColumn(e){const t=this.getViewLineInfo(e);return t.modelLineWrappedLineIdx===0?this.model.getLineIndentColumn(t.modelLineNumber):0}}function Mct(s){if(s.length===0)return[];const e=s.slice();e.sort(z.compareRangesUsingStarts);const t=[];let i=e[0].startLineNumber,n=e[0].endLineNumber;for(let o=1,r=e.length;o<r;o++){const l=e[o];l.startLineNumber>n+1?(t.push(new z(i,1,n,1)),i=l.startLineNumber,n=l.endLineNumber):l.endLineNumber>n&&(n=l.endLineNumber)}return t.push(new z(i,1,n,1)),t}class _pe{constructor(e,t){this.modelLineNumber=e,this.modelLineWrappedLineIdx=t}}class zpe{constructor(e,t){this.modelRange=e,this.viewLines=t}}class wct{constructor(e){this._lines=e}convertViewPositionToModelPosition(e){return this._lines.convertViewPositionToModelPosition(e.lineNumber,e.column)}convertViewRangeToModelRange(e){return this._lines.convertViewRangeToModelRange(e)}validateViewPosition(e,t){return this._lines.validateViewPosition(e.lineNumber,e.column,t)}validateViewRange(e,t){return this._lines.validateViewRange(e,t)}convertModelPositionToViewPosition(e,t,i,n){return this._lines.convertModelPositionToViewPosition(e.lineNumber,e.column,t,i,n)}convertModelRangeToViewRange(e,t){return this._lines.convertModelRangeToViewRange(e,t)}modelPositionIsVisible(e){return this._lines.modelPositionIsVisible(e.lineNumber,e.column)}getModelLineViewLineCount(e){return this._lines.getModelLineViewLineCount(e)}getViewLineNumberOfModelPosition(e,t){return this._lines.getViewLineNumberOfModelPosition(e,t)}}class Tct{constructor(e){this.model=e}dispose(){}createCoordinatesConverter(){return new Cct(this)}getHiddenAreas(){return[]}setHiddenAreas(e){return!1}setTabSize(e){return!1}setWrappingSettings(e,t,i,n){return!1}createLineBreaksComputer(){const e=[];return{addRequest:(t,i,n)=>{e.push(null)},finalize:()=>e}}onModelFlushed(){}onModelLinesDeleted(e,t,i){return new d$(t,i)}onModelLinesInserted(e,t,i,n){return new c$(t,i)}onModelLineChanged(e,t,i){return[!1,new pWe(t,1),null,null]}acceptVersionId(e){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(e,t,i){return{startLineNumber:e,endLineNumber:e,indent:0}}getViewLinesBracketGuides(e,t,i){return new Array(t-e+1).fill([])}getViewLinesIndentGuides(e,t){const i=t-e+1,n=new Array(i);for(let o=0;o<i;o++)n[o]=0;return n}getViewLineContent(e){return this.model.getLineContent(e)}getViewLineLength(e){return this.model.getLineLength(e)}getViewLineMinColumn(e){return this.model.getLineMinColumn(e)}getViewLineMaxColumn(e){return this.model.getLineMaxColumn(e)}getViewLineData(e){const t=this.model.tokenization.getLineTokens(e),i=t.getLineContent();return new fre(i,!1,1,i.length+1,0,t.inflate(),null)}getViewLinesData(e,t,i){const n=this.model.getLineCount();e=Math.min(Math.max(1,e),n),t=Math.min(Math.max(1,t),n);const o=[];for(let r=e;r<=t;r++){const l=r-e;o[l]=i[l]?this.getViewLineData(r):null}return o}getDecorationsInRange(e,t,i,n,o){return this.model.getDecorationsInRange(e,t,i,n,o)}normalizePosition(e,t){return this.model.normalizePosition(e,t)}getLineIndentColumn(e){return this.model.getLineIndentColumn(e)}getInjectedTextAt(e){return null}}class Cct{constructor(e){this._lines=e}_validPosition(e){return this._lines.model.validatePosition(e)}_validRange(e){return this._lines.model.validateRange(e)}convertViewPositionToModelPosition(e){return this._validPosition(e)}convertViewRangeToModelRange(e){return this._validRange(e)}validateViewPosition(e,t){return this._validPosition(t)}validateViewRange(e,t){return this._validRange(t)}convertModelPositionToViewPosition(e){return this._validPosition(e)}convertModelRangeToViewRange(e){return this._validRange(e)}modelPositionIsVisible(e){const t=this._lines.model.getLineCount();return!(e.lineNumber<1||e.lineNumber>t)}getModelLineViewLineCount(e){return 1}getViewLineNumberOfModelPosition(e,t){return e}}const wA=em.Right;class Bct{constructor(e){this.persist=0,this._requiredLanes=1,this.lanes=new Uint8Array(Math.ceil((e+1)*wA/8))}reset(e){const t=Math.ceil((e+1)*wA/8);this.lanes.length<t?this.lanes=new Uint8Array(t):this.lanes.fill(0),this._requiredLanes=1}get requiredLanes(){return this._requiredLanes}push(e,t,i){i&&(this.persist|=1<<e-1);for(let n=t.startLineNumber;n<=t.endLineNumber;n++){const o=wA*n+(e-1);this.lanes[o>>>3]|=1<<o%8,this._requiredLanes=Math.max(this._requiredLanes,this.countAtLine(n))}}getLanesAtLine(e){const t=[];let i=wA*e;for(let n=0;n<wA;n++)(this.persist&1<<n||this.lanes[i>>>3]&1<<i%8)&&t.push(n+1),i++;return t.length?t:[em.Center]}countAtLine(e){let t=wA*e,i=0;for(let n=0;n<wA;n++)(this.persist&1<<n||this.lanes[t>>>3]&1<<t%8)&&i++,t++;return i}}let Lct=class extends be{constructor(e,t,i,n,o,r,l,a,d,c){if(super(),this.languageConfigurationService=l,this._themeService=a,this._attachedView=d,this._transactionalTarget=c,this.hiddenAreasModel=new kct,this.previousHiddenAreas=[],this._editorId=e,this._configuration=t,this.model=i,this._eventDispatcher=new oct,this.onEvent=this._eventDispatcher.onEvent,this.cursorConfig=new XR(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._updateConfigurationViewLineCount=this._register(new cs(()=>this._updateConfigurationViewLineCountNow(),0)),this._hasFocus=!1,this._viewportStart=Ire.create(this.model),this.glyphLanes=new Bct(0),this.model.isTooLargeForTokenization())this._lines=new Tct(this.model);else{const h=this._configuration.options,u=h.get(50),m=h.get(140),p=h.get(147),g=h.get(139),f=h.get(130);this._lines=new Qct(this._editorId,this.model,n,o,u,this.model.getOptions().tabSize,m,p.wrappingColumn,g,f)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new fct(i,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new Rct(this._configuration,this.getLineCount(),r)),this._register(this.viewLayout.onDidScroll(h=>{h.scrollTopChanged&&this._handleVisibleLinesChanged(),h.scrollTopChanged&&this._viewportStart.invalidate(),this._eventDispatcher.emitSingleViewEvent(new ect(h)),this._eventDispatcher.emitOutgoingEvent(new Lre(h.oldScrollWidth,h.oldScrollLeft,h.oldScrollHeight,h.oldScrollTop,h.scrollWidth,h.scrollLeft,h.scrollHeight,h.scrollTop))})),this._register(this.viewLayout.onDidContentSizeChange(h=>{this._eventDispatcher.emitOutgoingEvent(h)})),this._decorations=new Vct(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast(h=>{try{const u=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(u,h)}finally{this._eventDispatcher.endEmitViewEvents()}})),this._register(M5.getInstance().onDidChange(()=>{this._eventDispatcher.emitSingleViewEvent(new nct)})),this._register(this._themeService.onDidColorThemeChange(h=>{this._invalidateDecorationsColorCache(),this._eventDispatcher.emitSingleViewEvent(new tct(h))})),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this._viewportStart.dispose(),this._eventDispatcher.dispose()}createLineBreaksComputer(){return this._lines.createLineBreaksComputer()}addViewEventHandler(e){this._eventDispatcher.addViewEventHandler(e)}removeViewEventHandler(e){this._eventDispatcher.removeViewEventHandler(e)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}getModelVisibleRanges(){const e=this.viewLayout.getLinesViewportData(),t=new z(e.startLineNumber,this.getLineMinColumn(e.startLineNumber),e.endLineNumber,this.getLineMaxColumn(e.endLineNumber));return this._toModelVisibleRanges(t)}visibleLinesStabilized(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!0)}_handleVisibleLinesChanged(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!1)}setHasFocus(e){this._hasFocus=e,this._cursor.setHasFocus(e),this._eventDispatcher.emitSingleViewEvent(new qdt(e)),this._eventDispatcher.emitOutgoingEvent(new Bre(!e,e))}onCompositionStart(){this._eventDispatcher.emitSingleViewEvent(new jdt)}onCompositionEnd(){this._eventDispatcher.emitSingleViewEvent(new Pdt)}_captureStableViewport(){if(this._viewportStart.isValid&&this.viewLayout.getCurrentScrollTop()>0){const e=new ge(this._viewportStart.viewLineNumber,this.getLineMinColumn(this._viewportStart.viewLineNumber)),t=this.coordinatesConverter.convertViewPositionToModelPosition(e);return new jpe(t,this._viewportStart.startLineDelta)}return new jpe(null,0)}_onConfigurationChanged(e,t){const i=this._captureStableViewport(),n=this._configuration.options,o=n.get(50),r=n.get(140),l=n.get(147),a=n.get(139),d=n.get(130);this._lines.setWrappingSettings(o,r,l.wrappingColumn,a,d)&&(e.emitViewEvent(new RI),e.emitViewEvent(new VI),e.emitViewEvent(new MA(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this._updateConfigurationViewLineCount.schedule()),t.hasChanged(92)&&(this._decorations.reset(),e.emitViewEvent(new MA(null))),t.hasChanged(99)&&(this._decorations.reset(),e.emitViewEvent(new MA(null))),e.emitViewEvent(new Hdt(t)),this.viewLayout.onConfigurationChanged(t),i.recoverViewportStart(this.coordinatesConverter,this.viewLayout),XR.shouldRecreate(t)&&(this.cursorConfig=new XR(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeContentOrInjectedText(e=>{try{const i=this._eventDispatcher.beginEmitViewEvents();let n=!1,o=!1;const r=e instanceof XS?e.rawContentChangedEvent.changes:e.changes,l=e instanceof XS?e.rawContentChangedEvent.versionId:null,a=this._lines.createLineBreaksComputer();for(const h of r)switch(h.changeType){case 4:{for(let u=0;u<h.detail.length;u++){const m=h.detail[u];let p=h.injectedTexts[u];p&&(p=p.filter(g=>!g.ownerId||g.ownerId===this._editorId)),a.addRequest(m,p,null)}break}case 2:{let u=null;h.injectedText&&(u=h.injectedText.filter(m=>!m.ownerId||m.ownerId===this._editorId)),a.addRequest(h.detail,u,null);break}}const d=a.finalize(),c=new zf(d);for(const h of r)switch(h.changeType){case 1:{this._lines.onModelFlushed(),i.emitViewEvent(new RI),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),n=!0;break}case 3:{const u=this._lines.onModelLinesDeleted(l,h.fromLineNumber,h.toLineNumber);u!==null&&(i.emitViewEvent(u),this.viewLayout.onLinesDeleted(u.fromLineNumber,u.toLineNumber)),n=!0;break}case 4:{const u=c.takeCount(h.detail.length),m=this._lines.onModelLinesInserted(l,h.fromLineNumber,h.toLineNumber,u);m!==null&&(i.emitViewEvent(m),this.viewLayout.onLinesInserted(m.fromLineNumber,m.toLineNumber)),n=!0;break}case 2:{const u=c.dequeue(),[m,p,g,f]=this._lines.onModelLineChanged(l,h.lineNumber,u);o=m,p&&i.emitViewEvent(p),g&&(i.emitViewEvent(g),this.viewLayout.onLinesInserted(g.fromLineNumber,g.toLineNumber)),f&&(i.emitViewEvent(f),this.viewLayout.onLinesDeleted(f.fromLineNumber,f.toLineNumber));break}case 5:break}l!==null&&this._lines.acceptVersionId(l),this.viewLayout.onHeightMaybeChanged(),!n&&o&&(i.emitViewEvent(new VI),i.emitViewEvent(new MA(null)),this._cursor.onLineMappingChanged(i),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}const t=this._viewportStart.isValid;if(this._viewportStart.invalidate(),this._configuration.setModelLineCount(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&t){const i=this.model._getTrackedRange(this._viewportStart.modelTrackedRange);if(i){const n=this.coordinatesConverter.convertModelPositionToViewPosition(i.getStartPosition()),o=this.viewLayout.getVerticalOffsetForLineNumber(n.lineNumber);this.viewLayout.setScrollPosition({scrollTop:o+this._viewportStart.startLineDelta},1)}}try{const i=this._eventDispatcher.beginEmitViewEvents();e instanceof XS&&i.emitOutgoingEvent(new mct(e.contentChangedEvent)),this._cursor.onModelContentChanged(i,e)}finally{this._eventDispatcher.endEmitViewEvents()}this._handleVisibleLinesChanged()})),this._register(this.model.onDidChangeTokens(e=>{const t=[];for(let i=0,n=e.ranges.length;i<n;i++){const o=e.ranges[i],r=this.coordinatesConverter.convertModelPositionToViewPosition(new ge(o.fromLineNumber,1)).lineNumber,l=this.coordinatesConverter.convertModelPositionToViewPosition(new ge(o.toLineNumber,this.model.getLineMaxColumn(o.toLineNumber))).lineNumber;t[i]={fromLineNumber:r,toLineNumber:l}}this._eventDispatcher.emitSingleViewEvent(new ict(t)),this._eventDispatcher.emitOutgoingEvent(new gct(e))})),this._register(this.model.onDidChangeLanguageConfiguration(e=>{this._eventDispatcher.emitSingleViewEvent(new $dt),this.cursorConfig=new XR(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new uct(e))})),this._register(this.model.onDidChangeLanguage(e=>{this.cursorConfig=new XR(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new hct(e))})),this._register(this.model.onDidChangeOptions(e=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const t=this._eventDispatcher.beginEmitViewEvents();t.emitViewEvent(new RI),t.emitViewEvent(new VI),t.emitViewEvent(new MA(null)),this._cursor.onLineMappingChanged(t),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new XR(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new pct(e))})),this._register(this.model.onDidChangeDecorations(e=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new MA(e)),this._eventDispatcher.emitOutgoingEvent(new cct(e))}))}setHiddenAreas(e,t){var r;this.hiddenAreasModel.setHiddenAreas(t,e);const i=this.hiddenAreasModel.getMergedRanges();if(i===this.previousHiddenAreas)return;this.previousHiddenAreas=i;const n=this._captureStableViewport();let o=!1;try{const l=this._eventDispatcher.beginEmitViewEvents();o=this._lines.setHiddenAreas(i),o&&(l.emitViewEvent(new RI),l.emitViewEvent(new VI),l.emitViewEvent(new MA(null)),this._cursor.onLineMappingChanged(l),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged());const a=(r=n.viewportStartModelPosition)==null?void 0:r.lineNumber;a&&i.some(c=>c.startLineNumber<=a&&a<=c.endLineNumber)||n.recoverViewportStart(this.coordinatesConverter,this.viewLayout)}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule(),o&&this._eventDispatcher.emitOutgoingEvent(new act)}getVisibleRangesPlusViewportAboveBelow(){const e=this._configuration.options.get(146),t=this._configuration.options.get(67),i=Math.max(20,Math.round(e.height/t)),n=this.viewLayout.getLinesViewportData(),o=Math.max(1,n.completelyVisibleStartLineNumber-i),r=Math.min(this.getLineCount(),n.completelyVisibleEndLineNumber+i);return this._toModelVisibleRanges(new z(o,this.getLineMinColumn(o),r,this.getLineMaxColumn(r)))}getVisibleRanges(){const e=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(e)}getHiddenAreas(){return this._lines.getHiddenAreas()}_toModelVisibleRanges(e){const t=this.coordinatesConverter.convertViewRangeToModelRange(e),i=this._lines.getHiddenAreas();if(i.length===0)return[t];const n=[];let o=0,r=t.startLineNumber,l=t.startColumn;const a=t.endLineNumber,d=t.endColumn;for(let c=0,h=i.length;c<h;c++){const u=i[c].startLineNumber,m=i[c].endLineNumber;m<r||u>a||(r<u&&(n[o++]=new z(r,l,u-1,this.model.getLineMaxColumn(u-1))),r=m+1,l=1)}return(r<a||r===a&&l<d)&&(n[o++]=new z(r,l,a,d)),n}getCompletelyVisibleViewRange(){const e=this.viewLayout.getLinesViewportData(),t=e.completelyVisibleStartLineNumber,i=e.completelyVisibleEndLineNumber;return new z(t,this.getLineMinColumn(t),i,this.getLineMaxColumn(i))}getCompletelyVisibleViewRangeAtScrollTop(e){const t=this.viewLayout.getLinesViewportDataAtScrollTop(e),i=t.completelyVisibleStartLineNumber,n=t.completelyVisibleEndLineNumber;return new z(i,this.getLineMinColumn(i),n,this.getLineMaxColumn(n))}saveState(){const e=this.viewLayout.saveState(),t=e.scrollTop,i=this.viewLayout.getLineNumberAtVerticalOffset(t),n=this.coordinatesConverter.convertViewPositionToModelPosition(new ge(i,this.getLineMinColumn(i))),o=this.viewLayout.getVerticalOffsetForLineNumber(i)-t;return{scrollLeft:e.scrollLeft,firstPosition:n,firstPositionDeltaTop:o}}reduceRestoreState(e){if(typeof e.firstPosition>"u")return this._reduceRestoreStateCompatibility(e);const t=this.model.validatePosition(e.firstPosition),i=this.coordinatesConverter.convertModelPositionToViewPosition(t),n=this.viewLayout.getVerticalOffsetForLineNumber(i.lineNumber)-e.firstPositionDeltaTop;return{scrollLeft:e.scrollLeft,scrollTop:n}}_reduceRestoreStateCompatibility(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTopWithoutViewZones}}getTabSize(){return this.model.getOptions().tabSize}getLineCount(){return this._lines.getViewLineCount()}setViewport(e,t,i){this._viewportStart.update(this,e)}getActiveIndentGuide(e,t,i){return this._lines.getActiveIndentGuide(e,t,i)}getLinesIndentGuides(e,t){return this._lines.getViewLinesIndentGuides(e,t)}getBracketGuidesInRangeByLine(e,t,i,n){return this._lines.getViewLinesBracketGuides(e,t,i,n)}getLineContent(e){return this._lines.getViewLineContent(e)}getLineLength(e){return this._lines.getViewLineLength(e)}getLineMinColumn(e){return this._lines.getViewLineMinColumn(e)}getLineMaxColumn(e){return this._lines.getViewLineMaxColumn(e)}getLineFirstNonWhitespaceColumn(e){const t=Ua(this.getLineContent(e));return t===-1?0:t+1}getLineLastNonWhitespaceColumn(e){const t=ip(this.getLineContent(e));return t===-1?0:t+2}getMinimapDecorationsInRange(e){return this._decorations.getMinimapDecorationsInRange(e)}getDecorationsInViewport(e){return this._decorations.getDecorationsViewportData(e).decorations}getInjectedTextAt(e){return this._lines.getInjectedTextAt(e)}getViewportViewLineRenderingData(e,t){const n=this._decorations.getDecorationsViewportData(e).inlineDecorations[t-e.startLineNumber];return this._getViewLineRenderingData(t,n)}getViewLineRenderingData(e){const t=this._decorations.getInlineDecorationsOnLine(e);return this._getViewLineRenderingData(e,t)}_getViewLineRenderingData(e,t){const i=this.model.mightContainRTL(),n=this.model.mightContainNonBasicASCII(),o=this.getTabSize(),r=this._lines.getViewLineData(e);return r.inlineDecorations&&(t=[...t,...r.inlineDecorations.map(l=>l.toInlineDecoration(e))]),new rh(r.minColumn,r.maxColumn,r.content,r.continuesWithWrappedLine,i,n,r.tokens,t,o,r.startVisibleColumn)}getViewLineData(e){return this._lines.getViewLineData(e)}getMinimapLinesRenderingData(e,t,i){const n=this._lines.getViewLinesData(e,t,i);return new Flt(this.getTabSize(),n)}getAllOverviewRulerDecorations(e){const t=this.model.getOverviewRulerDecorations(this._editorId,PJ(this._configuration.options)),i=new vct;for(const n of t){const o=n.options,r=o.overviewRuler;if(!r)continue;const l=r.position;if(l===0)continue;const a=r.getColor(e.value),d=this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.startLineNumber,n.range.startColumn),c=this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.endLineNumber,n.range.endColumn);i.accept(a,o.zIndex,d,c,l)}return i.asArray}_invalidateDecorationsColorCache(){const e=this.model.getOverviewRulerDecorations();for(const t of e){const i=t.options.overviewRuler;i==null||i.invalidateCachedColor();const n=t.options.minimap;n==null||n.invalidateCachedColor()}}getValueInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueInRange(i,t)}getValueLengthInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueLengthInRange(i,t)}modifyPosition(e,t){const i=this.coordinatesConverter.convertViewPositionToModelPosition(e),n=this.model.modifyPosition(i,t);return this.coordinatesConverter.convertModelPositionToViewPosition(n)}deduceModelPositionRelativeToViewPosition(e,t,i){const n=this.coordinatesConverter.convertViewPositionToModelPosition(e);this.model.getEOL().length===2&&(t<0?t-=i:t+=i);const r=this.model.getOffsetAt(n)+t;return this.model.getPositionAt(r)}getPlainTextToCopy(e,t,i){const n=i?`\r
- `:this.model.getEOL();e=e.slice(0),e.sort(z.compareRangesUsingStarts);let o=!1,r=!1;for(const a of e)a.isEmpty()?o=!0:r=!0;if(!r){if(!t)return"";const a=e.map(c=>c.startLineNumber);let d="";for(let c=0;c<a.length;c++)c>0&&a[c-1]===a[c]||(d+=this.model.getLineContent(a[c])+n);return d}if(o&&t){const a=[];let d=0;for(const c of e){const h=c.startLineNumber;c.isEmpty()?h!==d&&a.push(this.model.getLineContent(h)):a.push(this.model.getValueInRange(c,i?2:0)),d=h}return a.length===1?a[0]:a}const l=[];for(const a of e)a.isEmpty()||l.push(this.model.getValueInRange(a,i?2:0));return l.length===1?l[0]:l}getRichTextToCopy(e,t){const i=this.model.getLanguageId();if(i===Ya||e.length!==1)return null;let n=e[0];if(n.isEmpty()){if(!t)return null;const c=n.startLineNumber;n=new z(c,this.model.getLineMinColumn(c),c,this.model.getLineMaxColumn(c))}const o=this._configuration.options.get(50),r=this._getColorMap(),a=/[:;\\\/<>]/.test(o.fontFamily)||o.fontFamily===Xa.fontFamily;let d;return a?d=Xa.fontFamily:(d=o.fontFamily,d=d.replace(/"/g,"'"),/[,']/.test(d)||/[+ ]/.test(d)&&(d=`'${d}'`),d=`${d}, ${Xa.fontFamily}`),{mode:i,html:`<div style="color: ${r[1]};background-color: ${r[2]};font-family: ${d};font-weight: ${o.fontWeight};font-size: ${o.fontSize}px;line-height: ${o.lineHeight}px;white-space: pre;">`+this._getHTMLToCopy(n,r)+"</div>"}}_getHTMLToCopy(e,t){const i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,r=e.endColumn,l=this.getTabSize();let a="";for(let d=i;d<=o;d++){const c=this.model.tokenization.getLineTokens(d),h=c.getLineContent(),u=d===i?n-1:0,m=d===o?r-1:h.length;h===""?a+="<br>":a+=Y$e(h,c.inflate(),t,u,m,l,Tl)}return a}_getColorMap(){const e=Ro.getColorMap(),t=["#000000"];if(e)for(let i=1,n=e.length;i<n;i++)t[i]=Je.Format.CSS.formatHex(e[i]);return t}getPrimaryCursorState(){return this._cursor.getPrimaryCursorState()}getLastAddedCursorIndex(){return this._cursor.getLastAddedCursorIndex()}getCursorStates(){return this._cursor.getCursorStates()}setCursorStates(e,t,i){return this._withViewEventsCollector(n=>this._cursor.setStates(n,e,t,i))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}getCursorAutoClosedCharacters(){return this._cursor.getAutoClosedCharacters()}setCursorColumnSelectData(e){this._cursor.setCursorColumnSelectData(e)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(e){this._cursor.setPrevEditOperationType(e)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(e,t,i=0){this._withViewEventsCollector(n=>this._cursor.setSelections(n,e,t,i))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(e){this._withViewEventsCollector(t=>this._cursor.restoreState(t,e))}_executeCursorEdit(e){if(this._cursor.context.cursorConfig.readOnly){this._eventDispatcher.emitOutgoingEvent(new dct);return}this._withViewEventsCollector(e)}executeEdits(e,t,i){this._executeCursorEdit(n=>this._cursor.executeEdits(n,e,t,i))}startComposition(){this._executeCursorEdit(e=>this._cursor.startComposition(e))}endComposition(e){this._executeCursorEdit(t=>this._cursor.endComposition(t,e))}type(e,t){this._executeCursorEdit(i=>this._cursor.type(i,e,t))}compositionType(e,t,i,n,o){this._executeCursorEdit(r=>this._cursor.compositionType(r,e,t,i,n,o))}paste(e,t,i,n){this._executeCursorEdit(o=>this._cursor.paste(o,e,t,i,n))}cut(e){this._executeCursorEdit(t=>this._cursor.cut(t,e))}executeCommand(e,t){this._executeCursorEdit(i=>this._cursor.executeCommand(i,e,t))}executeCommands(e,t){this._executeCursorEdit(i=>this._cursor.executeCommands(i,e,t))}revealAllCursors(e,t,i=!1){this._withViewEventsCollector(n=>this._cursor.revealAll(n,e,i,0,t,0))}revealPrimaryCursor(e,t,i=!1){this._withViewEventsCollector(n=>this._cursor.revealPrimary(n,e,i,0,t,0))}revealTopMostCursor(e){const t=this._cursor.getTopMostViewPosition(),i=new z(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector(n=>n.emitViewEvent(new U2(e,!1,i,null,0,!0,0)))}revealBottomMostCursor(e){const t=this._cursor.getBottomMostViewPosition(),i=new z(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector(n=>n.emitViewEvent(new U2(e,!1,i,null,0,!0,0)))}revealRange(e,t,i,n,o){this._withViewEventsCollector(r=>r.emitViewEvent(new U2(e,!1,i,null,n,t,o)))}changeWhitespace(e){this.viewLayout.changeWhitespace(e)&&(this._eventDispatcher.emitSingleViewEvent(new sct),this._eventDispatcher.emitOutgoingEvent(new lct))}_withViewEventsCollector(e){return this._transactionalTarget.batchChanges(()=>{try{const t=this._eventDispatcher.beginEmitViewEvents();return e(t)}finally{this._eventDispatcher.endEmitViewEvents()}})}batchEvents(e){this._withViewEventsCollector(()=>{e()})}normalizePosition(e,t){return this._lines.normalizePosition(e,t)}getLineIndentColumn(e){return this._lines.getLineIndentColumn(e)}};class Ire{static create(e){const t=e._setTrackedRange(null,new z(1,1,1,1),1);return new Ire(e,1,!1,t,0)}get viewLineNumber(){return this._viewLineNumber}get isValid(){return this._isValid}get modelTrackedRange(){return this._modelTrackedRange}get startLineDelta(){return this._startLineDelta}constructor(e,t,i,n,o){this._model=e,this._viewLineNumber=t,this._isValid=i,this._modelTrackedRange=n,this._startLineDelta=o}dispose(){this._model._setTrackedRange(this._modelTrackedRange,null,1)}update(e,t){const i=e.coordinatesConverter.convertViewPositionToModelPosition(new ge(t,e.getLineMinColumn(t))),n=e.model._setTrackedRange(this._modelTrackedRange,new z(i.lineNumber,i.column,i.lineNumber,i.column),1),o=e.viewLayout.getVerticalOffsetForLineNumber(t),r=e.viewLayout.getCurrentScrollTop();this._viewLineNumber=t,this._isValid=!0,this._modelTrackedRange=n,this._startLineDelta=r-o}invalidate(){this._isValid=!1}}class vct{constructor(){this._asMap=Object.create(null),this.asArray=[]}accept(e,t,i,n,o){const r=this._asMap[e];if(r){const l=r.data,a=l[l.length-3],d=l[l.length-1];if(a===o&&d+1>=i){n>d&&(l[l.length-1]=n);return}l.push(o,i,n)}else{const l=new QL(e,t,[o,i,n]);this._asMap[e]=l,this.asArray.push(l)}}}class kct{constructor(){this.hiddenAreas=new Map,this.shouldRecompute=!1,this.ranges=[]}setHiddenAreas(e,t){const i=this.hiddenAreas.get(e);i&&Ope(i,t)||(this.hiddenAreas.set(e,t),this.shouldRecompute=!0)}getMergedRanges(){if(!this.shouldRecompute)return this.ranges;this.shouldRecompute=!1;const e=Array.from(this.hiddenAreas.values()).reduce((t,i)=>xct(t,i),[]);return Ope(this.ranges,e)?this.ranges:(this.ranges=e,this.ranges)}}function xct(s,e){const t=[];let i=0,n=0;for(;i<s.length&&n<e.length;){const o=s[i],r=e[n];if(o.endLineNumber<r.startLineNumber-1)t.push(s[i++]);else if(r.endLineNumber<o.startLineNumber-1)t.push(e[n++]);else{const l=Math.min(o.startLineNumber,r.startLineNumber),a=Math.max(o.endLineNumber,r.endLineNumber);t.push(new z(l,1,a,1)),i++,n++}}for(;i<s.length;)t.push(s[i++]);for(;n<e.length;)t.push(e[n++]);return t}function Ope(s,e){if(s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(!s[t].equalsRange(e[t]))return!1;return!0}class jpe{constructor(e,t){this.viewportStartModelPosition=e,this.startLineDelta=t}recoverViewportStart(e,t){if(!this.viewportStartModelPosition)return;const i=e.convertModelPositionToViewPosition(this.viewportStartModelPosition),n=t.getVerticalOffsetForLineNumber(i.lineNumber);t.setScrollPosition({scrollTop:n+this.startLineDelta},1)}}var Ict=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},f0=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},hZ,fQ;let xL=(fQ=class extends be{get isSimpleWidget(){return this._configuration.isSimpleWidget}get contextMenuId(){return this._configuration.contextMenuId}constructor(e,t,i,n,o,r,l,a,d,c,h,u){super(),this.languageConfigurationService=h,this._deliveryQueue=Yje(),this._contributions=this._register(new Ydt),this._onDidDispose=this._register(new fe),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModelContent=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelContent=this._onDidChangeModelContent.event,this._onDidChangeModelLanguage=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguage=this._onDidChangeModelLanguage.event,this._onDidChangeModelLanguageConfiguration=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguageConfiguration=this._onDidChangeModelLanguageConfiguration.event,this._onDidChangeModelOptions=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelOptions=this._onDidChangeModelOptions.event,this._onDidChangeModelDecorations=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelDecorations=this._onDidChangeModelDecorations.event,this._onDidChangeModelTokens=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelTokens=this._onDidChangeModelTokens.event,this._onDidChangeConfiguration=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._onWillChangeModel=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onWillChangeModel=this._onWillChangeModel.event,this._onDidChangeModel=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidChangeCursorPosition=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorPosition=this._onDidChangeCursorPosition.event,this._onDidChangeCursorSelection=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorSelection=this._onDidChangeCursorSelection.event,this._onDidAttemptReadOnlyEdit=this._register(new na(this._contributions,this._deliveryQueue)),this.onDidAttemptReadOnlyEdit=this._onDidAttemptReadOnlyEdit.event,this._onDidLayoutChange=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidLayoutChange=this._onDidLayoutChange.event,this._editorTextFocus=this._register(new Ppe({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorText=this._editorTextFocus.onDidChangeToTrue,this.onDidBlurEditorText=this._editorTextFocus.onDidChangeToFalse,this._editorWidgetFocus=this._register(new Ppe({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorWidget=this._editorWidgetFocus.onDidChangeToTrue,this.onDidBlurEditorWidget=this._editorWidgetFocus.onDidChangeToFalse,this._onWillType=this._register(new na(this._contributions,this._deliveryQueue)),this.onWillType=this._onWillType.event,this._onDidType=this._register(new na(this._contributions,this._deliveryQueue)),this.onDidType=this._onDidType.event,this._onDidCompositionStart=this._register(new na(this._contributions,this._deliveryQueue)),this.onDidCompositionStart=this._onDidCompositionStart.event,this._onDidCompositionEnd=this._register(new na(this._contributions,this._deliveryQueue)),this.onDidCompositionEnd=this._onDidCompositionEnd.event,this._onDidPaste=this._register(new na(this._contributions,this._deliveryQueue)),this.onDidPaste=this._onDidPaste.event,this._onMouseUp=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseUp=this._onMouseUp.event,this._onMouseDown=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseDown=this._onMouseDown.event,this._onMouseDrag=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseDrag=this._onMouseDrag.event,this._onMouseDrop=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseDrop=this._onMouseDrop.event,this._onMouseDropCanceled=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseDropCanceled=this._onMouseDropCanceled.event,this._onDropIntoEditor=this._register(new na(this._contributions,this._deliveryQueue)),this.onDropIntoEditor=this._onDropIntoEditor.event,this._onContextMenu=this._register(new na(this._contributions,this._deliveryQueue)),this.onContextMenu=this._onContextMenu.event,this._onMouseMove=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseMove=this._onMouseMove.event,this._onMouseLeave=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseLeave=this._onMouseLeave.event,this._onMouseWheel=this._register(new na(this._contributions,this._deliveryQueue)),this.onMouseWheel=this._onMouseWheel.event,this._onKeyUp=this._register(new na(this._contributions,this._deliveryQueue)),this.onKeyUp=this._onKeyUp.event,this._onKeyDown=this._register(new na(this._contributions,this._deliveryQueue)),this.onKeyDown=this._onKeyDown.event,this._onDidContentSizeChange=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._onDidScrollChange=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidScrollChange=this._onDidScrollChange.event,this._onDidChangeViewZones=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeViewZones=this._onDidChangeViewZones.event,this._onDidChangeHiddenAreas=this._register(new fe({deliveryQueue:this._deliveryQueue})),this.onDidChangeHiddenAreas=this._onDidChangeHiddenAreas.event,this._updateCounter=0,this._onBeginUpdate=this._register(new fe),this.onBeginUpdate=this._onBeginUpdate.event,this._onEndUpdate=this._register(new fe),this.onEndUpdate=this._onEndUpdate.event,this._actions=new Map,this._bannerDomNode=null,this._dropIntoEditorDecorations=this.createDecorationsCollection(),o.willCreateCodeEditor();const m={...t};this._domElement=e,this._overflowWidgetsDomNode=m.overflowWidgetsDomNode,delete m.overflowWidgetsDomNode,this._id=++Ect,this._decorationTypeKeysToIds={},this._decorationTypeSubtypes={},this._telemetryData=i.telemetryData,this._configuration=this._register(this._createConfiguration(i.isSimpleWidget||!1,i.contextMenuId??(i.isSimpleWidget?Gt.SimpleEditorContext:Gt.EditorContext),m,c)),this._register(this._configuration.onDidChange(f=>{this._onDidChangeConfiguration.fire(f);const b=this._configuration.options;if(f.hasChanged(146)){const U=b.get(146);this._onDidLayoutChange.fire(U)}})),this._contextKeyService=this._register(l.createScoped(this._domElement)),this._notificationService=d,this._codeEditorService=o,this._commandService=r,this._themeService=a,this._register(new Gct(this,this._contextKeyService)),this._register(new Jct(this,this._contextKeyService,u)),this._instantiationService=this._register(n.createChild(new yM([fi,this._contextKeyService]))),this._modelData=null,this._focusTracker=new Xct(e,this._overflowWidgetsDomNode),this._register(this._focusTracker.onChange(()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())})),this._contentWidgets={},this._overlayWidgets={},this._glyphMarginWidgets={};let p;Array.isArray(i.contributions)?p=i.contributions:p=DS.getEditorContributions(),this._contributions.initialize(this,p,this._instantiationService);for(const f of DS.getEditorActions()){if(this._actions.has(f.id)){wi(new Error(`Cannot have two actions with the same id ${f.id}`));continue}const b=new uWe(f.id,f.label,f.alias,f.metadata,f.precondition??void 0,U=>this._instantiationService.invokeFunction(S=>Promise.resolve(f.runEditorCommand(S,this,U))),this._contextKeyService);this._actions.set(b.id,b)}const g=()=>!this._configuration.options.get(92)&&this._configuration.options.get(36).enabled;this._register(new i4e(this._domElement,{onDragOver:f=>{if(!g())return;const b=this.getTargetAtClientPoint(f.clientX,f.clientY);b!=null&&b.position&&this.showDropIndicatorAt(b.position)},onDrop:async f=>{if(!g()||(this.removeDropIndicator(),!f.dataTransfer))return;const b=this.getTargetAtClientPoint(f.clientX,f.clientY);b!=null&&b.position&&this._onDropIntoEditor.fire({position:b.position,event:f})},onDragLeave:()=>{this.removeDropIndicator()},onDragEnd:()=>{this.removeDropIndicator()}})),this._codeEditorService.addCodeEditor(this)}writeScreenReaderContent(e){var t;(t=this._modelData)==null||t.view.writeScreenReaderContent(e)}_createConfiguration(e,t,i,n){return new Xq(e,t,i,this._domElement,n)}getId(){return this.getEditorType()+":"+this._id}getEditorType(){return pk.ICodeEditor}dispose(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose(),this._actions.clear(),this._contentWidgets={},this._overlayWidgets={},this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),super.dispose()}invokeWithinContext(e){return this._instantiationService.invokeFunction(e)}updateOptions(e){this._configuration.updateOptions(e||{})}getOptions(){return this._configuration.options}getOption(e){return this._configuration.options.get(e)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(e){return this._modelData?Pn.getWordAtPosition(this._modelData.model,this._configuration.options.get(132),this._configuration.options.get(131),e):null}getValue(e=null){if(!this._modelData)return"";const t=!!(e&&e.preserveBOM);let i=0;return e&&e.lineEnding&&e.lineEnding===`
- `?i=1:e&&e.lineEnding&&e.lineEnding===`\r
- `&&(i=2),this._modelData.model.getValue(i,t)}setValue(e){try{if(this._beginUpdate(),!this._modelData)return;this._modelData.model.setValue(e)}finally{this._endUpdate()}}getModel(){return this._modelData?this._modelData.model:null}setModel(e=null){var t;try{this._beginUpdate();const i=e;if(this._modelData===null&&i===null||this._modelData&&this._modelData.model===i)return;const n={oldModelUrl:((t=this._modelData)==null?void 0:t.model.uri)||null,newModelUrl:(i==null?void 0:i.uri)||null};this._onWillChangeModel.fire(n);const o=this.hasTextFocus(),r=this._detachModel();this._attachModel(i),o&&this.hasModel()&&this.focus(),this._removeDecorationTypes(),this._onDidChangeModel.fire(n),this._postDetachModelCleanup(r),this._contributionsDisposable=this._contributions.onAfterModelAttached()}finally{this._endUpdate()}}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(const e in this._decorationTypeSubtypes){const t=this._decorationTypeSubtypes[e];for(const i in t)this._removeDecorationType(e+"-"+i)}this._decorationTypeSubtypes={}}}getVisibleRanges(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}getVisibleRangesPlusViewportAboveBelow(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}getWhitespaces(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}static _getVerticalOffsetAfterPosition(e,t,i,n){const o=e.model.validatePosition({lineNumber:t,column:i}),r=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(o);return e.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(r.lineNumber,n)}getTopForLineNumber(e,t=!1){return this._modelData?hZ._getVerticalOffsetForPosition(this._modelData,e,1,t):-1}getTopForPosition(e,t){return this._modelData?hZ._getVerticalOffsetForPosition(this._modelData,e,t,!1):-1}static _getVerticalOffsetForPosition(e,t,i,n=!1){const o=e.model.validatePosition({lineNumber:t,column:i}),r=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(o);return e.viewModel.viewLayout.getVerticalOffsetForLineNumber(r.lineNumber,n)}getBottomForLineNumber(e,t=!1){if(!this._modelData)return-1;const i=this._modelData.model.getLineMaxColumn(e);return hZ._getVerticalOffsetAfterPosition(this._modelData,e,i,t)}setHiddenAreas(e,t){var i;(i=this._modelData)==null||i.viewModel.setHiddenAreas(e.map(n=>z.lift(n)),t)}getVisibleColumnFromPosition(e){if(!this._modelData)return e.column;const t=this._modelData.model.validatePosition(e),i=this._modelData.model.getOptions().tabSize;return Zr.visibleColumnFromColumn(this._modelData.model.getLineContent(t.lineNumber),t.column,i)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(e,t="api"){if(this._modelData){if(!ge.isIPosition(e))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,[{selectionStartLineNumber:e.lineNumber,selectionStartColumn:e.column,positionLineNumber:e.lineNumber,positionColumn:e.column}])}}_sendRevealRange(e,t,i,n){if(!this._modelData)return;if(!z.isIRange(e))throw new Error("Invalid arguments");const o=this._modelData.model.validateRange(e),r=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(o);this._modelData.viewModel.revealRange("api",i,r,t,n)}revealLine(e,t=0){this._revealLine(e,0,t)}revealLineInCenter(e,t=0){this._revealLine(e,1,t)}revealLineInCenterIfOutsideViewport(e,t=0){this._revealLine(e,2,t)}revealLineNearTop(e,t=0){this._revealLine(e,5,t)}_revealLine(e,t,i){if(typeof e!="number")throw new Error("Invalid arguments");this._sendRevealRange(new z(e,1,e,1),t,!1,i)}revealPosition(e,t=0){this._revealPosition(e,0,!0,t)}revealPositionInCenter(e,t=0){this._revealPosition(e,1,!0,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this._revealPosition(e,2,!0,t)}revealPositionNearTop(e,t=0){this._revealPosition(e,5,!0,t)}_revealPosition(e,t,i,n){if(!ge.isIPosition(e))throw new Error("Invalid arguments");this._sendRevealRange(new z(e.lineNumber,e.column,e.lineNumber,e.column),t,i,n)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(e,t="api"){const i=_t.isISelection(e),n=z.isIRange(e);if(!i&&!n)throw new Error("Invalid arguments");if(i)this._setSelectionImpl(e,t);else if(n){const o={selectionStartLineNumber:e.startLineNumber,selectionStartColumn:e.startColumn,positionLineNumber:e.endLineNumber,positionColumn:e.endColumn};this._setSelectionImpl(o,t)}}_setSelectionImpl(e,t){if(!this._modelData)return;const i=new _t(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn);this._modelData.viewModel.setSelections(t,[i])}revealLines(e,t,i=0){this._revealLines(e,t,0,i)}revealLinesInCenter(e,t,i=0){this._revealLines(e,t,1,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this._revealLines(e,t,2,i)}revealLinesNearTop(e,t,i=0){this._revealLines(e,t,5,i)}_revealLines(e,t,i,n){if(typeof e!="number"||typeof t!="number")throw new Error("Invalid arguments");this._sendRevealRange(new z(e,1,t,1),i,!1,n)}revealRange(e,t=0,i=!1,n=!0){this._revealRange(e,i?1:0,n,t)}revealRangeInCenter(e,t=0){this._revealRange(e,1,!0,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this._revealRange(e,2,!0,t)}revealRangeNearTop(e,t=0){this._revealRange(e,5,!0,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this._revealRange(e,6,!0,t)}revealRangeAtTop(e,t=0){this._revealRange(e,3,!0,t)}_revealRange(e,t,i,n){if(!z.isIRange(e))throw new Error("Invalid arguments");this._sendRevealRange(z.lift(e),t,i,n)}setSelections(e,t="api",i=0){if(this._modelData){if(!e||e.length===0)throw new Error("Invalid arguments");for(let n=0,o=e.length;n<o;n++)if(!_t.isISelection(e[n]))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,e,i)}}getContentWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}getScrollWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}getScrollLeft(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}getContentHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}getScrollHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}getScrollTop(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}setScrollLeft(e,t=1){if(this._modelData){if(typeof e!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollLeft:e},t)}}setScrollTop(e,t=1){if(this._modelData){if(typeof e!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollTop:e},t)}}setScrollPosition(e,t=1){this._modelData&&this._modelData.viewModel.viewLayout.setScrollPosition(e,t)}hasPendingScrollAnimation(){return this._modelData?this._modelData.viewModel.viewLayout.hasPendingScrollAnimation():!1}saveViewState(){if(!this._modelData)return null;const e=this._contributions.saveViewState(),t=this._modelData.viewModel.saveCursorState(),i=this._modelData.viewModel.saveState();return{cursorState:t,viewState:i,contributionsState:e}}restoreViewState(e){if(!this._modelData||!this._modelData.hasRealView)return;const t=e;if(t&&t.cursorState&&t.viewState){const i=t.cursorState;Array.isArray(i)?i.length>0&&this._modelData.viewModel.restoreCursorState(i):this._modelData.viewModel.restoreCursorState([i]),this._contributions.restoreViewState(t.contributionsState||{});const n=this._modelData.viewModel.reduceRestoreState(t.viewState);this._modelData.view.restoreState(n)}}handleInitialized(){var e;(e=this._getViewModel())==null||e.visibleLinesStabilized()}getContribution(e){return this._contributions.get(e)}getActions(){return Array.from(this._actions.values())}getSupportedActions(){let e=this.getActions();return e=e.filter(t=>t.isSupported()),e}getAction(e){return this._actions.get(e)||null}trigger(e,t,i){i=i||{};try{switch(this._beginUpdate(),t){case"compositionStart":this._startComposition();return;case"compositionEnd":this._endComposition(e);return;case"type":{const o=i;this._type(e,o.text||"");return}case"replacePreviousChar":{const o=i;this._compositionType(e,o.text||"",o.replaceCharCnt||0,0,0);return}case"compositionType":{const o=i;this._compositionType(e,o.text||"",o.replacePrevCharCnt||0,o.replaceNextCharCnt||0,o.positionDelta||0);return}case"paste":{const o=i;this._paste(e,o.text||"",o.pasteOnNewLine||!1,o.multicursorText||null,o.mode||null,o.clipboardEvent);return}case"cut":this._cut(e);return}const n=this.getAction(t);if(n){Promise.resolve(n.run(i)).then(void 0,wi);return}if(!this._modelData||this._triggerEditorCommand(e,t,i))return;this._triggerCommand(t,i)}finally{this._endUpdate()}}_triggerCommand(e,t){this._commandService.executeCommand(e,t)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(e){this._modelData&&(this._modelData.viewModel.endComposition(e),this._onDidCompositionEnd.fire())}_type(e,t){!this._modelData||t.length===0||(e==="keyboard"&&this._onWillType.fire(t),this._modelData.viewModel.type(t,e),e==="keyboard"&&this._onDidType.fire(t))}_compositionType(e,t,i,n,o){this._modelData&&this._modelData.viewModel.compositionType(t,i,n,o,e)}_paste(e,t,i,n,o,r){if(!this._modelData)return;const l=this._modelData.viewModel,a=l.getSelection().getStartPosition();l.paste(t,i,n,e);const d=l.getSelection().getStartPosition();e==="keyboard"&&this._onDidPaste.fire({clipboardEvent:r,range:new z(a.lineNumber,a.column,d.lineNumber,d.column),languageId:o})}_cut(e){this._modelData&&this._modelData.viewModel.cut(e)}_triggerEditorCommand(e,t,i){const n=DS.getEditorCommand(t);return n?(i=i||{},i.source=e,this._instantiationService.invokeFunction(o=>{Promise.resolve(n.runEditorCommand(o,this,i)).then(void 0,wi)}),!0):!1}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!this._modelData||this._configuration.options.get(92)?!1:(this._modelData.model.pushStackElement(),!0)}popUndoStop(){return!this._modelData||this._configuration.options.get(92)?!1:(this._modelData.model.popStackElement(),!0)}executeEdits(e,t,i){if(!this._modelData||this._configuration.options.get(92))return!1;let n;return i?Array.isArray(i)?n=()=>i:n=i:n=()=>null,this._modelData.viewModel.executeEdits(e,t,n),!0}executeCommand(e,t){this._modelData&&this._modelData.viewModel.executeCommand(t,e)}executeCommands(e,t){this._modelData&&this._modelData.viewModel.executeCommands(t,e)}createDecorationsCollection(e){return new Yct(this,e)}changeDecorations(e){return this._modelData?this._modelData.model.changeDecorations(e,this._id):null}getLineDecorations(e){return this._modelData?this._modelData.model.getLineDecorations(e,this._id,PJ(this._configuration.options)):null}getDecorationsInRange(e){return this._modelData?this._modelData.model.getDecorationsInRange(e,this._id,PJ(this._configuration.options)):null}deltaDecorations(e,t){return this._modelData?e.length===0&&t.length===0?e:this._modelData.model.deltaDecorations(e,t,this._id):[]}removeDecorations(e){!this._modelData||e.length===0||this._modelData.model.changeDecorations(t=>{t.deltaDecorations(e,[])})}removeDecorationsByType(e){const t=this._decorationTypeKeysToIds[e];t&&this.changeDecorations(i=>i.deltaDecorations(t,[])),this._decorationTypeKeysToIds.hasOwnProperty(e)&&delete this._decorationTypeKeysToIds[e],this._decorationTypeSubtypes.hasOwnProperty(e)&&delete this._decorationTypeSubtypes[e]}getLayoutInfo(){return this._configuration.options.get(146)}createOverviewRuler(e){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.createOverviewRuler(e)}getContainerDomNode(){return this._domElement}getDomNode(){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.domNode.domNode}delegateVerticalScrollbarPointerDown(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateScrollFromMouseWheelEvent(e)}layout(e,t=!1){this._configuration.observeContainer(e),t||this.render()}focus(){!this._modelData||!this._modelData.hasRealView||this._modelData.view.focus()}hasTextFocus(){return!this._modelData||!this._modelData.hasRealView?!1:this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(e){const t={widget:e,position:e.getPosition()};this._contentWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a content widget with the same id:"+e.getId()),this._contentWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(t)}layoutContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(i)}}removeContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];delete this._contentWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(i)}}addOverlayWidget(e){const t={widget:e,position:e.getPosition()};this._overlayWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(t)}layoutOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(i)}}removeOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];delete this._overlayWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(i)}}addGlyphMarginWidget(e){const t={widget:e,position:e.getPosition()};this._glyphMarginWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a glyph margin widget with the same id."),this._glyphMarginWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addGlyphMarginWidget(t)}layoutGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const i=this._glyphMarginWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutGlyphMarginWidget(i)}}removeGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const i=this._glyphMarginWidgets[t];delete this._glyphMarginWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeGlyphMarginWidget(i)}}changeViewZones(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.change(e)}getTargetAtClientPoint(e,t){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.getTargetAtClientPoint(e,t)}getScrolledVisiblePosition(e){if(!this._modelData||!this._modelData.hasRealView)return null;const t=this._modelData.model.validatePosition(e),i=this._configuration.options,n=i.get(146),o=hZ._getVerticalOffsetForPosition(this._modelData,t.lineNumber,t.column)-this.getScrollTop(),r=this._modelData.view.getOffsetForColumn(t.lineNumber,t.column)+n.glyphMarginWidth+n.lineNumbersWidth+n.decorationsWidth-this.getScrollLeft();return{top:o,left:r,height:i.get(67)}}getOffsetForColumn(e,t){return!this._modelData||!this._modelData.hasRealView?-1:this._modelData.view.getOffsetForColumn(e,t)}render(e=!1){!this._modelData||!this._modelData.hasRealView||this._modelData.viewModel.batchEvents(()=>{this._modelData.view.render(!0,e)})}setAriaOptions(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.setAriaOptions(e)}applyFontInfo(e){hl(e,this._configuration.options.get(50))}setBanner(e,t){this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._bannerDomNode.remove(),this._bannerDomNode=e,this._configuration.setReservedHeight(e?t:0),this._bannerDomNode&&this._domElement.prepend(this._bannerDomNode)}_attachModel(e){if(!e){this._modelData=null;return}const t=[];this._domElement.setAttribute("data-mode-id",e.getLanguageId()),this._configuration.setIsDominatedByLongLines(e.isDominatedByLongLines()),this._configuration.setModelLineCount(e.getLineCount());const i=e.onBeforeAttached(),n=new Lct(this._id,this._configuration,e,wre.create(ai(this._domElement)),Tre.create(this._configuration.options),l=>fc(ai(this._domElement),l),this.languageConfigurationService,this._themeService,i,{batchChanges:l=>{try{return this._beginUpdate(),l()}finally{this._endUpdate()}}});t.push(e.onWillDispose(()=>this.setModel(null))),t.push(n.onEvent(l=>{switch(l.kind){case 0:this._onDidContentSizeChange.fire(l);break;case 1:this._editorTextFocus.setValue(l.hasFocus);break;case 2:this._onDidScrollChange.fire(l);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidChangeHiddenAreas.fire();break;case 5:this._onDidAttemptReadOnlyEdit.fire();break;case 6:{if(l.reachedMaxCursorCount){const h=this.getOption(80),u=F("cursors.maximum","The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.",h);this._notificationService.prompt(O3.Warning,u,[{label:"Find and Replace",run:()=>{this._commandService.executeCommand("editor.action.startFindReplaceAction")}},{label:F("goToSetting","Increase Multi Cursor Limit"),run:()=>{this._commandService.executeCommand("workbench.action.openSettings2",{query:"editor.multiCursorLimit"})}}])}const a=[];for(let h=0,u=l.selections.length;h<u;h++)a[h]=l.selections[h].getPosition();const d={position:a[0],secondaryPositions:a.slice(1),reason:l.reason,source:l.source};this._onDidChangeCursorPosition.fire(d);const c={selection:l.selections[0],secondarySelections:l.selections.slice(1),modelVersionId:l.modelVersionId,oldSelections:l.oldSelections,oldModelVersionId:l.oldModelVersionId,source:l.source,reason:l.reason};this._onDidChangeCursorSelection.fire(c);break}case 7:this._onDidChangeModelDecorations.fire(l.event);break;case 8:this._domElement.setAttribute("data-mode-id",e.getLanguageId()),this._onDidChangeModelLanguage.fire(l.event);break;case 9:this._onDidChangeModelLanguageConfiguration.fire(l.event);break;case 10:this._onDidChangeModelContent.fire(l.event);break;case 11:this._onDidChangeModelOptions.fire(l.event);break;case 12:this._onDidChangeModelTokens.fire(l.event);break}}));const[o,r]=this._createView(n);if(r){this._domElement.appendChild(o.domNode.domNode);let l=Object.keys(this._contentWidgets);for(let a=0,d=l.length;a<d;a++){const c=l[a];o.addContentWidget(this._contentWidgets[c])}l=Object.keys(this._overlayWidgets);for(let a=0,d=l.length;a<d;a++){const c=l[a];o.addOverlayWidget(this._overlayWidgets[c])}l=Object.keys(this._glyphMarginWidgets);for(let a=0,d=l.length;a<d;a++){const c=l[a];o.addGlyphMarginWidget(this._glyphMarginWidgets[c])}o.render(!1,!0),o.domNode.domNode.setAttribute("data-uri",e.uri.toString())}this._modelData=new Dct(e,n,o,r,t,i)}_createView(e){let t;this.isSimpleWidget?t={paste:(o,r,l,a)=>{this._paste("keyboard",o,r,l,a)},type:o=>{this._type("keyboard",o)},compositionType:(o,r,l,a)=>{this._compositionType("keyboard",o,r,l,a)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition("keyboard")},cut:()=>{this._cut("keyboard")}}:t={paste:(o,r,l,a)=>{const d={text:o,pasteOnNewLine:r,multicursorText:l,mode:a};this._commandService.executeCommand("paste",d)},type:o=>{const r={text:o};this._commandService.executeCommand("type",r)},compositionType:(o,r,l,a)=>{if(l||a){const d={text:o,replacePrevCharCnt:r,replaceNextCharCnt:l,positionDelta:a};this._commandService.executeCommand("compositionType",d)}else{const d={text:o,replaceCharCnt:r};this._commandService.executeCommand("replacePreviousChar",d)}},startComposition:()=>{this._commandService.executeCommand("compositionStart",{})},endComposition:()=>{this._commandService.executeCommand("compositionEnd",{})},cut:()=>{this._commandService.executeCommand("cut",{})}};const i=new C9(e.coordinatesConverter);return i.onKeyDown=o=>this._onKeyDown.fire(o),i.onKeyUp=o=>this._onKeyUp.fire(o),i.onContextMenu=o=>this._onContextMenu.fire(o),i.onMouseMove=o=>this._onMouseMove.fire(o),i.onMouseLeave=o=>this._onMouseLeave.fire(o),i.onMouseDown=o=>this._onMouseDown.fire(o),i.onMouseUp=o=>this._onMouseUp.fire(o),i.onMouseDrag=o=>this._onMouseDrag.fire(o),i.onMouseDrop=o=>this._onMouseDrop.fire(o),i.onMouseDropCanceled=o=>this._onMouseDropCanceled.fire(o),i.onMouseWheel=o=>this._onMouseWheel.fire(o),[new n$(t,this._configuration,this._themeService.getColorTheme(),e,i,this._overflowWidgetsDomNode,this._instantiationService),!0]}_postDetachModelCleanup(e){e==null||e.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){var i;if((i=this._contributionsDisposable)==null||i.dispose(),this._contributionsDisposable=void 0,!this._modelData)return null;const e=this._modelData.model,t=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),t&&this._domElement.contains(t)&&t.remove(),this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._bannerDomNode.remove(),e}_removeDecorationType(e){this._codeEditorService.removeDecorationType(e)}hasModel(){return this._modelData!==null}showDropIndicatorAt(e){const t=[{range:new z(e.lineNumber,e.column,e.lineNumber,e.column),options:hZ.dropIntoEditorDecorationOptions}];this._dropIntoEditorDecorations.set(t),this.revealPosition(e,1)}removeDropIndicator(){this._dropIntoEditorDecorations.clear()}setContextValue(e,t){this._contextKeyService.createKey(e,t)}_beginUpdate(){this._updateCounter++,this._updateCounter===1&&this._onBeginUpdate.fire()}_endUpdate(){this._updateCounter--,this._updateCounter===0&&this._onEndUpdate.fire()}},hZ=fQ,fQ.dropIntoEditorDecorationOptions=ki.register({description:"workbench-dnd-target",className:"dnd-target"}),fQ);xL=hZ=Ict([f0(3,ti),f0(4,kn),f0(5,ks),f0(6,fi),f0(7,Rr),f0(8,jo),f0(9,Fc),f0(10,bo),f0(11,xt)],xL);let Ect=0;class Dct{constructor(e,t,i,n,o,r){this.model=e,this.viewModel=t,this.view=i,this.hasRealView=n,this.listenersToRemove=o,this.attachedView=r}dispose(){Ws(this.listenersToRemove),this.model.onBeforeDetached(this.attachedView),this.hasRealView&&this.view.dispose(),this.viewModel.dispose()}}class Ppe extends be{constructor(e){super(),this._emitterOptions=e,this._onDidChangeToTrue=this._register(new fe(this._emitterOptions)),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new fe(this._emitterOptions)),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(e){const t=e?2:1;this._value!==t&&(this._value=t,this._value===2?this._onDidChangeToTrue.fire():this._value===1&&this._onDidChangeToFalse.fire())}}class na extends fe{constructor(e,t){super({deliveryQueue:t}),this._contributions=e}fire(e){this._contributions.onBeforeInteractionEvent(),super.fire(e)}}class Gct extends be{constructor(e,t){super(),this._editor=e,t.createKey("editorId",e.getId()),this._editorSimpleInput=$.editorSimpleInput.bindTo(t),this._editorFocus=$.focus.bindTo(t),this._textInputFocus=$.textInputFocus.bindTo(t),this._editorTextFocus=$.editorTextFocus.bindTo(t),this._tabMovesFocus=$.tabMovesFocus.bindTo(t),this._editorReadonly=$.readOnly.bindTo(t),this._inDiffEditor=$.inDiffEditor.bindTo(t),this._editorColumnSelection=$.columnSelection.bindTo(t),this._hasMultipleSelections=$.hasMultipleSelections.bindTo(t),this._hasNonEmptySelection=$.hasNonEmptySelection.bindTo(t),this._canUndo=$.canUndo.bindTo(t),this._canRedo=$.canRedo.bindTo(t),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromConfig())),this._register(this._editor.onDidChangeCursorSelection(()=>this._updateFromSelection())),this._register(this._editor.onDidFocusEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidFocusEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidChangeModel(()=>this._updateFromModel())),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromModel())),this._register(Xy.onDidChangeTabFocus(i=>this._tabMovesFocus.set(i))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const e=this._editor.getOptions();this._tabMovesFocus.set(Xy.getTabFocusMode()),this._editorReadonly.set(e.get(92)),this._inDiffEditor.set(e.get(61)),this._editorColumnSelection.set(e.get(22))}_updateFromSelection(){const e=this._editor.getSelections();e?(this._hasMultipleSelections.set(e.length>1),this._hasNonEmptySelection.set(e.some(t=>!t.isEmpty()))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}_updateFromFocus(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}_updateFromModel(){const e=this._editor.getModel();this._canUndo.set(!!(e&&e.canUndo())),this._canRedo.set(!!(e&&e.canRedo()))}}class Jct extends be{constructor(e,t,i){super(),this._editor=e,this._contextKeyService=t,this._languageFeaturesService=i,this._langId=$.languageId.bindTo(t),this._hasCompletionItemProvider=$.hasCompletionItemProvider.bindTo(t),this._hasCodeActionsProvider=$.hasCodeActionsProvider.bindTo(t),this._hasCodeLensProvider=$.hasCodeLensProvider.bindTo(t),this._hasDefinitionProvider=$.hasDefinitionProvider.bindTo(t),this._hasDeclarationProvider=$.hasDeclarationProvider.bindTo(t),this._hasImplementationProvider=$.hasImplementationProvider.bindTo(t),this._hasTypeDefinitionProvider=$.hasTypeDefinitionProvider.bindTo(t),this._hasHoverProvider=$.hasHoverProvider.bindTo(t),this._hasDocumentHighlightProvider=$.hasDocumentHighlightProvider.bindTo(t),this._hasDocumentSymbolProvider=$.hasDocumentSymbolProvider.bindTo(t),this._hasReferenceProvider=$.hasReferenceProvider.bindTo(t),this._hasRenameProvider=$.hasRenameProvider.bindTo(t),this._hasSignatureHelpProvider=$.hasSignatureHelpProvider.bindTo(t),this._hasInlayHintsProvider=$.hasInlayHintsProvider.bindTo(t),this._hasDocumentFormattingProvider=$.hasDocumentFormattingProvider.bindTo(t),this._hasDocumentSelectionFormattingProvider=$.hasDocumentSelectionFormattingProvider.bindTo(t),this._hasMultipleDocumentFormattingProvider=$.hasMultipleDocumentFormattingProvider.bindTo(t),this._hasMultipleDocumentSelectionFormattingProvider=$.hasMultipleDocumentSelectionFormattingProvider.bindTo(t),this._isInEmbeddedEditor=$.isInEmbeddedEditor.bindTo(t);const n=()=>this._update();this._register(e.onDidChangeModel(n)),this._register(e.onDidChangeModelLanguage(n)),this._register(i.completionProvider.onDidChange(n)),this._register(i.codeActionProvider.onDidChange(n)),this._register(i.codeLensProvider.onDidChange(n)),this._register(i.definitionProvider.onDidChange(n)),this._register(i.declarationProvider.onDidChange(n)),this._register(i.implementationProvider.onDidChange(n)),this._register(i.typeDefinitionProvider.onDidChange(n)),this._register(i.hoverProvider.onDidChange(n)),this._register(i.documentHighlightProvider.onDidChange(n)),this._register(i.documentSymbolProvider.onDidChange(n)),this._register(i.referenceProvider.onDidChange(n)),this._register(i.renameProvider.onDidChange(n)),this._register(i.documentFormattingEditProvider.onDidChange(n)),this._register(i.documentRangeFormattingEditProvider.onDidChange(n)),this._register(i.signatureHelpProvider.onDidChange(n)),this._register(i.inlayHintsProvider.onDidChange(n)),n()}dispose(){super.dispose()}reset(){this._contextKeyService.bufferChangeEvents(()=>{this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasDeclarationProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInEmbeddedEditor.reset()})}_update(){const e=this._editor.getModel();if(!e){this.reset();return}this._contextKeyService.bufferChangeEvents(()=>{this._langId.set(e.getLanguageId()),this._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(e)),this._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(e)),this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(e)),this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(e)),this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(e)),this._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(e)),this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(e)),this._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(e)),this._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(e)),this._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(e)),this._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(e)),this._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(e)),this._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(e)),this._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(e)),this._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(e)||this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(e).length+this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._isInEmbeddedEditor.set(e.uri.scheme===Ti.walkThroughSnippet||e.uri.scheme===Ti.vscodeChatCodeBlock)})}}class Xct extends be{constructor(e,t){super(),this._onChange=this._register(new fe),this.onChange=this._onChange.event,this._hadFocus=void 0,this._hasDomElementFocus=!1,this._domFocusTracker=this._register(ap(e)),this._overflowWidgetsDomNodeHasFocus=!1,this._register(this._domFocusTracker.onDidFocus(()=>{this._hasDomElementFocus=!0,this._update()})),this._register(this._domFocusTracker.onDidBlur(()=>{this._hasDomElementFocus=!1,this._update()})),t&&(this._overflowWidgetsDomNode=this._register(ap(t)),this._register(this._overflowWidgetsDomNode.onDidFocus(()=>{this._overflowWidgetsDomNodeHasFocus=!0,this._update()})),this._register(this._overflowWidgetsDomNode.onDidBlur(()=>{this._overflowWidgetsDomNodeHasFocus=!1,this._update()})))}_update(){const e=this._hasDomElementFocus||this._overflowWidgetsDomNodeHasFocus;this._hadFocus!==e&&(this._hadFocus=e,this._onChange.fire(void 0))}hasFocus(){return this._hadFocus??!1}}class Yct{get length(){return this._decorationIds.length}constructor(e,t){this._editor=e,this._decorationIds=[],this._isChangingDecorations=!1,Array.isArray(t)&&t.length>0&&this.set(t)}onDidChange(e,t,i){return this._editor.onDidChangeModelDecorations(n=>{this._isChangingDecorations||e.call(t,n)},i)}getRange(e){return!this._editor.hasModel()||e>=this._decorationIds.length?null:this._editor.getModel().getDecorationRange(this._decorationIds[e])}getRanges(){if(!this._editor.hasModel())return[];const e=this._editor.getModel(),t=[];for(const i of this._decorationIds){const n=e.getDecorationRange(i);n&&t.push(n)}return t}has(e){return this._decorationIds.includes(e.id)}clear(){this._decorationIds.length!==0&&this.set([])}set(e){try{this._isChangingDecorations=!0,this._editor.changeDecorations(t=>{this._decorationIds=t.deltaDecorations(this._decorationIds,e)})}finally{this._isChangingDecorations=!1}return this._decorationIds}append(e){let t=[];try{this._isChangingDecorations=!0,this._editor.changeDecorations(i=>{t=i.deltaDecorations([],e),this._decorationIds=this._decorationIds.concat(t)})}finally{this._isChangingDecorations=!1}return t}}const _ct=encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='"),zct=encodeURIComponent("'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>");function eH(s){return _ct+encodeURIComponent(s.toString())+zct}const Oct=encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" height="3" width="12"><g fill="'),jct=encodeURIComponent('"><circle cx="1" cy="1" r="1"/><circle cx="5" cy="1" r="1"/><circle cx="9" cy="1" r="1"/></g></svg>');function Pct(s){return Oct+encodeURIComponent(s.toString())+jct}eu((s,e)=>{const t=s.getColor(K3);t&&e.addRule(`.monaco-editor .squiggly-error { background: url("data:image/svg+xml,${eH(t)}") repeat-x bottom left; }`);const i=s.getColor(qf);i&&e.addRule(`.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,${eH(i)}") repeat-x bottom left; }`);const n=s.getColor(Jg);n&&e.addRule(`.monaco-editor .squiggly-info { background: url("data:image/svg+xml,${eH(n)}") repeat-x bottom left; }`);const o=s.getColor(x8e);o&&e.addRule(`.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,${Pct(o)}") no-repeat bottom left; }`);const r=s.getColor(Nit);r&&e.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${r.rgba.a}; }`)});class mp{static capture(e){if(e.getScrollTop()===0||e.hasPendingScrollAnimation())return new mp(e.getScrollTop(),e.getContentHeight(),null,0,null);let t=null,i=0;const n=e.getVisibleRanges();if(n.length>0){t=n[0].getStartPosition();const o=e.getTopForPosition(t.lineNumber,t.column);i=e.getScrollTop()-o}return new mp(e.getScrollTop(),e.getContentHeight(),t,i,e.getPosition())}constructor(e,t,i,n,o){this._initialScrollTop=e,this._initialContentHeight=t,this._visiblePosition=i,this._visiblePositionScrollDelta=n,this._cursorPosition=o}restore(e){if(!(this._initialContentHeight===e.getContentHeight()&&this._initialScrollTop===e.getScrollTop())&&this._visiblePosition){const t=e.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);e.setScrollTop(t+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(e){if(this._initialContentHeight===e.getContentHeight()&&this._initialScrollTop===e.getScrollTop())return;const t=e.getPosition();if(!this._cursorPosition||!t)return;const i=e.getTopForLineNumber(t.lineNumber)-e.getTopForLineNumber(this._cursorPosition.lineNumber);e.setScrollTop(e.getScrollTop()+i,1)}}function Hct(s,e,t,i){if(s.length===0)return e;if(e.length===0)return s;const n=[];let o=0,r=0;for(;o<s.length&&r<e.length;){const l=s[o],a=e[r],d=t(l),c=t(a);d<c?(n.push(l),o++):d>c?(n.push(a),r++):(n.push(i(l,a)),o++,r++)}for(;o<s.length;)n.push(s[o]),o++;for(;r<e.length;)n.push(e[r]),r++;return n}function v5(s,e){const t=new De,i=s.createDecorationsCollection();return t.add(rk({debugName:()=>`Apply decorations from ${e.debugName}`},n=>{const o=e.read(n);i.set(o)})),t.add({dispose:()=>{i.clear()}}),t}function CW(s,e){return s.appendChild(e),ei(()=>{e.remove()})}function Kct(s,e){return s.prepend(e),ei(()=>{e.remove()})}class fWe extends be{get width(){return this._width}get height(){return this._height}get automaticLayout(){return this._automaticLayout}constructor(e,t){super(),this._automaticLayout=!1,this.elementSizeObserver=this._register(new PVe(e,t)),this._width=Pi(this,this.elementSizeObserver.getWidth()),this._height=Pi(this,this.elementSizeObserver.getHeight()),this._register(this.elementSizeObserver.onDidChange(i=>po(n=>{this._width.set(this.elementSizeObserver.getWidth(),n),this._height.set(this.elementSizeObserver.getHeight(),n)})))}observe(e){this.elementSizeObserver.observe(e)}setAutomaticLayout(e){this._automaticLayout=e,e?this.elementSizeObserver.startObserving():this.elementSizeObserver.stopObserving()}}function Hpe(s,e,t){let i=e.get(),n=i,o=i;const r=Pi("animatedValue",i);let l=-1;const a=300;let d;t.add(lk({createEmptyChangeSummary:()=>({animate:!1}),handleChange:(h,u)=>(h.didChange(e)&&(u.animate=u.animate||h.change),!0)},(h,u)=>{d!==void 0&&(s.cancelAnimationFrame(d),d=void 0),n=o,i=e.read(h),l=Date.now()-(u.animate?0:a),c()}));function c(){const h=Date.now()-l;o=Math.floor(qct(h,n,i-n,a)),h<a?d=s.requestAnimationFrame(c):o=i,r.set(o,void 0)}return r}function qct(s,e,t,i){return s===i?e+t:t*(-Math.pow(2,-10*s/i)+1)+e}class Ere extends be{constructor(e,t,i){super(),this._register(new h$(e,i)),this._register(eb(i,{height:t.actualHeight,top:t.actualTop}))}}class BW{get afterLineNumber(){return this._afterLineNumber.get()}constructor(e,t){this._afterLineNumber=e,this.heightInPx=t,this.domNode=document.createElement("div"),this._actualTop=Pi(this,void 0),this._actualHeight=Pi(this,void 0),this.actualTop=this._actualTop,this.actualHeight=this._actualHeight,this.showInHiddenAreas=!0,this.onChange=this._afterLineNumber,this.onDomNodeTop=i=>{this._actualTop.set(i,void 0)},this.onComputedHeight=i=>{this._actualHeight.set(i,void 0)}}}const cz=class cz{constructor(e,t){this._editor=e,this._domElement=t,this._overlayWidgetId=`managedOverlayWidget-${cz._counter++}`,this._overlayWidget={getId:()=>this._overlayWidgetId,getDomNode:()=>this._domElement,getPosition:()=>null},this._editor.addOverlayWidget(this._overlayWidget)}dispose(){this._editor.removeOverlayWidget(this._overlayWidget)}};cz._counter=0;let h$=cz;function eb(s,e){return yi(t=>{for(let[i,n]of Object.entries(e))n&&typeof n=="object"&&"read"in n&&(n=n.read(t)),typeof n=="number"&&(n=`${n}px`),i=i.replace(/[A-Z]/g,o=>"-"+o.toLowerCase()),s.style[i]=n})}function k5(s,e,t,i){const n=new De,o=[];return n.add(Wd((r,l)=>{const a=e.read(r),d=new Map,c=new Map;t&&t(!0),s.changeViewZones(h=>{for(const u of o)h.removeZone(u),i==null||i.delete(u);o.length=0;for(const u of a){const m=h.addZone(u);u.setZoneId&&u.setZoneId(m),o.push(m),i==null||i.add(m),d.set(u,m)}}),t&&t(!1),l.add(lk({createEmptyChangeSummary(){return{zoneIds:[]}},handleChange(h,u){const m=c.get(h.changedObservable);return m!==void 0&&u.zoneIds.push(m),!0}},(h,u)=>{for(const m of a)m.onChange&&(c.set(m.onChange,d.get(m)),m.onChange.read(h));t&&t(!0),s.changeViewZones(m=>{for(const p of u.zoneIds)m.layoutZone(p)}),t&&t(!1)}))})),n.add({dispose(){t&&t(!0),s.changeViewZones(r=>{for(const l of o)r.removeZone(l)}),i==null||i.clear(),t&&t(!1)}}),n}class $ct extends go{dispose(){super.dispose(!0)}}function Kpe(s,e){const t=qB(e,n=>n.original.startLineNumber<=s.lineNumber);if(!t)return z.fromPositions(s);if(t.original.endLineNumberExclusive<=s.lineNumber){const n=s.lineNumber-t.original.endLineNumberExclusive+t.modified.endLineNumberExclusive;return z.fromPositions(new ge(n,s.column))}if(!t.innerChanges)return z.fromPositions(new ge(t.modified.startLineNumber,1));const i=qB(t.innerChanges,n=>n.originalRange.getStartPosition().isBeforeOrEqual(s));if(!i){const n=s.lineNumber-t.original.startLineNumber+t.modified.startLineNumber;return z.fromPositions(new ge(n,s.column))}if(i.originalRange.containsPosition(s))return i.modifiedRange;{const n=eht(i.originalRange.getEndPosition(),s);return z.fromPositions(n.addToPosition(i.modifiedRange.getEndPosition()))}}function eht(s,e){return s.lineNumber===e.lineNumber?new tm(0,e.column-s.column):new tm(e.lineNumber-s.lineNumber,e.column-1)}function tht(s,e){let t;return s.filter(i=>{const n=e(i,t);return t=i,n})}class x5{static create(e,t=void 0){return new qpe(e,e,t)}static createWithDisposable(e,t,i=void 0){const n=new De;return n.add(t),n.add(e),new qpe(e,n,i)}}class qpe extends x5{constructor(e,t,i){super(),this.object=e,this._disposable=t,this._debugOwner=i,this._refCount=1,this._isDisposed=!1,this._owners=[],i&&this._addOwner(i)}_addOwner(e){e&&this._owners.push(e)}createNewRef(e){return this._refCount++,e&&this._addOwner(e),new iht(this,e)}dispose(){this._isDisposed||(this._isDisposed=!0,this._decreaseRefCount(this._debugOwner))}_decreaseRefCount(e){if(this._refCount--,this._refCount===0&&this._disposable.dispose(),e){const t=this._owners.indexOf(e);t!==-1&&this._owners.splice(t,1)}}}class iht extends x5{constructor(e,t){super(),this._base=e,this._debugOwner=t,this._isDisposed=!1}get object(){return this._base.object}createNewRef(e){return this._base.createNewRef(e)}dispose(){this._isDisposed||(this._isDisposed=!0,this._base._decreaseRefCount(this._debugOwner))}}var Dre=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Gre=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const nht=Os("diff-review-insert",ct.add,F("accessibleDiffViewerInsertIcon","Icon for 'Insert' in accessible diff viewer.")),sht=Os("diff-review-remove",ct.remove,F("accessibleDiffViewerRemoveIcon","Icon for 'Remove' in accessible diff viewer.")),oht=Os("diff-review-close",ct.close,F("accessibleDiffViewerCloseIcon","Icon for 'Close' in accessible diff viewer."));var Rv;let NS=(Rv=class extends be{constructor(e,t,i,n,o,r,l,a,d){super(),this._parentNode=e,this._visible=t,this._setVisible=i,this._canClose=n,this._width=o,this._height=r,this._diffs=l,this._models=a,this._instantiationService=d,this._state=nA(this,(c,h)=>{const u=this._visible.read(c);if(this._parentNode.style.visibility=u?"visible":"hidden",!u)return null;const m=h.add(this._instantiationService.createInstance(u$,this._diffs,this._models,this._setVisible,this._canClose)),p=h.add(this._instantiationService.createInstance(m$,this._parentNode,m,this._width,this._height,this._models));return{model:m,view:p}}).recomputeInitiallyAndOnChange(this._store)}next(){po(e=>{const t=this._visible.get();this._setVisible(!0,e),t&&this._state.get().model.nextGroup(e)})}prev(){po(e=>{this._setVisible(!0,e),this._state.get().model.previousGroup(e)})}close(){po(e=>{this._setVisible(!1,e)})}},Rv._ttPolicy=lb("diffReview",{createHTML:e=>e}),Rv);NS=Dre([Gre(8,ti)],NS);let u$=class extends be{constructor(e,t,i,n,o){super(),this._diffs=e,this._models=t,this._setVisible=i,this.canClose=n,this._accessibilitySignalService=o,this._groups=Pi(this,[]),this._currentGroupIdx=Pi(this,0),this._currentElementIdx=Pi(this,0),this.groups=this._groups,this.currentGroup=this._currentGroupIdx.map((r,l)=>this._groups.read(l)[r]),this.currentGroupIndex=this._currentGroupIdx,this.currentElement=this._currentElementIdx.map((r,l)=>{var a;return(a=this.currentGroup.read(l))==null?void 0:a.lines[r]}),this._register(yi(r=>{const l=this._diffs.read(r);if(!l){this._groups.set([],void 0);return}const a=rht(l,this._models.getOriginalModel().getLineCount(),this._models.getModifiedModel().getLineCount());po(d=>{const c=this._models.getModifiedPosition();if(c){const h=a.findIndex(u=>(c==null?void 0:c.lineNumber)<u.range.modified.endLineNumberExclusive);h!==-1&&this._currentGroupIdx.set(h,d)}this._groups.set(a,d)})})),this._register(yi(r=>{const l=this.currentElement.read(r);(l==null?void 0:l.type)===va.Deleted?this._accessibilitySignalService.playSignal(Gc.diffLineDeleted,{source:"accessibleDiffViewer.currentElementChanged"}):(l==null?void 0:l.type)===va.Added&&this._accessibilitySignalService.playSignal(Gc.diffLineInserted,{source:"accessibleDiffViewer.currentElementChanged"})})),this._register(yi(r=>{const l=this.currentElement.read(r);if(l&&l.type!==va.Header){const a=l.modifiedLineNumber??l.diff.modified.startLineNumber;this._models.modifiedSetSelection(z.fromPositions(new ge(a,1)))}}))}_goToGroupDelta(e,t){const i=this.groups.get();!i||i.length<=1||yN(t,n=>{this._currentGroupIdx.set($i.ofLength(i.length).clipCyclic(this._currentGroupIdx.get()+e),n),this._currentElementIdx.set(0,n)})}nextGroup(e){this._goToGroupDelta(1,e)}previousGroup(e){this._goToGroupDelta(-1,e)}_goToLineDelta(e){const t=this.currentGroup.get();!t||t.lines.length<=1||po(i=>{this._currentElementIdx.set($i.ofLength(t.lines.length).clip(this._currentElementIdx.get()+e),i)})}goToNextLine(){this._goToLineDelta(1)}goToPreviousLine(){this._goToLineDelta(-1)}goToLine(e){const t=this.currentGroup.get();if(!t)return;const i=t.lines.indexOf(e);i!==-1&&po(n=>{this._currentElementIdx.set(i,n)})}revealCurrentElementInEditor(){if(!this.canClose.get())return;this._setVisible(!1,void 0);const e=this.currentElement.get();e&&(e.type===va.Deleted?this._models.originalReveal(z.fromPositions(new ge(e.originalLineNumber,1))):this._models.modifiedReveal(e.type!==va.Header?z.fromPositions(new ge(e.modifiedLineNumber,1)):void 0))}close(){this.canClose.get()&&(this._setVisible(!1,void 0),this._models.modifiedFocus())}};u$=Dre([Gre(4,oA)],u$);const Qw=3;function rht(s,e,t){const i=[];for(const n of use(s,(o,r)=>r.modified.startLineNumber-o.modified.endLineNumberExclusive<2*Qw)){const o=[];o.push(new aht);const r=new Ii(Math.max(1,n[0].original.startLineNumber-Qw),Math.min(n[n.length-1].original.endLineNumberExclusive+Qw,e+1)),l=new Ii(Math.max(1,n[0].modified.startLineNumber-Qw),Math.min(n[n.length-1].modified.endLineNumberExclusive+Qw,t+1));qAe(n,(c,h)=>{const u=new Ii(c?c.original.endLineNumberExclusive:r.startLineNumber,h?h.original.startLineNumber:r.endLineNumberExclusive),m=new Ii(c?c.modified.endLineNumberExclusive:l.startLineNumber,h?h.modified.startLineNumber:l.endLineNumberExclusive);u.forEach(p=>{o.push(new hht(p,m.startLineNumber+(p-u.startLineNumber)))}),h&&(h.original.forEach(p=>{o.push(new dht(h,p))}),h.modified.forEach(p=>{o.push(new cht(h,p))}))});const a=n[0].modified.join(n[n.length-1].modified),d=n[0].original.join(n[n.length-1].original);i.push(new lht(new ga(a,d),o))}return i}var va;(function(s){s[s.Header=0]="Header",s[s.Unchanged=1]="Unchanged",s[s.Deleted=2]="Deleted",s[s.Added=3]="Added"})(va||(va={}));class lht{constructor(e,t){this.range=e,this.lines=t}}class aht{constructor(){this.type=va.Header}}class dht{constructor(e,t){this.diff=e,this.originalLineNumber=t,this.type=va.Deleted,this.modifiedLineNumber=void 0}}class cht{constructor(e,t){this.diff=e,this.modifiedLineNumber=t,this.type=va.Added,this.originalLineNumber=void 0}}class hht{constructor(e,t){this.originalLineNumber=e,this.modifiedLineNumber=t,this.type=va.Unchanged}}let m$=class extends be{constructor(e,t,i,n,o,r){super(),this._element=e,this._model=t,this._width=i,this._height=n,this._models=o,this._languageService=r,this.domNode=this._element,this.domNode.className="monaco-component diff-review monaco-editor-background";const l=document.createElement("div");l.className="diff-review-actions",this._actionBar=this._register(new ih(l)),this._register(yi(a=>{this._actionBar.clear(),this._model.canClose.read(a)&&this._actionBar.push(new ac("diffreview.close",F("label.close","Close"),"close-diff-review "+ui.asClassName(oht),!0,async()=>t.close()),{label:!1,icon:!0})})),this._content=document.createElement("div"),this._content.className="diff-review-content",this._content.setAttribute("role","code"),this._scrollbar=this._register(new ek(this._content,{})),cl(this.domNode,this._scrollbar.getDomNode(),l),this._register(yi(a=>{this._height.read(a),this._width.read(a),this._scrollbar.scanDomNode()})),this._register(ei(()=>{cl(this.domNode)})),this._register(eb(this.domNode,{width:this._width,height:this._height})),this._register(eb(this._content,{width:this._width,height:this._height})),this._register(Wd((a,d)=>{this._model.currentGroup.read(a),this._render(d)})),this._register(Fo(this.domNode,"keydown",a=>{(a.equals(18)||a.equals(2066)||a.equals(530))&&(a.preventDefault(),this._model.goToNextLine()),(a.equals(16)||a.equals(2064)||a.equals(528))&&(a.preventDefault(),this._model.goToPreviousLine()),(a.equals(9)||a.equals(2057)||a.equals(521)||a.equals(1033))&&(a.preventDefault(),this._model.close()),(a.equals(10)||a.equals(3))&&(a.preventDefault(),this._model.revealCurrentElementInEditor())}))}_render(e){const t=this._models.getOriginalOptions(),i=this._models.getModifiedOptions(),n=document.createElement("div");n.className="diff-review-table",n.setAttribute("role","list"),n.setAttribute("aria-label",F("ariaLabel","Accessible Diff Viewer. Use arrow up and down to navigate.")),hl(n,i.get(50)),cl(this._content,n);const o=this._models.getOriginalModel(),r=this._models.getModifiedModel();if(!o||!r)return;const l=o.getOptions(),a=r.getOptions(),d=i.get(67),c=this._model.currentGroup.get();for(const h of(c==null?void 0:c.lines)||[]){if(!c)break;let u;if(h.type===va.Header){const p=document.createElement("div");p.className="diff-review-row",p.setAttribute("role","listitem");const g=c.range,f=this._model.currentGroupIndex.get(),b=this._model.groups.get().length,U=y=>y===0?F("no_lines_changed","no lines changed"):y===1?F("one_line_changed","1 line changed"):F("more_lines_changed","{0} lines changed",y),S=U(g.original.length),Z=U(g.modified.length);p.setAttribute("aria-label",F({key:"header",comment:["This is the ARIA label for a git diff header.","A git diff header looks like this: @@ -154,12 +159,39 @@.","That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.","Variables 0 and 1 refer to the diff index out of total number of diffs.","Variables 2 and 4 will be numbers (a line number).",'Variables 3 and 5 will be "no lines changed", "1 line changed" or "X lines changed", localized separately.']},"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}",f+1,b,g.original.startLineNumber,S,g.modified.startLineNumber,Z));const R=document.createElement("div");R.className="diff-review-cell diff-review-summary",R.appendChild(document.createTextNode(`${f+1}/${b}: @@ -${g.original.startLineNumber},${g.original.length} +${g.modified.startLineNumber},${g.modified.length} @@`)),p.appendChild(R),u=p}else u=this._createRow(h,d,this._width.get(),t,o,l,i,r,a);n.appendChild(u);const m=Pt(p=>this._model.currentElement.read(p)===h);e.add(yi(p=>{const g=m.read(p);u.tabIndex=g?0:-1,g&&u.focus()})),e.add(Te(u,"focus",()=>{this._model.goToLine(h)}))}this._scrollbar.scanDomNode()}_createRow(e,t,i,n,o,r,l,a,d){const c=n.get(146),h=c.glyphMarginWidth+c.lineNumbersWidth,u=l.get(146),m=10+u.glyphMarginWidth+u.lineNumbersWidth;let p="diff-review-row",g="";const f="diff-review-spacer";let b=null;switch(e.type){case va.Added:p="diff-review-row line-insert",g=" char-insert",b=nht;break;case va.Deleted:p="diff-review-row line-delete",g=" char-delete",b=sht;break}const U=document.createElement("div");U.style.minWidth=i+"px",U.className=p,U.setAttribute("role","listitem"),U.ariaLevel="";const S=document.createElement("div");S.className="diff-review-cell",S.style.height=`${t}px`,U.appendChild(S);const Z=document.createElement("span");Z.style.width=h+"px",Z.style.minWidth=h+"px",Z.className="diff-review-line-number"+g,e.originalLineNumber!==void 0?Z.appendChild(document.createTextNode(String(e.originalLineNumber))):Z.innerText=" ",S.appendChild(Z);const R=document.createElement("span");R.style.width=m+"px",R.style.minWidth=m+"px",R.style.paddingRight="10px",R.className="diff-review-line-number"+g,e.modifiedLineNumber!==void 0?R.appendChild(document.createTextNode(String(e.modifiedLineNumber))):R.innerText=" ",S.appendChild(R);const y=document.createElement("span");if(y.className=f,b){const Q=document.createElement("span");Q.className=ui.asClassName(b),Q.innerText=" ",y.appendChild(Q)}else y.innerText=" ";S.appendChild(y);let N;if(e.modifiedLineNumber!==void 0){let Q=this._getLineHtml(a,l,d.tabSize,e.modifiedLineNumber,this._languageService.languageIdCodec);NS._ttPolicy&&(Q=NS._ttPolicy.createHTML(Q)),S.insertAdjacentHTML("beforeend",Q),N=a.getLineContent(e.modifiedLineNumber)}else{let Q=this._getLineHtml(o,n,r.tabSize,e.originalLineNumber,this._languageService.languageIdCodec);NS._ttPolicy&&(Q=NS._ttPolicy.createHTML(Q)),S.insertAdjacentHTML("beforeend",Q),N=o.getLineContent(e.originalLineNumber)}N.length===0&&(N=F("blankLine","blank"));let w="";switch(e.type){case va.Unchanged:e.originalLineNumber===e.modifiedLineNumber?w=F({key:"unchangedLine",comment:["The placeholders are contents of the line and should not be translated."]},"{0} unchanged line {1}",N,e.originalLineNumber):w=F("equalLine","{0} original line {1} modified line {2}",N,e.originalLineNumber,e.modifiedLineNumber);break;case va.Added:w=F("insertLine","+ {0} modified line {1}",N,e.modifiedLineNumber);break;case va.Deleted:w=F("deleteLine","- {0} original line {1}",N,e.originalLineNumber);break}return U.setAttribute("aria-label",w),U}_getLineHtml(e,t,i,n,o){const r=e.getLineContent(n),l=t.get(50),a=Pr.createEmpty(r,o),d=rh.isBasicASCII(r,e.mightContainNonBasicASCII()),c=rh.containsRTL(r,d,e.mightContainRTL());return W9(new rA(l.isMonospace&&!t.get(33),l.canUseHalfwidthRightwardsArrow,r,!1,d,c,0,a,[],i,0,l.spaceWidth,l.middotWidth,l.wsmiddotWidth,t.get(118),t.get(100),t.get(95),t.get(51)!==TF.OFF,null)).html}};m$=Dre([Gre(5,ao)],m$);class uht{constructor(e){this.editors=e}getOriginalModel(){return this.editors.original.getModel()}getOriginalOptions(){return this.editors.original.getOptions()}originalReveal(e){this.editors.original.revealRange(e),this.editors.original.setSelection(e),this.editors.original.focus()}getModifiedModel(){return this.editors.modified.getModel()}getModifiedOptions(){return this.editors.modified.getOptions()}modifiedReveal(e){e&&(this.editors.modified.revealRange(e),this.editors.modified.setSelection(e)),this.editors.modified.focus()}modifiedSetSelection(e){this.editors.modified.setSelection(e)}modifiedFocus(){this.editors.modified.focus()}getModifiedPosition(){return this.editors.modified.getPosition()??void 0}}te("diffEditor.move.border","#8b8b8b9c",F("diffEditor.move.border","The border color for text that got moved in the diff editor."));te("diffEditor.moveActive.border","#FFA500",F("diffEditor.moveActive.border","The active border color for text that got moved in the diff editor."));te("diffEditor.unchangedRegionShadow",{dark:"#000000",light:"#737373BF",hcDark:"#000000",hcLight:"#737373BF"},F("diffEditor.unchangedRegionShadow","The color of the shadow around unchanged region widgets."));const mht=Os("diff-insert",ct.add,F("diffInsertIcon","Line decoration for inserts in the diff editor.")),bWe=Os("diff-remove",ct.remove,F("diffRemoveIcon","Line decoration for removals in the diff editor.")),I5=ki.register({className:"line-insert",description:"line-insert",isWholeLine:!0,linesDecorationsClassName:"insert-sign "+ui.asClassName(mht),marginClassName:"gutter-insert"}),IL=ki.register({className:"line-delete",description:"line-delete",isWholeLine:!0,linesDecorationsClassName:"delete-sign "+ui.asClassName(bWe),marginClassName:"gutter-delete"}),$pe=ki.register({className:"line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),ege=ki.register({className:"line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),E5=ki.register({className:"char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),Jre=ki.register({className:"char-insert",description:"char-insert",isWholeLine:!0}),Xre=ki.register({className:"char-insert diff-range-empty",description:"char-insert diff-range-empty"}),_y=ki.register({className:"char-delete",description:"char-delete",shouldFillLineOnLineBreak:!0}),Yre=ki.register({className:"char-delete",description:"char-delete",isWholeLine:!0}),_re=ki.register({className:"char-delete diff-range-empty",description:"char-delete diff-range-empty"});var UWe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},p$=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},uZ;const bk=un("diffProviderFactoryService");let g$=class{constructor(e){this.instantiationService=e}createDiffProvider(e){return this.instantiationService.createInstance(f$,e)}};g$=UWe([p$(0,ti)],g$);Fn(bk,g$,1);var bQ;let f$=(bQ=class{constructor(e,t,i){this.editorWorkerService=t,this.telemetryService=i,this.onDidChangeEventEmitter=new fe,this.onDidChange=this.onDidChangeEventEmitter.event,this.diffAlgorithm="advanced",this.diffAlgorithmOnDidChangeSubscription=void 0,this.setOptions(e)}dispose(){var e;(e=this.diffAlgorithmOnDidChangeSubscription)==null||e.dispose()}async computeDiff(e,t,i,n){if(typeof this.diffAlgorithm!="string")return this.diffAlgorithm.computeDiff(e,t,i,n);if(e.isDisposed()||t.isDisposed())return{changes:[],identical:!0,quitEarly:!1,moves:[]};if(e.getLineCount()===1&&e.getLineMaxColumn(1)===1)return t.getLineCount()===1&&t.getLineMaxColumn(1)===1?{changes:[],identical:!0,quitEarly:!1,moves:[]}:{changes:[new th(new Ii(1,2),new Ii(1,t.getLineCount()+1),[new Dc(e.getFullModelRange(),t.getFullModelRange())])],identical:!1,quitEarly:!1,moves:[]};const o=JSON.stringify([e.uri.toString(),t.uri.toString()]),r=JSON.stringify([e.id,t.id,e.getAlternativeVersionId(),t.getAlternativeVersionId(),JSON.stringify(i)]),l=uZ.diffCache.get(o);if(l&&l.context===r)return l.result;const a=jr.create(),d=await this.editorWorkerService.computeDiff(e.uri,t.uri,i,this.diffAlgorithm),c=a.elapsed();if(this.telemetryService.publicLog2("diffEditor.computeDiff",{timeMs:c,timedOut:(d==null?void 0:d.quitEarly)??!0,detectedMoves:i.computeMoves?(d==null?void 0:d.moves.length)??0:-1}),n.isCancellationRequested)return{changes:[],identical:!1,quitEarly:!0,moves:[]};if(!d)throw new Error("no diff result available");return uZ.diffCache.size>10&&uZ.diffCache.delete(uZ.diffCache.keys().next().value),uZ.diffCache.set(o,{result:d,context:r}),d}setOptions(e){var i;let t=!1;e.diffAlgorithm&&this.diffAlgorithm!==e.diffAlgorithm&&((i=this.diffAlgorithmOnDidChangeSubscription)==null||i.dispose(),this.diffAlgorithmOnDidChangeSubscription=void 0,this.diffAlgorithm=e.diffAlgorithm,typeof e.diffAlgorithm!="string"&&(this.diffAlgorithmOnDidChangeSubscription=e.diffAlgorithm.onDidChange(()=>this.onDidChangeEventEmitter.fire())),t=!0),t&&this.onDidChangeEventEmitter.fire()}},uZ=bQ,bQ.diffCache=new Map,bQ);f$=uZ=UWe([p$(1,Ld),p$(2,$l)],f$);function B9(){return s7&&!!s7.VSCODE_DEV}function FWe(s){if(B9()){const e=pht();return e.add(s),{dispose(){e.delete(s)}}}else return{dispose(){}}}function pht(){WI||(WI=new Set);const s=globalThis;return s.$hotReload_applyNewExports||(s.$hotReload_applyNewExports=e=>{const t={config:{mode:void 0},...e},i=[];for(const n of WI){const o=n(t);o&&i.push(o)}if(i.length>0)return n=>{let o=!1;for(const r of i)r(n)&&(o=!0);return o}}),WI}let WI;B9()&&FWe(({oldExports:s,newSrc:e,config:t})=>{if(t.mode==="patch-prototype")return i=>{var n,o;for(const r in i){const l=i[r];if(console.log(`[hot-reload] Patching prototype methods of '${r}'`,{exportedItem:l}),typeof l=="function"&&l.prototype){const a=s[r];if(a){for(const d of Object.getOwnPropertyNames(l.prototype)){const c=Object.getOwnPropertyDescriptor(l.prototype,d),h=Object.getOwnPropertyDescriptor(a.prototype,d);((n=c==null?void 0:c.value)==null?void 0:n.toString())!==((o=h==null?void 0:h.value)==null?void 0:o.toString())&&console.log(`[hot-reload] Patching prototype method '${r}.${d}'`),Object.defineProperty(a.prototype,d,c)}i[r]=a}}}return!0}});function tc(s,e){return ght([s],e),s}function ght(s,e){B9()&&Vl("reload",i=>FWe(({oldExports:n})=>{if([...Object.values(n)].some(o=>s.includes(o)))return o=>(i(void 0),!0)})).read(e)}var fht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},bht=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let b$=class extends be{setActiveMovedText(e){this._activeMovedText.set(e,void 0)}constructor(e,t,i){super(),this.model=e,this._options=t,this._diffProviderFactoryService=i,this._isDiffUpToDate=Pi(this,!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=Pi(this,void 0),this.diff=this._diff,this._unchangedRegions=Pi(this,void 0),this.unchangedRegions=Pt(this,l=>{var a;return this._options.hideUnchangedRegions.read(l)?((a=this._unchangedRegions.read(l))==null?void 0:a.regions)??[]:(po(d=>{var c;for(const h of((c=this._unchangedRegions.get())==null?void 0:c.regions)||[])h.collapseAll(d)}),[])}),this.movedTextToCompare=Pi(this,void 0),this._activeMovedText=Pi(this,void 0),this._hoveredMovedText=Pi(this,void 0),this.activeMovedText=Pt(this,l=>this.movedTextToCompare.read(l)??this._hoveredMovedText.read(l)??this._activeMovedText.read(l)),this._cancellationTokenSource=new go,this._diffProvider=Pt(this,l=>{const a=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:this._options.diffAlgorithm.read(l)}),d=Vl("onDidChange",a.onDidChange);return{diffProvider:a,onChangeSignal:d}}),this._register(ei(()=>this._cancellationTokenSource.cancel()));const n=SM("contentChangedSignal"),o=this._register(new cs(()=>n.trigger(void 0),200));this._register(yi(l=>{const a=this._unchangedRegions.read(l);if(!a||a.regions.some(p=>p.isDragged.read(l)))return;const d=a.originalDecorationIds.map(p=>e.original.getDecorationRange(p)).map(p=>p?Ii.fromRangeInclusive(p):void 0),c=a.modifiedDecorationIds.map(p=>e.modified.getDecorationRange(p)).map(p=>p?Ii.fromRangeInclusive(p):void 0),h=a.regions.map((p,g)=>!d[g]||!c[g]?void 0:new eF(d[g].startLineNumber,c[g].startLineNumber,d[g].length,p.visibleLineCountTop.read(l),p.visibleLineCountBottom.read(l))).filter(Lg),u=[];let m=!1;for(const p of use(h,(g,f)=>g.getHiddenModifiedRange(l).endLineNumberExclusive===f.getHiddenModifiedRange(l).startLineNumber))if(p.length>1){m=!0;const g=p.reduce((b,U)=>b+U.lineCount,0),f=new eF(p[0].originalLineNumber,p[0].modifiedLineNumber,g,p[0].visibleLineCountTop.get(),p[p.length-1].visibleLineCountBottom.get());u.push(f)}else u.push(p[0]);if(m){const p=e.original.deltaDecorations(a.originalDecorationIds,u.map(f=>({range:f.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),g=e.modified.deltaDecorations(a.modifiedDecorationIds,u.map(f=>({range:f.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));po(f=>{this._unchangedRegions.set({regions:u,originalDecorationIds:p,modifiedDecorationIds:g},f)})}}));const r=(l,a,d)=>{const c=eF.fromDiffs(l.changes,e.original.getLineCount(),e.modified.getLineCount(),this._options.hideUnchangedRegionsMinimumLineCount.read(d),this._options.hideUnchangedRegionsContextLineCount.read(d));let h;const u=this._unchangedRegions.get();if(u){const f=u.originalDecorationIds.map(Z=>e.original.getDecorationRange(Z)).map(Z=>Z?Ii.fromRangeInclusive(Z):void 0),b=u.modifiedDecorationIds.map(Z=>e.modified.getDecorationRange(Z)).map(Z=>Z?Ii.fromRangeInclusive(Z):void 0);let S=tht(u.regions.map((Z,R)=>{if(!f[R]||!b[R])return;const y=f[R].length;return new eF(f[R].startLineNumber,b[R].startLineNumber,y,Math.min(Z.visibleLineCountTop.get(),y),Math.min(Z.visibleLineCountBottom.get(),y-Z.visibleLineCountTop.get()))}).filter(Lg),(Z,R)=>!R||Z.modifiedLineNumber>=R.modifiedLineNumber+R.lineCount&&Z.originalLineNumber>=R.originalLineNumber+R.lineCount).map(Z=>new ga(Z.getHiddenOriginalRange(d),Z.getHiddenModifiedRange(d)));S=ga.clip(S,Ii.ofLength(1,e.original.getLineCount()),Ii.ofLength(1,e.modified.getLineCount())),h=ga.inverse(S,e.original.getLineCount(),e.modified.getLineCount())}const m=[];if(h)for(const f of c){const b=h.filter(U=>U.original.intersectsStrict(f.originalUnchangedRange)&&U.modified.intersectsStrict(f.modifiedUnchangedRange));m.push(...f.setVisibleRanges(b,a))}else m.push(...c);const p=e.original.deltaDecorations((u==null?void 0:u.originalDecorationIds)||[],m.map(f=>({range:f.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),g=e.modified.deltaDecorations((u==null?void 0:u.modifiedDecorationIds)||[],m.map(f=>({range:f.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));this._unchangedRegions.set({regions:m,originalDecorationIds:p,modifiedDecorationIds:g},a)};this._register(e.modified.onDidChangeContent(l=>{if(this._diff.get()){const d=Mf.fromModelContentChanges(l.changes);this._lastDiff,e.original,e.modified}this._isDiffUpToDate.set(!1,void 0),o.schedule()})),this._register(e.original.onDidChangeContent(l=>{if(this._diff.get()){const d=Mf.fromModelContentChanges(l.changes);this._lastDiff,e.original,e.modified}this._isDiffUpToDate.set(!1,void 0),o.schedule()})),this._register(Wd(async(l,a)=>{this._options.hideUnchangedRegionsMinimumLineCount.read(l),this._options.hideUnchangedRegionsContextLineCount.read(l),o.cancel(),n.read(l);const d=this._diffProvider.read(l);d.onChangeSignal.read(l),tc(JSe,l),tc(T8,l),this._isDiffUpToDate.set(!1,void 0);let c=[];a.add(e.original.onDidChangeContent(m=>{const p=Mf.fromModelContentChanges(m.changes);c=KX(c,p)}));let h=[];a.add(e.modified.onDidChangeContent(m=>{const p=Mf.fromModelContentChanges(m.changes);h=KX(h,p)}));let u=await d.diffProvider.computeDiff(e.original,e.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(l),maxComputationTimeMs:this._options.maxComputationTimeMs.read(l),computeMoves:this._options.showMoves.read(l)},this._cancellationTokenSource.token);this._cancellationTokenSource.token.isCancellationRequested||e.original.isDisposed()||e.modified.isDisposed()||(u=Uht(u,e.original,e.modified),u=(e.original,e.modified,void 0)??u,u=(e.original,e.modified,void 0)??u,po(m=>{r(u,m),this._lastDiff=u;const p=zre.fromDiffResult(u);this._diff.set(p,m),this._isDiffUpToDate.set(!0,m);const g=this.movedTextToCompare.get();this.movedTextToCompare.set(g?this._lastDiff.moves.find(f=>f.lineRangeMapping.modified.intersect(g.lineRangeMapping.modified)):void 0,m)}))}))}ensureModifiedLineIsVisible(e,t,i){var o,r;if(((o=this.diff.get())==null?void 0:o.mappings.length)===0)return;const n=((r=this._unchangedRegions.get())==null?void 0:r.regions)||[];for(const l of n)if(l.getHiddenModifiedRange(void 0).contains(e)){l.showModifiedLine(e,t,i);return}}ensureOriginalLineIsVisible(e,t,i){var o,r;if(((o=this.diff.get())==null?void 0:o.mappings.length)===0)return;const n=((r=this._unchangedRegions.get())==null?void 0:r.regions)||[];for(const l of n)if(l.getHiddenOriginalRange(void 0).contains(e)){l.showOriginalLine(e,t,i);return}}async waitForDiff(){await lRe(this.isDiffUpToDate,e=>e)}serializeState(){const e=this._unchangedRegions.get();return{collapsedRegions:e==null?void 0:e.regions.map(t=>({range:t.getHiddenModifiedRange(void 0).serialize()}))}}restoreSerializedState(e){var n;const t=(n=e.collapsedRegions)==null?void 0:n.map(o=>Ii.deserialize(o.range)),i=this._unchangedRegions.get();!i||!t||po(o=>{for(const r of i.regions)for(const l of t)if(r.modifiedUnchangedRange.intersect(l)){r.setHiddenModifiedRange(l,o);break}})}};b$=fht([bht(2,bk)],b$);function Uht(s,e,t){return{changes:s.changes.map(i=>new th(i.original,i.modified,i.innerChanges?i.innerChanges.map(n=>Fht(n,e,t)):void 0)),moves:s.moves,identical:s.identical,quitEarly:s.quitEarly}}function Fht(s,e,t){let i=s.originalRange,n=s.modifiedRange;return i.startColumn===1&&n.startColumn===1&&(i.endColumn!==1||n.endColumn!==1)&&i.endColumn===e.getLineMaxColumn(i.endLineNumber)&&n.endColumn===t.getLineMaxColumn(n.endLineNumber)&&i.endLineNumber<e.getLineCount()&&n.endLineNumber<t.getLineCount()&&(i=i.setEndPosition(i.endLineNumber+1,1),n=n.setEndPosition(n.endLineNumber+1,1)),new Dc(i,n)}class zre{static fromDiffResult(e){return new zre(e.changes.map(t=>new AWe(t)),e.moves||[],e.identical,e.quitEarly)}constructor(e,t,i,n){this.mappings=e,this.movedTexts=t,this.identical=i,this.quitEarly=n}}class AWe{constructor(e){this.lineRangeMapping=e}}class eF{static fromDiffs(e,t,i,n,o){const r=th.inverse(e,t,i),l=[];for(const a of r){let d=a.original.startLineNumber,c=a.modified.startLineNumber,h=a.original.length;const u=d===1&&c===1,m=d+h===t+1&&c+h===i+1;(u||m)&&h>=o+n?(u&&!m&&(h-=o),m&&!u&&(d+=o,c+=o,h-=o),l.push(new eF(d,c,h,0,0))):h>=o*2+n&&(d+=o,c+=o,h-=o*2,l.push(new eF(d,c,h,0,0)))}return l}get originalUnchangedRange(){return Ii.ofLength(this.originalLineNumber,this.lineCount)}get modifiedUnchangedRange(){return Ii.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(e,t,i,n,o){this.originalLineNumber=e,this.modifiedLineNumber=t,this.lineCount=i,this._visibleLineCountTop=Pi(this,0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=Pi(this,0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=Pt(this,a=>this.visibleLineCountTop.read(a)+this.visibleLineCountBottom.read(a)===this.lineCount&&!this.isDragged.read(a)),this.isDragged=Pi(this,void 0);const r=Math.max(Math.min(n,this.lineCount),0),l=Math.max(Math.min(o,this.lineCount-n),0);fhe(n===r),fhe(o===l),this._visibleLineCountTop.set(r,void 0),this._visibleLineCountBottom.set(l,void 0)}setVisibleRanges(e,t){const i=[],n=new Ih(e.map(a=>a.modified)).subtractFrom(this.modifiedUnchangedRange);let o=this.originalLineNumber,r=this.modifiedLineNumber;const l=this.modifiedLineNumber+this.lineCount;if(n.ranges.length===0)this.showAll(t),i.push(this);else{let a=0;for(const d of n.ranges){const c=a===n.ranges.length-1;a++;const h=(c?l:d.endLineNumberExclusive)-r,u=new eF(o,r,h,0,0);u.setHiddenModifiedRange(d,t),i.push(u),o=u.originalUnchangedRange.endLineNumberExclusive,r=u.modifiedUnchangedRange.endLineNumberExclusive}}return i}shouldHideControls(e){return this._shouldHideControls.read(e)}getHiddenOriginalRange(e){return Ii.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}getHiddenModifiedRange(e){return Ii.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}setHiddenModifiedRange(e,t){const i=e.startLineNumber-this.modifiedLineNumber,n=this.modifiedLineNumber+this.lineCount-e.endLineNumberExclusive;this.setState(i,n,t)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(e=10,t){const i=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+e,i),t)}showMoreBelow(e=10,t){const i=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+e,i),t)}showAll(e){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),e)}showModifiedLine(e,t,i){const n=e+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),o=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-e;t===0&&n<o||t===1?this._visibleLineCountTop.set(this._visibleLineCountTop.get()+n,i):this._visibleLineCountBottom.set(this._visibleLineCountBottom.get()+o,i)}showOriginalLine(e,t,i){const n=e-this.originalLineNumber,o=this.originalLineNumber+this.lineCount-e;t===0&&n<o||t===1?this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+o-n,this.getMaxVisibleLineCountTop()),i):this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+n-o,this.getMaxVisibleLineCountBottom()),i)}collapseAll(e){this._visibleLineCountTop.set(0,e),this._visibleLineCountBottom.set(0,e)}setState(e,t,i){e=Math.max(Math.min(e,this.lineCount),0),t=Math.max(Math.min(t,this.lineCount-e),0),this._visibleLineCountTop.set(e,i),this._visibleLineCountBottom.set(t,i)}}class Aht extends be{get visibility(){return this._visibility}set visibility(e){this._visibility!==e&&(this._visibility=e,this._diffActions.style.visibility=e?"visible":"hidden")}constructor(e,t,i,n,o,r,l,a,d){super(),this._getViewZoneId=e,this._marginDomNode=t,this._modifiedEditor=i,this._diff=n,this._editor=o,this._viewLineCounts=r,this._originalTextModel=l,this._contextMenuService=a,this._clipboardService=d,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=ui.asClassName(ct.lightBulb)+" lightbulb-glyph",this._diffActions.style.position="absolute";const c=this._modifiedEditor.getOption(67);this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${c}px`,this._diffActions.style.lineHeight=`${c}px`,this._marginDomNode.appendChild(this._diffActions);let h=0;const u=i.getOption(128)&&!lp,m=(p,g)=>{this._contextMenuService.showContextMenu({domForShadowRoot:u?i.getDomNode()??void 0:void 0,getAnchor:()=>({x:p,y:g}),getActions:()=>{const f=[],b=n.modified.isEmpty;return f.push(new ac("diff.clipboard.copyDeletedContent",b?n.original.length>1?F("diff.clipboard.copyDeletedLinesContent.label","Copy deleted lines"):F("diff.clipboard.copyDeletedLinesContent.single.label","Copy deleted line"):n.original.length>1?F("diff.clipboard.copyChangedLinesContent.label","Copy changed lines"):F("diff.clipboard.copyChangedLinesContent.single.label","Copy changed line"),void 0,!0,async()=>{const S=this._originalTextModel.getValueInRange(n.original.toExclusiveRange());await this._clipboardService.writeText(S)})),n.original.length>1&&f.push(new ac("diff.clipboard.copyDeletedLineContent",b?F("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",n.original.startLineNumber+h):F("diff.clipboard.copyChangedLineContent.label","Copy changed line ({0})",n.original.startLineNumber+h),void 0,!0,async()=>{let S=this._originalTextModel.getLineContent(n.original.startLineNumber+h);S===""&&(S=this._originalTextModel.getEndOfLineSequence()===0?`
- `:`\r
- `),await this._clipboardService.writeText(S)})),i.getOption(92)||f.push(new ac("diff.inline.revertChange",F("diff.inline.revertChange.label","Revert this change"),void 0,!0,async()=>{this._editor.revert(this._diff)})),f},autoSelectFirstItem:!0})};this._register(Fo(this._diffActions,"mousedown",p=>{if(!p.leftButton)return;const{top:g,height:f}=Lo(this._diffActions),b=Math.floor(c/3);p.preventDefault(),m(p.posx,g+f+b)})),this._register(i.onMouseMove(p=>{(p.target.type===8||p.target.type===5)&&p.target.detail.viewZoneId===this._getViewZoneId()?(h=this._updateLightBulbPosition(this._marginDomNode,p.event.browserEvent.y,c),this.visibility=!0):this.visibility=!1})),this._register(i.onMouseDown(p=>{p.event.leftButton&&(p.target.type===8||p.target.type===5)&&p.target.detail.viewZoneId===this._getViewZoneId()&&(p.event.preventDefault(),h=this._updateLightBulbPosition(this._marginDomNode,p.event.browserEvent.y,c),m(p.event.posx,p.event.posy+c))}))}_updateLightBulbPosition(e,t,i){const{top:n}=Lo(e),o=t-n,r=Math.floor(o/i),l=r*i;if(this._diffActions.style.top=`${l}px`,this._viewLineCounts){let a=0;for(let d=0;d<this._viewLineCounts.length;d++)if(a+=this._viewLineCounts[d],r<a)return d}return r}}const tge=lb("diffEditorWidget",{createHTML:s=>s});function Zht(s,e,t,i){hl(i,e.fontInfo);const n=t.length>0,o=new gM(1e4);let r=0,l=0;const a=[];for(let u=0;u<s.lineTokens.length;u++){const m=u+1,p=s.lineTokens[u],g=s.lineBreakData[u],f=Da.filter(t,m,1,Number.MAX_SAFE_INTEGER);if(g){let b=0;for(const U of g.breakOffsets){const S=p.sliceAndInflate(b,U,0);r=Math.max(r,ige(l,S,Da.extractWrapped(f,b,U),n,s.mightContainNonBasicASCII,s.mightContainRTL,e,o)),l++,b=U}a.push(g.breakOffsets.length)}else a.push(1),r=Math.max(r,ige(l,p,f,n,s.mightContainNonBasicASCII,s.mightContainRTL,e,o)),l++}r+=e.scrollBeyondLastColumn;const d=o.build(),c=tge?tge.createHTML(d):d;i.innerHTML=c;const h=r*e.typicalHalfwidthCharacterWidth;return{heightInLines:l,minWidthInPx:h,viewLineCounts:a}}class Sht{constructor(e,t,i,n){this.lineTokens=e,this.lineBreakData=t,this.mightContainNonBasicASCII=i,this.mightContainRTL=n}}class Ore{static fromEditor(e){var o;const t=e.getOptions(),i=t.get(50),n=t.get(146);return new Ore(((o=e.getModel())==null?void 0:o.getOptions().tabSize)||0,i,t.get(33),i.typicalHalfwidthCharacterWidth,t.get(105),t.get(67),n.decorationsWidth,t.get(118),t.get(100),t.get(95),t.get(51))}constructor(e,t,i,n,o,r,l,a,d,c,h){this.tabSize=e,this.fontInfo=t,this.disableMonospaceOptimizations=i,this.typicalHalfwidthCharacterWidth=n,this.scrollBeyondLastColumn=o,this.lineHeight=r,this.lineDecorationsWidth=l,this.stopRenderingLineAfter=a,this.renderWhitespace=d,this.renderControlCharacters=c,this.fontLigatures=h}}function ige(s,e,t,i,n,o,r,l){l.appendString('<div class="view-line'),i||l.appendString(" char-delete"),l.appendString('" style="top:'),l.appendString(String(s*r.lineHeight)),l.appendString('px;width:1000000px;">');const a=e.getLineContent(),d=rh.isBasicASCII(a,n),c=rh.containsRTL(a,d,o),h=gk(new rA(r.fontInfo.isMonospace&&!r.disableMonospaceOptimizations,r.fontInfo.canUseHalfwidthRightwardsArrow,a,!1,d,c,0,e,t,r.tabSize,0,r.fontInfo.spaceWidth,r.fontInfo.middotWidth,r.fontInfo.wsmiddotWidth,r.stopRenderingLineAfter,r.renderWhitespace,r.renderControlCharacters,r.fontLigatures!==TF.OFF,null),l);return l.appendString("</div>"),h.characterMapping.getHorizontalOffset(h.characterMapping.length)}var Nht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},nge=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let U$=class extends be{constructor(e,t,i,n,o,r,l,a,d,c){super(),this._targetWindow=e,this._editors=t,this._diffModel=i,this._options=n,this._diffEditorWidget=o,this._canIgnoreViewZoneUpdateEvent=r,this._origViewZonesToIgnore=l,this._modViewZonesToIgnore=a,this._clipboardService=d,this._contextMenuService=c,this._originalTopPadding=Pi(this,0),this._originalScrollOffset=Pi(this,0),this._originalScrollOffsetAnimated=Hpe(this._targetWindow,this._originalScrollOffset,this._store),this._modifiedTopPadding=Pi(this,0),this._modifiedScrollOffset=Pi(this,0),this._modifiedScrollOffsetAnimated=Hpe(this._targetWindow,this._modifiedScrollOffset,this._store);const h=Pi("invalidateAlignmentsState",0),u=this._register(new cs(()=>{h.set(h.get()+1,void 0)},0));this._register(this._editors.original.onDidChangeViewZones(S=>{this._canIgnoreViewZoneUpdateEvent()||u.schedule()})),this._register(this._editors.modified.onDidChangeViewZones(S=>{this._canIgnoreViewZoneUpdateEvent()||u.schedule()})),this._register(this._editors.original.onDidChangeConfiguration(S=>{(S.hasChanged(147)||S.hasChanged(67))&&u.schedule()})),this._register(this._editors.modified.onDidChangeConfiguration(S=>{(S.hasChanged(147)||S.hasChanged(67))&&u.schedule()}));const m=this._diffModel.map(S=>S?is(this,S.model.original.onDidChangeTokens,()=>S.model.original.tokenization.backgroundTokenizationState===2):void 0).map((S,Z)=>S==null?void 0:S.read(Z)),p=Pt(S=>{const Z=this._diffModel.read(S),R=Z==null?void 0:Z.diff.read(S);if(!Z||!R)return null;h.read(S);const N=this._options.renderSideBySide.read(S);return sge(this._editors.original,this._editors.modified,R.mappings,this._origViewZonesToIgnore,this._modViewZonesToIgnore,N)}),g=Pt(S=>{var y;const Z=(y=this._diffModel.read(S))==null?void 0:y.movedTextToCompare.read(S);if(!Z)return null;h.read(S);const R=Z.changes.map(N=>new AWe(N));return sge(this._editors.original,this._editors.modified,R,this._origViewZonesToIgnore,this._modViewZonesToIgnore,!0)});function f(){const S=document.createElement("div");return S.className="diagonal-fill",S}const b=this._register(new De);this.viewZones=nA(this,(S,Z)=>{var le,Fe,Ue,ze;b.clear();const R=p.read(S)||[],y=[],N=[],w=this._modifiedTopPadding.read(S);w>0&&N.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:w,showInHiddenAreas:!0,suppressMouseDown:!0});const Q=this._originalTopPadding.read(S);Q>0&&y.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:Q,showInHiddenAreas:!0,suppressMouseDown:!0});const C=this._options.renderSideBySide.read(S),v=C||(le=this._editors.modified._getViewModel())==null?void 0:le.createLineBreaksComputer();if(v){const Oe=this._editors.original.getModel();for(const Ie of R)if(Ie.diff)for(let at=Ie.originalRange.startLineNumber;at<Ie.originalRange.endLineNumberExclusive;at++){if(at>Oe.getLineCount())return{orig:y,mod:N};v==null||v.addRequest(Oe.getLineContent(at),null,null)}}const Y=(v==null?void 0:v.finalize())??[];let J=0;const k=this._editors.modified.getOption(67),E=(Fe=this._diffModel.read(S))==null?void 0:Fe.movedTextToCompare.read(S),K=((Ue=this._editors.original.getModel())==null?void 0:Ue.mightContainNonBasicASCII())??!1,de=((ze=this._editors.original.getModel())==null?void 0:ze.mightContainRTL())??!1,ee=Ore.fromEditor(this._editors.modified);for(const Oe of R)if(Oe.diff&&!C&&(!this._options.useTrueInlineDiffRendering.read(S)||!jre(Oe.diff))){if(!Oe.originalRange.isEmpty){m.read(S);const at=document.createElement("div");at.classList.add("view-lines","line-delete","monaco-mouse-cursor-text");const je=this._editors.original.getModel();if(Oe.originalRange.endLineNumberExclusive-1>je.getLineCount())return{orig:y,mod:N};const Se=new Sht(Oe.originalRange.mapToLineArray(Wt=>je.tokenization.getLineTokens(Wt)),Oe.originalRange.mapToLineArray(Wt=>Y[J++]),K,de),dt=[];for(const Wt of Oe.diff.innerChanges||[])dt.push(new h2(Wt.originalRange.delta(-(Oe.diff.original.startLineNumber-1)),_y.className,0));const Yt=Zht(Se,ee,dt,at),Ye=document.createElement("div");if(Ye.className="inline-deleted-margin-view-zone",hl(Ye,ee.fontInfo),this._options.renderIndicators.read(S))for(let Wt=0;Wt<Yt.heightInLines;Wt++){const Jt=document.createElement("div");Jt.className=`delete-sign ${ui.asClassName(bWe)}`,Jt.setAttribute("style",`position:absolute;top:${Wt*k}px;width:${ee.lineDecorationsWidth}px;height:${k}px;right:0;`),Ye.appendChild(Jt)}let mt;b.add(new Aht(()=>YU(mt),Ye,this._editors.modified,Oe.diff,this._diffEditorWidget,Yt.viewLineCounts,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let Wt=0;Wt<Yt.viewLineCounts.length;Wt++){const Jt=Yt.viewLineCounts[Wt];Jt>1&&y.push({afterLineNumber:Oe.originalRange.startLineNumber+Wt,domNode:f(),heightInPx:(Jt-1)*k,showInHiddenAreas:!0,suppressMouseDown:!0})}N.push({afterLineNumber:Oe.modifiedRange.startLineNumber-1,domNode:at,heightInPx:Yt.heightInLines*k,minWidthInPx:Yt.minWidthInPx,marginDomNode:Ye,setZoneId(Wt){mt=Wt},showInHiddenAreas:!0,suppressMouseDown:!0})}const Ie=document.createElement("div");Ie.className="gutter-delete",y.push({afterLineNumber:Oe.originalRange.endLineNumberExclusive-1,domNode:f(),heightInPx:Oe.modifiedHeightInPx,marginDomNode:Ie,showInHiddenAreas:!0,suppressMouseDown:!0})}else{const Ie=Oe.modifiedHeightInPx-Oe.originalHeightInPx;if(Ie>0){if(E!=null&&E.lineRangeMapping.original.delta(-1).deltaLength(2).contains(Oe.originalRange.endLineNumberExclusive-1))continue;y.push({afterLineNumber:Oe.originalRange.endLineNumberExclusive-1,domNode:f(),heightInPx:Ie,showInHiddenAreas:!0,suppressMouseDown:!0})}else{let at=function(){const Se=document.createElement("div");return Se.className="arrow-revert-change "+ui.asClassName(ct.arrowRight),Z.add(Te(Se,"mousedown",dt=>dt.stopPropagation())),Z.add(Te(Se,"click",dt=>{dt.stopPropagation(),o.revert(Oe.diff)})),gt("div",{},Se)};if(E!=null&&E.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(Oe.modifiedRange.endLineNumberExclusive-1))continue;let je;Oe.diff&&Oe.diff.modified.isEmpty&&this._options.shouldRenderOldRevertArrows.read(S)&&(je=at()),N.push({afterLineNumber:Oe.modifiedRange.endLineNumberExclusive-1,domNode:f(),heightInPx:-Ie,marginDomNode:je,showInHiddenAreas:!0,suppressMouseDown:!0})}}for(const Oe of g.read(S)??[]){if(!(E!=null&&E.lineRangeMapping.original.intersect(Oe.originalRange))||!(E!=null&&E.lineRangeMapping.modified.intersect(Oe.modifiedRange)))continue;const Ie=Oe.modifiedHeightInPx-Oe.originalHeightInPx;Ie>0?y.push({afterLineNumber:Oe.originalRange.endLineNumberExclusive-1,domNode:f(),heightInPx:Ie,showInHiddenAreas:!0,suppressMouseDown:!0}):N.push({afterLineNumber:Oe.modifiedRange.endLineNumberExclusive-1,domNode:f(),heightInPx:-Ie,showInHiddenAreas:!0,suppressMouseDown:!0})}return{orig:y,mod:N}});let U=!1;this._register(this._editors.original.onDidScrollChange(S=>{S.scrollLeftChanged&&!U&&(U=!0,this._editors.modified.setScrollLeft(S.scrollLeft),U=!1)})),this._register(this._editors.modified.onDidScrollChange(S=>{S.scrollLeftChanged&&!U&&(U=!0,this._editors.original.setScrollLeft(S.scrollLeft),U=!1)})),this._originalScrollTop=is(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=is(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._register(yi(S=>{const Z=this._originalScrollTop.read(S)-(this._originalScrollOffsetAnimated.get()-this._modifiedScrollOffsetAnimated.read(S))-(this._originalTopPadding.get()-this._modifiedTopPadding.read(S));Z!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(Z,1)})),this._register(yi(S=>{const Z=this._modifiedScrollTop.read(S)-(this._modifiedScrollOffsetAnimated.get()-this._originalScrollOffsetAnimated.read(S))-(this._modifiedTopPadding.get()-this._originalTopPadding.read(S));Z!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(Z,1)})),this._register(yi(S=>{var y;const Z=(y=this._diffModel.read(S))==null?void 0:y.movedTextToCompare.read(S);let R=0;if(Z){const N=this._editors.original.getTopForLineNumber(Z.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.get();R=this._editors.modified.getTopForLineNumber(Z.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.get()-N}R>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(R,void 0)):R<0?(this._modifiedTopPadding.set(-R,void 0),this._originalTopPadding.set(0,void 0)):setTimeout(()=>{this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(0,void 0)},400),this._editors.modified.hasTextFocus()?this._originalScrollOffset.set(this._modifiedScrollOffset.get()-R,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.get()+R,void 0,!0)}))}};U$=Nht([nge(8,hb),nge(9,Uc)],U$);function sge(s,e,t,i,n,o){const r=new zf(oge(s,i)),l=new zf(oge(e,n)),a=s.getOption(67),d=e.getOption(67),c=[];let h=0,u=0;function m(p,g){for(;;){let f=r.peek(),b=l.peek();if(f&&f.lineNumber>=p&&(f=void 0),b&&b.lineNumber>=g&&(b=void 0),!f&&!b)break;const U=f?f.lineNumber-h:Number.MAX_VALUE,S=b?b.lineNumber-u:Number.MAX_VALUE;U<S?(r.dequeue(),b={lineNumber:f.lineNumber-h+u,heightInPx:0}):U>S?(l.dequeue(),f={lineNumber:b.lineNumber-u+h,heightInPx:0}):(r.dequeue(),l.dequeue()),c.push({originalRange:Ii.ofLength(f.lineNumber,1),modifiedRange:Ii.ofLength(b.lineNumber,1),originalHeightInPx:a+f.heightInPx,modifiedHeightInPx:d+b.heightInPx,diff:void 0})}}for(const p of t){let S=function(Z,R,y=!1){var v,Y;if(Z<U||R<b)return;if(f)f=!1;else if(!y&&(Z===U||R===b))return;const N=new Ii(U,Z),w=new Ii(b,R);if(N.isEmpty&&w.isEmpty)return;const Q=((v=r.takeWhile(J=>J.lineNumber<Z))==null?void 0:v.reduce((J,k)=>J+k.heightInPx,0))??0,C=((Y=l.takeWhile(J=>J.lineNumber<R))==null?void 0:Y.reduce((J,k)=>J+k.heightInPx,0))??0;c.push({originalRange:N,modifiedRange:w,originalHeightInPx:N.length*a+Q,modifiedHeightInPx:w.length*d+C,diff:p.lineRangeMapping}),U=Z,b=R};const g=p.lineRangeMapping;m(g.original.startLineNumber,g.modified.startLineNumber);let f=!0,b=g.modified.startLineNumber,U=g.original.startLineNumber;if(o)for(const Z of g.innerChanges||[]){Z.originalRange.startColumn>1&&Z.modifiedRange.startColumn>1&&S(Z.originalRange.startLineNumber,Z.modifiedRange.startLineNumber);const R=s.getModel(),y=Z.originalRange.endLineNumber<=R.getLineCount()?R.getLineMaxColumn(Z.originalRange.endLineNumber):Number.MAX_SAFE_INTEGER;Z.originalRange.endColumn<y&&S(Z.originalRange.endLineNumber,Z.modifiedRange.endLineNumber)}S(g.original.endLineNumberExclusive,g.modified.endLineNumberExclusive,!0),h=g.original.endLineNumberExclusive,u=g.modified.endLineNumberExclusive}return m(Number.MAX_VALUE,Number.MAX_VALUE),c}function oge(s,e){const t=[],i=[],n=s.getOption(147).wrappingColumn!==-1,o=s._getViewModel().coordinatesConverter,r=s.getOption(67);if(n)for(let a=1;a<=s.getModel().getLineCount();a++){const d=o.getModelLineViewLineCount(a);d>1&&i.push({lineNumber:a,heightInPx:r*(d-1)})}for(const a of s.getWhitespaces()){if(e.has(a.id))continue;const d=a.afterLineNumber===0?0:o.convertViewPositionToModelPosition(new ge(a.afterLineNumber,1)).lineNumber;t.push({lineNumber:d,heightInPx:a.height})}return Hct(t,i,a=>a.lineNumber,(a,d)=>({lineNumber:a.lineNumber,heightInPx:a.heightInPx+d.heightInPx}))}function jre(s){return s.innerChanges?s.innerChanges.every(e=>rge(e.modifiedRange)&&rge(e.originalRange)||e.originalRange.equalsRange(new z(1,1,1,1))):!1}function rge(s){return s.startLineNumber===s.endLineNumber}const VB=class VB extends be{constructor(e,t,i,n,o){super(),this._rootElement=e,this._diffModel=t,this._originalEditorLayoutInfo=i,this._modifiedEditorLayoutInfo=n,this._editors=o,this._originalScrollTop=is(this,this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=is(this,this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._viewZonesChanged=Vl("onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this.width=Pi(this,0),this._modifiedViewZonesChangedSignal=Vl("modified.onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=Vl("original.onDidChangeViewZones",this._editors.original.onDidChangeViewZones),this._state=nA(this,(c,h)=>{var N;this._element.replaceChildren();const u=this._diffModel.read(c),m=(N=u==null?void 0:u.diff.read(c))==null?void 0:N.movedTexts;if(!m||m.length===0){this.width.set(0,void 0);return}this._viewZonesChanged.read(c);const p=this._originalEditorLayoutInfo.read(c),g=this._modifiedEditorLayoutInfo.read(c);if(!p||!g){this.width.set(0,void 0);return}this._modifiedViewZonesChangedSignal.read(c),this._originalViewZonesChangedSignal.read(c);const f=m.map(w=>{function Q(ee,le){const Fe=le.getTopForLineNumber(ee.startLineNumber,!0),Ue=le.getTopForLineNumber(ee.endLineNumberExclusive,!0);return(Fe+Ue)/2}const C=Q(w.lineRangeMapping.original,this._editors.original),v=this._originalScrollTop.read(c),Y=Q(w.lineRangeMapping.modified,this._editors.modified),J=this._modifiedScrollTop.read(c),k=C-v,E=Y-J,K=Math.min(C,Y),de=Math.max(C,Y);return{range:new $i(K,de),from:k,to:E,fromWithoutScroll:C,toWithoutScroll:Y,move:w}});f.sort(ZOe(Ja(w=>w.fromWithoutScroll>w.toWithoutScroll,SOe),Ja(w=>w.fromWithoutScroll>w.toWithoutScroll?w.fromWithoutScroll:-w.toWithoutScroll,ju)));const b=Pre.compute(f.map(w=>w.range)),U=10,S=p.verticalScrollbarWidth,Z=(b.getTrackCount()-1)*10+U*2,R=S+Z+(g.contentLeft-VB.movedCodeBlockPadding);let y=0;for(const w of f){const Q=b.getTrack(y),C=S+U+Q*10,v=15,Y=15,J=R,k=g.glyphMarginWidth+g.lineNumbersWidth,E=18,K=document.createElementNS("http://www.w3.org/2000/svg","rect");K.classList.add("arrow-rectangle"),K.setAttribute("x",`${J-k}`),K.setAttribute("y",`${w.to-E/2}`),K.setAttribute("width",`${k}`),K.setAttribute("height",`${E}`),this._element.appendChild(K);const de=document.createElementNS("http://www.w3.org/2000/svg","g"),ee=document.createElementNS("http://www.w3.org/2000/svg","path");ee.setAttribute("d",`M 0 ${w.from} L ${C} ${w.from} L ${C} ${w.to} L ${J-Y} ${w.to}`),ee.setAttribute("fill","none"),de.appendChild(ee);const le=document.createElementNS("http://www.w3.org/2000/svg","polygon");le.classList.add("arrow"),h.add(yi(Fe=>{ee.classList.toggle("currentMove",w.move===u.activeMovedText.read(Fe)),le.classList.toggle("currentMove",w.move===u.activeMovedText.read(Fe))})),le.setAttribute("points",`${J-Y},${w.to-v/2} ${J},${w.to} ${J-Y},${w.to+v/2}`),de.appendChild(le),this._element.appendChild(de),y++}this.width.set(Z,void 0)}),this._element=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("class","moved-blocks-lines"),this._rootElement.appendChild(this._element),this._register(ei(()=>this._element.remove())),this._register(yi(c=>{const h=this._originalEditorLayoutInfo.read(c),u=this._modifiedEditorLayoutInfo.read(c);!h||!u||(this._element.style.left=`${h.width-h.verticalScrollbarWidth}px`,this._element.style.height=`${h.height}px`,this._element.style.width=`${h.verticalScrollbarWidth+h.contentLeft-VB.movedCodeBlockPadding+this.width.read(c)}px`)})),this._register(NM(this._state));const r=Pt(c=>{const h=this._diffModel.read(c),u=h==null?void 0:h.diff.read(c);return u?u.movedTexts.map(m=>({move:m,original:new BW(Jh(m.lineRangeMapping.original.startLineNumber-1),18),modified:new BW(Jh(m.lineRangeMapping.modified.startLineNumber-1),18)})):[]});this._register(k5(this._editors.original,r.map(c=>c.map(h=>h.original)))),this._register(k5(this._editors.modified,r.map(c=>c.map(h=>h.modified)))),this._register(Wd((c,h)=>{const u=r.read(c);for(const m of u)h.add(new lge(this._editors.original,m.original,m.move,"original",this._diffModel.get())),h.add(new lge(this._editors.modified,m.modified,m.move,"modified",this._diffModel.get()))}));const l=Vl("original.onDidFocusEditorWidget",c=>this._editors.original.onDidFocusEditorWidget(()=>setTimeout(()=>c(void 0),0))),a=Vl("modified.onDidFocusEditorWidget",c=>this._editors.modified.onDidFocusEditorWidget(()=>setTimeout(()=>c(void 0),0)));let d="modified";this._register(lk({createEmptyChangeSummary:()=>{},handleChange:(c,h)=>(c.didChange(l)&&(d="original"),c.didChange(a)&&(d="modified"),!0)},c=>{l.read(c),a.read(c);const h=this._diffModel.read(c);if(!h)return;const u=h.diff.read(c);let m;if(u&&d==="original"){const p=this._editors.originalCursor.read(c);p&&(m=u.movedTexts.find(g=>g.lineRangeMapping.original.contains(p.lineNumber)))}if(u&&d==="modified"){const p=this._editors.modifiedCursor.read(c);p&&(m=u.movedTexts.find(g=>g.lineRangeMapping.modified.contains(p.lineNumber)))}m!==h.movedTextToCompare.get()&&h.movedTextToCompare.set(void 0,void 0),h.setActiveMovedText(m)}))}};VB.movedCodeBlockPadding=4;let P1=VB;class Pre{static compute(e){const t=[],i=[];for(const n of e){let o=t.findIndex(r=>!r.intersectsStrict(n));o===-1&&(t.length>=6?o=n7e(t,Ja(l=>l.intersectWithRangeLength(n),ju)):(o=t.length,t.push(new Pse))),t[o].addRange(n),i.push(o)}return new Pre(t.length,i)}constructor(e,t){this._trackCount=e,this.trackPerLineIdx=t}getTrack(e){return this.trackPerLineIdx[e]}getTrackCount(){return this._trackCount}}class lge extends Ere{constructor(e,t,i,n,o){const r=an("div.diff-hidden-lines-widget");super(e,t,r.root),this._editor=e,this._move=i,this._kind=n,this._diffModel=o,this._nodes=an("div.diff-moved-code-block",{style:{marginRight:"4px"}},[an("div.text-content@textContent"),an("div.action-bar@actionBar")]),r.root.appendChild(this._nodes.root);const l=is(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._register(eb(this._nodes.root,{paddingRight:l.map(u=>u.verticalScrollbarWidth)}));let a;i.changes.length>0?a=this._kind==="original"?F("codeMovedToWithChanges","Code moved with changes to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):F("codeMovedFromWithChanges","Code moved with changes from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1):a=this._kind==="original"?F("codeMovedTo","Code moved to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):F("codeMovedFrom","Code moved from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1);const d=this._register(new ih(this._nodes.actionBar,{highlightToggledItems:!0})),c=new ac("",a,"",!1);d.push(c,{icon:!1,label:!0});const h=new ac("","Compare",ui.asClassName(ct.compareChanges),!0,()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===i?void 0:this._move,void 0)});this._register(yi(u=>{const m=this._diffModel.movedTextToCompare.read(u)===i;h.checked=m})),d.push(h,{icon:!1,label:!0})}}class Rht extends be{constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._decorations=Pt(this,o=>{const r=this._diffModel.read(o),l=r==null?void 0:r.diff.read(o);if(!l)return null;const a=this._diffModel.read(o).movedTextToCompare.read(o),d=this._options.renderIndicators.read(o),c=this._options.showEmptyDecorations.read(o),h=[],u=[];if(!a)for(const p of l.mappings)if(p.lineRangeMapping.original.isEmpty||h.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:d?IL:ege}),p.lineRangeMapping.modified.isEmpty||u.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:d?I5:$pe}),p.lineRangeMapping.modified.isEmpty||p.lineRangeMapping.original.isEmpty)p.lineRangeMapping.original.isEmpty||h.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:Yre}),p.lineRangeMapping.modified.isEmpty||u.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:Jre});else{const g=this._options.useTrueInlineDiffRendering.read(o)&&jre(p.lineRangeMapping);for(const f of p.lineRangeMapping.innerChanges||[])if(p.lineRangeMapping.original.contains(f.originalRange.startLineNumber)&&h.push({range:f.originalRange,options:f.originalRange.isEmpty()&&c?_re:_y}),p.lineRangeMapping.modified.contains(f.modifiedRange.startLineNumber)&&u.push({range:f.modifiedRange,options:f.modifiedRange.isEmpty()&&c&&!g?Xre:E5}),g){const b=r.model.original.getValueInRange(f.originalRange);u.push({range:f.modifiedRange,options:{description:"deleted-text",before:{content:b,inlineClassName:"inline-deleted-text"},zIndex:1e5,showIfCollapsed:!0}})}}if(a)for(const p of a.changes){const g=p.original.toInclusiveRange();g&&h.push({range:g,options:d?IL:ege});const f=p.modified.toInclusiveRange();f&&u.push({range:f,options:d?I5:$pe});for(const b of p.innerChanges||[])h.push({range:b.originalRange,options:_y}),u.push({range:b.modifiedRange,options:E5})}const m=this._diffModel.read(o).activeMovedText.read(o);for(const p of l.movedTexts)h.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:{description:"moved",blockClassName:"movedOriginal"+(p===m?" currentMove":""),blockPadding:[P1.movedCodeBlockPadding,0,P1.movedCodeBlockPadding,P1.movedCodeBlockPadding]}}),u.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:{description:"moved",blockClassName:"movedModified"+(p===m?" currentMove":""),blockPadding:[4,0,4,4]}});return{originalDecorations:h,modifiedDecorations:u}}),this._register(v5(this._editors.original,this._decorations.map(o=>(o==null?void 0:o.originalDecorations)||[]))),this._register(v5(this._editors.modified,this._decorations.map(o=>(o==null?void 0:o.modifiedDecorations)||[])))}}class Vht{resetSash(){this._sashRatio.set(void 0,void 0)}constructor(e,t){this._options=e,this.dimensions=t,this.sashLeft=ok(this,i=>{const n=this._sashRatio.read(i)??this._options.splitViewDefaultRatio.read(i);return this._computeSashLeft(n,i)},(i,n)=>{const o=this.dimensions.width.get();this._sashRatio.set(i/o,n)}),this._sashRatio=Pi(this,void 0)}_computeSashLeft(e,t){const i=this.dimensions.width.read(t),n=Math.floor(this._options.splitViewDefaultRatio.read(t)*i),o=this._options.enableSplitViewResizing.read(t)?Math.floor(e*i):n,r=100;return i<=r*2?n:o<r?r:o>i-r?i-r:o}}class ZWe extends be{constructor(e,t,i,n,o,r){super(),this._domNode=e,this._dimensions=t,this._enabled=i,this._boundarySashes=n,this.sashLeft=o,this._resetSash=r,this._sash=this._register(new Jl(this._domNode,{getVerticalSashTop:l=>0,getVerticalSashLeft:l=>this.sashLeft.get(),getVerticalSashHeight:l=>this._dimensions.height.get()},{orientation:0})),this._startSashPosition=void 0,this._register(this._sash.onDidStart(()=>{this._startSashPosition=this.sashLeft.get()})),this._register(this._sash.onDidChange(l=>{this.sashLeft.set(this._startSashPosition+(l.currentX-l.startX),void 0)})),this._register(this._sash.onDidEnd(()=>this._sash.layout())),this._register(this._sash.onDidReset(()=>this._resetSash())),this._register(yi(l=>{const a=this._boundarySashes.read(l);a&&(this._sash.orthogonalEndSash=a.bottom)})),this._register(yi(l=>{const a=this._enabled.read(l);this._sash.state=a?3:0,this.sashLeft.read(l),this._dimensions.height.read(l),this._sash.layout()}))}}class Wht extends be{constructor(e,t,i){super(),this._editor=e,this._domNode=t,this.itemProvider=i,this.scrollTop=is(this,this._editor.onDidScrollChange,r=>this._editor.getScrollTop()),this.isScrollTopZero=this.scrollTop.map(r=>r===0),this.modelAttached=is(this,this._editor.onDidChangeModel,r=>this._editor.hasModel()),this.editorOnDidChangeViewZones=Vl("onDidChangeViewZones",this._editor.onDidChangeViewZones),this.editorOnDidContentSizeChange=Vl("onDidContentSizeChange",this._editor.onDidContentSizeChange),this.domNodeSizeChanged=SM("domNodeSizeChanged"),this.views=new Map,this._domNode.className="gutter monaco-editor";const n=this._domNode.appendChild(an("div.scroll-decoration",{role:"presentation",ariaHidden:"true",style:{width:"100%"}}).root),o=new ResizeObserver(()=>{po(r=>{this.domNodeSizeChanged.trigger(r)})});o.observe(this._domNode),this._register(ei(()=>o.disconnect())),this._register(yi(r=>{n.className=this.isScrollTopZero.read(r)?"":"scroll-decoration"})),this._register(yi(r=>this.render(r)))}dispose(){super.dispose(),cl(this._domNode)}render(e){if(!this.modelAttached.read(e))return;this.domNodeSizeChanged.read(e),this.editorOnDidChangeViewZones.read(e),this.editorOnDidContentSizeChange.read(e);const t=this.scrollTop.read(e),i=this._editor.getVisibleRanges(),n=new Set(this.views.keys()),o=$i.ofStartAndLength(0,this._domNode.clientHeight);if(!o.isEmpty)for(const r of i){const l=new Ii(r.startLineNumber,r.endLineNumber+1),a=this.itemProvider.getIntersectingGutterItems(l,e);po(d=>{for(const c of a){if(!c.range.intersect(l))continue;n.delete(c.id);let h=this.views.get(c.id);if(h)h.item.set(c,d);else{const g=document.createElement("div");this._domNode.appendChild(g);const f=Pi("item",c),b=this.itemProvider.createView(f,g);h=new yht(f,b,g),this.views.set(c.id,h)}const u=c.range.startLineNumber<=this._editor.getModel().getLineCount()?this._editor.getTopForLineNumber(c.range.startLineNumber,!0)-t:this._editor.getBottomForLineNumber(c.range.startLineNumber-1,!1)-t,p=(c.range.endLineNumberExclusive===1?Math.max(u,this._editor.getTopForLineNumber(c.range.startLineNumber,!1)-t):Math.max(u,this._editor.getBottomForLineNumber(c.range.endLineNumberExclusive-1,!0)-t))-u;h.domNode.style.top=`${u}px`,h.domNode.style.height=`${p}px`,h.gutterItemView.layout($i.ofStartAndLength(u,p),o)}})}for(const r of n){const l=this.views.get(r);l.gutterItemView.dispose(),l.domNode.remove(),this.views.delete(r)}}}class yht{constructor(e,t,i){this.item=e,this.gutterItemView=t,this.domNode=i}}class SWe extends ZN{constructor(e){super(),this._getContext=e}runAction(e,t){const i=this._getContext();return super.runAction(e,i)}}class age extends ESe{constructor(e){super(),this._textModel=e}getValueOfRange(e){return this._textModel.getValueInRange(e)}get length(){const e=this._textModel.getLineCount(),t=this._textModel.getLineLength(e);return new tm(e-1,t)}}class Qht extends be{constructor(e,t,i={orientation:0}){super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new zje),this.onDidChangeDropdownVisibility=this._onDidChangeDropdownVisibility.event,this.disposables=this._register(new De),i.hoverDelegate=i.hoverDelegate??this._register(xy()),this.options=i,this.toggleMenuAction=this._register(new EL(()=>{var n;return(n=this.toggleMenuActionViewItem)==null?void 0:n.show()},i.toggleMenuTitle)),this.element=document.createElement("div"),this.element.className="monaco-toolbar",e.appendChild(this.element),this.actionBar=this._register(new ih(this.element,{orientation:i.orientation,ariaLabel:i.ariaLabel,actionRunner:i.actionRunner,allowContextMenu:i.allowContextMenu,highlightToggledItems:i.highlightToggledItems,hoverDelegate:i.hoverDelegate,actionViewItemProvider:(n,o)=>{if(n.id===EL.ID)return this.toggleMenuActionViewItem=new GX(n,n.menuActions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:ui.asClassNameArray(i.moreIcon??ct.toolBarMore),anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,isMenu:!0,hoverDelegate:this.options.hoverDelegate}),this.toggleMenuActionViewItem.setActionContext(this.actionBar.context),this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)),this.toggleMenuActionViewItem;if(i.actionViewItemProvider){const r=i.actionViewItemProvider(n,o);if(r)return r}if(n instanceof Ry){const r=new GX(n,n.actions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:n.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,hoverDelegate:this.options.hoverDelegate});return r.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(r),this.disposables.add(this._onDidChangeDropdownVisibility.add(r.onDidChangeVisibility)),r}}}))}set actionRunner(e){this.actionBar.actionRunner=e}get actionRunner(){return this.actionBar.actionRunner}getElement(){return this.element}getItemAction(e){return this.actionBar.getAction(e)}setActions(e,t){this.clear();const i=e?e.slice(0):[];this.hasSecondaryActions=!!(t&&t.length>0),this.hasSecondaryActions&&t&&(this.toggleMenuAction.menuActions=t.slice(0),i.push(this.toggleMenuAction)),i.forEach(n=>{this.actionBar.push(n,{icon:this.options.icon??!0,label:this.options.label??!1,keybinding:this.getKeybindingLabel(n)})})}getKeybindingLabel(e){var i,n;const t=(n=(i=this.options).getKeyBinding)==null?void 0:n.call(i,e);return(t==null?void 0:t.getLabel())??void 0}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),this.disposables.dispose(),super.dispose()}}const hz=class hz extends ac{constructor(e,t){t=t||F("moreActions","More Actions..."),super(hz.ID,t,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=e}async run(){this.toggleDropdownMenu()}get menuActions(){return this._menuActions}set menuActions(e){this._menuActions=e}};hz.ID="toolbar.toggle.more";let EL=hz;var NWe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Du=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let DL=class extends Qht{constructor(e,t,i,n,o,r,l,a){super(e,o,{getKeyBinding:c=>r.lookupKeybinding(c.id)??void 0,...t,allowContextMenu:!0,skipTelemetry:typeof(t==null?void 0:t.telemetrySource)=="string"}),this._options=t,this._menuService=i,this._contextKeyService=n,this._contextMenuService=o,this._keybindingService=r,this._commandService=l,this._sessionDisposables=this._store.add(new De);const d=t==null?void 0:t.telemetrySource;d&&this._store.add(this.actionBar.onDidRun(c=>a.publicLog2("workbenchActionExecuted",{id:c.action.id,from:d})))}setActions(e,t=[],i){var c,h,u;this._sessionDisposables.clear();const n=e.slice(),o=t.slice(),r=[];let l=0;const a=[];let d=!1;if(((c=this._options)==null?void 0:c.hiddenItemStrategy)!==-1)for(let m=0;m<n.length;m++){const p=n[m];!(p instanceof dc)&&!(p instanceof T1)||p.hideActions&&(r.push(p.hideActions.toggle),p.hideActions.toggle.checked&&l++,p.hideActions.isHidden&&(d=!0,n[m]=void 0,((h=this._options)==null?void 0:h.hiddenItemStrategy)!==0&&(a[m]=p)))}if(((u=this._options)==null?void 0:u.overflowBehavior)!==void 0){const m=Xit(new Set(this._options.overflowBehavior.exempted),Zn.map(n,f=>f==null?void 0:f.id)),p=this._options.overflowBehavior.maxItems-m.size;let g=0;for(let f=0;f<n.length;f++){const b=n[f];b&&(g++,!m.has(b.id)&&g>=p&&(n[f]=void 0,a[f]=b))}}Dce(n),Dce(a),super.setActions(n,Br.join(a,o)),(r.length>0||n.length>0)&&this._sessionDisposables.add(Te(this.getElement(),"contextmenu",m=>{var U,S,Z,R,y;const p=new _u(ai(this.getElement()),m),g=this.getItemAction(p.target);if(!g)return;p.preventDefault(),p.stopPropagation();const f=[];if(g instanceof dc&&g.menuKeybinding)f.push(g.menuKeybinding);else if(!(g instanceof T1||g instanceof EL)){const N=!!this._keybindingService.lookupKeybinding(g.id);f.push(DVe(this._commandService,this._keybindingService,g.id,void 0,N))}if(r.length>0){let N=!1;if(l===1&&((U=this._options)==null?void 0:U.hiddenItemStrategy)===0){N=!0;for(let w=0;w<r.length;w++)if(r[w].checked){r[w]=ES({id:g.id,label:g.label,checked:!0,enabled:!1,run(){}});break}}if(!N&&(g instanceof dc||g instanceof T1)){if(!g.hideActions)return;f.push(g.hideActions.hide)}else f.push(ES({id:"label",label:F("hide","Hide"),enabled:!1,run(){}}))}const b=Br.join(f,r);(S=this._options)!=null&&S.resetMenu&&!i&&(i=[this._options.resetMenu]),d&&i&&(b.push(new Br),b.push(ES({id:"resetThisMenu",label:F("resetThisMenu","Reset Menu"),run:()=>this._menuService.resetHiddenStates(i)}))),b.length!==0&&this._contextMenuService.showContextMenu({getAnchor:()=>p,getActions:()=>b,menuId:(Z=this._options)==null?void 0:Z.contextMenu,menuActionOptions:{renderShortTitle:!0,...(R=this._options)==null?void 0:R.menuOptions},skipTelemetry:typeof((y=this._options)==null?void 0:y.telemetrySource)=="string",contextKeyService:this._contextKeyService})}))}};DL=NWe([Du(2,ah),Du(3,fi),Du(4,Uc),Du(5,qn),Du(6,ks),Du(7,$l)],DL);let D5=class extends DL{constructor(e,t,i,n,o,r,l,a,d){super(e,{resetMenu:t,...i},n,o,r,l,a,d),this._onDidChangeMenuItems=this._store.add(new fe),this.onDidChangeMenuItems=this._onDidChangeMenuItems.event;const c=this._store.add(n.createMenu(t,o,{emitEventsForSubmenuChanges:!0})),h=()=>{var p,g,f;const u=[],m=[];g9(c,i==null?void 0:i.menuOptions,{primary:u,secondary:m},(p=i==null?void 0:i.toolbarOptions)==null?void 0:p.primaryGroup,(g=i==null?void 0:i.toolbarOptions)==null?void 0:g.shouldInlineSubmenu,(f=i==null?void 0:i.toolbarOptions)==null?void 0:f.useSeparatorsInPrimaryActions),e.classList.toggle("has-no-actions",u.length===0&&m.length===0),super.setActions(u,m)};this._store.add(c.onDidChange(()=>{h(),this._onDidChangeMenuItems.fire(this)})),h()}setActions(){throw new _n("This toolbar is populated from a menu.")}};D5=NWe([Du(3,ah),Du(4,fi),Du(5,Uc),Du(6,qn),Du(7,ks),Du(8,$l)],D5);var RWe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vD=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const tH=[],yI=35;let F$=class extends be{constructor(e,t,i,n,o,r,l,a,d){super(),this._diffModel=t,this._editors=i,this._options=n,this._sashLayout=o,this._boundarySashes=r,this._instantiationService=l,this._contextKeyService=a,this._menuService=d,this._menu=this._register(this._menuService.createMenu(Gt.DiffEditorHunkToolbar,this._contextKeyService)),this._actions=is(this,this._menu.onDidChange,()=>this._menu.getActions()),this._hasActions=this._actions.map(c=>c.length>0),this._showSash=Pt(this,c=>this._options.renderSideBySide.read(c)&&this._hasActions.read(c)),this.width=Pt(this,c=>this._hasActions.read(c)?yI:0),this.elements=an("div.gutter@gutter",{style:{position:"absolute",height:"100%",width:yI+"px"}},[]),this._currentDiff=Pt(this,c=>{var p;const h=this._diffModel.read(c);if(!h)return;const u=(p=h.diff.read(c))==null?void 0:p.mappings,m=this._editors.modifiedCursor.read(c);if(m)return u==null?void 0:u.find(g=>g.lineRangeMapping.modified.contains(m.lineNumber))}),this._selectedDiffs=Pt(this,c=>{const h=this._diffModel.read(c),u=h==null?void 0:h.diff.read(c);if(!u)return tH;const m=this._editors.modifiedSelections.read(c);if(m.every(b=>b.isEmpty()))return tH;const p=new Ih(m.map(b=>Ii.fromRangeInclusive(b))),f=u.mappings.filter(b=>b.lineRangeMapping.innerChanges&&p.intersects(b.lineRangeMapping.modified)).map(b=>({mapping:b,rangeMappings:b.lineRangeMapping.innerChanges.filter(U=>m.some(S=>z.areIntersecting(U.modifiedRange,S)))}));return f.length===0||f.every(b=>b.rangeMappings.length===0)?tH:f}),this._register(Kct(e,this.elements.root)),this._register(Te(this.elements.root,"click",()=>{this._editors.modified.focus()})),this._register(eb(this.elements.root,{display:this._hasActions.map(c=>c?"block":"none")})),ma(this,c=>this._showSash.read(c)?new ZWe(e,this._sashLayout.dimensions,this._options.enableSplitViewResizing,this._boundarySashes,ok(this,u=>this._sashLayout.sashLeft.read(u)-yI,(u,m)=>this._sashLayout.sashLeft.set(u+yI,m)),()=>this._sashLayout.resetSash()):void 0).recomputeInitiallyAndOnChange(this._store),this._register(new Wht(this._editors.modified,this.elements.root,{getIntersectingGutterItems:(c,h)=>{const u=this._diffModel.read(h);if(!u)return[];const m=u.diff.read(h);if(!m)return[];const p=this._selectedDiffs.read(h);if(p.length>0){const f=th.fromRangeMappings(p.flatMap(b=>b.rangeMappings));return[new dge(f,!0,Gt.DiffEditorSelectionToolbar,void 0,u.model.original.uri,u.model.modified.uri)]}const g=this._currentDiff.read(h);return m.mappings.map(f=>new dge(f.lineRangeMapping.withInnerChangesFromLineRanges(),f.lineRangeMapping===(g==null?void 0:g.lineRangeMapping),Gt.DiffEditorHunkToolbar,void 0,u.model.original.uri,u.model.modified.uri))},createView:(c,h)=>this._instantiationService.createInstance(A$,c,h,this)})),this._register(Te(this.elements.gutter,ut.MOUSE_WHEEL,c=>{this._editors.modified.getOption(104).handleMouseWheel&&this._editors.modified.delegateScrollFromMouseWheelEvent(c)},{passive:!1}))}computeStagedValue(e){const t=e.innerChanges??[],i=new age(this._editors.modifiedModel.get()),n=new age(this._editors.original.getModel());return new Kse(t.map(l=>l.toTextEdit(i))).apply(n)}layout(e){this.elements.gutter.style.left=e+"px"}};F$=RWe([vD(6,ti),vD(7,fi),vD(8,ah)],F$);class dge{constructor(e,t,i,n,o,r){this.mapping=e,this.showAlways=t,this.menuId=i,this.rangeOverride=n,this.originalUri=o,this.modifiedUri=r}get id(){return this.mapping.modified.toString()}get range(){return this.rangeOverride??this.mapping.modified}}let A$=class extends be{constructor(e,t,i,n){super(),this._item=e,this._elements=an("div.gutterItem",{style:{height:"20px",width:"34px"}},[an("div.background@background",{},[]),an("div.buttons@buttons",{},[])]),this._showAlways=this._item.map(this,r=>r.showAlways),this._menuId=this._item.map(this,r=>r.menuId),this._isSmall=Pi(this,!1),this._lastItemRange=void 0,this._lastViewRange=void 0;const o=this._register(n.createInstance(wy,"element",!0,{position:{hoverPosition:1}}));this._register(CW(t,this._elements.root)),this._register(yi(r=>{const l=this._showAlways.read(r);this._elements.root.classList.toggle("noTransition",!0),this._elements.root.classList.toggle("showAlways",l),setTimeout(()=>{this._elements.root.classList.toggle("noTransition",!1)},0)})),this._register(Wd((r,l)=>{this._elements.buttons.replaceChildren();const a=l.add(n.createInstance(D5,this._elements.buttons,this._menuId.read(r),{orientation:1,hoverDelegate:o,toolbarOptions:{primaryGroup:d=>d.startsWith("primary")},overflowBehavior:{maxItems:this._isSmall.read(r)?1:3},hiddenItemStrategy:0,actionRunner:new SWe(()=>{const d=this._item.get(),c=d.mapping;return{mapping:c,originalWithModifiedChanges:i.computeStagedValue(c),originalUri:d.originalUri,modifiedUri:d.modifiedUri}}),menuOptions:{shouldForwardArgs:!0}}));l.add(a.onDidChangeMenuItems(()=>{this._lastItemRange&&this.layout(this._lastItemRange,this._lastViewRange)}))}))}layout(e,t){this._lastItemRange=e,this._lastViewRange=t;let i=this._elements.buttons.clientHeight;this._isSmall.set(this._item.get().mapping.original.startLineNumber===1&&e.length<30,void 0),i=this._elements.buttons.clientHeight;const n=e.length/2-i/2,o=i;let r=e.start+n;const l=$i.tryCreate(o,t.endExclusive-o-i),a=$i.tryCreate(e.start+o,e.endExclusive-i-o);a&&l&&a.start<a.endExclusive&&(r=l.clip(r),r=a.clip(r)),this._elements.buttons.style.top=`${r-e.start}px`}};A$=RWe([vD(3,ti)],A$);function oc(s){return Z$.get(s)}const fU=class fU extends be{static get(e){let t=fU._map.get(e);if(!t){t=new fU(e),fU._map.set(e,t);const i=e.onDidDispose(()=>{const n=fU._map.get(e);n&&(fU._map.delete(e),n.dispose(),i.dispose())})}return t}_beginUpdate(){this._updateCounter++,this._updateCounter===1&&(this._currentTransaction=new ZM(()=>{}))}_endUpdate(){if(this._updateCounter--,this._updateCounter===0){const e=this._currentTransaction;this._currentTransaction=void 0,e.finish()}}constructor(e){var t;super(),this.editor=e,this._updateCounter=0,this._currentTransaction=void 0,this._model=Pi(this,this.editor.getModel()),this.model=this._model,this.isReadonly=is(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(92)),this._versionId=W6({owner:this,lazy:!0},((t=this.editor.getModel())==null?void 0:t.getVersionId())??null),this.versionId=this._versionId,this._selections=W6({owner:this,equalsFn:N6(IX(_t.selectionsEqual)),lazy:!0},this.editor.getSelections()??null),this.selections=this._selections,this.isFocused=is(this,i=>{const n=this.editor.onDidFocusEditorWidget(i),o=this.editor.onDidBlurEditorWidget(i);return{dispose(){n.dispose(),o.dispose()}}},()=>this.editor.hasWidgetFocus()),this.value=ok(this,i=>{var n;return this.versionId.read(i),((n=this.model.read(i))==null?void 0:n.getValue())??""},(i,n)=>{const o=this.model.get();o!==null&&i!==o.getValue()&&o.setValue(i)}),this.valueIsEmpty=Pt(this,i=>{var n;return this.versionId.read(i),((n=this.editor.getModel())==null?void 0:n.getValueLength())===0}),this.cursorSelection=Yc({owner:this,equalsFn:N6(_t.selectionsEqual)},i=>{var n;return((n=this.selections.read(i))==null?void 0:n[0])??null}),this.onDidType=SM(this),this.scrollTop=is(this.editor.onDidScrollChange,()=>this.editor.getScrollTop()),this.scrollLeft=is(this.editor.onDidScrollChange,()=>this.editor.getScrollLeft()),this.layoutInfo=is(this.editor.onDidLayoutChange,()=>this.editor.getLayoutInfo()),this.layoutInfoContentLeft=this.layoutInfo.map(i=>i.contentLeft),this.layoutInfoDecorationsLeft=this.layoutInfo.map(i=>i.decorationsLeft),this.contentWidth=is(this.editor.onDidContentSizeChange,()=>this.editor.getContentWidth()),this._overlayWidgetCounter=0,this._register(this.editor.onBeginUpdate(()=>this._beginUpdate())),this._register(this.editor.onEndUpdate(()=>this._endUpdate())),this._register(this.editor.onDidChangeModel(()=>{this._beginUpdate();try{this._model.set(this.editor.getModel(),this._currentTransaction),this._forceUpdate()}finally{this._endUpdate()}})),this._register(this.editor.onDidType(i=>{this._beginUpdate();try{this._forceUpdate(),this.onDidType.trigger(this._currentTransaction,i)}finally{this._endUpdate()}})),this._register(this.editor.onDidChangeModelContent(i=>{var n;this._beginUpdate();try{this._versionId.set(((n=this.editor.getModel())==null?void 0:n.getVersionId())??null,this._currentTransaction,i),this._forceUpdate()}finally{this._endUpdate()}})),this._register(this.editor.onDidChangeCursorSelection(i=>{this._beginUpdate();try{this._selections.set(this.editor.getSelections(),this._currentTransaction,i),this._forceUpdate()}finally{this._endUpdate()}}))}forceUpdate(e){this._beginUpdate();try{return this._forceUpdate(),e?e(this._currentTransaction):void 0}finally{this._endUpdate()}}_forceUpdate(){var e;this._beginUpdate();try{this._model.set(this.editor.getModel(),this._currentTransaction),this._versionId.set(((e=this.editor.getModel())==null?void 0:e.getVersionId())??null,this._currentTransaction,void 0),this._selections.set(this.editor.getSelections(),this._currentTransaction,void 0)}finally{this._endUpdate()}}getOption(e){return is(this,t=>this.editor.onDidChangeConfiguration(i=>{i.hasChanged(e)&&t(void 0)}),()=>this.editor.getOption(e))}setDecorations(e){const t=new De,i=this.editor.createDecorationsCollection();return t.add(rk({owner:this,debugName:()=>`Apply decorations from ${e.debugName}`},n=>{const o=e.read(n);i.set(o)})),t.add({dispose:()=>{i.clear()}}),t}createOverlayWidget(e){const t="observableOverlayWidget"+this._overlayWidgetCounter++,i={getDomNode:()=>e.domNode,getPosition:()=>e.position.get(),getId:()=>t,allowEditorOverflow:e.allowEditorOverflow,getMinContentWidthInPx:()=>e.minContentWidthInPx.get()};this.editor.addOverlayWidget(i);const n=yi(o=>{e.position.read(o),e.minContentWidthInPx.read(o),this.editor.layoutOverlayWidget(i)});return ei(()=>{n.dispose(),this.editor.removeOverlayWidget(i)})}};fU._map=new Map;let Z$=fU;function S$(s,e){return $et({createEmptyChangeSummary:()=>({deltas:[],didChange:!1}),handleChange:(t,i)=>{if(t.didChange(s)){const n=t.change;n!==void 0&&i.deltas.push(n),i.didChange=!0}return!0}},(t,i)=>{const n=s.read(t);i.didChange&&e(n,i.deltas)})}function Mht(s,e){const t=new De,i=S$(s,(n,o)=>{t.clear(),e(n,o,t)});return{dispose(){i.dispose(),t.dispose()}}}var wht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Tht=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},kD,UQ;let G5=(UQ=class extends be{static setBreadcrumbsSourceFactory(e){this._breadcrumbsSourceFactory.set(e,void 0)}get isUpdatingHiddenAreas(){return this._isUpdatingHiddenAreas}constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._instantiationService=n,this._modifiedOutlineSource=ma(this,a=>{const d=this._editors.modifiedModel.read(a),c=kD._breadcrumbsSourceFactory.read(a);return!d||!c?void 0:c(d,this._instantiationService)}),this._isUpdatingHiddenAreas=!1,this._register(this._editors.original.onDidChangeCursorPosition(a=>{if(a.reason===1)return;const d=this._diffModel.get();po(c=>{for(const h of this._editors.original.getSelections()||[])d==null||d.ensureOriginalLineIsVisible(h.getStartPosition().lineNumber,0,c),d==null||d.ensureOriginalLineIsVisible(h.getEndPosition().lineNumber,0,c)})})),this._register(this._editors.modified.onDidChangeCursorPosition(a=>{if(a.reason===1)return;const d=this._diffModel.get();po(c=>{for(const h of this._editors.modified.getSelections()||[])d==null||d.ensureModifiedLineIsVisible(h.getStartPosition().lineNumber,0,c),d==null||d.ensureModifiedLineIsVisible(h.getEndPosition().lineNumber,0,c)})}));const o=this._diffModel.map((a,d)=>{var h;const c=(a==null?void 0:a.unchangedRegions.read(d))??[];return c.length===1&&c[0].modifiedLineNumber===1&&c[0].lineCount===((h=this._editors.modifiedModel.read(d))==null?void 0:h.getLineCount())?[]:c});this.viewZones=nA(this,(a,d)=>{const c=this._modifiedOutlineSource.read(a);if(!c)return{origViewZones:[],modViewZones:[]};const h=[],u=[],m=this._options.renderSideBySide.read(a),p=this._options.compactMode.read(a),g=o.read(a);for(let f=0;f<g.length;f++){const b=g[f];if(!b.shouldHideControls(a)&&!(p&&(f===0||f===g.length-1)))if(p){{const U=Pt(this,Z=>b.getHiddenOriginalRange(Z).startLineNumber-1),S=new BW(U,12);h.push(S),d.add(new cge(this._editors.original,S,b,!m))}{const U=Pt(this,Z=>b.getHiddenModifiedRange(Z).startLineNumber-1),S=new BW(U,12);u.push(S),d.add(new cge(this._editors.modified,S,b))}}else{{const U=Pt(this,Z=>b.getHiddenOriginalRange(Z).startLineNumber-1),S=new BW(U,24);h.push(S),d.add(new hge(this._editors.original,S,b,b.originalUnchangedRange,!m,c,Z=>this._diffModel.get().ensureModifiedLineIsVisible(Z,2,void 0),this._options))}{const U=Pt(this,Z=>b.getHiddenModifiedRange(Z).startLineNumber-1),S=new BW(U,24);u.push(S),d.add(new hge(this._editors.modified,S,b,b.modifiedUnchangedRange,!1,c,Z=>this._diffModel.get().ensureModifiedLineIsVisible(Z,2,void 0),this._options))}}}return{origViewZones:h,modViewZones:u}});const r={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},l={description:"Fold Unchanged",glyphMarginHoverMessage:new _l(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown(F("foldUnchanged","Fold Unchanged Region")),glyphMarginClassName:"fold-unchanged "+ui.asClassName(ct.fold),zIndex:10001};this._register(v5(this._editors.original,Pt(this,a=>{const d=o.read(a),c=d.map(h=>({range:h.originalUnchangedRange.toInclusiveRange(),options:r}));for(const h of d)h.shouldHideControls(a)&&c.push({range:z.fromPositions(new ge(h.originalLineNumber,1)),options:l});return c}))),this._register(v5(this._editors.modified,Pt(this,a=>{const d=o.read(a),c=d.map(h=>({range:h.modifiedUnchangedRange.toInclusiveRange(),options:r}));for(const h of d)h.shouldHideControls(a)&&c.push({range:Ii.ofLength(h.modifiedLineNumber,1).toInclusiveRange(),options:l});return c}))),this._register(yi(a=>{const d=o.read(a);this._isUpdatingHiddenAreas=!0;try{this._editors.original.setHiddenAreas(d.map(c=>c.getHiddenOriginalRange(a).toInclusiveRange()).filter(Lg)),this._editors.modified.setHiddenAreas(d.map(c=>c.getHiddenModifiedRange(a).toInclusiveRange()).filter(Lg))}finally{this._isUpdatingHiddenAreas=!1}})),this._register(this._editors.modified.onMouseUp(a=>{var d;if(!a.event.rightButton&&a.target.position&&((d=a.target.element)!=null&&d.className.includes("fold-unchanged"))){const c=a.target.position.lineNumber,h=this._diffModel.get();if(!h)return;const u=h.unchangedRegions.get().find(m=>m.modifiedUnchangedRange.includes(c));if(!u)return;u.collapseAll(void 0),a.event.stopPropagation(),a.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(a=>{var d;if(!a.event.rightButton&&a.target.position&&((d=a.target.element)!=null&&d.className.includes("fold-unchanged"))){const c=a.target.position.lineNumber,h=this._diffModel.get();if(!h)return;const u=h.unchangedRegions.get().find(m=>m.originalUnchangedRange.includes(c));if(!u)return;u.collapseAll(void 0),a.event.stopPropagation(),a.event.preventDefault()}}))}},kD=UQ,UQ._breadcrumbsSourceFactory=Pi(kD,()=>({dispose(){},getBreadcrumbItems(e,t){return[]}})),UQ);G5=kD=wht([Tht(3,ti)],G5);class cge extends Ere{constructor(e,t,i,n=!1){const o=an("div.diff-hidden-lines-widget");super(e,t,o.root),this._unchangedRegion=i,this._hide=n,this._nodes=an("div.diff-hidden-lines-compact",[an("div.line-left",[]),an("div.text@text",[]),an("div.line-right",[])]),o.root.appendChild(this._nodes.root),this._hide&&this._nodes.root.replaceChildren(),this._register(yi(r=>{if(!this._hide){const l=this._unchangedRegion.getHiddenModifiedRange(r).length,a=F("hiddenLines","{0} hidden lines",l);this._nodes.text.innerText=a}}))}}class hge extends Ere{constructor(e,t,i,n,o,r,l,a){const d=an("div.diff-hidden-lines-widget");super(e,t,d.root),this._editor=e,this._unchangedRegion=i,this._unchangedRegionRange=n,this._hide=o,this._modifiedOutlineSource=r,this._revealModifiedHiddenLine=l,this._options=a,this._nodes=an("div.diff-hidden-lines",[an("div.top@top",{title:F("diff.hiddenLines.top","Click or drag to show more above")}),an("div.center@content",{style:{display:"flex"}},[an("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[gt("a",{title:F("showUnchangedRegion","Show Unchanged Region"),role:"button",onclick:()=>{this._unchangedRegion.showAll(void 0)}},...SF("$(unfold)"))]),an("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),an("div.bottom@bottom",{title:F("diff.bottom","Click or drag to show more below"),role:"button"})]),d.root.appendChild(this._nodes.root),this._hide?cl(this._nodes.first):this._register(eb(this._nodes.first,{width:oc(this._editor).layoutInfoContentLeft})),this._register(yi(h=>{const u=this._unchangedRegion.visibleLineCountTop.read(h)+this._unchangedRegion.visibleLineCountBottom.read(h)===this._unchangedRegion.lineCount;this._nodes.bottom.classList.toggle("canMoveTop",!u),this._nodes.bottom.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(h)>0),this._nodes.top.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(h)>0),this._nodes.top.classList.toggle("canMoveBottom",!u);const m=this._unchangedRegion.isDragged.read(h),p=this._editor.getDomNode();p&&(p.classList.toggle("draggingUnchangedRegion",!!m),m==="top"?(p.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(h)>0),p.classList.toggle("canMoveBottom",!u)):m==="bottom"?(p.classList.toggle("canMoveTop",!u),p.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(h)>0)):(p.classList.toggle("canMoveTop",!1),p.classList.toggle("canMoveBottom",!1)))}));const c=this._editor;this._register(Te(this._nodes.top,"mousedown",h=>{if(h.button!==0)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),h.preventDefault();const u=h.clientY;let m=!1;const p=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set("top",void 0);const g=ai(this._nodes.top),f=Te(g,"mousemove",U=>{const Z=U.clientY-u;m=m||Math.abs(Z)>2;const R=Math.round(Z/c.getOption(67)),y=Math.max(0,Math.min(p+R,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(y,void 0)}),b=Te(g,"mouseup",U=>{m||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),this._unchangedRegion.isDragged.set(void 0,void 0),f.dispose(),b.dispose()})})),this._register(Te(this._nodes.bottom,"mousedown",h=>{if(h.button!==0)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),h.preventDefault();const u=h.clientY;let m=!1;const p=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set("bottom",void 0);const g=ai(this._nodes.bottom),f=Te(g,"mousemove",U=>{const Z=U.clientY-u;m=m||Math.abs(Z)>2;const R=Math.round(Z/c.getOption(67)),y=Math.max(0,Math.min(p-R,this._unchangedRegion.getMaxVisibleLineCountBottom())),N=this._unchangedRegionRange.endLineNumberExclusive>c.getModel().getLineCount()?c.getContentHeight():c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(y,void 0);const w=this._unchangedRegionRange.endLineNumberExclusive>c.getModel().getLineCount()?c.getContentHeight():c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);c.setScrollTop(c.getScrollTop()+(w-N))}),b=Te(g,"mouseup",U=>{if(this._unchangedRegion.isDragged.set(void 0,void 0),!m){const S=c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const Z=c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);c.setScrollTop(c.getScrollTop()+(Z-S))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),f.dispose(),b.dispose()})})),this._register(yi(h=>{const u=[];if(!this._hide){const m=i.getHiddenModifiedRange(h).length,p=F("hiddenLines","{0} hidden lines",m),g=gt("span",{title:F("diff.hiddenLines.expandAll","Double click to unfold")},p);g.addEventListener("dblclick",U=>{U.button===0&&(U.preventDefault(),this._unchangedRegion.showAll(void 0))}),u.push(g);const f=this._unchangedRegion.getHiddenModifiedRange(h),b=this._modifiedOutlineSource.getBreadcrumbItems(f,h);if(b.length>0){u.push(gt("span",void 0," | "));for(let U=0;U<b.length;U++){const S=b[U],Z=eX.toIcon(S.kind),R=an("div.breadcrumb-item",{style:{display:"flex",alignItems:"center"}},[RN(Z)," ",S.name,...U===b.length-1?[]:[RN(ct.chevronRight)]]).root;u.push(R),R.onclick=()=>{this._revealModifiedHiddenLine(S.startLineNumber)}}}}cl(this._nodes.others,...u)}))}}var Cht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Bht=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},ym,uF;let GL=(uF=class extends be{constructor(e,t,i,n,o,r,l){super(),this._editors=e,this._rootElement=t,this._diffModel=i,this._rootWidth=n,this._rootHeight=o,this._modifiedEditorLayoutInfo=r,this._themeService=l,this.width=ym.ENTIRE_DIFF_OVERVIEW_WIDTH;const a=is(this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme()),d=Pt(u=>{const m=a.read(u),p=m.getColor(H8e)||(m.getColor(j8e)||_8).transparent(2),g=m.getColor(K8e)||(m.getColor(P8e)||z8).transparent(2);return{insertColor:p,removeColor:g}}),c=Kn(document.createElement("div"));c.setClassName("diffViewport"),c.setPosition("absolute");const h=an("div.diffOverview",{style:{position:"absolute",top:"0px",width:ym.ENTIRE_DIFF_OVERVIEW_WIDTH+"px"}}).root;this._register(CW(h,c.domNode)),this._register(Fo(h,ut.POINTER_DOWN,u=>{this._editors.modified.delegateVerticalScrollbarPointerDown(u)})),this._register(Te(h,ut.MOUSE_WHEEL,u=>{this._editors.modified.delegateScrollFromMouseWheelEvent(u)},{passive:!1})),this._register(CW(this._rootElement,h)),this._register(Wd((u,m)=>{const p=this._diffModel.read(u),g=this._editors.original.createOverviewRuler("original diffOverviewRuler");g&&(m.add(g),m.add(CW(h,g.getDomNode())));const f=this._editors.modified.createOverviewRuler("modified diffOverviewRuler");if(f&&(m.add(f),m.add(CW(h,f.getDomNode()))),!g||!f)return;const b=Vl("viewZoneChanged",this._editors.original.onDidChangeViewZones),U=Vl("viewZoneChanged",this._editors.modified.onDidChangeViewZones),S=Vl("hiddenRangesChanged",this._editors.original.onDidChangeHiddenAreas),Z=Vl("hiddenRangesChanged",this._editors.modified.onDidChangeHiddenAreas);m.add(yi(R=>{var v;b.read(R),U.read(R),S.read(R),Z.read(R);const y=d.read(R),N=(v=p==null?void 0:p.diff.read(R))==null?void 0:v.mappings;function w(Y,J,k){const E=k._getViewModel();return E?Y.filter(K=>K.length>0).map(K=>{const de=E.coordinatesConverter.convertModelPositionToViewPosition(new ge(K.startLineNumber,1)),ee=E.coordinatesConverter.convertModelPositionToViewPosition(new ge(K.endLineNumberExclusive,1)),le=ee.lineNumber-de.lineNumber;return new hWe(de.lineNumber,ee.lineNumber,le,J.toString())}):[]}const Q=w((N||[]).map(Y=>Y.lineRangeMapping.original),y.removeColor,this._editors.original),C=w((N||[]).map(Y=>Y.lineRangeMapping.modified),y.insertColor,this._editors.modified);g==null||g.setZones(Q),f==null||f.setZones(C)})),m.add(yi(R=>{const y=this._rootHeight.read(R),N=this._rootWidth.read(R),w=this._modifiedEditorLayoutInfo.read(R);if(w){const Q=ym.ENTIRE_DIFF_OVERVIEW_WIDTH-2*ym.ONE_OVERVIEW_WIDTH;g.setLayout({top:0,height:y,right:Q+ym.ONE_OVERVIEW_WIDTH,width:ym.ONE_OVERVIEW_WIDTH}),f.setLayout({top:0,height:y,right:0,width:ym.ONE_OVERVIEW_WIDTH});const C=this._editors.modifiedScrollTop.read(R),v=this._editors.modifiedScrollHeight.read(R),Y=this._editors.modified.getOption(104),J=new Cy(Y.verticalHasArrows?Y.arrowSize:0,Y.verticalScrollbarSize,0,w.height,v,C);c.setTop(J.getSliderPosition()),c.setHeight(J.getSliderSize())}else c.setTop(0),c.setHeight(0);h.style.height=y+"px",h.style.left=N-ym.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",c.setWidth(ym.ENTIRE_DIFF_OVERVIEW_WIDTH)}))}))}},ym=uF,uF.ONE_OVERVIEW_WIDTH=15,uF.ENTIRE_DIFF_OVERVIEW_WIDTH=uF.ONE_OVERVIEW_WIDTH*2,uF);GL=ym=Cht([Bht(6,Rr)],GL);const iH=[];class Lht extends be{constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._widget=n,this._selectedDiffs=Pt(this,o=>{const r=this._diffModel.read(o),l=r==null?void 0:r.diff.read(o);if(!l)return iH;const a=this._editors.modifiedSelections.read(o);if(a.every(u=>u.isEmpty()))return iH;const d=new Ih(a.map(u=>Ii.fromRangeInclusive(u))),h=l.mappings.filter(u=>u.lineRangeMapping.innerChanges&&d.intersects(u.lineRangeMapping.modified)).map(u=>({mapping:u,rangeMappings:u.lineRangeMapping.innerChanges.filter(m=>a.some(p=>z.areIntersecting(m.modifiedRange,p)))}));return h.length===0||h.every(u=>u.rangeMappings.length===0)?iH:h}),this._register(Wd((o,r)=>{if(!this._options.shouldRenderOldRevertArrows.read(o))return;const l=this._diffModel.read(o),a=l==null?void 0:l.diff.read(o);if(!l||!a||l.movedTextToCompare.read(o))return;const d=[],c=this._selectedDiffs.read(o),h=new Set(c.map(u=>u.mapping));if(c.length>0){const u=this._editors.modifiedSelections.read(o),m=r.add(new J5(u[u.length-1].positionLineNumber,this._widget,c.flatMap(p=>p.rangeMappings),!0));this._editors.modified.addGlyphMarginWidget(m),d.push(m)}for(const u of a.mappings)if(!h.has(u)&&!u.lineRangeMapping.modified.isEmpty&&u.lineRangeMapping.innerChanges){const m=r.add(new J5(u.lineRangeMapping.modified.startLineNumber,this._widget,u.lineRangeMapping,!1));this._editors.modified.addGlyphMarginWidget(m),d.push(m)}r.add(ei(()=>{for(const u of d)this._editors.modified.removeGlyphMarginWidget(u)}))}))}}const uz=class uz extends be{getId(){return this._id}constructor(e,t,i,n){super(),this._lineNumber=e,this._widget=t,this._diffs=i,this._revertSelection=n,this._id=`revertButton${uz.counter++}`,this._domNode=an("div.revertButton",{title:this._revertSelection?F("revertSelectedChanges","Revert Selected Changes"):F("revertChange","Revert Change")},[RN(ct.arrowRight)]).root,this._register(Te(this._domNode,ut.MOUSE_DOWN,o=>{o.button!==2&&(o.stopPropagation(),o.preventDefault())})),this._register(Te(this._domNode,ut.MOUSE_UP,o=>{o.stopPropagation(),o.preventDefault()})),this._register(Te(this._domNode,ut.CLICK,o=>{this._diffs instanceof ga?this._widget.revert(this._diffs):this._widget.revertRangeMappings(this._diffs),o.stopPropagation(),o.preventDefault()}))}getDomNode(){return this._domNode}getPosition(){return{lane:em.Right,range:{startColumn:1,startLineNumber:this._lineNumber,endColumn:1,endLineNumber:this._lineNumber},zIndex:10001}}};uz.counter=0;let J5=uz;function vht(s,e,t){return ttt({debugName:()=>`Configuration Key "${s}"`},i=>t.onDidChangeConfiguration(n=>{n.affectsConfiguration(s)&&i(n)}),()=>t.getValue(s)??e)}function Cm(s,e,t){const i=s.bindTo(e);return rk({debugName:()=>`Set Context Key "${s.key}"`},n=>{i.set(t(n))})}var kht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},uge=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let N$=class extends be{get onDidContentSizeChange(){return this._onDidContentSizeChange.event}constructor(e,t,i,n,o,r,l){super(),this.originalEditorElement=e,this.modifiedEditorElement=t,this._options=i,this._argCodeEditorWidgetOptions=n,this._createInnerEditor=o,this._instantiationService=r,this._keybindingService=l,this.original=this._register(this._createLeftHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.modifiedEditor||{})),this._onDidContentSizeChange=this._register(new fe),this.modifiedScrollTop=is(this,this.modified.onDidScrollChange,()=>this.modified.getScrollTop()),this.modifiedScrollHeight=is(this,this.modified.onDidScrollChange,()=>this.modified.getScrollHeight()),this.modifiedObs=oc(this.modified),this.originalObs=oc(this.original),this.modifiedModel=this.modifiedObs.model,this.modifiedSelections=is(this,this.modified.onDidChangeCursorSelection,()=>this.modified.getSelections()??[]),this.modifiedCursor=Yc({owner:this,equalsFn:ge.equals},a=>{var d;return((d=this.modifiedSelections.read(a)[0])==null?void 0:d.getPosition())??new ge(1,1)}),this.originalCursor=is(this,this.original.onDidChangeCursorPosition,()=>this.original.getPosition()??new ge(1,1)),this._argCodeEditorWidgetOptions=null,this._register(lk({createEmptyChangeSummary:()=>({}),handleChange:(a,d)=>(a.didChange(i.editorOptions)&&Object.assign(d,a.change.changedOptions),!0)},(a,d)=>{i.editorOptions.read(a),this._options.renderSideBySide.read(a),this.modified.updateOptions(this._adjustOptionsForRightHandSide(a,d)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(a,d))}))}_createLeftHandSideEditor(e,t){const i=this._adjustOptionsForLeftHandSide(void 0,e),n=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,i,t);return n.setContextValue("isInDiffLeftEditor",!0),n}_createRightHandSideEditor(e,t){const i=this._adjustOptionsForRightHandSide(void 0,e),n=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,i,t);return n.setContextValue("isInDiffRightEditor",!0),n}_constructInnerEditor(e,t,i,n){const o=this._createInnerEditor(e,t,i,n);return this._register(o.onDidContentSizeChange(r=>{const l=this.original.getContentWidth()+this.modified.getContentWidth()+GL.ENTIRE_DIFF_OVERVIEW_WIDTH,a=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:a,contentWidth:l,contentHeightChanged:r.contentHeightChanged,contentWidthChanged:r.contentWidthChanged})})),o}_adjustOptionsForLeftHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return this._options.renderSideBySide.get()?(i.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},i.wordWrapOverride1=this._options.diffWordWrap.get()):(i.wordWrapOverride1="off",i.wordWrapOverride2="off",i.stickyScroll={enabled:!1},i.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),i.glyphMargin=this._options.renderSideBySide.get(),t.originalAriaLabel&&(i.ariaLabel=t.originalAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.readOnly=!this._options.originalEditable.get(),i.dropIntoEditor={enabled:!i.readOnly},i.extraEditorClassName="original-in-monaco-diff-editor",i}_adjustOptionsForRightHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return t.modifiedAriaLabel&&(i.ariaLabel=t.modifiedAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.wordWrapOverride1=this._options.diffWordWrap.get(),i.revealHorizontalRightPadding=Up.revealHorizontalRightPadding.defaultValue+GL.ENTIRE_DIFF_OVERVIEW_WIDTH,i.scrollbar.verticalHasArrows=!1,i.extraEditorClassName="modified-in-monaco-diff-editor",i}_adjustOptionsForSubEditor(e){const t={...e,dimension:{height:0,width:0}};return t.inDiffEditor=!0,t.automaticLayout=!1,t.scrollbar={...t.scrollbar||{}},t.folding=!1,t.codeLens=this._options.diffCodeLens.get(),t.fixedOverflowWidgets=!0,t.minimap={...t.minimap||{}},t.minimap.enabled=!1,this._options.hideUnchangedRegions.get()?t.stickyScroll={enabled:!1}:t.stickyScroll=this._options.editorOptions.get().stickyScroll,t}_updateAriaLabel(e){var i;e||(e="");const t=F("diff-aria-navigation-tip"," use {0} to open the accessibility help.",(i=this._keybindingService.lookupKeybinding("editor.action.accessibilityHelp"))==null?void 0:i.getAriaLabel());return this._options.accessibilityVerbose.get()?e+t:e?e.replaceAll(t,""):""}};N$=kht([uge(5,ti),uge(6,qn)],N$);const mz=class mz extends be{constructor(){super(...arguments),this._id=++mz.idCounter,this._onDidDispose=this._register(new fe),this.onDidDispose=this._onDidDispose.event}getId(){return this.getEditorType()+":v2:"+this._id}getVisibleColumnFromPosition(e){return this._targetEditor.getVisibleColumnFromPosition(e)}getPosition(){return this._targetEditor.getPosition()}setPosition(e,t="api"){this._targetEditor.setPosition(e,t)}revealLine(e,t=0){this._targetEditor.revealLine(e,t)}revealLineInCenter(e,t=0){this._targetEditor.revealLineInCenter(e,t)}revealLineInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealLineInCenterIfOutsideViewport(e,t)}revealLineNearTop(e,t=0){this._targetEditor.revealLineNearTop(e,t)}revealPosition(e,t=0){this._targetEditor.revealPosition(e,t)}revealPositionInCenter(e,t=0){this._targetEditor.revealPositionInCenter(e,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealPositionInCenterIfOutsideViewport(e,t)}revealPositionNearTop(e,t=0){this._targetEditor.revealPositionNearTop(e,t)}getSelection(){return this._targetEditor.getSelection()}getSelections(){return this._targetEditor.getSelections()}setSelection(e,t="api"){this._targetEditor.setSelection(e,t)}setSelections(e,t="api"){this._targetEditor.setSelections(e,t)}revealLines(e,t,i=0){this._targetEditor.revealLines(e,t,i)}revealLinesInCenter(e,t,i=0){this._targetEditor.revealLinesInCenter(e,t,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this._targetEditor.revealLinesInCenterIfOutsideViewport(e,t,i)}revealLinesNearTop(e,t,i=0){this._targetEditor.revealLinesNearTop(e,t,i)}revealRange(e,t=0,i=!1,n=!0){this._targetEditor.revealRange(e,t,i,n)}revealRangeInCenter(e,t=0){this._targetEditor.revealRangeInCenter(e,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealRangeInCenterIfOutsideViewport(e,t)}revealRangeNearTop(e,t=0){this._targetEditor.revealRangeNearTop(e,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this._targetEditor.revealRangeNearTopIfOutsideViewport(e,t)}revealRangeAtTop(e,t=0){this._targetEditor.revealRangeAtTop(e,t)}getSupportedActions(){return this._targetEditor.getSupportedActions()}focus(){this._targetEditor.focus()}trigger(e,t,i){this._targetEditor.trigger(e,t,i)}createDecorationsCollection(e){return this._targetEditor.createDecorationsCollection(e)}changeDecorations(e){return this._targetEditor.changeDecorations(e)}};mz.idCounter=0;let R$=mz;var xht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Iht=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let V$=class{get editorOptions(){return this._options}constructor(e,t){this._accessibilityService=t,this._diffEditorWidth=Pi(this,0),this._screenReaderMode=is(this,this._accessibilityService.onDidChangeScreenReaderOptimized,()=>this._accessibilityService.isScreenReaderOptimized()),this.couldShowInlineViewBecauseOfSize=Pt(this,n=>this._options.read(n).renderSideBySide&&this._diffEditorWidth.read(n)<=this._options.read(n).renderSideBySideInlineBreakpoint),this.renderOverviewRuler=Pt(this,n=>this._options.read(n).renderOverviewRuler),this.renderSideBySide=Pt(this,n=>this.compactMode.read(n)&&this.shouldRenderInlineViewInSmartMode.read(n)?!1:this._options.read(n).renderSideBySide&&!(this._options.read(n).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(n)&&!this._screenReaderMode.read(n))),this.readOnly=Pt(this,n=>this._options.read(n).readOnly),this.shouldRenderOldRevertArrows=Pt(this,n=>!(!this._options.read(n).renderMarginRevertIcon||!this.renderSideBySide.read(n)||this.readOnly.read(n)||this.shouldRenderGutterMenu.read(n))),this.shouldRenderGutterMenu=Pt(this,n=>this._options.read(n).renderGutterMenu),this.renderIndicators=Pt(this,n=>this._options.read(n).renderIndicators),this.enableSplitViewResizing=Pt(this,n=>this._options.read(n).enableSplitViewResizing),this.splitViewDefaultRatio=Pt(this,n=>this._options.read(n).splitViewDefaultRatio),this.ignoreTrimWhitespace=Pt(this,n=>this._options.read(n).ignoreTrimWhitespace),this.maxComputationTimeMs=Pt(this,n=>this._options.read(n).maxComputationTime),this.showMoves=Pt(this,n=>this._options.read(n).experimental.showMoves&&this.renderSideBySide.read(n)),this.isInEmbeddedEditor=Pt(this,n=>this._options.read(n).isInEmbeddedEditor),this.diffWordWrap=Pt(this,n=>this._options.read(n).diffWordWrap),this.originalEditable=Pt(this,n=>this._options.read(n).originalEditable),this.diffCodeLens=Pt(this,n=>this._options.read(n).diffCodeLens),this.accessibilityVerbose=Pt(this,n=>this._options.read(n).accessibilityVerbose),this.diffAlgorithm=Pt(this,n=>this._options.read(n).diffAlgorithm),this.showEmptyDecorations=Pt(this,n=>this._options.read(n).experimental.showEmptyDecorations),this.onlyShowAccessibleDiffViewer=Pt(this,n=>this._options.read(n).onlyShowAccessibleDiffViewer),this.compactMode=Pt(this,n=>this._options.read(n).compactMode),this.trueInlineDiffRenderingEnabled=Pt(this,n=>this._options.read(n).experimental.useTrueInlineView),this.useTrueInlineDiffRendering=Pt(this,n=>!this.renderSideBySide.read(n)&&this.trueInlineDiffRenderingEnabled.read(n)),this.hideUnchangedRegions=Pt(this,n=>this._options.read(n).hideUnchangedRegions.enabled),this.hideUnchangedRegionsRevealLineCount=Pt(this,n=>this._options.read(n).hideUnchangedRegions.revealLineCount),this.hideUnchangedRegionsContextLineCount=Pt(this,n=>this._options.read(n).hideUnchangedRegions.contextLineCount),this.hideUnchangedRegionsMinimumLineCount=Pt(this,n=>this._options.read(n).hideUnchangedRegions.minimumLineCount),this._model=Pi(this,void 0),this.shouldRenderInlineViewInSmartMode=this._model.map(this,n=>ott(this,o=>{const r=n==null?void 0:n.diff.read(o);return r?Eht(r,this.trueInlineDiffRenderingEnabled.read(o)):void 0})).flatten().map(this,n=>!!n),this.inlineViewHideOriginalLineNumbers=this.compactMode;const i={...e,...mge(e,fl)};this._options=Pi(this,i)}updateOptions(e){const t=mge(e,this._options.get()),i={...this._options.get(),...e,...t};this._options.set(i,void 0,{changedOptions:e})}setWidth(e){this._diffEditorWidth.set(e,void 0)}setModel(e){this._model.set(e,void 0)}};V$=xht([Iht(1,Fc)],V$);function Eht(s,e){return s.mappings.every(t=>Dht(t.lineRangeMapping)||Ght(t.lineRangeMapping)||e&&jre(t.lineRangeMapping))}function Dht(s){return s.original.length===0}function Ght(s){return s.modified.length===0}function mge(s,e){var t,i,n,o,r,l,a,d;return{enableSplitViewResizing:$t(s.enableSplitViewResizing,e.enableSplitViewResizing),splitViewDefaultRatio:XOe(s.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:$t(s.renderSideBySide,e.renderSideBySide),renderMarginRevertIcon:$t(s.renderMarginRevertIcon,e.renderMarginRevertIcon),maxComputationTime:sZ(s.maxComputationTime,e.maxComputationTime,0,1073741824),maxFileSize:sZ(s.maxFileSize,e.maxFileSize,0,1073741824),ignoreTrimWhitespace:$t(s.ignoreTrimWhitespace,e.ignoreTrimWhitespace),renderIndicators:$t(s.renderIndicators,e.renderIndicators),originalEditable:$t(s.originalEditable,e.originalEditable),diffCodeLens:$t(s.diffCodeLens,e.diffCodeLens),renderOverviewRuler:$t(s.renderOverviewRuler,e.renderOverviewRuler),diffWordWrap:No(s.diffWordWrap,e.diffWordWrap,["off","on","inherit"]),diffAlgorithm:No(s.diffAlgorithm,e.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:$t(s.accessibilityVerbose,e.accessibilityVerbose),experimental:{showMoves:$t((t=s.experimental)==null?void 0:t.showMoves,e.experimental.showMoves),showEmptyDecorations:$t((i=s.experimental)==null?void 0:i.showEmptyDecorations,e.experimental.showEmptyDecorations),useTrueInlineView:$t((n=s.experimental)==null?void 0:n.useTrueInlineView,e.experimental.useTrueInlineView)},hideUnchangedRegions:{enabled:$t(((o=s.hideUnchangedRegions)==null?void 0:o.enabled)??((r=s.experimental)==null?void 0:r.collapseUnchangedRegions),e.hideUnchangedRegions.enabled),contextLineCount:sZ((l=s.hideUnchangedRegions)==null?void 0:l.contextLineCount,e.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:sZ((a=s.hideUnchangedRegions)==null?void 0:a.minimumLineCount,e.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:sZ((d=s.hideUnchangedRegions)==null?void 0:d.revealLineCount,e.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:$t(s.isInEmbeddedEditor,e.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:$t(s.onlyShowAccessibleDiffViewer,e.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:sZ(s.renderSideBySideInlineBreakpoint,e.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:$t(s.useInlineViewWhenSpaceIsLimited,e.useInlineViewWhenSpaceIsLimited),renderGutterMenu:$t(s.renderGutterMenu,e.renderGutterMenu),compactMode:$t(s.compactMode,e.compactMode)}}var Jht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Mw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let tb=class extends R${get onDidContentSizeChange(){return this._editors.onDidContentSizeChange}constructor(e,t,i,n,o,r,l,a){super(),this._domElement=e,this._parentContextKeyService=n,this._parentInstantiationService=o,this._accessibilitySignalService=l,this._editorProgressService=a,this.elements=an("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[an("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),an("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),an("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModelSrc=this._register(gL(this,void 0)),this._diffModel=Pt(this,Z=>{var R;return(R=this._diffModelSrc.read(Z))==null?void 0:R.object}),this.onDidChangeModel=Ut.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new yM([fi,this._contextKeyService]))),this._boundarySashes=Pi(this,void 0),this._accessibleDiffViewerShouldBeVisible=Pi(this,!1),this._accessibleDiffViewerVisible=Pt(this,Z=>this._options.onlyShowAccessibleDiffViewer.read(Z)?!0:this._accessibleDiffViewerShouldBeVisible.read(Z)),this._movedBlocksLinesPart=Pi(this,void 0),this._layoutInfo=Pt(this,Z=>{var de,ee;const R=this._rootSizeObserver.width.read(Z),y=this._rootSizeObserver.height.read(Z);this._rootSizeObserver.automaticLayout?this.elements.root.style.height="100%":this.elements.root.style.height=y+"px";const N=this._sash.read(Z),w=this._gutter.read(Z),Q=(w==null?void 0:w.width.read(Z))??0,C=((de=this._overviewRulerPart.read(Z))==null?void 0:de.width)??0;let v,Y,J,k,E;if(!!N){const le=N.sashLeft.read(Z),Fe=((ee=this._movedBlocksLinesPart.read(Z))==null?void 0:ee.width.read(Z))??0;v=0,Y=le-Q-Fe,E=le-Q,J=le,k=R-J-C}else{E=0;const le=this._options.inlineViewHideOriginalLineNumbers.read(Z);v=Q,le?Y=0:Y=Math.max(5,this._editors.originalObs.layoutInfoDecorationsLeft.read(Z)),J=Q+Y,k=R-J-C}return this.elements.original.style.left=v+"px",this.elements.original.style.width=Y+"px",this._editors.original.layout({width:Y,height:y},!0),w==null||w.layout(E),this.elements.modified.style.left=J+"px",this.elements.modified.style.width=k+"px",this._editors.modified.layout({width:k,height:y},!0),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((Z,R)=>Z==null?void 0:Z.diff.read(R)),this.onDidUpdateDiff=Ut.fromObservableLight(this._diffValue),r.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._domElement.appendChild(this.elements.root),this._register(ei(()=>this.elements.root.remove())),this._rootSizeObserver=this._register(new fWe(this.elements.root,t.dimension)),this._rootSizeObserver.setAutomaticLayout(t.automaticLayout??!1),this._options=this._instantiationService.createInstance(V$,t),this._register(yi(Z=>{this._options.setWidth(this._rootSizeObserver.width.read(Z))})),this._contextKeyService.createKey($.isEmbeddedDiffEditor.key,!1),this._register(Cm($.isEmbeddedDiffEditor,this._contextKeyService,Z=>this._options.isInEmbeddedEditor.read(Z))),this._register(Cm($.comparingMovedCode,this._contextKeyService,Z=>{var R;return!!((R=this._diffModel.read(Z))!=null&&R.movedTextToCompare.read(Z))})),this._register(Cm($.diffEditorRenderSideBySideInlineBreakpointReached,this._contextKeyService,Z=>this._options.couldShowInlineViewBecauseOfSize.read(Z))),this._register(Cm($.diffEditorInlineMode,this._contextKeyService,Z=>!this._options.renderSideBySide.read(Z))),this._register(Cm($.hasChanges,this._contextKeyService,Z=>{var R,y;return(((y=(R=this._diffModel.read(Z))==null?void 0:R.diff.read(Z))==null?void 0:y.mappings.length)??0)>0})),this._editors=this._register(this._instantiationService.createInstance(N$,this.elements.original,this.elements.modified,this._options,i,(Z,R,y,N)=>this._createInnerEditor(Z,R,y,N))),this._register(Cm($.diffEditorOriginalWritable,this._contextKeyService,Z=>this._options.originalEditable.read(Z))),this._register(Cm($.diffEditorModifiedWritable,this._contextKeyService,Z=>!this._options.readOnly.read(Z))),this._register(Cm($.diffEditorOriginalUri,this._contextKeyService,Z=>{var R;return((R=this._diffModel.read(Z))==null?void 0:R.model.original.uri.toString())??""})),this._register(Cm($.diffEditorModifiedUri,this._contextKeyService,Z=>{var R;return((R=this._diffModel.read(Z))==null?void 0:R.model.modified.uri.toString())??""})),this._overviewRulerPart=ma(this,Z=>this._options.renderOverviewRuler.read(Z)?this._instantiationService.createInstance(tc(GL,Z),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(R=>R.modifiedEditor)):void 0).recomputeInitiallyAndOnChange(this._store);const d={height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((Z,R)=>{var y;return Z-(((y=this._overviewRulerPart.read(R))==null?void 0:y.width)??0)})};this._sashLayout=new Vht(this._options,d),this._sash=ma(this,Z=>{const R=this._options.renderSideBySide.read(Z);return this.elements.root.classList.toggle("side-by-side",R),R?new ZWe(this.elements.root,d,this._options.enableSplitViewResizing,this._boundarySashes,this._sashLayout.sashLeft,()=>this._sashLayout.resetSash()):void 0}).recomputeInitiallyAndOnChange(this._store);const c=ma(this,Z=>this._instantiationService.createInstance(tc(G5,Z),this._editors,this._diffModel,this._options)).recomputeInitiallyAndOnChange(this._store);ma(this,Z=>this._instantiationService.createInstance(tc(Rht,Z),this._editors,this._diffModel,this._options,this)).recomputeInitiallyAndOnChange(this._store);const h=new Set,u=new Set;let m=!1;const p=ma(this,Z=>this._instantiationService.createInstance(tc(U$,Z),ai(this._domElement),this._editors,this._diffModel,this._options,this,()=>m||c.get().isUpdatingHiddenAreas,h,u)).recomputeInitiallyAndOnChange(this._store),g=Pt(this,Z=>{const R=p.read(Z).viewZones.read(Z).orig,y=c.read(Z).viewZones.read(Z).origViewZones;return R.concat(y)}),f=Pt(this,Z=>{const R=p.read(Z).viewZones.read(Z).mod,y=c.read(Z).viewZones.read(Z).modViewZones;return R.concat(y)});this._register(k5(this._editors.original,g,Z=>{m=Z},h));let b;this._register(k5(this._editors.modified,f,Z=>{m=Z,m?b=mp.capture(this._editors.modified):(b==null||b.restore(this._editors.modified),b=void 0)},u)),this._accessibleDiffViewer=ma(this,Z=>this._instantiationService.createInstance(tc(NS,Z),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(R,y)=>this._accessibleDiffViewerShouldBeVisible.set(R,y),this._options.onlyShowAccessibleDiffViewer.map(R=>!R),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((R,y)=>{var N;return(N=R==null?void 0:R.diff.read(y))==null?void 0:N.mappings.map(w=>w.lineRangeMapping)}),new uht(this._editors))).recomputeInitiallyAndOnChange(this._store);const U=this._accessibleDiffViewerVisible.map(Z=>Z?"hidden":"visible");this._register(eb(this.elements.modified,{visibility:U})),this._register(eb(this.elements.original,{visibility:U})),this._createDiffEditorContributions(),r.addDiffEditor(this),this._gutter=ma(this,Z=>this._options.shouldRenderGutterMenu.read(Z)?this._instantiationService.createInstance(tc(F$,Z),this.elements.root,this._diffModel,this._editors,this._options,this._sashLayout,this._boundarySashes):void 0),this._register(NM(this._layoutInfo)),ma(this,Z=>new(tc(P1,Z))(this.elements.root,this._diffModel,this._layoutInfo.map(R=>R.originalEditor),this._layoutInfo.map(R=>R.modifiedEditor),this._editors)).recomputeInitiallyAndOnChange(this._store,Z=>{this._movedBlocksLinesPart.set(Z,void 0)}),this._register(Ut.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,Z=>this._handleCursorPositionChange(Z,!0))),this._register(Ut.runAndSubscribe(this._editors.original.onDidChangeCursorPosition,Z=>this._handleCursorPositionChange(Z,!1)));const S=this._diffModel.map(this,(Z,R)=>{if(Z)return Z.diff.read(R)===void 0&&!Z.isDiffUpToDate.read(R)});this._register(Wd((Z,R)=>{if(S.read(Z)===!0){const y=this._editorProgressService.show(!0,1e3);R.add(ei(()=>y.done()))}})),this._register(Wd((Z,R)=>{R.add(new(tc(Lht,Z))(this._editors,this._diffModel,this._options,this))})),this._register(Wd((Z,R)=>{const y=this._diffModel.read(Z);if(y)for(const N of[y.model.original,y.model.modified])R.add(N.onWillDispose(w=>{wi(new _n("TextModel got disposed before DiffEditorWidget model got reset")),this.setModel(null)}))})),this._register(yi(Z=>{this._options.setModel(this._diffModel.read(Z))}))}_createInnerEditor(e,t,i,n){return e.createInstance(xL,t,i,n)}_createDiffEditorContributions(){const e=DS.getDiffEditorContributions();for(const t of e)try{this._register(this._instantiationService.createInstance(t.ctor,this))}catch(i){wi(i)}}get _targetEditor(){return this._editors.modified}getEditorType(){return pk.IDiffEditor}layout(e){this._rootSizeObserver.observe(e)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var i;const e=this._editors.original.saveViewState(),t=this._editors.modified.saveViewState();return{original:e,modified:t,modelState:(i=this._diffModel.get())==null?void 0:i.serializeState()}}restoreViewState(e){var t;if(e&&e.original&&e.modified){const i=e;this._editors.original.restoreViewState(i.original),this._editors.modified.restoreViewState(i.modified),i.modelState&&((t=this._diffModel.get())==null||t.restoreSerializedState(i.modelState))}}handleInitialized(){this._editors.original.handleInitialized(),this._editors.modified.handleInitialized()}createViewModel(e){return this._instantiationService.createInstance(b$,e,this._options)}getModel(){var e;return((e=this._diffModel.get())==null?void 0:e.model)??null}setModel(e){const t=e?"model"in e?x5.create(e).createNewRef(this):x5.create(this.createViewModel(e),this):null;this.setDiffModel(t)}setDiffModel(e,t){const i=this._diffModel.get();!e&&i&&this._accessibleDiffViewer.get().close(),this._diffModel.get()!==(e==null?void 0:e.object)&&yN(t,n=>{var l;const o=e==null?void 0:e.object;is.batchEventsGlobally(n,()=>{this._editors.original.setModel(o?o.model.original:null),this._editors.modified.setModel(o?o.model.modified:null)});const r=(l=this._diffModelSrc.get())==null?void 0:l.createNewRef(this);this._diffModelSrc.set(e==null?void 0:e.createNewRef(this),n),setTimeout(()=>{r==null||r.dispose()},0)})}updateOptions(e){this._options.updateOptions(e)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var t;const e=(t=this._diffModel.get())==null?void 0:t.diff.get();return e?Xht(e):null}revert(e){const t=this._diffModel.get();!t||!t.isDiffUpToDate.get()||this._editors.modified.executeEdits("diffEditor",[{range:e.modified.toExclusiveRange(),text:t.model.original.getValueInRange(e.original.toExclusiveRange())}])}revertRangeMappings(e){const t=this._diffModel.get();if(!t||!t.isDiffUpToDate.get())return;const i=e.map(n=>({range:n.modifiedRange,text:t.model.original.getValueInRange(n.originalRange)}));this._editors.modified.executeEdits("diffEditor",i)}_goTo(e){this._editors.modified.setPosition(new ge(e.lineRangeMapping.modified.startLineNumber,1)),this._editors.modified.revealRangeInCenter(e.lineRangeMapping.modified.toExclusiveRange())}goToDiff(e){var o,r;const t=(r=(o=this._diffModel.get())==null?void 0:o.diff.get())==null?void 0:r.mappings;if(!t||t.length===0)return;const i=this._editors.modified.getPosition().lineNumber;let n;e==="next"?n=t.find(l=>l.lineRangeMapping.modified.startLineNumber>i)??t[0]:n=qB(t,l=>l.lineRangeMapping.modified.startLineNumber<i)??t[t.length-1],this._goTo(n),n.lineRangeMapping.modified.isEmpty?this._accessibilitySignalService.playSignal(Gc.diffLineDeleted,{source:"diffEditor.goToDiff"}):n.lineRangeMapping.original.isEmpty?this._accessibilitySignalService.playSignal(Gc.diffLineInserted,{source:"diffEditor.goToDiff"}):n&&this._accessibilitySignalService.playSignal(Gc.diffLineModified,{source:"diffEditor.goToDiff"})}revealFirstDiff(){const e=this._diffModel.get();e&&this.waitForDiff().then(()=>{var i;const t=(i=e.diff.get())==null?void 0:i.mappings;!t||t.length===0||this._goTo(t[0])})}accessibleDiffViewerNext(){this._accessibleDiffViewer.get().next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.get().prev()}async waitForDiff(){const e=this._diffModel.get();e&&await e.waitForDiff()}mapToOtherSide(){var r,l;const e=this._editors.modified.hasWidgetFocus(),t=e?this._editors.modified:this._editors.original,i=e?this._editors.original:this._editors.modified;let n;const o=t.getSelection();if(o){const a=(l=(r=this._diffModel.get())==null?void 0:r.diff.get())==null?void 0:l.mappings.map(d=>e?d.lineRangeMapping.flip():d.lineRangeMapping);if(a){const d=Kpe(o.getStartPosition(),a),c=Kpe(o.getEndPosition(),a);n=z.plusRange(d,c)}}return{destination:i,destinationSelection:n}}switchSide(){const{destination:e,destinationSelection:t}=this.mapToOtherSide();e.focus(),t&&e.setSelection(t)}exitCompareMove(){const e=this._diffModel.get();e&&e.movedTextToCompare.set(void 0,void 0)}collapseAllUnchangedRegions(){var t;const e=(t=this._diffModel.get())==null?void 0:t.unchangedRegions.get();e&&po(i=>{for(const n of e)n.collapseAll(i)})}showAllUnchangedRegions(){var t;const e=(t=this._diffModel.get())==null?void 0:t.unchangedRegions.get();e&&po(i=>{for(const n of e)n.showAll(i)})}_handleCursorPositionChange(e,t){var i,n;if((e==null?void 0:e.reason)===3){const o=(n=(i=this._diffModel.get())==null?void 0:i.diff.get())==null?void 0:n.mappings.find(r=>t?r.lineRangeMapping.modified.contains(e.position.lineNumber):r.lineRangeMapping.original.contains(e.position.lineNumber));o!=null&&o.lineRangeMapping.modified.isEmpty?this._accessibilitySignalService.playSignal(Gc.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):o!=null&&o.lineRangeMapping.original.isEmpty?this._accessibilitySignalService.playSignal(Gc.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):o&&this._accessibilitySignalService.playSignal(Gc.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}};tb=Jht([Mw(3,fi),Mw(4,ti),Mw(5,kn),Mw(6,oA),Mw(7,iA)],tb);function Xht(s){return s.mappings.map(e=>{const t=e.lineRangeMapping;let i,n,o,r,l=t.innerChanges;return t.original.isEmpty?(i=t.original.startLineNumber-1,n=0,l=void 0):(i=t.original.startLineNumber,n=t.original.endLineNumberExclusive-1),t.modified.isEmpty?(o=t.modified.startLineNumber-1,r=0,l=void 0):(o=t.modified.startLineNumber,r=t.modified.endLineNumberExclusive-1),{originalStartLineNumber:i,originalEndLineNumber:n,modifiedStartLineNumber:o,modifiedEndLineNumber:r,charChanges:l==null?void 0:l.map(a=>({originalStartLineNumber:a.originalRange.startLineNumber,originalStartColumn:a.originalRange.startColumn,originalEndLineNumber:a.originalRange.endLineNumber,originalEndColumn:a.originalRange.endColumn,modifiedStartLineNumber:a.modifiedRange.startLineNumber,modifiedStartColumn:a.modifiedRange.startColumn,modifiedEndLineNumber:a.modifiedRange.endLineNumber,modifiedEndColumn:a.modifiedRange.endColumn}))}})}var Hre=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ds=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Yht=0,pge=!1;function _ht(s){if(!s){if(pge)return;pge=!0}O$e(s||Us.document.body)}let X5=class extends xL{constructor(e,t,i,n,o,r,l,a,d,c,h,u,m){const p={...t};p.ariaLabel=p.ariaLabel||F6.editorViewAccessibleLabel,super(e,p,{},i,n,o,r,d,c,h,u,m),a instanceof Jy?this._standaloneKeybindingService=a:this._standaloneKeybindingService=null,_ht(p.ariaContainerElement),ctt((g,f)=>i.createInstance(wy,g,f,{})),htt(l)}addCommand(e,t,i){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const n="DYNAMIC_"+ ++Yht,o=Ge.deserialize(i);return this._standaloneKeybindingService.addDynamicKeybinding(n,e,t,o),n}createContextKey(e,t){return this._contextKeyService.createKey(e,t)}addAction(e){if(typeof e.id!="string"||typeof e.label!="string"||typeof e.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),be.None;const t=e.id,i=e.label,n=Ge.and(Ge.equals("editorId",this.getId()),Ge.deserialize(e.precondition)),o=e.keybindings,r=Ge.and(n,Ge.deserialize(e.keybindingContext)),l=e.contextMenuGroupId||null,a=e.contextMenuOrder||0,d=(m,...p)=>Promise.resolve(e.run(this,...p)),c=new De,h=this.getId()+":"+t;if(c.add(Sn.registerCommand(h,d)),l){const m={command:{id:h,title:i},when:n,group:l,order:a};c.add(zr.appendMenuItem(Gt.EditorContext,m))}if(Array.isArray(o))for(const m of o)c.add(this._standaloneKeybindingService.addDynamicKeybinding(h,m,d,r));const u=new uWe(h,i,i,void 0,n,(...m)=>Promise.resolve(e.run(this,...m)),this._contextKeyService);return this._actions.set(t,u),c.add(ei(()=>{this._actions.delete(t)})),c}_triggerCommand(e,t){if(this._codeEditorService instanceof SX)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(e,t)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(e,t)}};X5=Hre([Ds(2,ti),Ds(3,kn),Ds(4,ks),Ds(5,fi),Ds(6,t0),Ds(7,qn),Ds(8,Rr),Ds(9,jo),Ds(10,Fc),Ds(11,bo),Ds(12,xt)],X5);let W$=class extends X5{constructor(e,t,i,n,o,r,l,a,d,c,h,u,m,p,g,f){const b={...t};U5(h,b,!1);const U=d.registerEditorContainer(e);typeof b.theme=="string"&&d.setTheme(b.theme),typeof b.autoDetectHighContrast<"u"&&d.setAutoDetectHighContrast(!!b.autoDetectHighContrast);const S=b.model;delete b.model,super(e,b,i,n,o,r,l,a,d,c,u,g,f),this._configurationService=h,this._standaloneThemeService=d,this._register(U);let Z;if(typeof S>"u"){const R=p.getLanguageIdByMimeType(b.language)||b.language||Ya;Z=VWe(m,p,b.value||"",R,void 0),this._ownsModel=!0}else Z=S,this._ownsModel=!1;if(this._attachModel(Z),Z){const R={oldModelUrl:null,newModelUrl:Z.uri};this._onDidChangeModel.fire(R)}}dispose(){super.dispose()}updateOptions(e){U5(this._configurationService,e,!1),typeof e.theme=="string"&&this._standaloneThemeService.setTheme(e.theme),typeof e.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!e.autoDetectHighContrast),super.updateOptions(e)}_postDetachModelCleanup(e){super._postDetachModelCleanup(e),e&&this._ownsModel&&(e.dispose(),this._ownsModel=!1)}};W$=Hre([Ds(2,ti),Ds(3,kn),Ds(4,ks),Ds(5,fi),Ds(6,t0),Ds(7,qn),Ds(8,uh),Ds(9,jo),Ds(10,Hi),Ds(11,Fc),Ds(12,zs),Ds(13,ao),Ds(14,bo),Ds(15,xt)],W$);let y$=class extends tb{constructor(e,t,i,n,o,r,l,a,d,c,h,u){const m={...t};U5(a,m,!0);const p=r.registerEditorContainer(e);typeof m.theme=="string"&&r.setTheme(m.theme),typeof m.autoDetectHighContrast<"u"&&r.setAutoDetectHighContrast(!!m.autoDetectHighContrast),super(e,m,{},n,i,o,u,c),this._configurationService=a,this._standaloneThemeService=r,this._register(p)}dispose(){super.dispose()}updateOptions(e){U5(this._configurationService,e,!0),typeof e.theme=="string"&&this._standaloneThemeService.setTheme(e.theme),typeof e.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!e.autoDetectHighContrast),super.updateOptions(e)}_createInnerEditor(e,t,i){return e.createInstance(X5,t,i)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(e,t,i){return this.getModifiedEditor().addCommand(e,t,i)}createContextKey(e,t){return this.getModifiedEditor().createContextKey(e,t)}addAction(e){return this.getModifiedEditor().addAction(e)}};y$=Hre([Ds(2,ti),Ds(3,fi),Ds(4,kn),Ds(5,uh),Ds(6,jo),Ds(7,Hi),Ds(8,Uc),Ds(9,iA),Ds(10,hb),Ds(11,oA)],y$);function VWe(s,e,t,i,n){if(t=t||"",!i){const o=t.indexOf(`
- `);let r=t;return o!==-1&&(r=t.substring(0,o)),gge(s,t,e.createByFilepathOrFirstLine(n||null,r),n)}return gge(s,t,e.createById(i),n)}function gge(s,e,t,i){return s.createModel(e,t,i)}var zht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},fge=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Oht{constructor(e,t){this.viewModel=e,this.deltaScrollVertical=t}getId(){return this.viewModel}}let Y5=class extends be{constructor(e,t,i,n,o){super(),this._container=e,this._overflowWidgetsDomNode=t,this._workbenchUIElementFactory=i,this._instantiationService=n,this._viewModel=Pi(this,void 0),this._collapsed=Pt(this,a=>{var d;return(d=this._viewModel.read(a))==null?void 0:d.collapsed.read(a)}),this._editorContentHeight=Pi(this,500),this.contentHeight=Pt(this,a=>(this._collapsed.read(a)?0:this._editorContentHeight.read(a))+this._outerEditorHeight),this._modifiedContentWidth=Pi(this,0),this._modifiedWidth=Pi(this,0),this._originalContentWidth=Pi(this,0),this._originalWidth=Pi(this,0),this.maxScroll=Pt(this,a=>{const d=this._modifiedContentWidth.read(a)-this._modifiedWidth.read(a),c=this._originalContentWidth.read(a)-this._originalWidth.read(a);return d>c?{maxScroll:d,width:this._modifiedWidth.read(a)}:{maxScroll:c,width:this._originalWidth.read(a)}}),this._elements=an("div.multiDiffEntry",[an("div.header@header",[an("div.header-content",[an("div.collapse-button@collapseButton"),an("div.file-path",[an("div.title.modified.show-file-icons@primaryPath",[]),an("div.status.deleted@status",["R"]),an("div.title.original.show-file-icons@secondaryPath",[])]),an("div.actions@actions")])]),an("div.editorParent",[an("div.editorContainer@editor")])]),this.editor=this._register(this._instantiationService.createInstance(tb,this._elements.editor,{overflowWidgetsDomNode:this._overflowWidgetsDomNode},{})),this.isModifedFocused=oc(this.editor.getModifiedEditor()).isFocused,this.isOriginalFocused=oc(this.editor.getOriginalEditor()).isFocused,this.isFocused=Pt(this,a=>this.isModifedFocused.read(a)||this.isOriginalFocused.read(a)),this._resourceLabel=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath)):void 0,this._resourceLabel2=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath)):void 0,this._dataStore=this._register(new De),this._headerHeight=40,this._lastScrollTop=-1,this._isSettingScrollTop=!1;const r=new t5(this._elements.collapseButton,{});this._register(yi(a=>{r.element.className="",r.icon=this._collapsed.read(a)?ct.chevronRight:ct.chevronDown})),this._register(r.onDidClick(()=>{var a;(a=this._viewModel.get())==null||a.collapsed.set(!this._collapsed.get(),void 0)})),this._register(yi(a=>{this._elements.editor.style.display=this._collapsed.read(a)?"none":"block"})),this._register(this.editor.getModifiedEditor().onDidLayoutChange(a=>{const d=this.editor.getModifiedEditor().getLayoutInfo().contentWidth;this._modifiedWidth.set(d,void 0)})),this._register(this.editor.getOriginalEditor().onDidLayoutChange(a=>{const d=this.editor.getOriginalEditor().getLayoutInfo().contentWidth;this._originalWidth.set(d,void 0)})),this._register(this.editor.onDidContentSizeChange(a=>{wT(d=>{this._editorContentHeight.set(a.contentHeight,d),this._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(),d),this._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(),d)})})),this._register(this.editor.getOriginalEditor().onDidScrollChange(a=>{if(this._isSettingScrollTop||!a.scrollTopChanged||!this._data)return;const d=a.scrollTop-this._lastScrollTop;this._data.deltaScrollVertical(d)})),this._register(yi(a=>{var c;const d=(c=this._viewModel.read(a))==null?void 0:c.isActive.read(a);this._elements.root.classList.toggle("active",d)})),this._container.appendChild(this._elements.root),this._outerEditorHeight=this._headerHeight,this._contextKeyService=this._register(o.createScoped(this._elements.actions));const l=this._register(this._instantiationService.createChild(new yM([fi,this._contextKeyService])));this._register(l.createInstance(D5,this._elements.actions,Gt.MultiDiffEditorFileToolbar,{actionRunner:this._register(new SWe(()=>{var a;return(a=this._viewModel.get())==null?void 0:a.modifiedUri})),menuOptions:{shouldForwardArgs:!0},toolbarOptions:{primaryGroup:a=>a.startsWith("navigation")},actionViewItemProvider:(a,d)=>URe(l,a,d)}))}setScrollLeft(e){this._modifiedContentWidth.get()-this._modifiedWidth.get()>this._originalContentWidth.get()-this._originalWidth.get()?this.editor.getModifiedEditor().setScrollLeft(e):this.editor.getOriginalEditor().setScrollLeft(e)}setData(e){this._data=e;function t(n){return{...n,scrollBeyondLastLine:!1,hideUnchangedRegions:{enabled:!0},scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1,useShadows:!1},renderOverviewRuler:!1,fixedOverflowWidgets:!0,overviewRulerBorder:!1}}if(!e){wT(n=>{this._viewModel.set(void 0,n),this.editor.setDiffModel(null,n),this._dataStore.clear()});return}const i=e.viewModel.documentDiffItem;if(wT(n=>{var d,c;(d=this._resourceLabel)==null||d.setUri(e.viewModel.modifiedUri??e.viewModel.originalUri,{strikethrough:e.viewModel.modifiedUri===void 0});let o=!1,r=!1,l=!1,a="";e.viewModel.modifiedUri&&e.viewModel.originalUri&&e.viewModel.modifiedUri.path!==e.viewModel.originalUri.path?(a="R",o=!0):e.viewModel.modifiedUri?e.viewModel.originalUri||(a="A",l=!0):(a="D",r=!0),this._elements.status.classList.toggle("renamed",o),this._elements.status.classList.toggle("deleted",r),this._elements.status.classList.toggle("added",l),this._elements.status.innerText=a,(c=this._resourceLabel2)==null||c.setUri(o?e.viewModel.originalUri:void 0,{strikethrough:!0}),this._dataStore.clear(),this._viewModel.set(e.viewModel,n),this.editor.setDiffModel(e.viewModel.diffEditorViewModelRef,n),this.editor.updateOptions(t(i.options??{}))}),i.onOptionsDidChange&&this._dataStore.add(i.onOptionsDidChange(()=>{this.editor.updateOptions(t(i.options??{}))})),e.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore,n=>{n||this.setData(void 0)}),e.viewModel.documentDiffItem.contextKeys)for(const[n,o]of Object.entries(e.viewModel.documentDiffItem.contextKeys))this._contextKeyService.createKey(n,o)}render(e,t,i,n){this._elements.root.style.visibility="visible",this._elements.root.style.top=`${e.start}px`,this._elements.root.style.height=`${e.length}px`,this._elements.root.style.width=`${t}px`,this._elements.root.style.position="absolute";const o=e.length-this._headerHeight,r=Math.max(0,Math.min(n.start-e.start,o));this._elements.header.style.transform=`translateY(${r}px)`,wT(l=>{this.editor.layout({width:t-2*8-2*1,height:e.length-this._outerEditorHeight})});try{this._isSettingScrollTop=!0,this._lastScrollTop=i,this.editor.getOriginalEditor().setScrollTop(i)}finally{this._isSettingScrollTop=!1}this._elements.header.classList.toggle("shadow",r>0||i>0),this._elements.header.classList.toggle("collapsed",r===o)}hide(){this._elements.root.style.top="-100000px",this._elements.root.style.visibility="hidden"}};Y5=zht([fge(3,ti),fge(4,fi)],Y5);class jht{constructor(e){this._create=e,this._unused=new Set,this._used=new Set,this._itemData=new Map}getUnusedObj(e){let t;if(this._unused.size===0)t=this._create(e),this._itemData.set(t,e);else{const i=[...this._unused.values()];t=i.find(n=>this._itemData.get(n).getId()===e.getId())??i[0],this._unused.delete(t),this._itemData.set(t,e),t.setData(e)}return this._used.add(t),{object:t,dispose:()=>{this._used.delete(t),this._unused.size>5?t.dispose():this._unused.add(t)}}}dispose(){for(const e of this._used)e.dispose();for(const e of this._unused)e.dispose();this._used.clear(),this._unused.clear()}}var Pht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},bge=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Q$=class extends be{constructor(e,t,i,n,o,r){super(),this._element=e,this._dimension=t,this._viewModel=i,this._workbenchUIElementFactory=n,this._parentContextKeyService=o,this._parentInstantiationService=r,this._scrollableElements=an("div.scrollContent",[an("div@content",{style:{overflow:"hidden"}}),an("div.monaco-editor@overflowWidgetsDomNode",{})]),this._scrollable=this._register(new FM({forceIntegerValues:!1,scheduleAtNextAnimationFrame:a=>fc(ai(this._element),a),smoothScrollDuration:100})),this._scrollableElement=this._register(new i9(this._scrollableElements.root,{vertical:1,horizontal:1,useShadows:!1},this._scrollable)),this._elements=an("div.monaco-component.multiDiffEditor",{},[an("div",{},[this._scrollableElement.getDomNode()]),an("div.placeholder@placeholder",{},[an("div",[F("noChangedFiles","No Changed Files")])])]),this._sizeObserver=this._register(new fWe(this._element,void 0)),this._objectPool=this._register(new jht(a=>{const d=this._instantiationService.createInstance(Y5,this._scrollableElements.content,this._scrollableElements.overflowWidgetsDomNode,this._workbenchUIElementFactory);return d.setData(a),d})),this.scrollTop=is(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollTop),this.scrollLeft=is(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollLeft),this._viewItemsInfo=nA(this,(a,d)=>{const c=this._viewModel.read(a);if(!c)return{items:[],getItem:p=>{throw new _n}};const h=c.items.read(a),u=new Map;return{items:h.map(p=>{var b;const g=d.add(new Hht(p,this._objectPool,this.scrollLeft,U=>{this._scrollableElement.setScrollPosition({scrollTop:this._scrollableElement.getScrollPosition().scrollTop+U})})),f=(b=this._lastDocStates)==null?void 0:b[g.getKey()];return f&&po(U=>{g.setViewState(f,U)}),u.set(p,g),g}),getItem:p=>u.get(p)}}),this._viewItems=this._viewItemsInfo.map(this,a=>a.items),this._spaceBetweenPx=0,this._totalHeight=this._viewItems.map(this,(a,d)=>a.reduce((c,h)=>c+h.contentHeight.read(d)+this._spaceBetweenPx,0)),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._element)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new yM([fi,this._contextKeyService]))),this._lastDocStates={},this._contextKeyService.createKey($.inMultiDiffEditor.key,!0),this._register(Wd((a,d)=>{const c=this._viewModel.read(a);if(c&&c.contextKeys)for(const[h,u]of Object.entries(c.contextKeys)){const m=this._contextKeyService.createKey(h,void 0);m.set(u),d.add(ei(()=>m.reset()))}}));const l=this._parentContextKeyService.createKey($.multiDiffEditorAllCollapsed.key,!1);this._register(yi(a=>{const d=this._viewModel.read(a);if(d){const c=d.items.read(a).every(h=>h.collapsed.read(a));l.set(c)}})),this._register(yi(a=>{const d=this._dimension.read(a);this._sizeObserver.observe(d)})),this._register(yi(a=>{const d=this._viewItems.read(a);this._elements.placeholder.classList.toggle("visible",d.length===0)})),this._scrollableElements.content.style.position="relative",this._register(yi(a=>{const d=this._sizeObserver.height.read(a);this._scrollableElements.root.style.height=`${d}px`;const c=this._totalHeight.read(a);this._scrollableElements.content.style.height=`${c}px`;const h=this._sizeObserver.width.read(a);let u=h;const m=this._viewItems.read(a),p=Hse(m,Ja(g=>g.maxScroll.read(a).maxScroll,ju));if(p){const g=p.maxScroll.read(a);u=h+g.maxScroll}this._scrollableElement.setScrollDimensions({width:h,height:d,scrollHeight:c,scrollWidth:u})})),e.replaceChildren(this._elements.root),this._register(ei(()=>{e.replaceChildren()})),this._register(this._register(yi(a=>{wT(d=>{this.render(a)})})))}render(e){const t=this.scrollTop.read(e);let i=0,n=0,o=0;const r=this._sizeObserver.height.read(e),l=$i.ofStartAndLength(t,r),a=this._sizeObserver.width.read(e);for(const d of this._viewItems.read(e)){const c=d.contentHeight.read(e),h=Math.min(c,r),u=$i.ofStartAndLength(n,h),m=$i.ofStartAndLength(o,c);if(m.isBefore(l))i-=c-h,d.hide();else if(m.isAfter(l))d.hide();else{const p=Math.max(0,Math.min(l.start-m.start,c-h));i-=p;const g=$i.ofStartAndLength(t+i,r);d.render(u,p,a,g)}n+=h+this._spaceBetweenPx,o+=c+this._spaceBetweenPx}this._scrollableElements.content.style.transform=`translateY(${-(t+i)}px)`}};Q$=Pht([bge(4,fi),bge(5,ti)],Q$);class Hht extends be{constructor(e,t,i,n){super(),this.viewModel=e,this._objectPool=t,this._scrollLeft=i,this._deltaScrollVertical=n,this._templateRef=this._register(gL(this,void 0)),this.contentHeight=Pt(this,o=>{var r,l;return((l=(r=this._templateRef.read(o))==null?void 0:r.object.contentHeight)==null?void 0:l.read(o))??this.viewModel.lastTemplateData.read(o).contentHeight}),this.maxScroll=Pt(this,o=>{var r;return((r=this._templateRef.read(o))==null?void 0:r.object.maxScroll.read(o))??{maxScroll:0,scrollWidth:0}}),this.template=Pt(this,o=>{var r;return(r=this._templateRef.read(o))==null?void 0:r.object}),this._isHidden=Pi(this,!1),this._isFocused=Pt(this,o=>{var r;return((r=this.template.read(o))==null?void 0:r.isFocused.read(o))??!1}),this.viewModel.setIsFocused(this._isFocused,void 0),this._register(yi(o=>{var l;const r=this._scrollLeft.read(o);(l=this._templateRef.read(o))==null||l.object.setScrollLeft(r)})),this._register(yi(o=>{const r=this._templateRef.read(o);!r||!this._isHidden.read(o)||r.object.isFocused.read(o)||this._clear()}))}dispose(){this._clear(),super.dispose()}toString(){var e;return`VirtualViewItem(${(e=this.viewModel.documentDiffItem.modified)==null?void 0:e.uri.toString()})`}getKey(){return this.viewModel.getKey()}setViewState(e,t){var r;this.viewModel.collapsed.set(e.collapsed,t),this._updateTemplateData(t);const i=this.viewModel.lastTemplateData.get(),n=(r=e.selections)==null?void 0:r.map(_t.liftSelection);this.viewModel.lastTemplateData.set({...i,selections:n},t);const o=this._templateRef.get();o&&n&&o.object.editor.setSelections(n)}_updateTemplateData(e){const t=this._templateRef.get();t&&this.viewModel.lastTemplateData.set({contentHeight:t.object.contentHeight.get(),selections:t.object.editor.getSelections()??void 0},e)}_clear(){const e=this._templateRef.get();e&&po(t=>{this._updateTemplateData(t),e.object.hide(),this._templateRef.set(void 0,t)})}hide(){this._isHidden.set(!0,void 0)}render(e,t,i,n){this._isHidden.set(!1,void 0);let o=this._templateRef.get();if(!o){o=this._objectPool.getUnusedObj(new Oht(this.viewModel,this._deltaScrollVertical)),this._templateRef.set(o,void 0);const r=this.viewModel.lastTemplateData.get().selections;r&&o.object.editor.setSelections(r)}o.object.render(e,i,t,n)}}te("multiDiffEditor.headerBackground",{dark:"#262626",light:"tab.inactiveBackground",hcDark:"tab.inactiveBackground",hcLight:"tab.inactiveBackground"},F("multiDiffEditor.headerBackground","The background color of the diff editor's header"));te("multiDiffEditor.background",im,F("multiDiffEditor.background","The background color of the multi file diff editor"));te("multiDiffEditor.border",{dark:"sideBarSectionHeader.border",light:"#cccccc",hcDark:"sideBarSectionHeader.border",hcLight:"#cccccc"},F("multiDiffEditor.border","The border color of the multi file diff editor"));var Kht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},qht=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let M$=class extends be{constructor(e,t,i){super(),this._element=e,this._workbenchUIElementFactory=t,this._instantiationService=i,this._dimension=Pi(this,void 0),this._viewModel=Pi(this,void 0),this._widgetImpl=nA(this,(n,o)=>(tc(Y5,n),o.add(this._instantiationService.createInstance(tc(Q$,n),this._element,this._dimension,this._viewModel,this._workbenchUIElementFactory)))),this._register(NM(this._widgetImpl))}};M$=Kht([qht(2,ti)],M$);function $ht(s,e,t){return Ri.initialize(t||{}).createInstance(W$,s,e)}function eut(s){return Ri.get(kn).onCodeEditorAdd(t=>{s(t)})}function tut(s){return Ri.get(kn).onDiffEditorAdd(t=>{s(t)})}function iut(){return Ri.get(kn).listCodeEditors()}function nut(){return Ri.get(kn).listDiffEditors()}function sut(s,e,t){return Ri.initialize(t||{}).createInstance(y$,s,e)}function out(s,e){const t=Ri.initialize(e||{});return new M$(s,{},t)}function rut(s){if(typeof s.id!="string"||typeof s.run!="function")throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return Sn.registerCommand(s.id,s.run)}function lut(s){if(typeof s.id!="string"||typeof s.label!="string"||typeof s.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const e=Ge.deserialize(s.precondition),t=(n,...o)=>Nr.runEditorCommand(n,o,e,(r,l,a)=>Promise.resolve(s.run(l,...a))),i=new De;if(i.add(Sn.registerCommand(s.id,t)),s.contextMenuGroupId){const n={command:{id:s.id,title:s.label},when:e,group:s.contextMenuGroupId,order:s.contextMenuOrder||0};i.add(zr.appendMenuItem(Gt.EditorContext,n))}if(Array.isArray(s.keybindings)){const n=Ri.get(qn);if(!(n instanceof Jy))console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService");else{const o=Ge.and(e,Ge.deserialize(s.keybindingContext));i.add(n.addDynamicKeybindings(s.keybindings.map(r=>({keybinding:r,command:s.id,when:o}))))}}return i}function aut(s){return WWe([s])}function WWe(s){const e=Ri.get(qn);return e instanceof Jy?e.addDynamicKeybindings(s.map(t=>({keybinding:t.keybinding,command:t.command,commandArgs:t.commandArgs,when:Ge.deserialize(t.when)}))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),be.None)}function dut(s,e,t){const i=Ri.get(ao),n=i.getLanguageIdByMimeType(e)||e;return VWe(Ri.get(zs),i,s,n,t)}function cut(s,e){const t=Ri.get(ao),i=t.getLanguageIdByMimeType(e)||e||Ya;s.setLanguage(t.createById(i))}function hut(s,e,t){s&&Ri.get(i0).changeOne(e,s.uri,t)}function uut(s){Ri.get(i0).changeAll(s,[])}function mut(s){return Ri.get(i0).read(s)}function put(s){return Ri.get(i0).onMarkerChanged(s)}function gut(s){return Ri.get(zs).getModel(s)}function fut(){return Ri.get(zs).getModels()}function but(s){return Ri.get(zs).onModelAdded(s)}function Uut(s){return Ri.get(zs).onModelRemoved(s)}function Fut(s){return Ri.get(zs).onModelLanguageChanged(t=>{s({model:t.model,oldLanguage:t.oldLanguageId})})}function Aut(s){return olt(Ri.get(zs),s)}function Zut(s,e){const t=Ri.get(ao),i=Ri.get(uh);return bre.colorizeElement(i,t,s,e).then(()=>{i.registerEditorContainer(s)})}function Sut(s,e,t){const i=Ri.get(ao);return Ri.get(uh).registerEditorContainer(Us.document.body),bre.colorize(i,s,e,t)}function Nut(s,e,t=4){return Ri.get(uh).registerEditorContainer(Us.document.body),bre.colorizeModelLine(s,e,t)}function Rut(s){const e=Ro.get(s);return e||{getInitialState:()=>Ly,tokenize:(t,i,n)=>Woe(s,n)}}function Vut(s,e){Ro.getOrCreate(e);const t=Rut(e),i=Kg(s),n=[];let o=t.getInitialState();for(let r=0,l=i.length;r<l;r++){const a=i[r],d=t.tokenize(a,!0,o);n[r]=d.tokens,o=d.endState}return n}function Wut(s,e){Ri.get(uh).defineTheme(s,e)}function yut(s){Ri.get(uh).setTheme(s)}function Qut(){f8.clearAllFontInfos()}function Mut(s,e){return Sn.registerCommand({id:s,handler:e})}function wut(s){return Ri.get(Bd).registerOpener({async open(t){return typeof t=="string"&&(t=ni.parse(t)),s.open(t)}})}function Tut(s){return Ri.get(kn).registerCodeEditorOpenHandler(async(t,i,n)=>{var l;if(!i)return null;const o=(l=t.options)==null?void 0:l.selection;let r;return o&&typeof o.endLineNumber=="number"&&typeof o.endColumn=="number"?r=o:o&&(r={lineNumber:o.startLineNumber,column:o.startColumn}),await s.openCodeEditor(i,t.resource,r)?i:null})}function Cut(){return{create:$ht,getEditors:iut,getDiffEditors:nut,onDidCreateEditor:eut,onDidCreateDiffEditor:tut,createDiffEditor:sut,addCommand:rut,addEditorAction:lut,addKeybindingRule:aut,addKeybindingRules:WWe,createModel:dut,setModelLanguage:cut,setModelMarkers:hut,getModelMarkers:mut,removeAllMarkers:uut,onDidChangeMarkers:put,getModels:fut,getModel:gut,onDidCreateModel:but,onWillDisposeModel:Uut,onDidChangeModelLanguage:Fut,createWebWorker:Aut,colorizeElement:Zut,colorize:Sut,colorizeModelLine:Nut,tokenize:Vut,defineTheme:Wut,setTheme:yut,remeasureFonts:Qut,registerCommand:Mut,registerLinkOpener:wut,registerEditorOpener:Tut,AccessibilitySupport:h7,ContentWidgetPositionPreference:b7,CursorChangeReason:U7,DefaultEndOfLine:F7,EditorAutoIndentStrategy:Z7,EditorOption:S7,EndOfLinePreference:N7,EndOfLineSequence:R7,MinimapPosition:v7,MinimapSectionHeaderStyle:k7,MouseTargetType:x7,OverlayWidgetPositionPreference:D7,OverviewRulerLane:G7,GlyphMarginLane:V7,RenderLineNumbersType:Y7,RenderMinimap:_7,ScrollbarVisibility:O7,ScrollType:z7,TextEditorCursorBlinkingStyle:$7,TextEditorCursorStyle:e8,TrackedRangeStickiness:t8,WrappingIndent:i8,InjectedTextCursorStops:Q7,PositionAffinity:X7,ShowLightbulbIconMode:P7,ConfigurationChangedEvent:pZe,BareFontInfo:IS,FontInfo:g8,TextModelResolvedOptions:gD,FindMatch:KB,ApplyUpdateResult:zC,EditorZoom:kh,createMultiFileDiffEditor:out,EditorType:pk,EditorOptions:Up}}function But(s,e){if(!e||!Array.isArray(e))return!1;for(const t of e)if(!s(t))return!1;return!0}function QI(s,e){return typeof s=="boolean"?s:e}function Uge(s,e){return typeof s=="string"?s:e}function Lut(s){const e={};for(const t of s)e[t]=!0;return e}function Fge(s,e=!1){e&&(s=s.map(function(i){return i.toLowerCase()}));const t=Lut(s);return e?function(i){return t[i.toLowerCase()]!==void 0&&t.hasOwnProperty(i.toLowerCase())}:function(i){return t[i]!==void 0&&t.hasOwnProperty(i)}}function w$(s,e,t){e=e.replace(/@@/g,"");let i=0,n;do n=!1,e=e.replace(/@(\w+)/g,function(r,l){n=!0;let a="";if(typeof s[l]=="string")a=s[l];else if(s[l]&&s[l]instanceof RegExp)a=s[l].source;else throw s[l]===void 0?qs(s,"language definition does not contain attribute '"+l+"', used at: "+e):qs(s,"attribute reference '"+l+"' must be a string, used at: "+e);return $Z(a)?"":"(?:"+a+")"}),i++;while(n&&i<5);e=e.replace(/\x01/g,"@");const o=(s.ignoreCase?"i":"")+(s.unicode?"u":"");if(t&&e.match(/\$[sS](\d\d?)/g)){let l=null,a=null;return d=>(a&&l===d||(l=d,a=new RegExp(Rlt(s,e,d),o)),a)}return new RegExp(e,o)}function vut(s,e,t,i){if(i<0)return s;if(i<e.length)return e[i];if(i>=100){i=i-100;const n=t.split(".");if(n.unshift(t),i<n.length)return n[i]}return null}function kut(s,e,t,i){let n=-1,o=t,r=t.match(/^\$(([sS]?)(\d\d?)|#)(.*)$/);r&&(r[3]&&(n=parseInt(r[3]),r[2]&&(n=n+100)),o=r[4]);let l="~",a=o;!o||o.length===0?(l="!=",a=""):/^\w*$/.test(a)?l="==":(r=o.match(/^(@|!@|~|!~|==|!=)(.*)$/),r&&(l=r[1],a=r[2]));let d;if((l==="~"||l==="!~")&&/^(\w|\|)*$/.test(a)){const c=Fge(a.split("|"),s.ignoreCase);d=function(h){return l==="~"?c(h):!c(h)}}else if(l==="@"||l==="!@"){const c=s[a];if(!c)throw qs(s,"the @ match target '"+a+"' is not defined, in rule: "+e);if(!But(function(u){return typeof u=="string"},c))throw qs(s,"the @ match target '"+a+"' must be an array of strings, in rule: "+e);const h=Fge(c,s.ignoreCase);d=function(u){return l==="@"?h(u):!h(u)}}else if(l==="~"||l==="!~")if(a.indexOf("$")<0){const c=w$(s,"^"+a+"$",!1);d=function(h){return l==="~"?c.test(h):!c.test(h)}}else d=function(c,h,u,m){return w$(s,"^"+NU(s,a,h,u,m)+"$",!1).test(c)};else if(a.indexOf("$")<0){const c=If(s,a);d=function(h){return l==="=="?h===c:h!==c}}else{const c=If(s,a);d=function(h,u,m,p,g){const f=NU(s,c,u,m,p);return l==="=="?h===f:h!==f}}return n===-1?{name:t,value:i,test:function(c,h,u,m){return d(c,c,h,u,m)}}:{name:t,value:i,test:function(c,h,u,m){const p=vut(c,h,u,n);return d(p||"",c,h,u,m)}}}function T$(s,e,t){if(t){if(typeof t=="string")return t;if(t.token||t.token===""){if(typeof t.token!="string")throw qs(s,"a 'token' attribute must be of type string, in rule: "+e);{const i={token:t.token};if(t.token.indexOf("$")>=0&&(i.tokenSubst=!0),typeof t.bracket=="string")if(t.bracket==="@open")i.bracket=1;else if(t.bracket==="@close")i.bracket=-1;else throw qs(s,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+e);if(t.next){if(typeof t.next!="string")throw qs(s,"the next state must be a string value in rule: "+e);{let n=t.next;if(!/^(@pop|@push|@popall)$/.test(n)&&(n[0]==="@"&&(n=n.substr(1)),n.indexOf("$")<0&&!Vlt(s,NU(s,n,"",[],""))))throw qs(s,"the next state '"+t.next+"' is not defined in rule: "+e);i.next=n}}return typeof t.goBack=="number"&&(i.goBack=t.goBack),typeof t.switchTo=="string"&&(i.switchTo=t.switchTo),typeof t.log=="string"&&(i.log=t.log),typeof t.nextEmbedded=="string"&&(i.nextEmbedded=t.nextEmbedded,s.usesEmbedded=!0),i}}else if(Array.isArray(t)){const i=[];for(let n=0,o=t.length;n<o;n++)i[n]=T$(s,e,t[n]);return{group:i}}else if(t.cases){const i=[];for(const o in t.cases)if(t.cases.hasOwnProperty(o)){const r=T$(s,e,t.cases[o]);o==="@default"||o==="@"||o===""?i.push({test:void 0,value:r,name:o}):o==="@eos"?i.push({test:function(l,a,d,c){return c},value:r,name:o}):i.push(kut(s,e,o,r))}const n=s.defaultToken;return{test:function(o,r,l,a){for(const d of i)if(!d.test||d.test(o,r,l,a))return d.value;return n}}}else throw qs(s,"an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: "+e)}else return{token:""}}class xut{constructor(e){this.regex=new RegExp(""),this.action={token:""},this.matchOnlyAtLineStart=!1,this.name="",this.name=e}setRegex(e,t){let i;if(typeof t=="string")i=t;else if(t instanceof RegExp)i=t.source;else throw qs(e,"rules must start with a match string or regular expression: "+this.name);this.matchOnlyAtLineStart=i.length>0&&i[0]==="^",this.name=this.name+": "+i,this.regex=w$(e,"^(?:"+(this.matchOnlyAtLineStart?i.substr(1):i)+")",!0)}setAction(e,t){this.action=T$(e,this.name,t)}resolveRegex(e){return this.regex instanceof RegExp?this.regex:this.regex(e)}}function yWe(s,e){if(!e||typeof e!="object")throw new Error("Monarch: expecting a language definition object");const t={languageId:s,includeLF:QI(e.includeLF,!1),noThrow:!1,maxStack:100,start:typeof e.start=="string"?e.start:null,ignoreCase:QI(e.ignoreCase,!1),unicode:QI(e.unicode,!1),tokenPostfix:Uge(e.tokenPostfix,"."+s),defaultToken:Uge(e.defaultToken,"source"),usesEmbedded:!1,stateNames:{},tokenizer:{},brackets:[]},i=e;i.languageId=s,i.includeLF=t.includeLF,i.ignoreCase=t.ignoreCase,i.unicode=t.unicode,i.noThrow=t.noThrow,i.usesEmbedded=t.usesEmbedded,i.stateNames=e.tokenizer,i.defaultToken=t.defaultToken;function n(r,l,a){for(const d of a){let c=d.include;if(c){if(typeof c!="string")throw qs(t,"an 'include' attribute must be a string at: "+r);if(c[0]==="@"&&(c=c.substr(1)),!e.tokenizer[c])throw qs(t,"include target '"+c+"' is not defined at: "+r);n(r+"."+c,l,e.tokenizer[c])}else{const h=new xut(r);if(Array.isArray(d)&&d.length>=1&&d.length<=3)if(h.setRegex(i,d[0]),d.length>=3)if(typeof d[1]=="string")h.setAction(i,{token:d[1],next:d[2]});else if(typeof d[1]=="object"){const u=d[1];u.next=d[2],h.setAction(i,u)}else throw qs(t,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+r);else h.setAction(i,d[1]);else{if(!d.regex)throw qs(t,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+r);d.name&&typeof d.name=="string"&&(h.name=d.name),d.matchOnlyAtStart&&(h.matchOnlyAtLineStart=QI(d.matchOnlyAtLineStart,!1)),h.setRegex(i,d.regex),h.setAction(i,d.action)}l.push(h)}}}if(!e.tokenizer||typeof e.tokenizer!="object")throw qs(t,"a language definition must define the 'tokenizer' attribute as an object");t.tokenizer=[];for(const r in e.tokenizer)if(e.tokenizer.hasOwnProperty(r)){t.start||(t.start=r);const l=e.tokenizer[r];t.tokenizer[r]=new Array,n("tokenizer."+r,t.tokenizer[r],l)}if(t.usesEmbedded=i.usesEmbedded,e.brackets){if(!Array.isArray(e.brackets))throw qs(t,"the 'brackets' attribute must be defined as an array")}else e.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const o=[];for(const r of e.brackets){let l=r;if(l&&Array.isArray(l)&&l.length===3&&(l={token:l[2],open:l[0],close:l[1]}),l.open===l.close)throw qs(t,"open and close brackets in a 'brackets' attribute must be different: "+l.open+`
- hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof l.open=="string"&&typeof l.token=="string"&&typeof l.close=="string")o.push({token:l.token+t.tokenPostfix,open:If(t,l.open),close:If(t,l.close)});else throw qs(t,"every element in the 'brackets' array must be a '{open,close,token}' object or array")}return t.brackets=o,t.noThrow=!0,t}function Iut(s){Vy.registerLanguage(s)}function Eut(){let s=[];return s=s.concat(Vy.getLanguages()),s}function Dut(s){return Ri.get(ao).languageIdCodec.encodeLanguageId(s)}function Gut(s,e){return Ri.withServices(()=>{const i=Ri.get(ao).onDidRequestRichLanguageFeatures(n=>{n===s&&(i.dispose(),e())});return i})}function Jut(s,e){return Ri.withServices(()=>{const i=Ri.get(ao).onDidRequestBasicLanguageFeatures(n=>{n===s&&(i.dispose(),e())});return i})}function Xut(s,e){if(!Ri.get(ao).isRegisteredLanguageId(s))throw new Error(`Cannot set configuration for unknown language ${s}`);return Ri.get(bo).register(s,e,100)}class Yut{constructor(e,t){this._languageId=e,this._actual=t}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize(e,t,i){if(typeof this._actual.tokenize=="function")return JL.adaptTokenize(this._languageId,this._actual,e,i);throw new Error("Not supported!")}tokenizeEncoded(e,t,i){const n=this._actual.tokenizeEncoded(e,i);return new V3(n.tokens,n.endState)}}class JL{constructor(e,t,i,n){this._languageId=e,this._actual=t,this._languageService=i,this._standaloneThemeService=n}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens(e,t){const i=[];let n=0;for(let o=0,r=e.length;o<r;o++){const l=e[o];let a=l.startIndex;o===0?a=0:a<n&&(a=n),i[o]=new JB(a,l.scopes,t),n=a}return i}static adaptTokenize(e,t,i,n){const o=t.tokenize(i,n),r=JL._toClassicTokens(o.tokens,e);let l;return o.endState.equals(n)?l=n:l=o.endState,new Vse(r,l)}tokenize(e,t,i){return JL.adaptTokenize(this._languageId,this._actual,e,i)}_toBinaryTokens(e,t){const i=e.encodeLanguageId(this._languageId),n=this._standaloneThemeService.getColorTheme().tokenTheme,o=[];let r=0,l=0;for(let d=0,c=t.length;d<c;d++){const h=t[d],u=n.match(i,h.scopes)|1024;if(r>0&&o[r-1]===u)continue;let m=h.startIndex;d===0?m=0:m<l&&(m=l),o[r++]=m,o[r++]=u,l=m}const a=new Uint32Array(r);for(let d=0;d<r;d++)a[d]=o[d];return a}tokenizeEncoded(e,t,i){const n=this._actual.tokenize(e,i),o=this._toBinaryTokens(this._languageService.languageIdCodec,n.tokens);let r;return n.endState.equals(i)?r=i:r=n.endState,new V3(o,r)}}function _ut(s){return typeof s.getInitialState=="function"}function zut(s){return"tokenizeEncoded"in s}function QWe(s){return s&&typeof s.then=="function"}function Out(s){const e=Ri.get(uh);if(s){const t=[null];for(let i=1,n=s.length;i<n;i++)t[i]=Je.fromHex(s[i]);e.setColorMapOverride(t)}else e.setColorMapOverride(null)}function MWe(s,e){return zut(e)?new Yut(s,e):new JL(s,e,Ri.get(ao),Ri.get(uh))}function Kre(s,e){const t=new SPe(async()=>{const i=await Promise.resolve(e.create());return i?_ut(i)?MWe(s,i):new wL(Ri.get(ao),Ri.get(uh),s,yWe(s,i),Ri.get(Hi)):null});return Ro.registerFactory(s,t)}function jut(s,e){if(!Ri.get(ao).isRegisteredLanguageId(s))throw new Error(`Cannot set tokens provider for unknown language ${s}`);return QWe(e)?Kre(s,{create:()=>e}):Ro.register(s,MWe(s,e))}function Put(s,e){const t=i=>new wL(Ri.get(ao),Ri.get(uh),s,yWe(s,i),Ri.get(Hi));return QWe(e)?Kre(s,{create:()=>e}):Ro.register(s,t(e))}function Hut(s,e){return Ri.get(xt).referenceProvider.register(s,e)}function Kut(s,e){return Ri.get(xt).renameProvider.register(s,e)}function qut(s,e){return Ri.get(xt).newSymbolNamesProvider.register(s,e)}function $ut(s,e){return Ri.get(xt).signatureHelpProvider.register(s,e)}function emt(s,e){return Ri.get(xt).hoverProvider.register(s,{provideHover:async(i,n,o,r)=>{const l=i.getWordAtPosition(n);return Promise.resolve(e.provideHover(i,n,o,r)).then(a=>{if(a)return!a.range&&l&&(a.range=new z(n.lineNumber,l.startColumn,n.lineNumber,l.endColumn)),a.range||(a.range=new z(n.lineNumber,n.column,n.lineNumber,n.column)),a})}})}function tmt(s,e){return Ri.get(xt).documentSymbolProvider.register(s,e)}function imt(s,e){return Ri.get(xt).documentHighlightProvider.register(s,e)}function nmt(s,e){return Ri.get(xt).linkedEditingRangeProvider.register(s,e)}function smt(s,e){return Ri.get(xt).definitionProvider.register(s,e)}function omt(s,e){return Ri.get(xt).implementationProvider.register(s,e)}function rmt(s,e){return Ri.get(xt).typeDefinitionProvider.register(s,e)}function lmt(s,e){return Ri.get(xt).codeLensProvider.register(s,e)}function amt(s,e,t){return Ri.get(xt).codeActionProvider.register(s,{providedCodeActionKinds:t==null?void 0:t.providedCodeActionKinds,documentation:t==null?void 0:t.documentation,provideCodeActions:(n,o,r,l)=>{const d=Ri.get(i0).read({resource:n.uri}).filter(c=>z.areIntersectingOrTouching(c,o));return e.provideCodeActions(n,o,{markers:d,only:r.only,trigger:r.trigger},l)},resolveCodeAction:e.resolveCodeAction})}function dmt(s,e){return Ri.get(xt).documentFormattingEditProvider.register(s,e)}function cmt(s,e){return Ri.get(xt).documentRangeFormattingEditProvider.register(s,e)}function hmt(s,e){return Ri.get(xt).onTypeFormattingEditProvider.register(s,e)}function umt(s,e){return Ri.get(xt).linkProvider.register(s,e)}function mmt(s,e){return Ri.get(xt).completionProvider.register(s,e)}function pmt(s,e){return Ri.get(xt).colorProvider.register(s,e)}function gmt(s,e){return Ri.get(xt).foldingRangeProvider.register(s,e)}function fmt(s,e){return Ri.get(xt).declarationProvider.register(s,e)}function bmt(s,e){return Ri.get(xt).selectionRangeProvider.register(s,e)}function Umt(s,e){return Ri.get(xt).documentSemanticTokensProvider.register(s,e)}function Fmt(s,e){return Ri.get(xt).documentRangeSemanticTokensProvider.register(s,e)}function Amt(s,e){return Ri.get(xt).inlineCompletionsProvider.register(s,e)}function Zmt(s,e){return Ri.get(xt).inlineEditProvider.register(s,e)}function Smt(s,e){return Ri.get(xt).inlayHintsProvider.register(s,e)}function Nmt(){return{register:Iut,getLanguages:Eut,onLanguage:Gut,onLanguageEncountered:Jut,getEncodedLanguageId:Dut,setLanguageConfiguration:Xut,setColorMap:Out,registerTokensProviderFactory:Kre,setTokensProvider:jut,setMonarchTokensProvider:Put,registerReferenceProvider:Hut,registerRenameProvider:Kut,registerNewSymbolNameProvider:qut,registerCompletionItemProvider:mmt,registerSignatureHelpProvider:$ut,registerHoverProvider:emt,registerDocumentSymbolProvider:tmt,registerDocumentHighlightProvider:imt,registerLinkedEditingRangeProvider:nmt,registerDefinitionProvider:smt,registerImplementationProvider:omt,registerTypeDefinitionProvider:rmt,registerCodeLensProvider:lmt,registerCodeActionProvider:amt,registerDocumentFormattingEditProvider:dmt,registerDocumentRangeFormattingEditProvider:cmt,registerOnTypeFormattingEditProvider:hmt,registerLinkProvider:umt,registerColorProvider:pmt,registerFoldingRangeProvider:gmt,registerDeclarationProvider:fmt,registerSelectionRangeProvider:bmt,registerDocumentSemanticTokensProvider:Umt,registerDocumentRangeSemanticTokensProvider:Fmt,registerInlineCompletionsProvider:Amt,registerInlineEditProvider:Zmt,registerInlayHintsProvider:Smt,DocumentHighlightKind:A7,CompletionItemKind:p7,CompletionItemTag:g7,CompletionItemInsertTextRule:m7,SymbolKind:K7,SymbolTag:q7,IndentAction:y7,CompletionTriggerKind:f7,SignatureHelpTriggerKind:H7,InlayHintKind:M7,InlineCompletionTriggerKind:w7,InlineEditTriggerKind:T7,CodeActionTriggerType:u7,NewSymbolNameTag:I7,NewSymbolNameTriggerKind:E7,PartialAcceptTriggerKind:J7,HoverVerbosityAction:W7,FoldingRangeKind:BF,SelectedSuggestionInfo:wZe}}const qre=un("IEditorCancelService"),wWe=new yt("cancellableOperation",!1,F("cancellableOperation","Whether the editor runs a cancellable operation, e.g. like 'Peek References'"));Fn(qre,class{constructor(){this._tokens=new WeakMap}add(s,e){let t=this._tokens.get(s);t||(t=s.invokeWithinContext(n=>{const o=wWe.bindTo(n.get(fi)),r=new Ia;return{key:o,tokens:r}}),this._tokens.set(s,t));let i;return t.key.set(!0),i=t.tokens.push(e),()=>{i&&(i(),t.key.set(!t.tokens.isEmpty()),i=void 0)}}cancel(s){const e=this._tokens.get(s);if(!e)return;const t=e.tokens.pop();t&&(t.cancel(),e.key.set(!e.tokens.isEmpty()))}},1);class Rmt extends go{constructor(e,t){super(t),this.editor=e,this._unregister=e.invokeWithinContext(i=>i.get(qre).add(e,this))}dispose(){this._unregister(),super.dispose()}}Vt(new class extends Nr{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:wWe})}runEditorCommand(s,e){s.get(qre).cancel(e)}});let TWe=class C${constructor(e,t){if(this.flags=t,this.flags&1){const i=e.getModel();this.modelVersionId=i?bN("{0}#{1}",i.uri.toString(),i.getVersionId()):null}else this.modelVersionId=null;this.flags&4?this.position=e.getPosition():this.position=null,this.flags&2?this.selection=e.getSelection():this.selection=null,this.flags&8?(this.scrollLeft=e.getScrollLeft(),this.scrollTop=e.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(e){if(!(e instanceof C$))return!1;const t=e;return!(this.modelVersionId!==t.modelVersionId||this.scrollLeft!==t.scrollLeft||this.scrollTop!==t.scrollTop||!this.position&&t.position||this.position&&!t.position||this.position&&t.position&&!this.position.equals(t.position)||!this.selection&&t.selection||this.selection&&!t.selection||this.selection&&t.selection&&!this.selection.equalsRange(t.selection))}validate(e){return this._equals(new C$(e,this.flags))}};class _F extends Rmt{constructor(e,t,i,n){super(e,n),this._listener=new De,t&4&&this._listener.add(e.onDidChangeCursorPosition(o=>{(!i||!z.containsPosition(i,o.position))&&this.cancel()})),t&2&&this._listener.add(e.onDidChangeCursorSelection(o=>{(!i||!z.containsRange(i,o.selection))&&this.cancel()})),t&8&&this._listener.add(e.onDidScrollChange(o=>this.cancel())),t&1&&(this._listener.add(e.onDidChangeModel(o=>this.cancel())),this._listener.add(e.onDidChangeModelContent(o=>this.cancel())))}dispose(){this._listener.dispose(),super.dispose()}}class $re extends go{constructor(e,t){super(t),this._listener=e.onDidChangeContent(()=>this.cancel())}dispose(){this._listener.dispose(),super.dispose()}}function jg(s){return s&&typeof s.getEditorType=="function"?s.getEditorType()===pk.ICodeEditor:!1}function ele(s){return s&&typeof s.getEditorType=="function"?s.getEditorType()===pk.IDiffEditor:!1}function Vmt(s){return!!s&&typeof s=="object"&&typeof s.onDidChangeActiveEditor=="function"}function CWe(s){return jg(s)?s:ele(s)?s.getModifiedEditor():Vmt(s)&&jg(s.activeCodeEditor)?s.activeCodeEditor:null}class zy{static _handleEolEdits(e,t){let i;const n=[];for(const o of t)typeof o.eol=="number"&&(i=o.eol),o.range&&typeof o.text=="string"&&n.push(o);return typeof i=="number"&&e.hasModel()&&e.getModel().pushEOL(i),n}static _isFullModelReplaceEdit(e,t){if(!e.hasModel())return!1;const i=e.getModel(),n=i.validateRange(t.range);return i.getFullModelRange().equalsRange(n)}static execute(e,t,i){i&&e.pushUndoStop();const n=mp.capture(e),o=zy._handleEolEdits(e,t);o.length===1&&zy._isFullModelReplaceEdit(e,o[0])?e.executeEdits("formatEditsCommand",o.map(r=>mo.replace(z.lift(r.range),r.text))):e.executeEdits("formatEditsCommand",o.map(r=>mo.replaceMove(z.lift(r.range),r.text))),i&&e.pushUndoStop(),n.restoreRelativeVerticalPositionOfCursor(e)}}class Age{constructor(e){this.value=e,this._lower=e.toLowerCase()}static toKey(e){return typeof e=="string"?e.toLowerCase():e._lower}}class Wmt{constructor(e){if(this._set=new Set,e)for(const t of e)this.add(t)}add(e){this._set.add(Age.toKey(e))}has(e){return this._set.has(Age.toKey(e))}}function BWe(s,e,t){const i=[],n=new Wmt,o=s.ordered(t);for(const l of o)i.push(l),l.extensionId&&n.add(l.extensionId);const r=e.ordered(t);for(const l of r){if(l.extensionId){if(n.has(l.extensionId))continue;n.add(l.extensionId)}i.push({displayName:l.displayName,extensionId:l.extensionId,provideDocumentFormattingEdits(a,d,c){return l.provideDocumentRangeFormattingEdits(a,a.getFullModelRange(),d,c)}})}return i}const WB=class WB{static setFormatterSelector(e){return{dispose:WB._selectors.unshift(e)}}static async select(e,t,i,n){if(e.length===0)return;const o=Zn.first(WB._selectors);if(o)return await o(e,t,i,n)}};WB._selectors=new Ia;let XL=WB;async function LWe(s,e,t,i,n,o,r){const l=s.get(ti),{documentRangeFormattingEditProvider:a}=s.get(xt),d=jg(e)?e.getModel():e,c=a.ordered(d),h=await XL.select(c,d,i,2);h&&(n.report(h),await l.invokeFunction(ymt,h,e,t,o,r))}async function ymt(s,e,t,i,n,o){var b,U;const r=s.get(Ld),l=s.get(Cl),a=s.get(oA);let d,c;jg(t)?(d=t.getModel(),c=new _F(t,5,void 0,n)):(d=t,c=new $re(t,n));const h=[];let u=0;for(const S of pse(i).sort(z.compareRangesUsingStarts))u>0&&z.areIntersectingOrTouching(h[u-1],S)?h[u-1]=z.fromPositions(h[u-1].getStartPosition(),S.getEndPosition()):u=h.push(S);const m=async S=>{var R,y;l.trace("[format][provideDocumentRangeFormattingEdits] (request)",(R=e.extensionId)==null?void 0:R.value,S);const Z=await e.provideDocumentRangeFormattingEdits(d,S,d.getFormattingOptions(),c.token)||[];return l.trace("[format][provideDocumentRangeFormattingEdits] (response)",(y=e.extensionId)==null?void 0:y.value,Z),Z},p=(S,Z)=>{if(!S.length||!Z.length)return!1;const R=S.reduce((y,N)=>z.plusRange(y,N.range),S[0].range);if(!Z.some(y=>z.intersectRanges(R,y.range)))return!1;for(const y of S)for(const N of Z)if(z.intersectRanges(y.range,N.range))return!0;return!1},g=[],f=[];try{if(typeof e.provideDocumentRangesFormattingEdits=="function"){l.trace("[format][provideDocumentRangeFormattingEdits] (request)",(b=e.extensionId)==null?void 0:b.value,h);const S=await e.provideDocumentRangesFormattingEdits(d,h,d.getFormattingOptions(),c.token)||[];l.trace("[format][provideDocumentRangeFormattingEdits] (response)",(U=e.extensionId)==null?void 0:U.value,S),f.push(S)}else{for(const S of h){if(c.token.isCancellationRequested)return!0;f.push(await m(S))}for(let S=0;S<h.length;++S)for(let Z=S+1;Z<h.length;++Z){if(c.token.isCancellationRequested)return!0;if(p(f[S],f[Z])){const R=z.plusRange(h[S],h[Z]),y=await m(R);h.splice(Z,1),h.splice(S,1),h.push(R),f.splice(Z,1),f.splice(S,1),f.push(y),S=0,Z=0}}}for(const S of f){if(c.token.isCancellationRequested)return!0;const Z=await r.computeMoreMinimalEdits(d.uri,S);Z&&g.push(...Z)}}finally{c.dispose()}if(g.length===0)return!1;if(jg(t))zy.execute(t,g,!0),t.revealPositionInCenterIfOutsideViewport(t.getPosition(),1);else{const[{range:S}]=g,Z=new _t(S.startLineNumber,S.startColumn,S.endLineNumber,S.endColumn);d.pushEditOperations([Z],g.map(R=>({text:R.text,range:z.lift(R.range),forceMoveMarkers:!0})),R=>{for(const{range:y}of R)if(z.areIntersectingOrTouching(y,Z))return[new _t(y.startLineNumber,y.startColumn,y.endLineNumber,y.endColumn)];return null})}return a.playSignal(Gc.format,{userGesture:o}),!0}async function Qmt(s,e,t,i,n,o){const r=s.get(ti),l=s.get(xt),a=jg(e)?e.getModel():e,d=BWe(l.documentFormattingEditProvider,l.documentRangeFormattingEditProvider,a),c=await XL.select(d,a,t,1);c&&(i.report(c),await r.invokeFunction(Mmt,c,e,t,n,o))}async function Mmt(s,e,t,i,n,o){const r=s.get(Ld),l=s.get(oA);let a,d;jg(t)?(a=t.getModel(),d=new _F(t,5,void 0,n)):(a=t,d=new $re(t,n));let c;try{const h=await e.provideDocumentFormattingEdits(a,a.getFormattingOptions(),d.token);if(c=await r.computeMoreMinimalEdits(a.uri,h),d.token.isCancellationRequested)return!0}finally{d.dispose()}if(!c||c.length===0)return!1;if(jg(t))zy.execute(t,c,i!==2),i!==2&&t.revealPositionInCenterIfOutsideViewport(t.getPosition(),1);else{const[{range:h}]=c,u=new _t(h.startLineNumber,h.startColumn,h.endLineNumber,h.endColumn);a.pushEditOperations([u],c.map(m=>({text:m.text,range:z.lift(m.range),forceMoveMarkers:!0})),m=>{for(const{range:p}of m)if(z.areIntersectingOrTouching(p,u))return[new _t(p.startLineNumber,p.startColumn,p.endLineNumber,p.endColumn)];return null})}return l.playSignal(Gc.format,{userGesture:o}),!0}async function wmt(s,e,t,i,n,o){const r=e.documentRangeFormattingEditProvider.ordered(t);for(const l of r){const a=await Promise.resolve(l.provideDocumentRangeFormattingEdits(t,i,n,o)).catch(vo);if(ba(a))return await s.computeMoreMinimalEdits(t.uri,a)}}async function Tmt(s,e,t,i,n){const o=BWe(e.documentFormattingEditProvider,e.documentRangeFormattingEditProvider,t);for(const r of o){const l=await Promise.resolve(r.provideDocumentFormattingEdits(t,i,n)).catch(vo);if(ba(l))return await s.computeMoreMinimalEdits(t.uri,l)}}function vWe(s,e,t,i,n,o,r){const l=e.onTypeFormattingEditProvider.ordered(t);return l.length===0||l[0].autoFormatTriggerCharacters.indexOf(n)<0?Promise.resolve(void 0):Promise.resolve(l[0].provideOnTypeFormattingEdits(t,i,n,o,r)).catch(vo).then(a=>s.computeMoreMinimalEdits(t.uri,a))}Sn.registerCommand("_executeFormatRangeProvider",async function(s,...e){const[t,i,n]=e;vn(ni.isUri(t)),vn(z.isIRange(i));const o=s.get(Td),r=s.get(Ld),l=s.get(xt),a=await o.createModelReference(t);try{return wmt(r,l,a.object.textEditorModel,z.lift(i),n,Gi.None)}finally{a.dispose()}});Sn.registerCommand("_executeFormatDocumentProvider",async function(s,...e){const[t,i]=e;vn(ni.isUri(t));const n=s.get(Td),o=s.get(Ld),r=s.get(xt),l=await n.createModelReference(t);try{return Tmt(o,r,l.object.textEditorModel,i,Gi.None)}finally{l.dispose()}});Sn.registerCommand("_executeFormatOnTypeProvider",async function(s,...e){const[t,i,n,o]=e;vn(ni.isUri(t)),vn(ge.isIPosition(i)),vn(typeof n=="string");const r=s.get(Td),l=s.get(Ld),a=s.get(xt),d=await r.createModelReference(t);try{return vWe(l,a,d.object.textEditorModel,ge.lift(i),n,o,Gi.None)}finally{d.dispose()}});Up.wrappingIndent.defaultValue=0;Up.glyphMargin.defaultValue=!1;Up.autoIndent.defaultValue=3;Up.overviewRulerLanes.defaultValue=2;XL.setFormatterSelector((s,e,t)=>Promise.resolve(s[0]));const qa=TZe();qa.editor=Cut();qa.languages=Nmt();const Cmt=qa.CancellationTokenSource,Bmt=qa.Emitter,Lmt=qa.KeyCode,vmt=qa.KeyMod,kmt=qa.Position,xmt=qa.Range,Imt=qa.Selection,Emt=qa.SelectionDirection,Dmt=qa.MarkerSeverity,Gmt=qa.MarkerTag,Jmt=qa.Uri,Xmt=qa.Token,B$=qa.editor,Ymt=qa.languages,nH=globalThis.MonacoEnvironment;(nH!=null&&nH.globalAPI||typeof define=="function"&&define.amd)&&(globalThis.monaco=qa);typeof globalThis.require<"u"&&typeof globalThis.require.config=="function"&&globalThis.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]});const Uk=Object.freeze(Object.defineProperty({__proto__:null,CancellationTokenSource:Cmt,Emitter:Bmt,KeyCode:Lmt,KeyMod:vmt,MarkerSeverity:Dmt,MarkerTag:Gmt,Position:kmt,Range:xmt,Selection:Imt,SelectionDirection:Emt,Token:Xmt,Uri:Jmt,editor:B$,languages:Ymt},Symbol.toStringTag,{value:"Module"}));/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var _mt=Object.defineProperty,zmt=Object.getOwnPropertyDescriptor,Omt=Object.getOwnPropertyNames,jmt=Object.prototype.hasOwnProperty,Zge=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Omt(e))!jmt.call(s,n)&&n!==t&&_mt(s,n,{get:()=>e[n],enumerable:!(i=zmt(e,n))||i.enumerable});return s},Pmt=(s,e,t)=>(Zge(s,e,"default"),t&&Zge(t,e,"default")),kT={};Pmt(kT,Uk);var kWe={},sH={},Hmt=class xWe{static getOrCreate(e){return sH[e]||(sH[e]=new xWe(e)),sH[e]}constructor(e){this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((t,i)=>{this._lazyLoadPromiseResolve=t,this._lazyLoadPromiseReject=i})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,kWe[this._languageId].loader().then(e=>this._lazyLoadPromiseResolve(e),e=>this._lazyLoadPromiseReject(e))),this._lazyLoadPromise}};function di(s){const e=s.id;kWe[e]=s,kT.languages.register(s);const t=Hmt.getOrCreate(e);kT.languages.registerTokensProviderFactory(e,{create:async()=>(await t.load()).language}),kT.languages.onLanguageEncountered(e,async()=>{const i=await t.load();kT.languages.setLanguageConfiguration(e,i.conf)})}di({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:()=>ii(()=>import("./abap-cc08d55d.js"),[],import.meta.url)});di({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:()=>ii(()=>import("./apex-1f57875b.js"),[],import.meta.url)});di({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:()=>ii(()=>import("./azcli-01f8ceb4.js"),[],import.meta.url)});di({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:()=>ii(()=>import("./bat-927b90fa.js"),[],import.meta.url)});di({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:()=>ii(()=>import("./bicep-b6714a33.js"),[],import.meta.url)});di({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:()=>ii(()=>import("./cameligo-c6736a8d.js"),[],import.meta.url)});di({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:()=>ii(()=>import("./clojure-e525a5e8.js"),[],import.meta.url)});di({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:()=>ii(()=>import("./coffee-42de5eb2.js"),[],import.meta.url)});di({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:()=>ii(()=>import("./cpp-18c0fc4b.js"),[],import.meta.url)});di({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:()=>ii(()=>import("./cpp-18c0fc4b.js"),[],import.meta.url)});di({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:()=>ii(()=>import("./csharp-a63eb606.js"),[],import.meta.url)});di({id:"csp",extensions:[".csp"],aliases:["CSP","csp"],loader:()=>ii(()=>import("./csp-165e95c8.js"),[],import.meta.url)});di({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:()=>ii(()=>import("./css-982ec3d9.js"),[],import.meta.url)});di({id:"cypher",extensions:[".cypher",".cyp"],aliases:["Cypher","OpenCypher"],loader:()=>ii(()=>import("./cypher-2044d661.js"),[],import.meta.url)});di({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:()=>ii(()=>import("./dart-95d35cad.js"),[],import.meta.url)});di({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:()=>ii(()=>import("./dockerfile-4446a57c.js"),[],import.meta.url)});di({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:()=>ii(()=>import("./ecl-12a2dbee.js"),[],import.meta.url)});di({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:()=>ii(()=>import("./elixir-02aec513.js"),[],import.meta.url)});di({id:"flow9",extensions:[".flow"],aliases:["Flow9","Flow","flow9","flow"],loader:()=>ii(()=>import("./flow9-a8f524dc.js"),[],import.meta.url)});di({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:()=>ii(()=>import("./fsharp-7e8e6a66.js"),[],import.meta.url)});di({id:"freemarker2",extensions:[".ftl",".ftlh",".ftlx"],aliases:["FreeMarker2","Apache FreeMarker2"],loader:()=>ii(()=>import("./freemarker2-db756cc4.js"),["./freemarker2-db756cc4.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url).then(s=>s.TagAutoInterpolationDollar)});di({id:"freemarker2.tag-angle.interpolation-dollar",aliases:["FreeMarker2 (Angle/Dollar)","Apache FreeMarker2 (Angle/Dollar)"],loader:()=>ii(()=>import("./freemarker2-db756cc4.js"),["./freemarker2-db756cc4.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url).then(s=>s.TagAngleInterpolationDollar)});di({id:"freemarker2.tag-bracket.interpolation-dollar",aliases:["FreeMarker2 (Bracket/Dollar)","Apache FreeMarker2 (Bracket/Dollar)"],loader:()=>ii(()=>import("./freemarker2-db756cc4.js"),["./freemarker2-db756cc4.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url).then(s=>s.TagBracketInterpolationDollar)});di({id:"freemarker2.tag-angle.interpolation-bracket",aliases:["FreeMarker2 (Angle/Bracket)","Apache FreeMarker2 (Angle/Bracket)"],loader:()=>ii(()=>import("./freemarker2-db756cc4.js"),["./freemarker2-db756cc4.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url).then(s=>s.TagAngleInterpolationBracket)});di({id:"freemarker2.tag-bracket.interpolation-bracket",aliases:["FreeMarker2 (Bracket/Bracket)","Apache FreeMarker2 (Bracket/Bracket)"],loader:()=>ii(()=>import("./freemarker2-db756cc4.js"),["./freemarker2-db756cc4.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url).then(s=>s.TagBracketInterpolationBracket)});di({id:"freemarker2.tag-auto.interpolation-dollar",aliases:["FreeMarker2 (Auto/Dollar)","Apache FreeMarker2 (Auto/Dollar)"],loader:()=>ii(()=>import("./freemarker2-db756cc4.js"),["./freemarker2-db756cc4.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url).then(s=>s.TagAutoInterpolationDollar)});di({id:"freemarker2.tag-auto.interpolation-bracket",aliases:["FreeMarker2 (Auto/Bracket)","Apache FreeMarker2 (Auto/Bracket)"],loader:()=>ii(()=>import("./freemarker2-db756cc4.js"),["./freemarker2-db756cc4.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url).then(s=>s.TagAutoInterpolationBracket)});di({id:"go",extensions:[".go"],aliases:["Go"],loader:()=>ii(()=>import("./go-9d89e322.js"),[],import.meta.url)});di({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:()=>ii(()=>import("./graphql-ed4730b7.js"),[],import.meta.url)});di({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:()=>ii(()=>import("./handlebars-32d980e8.js"),["./handlebars-32d980e8.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:()=>ii(()=>import("./hcl-fb184eb8.js"),[],import.meta.url)});di({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:()=>ii(()=>import("./html-b537c656.js"),["./html-b537c656.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:()=>ii(()=>import("./ini-d685139c.js"),[],import.meta.url)});di({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:()=>ii(()=>import("./java-e24ca7a1.js"),[],import.meta.url)});di({id:"javascript",extensions:[".js",".es6",".jsx",".mjs",".cjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:()=>ii(()=>import("./javascript-2cb32774.js"),["./javascript-2cb32774.js","./typescript-b06afdc5.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:()=>ii(()=>import("./julia-2ac6394f.js"),[],import.meta.url)});di({id:"kotlin",extensions:[".kt",".kts"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:()=>ii(()=>import("./kotlin-8fc662c8.js"),[],import.meta.url)});di({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:()=>ii(()=>import("./less-bfd58748.js"),[],import.meta.url)});di({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:()=>ii(()=>import("./lexon-bac7d755.js"),[],import.meta.url)});di({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:()=>ii(()=>import("./lua-2826648b.js"),[],import.meta.url)});di({id:"liquid",extensions:[".liquid",".html.liquid"],aliases:["Liquid","liquid"],mimetypes:["application/liquid"],loader:()=>ii(()=>import("./liquid-d6a1026e.js"),["./liquid-d6a1026e.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:()=>ii(()=>import("./m3-3d2e9f6f.js"),[],import.meta.url)});di({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:()=>ii(()=>import("./markdown-661fcb5a.js"),[],import.meta.url)});di({id:"mdx",extensions:[".mdx"],aliases:["MDX","mdx"],loader:()=>ii(()=>import("./mdx-08e00e80.js"),["./mdx-08e00e80.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:()=>ii(()=>import("./mips-2dce1757.js"),[],import.meta.url)});di({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:()=>ii(()=>import("./msdax-00a309df.js"),[],import.meta.url)});di({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:()=>ii(()=>import("./mysql-98cf3b47.js"),[],import.meta.url)});di({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:()=>ii(()=>import("./objective-c-cc56e969.js"),[],import.meta.url)});di({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:()=>ii(()=>import("./pascal-81aa0fca.js"),[],import.meta.url)});di({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:()=>ii(()=>import("./pascaligo-48ad6fd9.js"),[],import.meta.url)});di({id:"perl",extensions:[".pl",".pm"],aliases:["Perl","pl"],loader:()=>ii(()=>import("./perl-88f67ba4.js"),[],import.meta.url)});di({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:()=>ii(()=>import("./pgsql-5ed4bbd0.js"),[],import.meta.url)});di({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:()=>ii(()=>import("./php-b4f95778.js"),[],import.meta.url)});di({id:"pla",extensions:[".pla"],loader:()=>ii(()=>import("./pla-5b1cff9f.js"),[],import.meta.url)});di({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:()=>ii(()=>import("./postiats-85929be7.js"),[],import.meta.url)});di({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:()=>ii(()=>import("./powerquery-b7a070c4.js"),[],import.meta.url)});di({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:()=>ii(()=>import("./powershell-b8a6d6cc.js"),[],import.meta.url)});di({id:"proto",extensions:[".proto"],aliases:["protobuf","Protocol Buffers"],loader:()=>ii(()=>import("./protobuf-05455955.js"),[],import.meta.url)});di({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:()=>ii(()=>import("./pug-90925ab8.js"),[],import.meta.url)});di({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:()=>ii(()=>import("./python-9e7e2e0e.js"),["./python-9e7e2e0e.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"qsharp",extensions:[".qs"],aliases:["Q#","qsharp"],loader:()=>ii(()=>import("./qsharp-a069f29b.js"),[],import.meta.url)});di({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:()=>ii(()=>import("./r-12e54150.js"),[],import.meta.url)});di({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:()=>ii(()=>import("./razor-199036a2.js"),["./razor-199036a2.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"redis",extensions:[".redis"],aliases:["redis"],loader:()=>ii(()=>import("./redis-bb3a1b76.js"),[],import.meta.url)});di({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:()=>ii(()=>import("./redshift-df35d8cf.js"),[],import.meta.url)});di({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:()=>ii(()=>import("./restructuredtext-d6d2caf0.js"),[],import.meta.url)});di({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:()=>ii(()=>import("./ruby-9316b7ff.js"),[],import.meta.url)});di({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:()=>ii(()=>import("./rust-21ab97eb.js"),[],import.meta.url)});di({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:()=>ii(()=>import("./sb-b997d7c8.js"),[],import.meta.url)});di({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:()=>ii(()=>import("./scala-400099bb.js"),[],import.meta.url)});di({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:()=>ii(()=>import("./scheme-b34f1909.js"),[],import.meta.url)});di({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:()=>ii(()=>import("./scss-04141591.js"),[],import.meta.url)});di({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:()=>ii(()=>import("./shell-1832544c.js"),[],import.meta.url)});di({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:()=>ii(()=>import("./solidity-895ee769.js"),[],import.meta.url)});di({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:()=>ii(()=>import("./sophia-3e132745.js"),[],import.meta.url)});di({id:"sparql",extensions:[".rq"],aliases:["sparql","SPARQL"],loader:()=>ii(()=>import("./sparql-e38155f4.js"),[],import.meta.url)});di({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:()=>ii(()=>import("./sql-528ba10f.js"),[],import.meta.url)});di({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib",".TcPOU",".TcDUT",".TcGVL",".TcIO"],aliases:["StructuredText","scl","stl"],loader:()=>ii(()=>import("./st-56011ceb.js"),[],import.meta.url)});di({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:()=>ii(()=>import("./swift-c11249a1.js"),[],import.meta.url)});di({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:()=>ii(()=>import("./systemverilog-6707b904.js"),[],import.meta.url)});di({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:()=>ii(()=>import("./systemverilog-6707b904.js"),[],import.meta.url)});di({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:()=>ii(()=>import("./tcl-5b54d5c8.js"),[],import.meta.url)});di({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:()=>ii(()=>import("./twig-6e0ba59b.js"),[],import.meta.url)});di({id:"typescript",extensions:[".ts",".tsx",".cts",".mts"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:()=>ii(()=>import("./typescript-b06afdc5.js"),["./typescript-b06afdc5.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"typespec",extensions:[".tsp"],aliases:["TypeSpec"],loader:()=>ii(()=>import("./typespec-cd8d2038.js"),[],import.meta.url)});di({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:()=>ii(()=>import("./vb-f5dd6a56.js"),[],import.meta.url)});di({id:"wgsl",extensions:[".wgsl"],aliases:["WebGPU Shading Language","WGSL","wgsl"],loader:()=>ii(()=>import("./wgsl-093fb352.js"),[],import.meta.url)});di({id:"xml",extensions:[".xml",".xsd",".dtd",".ascx",".csproj",".config",".props",".targets",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xslt",".xsl"],firstLine:"(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",aliases:["XML","xml"],mimetypes:["text/xml","application/xml","application/xaml+xml","application/xml-dtd"],loader:()=>ii(()=>import("./xml-7b00fbe1.js"),["./xml-7b00fbe1.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});di({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:()=>ii(()=>import("./yaml-8d0a8eb8.js"),["./yaml-8d0a8eb8.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)});/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var Kmt=Object.defineProperty,qmt=Object.getOwnPropertyDescriptor,$mt=Object.getOwnPropertyNames,ept=Object.prototype.hasOwnProperty,Sge=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $mt(e))!ept.call(s,n)&&n!==t&&Kmt(s,n,{get:()=>e[n],enumerable:!(i=qmt(e,n))||i.enumerable});return s},tpt=(s,e,t)=>(Sge(s,e,"default"),t&&Sge(t,e,"default")),wM={};tpt(wM,Uk);var tle=class{constructor(e,t,i){this._onDidChange=new wM.Emitter,this._languageId=e,this.setOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(e){this.setOptions(e)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},ile={validate:!0,lint:{compatibleVendorPrefixes:"ignore",vendorPrefix:"warning",duplicateProperties:"warning",emptyRules:"warning",importStatement:"ignore",boxModel:"ignore",universalSelector:"ignore",zeroUnits:"ignore",fontFaceProperties:"warning",hexColorLength:"error",argumentsInColorFunction:"error",unknownProperties:"warning",ieHack:"ignore",unknownVendorSpecificProperties:"ignore",propertyIgnoredDueToDisplay:"warning",important:"ignore",float:"ignore",idSelector:"ignore"},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:"collapse",maxPreserveNewLines:void 0,preserveNewLines:!0}},nle={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},IWe=new tle("css",ile,nle),EWe=new tle("scss",ile,nle),DWe=new tle("less",ile,nle);wM.languages.css={cssDefaults:IWe,lessDefaults:DWe,scssDefaults:EWe};function sle(){return ii(()=>import("./cssMode-e2235127.js"),["./cssMode-e2235127.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)}wM.languages.onLanguage("less",()=>{sle().then(s=>s.setupMode(DWe))});wM.languages.onLanguage("scss",()=>{sle().then(s=>s.setupMode(EWe))});wM.languages.onLanguage("css",()=>{sle().then(s=>s.setupMode(IWe))});/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var ipt=Object.defineProperty,npt=Object.getOwnPropertyDescriptor,spt=Object.getOwnPropertyNames,opt=Object.prototype.hasOwnProperty,Nge=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of spt(e))!opt.call(s,n)&&n!==t&&ipt(s,n,{get:()=>e[n],enumerable:!(i=npt(e,n))||i.enumerable});return s},rpt=(s,e,t)=>(Nge(s,e,"default"),t&&Nge(t,e,"default")),L9={};rpt(L9,Uk);var lpt=class{constructor(e,t,i){this._onDidChange=new L9.Emitter,this._languageId=e,this.setOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},apt={tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:"pre",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:"head, body, /html",wrapAttributes:"auto"},v9={format:apt,suggest:{},data:{useDefaultDataProvider:!0}};function k9(s){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:s===Z2,documentFormattingEdits:s===Z2,documentRangeFormattingEdits:s===Z2}}var Z2="html",Rge="handlebars",Vge="razor",GWe=x9(Z2,v9,k9(Z2)),dpt=GWe.defaults,JWe=x9(Rge,v9,k9(Rge)),cpt=JWe.defaults,XWe=x9(Vge,v9,k9(Vge)),hpt=XWe.defaults;L9.languages.html={htmlDefaults:dpt,razorDefaults:hpt,handlebarDefaults:cpt,htmlLanguageService:GWe,handlebarLanguageService:JWe,razorLanguageService:XWe,registerHTMLLanguageService:x9};function upt(){return ii(()=>import("./htmlMode-1c23ff66.js"),["./htmlMode-1c23ff66.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)}function x9(s,e=v9,t=k9(s)){const i=new lpt(s,e,t);let n;const o=L9.languages.onLanguage(s,async()=>{n=(await upt()).setupMode(i)});return{defaults:i,dispose(){o.dispose(),n==null||n.dispose(),n=void 0}}}/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var mpt=Object.defineProperty,ppt=Object.getOwnPropertyDescriptor,gpt=Object.getOwnPropertyNames,fpt=Object.prototype.hasOwnProperty,Wge=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of gpt(e))!fpt.call(s,n)&&n!==t&&mpt(s,n,{get:()=>e[n],enumerable:!(i=ppt(e,n))||i.enumerable});return s},bpt=(s,e,t)=>(Wge(s,e,"default"),t&&Wge(t,e,"default")),Fk={};bpt(Fk,Uk);var Upt=class{constructor(e,t,i){this._onDidChange=new Fk.Emitter,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},Fpt={validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:"warning",schemaValidation:"warning",comments:"error",trailingCommas:"error"},Apt={documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},YWe=new Upt("json",Fpt,Apt),Zpt=()=>_We().then(s=>s.getWorker());Fk.languages.json={jsonDefaults:YWe,getWorker:Zpt};function _We(){return ii(()=>import("./jsonMode-4dceae04.js"),["./jsonMode-4dceae04.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)}Fk.languages.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]});Fk.languages.onLanguage("json",()=>{_We().then(s=>s.setupMode(YWe))});/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var Spt=Object.defineProperty,Npt=Object.getOwnPropertyDescriptor,Rpt=Object.getOwnPropertyNames,Vpt=Object.prototype.hasOwnProperty,yge=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Rpt(e))!Vpt.call(s,n)&&n!==t&&Spt(s,n,{get:()=>e[n],enumerable:!(i=Npt(e,n))||i.enumerable});return s},Wpt=(s,e,t)=>(yge(s,e,"default"),t&&yge(t,e,"default")),ypt="5.4.5",Oy={};Wpt(Oy,Uk);var zWe=(s=>(s[s.None=0]="None",s[s.CommonJS=1]="CommonJS",s[s.AMD=2]="AMD",s[s.UMD=3]="UMD",s[s.System=4]="System",s[s.ES2015=5]="ES2015",s[s.ESNext=99]="ESNext",s))(zWe||{}),OWe=(s=>(s[s.None=0]="None",s[s.Preserve=1]="Preserve",s[s.React=2]="React",s[s.ReactNative=3]="ReactNative",s[s.ReactJSX=4]="ReactJSX",s[s.ReactJSXDev=5]="ReactJSXDev",s))(OWe||{}),jWe=(s=>(s[s.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",s[s.LineFeed=1]="LineFeed",s))(jWe||{}),PWe=(s=>(s[s.ES3=0]="ES3",s[s.ES5=1]="ES5",s[s.ES2015=2]="ES2015",s[s.ES2016=3]="ES2016",s[s.ES2017=4]="ES2017",s[s.ES2018=5]="ES2018",s[s.ES2019=6]="ES2019",s[s.ES2020=7]="ES2020",s[s.ESNext=99]="ESNext",s[s.JSON=100]="JSON",s[s.Latest=99]="Latest",s))(PWe||{}),HWe=(s=>(s[s.Classic=1]="Classic",s[s.NodeJs=2]="NodeJs",s))(HWe||{}),KWe=class{constructor(s,e,t,i,n){this._onDidChange=new Oy.Emitter,this._onDidExtraLibsChange=new Oy.Emitter,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(s),this.setDiagnosticsOptions(e),this.setWorkerOptions(t),this.setInlayHintsOptions(i),this.setModeConfiguration(n),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(s,e){let t;if(typeof e>"u"?t=`ts:extralib-${Math.random().toString(36).substring(2,15)}`:t=e,this._extraLibs[t]&&this._extraLibs[t].content===s)return{dispose:()=>{}};let i=1;return this._removedExtraLibs[t]&&(i=this._removedExtraLibs[t]+1),this._extraLibs[t]&&(i=this._extraLibs[t].version+1),this._extraLibs[t]={content:s,version:i},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let n=this._extraLibs[t];n&&n.version===i&&(delete this._extraLibs[t],this._removedExtraLibs[t]=i,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(s){for(const e in this._extraLibs)this._removedExtraLibs[e]=this._extraLibs[e].version;if(this._extraLibs=Object.create(null),s&&s.length>0)for(const e of s){const t=e.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,i=e.content;let n=1;this._removedExtraLibs[t]&&(n=this._removedExtraLibs[t]+1),this._extraLibs[t]={content:i,version:n}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(s){this._compilerOptions=s||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(s){this._diagnosticsOptions=s||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(s){this._workerOptions=s||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(s){this._inlayHintsOptions=s||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(s){}setEagerModelSync(s){this._eagerModelSync=s}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(s){this._modeConfiguration=s||Object.create(null),this._onDidChange.fire(void 0)}},Qpt=ypt,qWe={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},$We=new KWe({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},qWe),e1e=new KWe({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},qWe),Mpt=()=>I9().then(s=>s.getTypeScriptWorker()),wpt=()=>I9().then(s=>s.getJavaScriptWorker());Oy.languages.typescript={ModuleKind:zWe,JsxEmit:OWe,NewLineKind:jWe,ScriptTarget:PWe,ModuleResolutionKind:HWe,typescriptVersion:Qpt,typescriptDefaults:$We,javascriptDefaults:e1e,getTypeScriptWorker:Mpt,getJavaScriptWorker:wpt};function I9(){return ii(()=>import("./tsMode-ed03e872.js"),["./tsMode-ed03e872.js","./f41-b49fdff6.js","./request-32eaa594.js","./index-604327a1.js","./index-697a1a5f.css","./f41-c8f9dcec.css","./header-80d858fb.js","./header-0236da72.css","./f22-deb38015.js","./vue-flow-core-296bd702.js","./vue-flow-background-8a37d19c.js"],import.meta.url)}Oy.languages.onLanguage("typescript",()=>I9().then(s=>s.setupTypeScript($We)));Oy.languages.onLanguage("javascript",()=>I9().then(s=>s.setupJavaScript(e1e)));class Tpt extends Ha{constructor(){super({id:"diffEditor.toggleCollapseUnchangedRegions",title:Ni("toggleCollapseUnchangedRegions","Toggle Collapse Unchanged Regions"),icon:ct.map,toggled:Ge.has("config.diffEditor.hideUnchangedRegions.enabled"),precondition:Ge.has("isInDiffEditor"),menu:{when:Ge.has("isInDiffEditor"),id:Gt.EditorTitle,order:22,group:"navigation"}})}run(e,...t){const i=e.get(Hi),n=!i.getValue("diffEditor.hideUnchangedRegions.enabled");i.updateValue("diffEditor.hideUnchangedRegions.enabled",n)}}class t1e extends Ha{constructor(){super({id:"diffEditor.toggleShowMovedCodeBlocks",title:Ni("toggleShowMovedCodeBlocks","Toggle Show Moved Code Blocks"),precondition:Ge.has("isInDiffEditor")})}run(e,...t){const i=e.get(Hi),n=!i.getValue("diffEditor.experimental.showMoves");i.updateValue("diffEditor.experimental.showMoves",n)}}class i1e extends Ha{constructor(){super({id:"diffEditor.toggleUseInlineViewWhenSpaceIsLimited",title:Ni("toggleUseInlineViewWhenSpaceIsLimited","Toggle Use Inline View When Space Is Limited"),precondition:Ge.has("isInDiffEditor")})}run(e,...t){const i=e.get(Hi),n=!i.getValue("diffEditor.useInlineViewWhenSpaceIsLimited");i.updateValue("diffEditor.useInlineViewWhenSpaceIsLimited",n)}}const Ak=Ni("diffEditor","Diff Editor");class Cpt extends Fp{constructor(){super({id:"diffEditor.switchSide",title:Ni("switchSide","Switch Side"),icon:ct.arrowSwap,precondition:Ge.has("isInDiffEditor"),f1:!0,category:Ak})}runEditorCommand(e,t,i){const n=TM(e);if(n instanceof tb){if(i&&i.dryRun)return{destinationSelection:n.mapToOtherSide().destinationSelection};n.switchSide()}}}class Bpt extends Fp{constructor(){super({id:"diffEditor.exitCompareMove",title:Ni("exitCompareMove","Exit Compare Move"),icon:ct.close,precondition:$.comparingMovedCode,f1:!1,category:Ak,keybinding:{weight:1e4,primary:9}})}runEditorCommand(e,t,...i){const n=TM(e);n instanceof tb&&n.exitCompareMove()}}class Lpt extends Fp{constructor(){super({id:"diffEditor.collapseAllUnchangedRegions",title:Ni("collapseAllUnchangedRegions","Collapse All Unchanged Regions"),icon:ct.fold,precondition:Ge.has("isInDiffEditor"),f1:!0,category:Ak})}runEditorCommand(e,t,...i){const n=TM(e);n instanceof tb&&n.collapseAllUnchangedRegions()}}class vpt extends Fp{constructor(){super({id:"diffEditor.showAllUnchangedRegions",title:Ni("showAllUnchangedRegions","Show All Unchanged Regions"),icon:ct.unfold,precondition:Ge.has("isInDiffEditor"),f1:!0,category:Ak})}runEditorCommand(e,t,...i){const n=TM(e);n instanceof tb&&n.showAllUnchangedRegions()}}class L$ extends Ha{constructor(){super({id:"diffEditor.revert",title:Ni("revert","Revert"),f1:!1,category:Ak})}run(e,t){const i=kpt(e,t.originalUri,t.modifiedUri);i instanceof tb&&i.revertRangeMappings(t.mapping.innerChanges??[])}}const n1e=Ni("accessibleDiffViewer","Accessible Diff Viewer"),pz=class pz extends Ha{constructor(){super({id:pz.id,title:Ni("editor.action.accessibleDiffViewer.next","Go to Next Difference"),category:n1e,precondition:Ge.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(e){const t=TM(e);t==null||t.accessibleDiffViewerNext()}};pz.id="editor.action.accessibleDiffViewer.next";let YL=pz;const gz=class gz extends Ha{constructor(){super({id:gz.id,title:Ni("editor.action.accessibleDiffViewer.prev","Go to Previous Difference"),category:n1e,precondition:Ge.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(e){const t=TM(e);t==null||t.accessibleDiffViewerPrev()}};gz.id="editor.action.accessibleDiffViewer.prev";let _5=gz;function kpt(s,e,t){return s.get(kn).listDiffEditors().find(o=>{var a,d;const r=o.getModifiedEditor(),l=o.getOriginalEditor();return r&&((a=r.getModel())==null?void 0:a.uri.toString())===t.toString()&&l&&((d=l.getModel())==null?void 0:d.uri.toString())===e.toString()})||null}function TM(s){const t=s.get(kn).listDiffEditors(),i=Ql();if(i)for(const n of t){const o=n.getContainerDomNode();if(xpt(o,i))return n}return null}function xpt(s,e){let t=e;for(;t;){if(t===s)return!0;t=t.parentElement}return!1}Cs(Tpt);Cs(t1e);Cs(i1e);zr.appendMenuItem(Gt.EditorTitle,{command:{id:new i1e().desc.id,title:F("useInlineViewWhenSpaceIsLimited","Use Inline View When Space Is Limited"),toggled:Ge.has("config.diffEditor.useInlineViewWhenSpaceIsLimited"),precondition:Ge.has("isInDiffEditor")},order:11,group:"1_diff",when:Ge.and($.diffEditorRenderSideBySideInlineBreakpointReached,Ge.has("isInDiffEditor"))});zr.appendMenuItem(Gt.EditorTitle,{command:{id:new t1e().desc.id,title:F("showMoves","Show Moved Code Blocks"),icon:ct.move,toggled:mM.create("config.diffEditor.experimental.showMoves",!0),precondition:Ge.has("isInDiffEditor")},order:10,group:"1_diff",when:Ge.has("isInDiffEditor")});Cs(L$);for(const s of[{icon:ct.arrowRight,key:$.diffEditorInlineMode.toNegated()},{icon:ct.discard,key:$.diffEditorInlineMode}])zr.appendMenuItem(Gt.DiffEditorHunkToolbar,{command:{id:new L$().desc.id,title:F("revertHunk","Revert Block"),icon:s.icon},when:Ge.and($.diffEditorModifiedWritable,s.key),order:5,group:"primary"}),zr.appendMenuItem(Gt.DiffEditorSelectionToolbar,{command:{id:new L$().desc.id,title:F("revertSelection","Revert Selection"),icon:s.icon},when:Ge.and($.diffEditorModifiedWritable,s.key),order:5,group:"primary"});Cs(Cpt);Cs(Bpt);Cs(Lpt);Cs(vpt);zr.appendMenuItem(Gt.EditorTitle,{command:{id:YL.id,title:F("Open Accessible Diff Viewer","Open Accessible Diff Viewer"),precondition:Ge.has("isInDiffEditor")},order:10,group:"2_diff",when:Ge.and($.accessibleDiffViewerVisible.negate(),Ge.has("isInDiffEditor"))});Sn.registerCommandAlias("editor.action.diffReview.next",YL.id);Cs(YL);Sn.registerCommandAlias("editor.action.diffReview.prev",_5.id);Cs(_5);var Ipt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ept=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},v$;const E9=new yt("selectionAnchorSet",!1);var FQ;let zF=(FQ=class{static get(e){return e.getContribution(v$.ID)}constructor(e,t){this.editor=e,this.selectionAnchorSetContextKey=E9.bindTo(t),this.modelChangeListener=e.onDidChangeModel(()=>this.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const e=this.editor.getPosition();this.editor.changeDecorations(t=>{this.decorationId&&t.removeDecoration(this.decorationId),this.decorationId=t.addDecoration(_t.fromPositions(e,e),{description:"selection-anchor",stickiness:1,hoverMessage:new _l().appendText(F("selectionAnchor","Selection Anchor")),className:"selection-anchor"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),ja(F("anchorSet","Anchor set at {0}:{1}",e.lineNumber,e.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);e&&this.editor.setPosition(e.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);if(e){const t=this.editor.getPosition();this.editor.setSelection(_t.fromPositions(e.getStartPosition(),t)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const e=this.decorationId;this.editor.changeDecorations(t=>{t.removeDecoration(e),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}},v$=FQ,FQ.ID="editor.contrib.selectionAnchorController",FQ);zF=v$=Ipt([Ept(1,fi)],zF);class Dpt extends Tt{constructor(){super({id:"editor.action.setSelectionAnchor",label:F("setSelectionAnchor","Set Selection Anchor"),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2080),weight:100}})}async run(e,t){var i;(i=zF.get(t))==null||i.setSelectionAnchor()}}class Gpt extends Tt{constructor(){super({id:"editor.action.goToSelectionAnchor",label:F("goToSelectionAnchor","Go to Selection Anchor"),alias:"Go to Selection Anchor",precondition:E9})}async run(e,t){var i;(i=zF.get(t))==null||i.goToSelectionAnchor()}}class Jpt extends Tt{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:F("selectFromAnchorToCursor","Select from Anchor to Cursor"),alias:"Select from Anchor to Cursor",precondition:E9,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2089),weight:100}})}async run(e,t){var i;(i=zF.get(t))==null||i.selectFromAnchorToCursor()}}class Xpt extends Tt{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:F("cancelSelectionAnchor","Cancel Selection Anchor"),alias:"Cancel Selection Anchor",precondition:E9,kbOpts:{kbExpr:$.editorTextFocus,primary:9,weight:100}})}async run(e,t){var i;(i=zF.get(t))==null||i.cancelSelectionAnchor()}}Wn(zF.ID,zF,4);lt(Dpt);lt(Gpt);lt(Jpt);lt(Xpt);const Ypt=te("editorOverviewRuler.bracketMatchForeground","#A0A0A0",F("overviewRulerBracketMatchForeground","Overview ruler marker color for matching brackets."));class _pt extends Tt{constructor(){super({id:"editor.action.jumpToBracket",label:F("smartSelect.jumpBracket","Go to Bracket"),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:3165,weight:100}})}run(e,t){var i;(i=CN.get(t))==null||i.jumpToBracket()}}class zpt extends Tt{constructor(){super({id:"editor.action.selectToBracket",label:F("smartSelect.selectToBracket","Select to Bracket"),alias:"Select to Bracket",precondition:void 0,metadata:{description:Ni("smartSelect.selectToBracketDescription","Select the text inside and including the brackets or curly braces"),args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(e,t,i){var o;let n=!0;i&&i.selectBrackets===!1&&(n=!1),(o=CN.get(t))==null||o.selectToBracket(n)}}class Opt extends Tt{constructor(){super({id:"editor.action.removeBrackets",label:F("smartSelect.removeBrackets","Remove Brackets"),alias:"Remove Brackets",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:2561,weight:100}})}run(e,t){var i;(i=CN.get(t))==null||i.removeBrackets(this.id)}}class jpt{constructor(e,t,i){this.position=e,this.brackets=t,this.options=i}}const bU=class bU extends be{static get(e){return e.getContribution(bU.ID)}constructor(e){super(),this._editor=e,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new cs(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(72),this._updateBracketsSoon.schedule(),this._register(e.onDidChangeCursorPosition(t=>{this._matchBrackets!=="never"&&this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModelContent(t=>{this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModel(t=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModelLanguageConfiguration(t=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeConfiguration(t=>{t.hasChanged(72)&&(this._matchBrackets=this._editor.getOption(72),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(e.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(e.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._editor.getSelections().map(i=>{const n=i.getStartPosition(),o=e.bracketPairs.matchBracket(n);let r=null;if(o)o[0].containsPosition(n)&&!o[1].containsPosition(n)?r=o[1].getStartPosition():o[1].containsPosition(n)&&(r=o[0].getStartPosition());else{const l=e.bracketPairs.findEnclosingBrackets(n);if(l)r=l[1].getStartPosition();else{const a=e.bracketPairs.findNextBracket(n);a&&a.range&&(r=a.range.getStartPosition())}}return r?new _t(r.lineNumber,r.column,r.lineNumber,r.column):new _t(n.lineNumber,n.column,n.lineNumber,n.column)});this._editor.setSelections(t),this._editor.revealRange(t[0])}selectToBracket(e){if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=[];this._editor.getSelections().forEach(n=>{const o=n.getStartPosition();let r=t.bracketPairs.matchBracket(o);if(!r&&(r=t.bracketPairs.findEnclosingBrackets(o),!r)){const d=t.bracketPairs.findNextBracket(o);d&&d.range&&(r=t.bracketPairs.matchBracket(d.range.getStartPosition()))}let l=null,a=null;if(r){r.sort(z.compareRangesUsingStarts);const[d,c]=r;if(l=e?d.getStartPosition():d.getEndPosition(),a=e?c.getEndPosition():c.getStartPosition(),c.containsPosition(o)){const h=l;l=a,a=h}}l&&a&&i.push(new _t(l.lineNumber,l.column,a.lineNumber,a.column))}),i.length>0&&(this._editor.setSelections(i),this._editor.revealRange(i[0]))}removeBrackets(e){if(!this._editor.hasModel())return;const t=this._editor.getModel();this._editor.getSelections().forEach(i=>{const n=i.getPosition();let o=t.bracketPairs.matchBracket(n);o||(o=t.bracketPairs.findEnclosingBrackets(n)),o&&(this._editor.pushUndoStop(),this._editor.executeEdits(e,[{range:o[0],text:""},{range:o[1],text:""}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets==="never")return;this._recomputeBrackets();const e=[];let t=0;for(const i of this._lastBracketsData){const n=i.brackets;n&&(e[t++]={range:n[0],options:i.options},e[t++]={range:n[1],options:i.options})}this._decorations.set(e)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const e=this._editor.getSelections();if(e.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const t=this._editor.getModel(),i=t.getVersionId();let n=[];this._lastVersionId===i&&(n=this._lastBracketsData);const o=[];let r=0;for(let h=0,u=e.length;h<u;h++){const m=e[h];m.isEmpty()&&(o[r++]=m.getStartPosition())}o.length>1&&o.sort(ge.compare);const l=[];let a=0,d=0;const c=n.length;for(let h=0,u=o.length;h<u;h++){const m=o[h];for(;d<c&&n[d].position.isBefore(m);)d++;if(d<c&&n[d].position.equals(m))l[a++]=n[d];else{let p=t.bracketPairs.matchBracket(m,20),g=bU._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;!p&&this._matchBrackets==="always"&&(p=t.bracketPairs.findEnclosingBrackets(m,20),g=bU._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER),l[a++]=new jpt(m,p,g)}}this._lastBracketsData=l,this._lastVersionId=i}};bU.ID="editor.contrib.bracketMatchingController",bU._DECORATION_OPTIONS_WITH_OVERVIEW_RULER=ki.register({description:"bracket-match-overview",stickiness:1,className:"bracket-match",overviewRuler:{color:Vo(Ypt),position:eh.Center}}),bU._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER=ki.register({description:"bracket-match-no-overview",stickiness:1,className:"bracket-match"});let CN=bU;Wn(CN.ID,CN,1);lt(zpt);lt(_pt);lt(Opt);zr.appendMenuItem(Gt.MenubarGoMenu,{group:"5_infile_nav",command:{id:"editor.action.jumpToBracket",title:F({key:"miGoToBracket",comment:["&& denotes a mnemonic"]},"Go to &&Bracket")},order:2});class Ppt{constructor(e,t){this._selection=e,this._isMovingLeft=t}getEditOperations(e,t){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const i=this._selection.startLineNumber,n=this._selection.startColumn,o=this._selection.endColumn;if(!(this._isMovingLeft&&n===1)&&!(!this._isMovingLeft&&o===e.getLineMaxColumn(i)))if(this._isMovingLeft){const r=new z(i,n-1,i,n),l=e.getValueInRange(r);t.addEditOperation(r,null),t.addEditOperation(new z(i,o,i,o),l)}else{const r=new z(i,o,i,o+1),l=e.getValueInRange(r);t.addEditOperation(r,null),t.addEditOperation(new z(i,n,i,n),l)}}computeCursorState(e,t){return this._isMovingLeft?new _t(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new _t(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}class s1e extends Tt{constructor(e,t){super(t),this.left=e}run(e,t){if(!t.hasModel())return;const i=[],n=t.getSelections();for(const o of n)i.push(new Ppt(o,this.left));t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}class Hpt extends s1e{constructor(){super(!0,{id:"editor.action.moveCarretLeftAction",label:F("caret.moveLeft","Move Selected Text Left"),alias:"Move Selected Text Left",precondition:$.writable})}}class Kpt extends s1e{constructor(){super(!1,{id:"editor.action.moveCarretRightAction",label:F("caret.moveRight","Move Selected Text Right"),alias:"Move Selected Text Right",precondition:$.writable})}}lt(Hpt);lt(Kpt);class qpt extends Tt{constructor(){super({id:"editor.action.transposeLetters",label:F("transposeLetters.label","Transpose Letters"),alias:"Transpose Letters",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(e,t){if(!t.hasModel())return;const i=t.getModel(),n=[],o=t.getSelections();for(const r of o){if(!r.isEmpty())continue;const l=r.startLineNumber,a=r.startColumn,d=i.getLineMaxColumn(l);if(l===1&&(a===1||a===2&&d===2))continue;const c=a===d?r.getPosition():ts.rightPosition(i,r.getPosition().lineNumber,r.getPosition().column),h=ts.leftPosition(i,c),u=ts.leftPosition(i,h),m=i.getValueInRange(z.fromPositions(u,h)),p=i.getValueInRange(z.fromPositions(h,c)),g=z.fromPositions(u,c);n.push(new Wl(g,p+m))}n.length>0&&(t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop())}}lt(qpt);const D9=function(){if(typeof crypto=="object"&&typeof crypto.randomUUID=="function")return crypto.randomUUID.bind(crypto);let s;typeof crypto=="object"&&typeof crypto.getRandomValues=="function"?s=crypto.getRandomValues.bind(crypto):s=function(i){for(let n=0;n<i.length;n++)i[n]=Math.floor(Math.random()*256);return i};const e=new Uint8Array(16),t=[];for(let i=0;i<256;i++)t.push(i.toString(16).padStart(2,"0"));return function(){s(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let n=0,o="";return o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o}}();function ole(s){return{asString:async()=>s,asFile:()=>{},value:typeof s=="string"?s:void 0}}function $pt(s,e,t){const i={id:D9(),name:s,uri:e,data:t};return{asString:async()=>"",asFile:()=>i,value:void 0}}class o1e{constructor(){this._entries=new Map}get size(){let e=0;for(const t of this._entries)e++;return e}has(e){return this._entries.has(this.toKey(e))}matches(e){const t=[...this._entries.keys()];return Zn.some(this,([i,n])=>n.asFile())&&t.push("files"),l1e(z5(e),t)}get(e){var t;return(t=this._entries.get(this.toKey(e)))==null?void 0:t[0]}append(e,t){const i=this._entries.get(e);i?i.push(t):this._entries.set(this.toKey(e),[t])}replace(e,t){this._entries.set(this.toKey(e),[t])}delete(e){this._entries.delete(this.toKey(e))}*[Symbol.iterator](){for(const[e,t]of this._entries)for(const i of t)yield[e,i]}toKey(e){return z5(e)}}function z5(s){return s.toLowerCase()}function r1e(s,e){return l1e(z5(s),e.map(z5))}function l1e(s,e){if(s==="*/*")return e.length>0;if(e.includes(s))return!0;const t=s.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!t)return!1;const[i,n,o]=t;return o==="*"?e.some(r=>r.startsWith(n+"/")):!1}const G9=Object.freeze({create:s=>_f(s.map(e=>e.toString())).join(`\r
- `),split:s=>s.split(`\r
- `),parse:s=>G9.split(s).filter(e=>!e.startsWith("#"))}),$p=class $p{constructor(e){this.value=e}equals(e){return this.value===e.value}contains(e){return this.equals(e)||this.value===""||e.value.startsWith(this.value+$p.sep)}intersects(e){return this.contains(e)||e.contains(this)}append(...e){return new $p((this.value?[this.value,...e]:e).join($p.sep))}};$p.sep=".",$p.None=new $p("@@none@@"),$p.Empty=new $p("");let ro=$p;const Qge={EDITORS:"CodeEditors",FILES:"CodeFiles"};class egt{}const tgt={DragAndDropContribution:"workbench.contributions.dragAndDrop"};fo.add(tgt.DragAndDropContribution,new egt);const yB=class yB{constructor(){}static getInstance(){return yB.INSTANCE}hasData(e){return e&&e===this.proto}getData(e){if(this.hasData(e))return this.data}};yB.INSTANCE=new yB;let k$=yB;function a1e(s){const e=new o1e;for(const t of s.items){const i=t.type;if(t.kind==="string"){const n=new Promise(o=>t.getAsString(o));e.append(i,ole(n))}else if(t.kind==="file"){const n=t.getAsFile();n&&e.append(i,igt(n))}}return e}function igt(s){const e=s.path?ni.parse(s.path):void 0;return $pt(s.name,e,async()=>new Uint8Array(await s.arrayBuffer()))}const ngt=Object.freeze([Qge.EDITORS,Qge.FILES,fL.RESOURCES,fL.INTERNAL_URI_LIST]);function d1e(s,e=!1){const t=a1e(s),i=t.get(fL.INTERNAL_URI_LIST);if(i)t.replace(Bo.uriList,i);else if(e||!t.has(Bo.uriList)){const n=[];for(const o of s.items){const r=o.getAsFile();if(r){const l=r.path;try{l?n.push(ni.file(l).toString()):n.push(ni.parse(r.name,!0).toString())}catch{}}}n.length&&t.replace(Bo.uriList,ole(G9.create(n)))}for(const n of ngt)t.delete(n);return t}var rle=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_L=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class lle{async provideDocumentPasteEdits(e,t,i,n,o){const r=await this.getEdit(i,o);if(r)return{edits:[{insertText:r.insertText,title:r.title,kind:r.kind,handledMimeType:r.handledMimeType,yieldTo:r.yieldTo}],dispose(){}}}async provideDocumentDropEdits(e,t,i,n){const o=await this.getEdit(i,n);if(o)return{edits:[{insertText:o.insertText,title:o.title,kind:o.kind,handledMimeType:o.handledMimeType,yieldTo:o.yieldTo}],dispose(){}}}}const QB=class QB extends lle{constructor(){super(...arguments),this.kind=QB.kind,this.dropMimeTypes=[Bo.text],this.pasteMimeTypes=[Bo.text]}async getEdit(e,t){const i=e.get(Bo.text);if(!i||e.has(Bo.uriList))return;const n=await i.asString();return{handledMimeType:Bo.text,title:F("text.label","Insert Plain Text"),insertText:n,kind:this.kind}}};QB.id="text",QB.kind=new ro("text.plain");let BN=QB;class c1e extends lle{constructor(){super(...arguments),this.kind=new ro("uri.absolute"),this.dropMimeTypes=[Bo.uriList],this.pasteMimeTypes=[Bo.uriList]}async getEdit(e,t){const i=await h1e(e);if(!i.length||t.isCancellationRequested)return;let n=0;const o=i.map(({uri:l,originalText:a})=>l.scheme===Ti.file?l.fsPath:(n++,a)).join(" ");let r;return n>0?r=i.length>1?F("defaultDropProvider.uriList.uris","Insert Uris"):F("defaultDropProvider.uriList.uri","Insert Uri"):r=i.length>1?F("defaultDropProvider.uriList.paths","Insert Paths"):F("defaultDropProvider.uriList.path","Insert Path"),{handledMimeType:Bo.uriList,insertText:o,title:r,kind:this.kind}}}let O5=class extends lle{constructor(e){super(),this._workspaceContextService=e,this.kind=new ro("uri.relative"),this.dropMimeTypes=[Bo.uriList],this.pasteMimeTypes=[Bo.uriList]}async getEdit(e,t){const i=await h1e(e);if(!i.length||t.isCancellationRequested)return;const n=Hu(i.map(({uri:o})=>{const r=this._workspaceContextService.getWorkspaceFolder(o);return r?c$e(r.uri,o):void 0}));if(n.length)return{handledMimeType:Bo.uriList,insertText:n.join(" "),title:i.length>1?F("defaultDropProvider.uriList.relativePaths","Insert Relative Paths"):F("defaultDropProvider.uriList.relativePath","Insert Relative Path"),kind:this.kind}}};O5=rle([_L(0,WN)],O5);class sgt{constructor(){this.kind=new ro("html"),this.pasteMimeTypes=["text/html"],this._yieldTo=[{mimeType:Bo.text}]}async provideDocumentPasteEdits(e,t,i,n,o){var a;if(n.triggerKind!==YB.PasteAs&&!((a=n.only)!=null&&a.contains(this.kind)))return;const r=i.get("text/html"),l=await(r==null?void 0:r.asString());if(!(!l||o.isCancellationRequested))return{dispose(){},edits:[{insertText:l,yieldTo:this._yieldTo,title:F("pasteHtmlLabel","Insert HTML"),kind:this.kind}]}}}async function h1e(s){const e=s.get(Bo.uriList);if(!e)return[];const t=await e.asString(),i=[];for(const n of G9.parse(t))try{i.push({uri:ni.parse(n),originalText:n})}catch{}return i}let x$=class extends be{constructor(e,t){super(),this._register(e.documentDropEditProvider.register("*",new BN)),this._register(e.documentDropEditProvider.register("*",new c1e)),this._register(e.documentDropEditProvider.register("*",new O5(t)))}};x$=rle([_L(0,xt),_L(1,WN)],x$);let I$=class extends be{constructor(e,t){super(),this._register(e.documentPasteEditProvider.register("*",new BN)),this._register(e.documentPasteEditProvider.register("*",new c1e)),this._register(e.documentPasteEditProvider.register("*",new O5(t))),this._register(e.documentPasteEditProvider.register("*",new sgt))}};I$=rle([_L(0,xt),_L(1,WN)],I$);const Su=class Su{constructor(){this.value="",this.pos=0}static isDigitCharacter(e){return e>=48&&e<=57}static isVariableCharacter(e){return e===95||e>=97&&e<=122||e>=65&&e<=90}text(e){this.value=e,this.pos=0}tokenText(e){return this.value.substr(e.pos,e.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const e=this.pos;let t=0,i=this.value.charCodeAt(e),n;if(n=Su._table[i],typeof n=="number")return this.pos+=1,{type:n,pos:e,len:1};if(Su.isDigitCharacter(i)){n=8;do t+=1,i=this.value.charCodeAt(e+t);while(Su.isDigitCharacter(i));return this.pos+=t,{type:n,pos:e,len:t}}if(Su.isVariableCharacter(i)){n=9;do i=this.value.charCodeAt(e+ ++t);while(Su.isVariableCharacter(i)||Su.isDigitCharacter(i));return this.pos+=t,{type:n,pos:e,len:t}}n=10;do t+=1,i=this.value.charCodeAt(e+t);while(!isNaN(i)&&typeof Su._table[i]>"u"&&!Su.isDigitCharacter(i)&&!Su.isVariableCharacter(i));return this.pos+=t,{type:n,pos:e,len:t}}};Su._table={36:0,58:1,44:2,123:3,125:4,92:5,47:6,124:7,43:11,45:12,63:13};let E$=Su;class CM{constructor(){this._children=[]}appendChild(e){return e instanceof ka&&this._children[this._children.length-1]instanceof ka?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this}replace(e,t){const{parent:i}=e,n=i.children.indexOf(e),o=i.children.slice(0);o.splice(n,1,...t),i._children=o,function r(l,a){for(const d of l)d.parent=a,r(d.children,d)}(t,i)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let e=this;for(;;){if(!e)return;if(e instanceof Zk)return e;e=e.parent}}toString(){return this.children.reduce((e,t)=>e+t.toString(),"")}len(){return 0}}class ka extends CM{constructor(e){super(),this.value=e}toString(){return this.value}len(){return this.value.length}clone(){return new ka(this.value)}}class u1e extends CM{}class vh extends u1e{static compareByIndex(e,t){return e.index===t.index?0:e.isFinalTabstop?1:t.isFinalTabstop||e.index<t.index?-1:e.index>t.index?1:0}constructor(e){super(),this.index=e}get isFinalTabstop(){return this.index===0}get choice(){return this._children.length===1&&this._children[0]instanceof BM?this._children[0]:void 0}clone(){const e=new vh(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map(t=>t.clone()),e}}class BM extends CM{constructor(){super(...arguments),this.options=[]}appendChild(e){return e instanceof ka&&(e.parent=this,this.options.push(e)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const e=new BM;return this.options.forEach(e.appendChild,e),e}}class ale extends CM{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(e){const t=this;let i=!1,n=e.replace(this.regexp,function(){return i=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))});return!i&&this._children.some(o=>o instanceof Dm&&!!o.elseValue)&&(n=this._replace([])),n}_replace(e){let t="";for(const i of this._children)if(i instanceof Dm){let n=e[i.index]||"";n=i.resolve(n),t+=n}else t+=i.toString();return t}toString(){return""}clone(){const e=new ale;return e.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),e._children=this.children.map(t=>t.clone()),e}}class Dm extends CM{constructor(e,t,i,n){super(),this.index=e,this.shorthandName=t,this.ifValue=i,this.elseValue=n}resolve(e){return this.shorthandName==="upcase"?e?e.toLocaleUpperCase():"":this.shorthandName==="downcase"?e?e.toLocaleLowerCase():"":this.shorthandName==="capitalize"?e?e[0].toLocaleUpperCase()+e.substr(1):"":this.shorthandName==="pascalcase"?e?this._toPascalCase(e):"":this.shorthandName==="camelcase"?e?this._toCamelCase(e):"":e&&typeof this.ifValue=="string"?this.ifValue:!e&&typeof this.elseValue=="string"?this.elseValue:e||""}_toPascalCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map(i=>i.charAt(0).toUpperCase()+i.substr(1)).join(""):e}_toCamelCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map((i,n)=>n===0?i.charAt(0).toLowerCase()+i.substr(1):i.charAt(0).toUpperCase()+i.substr(1)).join(""):e}clone(){return new Dm(this.index,this.shorthandName,this.ifValue,this.elseValue)}}class zL extends u1e{constructor(e){super(),this.name=e}resolve(e){let t=e.resolve(this);return this.transform&&(t=this.transform.resolve(t||"")),t!==void 0?(this._children=[new ka(t)],!0):!1}clone(){const e=new zL(this.name);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map(t=>t.clone()),e}}function Mge(s,e){const t=[...s];for(;t.length>0;){const i=t.shift();if(!e(i))break;t.unshift(...i.children)}}class Zk extends CM{get placeholderInfo(){if(!this._placeholders){const e=[];let t;this.walk(function(i){return i instanceof vh&&(e.push(i),t=!t||t.index<i.index?i:t),!0}),this._placeholders={all:e,last:t}}return this._placeholders}get placeholders(){const{all:e}=this.placeholderInfo;return e}offset(e){let t=0,i=!1;return this.walk(n=>n===e?(i=!0,!1):(t+=n.len(),!0)),i?t:-1}fullLen(e){let t=0;return Mge([e],i=>(t+=i.len(),!0)),t}enclosingPlaceholders(e){const t=[];let{parent:i}=e;for(;i;)i instanceof vh&&t.push(i),i=i.parent;return t}resolveVariables(e){return this.walk(t=>(t instanceof zL&&t.resolve(e)&&(this._placeholders=void 0),!0)),this}appendChild(e){return this._placeholders=void 0,super.appendChild(e)}replace(e,t){return this._placeholders=void 0,super.replace(e,t)}clone(){const e=new Zk;return this._children=this.children.map(t=>t.clone()),e}walk(e){Mge(this.children,e)}}class LN{constructor(){this._scanner=new E$,this._token={type:14,pos:0,len:0}}static escape(e){return e.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(e){return/\${?CLIPBOARD/.test(e)}parse(e,t,i){const n=new Zk;return this.parseFragment(e,n),this.ensureFinalTabstop(n,i??!1,t??!1),n}parseFragment(e,t){const i=t.children.length;for(this._scanner.text(e),this._token=this._scanner.next();this._parse(t););const n=new Map,o=[];t.walk(a=>(a instanceof vh&&(a.isFinalTabstop?n.set(0,void 0):!n.has(a.index)&&a.children.length>0?n.set(a.index,a.children):o.push(a)),!0));const r=(a,d)=>{const c=n.get(a.index);if(!c)return;const h=new vh(a.index);h.transform=a.transform;for(const u of c){const m=u.clone();h.appendChild(m),m instanceof vh&&n.has(m.index)&&!d.has(m.index)&&(d.add(m.index),r(m,d),d.delete(m.index))}t.replace(a,[h])},l=new Set;for(const a of o)r(a,l);return t.children.slice(i)}ensureFinalTabstop(e,t,i){(t||i&&e.placeholders.length>0)&&(e.placeholders.find(o=>o.index===0)||e.appendChild(new vh(0)))}_accept(e,t){if(e===void 0||this._token.type===e){const i=t?this._scanner.tokenText(this._token):!0;return this._token=this._scanner.next(),i}return!1}_backTo(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1}_until(e){const t=this._token;for(;this._token.type!==e;){if(this._token.type===14)return!1;if(this._token.type===5){const n=this._scanner.next();if(n.type!==0&&n.type!==4&&n.type!==5)return!1}this._token=this._scanner.next()}const i=this._scanner.value.substring(t.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),i}_parse(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)}_parseEscaped(e){let t;return(t=this._accept(5,!0))?(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new ka(t)),!0):!1}_parseTabstopOrVariableName(e){let t;const i=this._token;return this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0))?(e.appendChild(/^\d+$/.test(t)?new vh(Number(t)):new zL(t)),!0):this._backTo(i)}_parseComplexPlaceholder(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0))))return this._backTo(i);const o=new vh(Number(t));if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new ka("${"+t+":")),o.children.forEach(e.appendChild,e),!0}else if(o.index>0&&this._accept(7)){const r=new BM;for(;;){if(this._parseChoiceElement(r)){if(this._accept(2))continue;if(this._accept(7)&&(o.appendChild(r),this._accept(4)))return e.appendChild(o),!0}return this._backTo(i),!1}}else return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i)}_parseChoiceElement(e){const t=this._token,i=[];for(;!(this._token.type===2||this._token.type===7);){let n;if((n=this._accept(5,!0))?n=this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||n:n=this._accept(void 0,!0),!n)return this._backTo(t),!1;i.push(n)}return i.length===0?(this._backTo(t),!1):(e.appendChild(new ka(i.join(""))),!0)}_parseComplexVariable(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0))))return this._backTo(i);const o=new zL(t);if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new ka("${"+t+":")),o.children.forEach(e.appendChild,e),!0}else return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i)}_parseTransform(e){const t=new ale;let i="",n="";for(;!this._accept(6);){let o;if(o=this._accept(5,!0)){o=this._accept(6,!0)||o,i+=o;continue}if(this._token.type!==14){i+=this._accept(void 0,!0);continue}return!1}for(;!this._accept(6);){let o;if(o=this._accept(5,!0)){o=this._accept(5,!0)||this._accept(6,!0)||o,t.appendChild(new ka(o));continue}if(!(this._parseFormatString(t)||this._parseAnything(t)))return!1}for(;!this._accept(4);){if(this._token.type!==14){n+=this._accept(void 0,!0);continue}return!1}try{t.regexp=new RegExp(i,n)}catch{return!1}return e.transform=t,!0}_parseFormatString(e){const t=this._token;if(!this._accept(0))return!1;let i=!1;this._accept(3)&&(i=!0);const n=this._accept(8,!0);if(n)if(i){if(this._accept(4))return e.appendChild(new Dm(Number(n))),!0;if(!this._accept(1))return this._backTo(t),!1}else return e.appendChild(new Dm(Number(n))),!0;else return this._backTo(t),!1;if(this._accept(6)){const o=this._accept(9,!0);return!o||!this._accept(4)?(this._backTo(t),!1):(e.appendChild(new Dm(Number(n),o)),!0)}else if(this._accept(11)){const o=this._until(4);if(o)return e.appendChild(new Dm(Number(n),void 0,o,void 0)),!0}else if(this._accept(12)){const o=this._until(4);if(o)return e.appendChild(new Dm(Number(n),void 0,void 0,o)),!0}else if(this._accept(13)){const o=this._until(1);if(o){const r=this._until(4);if(r)return e.appendChild(new Dm(Number(n),void 0,o,r)),!0}}else{const o=this._until(4);if(o)return e.appendChild(new Dm(Number(n),void 0,void 0,o)),!0}return this._backTo(t),!1}_parseAnything(e){return this._token.type!==14?(e.appendChild(new ka(this._scanner.tokenText(this._token))),this._accept(void 0),!0):!1}}function m1e(s,e,t){var i,n;return(typeof t.insertText=="string"?t.insertText==="":t.insertText.snippet==="")?{edits:((i=t.additionalEdit)==null?void 0:i.edits)??[]}:{edits:[...e.map(o=>new NF(s,{range:o,text:typeof t.insertText=="string"?LN.escape(t.insertText)+"$0":t.insertText.snippet,insertAsSnippet:!0})),...((n=t.additionalEdit)==null?void 0:n.edits)??[]]}}function p1e(s){function e(r,l){return"mimeType"in r?r.mimeType===l.handledMimeType:!!l.kind&&r.kind.contains(l.kind)}const t=new Map;for(const r of s)for(const l of r.yieldTo??[])for(const a of s)if(a!==r&&e(l,a)){let d=t.get(r);d||(d=[],t.set(r,d)),d.push(a)}if(!t.size)return Array.from(s);const i=new Set,n=[];function o(r){if(!r.length)return[];const l=r[0];if(n.includes(l))return console.warn("Yield to cycle detected",l),r;if(i.has(l))return o(r.slice(1));let a=[];const d=t.get(l);return d&&(n.push(l),a=o(d),n.pop()),i.add(l),[...a,l,...o(r.slice(1))]}return o(Array.from(s))}var ogt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},rgt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const lgt=ki.register({description:"inline-progress-widget",stickiness:1,showIfCollapsed:!0,after:{content:DZe,inlineClassName:"inline-editor-progress-decoration",inlineClassNameAffectsLetterSpacing:!0}}),fz=class fz extends be{constructor(e,t,i,n,o){super(),this.typeId=e,this.editor=t,this.range=i,this.delegate=o,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(n),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(e){this.domNode=gt(".inline-progress-widget"),this.domNode.role="button",this.domNode.title=e;const t=gt("span.icon");this.domNode.append(t),t.classList.add(...ui.asClassNameArray(ct.loading),"codicon-modifier-spin");const i=()=>{const n=this.editor.getOption(67);this.domNode.style.height=`${n}px`,this.domNode.style.width=`${Math.ceil(.8*n)}px`};i(),this._register(this.editor.onDidChangeConfiguration(n=>{(n.hasChanged(52)||n.hasChanged(67))&&i()})),this._register(Te(this.domNode,ut.CLICK,n=>{this.delegate.cancel()}))}getId(){return fz.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:{lineNumber:this.range.startLineNumber,column:this.range.startColumn},preference:[0]}}dispose(){super.dispose(),this.editor.removeContentWidget(this)}};fz.baseId="editor.widget.inlineProgressWidget";let D$=fz,j5=class extends be{constructor(e,t,i){super(),this.id=e,this._editor=t,this._instantiationService=i,this._showDelay=500,this._showPromise=this._register(new Lr),this._currentWidget=this._register(new Lr),this._operationIdPool=0,this._currentDecorations=t.createDecorationsCollection()}dispose(){super.dispose(),this._currentDecorations.clear()}async showWhile(e,t,i,n,o){const r=this._operationIdPool++;this._currentOperation=r,this.clear(),this._showPromise.value=kF(()=>{const l=z.fromPositions(e);this._currentDecorations.set([{range:l,options:lgt}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(D$,this.id,this._editor,l,t,n))},o??this._showDelay);try{return await i}finally{this._currentOperation===r&&(this.clear(),this._currentOperation=void 0)}}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};j5=ogt([rgt(2,ti)],j5);var agt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},wge=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},xD,KS;let cc=(KS=class{static get(e){return e.getContribution(xD.ID)}constructor(e,t,i){this._openerService=i,this._messageWidget=new Lr,this._messageListeners=new De,this._mouseOverMessage=!1,this._editor=e,this._visible=xD.MESSAGE_VISIBLE.bindTo(t)}dispose(){var e;(e=this._message)==null||e.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(e,t){ja(rp(e)?e.value:e),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._message=rp(e)?l9(e,{actionHandler:{callback:n=>{this.closeMessage(),yoe(this._openerService,n,rp(e)?e.isTrusted:void 0)},disposables:this._messageListeners}}):void 0,this._messageWidget.value=new Tge(this._editor,t,typeof e=="string"?e:this._message.element),this._messageListeners.add(Ut.debounce(this._editor.onDidBlurEditorText,(n,o)=>o,0)(()=>{this._mouseOverMessage||this._messageWidget.value&&wr(Ql(),this._messageWidget.value.getDomNode())||this.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeCursorPosition(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidDispose(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidChangeModel(()=>this.closeMessage())),this._messageListeners.add(Te(this._messageWidget.value.getDomNode(),ut.MOUSE_ENTER,()=>this._mouseOverMessage=!0,!0)),this._messageListeners.add(Te(this._messageWidget.value.getDomNode(),ut.MOUSE_LEAVE,()=>this._mouseOverMessage=!1,!0));let i;this._messageListeners.add(this._editor.onMouseMove(n=>{n.target.position&&(i?i.containsPosition(n.target.position)||this.closeMessage():i=new z(t.lineNumber-3,1,n.target.position.lineNumber+3,1))}))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(Tge.fadeOut(this._messageWidget.value))}},xD=KS,KS.ID="editor.contrib.messageController",KS.MESSAGE_VISIBLE=new yt("messageVisible",!1,F("messageVisible","Whether the editor is currently showing an inline message")),KS);cc=xD=agt([wge(1,fi),wge(2,Bd)],cc);const dgt=Nr.bindToContribution(cc.get);Vt(new dgt({id:"leaveEditorMessage",precondition:cc.MESSAGE_VISIBLE,handler:s=>s.closeMessage(),kbOpts:{weight:100+30,primary:9}}));let Tge=class{static fadeOut(e){const t=()=>{e.dispose(),clearTimeout(i),e.getDomNode().removeEventListener("animationend",t)},i=setTimeout(t,110);return e.getDomNode().addEventListener("animationend",t),e.getDomNode().classList.add("fadeOut"),{dispose:t}}constructor(e,{lineNumber:t,column:i},n){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=e,this._editor.revealLinesInCenterIfOutsideViewport(t,t,0),this._position={lineNumber:t,column:i},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage"),this._domNode.style.marginLeft="-6px";const o=document.createElement("div");o.classList.add("anchor","top"),this._domNode.appendChild(o);const r=document.createElement("div");typeof n=="string"?(r.classList.add("message"),r.textContent=n):(n.classList.add("message"),r.appendChild(n)),this._domNode.appendChild(r);const l=document.createElement("div");l.classList.add("anchor","below"),this._domNode.appendChild(l),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}dispose(){this._editor.removeContentWidget(this)}getId(){return"messageoverlay"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2],positionAffinity:1}}afterRender(e){this._domNode.classList.toggle("below",e===2)}};Wn(cc.ID,cc,4);function oH(s,e){return e&&(s.stack||s.stacktrace)?F("stackTrace.format","{0}: {1}",Bge(s),Cge(s.stack)||Cge(s.stacktrace)):Bge(s)}function Cge(s){return Array.isArray(s)?s.join(`
- `):s}function Bge(s){return s.code==="ERR_UNC_HOST_NOT_ALLOWED"?`${s.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`:typeof s.code=="string"&&typeof s.errno=="number"&&typeof s.syscall=="string"?F("nodeExceptionMessage","A system error occurred ({0})",s.message):s.message||F("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}function P5(s=null,e=!1){if(!s)return F("error.defaultMessage","An unknown error occurred. Please consult the log for more details.");if(Array.isArray(s)){const t=Hu(s),i=P5(t[0],e);return t.length>1?F("error.moreErrors","{0} ({1} errors in total)",i,t.length):i}if(Vd(s))return s;if(s.detail){const t=s.detail;if(t.error)return oH(t.error,e);if(t.exception)return oH(t.exception,e)}return s.stack?oH(s,e):s.message?s.message:F("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}var g1e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},H1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},G$,AQ;let J$=(AQ=class extends be{constructor(e,t,i,n,o,r,l,a,d,c){super(),this.typeId=e,this.editor=t,this.showCommand=n,this.range=o,this.edits=r,this.onSelectNewEdit=l,this._contextMenuService=a,this._keybindingService=c,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=i.bindTo(d),this.visibleContext.set(!0),this._register(ei(()=>this.visibleContext.reset())),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register(ei(()=>this.editor.removeContentWidget(this))),this._register(this.editor.onDidChangeCursorPosition(h=>{o.containsPosition(h.position)||this.dispose()})),this._register(Ut.runAndSubscribe(c.onDidUpdateKeybindings,()=>{this._updateButtonTitle()}))}_updateButtonTitle(){var t;const e=(t=this._keybindingService.lookupKeybinding(this.showCommand.id))==null?void 0:t.getLabel();this.button.element.title=this.showCommand.label+(e?` (${e})`:"")}create(){this.domNode=gt(".post-edit-widget"),this.button=this._register(new t5(this.domNode,{supportIcons:!0})),this.button.label="$(insert)",this._register(Te(this.domNode,ut.CLICK,()=>this.showSelector()))}getId(){return G$.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){this._contextMenuService.showContextMenu({getAnchor:()=>{const e=Lo(this.button.element);return{x:e.left+e.width,y:e.top+e.height}},getActions:()=>this.edits.allEdits.map((e,t)=>ES({id:"",label:e.title,checked:t===this.edits.activeEditIndex,run:()=>{if(t!==this.edits.activeEditIndex)return this.onSelectNewEdit(t)}}))})}},G$=AQ,AQ.baseId="editor.widget.postEditWidget",AQ);J$=G$=g1e([H1(7,Uc),H1(8,fi),H1(9,qn)],J$);let H5=class extends be{constructor(e,t,i,n,o,r,l){super(),this._id=e,this._editor=t,this._visibleContext=i,this._showCommand=n,this._instantiationService=o,this._bulkEditService=r,this._notificationService=l,this._currentWidget=this._register(new Lr),this._register(Ut.any(t.onDidChangeModel,t.onDidChangeModelContent)(()=>this.clear()))}async applyEditAndShowIfNeeded(e,t,i,n,o){const r=this._editor.getModel();if(!r||!e.length)return;const l=t.allEdits.at(t.activeEditIndex);if(!l)return;const a=async f=>{const b=this._editor.getModel();b&&(await b.undo(),this.applyEditAndShowIfNeeded(e,{activeEditIndex:f,allEdits:t.allEdits},i,n,o))},d=(f,b)=>{$h(f)||(this._notificationService.error(b),i&&this.show(e[0],t,a))};let c;try{c=await n(l,o)}catch(f){return d(f,F("resolveError",`Error resolving edit '{0}':
- {1}`,l.title,P5(f)))}if(o.isCancellationRequested)return;const h=m1e(r.uri,e,c),u=e[0],m=r.deltaDecorations([],[{range:u,options:{description:"paste-line-suffix",stickiness:0}}]);this._editor.focus();let p,g;try{p=await this._bulkEditService.apply(h,{editor:this._editor,token:o}),g=r.getDecorationRange(m[0])}catch(f){return d(f,F("applyError",`Error applying edit '{0}':
- {1}`,l.title,P5(f)))}finally{r.deltaDecorations(m,[])}o.isCancellationRequested||i&&p.isApplied&&t.allEdits.length>1&&this.show(g??u,t,a)}show(e,t,i){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(J$,this._id,this._editor,this._visibleContext,this._showCommand,e,t,i))}clear(){this._currentWidget.clear()}tryShowSelector(){var e;(e=this._currentWidget.value)==null||e.showSelector()}};H5=g1e([H1(4,ti),H1(5,nk),H1(6,jo)],H5);var cgt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_R=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},mZ;const f1e="editor.changePasteType",dle=new yt("pasteWidgetVisible",!1,F("pasteWidgetVisible","Whether the paste widget is showing")),rH="application/vnd.code.copyMetadata";var ZQ;let ib=(ZQ=class extends be{static get(e){return e.getContribution(mZ.ID)}constructor(e,t,i,n,o,r,l){super(),this._bulkEditService=i,this._clipboardService=n,this._languageFeaturesService=o,this._quickInputService=r,this._progressService=l,this._editor=e;const a=e.getContainerDomNode();this._register(Te(a,"copy",d=>this.handleCopy(d))),this._register(Te(a,"cut",d=>this.handleCopy(d))),this._register(Te(a,"paste",d=>this.handlePaste(d),!0)),this._pasteProgressManager=this._register(new j5("pasteIntoEditor",e,t)),this._postPasteWidgetManager=this._register(t.createInstance(H5,"pasteIntoEditor",e,dle,{id:f1e,label:F("postPasteWidgetTitle","Show paste options...")}))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}pasteAs(e){this._editor.focus();try{this._pasteAsActionContext={preferred:e},uM().execCommand("paste")}finally{this._pasteAsActionContext=void 0}}clearWidgets(){this._postPasteWidgetManager.clear()}isPasteAsEnabled(){return this._editor.getOption(85).enabled}async finishedPaste(){await this._currentPasteOperation}handleCopy(e){var g,f,b,U;if(!this._editor.hasTextFocus()||((f=(g=this._clipboardService).clearInternalState)==null||f.call(g),!e.clipboardData||!this.isPasteAsEnabled()))return;const t=this._editor.getModel(),i=this._editor.getSelections();if(!t||!(i!=null&&i.length))return;const n=this._editor.getOption(37);let o=i;const r=i.length===1&&i[0].isEmpty();if(r){if(!n)return;o=[new z(o[0].startLineNumber,1,o[0].startLineNumber,1+t.getLineLength(o[0].startLineNumber))]}const l=(b=this._editor._getViewModel())==null?void 0:b.getPlainTextToCopy(i,n,Tl),d={multicursorText:Array.isArray(l)?l:null,pasteOnNewLine:r,mode:null},c=this._languageFeaturesService.documentPasteEditProvider.ordered(t).filter(S=>!!S.prepareDocumentPaste);if(!c.length){this.setCopyMetadata(e.clipboardData,{defaultPastePayload:d});return}const h=a1e(e.clipboardData),u=c.flatMap(S=>S.copyMimeTypes??[]),m=D9();this.setCopyMetadata(e.clipboardData,{id:m,providerCopyMimeTypes:u,defaultPastePayload:d});const p=Tr(async S=>{const Z=Hu(await Promise.all(c.map(async R=>{try{return await R.prepareDocumentPaste(t,o,h,S)}catch(y){console.error(y);return}})));Z.reverse();for(const R of Z)for(const[y,N]of R)h.replace(y,N);return h});(U=mZ._currentCopyOperation)==null||U.dataTransferPromise.cancel(),mZ._currentCopyOperation={handle:m,dataTransferPromise:p}}async handlePaste(e){var a,d,c;if(!e.clipboardData||!this._editor.hasTextFocus())return;(a=cc.get(this._editor))==null||a.closeMessage(),(d=this._currentPasteOperation)==null||d.cancel(),this._currentPasteOperation=void 0;const t=this._editor.getModel(),i=this._editor.getSelections();if(!(i!=null&&i.length)||!t||this._editor.getOption(92)||!this.isPasteAsEnabled()&&!this._pasteAsActionContext)return;const n=this.fetchCopyMetadata(e),o=d1e(e.clipboardData);o.delete(rH);const r=[...e.clipboardData.types,...(n==null?void 0:n.providerCopyMimeTypes)??[],Bo.uriList],l=this._languageFeaturesService.documentPasteEditProvider.ordered(t).filter(h=>{var m,p;const u=(m=this._pasteAsActionContext)==null?void 0:m.preferred;return u&&h.providedPasteEditKinds&&!this.providerMatchesPreference(h,u)?!1:(p=h.pasteMimeTypes)==null?void 0:p.some(g=>r1e(g,r))});if(!l.length){(c=this._pasteAsActionContext)!=null&&c.preferred&&this.showPasteAsNoEditMessage(i,this._pasteAsActionContext.preferred);return}e.preventDefault(),e.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferred,l,i,o,n):this.doPasteInline(l,i,o,n,e)}showPasteAsNoEditMessage(e,t){var i;(i=cc.get(this._editor))==null||i.showMessage(F("pasteAsError","No paste edits for '{0}' found",t instanceof ro?t.value:t.providerId),e[0].getStartPosition())}doPasteInline(e,t,i,n,o){const r=this._editor;if(!r.hasModel())return;const l=new _F(r,3,void 0),a=Tr(async d=>{const c=this._editor;if(!c.hasModel())return;const h=c.getModel(),u=new De,m=u.add(new go(d));u.add(l.token.onCancellationRequested(()=>m.cancel()));const p=m.token;try{if(await this.mergeInDataFromCopy(i,n,p),p.isCancellationRequested)return;const g=e.filter(U=>this.isSupportedPasteProvider(U,i));if(!g.length||g.length===1&&g[0]instanceof BN)return this.applyDefaultPasteHandler(i,n,p,o);const f={triggerKind:YB.Automatic},b=await this.getPasteEdits(g,i,h,t,f,p);if(u.add(b),p.isCancellationRequested)return;if(b.edits.length===1&&b.edits[0].provider instanceof BN)return this.applyDefaultPasteHandler(i,n,p,o);if(b.edits.length){const U=c.getOption(85).showPasteSelector==="afterPaste";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(t,{activeEditIndex:0,allEdits:b.edits},U,(S,Z)=>new Promise((R,y)=>{(async()=>{var N,w;try{const Q=(w=(N=S.provider).resolveDocumentPasteEdit)==null?void 0:w.call(N,S,Z),C=new hM,v=Q&&await this._pasteProgressManager.showWhile(t[0].getEndPosition(),F("resolveProcess","Resolving paste edit. Click to cancel"),Promise.race([C.p,Q]),{cancel:()=>(C.cancel(),y(new Ku))},0);return v&&(S.additionalEdit=v.additionalEdit),R(S)}catch(Q){return y(Q)}})()}),p)}await this.applyDefaultPasteHandler(i,n,p,o)}finally{u.dispose(),this._currentPasteOperation===a&&(this._currentPasteOperation=void 0)}});this._pasteProgressManager.showWhile(t[0].getEndPosition(),F("pasteIntoEditorProgress","Running paste handlers. Click to cancel and do basic paste"),a,{cancel:async()=>{try{if(a.cancel(),l.token.isCancellationRequested)return;await this.applyDefaultPasteHandler(i,n,l.token,o)}finally{l.dispose()}}}).then(()=>{l.dispose()}),this._currentPasteOperation=a}showPasteAsPick(e,t,i,n,o){const r=Tr(async l=>{const a=this._editor;if(!a.hasModel())return;const d=a.getModel(),c=new De,h=c.add(new _F(a,3,void 0,l));try{if(await this.mergeInDataFromCopy(n,o,h.token),h.token.isCancellationRequested)return;let u=t.filter(b=>this.isSupportedPasteProvider(b,n,e));e&&(u=u.filter(b=>this.providerMatchesPreference(b,e)));const m={triggerKind:YB.PasteAs,only:e&&e instanceof ro?e:void 0};let p=c.add(await this.getPasteEdits(u,n,d,i,m,h.token));if(h.token.isCancellationRequested)return;if(e&&(p={edits:p.edits.filter(b=>e instanceof ro?e.contains(b.kind):e.providerId===b.provider.id),dispose:p.dispose}),!p.edits.length){m.only&&this.showPasteAsNoEditMessage(i,m.only);return}let g;if(e)g=p.edits.at(0);else{const b=await this._quickInputService.pick(p.edits.map(U=>{var S;return{label:U.title,description:(S=U.kind)==null?void 0:S.value,edit:U}}),{placeHolder:F("pasteAsPickerPlaceholder","Select Paste Action")});g=b==null?void 0:b.edit}if(!g)return;const f=m1e(d.uri,i,g);await this._bulkEditService.apply(f,{editor:this._editor})}finally{c.dispose(),this._currentPasteOperation===r&&(this._currentPasteOperation=void 0)}});this._progressService.withProgress({location:10,title:F("pasteAsProgress","Running paste handlers")},()=>r)}setCopyMetadata(e,t){e.setData(rH,JSON.stringify(t))}fetchCopyMetadata(e){if(!e.clipboardData)return;const t=e.clipboardData.getData(rH);if(t)try{return JSON.parse(t)}catch{return}const[i,n]=jq.getTextData(e.clipboardData);if(n)return{defaultPastePayload:{mode:n.mode,multicursorText:n.multicursorText??null,pasteOnNewLine:!!n.isFromEmptySelection}}}async mergeInDataFromCopy(e,t,i){var n;if(t!=null&&t.id&&((n=mZ._currentCopyOperation)==null?void 0:n.handle)===t.id){const o=await mZ._currentCopyOperation.dataTransferPromise;if(i.isCancellationRequested)return;for(const[r,l]of o)e.replace(r,l)}if(!e.has(Bo.uriList)){const o=await this._clipboardService.readResources();if(i.isCancellationRequested)return;o.length&&e.append(Bo.uriList,ole(G9.create(o)))}}async getPasteEdits(e,t,i,n,o,r){const l=new De,a=await Pv(Promise.all(e.map(async c=>{var h,u;try{const m=await((h=c.provideDocumentPasteEdits)==null?void 0:h.call(c,i,n,t,o,r));return m&&l.add(m),(u=m==null?void 0:m.edits)==null?void 0:u.map(p=>({...p,provider:c}))}catch(m){$h(m)||console.error(m);return}})),r),d=Hu(a??[]).flat().filter(c=>!o.only||o.only.contains(c.kind));return{edits:p1e(d),dispose:()=>l.dispose()}}async applyDefaultPasteHandler(e,t,i,n){const o=e.get(Bo.text)??e.get("text"),r=await(o==null?void 0:o.asString())??"";if(i.isCancellationRequested)return;const l={clipboardEvent:n,text:r,pasteOnNewLine:(t==null?void 0:t.defaultPastePayload.pasteOnNewLine)??!1,multicursorText:(t==null?void 0:t.defaultPastePayload.multicursorText)??null,mode:null};this._editor.trigger("keyboard","paste",l)}isSupportedPasteProvider(e,t,i){var n;return(n=e.pasteMimeTypes)!=null&&n.some(o=>t.matches(o))?!i||this.providerMatchesPreference(e,i):!1}providerMatchesPreference(e,t){return t instanceof ro?e.providedPasteEditKinds?e.providedPasteEditKinds.some(i=>t.contains(i)):!0:e.id===t.providerId}},mZ=ZQ,ZQ.ID="editor.contrib.copyPasteActionController",ZQ);ib=mZ=cgt([_R(1,ti),_R(2,nk),_R(3,hb),_R(4,xt),_R(5,tu),_R(6,HNe)],ib);const vN="9_cutcopypaste",hgt=$m||document.queryCommandSupported("cut"),b1e=$m||document.queryCommandSupported("copy"),ugt=typeof navigator.clipboard>"u"||zh?document.queryCommandSupported("paste"):!0;function cle(s){return s.register(),s}const mgt=hgt?cle(new pM({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:$m?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:Gt.MenubarEditMenu,group:"2_ccp",title:F({key:"miCut",comment:["&& denotes a mnemonic"]},"Cu&&t"),order:1},{menuId:Gt.EditorContext,group:vN,title:F("actions.clipboard.cutLabel","Cut"),when:$.writable,order:1},{menuId:Gt.CommandPalette,group:"",title:F("actions.clipboard.cutLabel","Cut"),order:1},{menuId:Gt.SimpleEditorContext,group:vN,title:F("actions.clipboard.cutLabel","Cut"),when:$.writable,order:1}]})):void 0,pgt=b1e?cle(new pM({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:$m?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:Gt.MenubarEditMenu,group:"2_ccp",title:F({key:"miCopy",comment:["&& denotes a mnemonic"]},"&&Copy"),order:2},{menuId:Gt.EditorContext,group:vN,title:F("actions.clipboard.copyLabel","Copy"),order:2},{menuId:Gt.CommandPalette,group:"",title:F("actions.clipboard.copyLabel","Copy"),order:1},{menuId:Gt.SimpleEditorContext,group:vN,title:F("actions.clipboard.copyLabel","Copy"),order:2}]})):void 0;zr.appendMenuItem(Gt.MenubarEditMenu,{submenu:Gt.MenubarCopy,title:Ni("copy as","Copy As"),group:"2_ccp",order:3});zr.appendMenuItem(Gt.EditorContext,{submenu:Gt.EditorContextCopy,title:Ni("copy as","Copy As"),group:vN,order:3});zr.appendMenuItem(Gt.EditorContext,{submenu:Gt.EditorContextShare,title:Ni("share","Share"),group:"11_share",order:-1,when:Ge.and(Ge.notEquals("resourceScheme","output"),$.editorTextFocus)});zr.appendMenuItem(Gt.ExplorerContext,{submenu:Gt.ExplorerContextShare,title:Ni("share","Share"),group:"11_share",order:-1});const lH=ugt?cle(new pM({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:$m?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:Gt.MenubarEditMenu,group:"2_ccp",title:F({key:"miPaste",comment:["&& denotes a mnemonic"]},"&&Paste"),order:4},{menuId:Gt.EditorContext,group:vN,title:F("actions.clipboard.pasteLabel","Paste"),when:$.writable,order:4},{menuId:Gt.CommandPalette,group:"",title:F("actions.clipboard.pasteLabel","Paste"),order:1},{menuId:Gt.SimpleEditorContext,group:vN,title:F("actions.clipboard.pasteLabel","Paste"),when:$.writable,order:4}]})):void 0;class ggt extends Tt{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:F("actions.clipboard.copyWithSyntaxHighlightingLabel","Copy With Syntax Highlighting"),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,weight:100}})}run(e,t){!t.hasModel()||!t.getOption(37)&&t.getSelection().isEmpty()||(zq.forceCopyWithSyntaxHighlighting=!0,t.focus(),t.getContainerDomNode().ownerDocument.execCommand("copy"),zq.forceCopyWithSyntaxHighlighting=!1)}}function U1e(s,e){s&&(s.addImplementation(1e4,"code-editor",(t,i)=>{const n=t.get(kn).getFocusedCodeEditor();if(n&&n.hasTextFocus()){const o=n.getOption(37),r=n.getSelection();return r&&r.isEmpty()&&!o||n.getContainerDomNode().ownerDocument.execCommand(e),!0}return!1}),s.addImplementation(0,"generic-dom",(t,i)=>(uM().execCommand(e),!0)))}U1e(mgt,"cut");U1e(pgt,"copy");lH&&(lH.addImplementation(1e4,"code-editor",(s,e)=>{var o;const t=s.get(kn),i=s.get(hb),n=t.getFocusedCodeEditor();return n&&n.hasTextFocus()?n.getContainerDomNode().ownerDocument.execCommand("paste")?((o=ib.get(n))==null?void 0:o.finishedPaste())??Promise.resolve():jN?(async()=>{const l=await i.readText();if(l!==""){const a=BL.INSTANCE.get(l);let d=!1,c=null,h=null;a&&(d=n.getOption(37)&&!!a.isFromEmptySelection,c=typeof a.multicursorText<"u"?a.multicursorText:null,h=a.mode),n.trigger("keyboard","paste",{text:l,pasteOnNewLine:d,multicursorText:c,mode:h})}})():!0:!1}),lH.addImplementation(0,"generic-dom",(s,e)=>(uM().execCommand("paste"),!0)));b1e&<(ggt);const $s=new class{constructor(){this.QuickFix=new ro("quickfix"),this.Refactor=new ro("refactor"),this.RefactorExtract=this.Refactor.append("extract"),this.RefactorInline=this.Refactor.append("inline"),this.RefactorMove=this.Refactor.append("move"),this.RefactorRewrite=this.Refactor.append("rewrite"),this.Notebook=new ro("notebook"),this.Source=new ro("source"),this.SourceOrganizeImports=this.Source.append("organizeImports"),this.SourceFixAll=this.Source.append("fixAll"),this.SurroundWith=this.Refactor.append("surround")}};var bc;(function(s){s.Refactor="refactor",s.RefactorPreview="refactor preview",s.Lightbulb="lightbulb",s.Default="other (default)",s.SourceAction="source action",s.QuickFix="quick fix action",s.FixAll="fix all",s.OrganizeImports="organize imports",s.AutoFix="auto fix",s.QuickFixHover="quick fix hover window",s.OnSave="save participants",s.ProblemsView="problems view"})(bc||(bc={}));function fgt(s,e){return!(s.include&&!s.include.intersects(e)||s.excludes&&s.excludes.some(t=>F1e(e,t,s.include))||!s.includeSourceActions&&$s.Source.contains(e))}function bgt(s,e){const t=e.kind?new ro(e.kind):void 0;return!(s.include&&(!t||!s.include.contains(t))||s.excludes&&t&&s.excludes.some(i=>F1e(t,i,s.include))||!s.includeSourceActions&&t&&$s.Source.contains(t)||s.onlyIncludePreferredActions&&!e.isPreferred)}function F1e(s,e,t){return!(!e.contains(s)||t&&e.contains(t))}class Wg{static fromUser(e,t){return!e||typeof e!="object"?new Wg(t.kind,t.apply,!1):new Wg(Wg.getKindFromUser(e,t.kind),Wg.getApplyFromUser(e,t.apply),Wg.getPreferredUser(e))}static getApplyFromUser(e,t){switch(typeof e.apply=="string"?e.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return t}}static getKindFromUser(e,t){return typeof e.kind=="string"?new ro(e.kind):t}static getPreferredUser(e){return typeof e.preferred=="boolean"?e.preferred:!1}constructor(e,t,i){this.kind=e,this.apply=t,this.preferred=i}}class Ugt{constructor(e,t,i){this.action=e,this.provider=t,this.highlightRange=i}async resolve(e){var t;if((t=this.provider)!=null&&t.resolveCodeAction&&!this.action.edit){let i;try{i=await this.provider.resolveCodeAction(this.action,e)}catch(n){vo(n)}i&&(this.action.edit=i.edit)}return this}}const A1e="editor.action.codeAction",hle="editor.action.quickFix",Z1e="editor.action.autoFix",S1e="editor.action.refactor",N1e="editor.action.sourceAction",X$="editor.action.organizeImports",Y$="editor.action.fixAll";class S2 extends be{static codeActionsPreferredComparator(e,t){return e.isPreferred&&!t.isPreferred?-1:!e.isPreferred&&t.isPreferred?1:0}static codeActionsComparator({action:e},{action:t}){return e.isAI&&!t.isAI?1:!e.isAI&&t.isAI?-1:ba(e.diagnostics)?ba(t.diagnostics)?S2.codeActionsPreferredComparator(e,t):-1:ba(t.diagnostics)?1:S2.codeActionsPreferredComparator(e,t)}constructor(e,t,i){super(),this.documentation=t,this._register(i),this.allActions=[...e].sort(S2.codeActionsComparator),this.validActions=this.allActions.filter(({action:n})=>!n.disabled)}get hasAutoFix(){return this.validActions.some(({action:e})=>!!e.kind&&$s.QuickFix.contains(new ro(e.kind))&&!!e.isPreferred)}get hasAIFix(){return this.validActions.some(({action:e})=>!!e.isAI)}get allAIFixes(){return this.validActions.every(({action:e})=>!!e.isAI)}}const Lge={actions:[],documentation:void 0};async function LW(s,e,t,i,n,o){var g;const r=i.filter||{},l={...r,excludes:[...r.excludes||[],$s.Notebook]},a={only:(g=r.include)==null?void 0:g.value,trigger:i.type},d=new $re(e,o),c=i.type===2,h=Fgt(s,e,c?l:r),u=new De,m=h.map(async f=>{try{n.report(f);const b=await f.provideCodeActions(e,t,a,d.token);if(b&&u.add(b),d.token.isCancellationRequested)return Lge;const U=((b==null?void 0:b.actions)||[]).filter(Z=>Z&&bgt(r,Z)),S=Zgt(f,U,r.include);return{actions:U.map(Z=>new Ugt(Z,f)),documentation:S}}catch(b){if($h(b))throw b;return vo(b),Lge}}),p=s.onDidChange(()=>{const f=s.all(e);lo(f,h)||d.cancel()});try{const f=await Promise.all(m),b=f.map(S=>S.actions).flat(),U=[...Hu(f.map(S=>S.documentation)),...Agt(s,e,i,b)];return new S2(b,U,u)}finally{p.dispose(),d.dispose()}}function Fgt(s,e,t){return s.all(e).filter(i=>i.providedCodeActionKinds?i.providedCodeActionKinds.some(n=>fgt(t,new ro(n))):!0)}function*Agt(s,e,t,i){var n,o,r;if(e&&i.length)for(const l of s.all(e))l._getAdditionalMenuItems&&(yield*(r=l._getAdditionalMenuItems)==null?void 0:r.call(l,{trigger:t.type,only:(o=(n=t.filter)==null?void 0:n.include)==null?void 0:o.value},i.map(a=>a.action)))}function Zgt(s,e,t){if(!s.documentation)return;const i=s.documentation.map(n=>({kind:new ro(n.kind),command:n.command}));if(t){let n;for(const o of i)o.kind.contains(t)&&(n?n.kind.contains(o.kind)&&(n=o):n=o);if(n)return n==null?void 0:n.command}for(const n of e)if(n.kind){for(const o of i)if(o.kind.contains(new ro(n.kind)))return o.command}}var RS;(function(s){s.OnSave="onSave",s.FromProblemsView="fromProblemsView",s.FromCodeActions="fromCodeActions",s.FromAILightbulb="fromAILightbulb"})(RS||(RS={}));async function Sgt(s,e,t,i,n=Gi.None){var d;const o=s.get(nk),r=s.get(ks),l=s.get($l),a=s.get(jo);if(l.publicLog2("codeAction.applyCodeAction",{codeActionTitle:e.action.title,codeActionKind:e.action.kind,codeActionIsPreferred:!!e.action.isPreferred,reason:t}),await e.resolve(n),!n.isCancellationRequested&&!((d=e.action.edit)!=null&&d.edits.length&&!(await o.apply(e.action.edit,{editor:i==null?void 0:i.editor,label:e.action.title,quotableLabel:e.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:t!==RS.OnSave,showPreview:i==null?void 0:i.preview})).isApplied)&&e.action.command)try{await r.executeCommand(e.action.command.id,...e.action.command.arguments||[])}catch(c){const h=Ngt(c);a.error(typeof h=="string"?h:F("applyCodeActionFailed","An unknown error occurred while applying the code action"))}}function Ngt(s){return typeof s=="string"?s:s instanceof Error&&typeof s.message=="string"?s.message:void 0}Sn.registerCommand("_executeCodeActionProvider",async function(s,e,t,i,n){if(!(e instanceof ni))throw Xh();const{codeActionProvider:o}=s.get(xt),r=s.get(zs).getModel(e);if(!r)throw Xh();const l=_t.isISelection(t)?_t.liftSelection(t):z.isIRange(t)?r.validateRange(t):void 0;if(!l)throw Xh();const a=typeof i=="string"?new ro(i):void 0,d=await LW(o,r,l,{type:1,triggerAction:bc.Default,filter:{includeSourceActions:!0,include:a}},Hm.None,Gi.None),c=[],h=Math.min(d.validActions.length,typeof n=="number"?n:0);for(let u=0;u<h;u++)c.push(d.validActions[u].resolve(Gi.None));try{return await Promise.all(c),d.validActions.map(u=>u.action)}finally{setTimeout(()=>d.dispose(),100)}});var Rgt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Vgt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},_$,SQ;let z$=(SQ=class{constructor(e){this.keybindingService=e}getResolver(){const e=new qu(()=>this.keybindingService.getKeybindings().filter(t=>_$.codeActionCommands.indexOf(t.command)>=0).filter(t=>t.resolvedKeybinding).map(t=>{let i=t.commandArgs;return t.command===X$?i={kind:$s.SourceOrganizeImports.value}:t.command===Y$&&(i={kind:$s.SourceFixAll.value}),{resolvedKeybinding:t.resolvedKeybinding,...Wg.fromUser(i,{kind:ro.None,apply:"never"})}}));return t=>{if(t.kind){const i=this.bestKeybindingForCodeAction(t,e.value);return i==null?void 0:i.resolvedKeybinding}}}bestKeybindingForCodeAction(e,t){if(!e.kind)return;const i=new ro(e.kind);return t.filter(n=>n.kind.contains(i)).filter(n=>n.preferred?e.isPreferred:!0).reduceRight((n,o)=>n?n.kind.contains(o.kind)?o:n:o,void 0)}},_$=SQ,SQ.codeActionCommands=[S1e,A1e,N1e,X$,Y$],SQ);z$=_$=Rgt([Vgt(0,qn)],z$);te("symbolIcon.arrayForeground",en,F("symbolIcon.arrayForeground","The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.booleanForeground",en,F("symbolIcon.booleanForeground","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},F("symbolIcon.classForeground","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.colorForeground",en,F("symbolIcon.colorForeground","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.constantForeground",en,F("symbolIcon.constantForeground","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},F("symbolIcon.constructorForeground","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},F("symbolIcon.enumeratorForeground","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},F("symbolIcon.enumeratorMemberForeground","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},F("symbolIcon.eventForeground","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},F("symbolIcon.fieldForeground","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.fileForeground",en,F("symbolIcon.fileForeground","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.folderForeground",en,F("symbolIcon.folderForeground","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},F("symbolIcon.functionForeground","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},F("symbolIcon.interfaceForeground","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.keyForeground",en,F("symbolIcon.keyForeground","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.keywordForeground",en,F("symbolIcon.keywordForeground","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},F("symbolIcon.methodForeground","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.moduleForeground",en,F("symbolIcon.moduleForeground","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.namespaceForeground",en,F("symbolIcon.namespaceForeground","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.nullForeground",en,F("symbolIcon.nullForeground","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.numberForeground",en,F("symbolIcon.numberForeground","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.objectForeground",en,F("symbolIcon.objectForeground","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.operatorForeground",en,F("symbolIcon.operatorForeground","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.packageForeground",en,F("symbolIcon.packageForeground","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.propertyForeground",en,F("symbolIcon.propertyForeground","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.referenceForeground",en,F("symbolIcon.referenceForeground","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.snippetForeground",en,F("symbolIcon.snippetForeground","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.stringForeground",en,F("symbolIcon.stringForeground","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.structForeground",en,F("symbolIcon.structForeground","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.textForeground",en,F("symbolIcon.textForeground","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.typeParameterForeground",en,F("symbolIcon.typeParameterForeground","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.unitForeground",en,F("symbolIcon.unitForeground","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));te("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},F("symbolIcon.variableForeground","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));const R1e=Object.freeze({kind:ro.Empty,title:F("codeAction.widget.id.more","More Actions...")}),Wgt=Object.freeze([{kind:$s.QuickFix,title:F("codeAction.widget.id.quickfix","Quick Fix")},{kind:$s.RefactorExtract,title:F("codeAction.widget.id.extract","Extract"),icon:ct.wrench},{kind:$s.RefactorInline,title:F("codeAction.widget.id.inline","Inline"),icon:ct.wrench},{kind:$s.RefactorRewrite,title:F("codeAction.widget.id.convert","Rewrite"),icon:ct.wrench},{kind:$s.RefactorMove,title:F("codeAction.widget.id.move","Move"),icon:ct.wrench},{kind:$s.SurroundWith,title:F("codeAction.widget.id.surround","Surround With"),icon:ct.surroundWith},{kind:$s.Source,title:F("codeAction.widget.id.source","Source Action"),icon:ct.symbolFile},R1e]);function ygt(s,e,t){if(!e)return s.map(o=>{var r;return{kind:"action",item:o,group:R1e,disabled:!!o.action.disabled,label:o.action.disabled||o.action.title,canPreview:!!((r=o.action.edit)!=null&&r.edits.length)}});const i=Wgt.map(o=>({group:o,actions:[]}));for(const o of s){const r=o.action.kind?new ro(o.action.kind):ro.None;for(const l of i)if(l.group.kind.contains(r)){l.actions.push(o);break}}const n=[];for(const o of i)if(o.actions.length){n.push({kind:"header",group:o.group});for(const r of o.actions){const l=o.group;n.push({kind:"action",item:r,group:r.action.isAI?{title:l.title,kind:l.kind,icon:ct.sparkle}:l,label:r.action.title,disabled:!!r.action.disabled,keybinding:t(r.action)})}}return n}var Qgt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Mgt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},TV;const vge=Os("gutter-lightbulb",ct.lightBulb,F("gutterLightbulbWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor.")),kge=Os("gutter-lightbulb-auto-fix",ct.lightbulbAutofix,F("gutterLightbulbAutoFixWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and a quick fix is available.")),xge=Os("gutter-lightbulb-sparkle",ct.lightbulbSparkle,F("gutterLightbulbAIFixWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix is available.")),Ige=Os("gutter-lightbulb-aifix-auto-fix",ct.lightbulbSparkleAutofix,F("gutterLightbulbAIFixAutoFixWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available.")),Ege=Os("gutter-lightbulb-sparkle-filled",ct.sparkleFilled,F("gutterLightbulbSparkleFilledWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available."));var Bm;(function(s){s.Hidden={type:0};class e{constructor(i,n,o,r){this.actions=i,this.trigger=n,this.editorPosition=o,this.widgetPosition=r,this.type=1}}s.Showing=e})(Bm||(Bm={}));var mF;let OL=(mF=class extends be{constructor(e,t){super(),this._editor=e,this._keybindingService=t,this._onClick=this._register(new fe),this.onClick=this._onClick.event,this._state=Bm.Hidden,this._gutterState=Bm.Hidden,this._iconClasses=[],this.lightbulbClasses=["codicon-"+vge.id,"codicon-"+Ige.id,"codicon-"+kge.id,"codicon-"+xge.id,"codicon-"+Ege.id],this.gutterDecoration=TV.GUTTER_DECORATION,this._domNode=gt("div.lightBulbWidget"),this._domNode.role="listbox",this._register(Hl.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(i=>{const n=this._editor.getModel();(this.state.type!==1||!n||this.state.editorPosition.lineNumber>=n.getLineCount())&&this.hide(),(this.gutterState.type!==1||!n||this.gutterState.editorPosition.lineNumber>=n.getLineCount())&&this.gutterHide()})),this._register(xHe(this._domNode,i=>{if(this.state.type!==1)return;this._editor.focus(),i.preventDefault();const{top:n,height:o}=Lo(this._domNode),r=this._editor.getOption(67);let l=Math.floor(r/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber<this.state.editorPosition.lineNumber&&(l+=r),this._onClick.fire({x:i.posx,y:n+o+l,actions:this.state.actions,trigger:this.state.trigger})})),this._register(Te(this._domNode,"mouseenter",i=>{(i.buttons&1)===1&&this.hide()})),this._register(Ut.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings,()=>{var i,n;this._preferredKbLabel=((i=this._keybindingService.lookupKeybinding(Z1e))==null?void 0:i.getLabel())??void 0,this._quickFixKbLabel=((n=this._keybindingService.lookupKeybinding(hle))==null?void 0:n.getLabel())??void 0,this._updateLightBulbTitleAndIcon()})),this._register(this._editor.onMouseDown(async i=>{if(!i.target.element||!this.lightbulbClasses.some(a=>i.target.element&&i.target.element.classList.contains(a))||this.gutterState.type!==1)return;this._editor.focus();const{top:n,height:o}=Lo(i.target.element),r=this._editor.getOption(67);let l=Math.floor(r/3);this.gutterState.widgetPosition.position!==null&&this.gutterState.widgetPosition.position.lineNumber<this.gutterState.editorPosition.lineNumber&&(l+=r),this._onClick.fire({x:i.event.posx,y:n+o+l,actions:this.gutterState.actions,trigger:this.gutterState.trigger})}))}dispose(){super.dispose(),this._editor.removeContentWidget(this),this._gutterDecorationID&&this._removeGutterDecoration(this._gutterDecorationID)}getId(){return"LightBulbWidget"}getDomNode(){return this._domNode}getPosition(){return this._state.type===1?this._state.widgetPosition:null}update(e,t,i){if(e.validActions.length<=0)return this.gutterHide(),this.hide();if(!this._editor.hasTextFocus())return this.gutterHide(),this.hide();if(!this._editor.getOptions().get(65).enabled)return this.gutterHide(),this.hide();const r=this._editor.getModel();if(!r)return this.gutterHide(),this.hide();const{lineNumber:l,column:a}=r.validatePosition(i),d=r.getOptions().tabSize,c=this._editor.getOptions().get(50),h=r.getLineContent(l),u=b9(h,d),m=c.spaceWidth*u>22,p=R=>R>2&&this._editor.getTopForLineNumber(R)===this._editor.getTopForLineNumber(R-1),g=this._editor.getLineDecorations(l);let f=!1;if(g)for(const R of g){const y=R.options.glyphMarginClassName;if(y&&!this.lightbulbClasses.some(N=>y.includes(N))){f=!0;break}}let b=l,U=1;if(!m){const R=y=>{const N=r.getLineContent(y);return/^\s*$|^\s+/.test(N)||N.length<=U};if(l>1&&!p(l-1)){const y=r.getLineCount(),N=l===y,w=l>1&&R(l-1),Q=!N&&R(l+1),C=R(l),v=!Q&&!w;if(!Q&&!w&&!f)return this.gutterState=new Bm.Showing(e,t,i,{position:{lineNumber:b,column:U},preference:TV._posPref}),this.renderGutterLightbub(),this.hide();w||N||w&&!C?b-=1:(Q||v&&C)&&(b+=1)}else if(l===1&&(l===r.getLineCount()||!R(l+1)&&!R(l)))if(this.gutterState=new Bm.Showing(e,t,i,{position:{lineNumber:b,column:U},preference:TV._posPref}),f)this.gutterHide();else return this.renderGutterLightbub(),this.hide();else if(l<r.getLineCount()&&!p(l+1))b+=1;else if(a*c.spaceWidth<22)return this.hide();U=/^\S\s*$/.test(r.getLineContent(b))?2:1}this.state=new Bm.Showing(e,t,i,{position:{lineNumber:b,column:U},preference:TV._posPref}),this._gutterDecorationID&&(this._removeGutterDecoration(this._gutterDecorationID),this.gutterHide());const S=e.validActions,Z=e.validActions[0].action.kind;if(S.length!==1||!Z){this._editor.layoutContentWidget(this);return}this._editor.layoutContentWidget(this)}hide(){this.state!==Bm.Hidden&&(this.state=Bm.Hidden,this._editor.layoutContentWidget(this))}gutterHide(){this.gutterState!==Bm.Hidden&&(this._gutterDecorationID&&this._removeGutterDecoration(this._gutterDecorationID),this.gutterState=Bm.Hidden)}get state(){return this._state}set state(e){this._state=e,this._updateLightBulbTitleAndIcon()}get gutterState(){return this._gutterState}set gutterState(e){this._gutterState=e,this._updateGutterLightBulbTitleAndIcon()}_updateLightBulbTitleAndIcon(){if(this._domNode.classList.remove(...this._iconClasses),this._iconClasses=[],this.state.type!==1)return;let e,t=!1;this.state.actions.allAIFixes?(e=ct.sparkleFilled,this.state.actions.validActions.length===1&&(t=!0)):this.state.actions.hasAutoFix?this.state.actions.hasAIFix?e=ct.lightbulbSparkleAutofix:e=ct.lightbulbAutofix:this.state.actions.hasAIFix?e=ct.lightbulbSparkle:e=ct.lightBulb,this._updateLightbulbTitle(this.state.actions.hasAutoFix,t),this._iconClasses=ui.asClassNameArray(e),this._domNode.classList.add(...this._iconClasses)}_updateGutterLightBulbTitleAndIcon(){if(this.gutterState.type!==1)return;let e,t=!1;this.gutterState.actions.allAIFixes?(e=Ege,this.gutterState.actions.validActions.length===1&&(t=!0)):this.gutterState.actions.hasAutoFix?this.gutterState.actions.hasAIFix?e=Ige:e=kge:this.gutterState.actions.hasAIFix?e=xge:e=vge,this._updateLightbulbTitle(this.gutterState.actions.hasAutoFix,t);const i=ki.register({description:"codicon-gutter-lightbulb-decoration",glyphMarginClassName:ui.asClassName(e),glyphMargin:{position:em.Left},stickiness:1});this.gutterDecoration=i}renderGutterLightbub(){const e=this._editor.getSelection();e&&(this._gutterDecorationID===void 0?this._addGutterDecoration(e.startLineNumber):this._updateGutterDecoration(this._gutterDecorationID,e.startLineNumber))}_addGutterDecoration(e){this._editor.changeDecorations(t=>{this._gutterDecorationID=t.addDecoration(new z(e,0,e,0),this.gutterDecoration)})}_removeGutterDecoration(e){this._editor.changeDecorations(t=>{t.removeDecoration(e),this._gutterDecorationID=void 0})}_updateGutterDecoration(e,t){this._editor.changeDecorations(i=>{i.changeDecoration(e,new z(t,0,t,0)),i.changeDecorationOptions(e,this.gutterDecoration)})}_updateLightbulbTitle(e,t){this.state.type===1&&(t?this.title=F("codeActionAutoRun","Run: {0}",this.state.actions.validActions[0].action.title):e&&this._preferredKbLabel?this.title=F("preferredcodeActionWithKb","Show Code Actions. Preferred Quick Fix Available ({0})",this._preferredKbLabel):!e&&this._quickFixKbLabel?this.title=F("codeActionWithKb","Show Code Actions ({0})",this._quickFixKbLabel):e||(this.title=F("codeAction","Show Code Actions")))}set title(e){this._domNode.title=e}},TV=mF,mF.GUTTER_DECORATION=ki.register({description:"codicon-gutter-lightbulb-decoration",glyphMarginClassName:ui.asClassName(ct.lightBulb),glyphMargin:{position:em.Left},stickiness:1}),mF.ID="editor.contrib.lightbulbWidget",mF._posPref=[0],mF);OL=TV=Qgt([Mgt(1,qn)],OL);var V1e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},O$=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const W1e="acceptSelectedCodeAction",y1e="previewSelectedCodeAction";class wgt{get templateId(){return"header"}renderTemplate(e){e.classList.add("group-header");const t=document.createElement("span");return e.append(t),{container:e,text:t}}renderElement(e,t,i){var n;i.text.textContent=((n=e.group)==null?void 0:n.title)??""}disposeTemplate(e){}}let j$=class{get templateId(){return"action"}constructor(e,t){this._supportsPreview=e,this._keybindingService=t}renderTemplate(e){e.classList.add(this.templateId);const t=document.createElement("div");t.className="icon",e.append(t);const i=document.createElement("span");i.className="title",e.append(i);const n=new WM(e,rc);return{container:e,icon:t,text:i,keybinding:n}}renderElement(e,t,i){var r,l,a;if((r=e.group)!=null&&r.icon?(i.icon.className=ui.asClassName(e.group.icon),e.group.icon.color&&(i.icon.style.color=Mt(e.group.icon.color.id))):(i.icon.className=ui.asClassName(ct.lightBulb),i.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!e.item||!e.label)return;i.text.textContent=Q1e(e.label),i.keybinding.set(e.keybinding),qHe(!!e.keybinding,i.keybinding.element);const n=(l=this._keybindingService.lookupKeybinding(W1e))==null?void 0:l.getLabel(),o=(a=this._keybindingService.lookupKeybinding(y1e))==null?void 0:a.getLabel();i.container.classList.toggle("option-disabled",e.disabled),e.disabled?i.container.title=e.label:n&&o?this._supportsPreview&&e.canPreview?i.container.title=F({key:"label-preview",comment:['placeholders are keybindings, e.g "F2 to Apply, Shift+F2 to Preview"']},"{0} to Apply, {1} to Preview",n,o):i.container.title=F({key:"label",comment:['placeholder is a keybinding, e.g "F2 to Apply"']},"{0} to Apply",n):i.container.title=""}disposeTemplate(e){e.keybinding.dispose()}};j$=V1e([O$(1,qn)],j$);class Tgt extends UIEvent{constructor(){super("acceptSelectedAction")}}class Dge extends UIEvent{constructor(){super("previewSelectedAction")}}function Cgt(s){if(s.kind==="action")return s.label}let P$=class extends be{constructor(e,t,i,n,o,r){super(),this._delegate=n,this._contextViewService=o,this._keybindingService=r,this._actionLineHeight=24,this._headerLineHeight=26,this.cts=this._register(new go),this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const l={getHeight:a=>a.kind==="header"?this._headerLineHeight:this._actionLineHeight,getTemplateId:a=>a.kind};this._list=this._register(new hh(e,this.domNode,l,[new j$(t,this._keybindingService),new wgt],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:Cgt},accessibilityProvider:{getAriaLabel:a=>{if(a.kind==="action"){let d=a.label?Q1e(a==null?void 0:a.label):"";return a.disabled&&(d=F({key:"customQuickFixWidget.labels",comment:["Action widget labels for accessibility."]},"{0}, Disabled Reason: {1}",d,a.disabled)),d}return null},getWidgetAriaLabel:()=>F({key:"customQuickFixWidget",comment:["An action widget option"]},"Action Widget"),getRole:a=>a.kind==="action"?"option":"separator",getWidgetRole:()=>"listbox"}})),this._list.style($N),this._register(this._list.onMouseClick(a=>this.onListClick(a))),this._register(this._list.onMouseOver(a=>this.onListHover(a))),this._register(this._list.onDidChangeFocus(()=>this.onFocus())),this._register(this._list.onDidChangeSelection(a=>this.onListSelection(a))),this._allMenuItems=i,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(e){return!e.disabled&&e.kind==="action"}hide(e){this._delegate.onHide(e),this.cts.cancel(),this._contextViewService.hideContextView()}layout(e){const t=this._allMenuItems.filter(a=>a.kind==="header").length,n=this._allMenuItems.length*this._actionLineHeight+t*this._headerLineHeight-t*this._actionLineHeight;this._list.layout(n);let o=e;if(this._allMenuItems.length>=50)o=380;else{const a=this._allMenuItems.map((d,c)=>{const h=this.domNode.ownerDocument.getElementById(this._list.getElementID(c));if(h){h.style.width="auto";const u=h.getBoundingClientRect().width;return h.style.width="",u}return 0});o=Math.max(...a,e)}const r=.7,l=Math.min(n,this.domNode.ownerDocument.body.clientHeight*r);return this._list.layout(l,o),this.domNode.style.height=`${l}px`,this._list.domFocus(),o}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(e){const t=this._list.getFocus();if(t.length===0)return;const i=t[0],n=this._list.element(i);if(!this.focusCondition(n))return;const o=e?new Dge:new Tgt;this._list.setSelection([i],o)}onListSelection(e){if(!e.elements.length)return;const t=e.elements[0];t.item&&this.focusCondition(t)?this._delegate.onSelect(t.item,e.browserEvent instanceof Dge):this._list.setSelection([])}onFocus(){var n,o;const e=this._list.getFocus();if(e.length===0)return;const t=e[0],i=this._list.element(t);(o=(n=this._delegate).onFocus)==null||o.call(n,i.item)}async onListHover(e){const t=e.element;if(t&&t.item&&this.focusCondition(t)){if(this._delegate.onHover&&!t.disabled&&t.kind==="action"){const i=await this._delegate.onHover(t.item,this.cts.token);t.canPreview=i?i.canPreview:void 0}e.index&&this._list.splice(e.index,1,[t])}this._list.setFocus(typeof e.index=="number"?[e.index]:[])}onListClick(e){e.element&&this.focusCondition(e.element)&&this._list.setFocus([])}};P$=V1e([O$(4,ab),O$(5,qn)],P$);function Q1e(s){return s.replace(/\r\n|\r|\n/g," ")}var Bgt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},aH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};te("actionBar.toggledBackground",$v,F("actionBar.toggledBackground","Background color for toggled action items in action bar."));const kN={Visible:new yt("codeActionMenuVisible",!1,F("codeActionMenuVisible","Whether the action widget list is visible"))},rR=un("actionWidgetService");let xN=class extends be{get isVisible(){return kN.Visible.getValue(this._contextKeyService)||!1}constructor(e,t,i){super(),this._contextViewService=e,this._contextKeyService=t,this._instantiationService=i,this._list=this._register(new Lr)}show(e,t,i,n,o,r,l){const a=kN.Visible.bindTo(this._contextKeyService),d=this._instantiationService.createInstance(P$,e,t,i,n);this._contextViewService.showContextView({getAnchor:()=>o,render:c=>(a.set(!0),this._renderWidget(c,d,l??[])),onHide:c=>{a.reset(),this._onWidgetClosed(c)}},r,!1)}acceptSelected(e){var t;(t=this._list.value)==null||t.acceptSelected(e)}focusPrevious(){var e,t;(t=(e=this._list)==null?void 0:e.value)==null||t.focusPrevious()}focusNext(){var e,t;(t=(e=this._list)==null?void 0:e.value)==null||t.focusNext()}hide(e){var t;(t=this._list.value)==null||t.hide(e),this._list.clear()}_renderWidget(e,t,i){var m;const n=document.createElement("div");if(n.classList.add("action-widget"),e.appendChild(n),this._list.value=t,this._list.value)n.appendChild(this._list.value.domNode);else throw new Error("List has no value");const o=new De,r=document.createElement("div"),l=e.appendChild(r);l.classList.add("context-view-block"),o.add(Te(l,ut.MOUSE_DOWN,p=>p.stopPropagation()));const a=document.createElement("div"),d=e.appendChild(a);d.classList.add("context-view-pointerBlock"),o.add(Te(d,ut.POINTER_MOVE,()=>d.remove())),o.add(Te(d,ut.MOUSE_DOWN,()=>d.remove()));let c=0;if(i.length){const p=this._createActionBar(".action-widget-action-bar",i);p&&(n.appendChild(p.getContainer().parentElement),o.add(p),c=p.getContainer().offsetWidth)}const h=(m=this._list.value)==null?void 0:m.layout(c);n.style.width=`${h}px`;const u=o.add(ap(e));return o.add(u.onDidBlur(()=>this.hide(!0))),o}_createActionBar(e,t){if(!t.length)return;const i=gt(e),n=new ih(i);return n.push(t,{icon:!1,label:!0}),n}_onWidgetClosed(e){var t;(t=this._list.value)==null||t.hide(e)}};xN=Bgt([aH(0,ab),aH(1,fi),aH(2,ti)],xN);Fn(rR,xN,1);const Sk=100+1e3;Cs(class extends Ha{constructor(){super({id:"hideCodeActionWidget",title:Ni("hideCodeActionWidget.title","Hide action widget"),precondition:kN.Visible,keybinding:{weight:Sk,primary:9,secondary:[1033]}})}run(s){s.get(rR).hide(!0)}});Cs(class extends Ha{constructor(){super({id:"selectPrevCodeAction",title:Ni("selectPrevCodeAction.title","Select previous action"),precondition:kN.Visible,keybinding:{weight:Sk,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(s){const e=s.get(rR);e instanceof xN&&e.focusPrevious()}});Cs(class extends Ha{constructor(){super({id:"selectNextCodeAction",title:Ni("selectNextCodeAction.title","Select next action"),precondition:kN.Visible,keybinding:{weight:Sk,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(s){const e=s.get(rR);e instanceof xN&&e.focusNext()}});Cs(class extends Ha{constructor(){super({id:W1e,title:Ni("acceptSelected.title","Accept selected action"),precondition:kN.Visible,keybinding:{weight:Sk,primary:3,secondary:[2137]}})}run(s){const e=s.get(rR);e instanceof xN&&e.acceptSelected()}});Cs(class extends Ha{constructor(){super({id:y1e,title:Ni("previewSelected.title","Preview selected action"),precondition:kN.Visible,keybinding:{weight:Sk,primary:2051}})}run(s){const e=s.get(rR);e instanceof xN&&e.acceptSelected(!0)}});const M1e=new yt("supportedCodeAction",""),Gge="_typescript.applyFixAllCodeAction";class Lgt extends be{constructor(e,t,i,n=250){super(),this._editor=e,this._markerService=t,this._signalChange=i,this._delay=n,this._autoTriggerTimer=this._register(new om),this._register(this._markerService.onMarkerChanged(o=>this._onMarkerChanges(o))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(e){const t=this._getRangeOfSelectionUnlessWhitespaceEnclosed(e);this._signalChange(t?{trigger:e,selection:t}:void 0)}_onMarkerChanges(e){const t=this._editor.getModel();t&&e.some(i=>uL(i,t.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:bc.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(e){if(!this._editor.hasModel())return;const t=this._editor.getSelection();if(e.type===1)return t;const i=this._editor.getOption(65).enabled;if(i!==Bu.Off){{if(i===Bu.On)return t;if(i===Bu.OnCode){if(!t.isEmpty())return t;const o=this._editor.getModel(),{lineNumber:r,column:l}=t.getPosition(),a=o.getLineContent(r);if(a.length===0)return;if(l===1){if(/\s/.test(a[0]))return}else if(l===o.getLineMaxColumn(r)){if(/\s/.test(a[a.length-1]))return}else if(/\s/.test(a[l-2])&&/\s/.test(a[l-1]))return}}return t}}}var iS;(function(s){s.Empty={type:0};class e{constructor(i,n,o){this.trigger=i,this.position=n,this._cancellablePromise=o,this.type=1,this.actions=o.catch(r=>{if($h(r))return w1e;throw r})}cancel(){this._cancellablePromise.cancel()}}s.Triggered=e})(iS||(iS={}));const w1e=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1,hasAIFix:!1,allAIFixes:!1});class vgt extends be{constructor(e,t,i,n,o,r,l){super(),this._editor=e,this._registry=t,this._markerService=i,this._progressService=o,this._configurationService=r,this._telemetryService=l,this._codeActionOracle=this._register(new Lr),this._state=iS.Empty,this._onDidChangeState=this._register(new fe),this.onDidChangeState=this._onDidChangeState.event,this._disposed=!1,this._supportedCodeActions=M1e.bindTo(n),this._register(this._editor.onDidChangeModel(()=>this._update())),this._register(this._editor.onDidChangeModelLanguage(()=>this._update())),this._register(this._registry.onDidChange(()=>this._update())),this._register(this._editor.onDidChangeConfiguration(a=>{a.hasChanged(65)&&this._update()})),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(iS.Empty,!0))}_settingEnabledNearbyQuickfixes(){var t;const e=(t=this._editor)==null?void 0:t.getModel();return this._configurationService?this._configurationService.getValue("editor.codeActionWidget.includeNearbyQuickFixes",{resource:e==null?void 0:e.uri}):!1}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(iS.Empty);const e=this._editor.getModel();if(e&&this._registry.has(e)&&!this._editor.getOption(92)){const t=this._registry.all(e).flatMap(i=>i.providedCodeActionKinds??[]);this._supportedCodeActions.set(t.join(" ")),this._codeActionOracle.value=new Lgt(this._editor,this._markerService,i=>{var a;if(!i){this.setState(iS.Empty);return}const n=i.selection.getStartPosition(),o=Tr(async d=>{var c,h,u,m,p,g,f,b,U,S;if(this._settingEnabledNearbyQuickfixes()&&i.trigger.type===1&&(i.trigger.triggerAction===bc.QuickFix||(h=(c=i.trigger.filter)==null?void 0:c.include)!=null&&h.contains($s.QuickFix))){const Z=await LW(this._registry,e,i.selection,i.trigger,Hm.None,d),R=[...Z.allActions];if(d.isCancellationRequested)return w1e;const y=(u=Z.validActions)==null?void 0:u.some(w=>w.action.kind?$s.QuickFix.contains(new ro(w.action.kind)):!1),N=this._markerService.read({resource:e.uri});if(y){for(const w of Z.validActions)(p=(m=w.action.command)==null?void 0:m.arguments)!=null&&p.some(Q=>typeof Q=="string"&&Q.includes(Gge))&&(w.action.diagnostics=[...N.filter(Q=>Q.relatedInformation)]);return{validActions:Z.validActions,allActions:R,documentation:Z.documentation,hasAutoFix:Z.hasAutoFix,hasAIFix:Z.hasAIFix,allAIFixes:Z.allAIFixes,dispose:()=>{Z.dispose()}}}else if(!y&&N.length>0){const w=i.selection.getPosition();let Q=w,C=Number.MAX_VALUE;const v=[...Z.validActions];for(const J of N){const k=J.endColumn,E=J.endLineNumber,K=J.startLineNumber;if(E===w.lineNumber||K===w.lineNumber){Q=new ge(E,k);const de={type:i.trigger.type,triggerAction:i.trigger.triggerAction,filter:{include:(g=i.trigger.filter)!=null&&g.include?(f=i.trigger.filter)==null?void 0:f.include:$s.QuickFix},autoApply:i.trigger.autoApply,context:{notAvailableMessage:((b=i.trigger.context)==null?void 0:b.notAvailableMessage)||"",position:Q}},ee=new _t(Q.lineNumber,Q.column,Q.lineNumber,Q.column),le=await LW(this._registry,e,ee,de,Hm.None,d);if(le.validActions.length!==0){for(const Fe of le.validActions)(S=(U=Fe.action.command)==null?void 0:U.arguments)!=null&&S.some(Ue=>typeof Ue=="string"&&Ue.includes(Gge))&&(Fe.action.diagnostics=[...N.filter(Ue=>Ue.relatedInformation)]);Z.allActions.length===0&&R.push(...le.allActions),Math.abs(w.column-k)<C?v.unshift(...le.validActions):v.push(...le.validActions)}C=Math.abs(w.column-k)}}const Y=v.filter((J,k,E)=>E.findIndex(K=>K.action.title===J.action.title)===k);return Y.sort((J,k)=>J.action.isPreferred&&!k.action.isPreferred?-1:!J.action.isPreferred&&k.action.isPreferred||J.action.isAI&&!k.action.isAI?1:!J.action.isAI&&k.action.isAI?-1:0),{validActions:Y,allActions:R,documentation:Z.documentation,hasAutoFix:Z.hasAutoFix,hasAIFix:Z.hasAIFix,allAIFixes:Z.allAIFixes,dispose:()=>{Z.dispose()}}}}if(i.trigger.type===1){const Z=new jr,R=await LW(this._registry,e,i.selection,i.trigger,Hm.None,d);return this._telemetryService&&this._telemetryService.publicLog2("codeAction.invokedDurations",{codeActions:R.validActions.length,duration:Z.elapsed()}),R}return LW(this._registry,e,i.selection,i.trigger,Hm.None,d)});i.trigger.type===1&&((a=this._progressService)==null||a.showWhile(o,250));const r=new iS.Triggered(i.trigger,n,o);let l=!1;this._state.type===1&&(l=this._state.trigger.type===1&&r.type===1&&r.trigger.type===2&&this._state.position!==r.position),l?setTimeout(()=>{this.setState(r)},500):this.setState(r)},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:bc.Default})}else this._supportedCodeActions.reset()}trigger(e){var t;(t=this._codeActionOracle.value)==null||t.trigger(e)}setState(e,t){e!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=e,!t&&!this._disposed&&this._onDidChangeState.fire(e))}}var kgt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Mp=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},CV;const xgt="quickfix-edit-highlight";var qS;let jy=(qS=class extends be{static get(e){return e.getContribution(CV.ID)}constructor(e,t,i,n,o,r,l,a,d,c,h){super(),this._commandService=l,this._configurationService=a,this._actionWidgetService=d,this._instantiationService=c,this._telemetryService=h,this._activeCodeActions=this._register(new Lr),this._showDisabled=!1,this._disposed=!1,this._editor=e,this._model=this._register(new vgt(this._editor,o.codeActionProvider,t,i,r,a,this._telemetryService)),this._register(this._model.onDidChangeState(u=>this.update(u))),this._lightBulbWidget=new qu(()=>{const u=this._editor.getContribution(OL.ID);return u&&this._register(u.onClick(m=>this.showCodeActionsFromLightbulb(m.actions,m))),u}),this._resolver=n.createInstance(z$),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}async showCodeActionsFromLightbulb(e,t){if(e.allAIFixes&&e.validActions.length===1){const i=e.validActions[0],n=i.action.command;n&&n.id==="inlineChat.start"&&n.arguments&&n.arguments.length>=1&&(n.arguments[0]={...n.arguments[0],autoSend:!1}),await this._applyCodeAction(i,!1,!1,RS.FromAILightbulb);return}await this.showCodeActionList(e,t,{includeDisabledActions:!1,fromLightbulb:!0})}showCodeActions(e,t,i){return this.showCodeActionList(t,i,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(e,t,i,n){var r;if(!this._editor.hasModel())return;(r=cc.get(this._editor))==null||r.closeMessage();const o=this._editor.getPosition();this._trigger({type:1,triggerAction:t,filter:i,autoApply:n,context:{notAvailableMessage:e,position:o}})}_trigger(e){return this._model.trigger(e)}async _applyCodeAction(e,t,i,n){try{await this._instantiationService.invokeFunction(Sgt,e,n,{preview:i,editor:this._editor})}finally{t&&this._trigger({type:2,triggerAction:bc.QuickFix,filter:{}})}}hideLightBulbWidget(){var e,t;(e=this._lightBulbWidget.rawValue)==null||e.hide(),(t=this._lightBulbWidget.rawValue)==null||t.gutterHide()}async update(e){var n,o,r,l,a;if(e.type!==1){this.hideLightBulbWidget();return}let t;try{t=await e.actions}catch(d){wi(d);return}if(this._disposed)return;const i=this._editor.getSelection();if((i==null?void 0:i.startLineNumber)===e.position.lineNumber)if((n=this._lightBulbWidget.value)==null||n.update(t,e.trigger,e.position),e.trigger.type===1){if((o=e.trigger.filter)!=null&&o.include){const c=this.tryGetValidActionToApply(e.trigger,t);if(c){try{this.hideLightBulbWidget(),await this._applyCodeAction(c,!1,!1,RS.FromCodeActions)}finally{t.dispose()}return}if(e.trigger.context){const h=this.getInvalidActionThatWouldHaveBeenApplied(e.trigger,t);if(h&&h.action.disabled){(r=cc.get(this._editor))==null||r.showMessage(h.action.disabled,e.trigger.context.position),t.dispose();return}}}const d=!!((l=e.trigger.filter)!=null&&l.include);if(e.trigger.context&&(!t.allActions.length||!d&&!t.validActions.length)){(a=cc.get(this._editor))==null||a.showMessage(e.trigger.context.notAvailableMessage,e.trigger.context.position),this._activeCodeActions.value=t,t.dispose();return}this._activeCodeActions.value=t,this.showCodeActionList(t,this.toCoords(e.position),{includeDisabledActions:d,fromLightbulb:!1})}else this._actionWidgetService.isVisible?t.dispose():this._activeCodeActions.value=t}getInvalidActionThatWouldHaveBeenApplied(e,t){if(t.allActions.length&&(e.autoApply==="first"&&t.validActions.length===0||e.autoApply==="ifSingle"&&t.allActions.length===1))return t.allActions.find(({action:i})=>i.disabled)}tryGetValidActionToApply(e,t){if(t.validActions.length&&(e.autoApply==="first"&&t.validActions.length>0||e.autoApply==="ifSingle"&&t.validActions.length===1))return t.validActions[0]}async showCodeActionList(e,t,i){const n=this._editor.createDecorationsCollection(),o=this._editor.getDomNode();if(!o)return;const r=i.includeDisabledActions&&(this._showDisabled||e.validActions.length===0)?e.allActions:e.validActions;if(!r.length)return;const l=ge.isIPosition(t)?this.toCoords(t):t,a={onSelect:async(d,c)=>{this._applyCodeAction(d,!0,!!c,i.fromLightbulb?RS.FromAILightbulb:RS.FromCodeActions),this._actionWidgetService.hide(!1),n.clear()},onHide:d=>{var c;(c=this._editor)==null||c.focus(),n.clear()},onHover:async(d,c)=>{var m;if(c.isCancellationRequested)return;let h=!1;const u=d.action.kind;if(u){const p=new ro(u);h=[$s.RefactorExtract,$s.RefactorInline,$s.RefactorRewrite,$s.RefactorMove,$s.Source].some(f=>f.contains(p))}return{canPreview:h||!!((m=d.action.edit)!=null&&m.edits.length)}},onFocus:d=>{var c,h;if(d&&d.action){const u=d.action.ranges,m=d.action.diagnostics;if(n.clear(),u&&u.length>0){const p=m&&(m==null?void 0:m.length)>1?m.map(g=>({range:g,options:CV.DECORATION})):u.map(g=>({range:g,options:CV.DECORATION}));n.set(p)}else if(m&&m.length>0){const p=m.map(f=>({range:f,options:CV.DECORATION}));n.set(p);const g=m[0];if(g.startLineNumber&&g.startColumn){const f=(h=(c=this._editor.getModel())==null?void 0:c.getWordAtPosition({lineNumber:g.startLineNumber,column:g.startColumn}))==null?void 0:h.word;Xg(F("editingNewSelection","Context: {0} at line {1} and column {2}.",f,g.startLineNumber,g.startColumn))}}}else n.clear()}};this._actionWidgetService.show("codeActionWidget",!0,ygt(r,this._shouldShowHeaders(),this._resolver.getResolver()),a,l,o,this._getActionBarActions(e,t,i))}toCoords(e){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(e,1),this._editor.render();const t=this._editor.getScrolledVisiblePosition(e),i=Lo(this._editor.getDomNode()),n=i.left+t.left,o=i.top+t.top+t.height;return{x:n,y:o}}_shouldShowHeaders(){var t;const e=(t=this._editor)==null?void 0:t.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:e==null?void 0:e.uri})}_getActionBarActions(e,t,i){if(i.fromLightbulb)return[];const n=e.documentation.map(o=>({id:o.id,label:o.title,tooltip:o.tooltip??"",class:void 0,enabled:!0,run:()=>this._commandService.executeCommand(o.id,...o.arguments??[])}));return i.includeDisabledActions&&e.validActions.length>0&&e.allActions.length!==e.validActions.length&&n.push(this._showDisabled?{id:"hideMoreActions",label:F("hideMoreActions","Hide Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(e,t,i))}:{id:"showMoreActions",label:F("showMoreActions","Show Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(e,t,i))}),n}},CV=qS,qS.ID="editor.contrib.codeActionController",qS.DECORATION=ki.register({description:"quickfix-highlight",className:xgt}),qS);jy=CV=kgt([Mp(1,i0),Mp(2,fi),Mp(3,ti),Mp(4,xt),Mp(5,iA),Mp(6,ks),Mp(7,Hi),Mp(8,rR),Mp(9,ti),Mp(10,$l)],jy);eu((s,e)=>{((n,o)=>{o&&e.addRule(`.monaco-editor ${n} { background-color: ${o}; }`)})(".quickfix-edit-highlight",s.getColor(Qf));const i=s.getColor(OU);i&&e.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${np(s.type)?"dotted":"solid"} ${i}; box-sizing: border-box; }`)});function Nk(s){return Ge.regex(M1e.keys()[0],new RegExp("(\\s|^)"+nh(s.value)+"\\b"))}const ule={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:F("args.schema.kind","Kind of the code action to run.")},apply:{type:"string",description:F("args.schema.apply","Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[F("args.schema.apply.first","Always apply the first returned code action."),F("args.schema.apply.ifSingle","Apply the first returned code action if it is the only one."),F("args.schema.apply.never","Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:F("args.schema.preferred","Controls if only preferred code actions should be returned.")}}};function lR(s,e,t,i,n=bc.Default){if(s.hasModel()){const o=jy.get(s);o==null||o.manualTriggerAtCurrentPosition(e,n,t,i)}}class Igt extends Tt{constructor(){super({id:hle,label:F("quickfix.trigger.label","Quick Fix..."),alias:"Quick Fix...",precondition:Ge.and($.writable,$.hasCodeActionsProvider),kbOpts:{kbExpr:$.textInputFocus,primary:2137,weight:100}})}run(e,t){return lR(t,F("editor.action.quickFix.noneMessage","No code actions available"),void 0,void 0,bc.QuickFix)}}class Egt extends Nr{constructor(){super({id:A1e,precondition:Ge.and($.writable,$.hasCodeActionsProvider),metadata:{description:"Trigger a code action",args:[{name:"args",schema:ule}]}})}runEditorCommand(e,t,i){const n=Wg.fromUser(i,{kind:ro.Empty,apply:"ifSingle"});return lR(t,typeof(i==null?void 0:i.kind)=="string"?n.preferred?F("editor.action.codeAction.noneMessage.preferred.kind","No preferred code actions for '{0}' available",i.kind):F("editor.action.codeAction.noneMessage.kind","No code actions for '{0}' available",i.kind):n.preferred?F("editor.action.codeAction.noneMessage.preferred","No preferred code actions available"):F("editor.action.codeAction.noneMessage","No code actions available"),{include:n.kind,includeSourceActions:!0,onlyIncludePreferredActions:n.preferred},n.apply)}}class Dgt extends Tt{constructor(){super({id:S1e,label:F("refactor.label","Refactor..."),alias:"Refactor...",precondition:Ge.and($.writable,$.hasCodeActionsProvider),kbOpts:{kbExpr:$.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:Ge.and($.writable,Nk($s.Refactor))},metadata:{description:"Refactor...",args:[{name:"args",schema:ule}]}})}run(e,t,i){const n=Wg.fromUser(i,{kind:$s.Refactor,apply:"never"});return lR(t,typeof(i==null?void 0:i.kind)=="string"?n.preferred?F("editor.action.refactor.noneMessage.preferred.kind","No preferred refactorings for '{0}' available",i.kind):F("editor.action.refactor.noneMessage.kind","No refactorings for '{0}' available",i.kind):n.preferred?F("editor.action.refactor.noneMessage.preferred","No preferred refactorings available"):F("editor.action.refactor.noneMessage","No refactorings available"),{include:$s.Refactor.contains(n.kind)?n.kind:ro.None,onlyIncludePreferredActions:n.preferred},n.apply,bc.Refactor)}}class Ggt extends Tt{constructor(){super({id:N1e,label:F("source.label","Source Action..."),alias:"Source Action...",precondition:Ge.and($.writable,$.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:Ge.and($.writable,Nk($s.Source))},metadata:{description:"Source Action...",args:[{name:"args",schema:ule}]}})}run(e,t,i){const n=Wg.fromUser(i,{kind:$s.Source,apply:"never"});return lR(t,typeof(i==null?void 0:i.kind)=="string"?n.preferred?F("editor.action.source.noneMessage.preferred.kind","No preferred source actions for '{0}' available",i.kind):F("editor.action.source.noneMessage.kind","No source actions for '{0}' available",i.kind):n.preferred?F("editor.action.source.noneMessage.preferred","No preferred source actions available"):F("editor.action.source.noneMessage","No source actions available"),{include:$s.Source.contains(n.kind)?n.kind:ro.None,includeSourceActions:!0,onlyIncludePreferredActions:n.preferred},n.apply,bc.SourceAction)}}class Jgt extends Tt{constructor(){super({id:X$,label:F("organizeImports.label","Organize Imports"),alias:"Organize Imports",precondition:Ge.and($.writable,Nk($s.SourceOrganizeImports)),kbOpts:{kbExpr:$.textInputFocus,primary:1581,weight:100}})}run(e,t){return lR(t,F("editor.action.organize.noneMessage","No organize imports action available"),{include:$s.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",bc.OrganizeImports)}}class Xgt extends Tt{constructor(){super({id:Y$,label:F("fixAll.label","Fix All"),alias:"Fix All",precondition:Ge.and($.writable,Nk($s.SourceFixAll))})}run(e,t){return lR(t,F("fixAll.noneMessage","No fix all action available"),{include:$s.SourceFixAll,includeSourceActions:!0},"ifSingle",bc.FixAll)}}class Ygt extends Tt{constructor(){super({id:Z1e,label:F("autoFix.label","Auto Fix..."),alias:"Auto Fix...",precondition:Ge.and($.writable,Nk($s.QuickFix)),kbOpts:{kbExpr:$.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(e,t){return lR(t,F("editor.action.autoFix.noneMessage","No auto fixes available"),{include:$s.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",bc.AutoFix)}}Wn(jy.ID,jy,3);Wn(OL.ID,OL,4);lt(Igt);lt(Dgt);lt(Ggt);lt(Jgt);lt(Ygt);lt(Xgt);Vt(new Egt);fo.as(rm.Configuration).registerConfiguration({...sk,properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:5,description:F("showCodeActionHeaders","Enable/disable showing group headers in the Code Action menu."),default:!0}}});fo.as(rm.Configuration).registerConfiguration({...sk,properties:{"editor.codeActionWidget.includeNearbyQuickFixes":{type:"boolean",scope:5,description:F("includeNearbyQuickFixes","Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),default:!0}}});fo.as(rm.Configuration).registerConfiguration({...sk,properties:{"editor.codeActions.triggerOnFocusChange":{type:"boolean",scope:5,markdownDescription:F("triggerOnFocusChange","Enable triggering {0} when {1} is set to {2}. Code Actions must be set to {3} to be triggered for window and focus changes.","`#editor.codeActionsOnSave#`","`#files.autoSave#`","`afterDelay`","`always`"),default:!1}}});class H${constructor(){this.lenses=[],this._disposables=new De}dispose(){this._disposables.dispose()}get isDisposed(){return this._disposables.isDisposed}add(e,t){this._disposables.add(e);for(const i of e.lenses)this.lenses.push({symbol:i,provider:t})}}async function T1e(s,e,t){const i=s.ordered(e),n=new Map,o=new H$,r=i.map(async(l,a)=>{n.set(l,a);try{const d=await Promise.resolve(l.provideCodeLenses(e,t));d&&o.add(d,l)}catch(d){vo(d)}});return await Promise.all(r),o.lenses=o.lenses.sort((l,a)=>l.symbol.range.startLineNumber<a.symbol.range.startLineNumber?-1:l.symbol.range.startLineNumber>a.symbol.range.startLineNumber?1:n.get(l.provider)<n.get(a.provider)?-1:n.get(l.provider)>n.get(a.provider)?1:l.symbol.range.startColumn<a.symbol.range.startColumn?-1:l.symbol.range.startColumn>a.symbol.range.startColumn?1:0),o}Sn.registerCommand("_executeCodeLensProvider",function(s,...e){let[t,i]=e;vn(ni.isUri(t)),vn(typeof i=="number"||!i);const{codeLensProvider:n}=s.get(xt),o=s.get(zs).getModel(t);if(!o)throw Xh();const r=[],l=new De;return T1e(n,o,Gi.None).then(a=>{l.add(a);const d=[];for(const c of a.lenses)i==null||c.symbol.command?r.push(c.symbol):i-- >0&&c.provider.resolveCodeLens&&d.push(Promise.resolve(c.provider.resolveCodeLens(o,c.symbol,Gi.None)).then(h=>r.push(h||c.symbol)));return Promise.all(d)}).then(()=>r).finally(()=>{setTimeout(()=>l.dispose(),100)})});var _gt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zgt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const C1e=un("ICodeLensCache");class Jge{constructor(e,t){this.lineCount=e,this.data=t}}let K$=class{constructor(e){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new $g(20,.75);const t="codelens/cache";RT(Us,()=>e.remove(t,1));const i="codelens/cache2",n=e.get(i,1,"{}");this._deserialize(n);const o=Ut.filter(e.onWillSaveState,r=>r.reason===UL.SHUTDOWN);Ut.once(o)(r=>{e.store(i,this._serialize(),1,1)})}put(e,t){const i=t.lenses.map(r=>{var l;return{range:r.symbol.range,command:r.symbol.command&&{id:"",title:(l=r.symbol.command)==null?void 0:l.title}}}),n=new H$;n.add({lenses:i,dispose:()=>{}},this._fakeProvider);const o=new Jge(e.getLineCount(),n);this._cache.set(e.uri.toString(),o)}get(e){const t=this._cache.get(e.uri.toString());return t&&t.lineCount===e.getLineCount()?t.data:void 0}delete(e){this._cache.delete(e.uri.toString())}_serialize(){const e=Object.create(null);for(const[t,i]of this._cache){const n=new Set;for(const o of i.data.lenses)n.add(o.symbol.range.startLineNumber);e[t]={lineCount:i.lineCount,lines:[...n.values()]}}return JSON.stringify(e)}_deserialize(e){try{const t=JSON.parse(e);for(const i in t){const n=t[i],o=[];for(const l of n.lines)o.push({range:new z(l,1,l,11)});const r=new H$;r.add({lenses:o,dispose(){}},this._fakeProvider),this._cache.set(i,new Jge(n.lineCount,r))}}catch{}}};K$=_gt([zgt(0,lm)],K$);Fn(C1e,K$,1);class Ogt{constructor(e,t,i){this.afterColumn=1073741824,this.afterLineNumber=e,this.heightInPx=t,this._onHeight=i,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(e){this._lastHeight===void 0?this._lastHeight=e:this._lastHeight!==e&&(this._lastHeight=e,this._onHeight())}isVisible(){return this._lastHeight!==0&&this.domNode.hasAttribute("monaco-visible-view-zone")}}const MB=class MB{constructor(e,t){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=e,this._id=`codelens.widget-${MB._idPool++}`,this.updatePosition(t),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration"}withCommands(e,t){this._commands.clear();const i=[];let n=!1;for(let o=0;o<e.length;o++){const r=e[o];if(r&&(n=!0,r.command)){const l=SF(r.command.title.trim());if(r.command.id){const a=`c${MB._idPool++}`;i.push(gt("a",{id:a,title:r.command.tooltip,role:"button"},...l)),this._commands.set(a,r.command)}else i.push(gt("span",{title:r.command.tooltip},...l));o+1<e.length&&i.push(gt("span",void 0," | "))}}n?(cl(this._domNode,...i),this._isEmpty&&t&&this._domNode.classList.add("fadein"),this._isEmpty=!1):cl(this._domNode,gt("span",void 0,"no commands"))}getCommand(e){return e.parentElement===this._domNode?this._commands.get(e.id):void 0}getId(){return this._id}getDomNode(){return this._domNode}updatePosition(e){const t=this._editor.getModel().getLineFirstNonWhitespaceColumn(e);this._widgetPosition={position:{lineNumber:e,column:t},preference:[1]}}getPosition(){return this._widgetPosition||null}};MB._idPool=0;let q$=MB;class dH{constructor(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}addDecoration(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)}removeDecoration(e){this._removeDecorations.push(e)}commit(e){const t=e.deltaDecorations(this._removeDecorations,this._addDecorations);for(let i=0,n=t.length;i<n;i++)this._addDecorationsCallbacks[i](t[i])}}const Xge=ki.register({collapseOnReplaceEdit:!0,description:"codelens"});class Yge{constructor(e,t,i,n,o,r){this._isDisposed=!1,this._editor=t,this._data=e,this._decorationIds=[];let l;const a=[];this._data.forEach((d,c)=>{d.symbol.command&&a.push(d.symbol),i.addDecoration({range:d.symbol.range,options:Xge},h=>this._decorationIds[c]=h),l?l=z.plusRange(l,d.symbol.range):l=z.lift(d.symbol.range)}),this._viewZone=new Ogt(l.startLineNumber-1,o,r),this._viewZoneId=n.addZone(this._viewZone),a.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(a,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new q$(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(e,t){this._decorationIds.forEach(e.removeDecoration,e),this._decorationIds=[],t==null||t.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some((e,t)=>{const i=this._editor.getModel().getDecorationRange(e),n=this._data[t].symbol;return!!(i&&z.isEmpty(n.range)===i.isEmpty())})}updateCodeLensSymbols(e,t){this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],this._data=e,this._data.forEach((i,n)=>{t.addDecoration({range:i.symbol.range,options:Xge},o=>this._decorationIds[n]=o)})}updateHeight(e,t){this._viewZone.heightInPx=e,t.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(e){if(!this._viewZone.isVisible())return null;for(let t=0;t<this._decorationIds.length;t++){const i=e.getDecorationRange(this._decorationIds[t]);i&&(this._data[t].symbol.range=i)}return this._data}updateCommands(e){this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(e,!0);for(let t=0;t<this._data.length;t++){const i=e[t];if(i){const{symbol:n}=this._data[t];n.command=i.command||n.command}}}getCommand(e){var t;return(t=this._contentWidget)==null?void 0:t.getCommand(e)}getLineNumber(){const e=this._editor.getModel().getDecorationRange(this._decorationIds[0]);return e?e.startLineNumber:-1}update(e){if(this.isValid()){const t=this._editor.getModel().getDecorationRange(this._decorationIds[0]);t&&(this._viewZone.afterLineNumber=t.startLineNumber-1,e.layoutZone(this._viewZoneId),this._contentWidget&&(this._contentWidget.updatePosition(t.startLineNumber),this._editor.layoutContentWidget(this._contentWidget)))}}}var jgt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ww=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Vv;let jL=(Vv=class{constructor(e,t,i,n,o,r){this._editor=e,this._languageFeaturesService=t,this._commandService=n,this._notificationService=o,this._codeLensCache=r,this._disposables=new De,this._localToDispose=new De,this._lenses=[],this._oldCodeLensModels=new De,this._provideCodeLensDebounce=i.for(t.codeLensProvider,"CodeLensProvide",{min:250}),this._resolveCodeLensesDebounce=i.for(t.codeLensProvider,"CodeLensResolve",{min:250,salt:"resolve"}),this._resolveCodeLensesScheduler=new cs(()=>this._resolveCodeLensesInViewport(),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeConfiguration(l=>{(l.hasChanged(50)||l.hasChanged(19)||l.hasChanged(18))&&this._updateLensStyle(),l.hasChanged(17)&&this._onModelChange()})),this._disposables.add(t.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var e;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(e=this._currentCodeLensModel)==null||e.dispose()}_getLayoutInfo(){const e=Math.max(1.3,this._editor.getOption(67)/this._editor.getOption(52));let t=this._editor.getOption(19);return(!t||t<5)&&(t=this._editor.getOption(52)*.9|0),{fontSize:t,codeLensHeight:t*e|0}}_updateLensStyle(){const{codeLensHeight:e,fontSize:t}=this._getLayoutInfo(),i=this._editor.getOption(18),n=this._editor.getOption(50),{style:o}=this._editor.getContainerDomNode();o.setProperty("--vscode-editorCodeLens-lineHeight",`${e}px`),o.setProperty("--vscode-editorCodeLens-fontSize",`${t}px`),o.setProperty("--vscode-editorCodeLens-fontFeatureSettings",n.fontFeatureSettings),i&&(o.setProperty("--vscode-editorCodeLens-fontFamily",i),o.setProperty("--vscode-editorCodeLens-fontFamilyDefault",Xa.fontFamily)),this._editor.changeViewZones(r=>{for(const l of this._lenses)l.updateHeight(e,r)})}_localDispose(){var e,t,i;(e=this._getCodeLensModelPromise)==null||e.cancel(),this._getCodeLensModelPromise=void 0,(t=this._resolveCodeLensesPromise)==null||t.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(i=this._currentCodeLensModel)==null||i.dispose()}_onModelChange(){this._localDispose();const e=this._editor.getModel();if(!e||!this._editor.getOption(17)||e.isTooLargeForTokenization())return;const t=this._codeLensCache.get(e);if(t&&this._renderCodeLensSymbols(t),!this._languageFeaturesService.codeLensProvider.has(e)){t&&kF(()=>{const n=this._codeLensCache.get(e);t===n&&(this._codeLensCache.delete(e),this._onModelChange())},30*1e3,this._localToDispose);return}for(const n of this._languageFeaturesService.codeLensProvider.all(e))if(typeof n.onDidChange=="function"){const o=n.onDidChange(()=>i.schedule());this._localToDispose.add(o)}const i=new cs(()=>{var o;const n=Date.now();(o=this._getCodeLensModelPromise)==null||o.cancel(),this._getCodeLensModelPromise=Tr(r=>T1e(this._languageFeaturesService.codeLensProvider,e,r)),this._getCodeLensModelPromise.then(r=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=r,this._codeLensCache.put(e,r);const l=this._provideCodeLensDebounce.update(e,Date.now()-n);i.delay=l,this._renderCodeLensSymbols(r),this._resolveCodeLensesInViewportSoon()},wi)},this._provideCodeLensDebounce.get(e));this._localToDispose.add(i),this._localToDispose.add(ei(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var n;this._editor.changeDecorations(o=>{this._editor.changeViewZones(r=>{const l=[];let a=-1;this._lenses.forEach(c=>{!c.isValid()||a===c.getLineNumber()?l.push(c):(c.update(r),a=c.getLineNumber())});const d=new dH;l.forEach(c=>{c.dispose(d,r),this._lenses.splice(this._lenses.indexOf(c),1)}),d.commit(o)})}),i.schedule(),this._resolveCodeLensesScheduler.cancel(),(n=this._resolveCodeLensesPromise)==null||n.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorText(()=>{i.schedule()})),this._localToDispose.add(this._editor.onDidBlurEditorText(()=>{i.cancel()})),this._localToDispose.add(this._editor.onDidScrollChange(n=>{n.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(ei(()=>{if(this._editor.getModel()){const n=mp.capture(this._editor);this._editor.changeDecorations(o=>{this._editor.changeViewZones(r=>{this._disposeAllLenses(o,r)})}),n.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(n=>{if(n.target.type!==9)return;let o=n.target.element;if((o==null?void 0:o.tagName)==="SPAN"&&(o=o.parentElement),(o==null?void 0:o.tagName)==="A")for(const r of this._lenses){const l=r.getCommand(o);if(l){this._commandService.executeCommand(l.id,...l.arguments||[]).catch(a=>this._notificationService.error(a));break}}})),i.schedule()}_disposeAllLenses(e,t){const i=new dH;for(const n of this._lenses)n.dispose(i,t);e&&i.commit(e),this._lenses.length=0}_renderCodeLensSymbols(e){if(!this._editor.hasModel())return;const t=this._editor.getModel().getLineCount(),i=[];let n;for(const l of e.lenses){const a=l.symbol.range.startLineNumber;a<1||a>t||(n&&n[n.length-1].symbol.range.startLineNumber===a?n.push(l):(n=[l],i.push(n)))}if(!i.length&&!this._lenses.length)return;const o=mp.capture(this._editor),r=this._getLayoutInfo();this._editor.changeDecorations(l=>{this._editor.changeViewZones(a=>{const d=new dH;let c=0,h=0;for(;h<i.length&&c<this._lenses.length;){const u=i[h][0].symbol.range.startLineNumber,m=this._lenses[c].getLineNumber();m<u?(this._lenses[c].dispose(d,a),this._lenses.splice(c,1)):m===u?(this._lenses[c].updateCodeLensSymbols(i[h],d),h++,c++):(this._lenses.splice(c,0,new Yge(i[h],this._editor,d,a,r.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),c++,h++)}for(;c<this._lenses.length;)this._lenses[c].dispose(d,a),this._lenses.splice(c,1);for(;h<i.length;)this._lenses.push(new Yge(i[h],this._editor,d,a,r.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),h++;d.commit(l)})}),o.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var r;(r=this._resolveCodeLensesPromise)==null||r.cancel(),this._resolveCodeLensesPromise=void 0;const e=this._editor.getModel();if(!e)return;const t=[],i=[];if(this._lenses.forEach(l=>{const a=l.computeIfNecessary(e);a&&(t.push(a),i.push(l))}),t.length===0)return;const n=Date.now(),o=Tr(l=>{const a=t.map((d,c)=>{const h=new Array(d.length),u=d.map((m,p)=>!m.symbol.command&&typeof m.provider.resolveCodeLens=="function"?Promise.resolve(m.provider.resolveCodeLens(e,m.symbol,l)).then(g=>{h[p]=g},vo):(h[p]=m.symbol,Promise.resolve(void 0)));return Promise.all(u).then(()=>{!l.isCancellationRequested&&!i[c].isDisposed()&&i[c].updateCommands(h)})});return Promise.all(a)});this._resolveCodeLensesPromise=o,this._resolveCodeLensesPromise.then(()=>{const l=this._resolveCodeLensesDebounce.update(e,Date.now()-n);this._resolveCodeLensesScheduler.delay=l,this._currentCodeLensModel&&this._codeLensCache.put(e,this._currentCodeLensModel),this._oldCodeLensModels.clear(),o===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},l=>{wi(l),o===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}async getModel(){var e;return await this._getCodeLensModelPromise,await this._resolveCodeLensesPromise,(e=this._currentCodeLensModel)!=null&&e.isDisposed?void 0:this._currentCodeLensModel}},Vv.ID="css.editor.codeLens",Vv);jL=jgt([ww(1,xt),ww(2,dh),ww(3,ks),ww(4,jo),ww(5,C1e)],jL);Wn(jL.ID,jL,1);lt(class extends Tt{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:$.hasCodeLensProvider,label:F("showLensOnLine","Show CodeLens Commands For Current Line"),alias:"Show CodeLens Commands For Current Line"})}async run(e,t){if(!t.hasModel())return;const i=e.get(tu),n=e.get(ks),o=e.get(jo),r=t.getSelection().positionLineNumber,l=t.getContribution(jL.ID);if(!l)return;const a=await l.getModel();if(!a)return;const d=[];for(const u of a.lenses)u.symbol.command&&u.symbol.range.startLineNumber===r&&d.push({label:u.symbol.command.title,command:u.symbol.command});if(d.length===0)return;const c=await i.pick(d,{canPickMany:!1,placeHolder:F("placeHolder","Select a command")});if(!c)return;let h=c.command;if(a.isDisposed){const u=await l.getModel(),m=u==null?void 0:u.lenses.find(p=>{var g;return p.symbol.range.startLineNumber===r&&((g=p.symbol.command)==null?void 0:g.title)===h.title});if(!m||!m.symbol.command)return;h=m.symbol.command}try{await n.executeCommand(h.id,...h.arguments||[])}catch(u){o.error(u)}}});var B1e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},$$=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let PL=class{constructor(e){this._editorWorkerService=e}async provideDocumentColors(e,t){return this._editorWorkerService.computeDefaultDocumentColors(e.uri)}provideColorPresentations(e,t,i){const n=t.range,o=t.color,r=o.alpha,l=new Je(new Qn(Math.round(255*o.red),Math.round(255*o.green),Math.round(255*o.blue),r)),a=r?Je.Format.CSS.formatRGB(l):Je.Format.CSS.formatRGBA(l),d=r?Je.Format.CSS.formatHSL(l):Je.Format.CSS.formatHSLA(l),c=r?Je.Format.CSS.formatHex(l):Je.Format.CSS.formatHexA(l),h=[];return h.push({label:a,textEdit:{range:n,text:a}}),h.push({label:d,textEdit:{range:n,text:d}}),h.push({label:c,textEdit:{range:n,text:c}}),h}};PL=B1e([$$(0,Ld)],PL);let eee=class extends be{constructor(e,t){super(),this._register(e.colorProvider.register("*",new PL(t)))}};eee=B1e([$$(0,xt),$$(1,Ld)],eee);QM(eee);async function L1e(s,e,t,i=!0){return mle(new Pgt,s,e,t,i)}function v1e(s,e,t,i){return Promise.resolve(t.provideColorPresentations(s,e,i))}class Pgt{constructor(){}async compute(e,t,i,n){const o=await e.provideDocumentColors(t,i);if(Array.isArray(o))for(const r of o)n.push({colorInfo:r,provider:e});return Array.isArray(o)}}class Hgt{constructor(){}async compute(e,t,i,n){const o=await e.provideDocumentColors(t,i);if(Array.isArray(o))for(const r of o)n.push({range:r.range,color:[r.color.red,r.color.green,r.color.blue,r.color.alpha]});return Array.isArray(o)}}class Kgt{constructor(e){this.colorInfo=e}async compute(e,t,i,n){const o=await e.provideColorPresentations(t,this.colorInfo,Gi.None);return Array.isArray(o)&&n.push(...o),Array.isArray(o)}}async function mle(s,e,t,i,n){let o=!1,r;const l=[],a=e.ordered(t);for(let d=a.length-1;d>=0;d--){const c=a[d];if(c instanceof PL)r=c;else try{await s.compute(c,t,i,l)&&(o=!0)}catch(h){vo(h)}}return o?l:r&&n?(await s.compute(r,t,i,l),l):[]}function k1e(s,e){const{colorProvider:t}=s.get(xt),i=s.get(zs).getModel(e);if(!i)throw Xh();const n=s.get(Hi).getValue("editor.defaultColorDecorators",{resource:e});return{model:i,colorProviderRegistry:t,isDefaultColorDecoratorsEnabled:n}}Sn.registerCommand("_executeDocumentColorProvider",function(s,...e){const[t]=e;if(!(t instanceof ni))throw Xh();const{model:i,colorProviderRegistry:n,isDefaultColorDecoratorsEnabled:o}=k1e(s,t);return mle(new Hgt,n,i,Gi.None,o)});Sn.registerCommand("_executeColorPresentationProvider",function(s,...e){const[t,i]=e,{uri:n,range:o}=i;if(!(n instanceof ni)||!Array.isArray(t)||t.length!==4||!z.isIRange(o))throw Xh();const{model:r,colorProviderRegistry:l,isDefaultColorDecoratorsEnabled:a}=k1e(s,n),[d,c,h,u]=t;return mle(new Kgt({range:o,color:{red:d,green:c,blue:h,alpha:u}}),l,r,Gi.None,a)});var qgt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},cH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},tee;const x1e=Object.create({});var $S;let Py=($S=class extends be{constructor(e,t,i,n){super(),this._editor=e,this._configurationService=t,this._languageFeaturesService=i,this._localToDispose=this._register(new De),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=new S5(this._editor),this._decoratorLimitReporter=new $gt,this._colorDecorationClassRefs=this._register(new De),this._debounceInformation=n.for(i.colorProvider,"Document Colors",{min:tee.RECOMPUTE_TIME}),this._register(e.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(e.onDidChangeModelLanguage(()=>this.updateColors())),this._register(i.colorProvider.onDidChange(()=>this.updateColors())),this._register(e.onDidChangeConfiguration(o=>{const r=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(148);const l=r!==this._isColorDecoratorsEnabled||o.hasChanged(21),a=o.hasChanged(148);(l||a)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(148),this.updateColors()}isEnabled(){const e=this._editor.getModel();if(!e)return!1;const t=e.getLanguageId(),i=this._configurationService.getValue(t);if(i&&typeof i=="object"){const n=i.colorDecorators;if(n&&n.enable!==void 0&&!n.enable)return n.enable}return this._editor.getOption(20)}static get(e){return e.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const e=this._editor.getModel();!e||!this._languageFeaturesService.colorProvider.has(e)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new om,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(e)))})),this.beginCompute())}async beginCompute(){this._computePromise=Tr(async e=>{const t=this._editor.getModel();if(!t)return[];const i=new jr(!1),n=await L1e(this._languageFeaturesService.colorProvider,t,e,this._isDefaultColorDecoratorsEnabled);return this._debounceInformation.update(t,i.elapsed()),n});try{const e=await this._computePromise;this.updateDecorations(e),this.updateColorDecorators(e),this._computePromise=null}catch(e){wi(e)}}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(e){const t=e.map(i=>({range:{startLineNumber:i.colorInfo.range.startLineNumber,startColumn:i.colorInfo.range.startColumn,endLineNumber:i.colorInfo.range.endLineNumber,endColumn:i.colorInfo.range.endColumn},options:ki.EMPTY}));this._editor.changeDecorations(i=>{this._decorationsIds=i.deltaDecorations(this._decorationsIds,t),this._colorDatas=new Map,this._decorationsIds.forEach((n,o)=>this._colorDatas.set(n,e[o]))})}updateColorDecorators(e){this._colorDecorationClassRefs.clear();const t=[],i=this._editor.getOption(21);for(let o=0;o<e.length&&t.length<i;o++){const{red:r,green:l,blue:a,alpha:d}=e[o].colorInfo.color,c=new Qn(Math.round(r*255),Math.round(l*255),Math.round(a*255),d),h=`rgba(${c.r}, ${c.g}, ${c.b}, ${c.a})`,u=this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({backgroundColor:h}));t.push({range:{startLineNumber:e[o].colorInfo.range.startLineNumber,startColumn:e[o].colorInfo.range.startColumn,endLineNumber:e[o].colorInfo.range.endLineNumber,endColumn:e[o].colorInfo.range.endColumn},options:{description:"colorDetector",before:{content:DZe,inlineClassName:`${u.className} colorpicker-color-decoration`,inlineClassNameAffectsLetterSpacing:!0,attachedData:x1e}}})}const n=i<e.length?i:!1;this._decoratorLimitReporter.update(e.length,n),this._colorDecoratorIds.set(t)}removeAllDecorations(){this._editor.removeDecorations(this._decorationsIds),this._decorationsIds=[],this._colorDecoratorIds.clear(),this._colorDecorationClassRefs.clear()}getColorData(e){const t=this._editor.getModel();if(!t)return null;const i=t.getDecorationsInRange(z.fromPositions(e,e)).filter(n=>this._colorDatas.has(n.id));return i.length===0?null:this._colorDatas.get(i[0].id)}isColorDecoration(e){return this._colorDecoratorIds.has(e)}},tee=$S,$S.ID="editor.contrib.colorDetector",$S.RECOMPUTE_TIME=1e3,$S);Py=tee=qgt([cH(1,Hi),cH(2,xt),cH(3,dh)],Py);class $gt{constructor(){this._onDidChange=new fe,this._computed=0,this._limited=!1}update(e,t){(e!==this._computed||t!==this._limited)&&(this._computed=e,this._limited=t,this._onDidChange.fire())}}Wn(Py.ID,Py,1);class e0t{get color(){return this._color}set color(e){this._color.equals(e)||(this._color=e,this._onDidChangeColor.fire(e))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(e){this._colorPresentations=e,this.presentationIndex>e.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}constructor(e,t,i){this.presentationIndex=i,this._onColorFlushed=new fe,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new fe,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new fe,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=e,this._color=e,this._colorPresentations=t}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(e,t){let i=-1;for(let n=0;n<this.colorPresentations.length;n++)if(t.toLowerCase()===this.colorPresentations[n].label){i=n;break}if(i===-1){const n=t.split("(")[0].toLowerCase();for(let o=0;o<this.colorPresentations.length;o++)if(this.colorPresentations[o].label.toLowerCase().startsWith(n)){i=o;break}}i!==-1&&i!==this.presentationIndex&&(this.presentationIndex=i,this._onDidChangePresentation.fire(this.presentation))}flushColor(){this._onColorFlushed.fire(this._color)}}const zc=gt;class t0t extends be{constructor(e,t,i,n=!1){super(),this.model=t,this.showingStandaloneColorPicker=n,this._closeButton=null,this._domNode=zc(".colorpicker-header"),nt(e,this._domNode),this._pickedColorNode=nt(this._domNode,zc(".picked-color")),nt(this._pickedColorNode,zc("span.codicon.codicon-color-mode")),this._pickedColorPresentation=nt(this._pickedColorNode,document.createElement("span")),this._pickedColorPresentation.classList.add("picked-color-presentation");const o=F("clickToToggleColorOptions","Click to toggle color options (rgb/hsl/hex)");this._pickedColorNode.setAttribute("title",o),this._originalColorNode=nt(this._domNode,zc(".original-color")),this._originalColorNode.style.backgroundColor=Je.Format.CSS.format(this.model.originalColor)||"",this.backgroundColor=i.getColorTheme().getColor(yX)||Je.white,this._register(i.onDidColorThemeChange(r=>{this.backgroundColor=r.getColor(yX)||Je.white})),this._register(Te(this._pickedColorNode,ut.CLICK,()=>this.model.selectNextColorPresentation())),this._register(Te(this._originalColorNode,ut.CLICK,()=>{this.model.color=this.model.originalColor,this.model.flushColor()})),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this._register(t.onDidChangePresentation(this.onDidChangePresentation,this)),this._pickedColorNode.style.backgroundColor=Je.Format.CSS.format(t.color)||"",this._pickedColorNode.classList.toggle("light",t.color.rgba.a<.5?this.backgroundColor.isLighter():t.color.isLighter()),this.onDidChangeColor(this.model.color),this.showingStandaloneColorPicker&&(this._domNode.classList.add("standalone-colorpicker"),this._closeButton=this._register(new i0t(this._domNode)))}get closeButton(){return this._closeButton}get pickedColorNode(){return this._pickedColorNode}get originalColorNode(){return this._originalColorNode}onDidChangeColor(e){this._pickedColorNode.style.backgroundColor=Je.Format.CSS.format(e)||"",this._pickedColorNode.classList.toggle("light",e.rgba.a<.5?this.backgroundColor.isLighter():e.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this._pickedColorPresentation.textContent=this.model.presentation?this.model.presentation.label:""}}class i0t extends be{constructor(e){super(),this._onClicked=this._register(new fe),this.onClicked=this._onClicked.event,this._button=document.createElement("div"),this._button.classList.add("close-button"),nt(e,this._button);const t=document.createElement("div");t.classList.add("close-button-inner-div"),nt(this._button,t),nt(t,zc(".button"+ui.asCSSSelector(Os("color-picker-close",ct.close,F("closeIcon","Icon to close the color picker"))))).classList.add("close-icon"),this._register(Te(this._button,ut.CLICK,()=>{this._onClicked.fire()}))}}class n0t extends be{constructor(e,t,i,n=!1){super(),this.model=t,this.pixelRatio=i,this._insertButton=null,this._domNode=zc(".colorpicker-body"),nt(e,this._domNode),this._saturationBox=new s0t(this._domNode,this.model,this.pixelRatio),this._register(this._saturationBox),this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange,this)),this._register(this._saturationBox.onColorFlushed(this.flushColor,this)),this._opacityStrip=new o0t(this._domNode,this.model,n),this._register(this._opacityStrip),this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this._opacityStrip.onColorFlushed(this.flushColor,this)),this._hueStrip=new r0t(this._domNode,this.model,n),this._register(this._hueStrip),this._register(this._hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this._hueStrip.onColorFlushed(this.flushColor,this)),n&&(this._insertButton=this._register(new l0t(this._domNode)),this._domNode.classList.add("standalone-colorpicker"))}flushColor(){this.model.flushColor()}onDidSaturationValueChange({s:e,v:t}){const i=this.model.color.hsva;this.model.color=new Je(new wg(i.h,e,t,i.a))}onDidOpacityChange(e){const t=this.model.color.hsva;this.model.color=new Je(new wg(t.h,t.s,t.v,e))}onDidHueChange(e){const t=this.model.color.hsva,i=(1-e)*360;this.model.color=new Je(new wg(i===360?0:i,t.s,t.v,t.a))}get domNode(){return this._domNode}get saturationBox(){return this._saturationBox}get enterButton(){return this._insertButton}layout(){this._saturationBox.layout(),this._opacityStrip.layout(),this._hueStrip.layout()}}class s0t extends be{constructor(e,t,i){super(),this.model=t,this.pixelRatio=i,this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new fe,this.onColorFlushed=this._onColorFlushed.event,this._domNode=zc(".saturation-wrap"),nt(e,this._domNode),this._canvas=document.createElement("canvas"),this._canvas.className="saturation-box",nt(this._domNode,this._canvas),this.selection=zc(".saturation-selection"),nt(this._domNode,this.selection),this.layout(),this._register(Te(this._domNode,ut.POINTER_DOWN,n=>this.onPointerDown(n))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}get domNode(){return this._domNode}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;this.monitor=this._register(new UM);const t=Lo(this._domNode);e.target!==this.selection&&this.onDidChangePosition(e.offsetX,e.offsetY),this.monitor.startMonitoring(e.target,e.pointerId,e.buttons,n=>this.onDidChangePosition(n.pageX-t.left,n.pageY-t.top),()=>null);const i=Te(e.target.ownerDocument,ut.POINTER_UP,()=>{this._onColorFlushed.fire(),i.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)},!0)}onDidChangePosition(e,t){const i=Math.max(0,Math.min(1,e/this.width)),n=Math.max(0,Math.min(1,1-t/this.height));this.paintSelection(i,n),this._onDidChange.fire({s:i,v:n})}layout(){this.width=this._domNode.offsetWidth,this.height=this._domNode.offsetHeight,this._canvas.width=this.width*this.pixelRatio,this._canvas.height=this.height*this.pixelRatio,this.paint();const e=this.model.color.hsva;this.paintSelection(e.s,e.v)}paint(){const e=this.model.color.hsva,t=new Je(new wg(e.h,1,1,1)),i=this._canvas.getContext("2d"),n=i.createLinearGradient(0,0,this._canvas.width,0);n.addColorStop(0,"rgba(255, 255, 255, 1)"),n.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),n.addColorStop(1,"rgba(255, 255, 255, 0)");const o=i.createLinearGradient(0,0,0,this._canvas.height);o.addColorStop(0,"rgba(0, 0, 0, 0)"),o.addColorStop(1,"rgba(0, 0, 0, 1)"),i.rect(0,0,this._canvas.width,this._canvas.height),i.fillStyle=Je.Format.CSS.format(t),i.fill(),i.fillStyle=n,i.fill(),i.fillStyle=o,i.fill()}paintSelection(e,t){this.selection.style.left=`${e*this.width}px`,this.selection.style.top=`${this.height-t*this.height}px`}onDidChangeColor(e){if(this.monitor&&this.monitor.isMonitoring())return;this.paint();const t=e.hsva;this.paintSelection(t.s,t.v)}}class I1e extends be{constructor(e,t,i=!1){super(),this.model=t,this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new fe,this.onColorFlushed=this._onColorFlushed.event,i?(this.domNode=nt(e,zc(".standalone-strip")),this.overlay=nt(this.domNode,zc(".standalone-overlay"))):(this.domNode=nt(e,zc(".strip")),this.overlay=nt(this.domNode,zc(".overlay"))),this.slider=nt(this.domNode,zc(".slider")),this.slider.style.top="0px",this._register(Te(this.domNode,ut.POINTER_DOWN,n=>this.onPointerDown(n))),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const e=this.getValue(this.model.color);this.updateSliderPosition(e)}onDidChangeColor(e){const t=this.getValue(e);this.updateSliderPosition(t)}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._register(new UM),i=Lo(this.domNode);this.domNode.classList.add("grabbing"),e.target!==this.slider&&this.onDidChangeTop(e.offsetY),t.startMonitoring(e.target,e.pointerId,e.buttons,o=>this.onDidChangeTop(o.pageY-i.top),()=>null);const n=Te(e.target.ownerDocument,ut.POINTER_UP,()=>{this._onColorFlushed.fire(),n.dispose(),t.stopMonitoring(!0),this.domNode.classList.remove("grabbing")},!0)}onDidChangeTop(e){const t=Math.max(0,Math.min(1,1-e/this.height));this.updateSliderPosition(t),this._onDidChange.fire(t)}updateSliderPosition(e){this.slider.style.top=`${(1-e)*this.height}px`}}class o0t extends I1e{constructor(e,t,i=!1){super(e,t,i),this.domNode.classList.add("opacity-strip"),this.onDidChangeColor(this.model.color)}onDidChangeColor(e){super.onDidChangeColor(e);const{r:t,g:i,b:n}=e.rgba,o=new Je(new Qn(t,i,n,1)),r=new Je(new Qn(t,i,n,0));this.overlay.style.background=`linear-gradient(to bottom, ${o} 0%, ${r} 100%)`}getValue(e){return e.hsva.a}}class r0t extends I1e{constructor(e,t,i=!1){super(e,t,i),this.domNode.classList.add("hue-strip")}getValue(e){return 1-e.hsva.h/360}}class l0t extends be{constructor(e){super(),this._onClicked=this._register(new fe),this.onClicked=this._onClicked.event,this._button=nt(e,document.createElement("button")),this._button.classList.add("insert-button"),this._button.textContent="Insert",this._register(Te(this._button,ut.CLICK,()=>{this._onClicked.fire()}))}get button(){return this._button}}class a0t extends ch{constructor(e,t,i,n,o=!1){super(),this.model=t,this.pixelRatio=i,this._register(PB.getInstance(ai(e)).onDidChange(()=>this.layout())),this._domNode=zc(".colorpicker-widget"),e.appendChild(this._domNode),this.header=this._register(new t0t(this._domNode,this.model,n,o)),this.body=this._register(new n0t(this._domNode,this.model,this.pixelRatio,o))}layout(){this.body.layout()}get domNode(){return this._domNode}}class hH{constructor(e,t,i,n){this.priority=e,this.range=t,this.initialMousePosX=i,this.initialMousePosY=n,this.type=1}equals(e){return e.type===1&&this.range.equalsRange(e.range)}canAdoptVisibleHover(e,t){return e.type===1&&t.lineNumber===this.range.startLineNumber}}class ID{constructor(e,t,i,n,o,r){this.priority=e,this.owner=t,this.range=i,this.initialMousePosX=n,this.initialMousePosY=o,this.supportsMarkerHover=r,this.type=2}equals(e){return e.type===2&&this.owner===e.owner}canAdoptVisibleHover(e,t){return e.type===2&&this.owner===e.owner}}class IN{constructor(e){this.renderedHoverParts=e}dispose(){for(const e of this.renderedHoverParts)e.dispose()}}const aR=new class{constructor(){this._participants=[]}register(e){this._participants.push(e)}getAll(){return this._participants}};var E1e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},D1e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class d0t{constructor(e,t,i,n){this.owner=e,this.range=t,this.model=i,this.provider=n,this.forceShowAtRange=!0}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let HL=class{constructor(e,t){this._editor=e,this._themeService=t,this.hoverOrdinal=2}computeSync(e,t){return[]}computeAsync(e,t,i){return jc.fromPromise(this._computeAsync(e,t,i))}async _computeAsync(e,t,i){if(!this._editor.hasModel())return[];const n=Py.get(this._editor);if(!n)return[];for(const o of t){if(!n.isColorDecoration(o))continue;const r=n.getColorData(o.range.getStartPosition());if(r)return[await G1e(this,this._editor.getModel(),r.colorInfo,r.provider)]}return[]}renderHoverParts(e,t){const i=J1e(this,this._editor,this._themeService,t,e);if(!i)return new IN([]);this._colorPicker=i.colorPicker;const n={hoverPart:i.hoverPart,hoverElement:this._colorPicker.domNode,dispose(){i.disposables.dispose()}};return new IN([n])}handleResize(){var e;(e=this._colorPicker)==null||e.layout()}isColorPickerVisible(){return!!this._colorPicker}};HL=E1e([D1e(1,Rr)],HL);class c0t{constructor(e,t,i,n){this.owner=e,this.range=t,this.model=i,this.provider=n}}let KL=class{constructor(e,t){this._editor=e,this._themeService=t,this._color=null}async createColorHover(e,t,i){if(!this._editor.hasModel()||!Py.get(this._editor))return null;const o=await L1e(i,this._editor.getModel(),Gi.None);let r=null,l=null;for(const h of o){const u=h.colorInfo;z.containsRange(u.range,e.range)&&(r=u,l=h.provider)}const a=r??e,d=l??t,c=!!r;return{colorHover:await G1e(this,this._editor.getModel(),a,d),foundInEditor:c}}async updateEditorModel(e){if(!this._editor.hasModel())return;const t=e.model;let i=new z(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn);this._color&&(await ED(this._editor.getModel(),t,this._color,i,e),i=X1e(this._editor,i,t))}renderHoverParts(e,t){return J1e(this,this._editor,this._themeService,t,e)}set color(e){this._color=e}get color(){return this._color}};KL=E1e([D1e(1,Rr)],KL);async function G1e(s,e,t,i){const n=e.getValueInRange(t.range),{red:o,green:r,blue:l,alpha:a}=t.color,d=new Qn(Math.round(o*255),Math.round(r*255),Math.round(l*255),a),c=new Je(d),h=await v1e(e,t,i,Gi.None),u=new e0t(c,[],0);return u.colorPresentations=h||[],u.guessColorPresentation(c,n),s instanceof HL?new d0t(s,z.lift(t.range),u,i):new c0t(s,z.lift(t.range),u,i)}function J1e(s,e,t,i,n){if(i.length===0||!e.hasModel())return;if(n.setMinimumDimensions){const u=e.getOption(67)+8;n.setMinimumDimensions(new ns(302,u))}const o=new De,r=i[0],l=e.getModel(),a=r.model,d=o.add(new a0t(n.fragment,a,e.getOption(144),t,s instanceof KL));let c=!1,h=new z(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn);if(s instanceof KL){const u=r.model.color;s.color=u,ED(l,a,u,h,r),o.add(a.onColorFlushed(m=>{s.color=m}))}else o.add(a.onColorFlushed(async u=>{await ED(l,a,u,h,r),c=!0,h=X1e(e,h,a)}));return o.add(a.onDidChangeColor(u=>{ED(l,a,u,h,r)})),o.add(e.onDidChangeModelContent(u=>{c?c=!1:(n.hide(),e.focus())})),{hoverPart:r,colorPicker:d,disposables:o}}function X1e(s,e,t){const i=[],n=t.presentation.textEdit??{range:e,text:t.presentation.label,forceMoveMarkers:!1};i.push(n),t.presentation.additionalTextEdits&&i.push(...t.presentation.additionalTextEdits);const o=z.lift(n.range),r=s.getModel()._setTrackedRange(null,o,3);return s.executeEdits("colorpicker",i),s.pushUndoStop(),s.getModel()._getTrackedRange(r)??o}async function ED(s,e,t,i,n){const o=await v1e(s,{range:i,color:{red:t.rgba.r/255,green:t.rgba.g/255,blue:t.rgba.b/255,alpha:t.rgba.a}},n.provider,Gi.None);e.colorPresentations=o||[]}const Y1e="editor.action.showHover",h0t="editor.action.showDefinitionPreviewHover",u0t="editor.action.scrollUpHover",m0t="editor.action.scrollDownHover",p0t="editor.action.scrollLeftHover",g0t="editor.action.scrollRightHover",f0t="editor.action.pageUpHover",b0t="editor.action.pageDownHover",U0t="editor.action.goToTopHover",F0t="editor.action.goToBottomHover",J9="editor.action.increaseHoverVerbosityLevel",A0t=F({key:"increaseHoverVerbosityLevel",comment:["Label for action that will increase the hover verbosity level."]},"Increase Hover Verbosity Level"),X9="editor.action.decreaseHoverVerbosityLevel",Z0t=F({key:"decreaseHoverVerbosityLevel",comment:["Label for action that will decrease the hover verbosity level."]},"Decrease Hover Verbosity Level");const _1e="editor.action.inlineSuggest.commit",z1e="editor.action.inlineSuggest.showPrevious",O1e="editor.action.inlineSuggest.showNext";var ple=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Gu=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},DD;let iee=class extends be{constructor(e,t,i){super(),this.editor=e,this.model=t,this.instantiationService=i,this.alwaysShowToolbar=is(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).showToolbar==="always"),this.sessionPosition=void 0,this.position=Pt(this,n=>{var a,d;const o=(a=this.model.read(n))==null?void 0:a.primaryGhostText.read(n);if(!this.alwaysShowToolbar.read(n)||!o||o.parts.length===0)return this.sessionPosition=void 0,null;const r=o.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==o.lineNumber&&(this.sessionPosition=void 0);const l=new ge(o.lineNumber,Math.min(r,((d=this.sessionPosition)==null?void 0:d.column)??Number.MAX_SAFE_INTEGER));return this.sessionPosition=l,l}),this._register(Wd((n,o)=>{const r=this.model.read(n);if(!r||!this.alwaysShowToolbar.read(n))return;const l=nA((d,c)=>{const h=c.add(this.instantiationService.createInstance(Hy,this.editor,!0,this.position,r.selectedInlineCompletionIndex,r.inlineCompletionsCount,r.activeCommands));return e.addContentWidget(h),c.add(ei(()=>e.removeContentWidget(h))),c.add(yi(u=>{this.position.read(u)&&r.lastTriggerKind.read(u)!==tp.Explicit&&r.triggerExplicitly()})),h}),a=ak(this,(d,c)=>!!this.position.read(d)||!!c);o.add(yi(d=>{a.read(d)&&l.read(d)}))}))}};iee=ple([Gu(2,ti)],iee);const S0t=Os("inline-suggestion-hints-next",ct.chevronRight,F("parameterHintsNextIcon","Icon for show next parameter hint.")),N0t=Os("inline-suggestion-hints-previous",ct.chevronLeft,F("parameterHintsPreviousIcon","Icon for show previous parameter hint."));var eN;let Hy=(eN=class extends be{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(e,t,i){const n=new ac(e,t,i,!0,()=>this._commandService.executeCommand(e)),o=this.keybindingService.lookupKeybinding(e,this._contextKeyService);let r=t;return o&&(r=F({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",t,o.getLabel())),n.tooltip=r,n}constructor(e,t,i,n,o,r,l,a,d,c,h){super(),this.editor=e,this.withBorder=t,this._position=i,this._currentSuggestionIdx=n,this._suggestionCount=o,this._extraCommands=r,this._commandService=l,this.keybindingService=d,this._contextKeyService=c,this._menuService=h,this.id=`InlineSuggestionHintsContentWidget${DD.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=an("div.inlineSuggestionsHints",{className:this.withBorder?".withBorder":""},[an("div@toolBar")]),this.previousAction=this.createCommandAction(z1e,F("previous","Previous"),ui.asClassName(N0t)),this.availableSuggestionCountAction=new ac("inlineSuggestionHints.availableSuggestionCount","",void 0,!1),this.nextAction=this.createCommandAction(O1e,F("next","Next"),ui.asClassName(S0t)),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(Gt.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new cs(()=>{this.availableSuggestionCountAction.label=""},100)),this.disableButtonsDebounced=this._register(new cs(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this.toolBar=this._register(a.createInstance(nee,this.nodes.toolBar,Gt.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:u=>u.startsWith("primary")},actionViewItemProvider:(u,m)=>{if(u instanceof dc)return a.createInstance(V0t,u,void 0);if(u===this.availableSuggestionCountAction){const p=new R0t(void 0,u,{label:!0,icon:!1});return p.setClass("availableSuggestionCount"),p}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(u=>{DD._dropDownVisible=u})),this._register(yi(u=>{this._position.read(u),this.editor.layoutContentWidget(this)})),this._register(yi(u=>{const m=this._suggestionCount.read(u),p=this._currentSuggestionIdx.read(u);m!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${p+1}/${m}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),m!==void 0&&m>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register(yi(u=>{const p=this._extraCommands.read(u).map(g=>({class:void 0,id:g.id,enabled:!0,tooltip:g.tooltip||"",label:g.title,run:f=>this._commandService.executeCommand(g.id)}));for(const[g,f]of this.inlineCompletionsActionsMenus.getActions())for(const b of f)b instanceof dc&&p.push(b);p.length>0&&p.unshift(new Br),this.toolBar.setAdditionalSecondaryActions(p)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}},DD=eN,eN._dropDownVisible=!1,eN.id=0,eN);Hy=DD=ple([Gu(6,ks),Gu(7,ti),Gu(8,qn),Gu(9,fi),Gu(10,ah)],Hy);class R0t extends Iy{constructor(){super(...arguments),this._className=void 0}setClass(e){this._className=e}render(e){super.render(e),this._className&&e.classList.add(this._className)}updateTooltip(){}}let V0t=class extends DF{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const t=an("div.keybinding").root;this._register(new WM(t,rc,{disableTitle:!0,...yVe})).set(e),this.label.textContent=this._action.label,this.label.appendChild(t),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}updateTooltip(){}},nee=class extends DL{constructor(e,t,i,n,o,r,l,a,d){super(e,{resetMenu:t,...i},n,o,r,l,a,d),this.menuId=t,this.options2=i,this.menuService=n,this.contextKeyService=o,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var i,n,o,r,l,a,d;const e=[],t=[];g9(this.menu,(i=this.options2)==null?void 0:i.menuOptions,{primary:e,secondary:t},(o=(n=this.options2)==null?void 0:n.toolbarOptions)==null?void 0:o.primaryGroup,(l=(r=this.options2)==null?void 0:r.toolbarOptions)==null?void 0:l.shouldInlineSubmenu,(d=(a=this.options2)==null?void 0:a.toolbarOptions)==null?void 0:d.useSeparatorsInPrimaryActions),t.push(...this.additionalActions),e.unshift(...this.prependedPrimaryActions),this.setActions(e,t)}setPrependedPrimaryActions(e){lo(this.prependedPrimaryActions,e,(t,i)=>t===i)||(this.prependedPrimaryActions=e,this.updateToolbar())}setAdditionalSecondaryActions(e){lo(this.additionalActions,e,(t,i)=>t===i)||(this.additionalActions=e,this.updateToolbar())}};nee=ple([Gu(3,ah),Gu(4,fi),Gu(5,Uc),Gu(6,qn),Gu(7,ks),Gu(8,$l)],nee);function Y9(s,e,t){const i=Lo(s);return!(e<i.left||e>i.left+i.width||t<i.top||t>i.top+i.height)}let W0t=class{constructor(e,t,i){this.value=e,this.isComplete=t,this.hasLoadingMessage=i}};class j1e extends be{constructor(e,t){super(),this._editor=e,this._computer=t,this._onResult=this._register(new fe),this.onResult=this._onResult.event,this._firstWaitScheduler=this._register(new cs(()=>this._triggerAsyncComputation(),0)),this._secondWaitScheduler=this._register(new cs(()=>this._triggerSyncComputation(),0)),this._loadingMessageScheduler=this._register(new cs(()=>this._triggerLoadingMessage(),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),super.dispose()}get _hoverTime(){return this._editor.getOption(60).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(e,t=!0){this._state=e,t&&this._fireResult()}_triggerAsyncComputation(){this._setState(2),this._secondWaitScheduler.schedule(this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=oHe(e=>this._computer.computeAsync(e)),(async()=>{try{for await(const e of this._asyncIterable)e&&(this._result.push(e),this._fireResult());this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0)}catch(e){wi(e)}})()):this._asyncIterableDone=!0}_triggerSyncComputation(){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync())),this._setState(this._asyncIterableDone?0:3)}_triggerLoadingMessage(){this._state===3&&this._setState(4)}_fireResult(){if(this._state===1||this._state===2)return;const e=this._state===0,t=this._state===4;this._onResult.fire(new W0t(this._result.slice(0),e,t))}start(e){if(e===0)this._state===0&&(this._setState(1),this._firstWaitScheduler.schedule(this._firstWaitTime),this._loadingMessageScheduler.schedule(this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break}}cancel(){this._firstWaitScheduler.cancel(),this._secondWaitScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._setState(0,!1)}}class gle{constructor(){this._onDidWillResize=new fe,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new fe,this.onDidResize=this._onDidResize.event,this._sashListener=new De,this._size=new ns(0,0),this._minSize=new ns(0,0),this._maxSize=new ns(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new Jl(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new Jl(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new Jl(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:i5.North}),this._southSash=new Jl(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:i5.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let e,t=0,i=0;this._sashListener.add(Ut.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{e===void 0&&(this._onDidWillResize.fire(),e=this._size,t=0,i=0)})),this._sashListener.add(Ut.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{e!==void 0&&(e=void 0,t=0,i=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(n=>{e&&(i=n.currentX-n.startX,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(n=>{e&&(i=-(n.currentX-n.startX),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(n=>{e&&(t=-(n.currentY-n.startY),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(n=>{e&&(t=n.currentY-n.startY,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(Ut.any(this._eastSash.onDidReset,this._westSash.onDidReset)(n=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(Ut.any(this._northSash.onDidReset,this._southSash.onDidReset)(n=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(e,t,i,n){this._northSash.state=e?3:0,this._eastSash.state=t?3:0,this._southSash.state=i?3:0,this._westSash.state=n?3:0}layout(e=this.size.height,t=this.size.width){const{height:i,width:n}=this._minSize,{height:o,width:r}=this._maxSize;e=Math.max(i,Math.min(o,e)),t=Math.max(n,Math.min(r,t));const l=new ns(t,e);ns.equals(l,this._size)||(this.domNode.style.height=e+"px",this.domNode.style.width=t+"px",this._size=l,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(e){this._maxSize=e}get maxSize(){return this._maxSize}set minSize(e){this._minSize=e}get minSize(){return this._minSize}set preferredSize(e){this._preferredSize=e}get preferredSize(){return this._preferredSize}}const y0t=30,Q0t=24;class M0t extends be{constructor(e,t=new ns(10,10)){super(),this._editor=e,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new gle),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=ns.lift(t),this._resizableNode.layout(t.height,t.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(i=>{this._resize(new ns(i.dimension.width,i.dimension.height)),i.done&&(this._isResizing=!1)})),this._register(this._resizableNode.onDidWillResize(()=>{this._isResizing=!0}))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var e;return(e=this._contentPosition)!=null&&e.position?ge.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);return!t||!i?void 0:Lo(t).top+i.top-y0t}_availableVerticalSpaceBelow(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);if(!t||!i)return;const n=Lo(t),o=Hf(t.ownerDocument.body),r=n.top+i.top+i.height;return o.height-r-Q0t}_findPositionPreference(e,t){const i=Math.min(this._availableVerticalSpaceBelow(t)??1/0,e),n=Math.min(this._availableVerticalSpaceAbove(t)??1/0,e),o=Math.min(Math.max(n,i),e),r=Math.min(e,o);let l;return this._editor.getOption(60).above?l=r<=n?1:2:l=r<=i?2:1,l===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),l}_resize(e){this._resizableNode.layout(e.height,e.width)}}var w0t=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},MI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Yp;const _ge=30,T0t=6;var tN;let see=(tN=class extends M0t{get isVisibleFromKeyboard(){var e;return((e=this._renderedHover)==null?void 0:e.source)===1}get isVisible(){return this._hoverVisibleKey.get()??!1}get isFocused(){return this._hoverFocusedKey.get()??!1}constructor(e,t,i,n,o){const r=e.getOption(67)+8,l=150,a=new ns(l,r);super(e,a),this._configurationService=i,this._accessibilityService=n,this._keybindingService=o,this._hover=this._register(new goe),this._onDidResize=this._register(new fe),this.onDidResize=this._onDidResize.event,this._minimumSize=a,this._hoverVisibleKey=$.hoverVisible.bindTo(t),this._hoverFocusedKey=$.hoverFocused.bindTo(t),nt(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex="50",this._register(this._editor.onDidLayoutChange(()=>{this.isVisible&&this._updateMaxDimensions()})),this._register(this._editor.onDidChangeConfiguration(c=>{c.hasChanged(50)&&this._updateFont()}));const d=this._register(ap(this._resizableNode.domNode));this._register(d.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(d.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._setRenderedHover(void 0),this._editor.addContentWidget(this)}dispose(){var e;super.dispose(),(e=this._renderedHover)==null||e.dispose(),this._editor.removeContentWidget(this)}getId(){return Yp.ID}static _applyDimensions(e,t,i){const n=typeof t=="number"?`${t}px`:t,o=typeof i=="number"?`${i}px`:i;e.style.width=n,e.style.height=o}_setContentsDomNodeDimensions(e,t){const i=this._hover.contentsDomNode;return Yp._applyDimensions(i,e,t)}_setContainerDomNodeDimensions(e,t){const i=this._hover.containerDomNode;return Yp._applyDimensions(i,e,t)}_setHoverWidgetDimensions(e,t){this._setContentsDomNodeDimensions(e,t),this._setContainerDomNodeDimensions(e,t),this._layoutContentWidget()}static _applyMaxDimensions(e,t,i){const n=typeof t=="number"?`${t}px`:t,o=typeof i=="number"?`${i}px`:i;e.style.maxWidth=n,e.style.maxHeight=o}_setHoverWidgetMaxDimensions(e,t){Yp._applyMaxDimensions(this._hover.contentsDomNode,e,t),Yp._applyMaxDimensions(this._hover.containerDomNode,e,t),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth",typeof e=="number"?`${e}px`:e),this._layoutContentWidget()}_setAdjustedHoverWidgetDimensions(e){this._setHoverWidgetMaxDimensions("none","none");const t=e.width,i=e.height;this._setHoverWidgetDimensions(t,i)}_updateResizableNodeMaxDimensions(){const e=this._findMaximumRenderingWidth()??1/0,t=this._findMaximumRenderingHeight()??1/0;this._resizableNode.maxSize=new ns(e,t),this._setHoverWidgetMaxDimensions(e,t)}_resize(e){Yp._lastDimensions=new ns(e.width,e.height),this._setAdjustedHoverWidgetDimensions(e),this._resizableNode.layout(e.height,e.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),this._onDidResize.fire()}_findAvailableSpaceVertically(){var t;const e=(t=this._renderedHover)==null?void 0:t.showAtPosition;if(e)return this._positionPreference===1?this._availableVerticalSpaceAbove(e):this._availableVerticalSpaceBelow(e)}_findMaximumRenderingHeight(){const e=this._findAvailableSpaceVertically();if(!e)return;let t=T0t;return Array.from(this._hover.contentsDomNode.children).forEach(i=>{t+=i.clientHeight}),Math.min(e,t)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const e=Array.from(this._hover.contentsDomNode.children).some(t=>t.scrollWidth>t.clientWidth);return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),e}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const e=this._isHoverTextOverflowing(),t=typeof this._contentWidth>"u"?0:this._contentWidth-2;return e||this._hover.containerDomNode.clientWidth<t?Hf(this._hover.containerDomNode.ownerDocument.body).width-14:this._hover.containerDomNode.clientWidth+2}isMouseGettingCloser(e,t){if(!this._renderedHover)return!1;if(this._renderedHover.initialMousePosX===void 0||this._renderedHover.initialMousePosY===void 0)return this._renderedHover.initialMousePosX=e,this._renderedHover.initialMousePosY=t,!1;const i=Lo(this.getDomNode());this._renderedHover.closestMouseDistance===void 0&&(this._renderedHover.closestMouseDistance=zge(this._renderedHover.initialMousePosX,this._renderedHover.initialMousePosY,i.left,i.top,i.width,i.height));const n=zge(e,t,i.left,i.top,i.width,i.height);return n>this._renderedHover.closestMouseDistance+4?!1:(this._renderedHover.closestMouseDistance=Math.min(this._renderedHover.closestMouseDistance,n),!0)}_setRenderedHover(e){var t;(t=this._renderedHover)==null||t.dispose(),this._renderedHover=e,this._hoverVisibleKey.set(!!e),this._hover.containerDomNode.classList.toggle("hidden",!e)}_updateFont(){const{fontSize:e,lineHeight:t}=this._editor.getOption(50),i=this._hover.contentsDomNode;i.style.fontSize=`${e}px`,i.style.lineHeight=`${t/e}`,Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(o=>this._editor.applyFontInfo(o))}_updateContent(e){const t=this._hover.contentsDomNode;t.style.paddingBottom="",t.textContent="",t.appendChild(e)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const e=Math.max(this._editor.getLayoutInfo().height/4,250,Yp._lastDimensions.height),t=Math.max(this._editor.getLayoutInfo().width*.66,500,Yp._lastDimensions.width);this._setHoverWidgetMaxDimensions(t,e)}_render(e){this._setRenderedHover(e),this._updateFont(),this._updateContent(e.domNode),this._updateMaxDimensions(),this.onContentsChanged(),this._editor.render()}getPosition(){return this._renderedHover?{position:this._renderedHover.showAtPosition,secondaryPosition:this._renderedHover.showAtSecondaryPosition,positionAffinity:this._renderedHover.shouldAppearBeforeContent?3:void 0,preference:[this._positionPreference??1]}:null}show(e){var r;if(!this._editor||!this._editor.hasModel())return;this._render(e);const t=Vf(this._hover.containerDomNode),i=e.showAtPosition;this._positionPreference=this._findPositionPreference(t,i)??1,this.onContentsChanged(),e.shouldFocus&&this._hover.containerDomNode.focus(),this._onDidResize.fire();const o=this._hover.containerDomNode.ownerDocument.activeElement===this._hover.containerDomNode&&wNe(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),((r=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))==null?void 0:r.getAriaLabel())??"");o&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+o)}hide(){if(!this._renderedHover)return;const e=this._renderedHover.shouldFocus||this._hoverFocusedKey.get();this._setRenderedHover(void 0),this._resizableNode.maxSize=new ns(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),e&&this._editor.focus()}_removeConstraintsRenderNormally(){const e=this._editor.getLayoutInfo();this._resizableNode.layout(e.height,e.width),this._setHoverWidgetDimensions("auto","auto")}setMinimumDimensions(e){this._minimumSize=new ns(Math.max(this._minimumSize.width,e.width),Math.max(this._minimumSize.height,e.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const e=typeof this._contentWidth>"u"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new ns(e,this._minimumSize.height)}onContentsChanged(){var n;this._removeConstraintsRenderNormally();const e=this._hover.containerDomNode;let t=Vf(e),i=qd(e);if(this._resizableNode.layout(t,i),this._setHoverWidgetDimensions(i,t),t=Vf(e),i=qd(e),this._contentWidth=i,this._updateMinimumWidth(),this._resizableNode.layout(t,i),(n=this._renderedHover)!=null&&n.showAtPosition){const o=Vf(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(o,this._renderedHover.showAtPosition)}this._layoutContentWidget()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e-t.lineHeight})}scrollDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e+t.lineHeight})}scrollLeft(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e-_ge})}scrollRight(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e+_ge})}pageUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e-t})}pageDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e+t})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}},Yp=tN,tN.ID="editor.contrib.resizableContentHoverWidget",tN._lastDimensions=new ns(0,0),tN);see=Yp=w0t([MI(1,fi),MI(2,Hi),MI(3,Fc),MI(4,qn)],see);function zge(s,e,t,i,n,o){const r=t+n/2,l=i+o/2,a=Math.max(Math.abs(s-r)-n/2,0),d=Math.max(Math.abs(e-l)-o/2,0);return Math.sqrt(a*a+d*d)}class K5{get anchor(){return this._anchor}set anchor(e){this._anchor=e}get shouldFocus(){return this._shouldFocus}set shouldFocus(e){this._shouldFocus=e}get source(){return this._source}set source(e){this._source=e}get insistOnKeepingHoverVisible(){return this._insistOnKeepingHoverVisible}set insistOnKeepingHoverVisible(e){this._insistOnKeepingHoverVisible=e}constructor(e,t){this._editor=e,this._participants=t,this._anchor=null,this._shouldFocus=!1,this._source=0,this._insistOnKeepingHoverVisible=!1}static _getLineDecorations(e,t){if(t.type!==1&&!t.supportsMarkerHover)return[];const i=e.getModel(),n=t.range.startLineNumber;if(n>i.getLineCount())return[];const o=i.getLineMaxColumn(n);return e.getLineDecorations(n).filter(r=>{if(r.options.isWholeLine)return!0;const l=r.range.startLineNumber===n?r.range.startColumn:1,a=r.range.endLineNumber===n?r.range.endColumn:o;if(r.options.showIfCollapsed){if(l>t.range.startColumn+1||t.range.endColumn-1>a)return!1}else if(l>t.range.startColumn||t.range.endColumn>a)return!1;return!0})}computeAsync(e){const t=this._anchor;if(!this._editor.hasModel()||!t)return jc.EMPTY;const i=K5._getLineDecorations(this._editor,t);return jc.merge(this._participants.map(n=>n.computeAsync?n.computeAsync(t,i,e):jc.EMPTY))}computeSync(){if(!this._editor.hasModel()||!this._anchor)return[];const e=K5._getLineDecorations(this._editor,this._anchor);let t=[];for(const i of this._participants)t=t.concat(i.computeSync(this._anchor,e));return Hu(t)}}class P1e{constructor(e,t,i){this.anchor=e,this.hoverParts=t,this.isComplete=i}filter(e){const t=this.hoverParts.filter(i=>i.isValidForHoverAnchor(e));return t.length===this.hoverParts.length?this:new C0t(this,this.anchor,t,this.isComplete)}}class C0t extends P1e{constructor(e,t,i,n){super(t,i,n),this.original=e}filter(e){return this.original.filter(e)}}var B0t=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},L0t=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Oge=gt;let q5=class extends be{get hasContent(){return this._hasContent}constructor(e){super(),this._keybindingService=e,this.actions=[],this._hasContent=!1,this.hoverElement=Oge("div.hover-row.status-bar"),this.hoverElement.tabIndex=0,this.actionsElement=nt(this.hoverElement,Oge("div.actions"))}addAction(e){const t=this._keybindingService.lookupKeybinding(e.commandId),i=t?t.getLabel():null;this._hasContent=!0;const n=this._register(n9.render(this.actionsElement,e,i));return this.actions.push(n),n}append(e){const t=nt(this.actionsElement,e);return this._hasContent=!0,t}};q5=B0t([L0t(0,qn)],q5);class v0t{constructor(e,t,i){this.provider=e,this.hover=t,this.ordinal=i}}async function k0t(s,e,t,i,n){const o=await Promise.resolve(s.provideHover(t,i,n)).catch(vo);if(!(!o||!x0t(o)))return new v0t(s,o,e)}function fle(s,e,t,i,n=!1){const r=s.ordered(e,n).map((l,a)=>k0t(l,a,e,t,i));return jc.fromPromises(r).coalesce()}function H1e(s,e,t,i,n=!1){return fle(s,e,t,i,n).map(o=>o.hover).toPromise()}Cd("_executeHoverProvider",(s,e,t)=>{const i=s.get(xt);return H1e(i.hoverProvider,e,t,Gi.None)});Cd("_executeHoverProvider_recursive",(s,e,t)=>{const i=s.get(xt);return H1e(i.hoverProvider,e,t,Gi.None,!0)});function x0t(s){const e=typeof s.range<"u",t=typeof s.contents<"u"&&s.contents&&s.contents.length>0;return e&&t}var I0t=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},TA=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const vW=gt,E0t=Os("hover-increase-verbosity",ct.add,F("increaseHoverVerbosity","Icon for increaseing hover verbosity.")),D0t=Os("hover-decrease-verbosity",ct.remove,F("decreaseHoverVerbosity","Icon for decreasing hover verbosity."));class Ju{constructor(e,t,i,n,o,r=void 0){this.owner=e,this.range=t,this.contents=i,this.isBeforeContent=n,this.ordinal=o,this.source=r}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}class K1e{constructor(e,t,i){this.hover=e,this.hoverProvider=t,this.hoverPosition=i}supportsVerbosityAction(e){switch(e){case ic.Increase:return this.hover.canIncreaseVerbosity??!1;case ic.Decrease:return this.hover.canDecreaseVerbosity??!1}}}let qL=class{constructor(e,t,i,n,o,r,l,a){this._editor=e,this._languageService=t,this._openerService=i,this._configurationService=n,this._languageFeaturesService=o,this._keybindingService=r,this._hoverService=l,this._commandService=a,this.hoverOrdinal=3}createLoadingMessage(e){return new Ju(this,e.range,[new _l().appendText(F("modesContentHover.loading","Loading..."))],!1,2e3)}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1)return[];const i=this._editor.getModel(),n=e.range.startLineNumber,o=i.getLineMaxColumn(n),r=[];let l=1e3;const a=i.getLineLength(n),d=i.getLanguageIdAtPosition(e.range.startLineNumber,e.range.startColumn),c=this._editor.getOption(118),h=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:d});let u=!1;c>=0&&a>c&&e.range.startColumn>=c&&(u=!0,r.push(new Ju(this,e.range,[{value:F("stopped rendering","Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.")}],!1,l++))),!u&&typeof h=="number"&&a>=h&&r.push(new Ju(this,e.range,[{value:F("too many characters","Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.")}],!1,l++));let m=!1;for(const p of t){const g=p.range.startLineNumber===n?p.range.startColumn:1,f=p.range.endLineNumber===n?p.range.endColumn:o,b=p.options.hoverMessage;if(!b||By(b))continue;p.options.beforeContentClassName&&(m=!0);const U=new z(e.range.startLineNumber,g,e.range.startLineNumber,f);r.push(new Ju(this,U,pse(b),m,l++))}return r}computeAsync(e,t,i){if(!this._editor.hasModel()||e.type!==1)return jc.EMPTY;const n=this._editor.getModel(),o=this._languageFeaturesService.hoverProvider;return o.has(n)?this._getMarkdownHovers(o,n,e,i):jc.EMPTY}_getMarkdownHovers(e,t,i,n){const o=i.range.getStartPosition();return fle(e,t,o,n).filter(a=>!By(a.hover.contents)).map(a=>{const d=a.hover.range?z.lift(a.hover.range):i.range,c=new K1e(a.hover,a.provider,o);return new Ju(this,d,a.hover.contents,!1,a.ordinal,c)})}renderHoverParts(e,t){return this._renderedHoverParts=new G0t(t,e.fragment,this,this._editor,this._languageService,this._openerService,this._commandService,this._keybindingService,this._hoverService,this._configurationService,e.onContentsChanged),this._renderedHoverParts}updateMarkdownHoverVerbosityLevel(e,t,i){var n;return Promise.resolve((n=this._renderedHoverParts)==null?void 0:n.updateMarkdownHoverPartVerbosityLevel(e,t,i))}};qL=I0t([TA(1,ao),TA(2,Bd),TA(3,Hi),TA(4,xt),TA(5,qn),TA(6,t0),TA(7,ks)],qL);class wI{constructor(e,t,i){this.hoverPart=e,this.hoverElement=t,this.disposables=i}dispose(){this.disposables.dispose()}}class G0t{constructor(e,t,i,n,o,r,l,a,d,c,h){this._hoverParticipant=i,this._editor=n,this._languageService=o,this._openerService=r,this._commandService=l,this._keybindingService=a,this._hoverService=d,this._configurationService=c,this._onFinishedRendering=h,this._ongoingHoverOperations=new Map,this._disposables=new De,this.renderedHoverParts=this._renderHoverParts(e,t,this._onFinishedRendering),this._disposables.add(ei(()=>{this.renderedHoverParts.forEach(u=>{u.dispose()}),this._ongoingHoverOperations.forEach(u=>{u.tokenSource.dispose(!0)})}))}_renderHoverParts(e,t,i){return e.sort(Ja(n=>n.ordinal,ju)),e.map(n=>{const o=this._renderHoverPart(n,i);return t.appendChild(o.hoverElement),o})}_renderHoverPart(e,t){const i=this._renderMarkdownHover(e,t),n=i.hoverElement,o=e.source,r=new De;if(r.add(i),!o)return new wI(e,n,r);const l=o.supportsVerbosityAction(ic.Increase),a=o.supportsVerbosityAction(ic.Decrease);if(!l&&!a)return new wI(e,n,r);const d=vW("div.verbosity-actions");return n.prepend(d),r.add(this._renderHoverExpansionAction(d,ic.Increase,l)),r.add(this._renderHoverExpansionAction(d,ic.Decrease,a)),new wI(e,n,r)}_renderMarkdownHover(e,t){return q1e(this._editor,e,this._languageService,this._openerService,t)}_renderHoverExpansionAction(e,t,i){const n=new De,o=t===ic.Increase,r=nt(e,vW(ui.asCSSSelector(o?E0t:D0t)));r.tabIndex=0;const l=new wy("mouse",!1,{target:e,position:{hoverPosition:0}},this._configurationService,this._hoverService);if(n.add(this._hoverService.setupManagedHover(l,r,X0t(this._keybindingService,t))),!i)return r.classList.add("disabled"),n;r.classList.add("enabled");const a=()=>this._commandService.executeCommand(t===ic.Increase?J9:X9);return n.add(new TNe(r,a)),n.add(new CNe(r,a,[3,10])),n}async updateMarkdownHoverPartVerbosityLevel(e,t,i=!0){const n=this._editor.getModel();if(!n)return;const o=this._getRenderedHoverPartAtIndex(t),r=o==null?void 0:o.hoverPart.source;if(!o||!(r!=null&&r.supportsVerbosityAction(e)))return;const l=await this._fetchHover(r,n,e);if(!l)return;const a=new K1e(l,r.hoverProvider,r.hoverPosition),d=o.hoverPart,c=new Ju(this._hoverParticipant,d.range,l.contents,d.isBeforeContent,d.ordinal,a),h=this._renderHoverPart(c,this._onFinishedRendering);return this._replaceRenderedHoverPartAtIndex(t,h,c),i&&this._focusOnHoverPartWithIndex(t),{hoverPart:c,hoverElement:h.hoverElement}}async _fetchHover(e,t,i){let n=i===ic.Increase?1:-1;const o=e.hoverProvider,r=this._ongoingHoverOperations.get(o);r&&(r.tokenSource.cancel(),n+=r.verbosityDelta);const l=new go;this._ongoingHoverOperations.set(o,{verbosityDelta:n,tokenSource:l});const a={verbosityRequest:{verbosityDelta:n,previousHover:e.hover}};let d;try{d=await Promise.resolve(o.provideHover(t,e.hoverPosition,l.token,a))}catch(c){vo(c)}return l.dispose(),this._ongoingHoverOperations.delete(o),d}_replaceRenderedHoverPartAtIndex(e,t,i){if(e>=this.renderedHoverParts.length||e<0)return;const n=this.renderedHoverParts[e],o=n.hoverElement,r=t.hoverElement,l=Array.from(r.children);o.replaceChildren(...l);const a=new wI(i,o,t.disposables);o.focus(),n.dispose(),this.renderedHoverParts[e]=a}_focusOnHoverPartWithIndex(e){this.renderedHoverParts[e].hoverElement.focus()}_getRenderedHoverPartAtIndex(e){return this.renderedHoverParts[e]}dispose(){this._disposables.dispose()}}function J0t(s,e,t,i,n){e.sort(Ja(r=>r.ordinal,ju));const o=[];for(const r of e)o.push(q1e(t,r,i,n,s.onContentsChanged));return new IN(o)}function q1e(s,e,t,i,n){const o=new De,r=vW("div.hover-row"),l=vW("div.hover-row-contents");r.appendChild(l);const a=e.contents;for(const c of a){if(By(c))continue;const h=vW("div.markdown-hover"),u=nt(h,vW("div.hover-contents")),m=o.add(new $f({editor:s},t,i));o.add(m.onDidRenderAsync(()=>{u.className="hover-contents code-hover-contents",n()}));const p=o.add(m.render(c));u.appendChild(p.element),l.appendChild(h)}return{hoverPart:e,hoverElement:r,dispose(){o.dispose()}}}function X0t(s,e){switch(e){case ic.Increase:{const t=s.lookupKeybinding(J9);return t?F("increaseVerbosityWithKb","Increase Hover Verbosity ({0})",t.getLabel()):F("increaseVerbosity","Increase Hover Verbosity")}case ic.Decrease:{const t=s.lookupKeybinding(X9);return t?F("decreaseVerbosityWithKb","Decrease Hover Verbosity ({0})",t.getLabel()):F("decreaseVerbosity","Decrease Hover Verbosity")}}}function oee(s,e){return!!s[e]}class uH{constructor(e,t){this.target=e.target,this.isLeftClick=e.event.leftButton,this.isMiddleClick=e.event.middleButton,this.isRightClick=e.event.rightButton,this.hasTriggerModifier=oee(e.event,t.triggerModifier),this.hasSideBySideModifier=oee(e.event,t.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=e.event.detail<=1}}class jge{constructor(e,t){this.keyCodeIsTriggerKey=e.keyCode===t.triggerKey,this.keyCodeIsSideBySideKey=e.keyCode===t.triggerSideBySideKey,this.hasTriggerModifier=oee(e,t.triggerModifier)}}class TI{constructor(e,t,i,n){this.triggerKey=e,this.triggerModifier=t,this.triggerSideBySideKey=i,this.triggerSideBySideModifier=n}equals(e){return this.triggerKey===e.triggerKey&&this.triggerModifier===e.triggerModifier&&this.triggerSideBySideKey===e.triggerSideBySideKey&&this.triggerSideBySideModifier===e.triggerSideBySideModifier}}function Pge(s){return s==="altKey"?hn?new TI(57,"metaKey",6,"altKey"):new TI(5,"ctrlKey",6,"altKey"):hn?new TI(6,"altKey",57,"metaKey"):new TI(6,"altKey",5,"ctrlKey")}class _9 extends be{constructor(e,t){super(),this._onMouseMoveOrRelevantKeyDown=this._register(new fe),this.onMouseMoveOrRelevantKeyDown=this._onMouseMoveOrRelevantKeyDown.event,this._onExecute=this._register(new fe),this.onExecute=this._onExecute.event,this._onCancel=this._register(new fe),this.onCancel=this._onCancel.event,this._editor=e,this._extractLineNumberFromMouseEvent=(t==null?void 0:t.extractLineNumberFromMouseEvent)??(i=>i.target.position?i.target.position.lineNumber:0),this._opts=Pge(this._editor.getOption(78)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration(i=>{if(i.hasChanged(78)){const n=Pge(this._editor.getOption(78));if(this._opts.equals(n))return;this._opts=n,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}})),this._register(this._editor.onMouseMove(i=>this._onEditorMouseMove(new uH(i,this._opts)))),this._register(this._editor.onMouseDown(i=>this._onEditorMouseDown(new uH(i,this._opts)))),this._register(this._editor.onMouseUp(i=>this._onEditorMouseUp(new uH(i,this._opts)))),this._register(this._editor.onKeyDown(i=>this._onEditorKeyDown(new jge(i,this._opts)))),this._register(this._editor.onKeyUp(i=>this._onEditorKeyUp(new jge(i,this._opts)))),this._register(this._editor.onMouseDrag(()=>this._resetHandler())),this._register(this._editor.onDidChangeCursorSelection(i=>this._onDidChangeCursorSelection(i))),this._register(this._editor.onDidChangeModel(i=>this._resetHandler())),this._register(this._editor.onDidChangeModelContent(()=>this._resetHandler())),this._register(this._editor.onDidScrollChange(i=>{(i.scrollTopChanged||i.scrollLeftChanged)&&this._resetHandler()}))}_onDidChangeCursorSelection(e){e.selection&&e.selection.startColumn!==e.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(e){this._lastMouseMoveEvent=e,this._onMouseMoveOrRelevantKeyDown.fire([e,null])}_onEditorMouseDown(e){this._hasTriggerKeyOnMouseDown=e.hasTriggerModifier,this._lineNumberOnMouseDown=this._extractLineNumberFromMouseEvent(e)}_onEditorMouseUp(e){const t=this._extractLineNumberFromMouseEvent(e);this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===t&&this._onExecute.fire(e)}_onEditorKeyDown(e){this._lastMouseMoveEvent&&(e.keyCodeIsTriggerKey||e.keyCodeIsSideBySideKey&&e.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,e]):e.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(e){e.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}class $1e{constructor(e,t){this.range=e,this.direction=t}}class ble{constructor(e,t,i){this.hint=e,this.anchor=t,this.provider=i,this._isResolved=!1}with(e){const t=new ble(this.hint,e.anchor,this.provider);return t._isResolved=this._isResolved,t._currentResolve=this._currentResolve,t}async resolve(e){if(typeof this.provider.resolveInlayHint=="function"){if(this._currentResolve)return await this._currentResolve,e.isCancellationRequested?void 0:this.resolve(e);this._isResolved||(this._currentResolve=this._doResolve(e).finally(()=>this._currentResolve=void 0)),await this._currentResolve}}async _doResolve(e){try{const t=await Promise.resolve(this.provider.resolveInlayHint(this.hint,e));this.hint.tooltip=(t==null?void 0:t.tooltip)??this.hint.tooltip,this.hint.label=(t==null?void 0:t.label)??this.hint.label,this.hint.textEdits=(t==null?void 0:t.textEdits)??this.hint.textEdits,this._isResolved=!0}catch(t){vo(t),this._isResolved=!1}}}const b1=class b1{static async create(e,t,i,n){const o=[],r=e.ordered(t).reverse().map(l=>i.map(async a=>{try{const d=await l.provideInlayHints(t,a,n);(d!=null&&d.hints.length||l.onDidChangeInlayHints)&&o.push([d??b1._emptyInlayHintList,l])}catch(d){vo(d)}}));if(await Promise.all(r.flat()),n.isCancellationRequested||t.isDisposed())throw new Ku;return new b1(i,o,t)}constructor(e,t,i){this._disposables=new De,this.ranges=e,this.provider=new Set;const n=[];for(const[o,r]of t){this._disposables.add(o),this.provider.add(r);for(const l of o.hints){const a=i.validatePosition(l.position);let d="before";const c=b1._getRangeAtPosition(i,a);let h;c.getStartPosition().isBefore(a)?(h=z.fromPositions(c.getStartPosition(),a),d="after"):(h=z.fromPositions(a,c.getEndPosition()),d="before"),n.push(new ble(l,new $1e(h,d),r))}}this.items=n.sort((o,r)=>ge.compare(o.hint.position,r.hint.position))}dispose(){this._disposables.dispose()}static _getRangeAtPosition(e,t){const i=t.lineNumber,n=e.getWordAtPosition(t);if(n)return new z(i,n.startColumn,i,n.endColumn);e.tokenization.tokenizeIfCheap(i);const o=e.tokenization.getLineTokens(i),r=t.column-1,l=o.findTokenIndexAtOffset(r);let a=o.getStartOffset(l),d=o.getEndOffset(l);return d-a===1&&(a===r&&l>1?(a=o.getStartOffset(l-1),d=o.getEndOffset(l-1)):d===r&&l<o.getCount()-1&&(a=o.getStartOffset(l+1),d=o.getEndOffset(l+1))),new z(i,a+1,i,d+1)}};b1._emptyInlayHintList=Object.freeze({dispose(){},hints:[]});let $5=b1;function Y0t(s){return ni.from({scheme:Ti.command,path:s.id,query:s.arguments&&encodeURIComponent(JSON.stringify(s.arguments))}).toString()}var _0t=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},b0=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let sm=class extends xL{constructor(e,t,i,n,o,r,l,a,d,c,h,u,m){super(e,{...n.getRawOptions(),overflowWidgetsDomNode:n.getOverflowWidgetsDomNode()},i,o,r,l,a,d,c,h,u,m),this._parentEditor=n,this._overwriteOptions=t,super.updateOptions(this._overwriteOptions),this._register(n.onDidChangeConfiguration(p=>this._onParentConfigurationChanged(p)))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(e){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(e){S3(this._overwriteOptions,e,!0),super.updateOptions(this._overwriteOptions)}};sm=_0t([b0(4,ti),b0(5,kn),b0(6,ks),b0(7,fi),b0(8,Rr),b0(9,jo),b0(10,Fc),b0(11,bo),b0(12,xt)],sm);const Hge=new Je(new Qn(0,122,204)),z0t={showArrow:!0,showFrame:!0,className:"",frameColor:Hge,arrowColor:Hge,keepEditorSelection:!1},O0t="vs.editor.contrib.zoneWidget";class j0t{constructor(e,t,i,n,o,r,l,a){this.id="",this.domNode=e,this.afterLineNumber=t,this.afterColumn=i,this.heightInLines=n,this.showInHiddenAreas=l,this.ordinal=a,this._onDomNodeTop=o,this._onComputedHeight=r}onDomNodeTop(e){this._onDomNodeTop(e)}onComputedHeight(e){this._onComputedHeight(e)}}class P0t{constructor(e,t){this._id=e,this._domNode=t}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}const bz=class bz{constructor(e){this._editor=e,this._ruleName=bz._IdGenerator.nextId(),this._decorations=this._editor.createDecorationsCollection(),this._color=null,this._height=-1}dispose(){this.hide(),p8(this._ruleName)}set color(e){this._color!==e&&(this._color=e,this._updateStyle())}set height(e){this._height!==e&&(this._height=e,this._updateStyle())}_updateStyle(){p8(this._ruleName),cX(`.monaco-editor ${this._ruleName}`,`border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px !important; margin-left: -${this._height}px; `)}show(e){e.column===1&&(e={lineNumber:e.lineNumber,column:2}),this._decorations.set([{range:z.fromPositions(e),options:{description:"zone-widget-arrow",className:this._ruleName,stickiness:1}}])}hide(){this._decorations.clear()}};bz._IdGenerator=new Roe(".arrow-decoration-");let ree=bz;class H0t{constructor(e,t={}){this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._viewZone=null,this._disposables=new De,this.container=null,this._isShowing=!1,this.editor=e,this._positionMarkerId=this.editor.createDecorationsCollection(),this.options=$0(t),S3(this.options,z0t,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange(i=>{const n=this._getWidth(i);this.domNode.style.width=n+"px",this.domNode.style.left=this._getLeft(i)+"px",this._onWidth(n)}))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones(e=>{this._viewZone&&e.removeZone(this._viewZone.id),this._viewZone=null}),this._positionMarkerId.clear(),this._disposables.dispose()}create(){this.domNode.classList.add("zone-widget"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement("div"),this.container.classList.add("zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new ree(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(e){e.frameColor&&(this.options.frameColor=e.frameColor),e.arrowColor&&(this.options.arrowColor=e.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){const e=this.options.frameColor.toString();this.container.style.borderTopColor=e,this.container.style.borderBottomColor=e}if(this._arrow&&this.options.arrowColor){const e=this.options.arrowColor.toString();this._arrow.color=e}}_getWidth(e){return e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}_getLeft(e){return e.minimap.minimapWidth>0&&e.minimap.minimapLeft===0?e.minimap.minimapWidth:0}_onViewZoneTop(e){this.domNode.style.top=e+"px"}_onViewZoneHeight(e){var t;if(this.domNode.style.height=`${e}px`,this.container){const i=e-this._decoratingElementsHeight();this.container.style.height=`${i}px`;const n=this.editor.getLayoutInfo();this._doLayout(i,this._getWidth(n))}(t=this._resizeSash)==null||t.layout()}get position(){const e=this._positionMarkerId.getRange(0);if(e)return e.getStartPosition()}show(e,t){const i=z.isIRange(e)?z.lift(e):z.fromPositions(e);this._isShowing=!0,this._showImpl(i,t),this._isShowing=!1,this._positionMarkerId.set([{range:i,options:ki.EMPTY}])}hide(){var e;this._viewZone&&(this.editor.changeViewZones(t=>{this._viewZone&&t.removeZone(this._viewZone.id)}),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),(e=this._arrow)==null||e.hide(),this._positionMarkerId.clear()}_decoratingElementsHeight(){const e=this.editor.getOption(67);let t=0;if(this.options.showArrow){const i=Math.round(e/3);t+=2*i}if(this.options.showFrame){const i=Math.round(e/9);t+=2*i}return t}_showImpl(e,t){const i=e.getStartPosition(),n=this.editor.getLayoutInfo(),o=this._getWidth(n);this.domNode.style.width=`${o}px`,this.domNode.style.left=this._getLeft(n)+"px";const r=document.createElement("div");r.style.overflow="hidden";const l=this.editor.getOption(67);if(!this.options.allowUnlimitedHeight){const u=Math.max(12,this.editor.getLayoutInfo().height/l*.8);t=Math.min(t,u)}let a=0,d=0;if(this._arrow&&this.options.showArrow&&(a=Math.round(l/3),this._arrow.height=a,this._arrow.show(i)),this.options.showFrame&&(d=Math.round(l/9)),this.editor.changeViewZones(u=>{this._viewZone&&u.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top="-1000px",this._viewZone=new j0t(r,i.lineNumber,i.column,t,m=>this._onViewZoneTop(m),m=>this._onViewZoneHeight(m),this.options.showInHiddenAreas,this.options.ordinal),this._viewZone.id=u.addZone(this._viewZone),this._overlayWidget=new P0t(O0t+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)}),this.container&&this.options.showFrame){const u=this.options.frameWidth?this.options.frameWidth:d;this.container.style.borderTopWidth=u+"px",this.container.style.borderBottomWidth=u+"px"}const c=t*l-this._decoratingElementsHeight();this.container&&(this.container.style.top=a+"px",this.container.style.height=c+"px",this.container.style.overflow="hidden"),this._doLayout(c,o),this.options.keepEditorSelection||this.editor.setSelection(e);const h=this.editor.getModel();if(h){const u=h.validateRange(new z(e.startLineNumber,1,e.endLineNumber+1,1));this.revealRange(u,u.startLineNumber===h.getLineCount())}}revealRange(e,t){t?this.editor.revealLineNearTop(e.endLineNumber,0):this.editor.revealRange(e,0)}setCssClass(e,t){this.container&&(t&&this.container.classList.remove(t),this.container.classList.add(e))}_onWidth(e){}_doLayout(e,t){}_relayout(e){this._viewZone&&this._viewZone.heightInLines!==e&&this.editor.changeViewZones(t=>{this._viewZone&&(this._viewZone.heightInLines=e,t.layoutZone(this._viewZone.id))})}_initSash(){if(this._resizeSash)return;this._resizeSash=this._disposables.add(new Jl(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.state=0);let e;this._disposables.add(this._resizeSash.onDidStart(t=>{this._viewZone&&(e={startY:t.startY,heightInLines:this._viewZone.heightInLines})})),this._disposables.add(this._resizeSash.onDidEnd(()=>{e=void 0})),this._disposables.add(this._resizeSash.onDidChange(t=>{if(e){const i=(t.currentY-e.startY)/this.editor.getOption(67),n=i<0?Math.ceil(i):Math.floor(i),o=e.heightInLines+n;o>5&&o<35&&this._relayout(o)}}))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(this.domNode.style.height===null?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const e=this.editor.getLayoutInfo();return e.width-e.minimap.minimapWidth}}var eye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},tye=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const iye=un("IPeekViewService");Fn(iye,class{constructor(){this._widgets=new Map}addExclusiveWidget(s,e){const t=this._widgets.get(s);t&&(t.listener.dispose(),t.widget.dispose());const i=()=>{const n=this._widgets.get(s);n&&n.widget===e&&(n.listener.dispose(),this._widgets.delete(s))};this._widgets.set(s,{widget:e,listener:e.onDidClose(i)})}},1);var Md;(function(s){s.inPeekEditor=new yt("inReferenceSearchEditor",!0,F("inReferenceSearchEditor","Whether the current code editor is embedded inside peek")),s.notInPeekEditor=s.inPeekEditor.toNegated()})(Md||(Md={}));var Wv;let eY=(Wv=class{constructor(e,t){e instanceof sm&&Md.inPeekEditor.bindTo(t)}dispose(){}},Wv.ID="editor.contrib.referenceController",Wv);eY=eye([tye(1,fi)],eY);Wn(eY.ID,eY,0);function K0t(s){const e=s.get(kn).getFocusedCodeEditor();return e instanceof sm?e.getParentEditor():e}const q0t={headerBackgroundColor:Je.white,primaryHeadingColor:Je.fromHex("#333333"),secondaryHeadingColor:Je.fromHex("#6c6c6cb3")};let tY=class extends H0t{constructor(e,t,i){super(e,t),this.instantiationService=i,this._onDidClose=new fe,this.onDidClose=this._onDidClose.event,S3(this.options,q0t,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(e){const t=this.options;e.headerBackgroundColor&&(t.headerBackgroundColor=e.headerBackgroundColor),e.primaryHeadingColor&&(t.primaryHeadingColor=e.primaryHeadingColor),e.secondaryHeadingColor&&(t.secondaryHeadingColor=e.secondaryHeadingColor),super.style(e)}_applyStyles(){super._applyStyles();const e=this.options;this._headElement&&e.headerBackgroundColor&&(this._headElement.style.backgroundColor=e.headerBackgroundColor.toString()),this._primaryHeading&&e.primaryHeadingColor&&(this._primaryHeading.style.color=e.primaryHeadingColor.toString()),this._secondaryHeading&&e.secondaryHeadingColor&&(this._secondaryHeading.style.color=e.secondaryHeadingColor.toString()),this._bodyElement&&e.frameColor&&(this._bodyElement.style.borderColor=e.frameColor.toString())}_fillContainer(e){this.setCssClass("peekview-widget"),this._headElement=gt(".head"),this._bodyElement=gt(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)}_fillHead(e,t){this._titleElement=gt(".peekview-title"),this.options.supportOnTitleClick&&(this._titleElement.classList.add("clickable"),Fo(this._titleElement,"click",o=>this._onTitleClick(o))),nt(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=gt("span.filename"),this._secondaryHeading=gt("span.dirname"),this._metaHeading=gt("span.meta"),nt(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const i=gt(".peekview-actions");nt(this._headElement,i);const n=this._getActionBarOptions();this._actionbarWidget=new ih(i,n),this._disposables.add(this._actionbarWidget),t||this._actionbarWidget.push(new ac("peekview.close",F("label.close","Close"),ui.asClassName(ct.close),!0,()=>(this.dispose(),Promise.resolve())),{label:!1,icon:!0})}_fillTitleIcon(e){}_getActionBarOptions(){return{actionViewItemProvider:URe.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(e){}setTitle(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=e,this._primaryHeading.setAttribute("title",e),t?this._secondaryHeading.innerText=t:dl(this._secondaryHeading))}setMetaTitle(e){this._metaHeading&&(e?(this._metaHeading.innerText=e,nc(this._metaHeading)):La(this._metaHeading))}_doLayout(e,t){if(!this._isShowing&&e<0){this.dispose();return}const i=Math.ceil(this.editor.getOption(67)*1.2),n=Math.round(e-(i+2));this._doLayoutHead(i,t),this._doLayoutBody(n,t)}_doLayoutHead(e,t){this._headElement&&(this._headElement.style.height=`${e}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(e,t){this._bodyElement&&(this._bodyElement.style.height=`${e}px`)}};tY=eye([tye(2,ti)],tY);const $0t=te("peekViewTitle.background",{dark:"#252526",light:"#F3F3F3",hcDark:Je.black,hcLight:Je.white},F("peekViewTitleBackground","Background color of the peek view title area.")),nye=te("peekViewTitleLabel.foreground",{dark:Je.white,light:Je.black,hcDark:Je.white,hcLight:e0},F("peekViewTitleForeground","Color of the peek view title.")),sye=te("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161",hcDark:"#FFFFFF99",hcLight:"#292929"},F("peekViewTitleInfoForeground","Color of the peek view title info.")),eft=te("peekView.border",{dark:Jg,light:Jg,hcDark:Vn,hcLight:Vn},F("peekViewBorder","Color of the peek view borders and arrow.")),tft=te("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hcDark:Je.black,hcLight:Je.white},F("peekViewResultsBackground","Background color of the peek view result list."));te("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hcDark:Je.white,hcLight:e0},F("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list."));te("peekViewResult.fileForeground",{dark:Je.white,light:"#1E1E1E",hcDark:Je.white,hcLight:e0},F("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list."));te("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hcDark:null,hcLight:null},F("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list."));te("peekViewResult.selectionForeground",{dark:Je.white,light:"#6C6C6C",hcDark:Je.white,hcLight:e0},F("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list."));const oye=te("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hcDark:Je.black,hcLight:Je.white},F("peekViewEditorBackground","Background color of the peek view editor."));te("peekViewEditorGutter.background",oye,F("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor."));te("peekViewEditorStickyScroll.background",oye,F("peekViewEditorStickScrollBackground","Background color of sticky scroll in the peek view editor."));te("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hcDark:null,hcLight:null},F("peekViewResultsMatchHighlight","Match highlight color in the peek view result list."));te("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hcDark:null,hcLight:null},F("peekViewEditorMatchHighlight","Match highlight color in the peek view editor."));te("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hcDark:to,hcLight:to},F("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor."));class OF{constructor(e,t,i,n){this.isProviderFirst=e,this.parent=t,this.link=i,this._rangeCallback=n,this.id=s6.nextId()}get uri(){return this.link.uri}get range(){return this._range??this.link.targetSelectionRange??this.link.range}set range(e){this._range=e,this._rangeCallback(this)}get ariaMessage(){var t;const e=(t=this.parent.getPreview(this))==null?void 0:t.preview(this.range);return e?F({key:"aria.oneReference.preview",comment:["Placeholders are: 0: filename, 1:line number, 2: column number, 3: preview snippet of source code"]},"{0} in {1} on line {2} at column {3}",e.value,Hh(this.uri),this.range.startLineNumber,this.range.startColumn):F("aria.oneReference","in {0} on line {1} at column {2}",Hh(this.uri),this.range.startLineNumber,this.range.startColumn)}}class ift{constructor(e){this._modelReference=e}dispose(){this._modelReference.dispose()}preview(e,t=8){const i=this._modelReference.object.textEditorModel;if(!i)return;const{startLineNumber:n,startColumn:o,endLineNumber:r,endColumn:l}=e,a=i.getWordUntilPosition({lineNumber:n,column:o-t}),d=new z(n,a.startColumn,n,o),c=new z(r,l,r,1073741824),h=i.getValueInRange(d).replace(/^\s+/,""),u=i.getValueInRange(e),m=i.getValueInRange(c).replace(/\s+$/,"");return{value:h+u+m,highlight:{start:h.length,end:h.length+u.length}}}}class $L{constructor(e,t){this.parent=e,this.uri=t,this.children=[],this._previews=new Or}dispose(){Ws(this._previews.values()),this._previews.clear()}getPreview(e){return this._previews.get(e.uri)}get ariaMessage(){const e=this.children.length;return e===1?F("aria.fileReferences.1","1 symbol in {0}, full path {1}",Hh(this.uri),this.uri.fsPath):F("aria.fileReferences.N","{0} symbols in {1}, full path {2}",e,Hh(this.uri),this.uri.fsPath)}async resolve(e){if(this._previews.size!==0)return this;for(const t of this.children)if(!this._previews.has(t.uri))try{const i=await e.createModelReference(t.uri);this._previews.set(t.uri,new ift(i))}catch(i){wi(i)}return this}}class hc{constructor(e,t){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new fe,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=e,this._title=t;const[i]=e;e.sort(hc._compareReferences);let n;for(const o of e)if((!n||!io.isEqual(n.uri,o.uri,!0))&&(n=new $L(this,o.uri),this.groups.push(n)),n.children.length===0||hc._compareReferences(o,n.children[n.children.length-1])!==0){const r=new OF(i===o,n,o,l=>this._onDidChangeReferenceRange.fire(l));this.references.push(r),n.children.push(r)}}dispose(){Ws(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new hc(this._links,this._title)}get title(){return this._title}get isEmpty(){return this.groups.length===0}get ariaMessage(){return this.isEmpty?F("aria.result.0","No results found"):this.references.length===1?F("aria.result.1","Found 1 symbol in {0}",this.references[0].uri.fsPath):this.groups.length===1?F("aria.result.n1","Found {0} symbols in {1}",this.references.length,this.groups[0].uri.fsPath):F("aria.result.nm","Found {0} symbols in {1} files",this.references.length,this.groups.length)}nextOrPreviousReference(e,t){const{parent:i}=e;let n=i.children.indexOf(e);const o=i.children.length,r=i.parent.groups.length;return r===1||t&&n+1<o||!t&&n>0?(t?n=(n+1)%o:n=(n+o-1)%o,i.children[n]):(n=i.parent.groups.indexOf(i),t?(n=(n+1)%r,i.parent.groups[n].children[0]):(n=(n+r-1)%r,i.parent.groups[n].children[i.parent.groups[n].children.length-1]))}nearestReference(e,t){const i=this.references.map((n,o)=>({idx:o,prefixLen:LF(n.uri.toString(),e.toString()),offsetDist:Math.abs(n.range.startLineNumber-t.lineNumber)*100+Math.abs(n.range.startColumn-t.column)})).sort((n,o)=>n.prefixLen>o.prefixLen?-1:n.prefixLen<o.prefixLen?1:n.offsetDist<o.offsetDist?-1:n.offsetDist>o.offsetDist?1:0)[0];if(i)return this.references[i.idx]}referenceAt(e,t){for(const i of this.references)if(i.uri.toString()===e.toString()&&z.containsPosition(i.range,t))return i}firstReference(){for(const e of this.references)if(e.isProviderFirst)return e;return this.references[0]}static _compareReferences(e,t){return io.compare(e.uri,t.uri)||z.compareRangesUsingStarts(e.range,t.range)}}var z9=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},O9=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},lee;let aee=class{constructor(e){this._resolverService=e}hasChildren(e){return e instanceof hc||e instanceof $L}getChildren(e){if(e instanceof hc)return e.groups;if(e instanceof $L)return e.resolve(this._resolverService).then(t=>t.children);throw new Error("bad tree")}};aee=z9([O9(0,Td)],aee);class nft{getHeight(){return 23}getTemplateId(e){return e instanceof $L?iY.id:nY.id}}let dee=class{constructor(e){this._keybindingService=e}getKeyboardNavigationLabel(e){var t;if(e instanceof OF){const i=(t=e.parent.getPreview(e))==null?void 0:t.preview(e.range);if(i)return i.value}return Hh(e.uri)}};dee=z9([O9(0,qn)],dee);class sft{getId(e){return e instanceof OF?e.id:e.uri}}let cee=class extends be{constructor(e,t){super(),this._labelService=t;const i=document.createElement("div");i.classList.add("reference-file"),this.file=this._register(new h5(i,{supportHighlights:!0})),this.badge=new nq(nt(i,gt(".count")),{},fRe),e.appendChild(i)}set(e,t){const i=o9(e.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(e.uri),this._labelService.getUriLabel(i,{relative:!0}),{title:this._labelService.getUriLabel(e.uri),matches:t});const n=e.children.length;this.badge.setCount(n),n>1?this.badge.setTitleFormat(F("referencesCount","{0} references",n)):this.badge.setTitleFormat(F("referenceCount","{0} reference",n))}};cee=z9([O9(1,vy)],cee);var NQ;let iY=(NQ=class{constructor(e){this._instantiationService=e,this.templateId=lee.id}renderTemplate(e){return this._instantiationService.createInstance(cee,e)}renderElement(e,t,i){i.set(e.element,tk(e.filterData))}disposeTemplate(e){e.dispose()}},lee=NQ,NQ.id="FileReferencesRenderer",NQ);iY=lee=z9([O9(0,ti)],iY);class oft extends be{constructor(e){super(),this.label=this._register(new VF(e))}set(e,t){var n;const i=(n=e.parent.getPreview(e))==null?void 0:n.preview(e.range);if(!i||!i.value)this.label.set(`${Hh(e.uri)}:${e.range.startLineNumber+1}:${e.range.startColumn+1}`);else{const{value:o,highlight:r}=i;t&&!op.isDefault(t)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(o,tk(t))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(o,[r]))}}}const Uz=class Uz{constructor(){this.templateId=Uz.id}renderTemplate(e){return new oft(e)}renderElement(e,t,i){i.set(e.element,e.filterData)}disposeTemplate(e){e.dispose()}};Uz.id="OneReferenceRenderer";let nY=Uz;class rft{getWidgetAriaLabel(){return F("treeAriaLabel","References")}getAriaLabel(e){return e.ariaMessage}}var lft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zR=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Fz=class Fz{constructor(e,t){this._editor=e,this._model=t,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new De,this._callOnModelChange=new De,this._callOnDispose.add(this._editor.onDidChangeModel(()=>this._onModelChanged())),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const e=this._editor.getModel();if(e){for(const t of this._model.references)if(t.uri.toString()===e.uri.toString()){this._addDecorations(t.parent);return}}}_addDecorations(e){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(()=>this._onDecorationChanged()));const t=[],i=[];for(let n=0,o=e.children.length;n<o;n++){const r=e.children[n];this._decorationIgnoreSet.has(r.id)||r.uri.toString()===this._editor.getModel().uri.toString()&&(t.push({range:r.range,options:Fz.DecorationOptions}),i.push(n))}this._editor.changeDecorations(n=>{const o=n.deltaDecorations([],t);for(let r=0;r<o.length;r++)this._decorations.set(o[r],e.children[i[r]])})}_onDecorationChanged(){const e=[],t=this._editor.getModel();if(t){for(const[i,n]of this._decorations){const o=t.getDecorationRange(i);if(!o)continue;let r=!1;if(!z.equalsRange(o,n.range)){if(z.spansMultipleLines(o))r=!0;else{const l=n.range.endColumn-n.range.startColumn,a=o.endColumn-o.startColumn;l!==a&&(r=!0)}r?(this._decorationIgnoreSet.add(n.id),e.push(i)):n.range=o}}for(let i=0,n=e.length;i<n;i++)this._decorations.delete(e[i]);this._editor.removeDecorations(e)}}removeDecorations(){this._editor.removeDecorations([...this._decorations.keys()]),this._decorations.clear()}};Fz.DecorationOptions=ki.register({description:"reference-decoration",stickiness:1,className:"reference-decoration"});let hee=Fz;class aft{constructor(){this.ratio=.7,this.heightInLines=18}static fromJSON(e){let t,i;try{const n=JSON.parse(e);t=n.ratio,i=n.heightInLines}catch{}return{ratio:t||.7,heightInLines:i||18}}}class dft extends hq{}let uee=class extends tY{constructor(e,t,i,n,o,r,l,a,d){super(e,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0,supportOnTitleClick:!0},r),this._defaultTreeKeyboardSupport=t,this.layoutData=i,this._textModelResolverService=o,this._instantiationService=r,this._peekViewService=l,this._uriLabel=a,this._keybindingService=d,this._disposeOnNewModel=new De,this._callOnDispose=new De,this._onDidSelectReference=new fe,this.onDidSelectReference=this._onDidSelectReference.event,this._dim=new ns(0,0),this._isClosing=!1,this._applyTheme(n.getColorTheme()),this._callOnDispose.add(n.onDidColorThemeChange(this._applyTheme.bind(this))),this._peekViewService.addExclusiveWidget(e,this),this.create()}get isClosing(){return this._isClosing}dispose(){this._isClosing=!0,this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),Ws(this._preview),Ws(this._previewNotAvailableMessage),Ws(this._tree),Ws(this._previewModelReference),this._splitView.dispose(),super.dispose()}_applyTheme(e){const t=e.getColor(eft)||Je.transparent;this.style({arrowColor:t,frameColor:t,headerBackgroundColor:e.getColor($0t)||Je.transparent,primaryHeadingColor:e.getColor(nye),secondaryHeadingColor:e.getColor(sye)})}show(e){super.show(e,this.layoutData.heightInLines||18)}focusOnReferenceTree(){this._tree.domFocus()}focusOnPreviewEditor(){this._preview.focus()}isPreviewEditorFocused(){return this._preview.hasTextFocus()}_onTitleClick(e){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:e.ctrlKey||e.metaKey||e.altKey?"side":"open",source:"title"})}_fillBody(e){this.setCssClass("reference-zone-widget"),this._messageContainer=nt(e,gt("div.messages")),La(this._messageContainer),this._splitView=new aVe(e,{orientation:1}),this._previewContainer=nt(e,gt("div.preview.inline"));const t={scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:"auto",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!0},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}};this._preview=this._instantiationService.createInstance(sm,this._previewContainer,t,{},this.editor),La(this._previewContainer),this._previewNotAvailableMessage=this._instantiationService.createInstance(Km,F("missingPreviewMessage","no preview available"),Ya,Km.DEFAULT_CREATION_OPTIONS,null),this._treeContainer=nt(e,gt("div.ref-tree.inline"));const i={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new rft,keyboardNavigationLabelProvider:this._instantiationService.createInstance(dee),identityProvider:new sft,openOnSingleClick:!0,selectionNavigation:!0,overrideStyles:{listBackground:tft}};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(Fo(this._treeContainer,"keydown",o=>{o.equals(9)&&(this._keybindingService.dispatchEvent(o,o.target),o.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(dft,"ReferencesWidget",this._treeContainer,new nft,[this._instantiationService.createInstance(iY),this._instantiationService.createInstance(nY)],this._instantiationService.createInstance(aee),i),this._splitView.addView({onDidChange:Ut.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:o=>{this._preview.layout({height:this._dim.height,width:o})}},s5.Distribute),this._splitView.addView({onDidChange:Ut.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:o=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${o}px`,this._tree.layout(this._dim.height,o)}},s5.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const n=(o,r)=>{o instanceof OF&&(r==="show"&&this._revealReference(o,!1),this._onDidSelectReference.fire({element:o,kind:r,source:"tree"}))};this._disposables.add(this._tree.onDidOpen(o=>{o.sideBySide?n(o.element,"side"):o.editorOptions.pinned?n(o.element,"goto"):n(o.element,"show")})),La(this._treeContainer)}_onWidth(e){this._dim&&this._doLayoutBody(this._dim.height,e)}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._dim=new ns(t,e),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(t),this._splitView.resizeView(0,t*this.layoutData.ratio)}setSelection(e){return this._revealReference(e,!0).then(()=>{this._model&&(this._tree.setSelection([e]),this._tree.setFocus([e]))})}setModel(e){return this._disposeOnNewModel.clear(),this._model=e,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=F("noResults","No results"),nc(this._messageContainer),Promise.resolve(void 0)):(La(this._messageContainer),this._decorationsManager=new hee(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(e=>this._tree.rerender(e))),this._disposeOnNewModel.add(this._preview.onMouseDown(e=>{const{event:t,target:i}=e;if(t.detail!==2)return;const n=this._getFocusedReference();n&&this._onDidSelectReference.fire({element:{uri:n.uri,range:i.range},kind:t.ctrlKey||t.metaKey||t.altKey?"side":"open",source:"editor"})})),this.container.classList.add("results-loaded"),nc(this._treeContainer),nc(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[e]=this._tree.getFocus();if(e instanceof OF)return e;if(e instanceof $L&&e.children.length>0)return e.children[0]}async revealReference(e){await this._revealReference(e,!1),this._onDidSelectReference.fire({element:e,kind:"goto",source:"tree"})}async _revealReference(e,t){if(this._revealedReference===e)return;this._revealedReference=e,e.uri.scheme!==Ti.inMemory?this.setTitle(r$e(e.uri),this._uriLabel.getUriLabel(o9(e.uri))):this.setTitle(F("peekView.alternateTitle","References"));const i=this._textModelResolverService.createModelReference(e.uri);this._tree.getInput()===e.parent?this._tree.reveal(e):(t&&this._tree.reveal(e.parent),await this._tree.expand(e.parent),this._tree.reveal(e));const n=await i;if(!this._model){n.dispose();return}Ws(this._previewModelReference);const o=n.object;if(o){const r=this._preview.getModel()===o.textEditorModel?0:1,l=z.lift(e.range).collapseToStart();this._previewModelReference=n,this._preview.setModel(o.textEditorModel),this._preview.setSelection(l),this._preview.revealRangeInCenter(l,r)}else this._preview.setModel(this._previewNotAvailableMessage),n.dispose()}};uee=lft([zR(3,Rr),zR(4,Td),zR(5,ti),zR(6,iye),zR(7,vy),zR(8,qn)],uee);var cft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},OR=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},GD;const dR=new yt("referenceSearchVisible",!1,F("referenceSearchVisible","Whether reference peek is visible, like 'Peek References' or 'Peek Definition'"));var RQ;let EN=(RQ=class{static get(e){return e.getContribution(GD.ID)}constructor(e,t,i,n,o,r,l,a){this._defaultTreeKeyboardSupport=e,this._editor=t,this._editorService=n,this._notificationService=o,this._instantiationService=r,this._storageService=l,this._configurationService=a,this._disposables=new De,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=dR.bindTo(i)}dispose(){var e,t;this._referenceSearchVisible.reset(),this._disposables.dispose(),(e=this._widget)==null||e.dispose(),(t=this._model)==null||t.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(e,t,i){let n;if(this._widget&&(n=this._widget.position),this.closeWidget(),n&&e.containsPosition(n))return;this._peekMode=i,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>{this.closeWidget()})),this._disposables.add(this._editor.onDidChangeModel(()=>{this._ignoreModelChangeEvent||this.closeWidget()}));const o="peekViewLayout",r=aft.fromJSON(this._storageService.get(o,0,"{}"));this._widget=this._instantiationService.createInstance(uee,this._editor,this._defaultTreeKeyboardSupport,r),this._widget.setTitle(F("labelLoading","Loading...")),this._widget.show(e),this._disposables.add(this._widget.onDidClose(()=>{t.cancel(),this._widget?(this._storageService.store(o,JSON.stringify(this._widget.layoutData),0,1),this._widget.isClosing||this.closeWidget(),this._widget=void 0):this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(a=>{const{element:d,kind:c}=a;if(d)switch(c){case"open":(a.source!=="editor"||!this._configurationService.getValue("editor.stablePeek"))&&this.openReference(d,!1,!1);break;case"side":this.openReference(d,!0,!1);break;case"goto":i?this._gotoReference(d,!0):this.openReference(d,!1,!0);break}}));const l=++this._requestIdPool;t.then(a=>{var d;if(l!==this._requestIdPool||!this._widget){a.dispose();return}return(d=this._model)==null||d.dispose(),this._model=a,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(F("metaTitle.N","{0} ({1})",this._model.title,this._model.references.length));const c=this._editor.getModel().uri,h=new ge(e.startLineNumber,e.startColumn),u=this._model.nearestReference(c,h);if(u)return this._widget.setSelection(u).then(()=>{this._widget&&this._editor.getOption(87)==="editor"&&this._widget.focusOnPreviewEditor()})}})},a=>{this._notificationService.error(a)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}async goToNextOrPreviousReference(e){if(!this._editor.hasModel()||!this._model||!this._widget)return;const t=this._widget.position;if(!t)return;const i=this._model.nearestReference(this._editor.getModel().uri,t);if(!i)return;const n=this._model.nextOrPreviousReference(i,e),o=this._editor.hasTextFocus(),r=this._widget.isPreviewEditorFocused();await this._widget.setSelection(n),await this._gotoReference(n,!1),o?this._editor.focus():this._widget&&r&&this._widget.focusOnPreviewEditor()}async revealReference(e){!this._editor.hasModel()||!this._model||!this._widget||await this._widget.revealReference(e)}closeWidget(e=!0){var t,i;(t=this._widget)==null||t.dispose(),(i=this._model)==null||i.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,e&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(e,t){var n;(n=this._widget)==null||n.hide(),this._ignoreModelChangeEvent=!0;const i=z.lift(e.range).collapseToStart();return this._editorService.openCodeEditor({resource:e.uri,options:{selection:i,selectionSource:"code.jump",pinned:t}},this._editor).then(o=>{if(this._ignoreModelChangeEvent=!1,!o||!this._widget){this.closeWidget();return}if(this._editor===o)this._widget.show(i),this._widget.focusOnReferenceTree();else{const r=GD.get(o),l=this._model.clone();this.closeWidget(),o.focus(),r==null||r.toggleWidget(i,Tr(a=>Promise.resolve(l)),this._peekMode??!1)}},o=>{this._ignoreModelChangeEvent=!1,wi(o)})}openReference(e,t,i){t||this.closeWidget();const{uri:n,range:o}=e;this._editorService.openCodeEditor({resource:n,options:{selection:o,selectionSource:"code.jump",pinned:i}},this._editor,t)}},GD=RQ,RQ.ID="editor.contrib.referencesController",RQ);EN=GD=cft([OR(2,fi),OR(3,kn),OR(4,jo),OR(5,ti),OR(6,lm),OR(7,Hi)],EN);function cR(s,e){const t=K0t(s);if(!t)return;const i=EN.get(t);i&&e(i)}Oa.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:dr(2089,60),when:Ge.or(dR,Md.inPeekEditor),handler(s){cR(s,e=>{e.changeFocusBetweenPreviewAndReferences()})}});Oa.registerCommandAndKeybindingRule({id:"goToNextReference",weight:100-10,primary:62,secondary:[70],when:Ge.or(dR,Md.inPeekEditor),handler(s){cR(s,e=>{e.goToNextOrPreviousReference(!0)})}});Oa.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:100-10,primary:1086,secondary:[1094],when:Ge.or(dR,Md.inPeekEditor),handler(s){cR(s,e=>{e.goToNextOrPreviousReference(!1)})}});Sn.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference");Sn.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference");Sn.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch");Sn.registerCommand("closeReferenceSearch",s=>cR(s,e=>e.closeWidget()));Oa.registerKeybindingRule({id:"closeReferenceSearch",weight:100-101,primary:9,secondary:[1033],when:Ge.and(Md.inPeekEditor,Ge.not("config.editor.stablePeek"))});Oa.registerKeybindingRule({id:"closeReferenceSearch",weight:200+50,primary:9,secondary:[1033],when:Ge.and(dR,Ge.not("config.editor.stablePeek"),Ge.or($.editorTextFocus,UVe.negate()))});Oa.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:Ge.and(dR,ZVe,lre.negate(),are.negate()),handler(s){var i;const t=(i=s.get(iu).lastFocusedList)==null?void 0:i.getFocus();Array.isArray(t)&&t[0]instanceof OF&&cR(s,n=>n.revealReference(t[0]))}});Oa.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:Ge.and(dR,ZVe,lre.negate(),are.negate()),handler(s){var i;const t=(i=s.get(iu).lastFocusedList)==null?void 0:i.getFocus();Array.isArray(t)&&t[0]instanceof OF&&cR(s,n=>n.openReference(t[0],!0,!0))}});Sn.registerCommand("openReference",s=>{var i;const t=(i=s.get(iu).lastFocusedList)==null?void 0:i.getFocus();Array.isArray(t)&&t[0]instanceof OF&&cR(s,n=>n.openReference(t[0],!1,!0))});var rye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},xT=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Ule=new yt("hasSymbols",!1,F("hasSymbols","Whether there are symbol locations that can be navigated via keyboard-only.")),j9=un("ISymbolNavigationService");let mee=class{constructor(e,t,i,n){this._editorService=t,this._notificationService=i,this._keybindingService=n,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=Ule.bindTo(e)}reset(){var e,t;this._ctxHasSymbols.reset(),(e=this._currentState)==null||e.dispose(),(t=this._currentMessage)==null||t.dispose(),this._currentModel=void 0,this._currentIdx=-1}put(e){const t=e.parent.parent;if(t.references.length<=1){this.reset();return}this._currentModel=t,this._currentIdx=t.references.indexOf(e),this._ctxHasSymbols.set(!0),this._showMessage();const i=new pee(this._editorService),n=i.onDidChange(o=>{if(this._ignoreEditorChange)return;const r=this._editorService.getActiveCodeEditor();if(!r)return;const l=r.getModel(),a=r.getPosition();if(!l||!a)return;let d=!1,c=!1;for(const h of t.references)if(uL(h.uri,l.uri))d=!0,c=c||z.containsPosition(h.range,a);else if(d)break;(!d||!c)&&this.reset()});this._currentState=Pu(i,n)}revealNext(e){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const t=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:t.uri,options:{selection:z.collapseToStart(t.range),selectionRevealType:3}},e).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var i;(i=this._currentMessage)==null||i.dispose();const e=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),t=e?F("location.kb","Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,e.getLabel()):F("location","Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(t)}};mee=rye([xT(0,fi),xT(1,kn),xT(2,jo),xT(3,qn)],mee);Fn(j9,mee,1);Vt(new class extends Nr{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:Ule,kbOpts:{weight:100,primary:70}})}runEditorCommand(s,e){return s.get(j9).revealNext(e)}});Oa.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:Ule,primary:9,handler(s){s.get(j9).reset()}});let pee=class{constructor(e){this._listener=new Map,this._disposables=new De,this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._disposables.add(e.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(e.onCodeEditorAdd(this._onDidAddEditor,this)),e.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),Ws(this._listener.values())}_onDidAddEditor(e){this._listener.set(e,Pu(e.onDidChangeCursorPosition(t=>this._onDidChange.fire({editor:e})),e.onDidChangeModelContent(t=>this._onDidChange.fire({editor:e}))))}_onDidRemoveEditor(e){var t;(t=this._listener.get(e))==null||t.dispose(),this._listener.delete(e)}};pee=rye([xT(0,kn)],pee);function gee(s,e){return e.uri.scheme===s.uri.scheme?!0:!c8(e.uri,Ti.walkThroughSnippet,Ti.vscodeChatCodeBlock,Ti.vscodeChatCodeCompareBlock)}async function Rk(s,e,t,i,n){const r=t.ordered(s,i).map(a=>Promise.resolve(n(a,s,e)).then(void 0,d=>{vo(d)})),l=await Promise.all(r);return Hu(l.flat()).filter(a=>gee(s,a))}function Vk(s,e,t,i,n){return Rk(e,t,s,i,(o,r,l)=>o.provideDefinition(r,l,n))}function Fle(s,e,t,i,n){return Rk(e,t,s,i,(o,r,l)=>o.provideDeclaration(r,l,n))}function Ale(s,e,t,i,n){return Rk(e,t,s,i,(o,r,l)=>o.provideImplementation(r,l,n))}function Zle(s,e,t,i,n){return Rk(e,t,s,i,(o,r,l)=>o.provideTypeDefinition(r,l,n))}function Wk(s,e,t,i,n,o){return Rk(e,t,s,n,async(r,l,a)=>{var h,u;const d=(h=await r.provideReferences(l,a,{includeDeclaration:!0},o))==null?void 0:h.filter(m=>gee(l,m));if(!i||!d||d.length!==2)return d;const c=(u=await r.provideReferences(l,a,{includeDeclaration:!1},o))==null?void 0:u.filter(m=>gee(l,m));return c&&c.length===1?c:d})}async function s0(s){const e=await s(),t=new hc(e,""),i=t.references.map(n=>n.link);return t.dispose(),i}Cd("_executeDefinitionProvider",(s,e,t)=>{const i=s.get(xt),n=Vk(i.definitionProvider,e,t,!1,Gi.None);return s0(()=>n)});Cd("_executeDefinitionProvider_recursive",(s,e,t)=>{const i=s.get(xt),n=Vk(i.definitionProvider,e,t,!0,Gi.None);return s0(()=>n)});Cd("_executeTypeDefinitionProvider",(s,e,t)=>{const i=s.get(xt),n=Zle(i.typeDefinitionProvider,e,t,!1,Gi.None);return s0(()=>n)});Cd("_executeTypeDefinitionProvider_recursive",(s,e,t)=>{const i=s.get(xt),n=Zle(i.typeDefinitionProvider,e,t,!0,Gi.None);return s0(()=>n)});Cd("_executeDeclarationProvider",(s,e,t)=>{const i=s.get(xt),n=Fle(i.declarationProvider,e,t,!1,Gi.None);return s0(()=>n)});Cd("_executeDeclarationProvider_recursive",(s,e,t)=>{const i=s.get(xt),n=Fle(i.declarationProvider,e,t,!0,Gi.None);return s0(()=>n)});Cd("_executeReferenceProvider",(s,e,t)=>{const i=s.get(xt),n=Wk(i.referenceProvider,e,t,!1,!1,Gi.None);return s0(()=>n)});Cd("_executeReferenceProvider_recursive",(s,e,t)=>{const i=s.get(xt),n=Wk(i.referenceProvider,e,t,!1,!0,Gi.None);return s0(()=>n)});Cd("_executeImplementationProvider",(s,e,t)=>{const i=s.get(xt),n=Ale(i.implementationProvider,e,t,!1,Gi.None);return s0(()=>n)});Cd("_executeImplementationProvider_recursive",(s,e,t)=>{const i=s.get(xt),n=Ale(i.implementationProvider,e,t,!0,Gi.None);return s0(()=>n)});zr.appendMenuItem(Gt.EditorContext,{submenu:Gt.EditorContextPeek,title:F("peek.submenu","Peek"),group:"navigation",order:100});class Ky{static is(e){return!e||typeof e!="object"?!1:!!(e instanceof Ky||ge.isIPosition(e.position)&&e.model)}constructor(e,t){this.model=e,this.position=t}}const Nu=class Nu extends Fp{static all(){return Nu._allSymbolNavigationCommands.values()}static _patchConfig(e){const t={...e,f1:!0};if(t.menu)for(const i of Zn.wrap(t.menu))(i.id===Gt.EditorContext||i.id===Gt.EditorContextPeek)&&(i.when=Ge.and(e.precondition,i.when));return t}constructor(e,t){super(Nu._patchConfig(t)),this.configuration=e,Nu._allSymbolNavigationCommands.set(t.id,this)}runEditorCommand(e,t,i,n){if(!t.hasModel())return Promise.resolve(void 0);const o=e.get(jo),r=e.get(kn),l=e.get(iA),a=e.get(j9),d=e.get(xt),c=e.get(ti),h=t.getModel(),u=t.getPosition(),m=Ky.is(i)?i:new Ky(h,u),p=new _F(t,5),g=Pv(this._getLocationModel(d,m.model,m.position,p.token),p.token).then(async f=>{var S;if(!f||p.token.isCancellationRequested)return;ja(f.ariaMessage);let b;if(f.referenceAt(h.uri,u)){const Z=this._getAlternativeCommand(t);!Nu._activeAlternativeCommands.has(Z)&&Nu._allSymbolNavigationCommands.has(Z)&&(b=Nu._allSymbolNavigationCommands.get(Z))}const U=f.references.length;if(U===0){if(!this.configuration.muteMessage){const Z=h.getWordAtPosition(u);(S=cc.get(t))==null||S.showMessage(this._getNoResultFoundMessage(Z),u)}}else if(U===1&&b)Nu._activeAlternativeCommands.add(this.desc.id),c.invokeFunction(Z=>b.runEditorCommand(Z,t,i,n).finally(()=>{Nu._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(r,a,t,f,n)},f=>{o.error(f)}).finally(()=>{p.dispose()});return l.showWhile(g,250),g}async _onResult(e,t,i,n,o){const r=this._getGoToPreference(i);if(!(i instanceof sm)&&(this.configuration.openInPeek||r==="peek"&&n.references.length>1))this._openInPeek(i,n,o);else{const l=n.firstReference(),a=n.references.length>1&&r==="gotoAndPeek",d=await this._openReference(i,e,l,this.configuration.openToSide,!a);a&&d?this._openInPeek(d,n,o):n.dispose(),r==="goto"&&t.put(l)}}async _openReference(e,t,i,n,o){let r;if(FPe(i)&&(r=i.targetSelectionRange),r||(r=i.range),!r)return;const l=await t.openCodeEditor({resource:i.uri,options:{selection:z.collapseToStart(r),selectionRevealType:3,selectionSource:"code.jump"}},e,n);if(l){if(o){const a=l.getModel(),d=l.createDecorationsCollection([{range:r,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{l.getModel()===a&&d.clear()},350)}return l}}_openInPeek(e,t,i){const n=EN.get(e);n&&e.hasModel()?n.toggleWidget(i??e.getSelection(),Tr(o=>Promise.resolve(t)),this.configuration.openInPeek):t.dispose()}};Nu._allSymbolNavigationCommands=new Map,Nu._activeAlternativeCommands=new Set;let nb=Nu;class yk extends nb{async _getLocationModel(e,t,i,n){return new hc(await Vk(e.definitionProvider,t,i,!1,n),F("def.title","Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?F("noResultWord","No definition found for '{0}'",e.word):F("generic.noResults","No definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleDefinitions}}var iN;Cs((iN=class extends yk{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:iN.id,title:{...Ni("actions.goToDecl.label","Go to Definition"),mnemonicTitle:F({key:"miGotoDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Definition")},precondition:$.hasDefinitionProvider,keybinding:[{when:$.editorTextFocus,primary:70,weight:100},{when:Ge.and($.editorTextFocus,fVe),primary:2118,weight:100}],menu:[{id:Gt.EditorContext,group:"navigation",order:1.1},{id:Gt.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),Sn.registerCommandAlias("editor.action.goToDeclaration",iN.id)}},iN.id="editor.action.revealDefinition",iN));var nN;Cs((nN=class extends yk{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:nN.id,title:Ni("actions.goToDeclToSide.label","Open Definition to the Side"),precondition:Ge.and($.hasDefinitionProvider,$.isInEmbeddedEditor.toNegated()),keybinding:[{when:$.editorTextFocus,primary:dr(2089,70),weight:100},{when:Ge.and($.editorTextFocus,fVe),primary:dr(2089,2118),weight:100}]}),Sn.registerCommandAlias("editor.action.openDeclarationToTheSide",nN.id)}},nN.id="editor.action.revealDefinitionAside",nN));var sN;Cs((sN=class extends yk{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:sN.id,title:Ni("actions.previewDecl.label","Peek Definition"),precondition:Ge.and($.hasDefinitionProvider,Md.notInPeekEditor,$.isInEmbeddedEditor.toNegated()),keybinding:{when:$.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:Gt.EditorContextPeek,group:"peek",order:2}}),Sn.registerCommandAlias("editor.action.previewDeclaration",sN.id)}},sN.id="editor.action.peekDefinition",sN));class lye extends nb{async _getLocationModel(e,t,i,n){return new hc(await Fle(e.declarationProvider,t,i,!1,n),F("decl.title","Declarations"))}_getNoResultFoundMessage(e){return e&&e.word?F("decl.noResultWord","No declaration found for '{0}'",e.word):F("decl.generic.noResults","No declaration found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDeclarationCommand}_getGoToPreference(e){return e.getOption(58).multipleDeclarations}}var VQ;Cs((VQ=class extends lye{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:VQ.id,title:{...Ni("actions.goToDeclaration.label","Go to Declaration"),mnemonicTitle:F({key:"miGotoDeclaration",comment:["&& denotes a mnemonic"]},"Go to &&Declaration")},precondition:Ge.and($.hasDeclarationProvider,$.isInEmbeddedEditor.toNegated()),menu:[{id:Gt.EditorContext,group:"navigation",order:1.3},{id:Gt.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(e){return e&&e.word?F("decl.noResultWord","No declaration found for '{0}'",e.word):F("decl.generic.noResults","No declaration found")}},VQ.id="editor.action.revealDeclaration",VQ));Cs(class extends lye{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:Ni("actions.peekDecl.label","Peek Declaration"),precondition:Ge.and($.hasDeclarationProvider,Md.notInPeekEditor,$.isInEmbeddedEditor.toNegated()),menu:{id:Gt.EditorContextPeek,group:"peek",order:3}})}});class aye extends nb{async _getLocationModel(e,t,i,n){return new hc(await Zle(e.typeDefinitionProvider,t,i,!1,n),F("typedef.title","Type Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?F("goToTypeDefinition.noResultWord","No type definition found for '{0}'",e.word):F("goToTypeDefinition.generic.noResults","No type definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeTypeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleTypeDefinitions}}var WQ;Cs((WQ=class extends aye{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:WQ.ID,title:{...Ni("actions.goToTypeDefinition.label","Go to Type Definition"),mnemonicTitle:F({key:"miGotoTypeDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Type Definition")},precondition:$.hasTypeDefinitionProvider,keybinding:{when:$.editorTextFocus,primary:0,weight:100},menu:[{id:Gt.EditorContext,group:"navigation",order:1.4},{id:Gt.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}},WQ.ID="editor.action.goToTypeDefinition",WQ));var yQ;Cs((yQ=class extends aye{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:yQ.ID,title:Ni("actions.peekTypeDefinition.label","Peek Type Definition"),precondition:Ge.and($.hasTypeDefinitionProvider,Md.notInPeekEditor,$.isInEmbeddedEditor.toNegated()),menu:{id:Gt.EditorContextPeek,group:"peek",order:4}})}},yQ.ID="editor.action.peekTypeDefinition",yQ));class dye extends nb{async _getLocationModel(e,t,i,n){return new hc(await Ale(e.implementationProvider,t,i,!1,n),F("impl.title","Implementations"))}_getNoResultFoundMessage(e){return e&&e.word?F("goToImplementation.noResultWord","No implementation found for '{0}'",e.word):F("goToImplementation.generic.noResults","No implementation found")}_getAlternativeCommand(e){return e.getOption(58).alternativeImplementationCommand}_getGoToPreference(e){return e.getOption(58).multipleImplementations}}var QQ;Cs((QQ=class extends dye{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:QQ.ID,title:{...Ni("actions.goToImplementation.label","Go to Implementations"),mnemonicTitle:F({key:"miGotoImplementation",comment:["&& denotes a mnemonic"]},"Go to &&Implementations")},precondition:$.hasImplementationProvider,keybinding:{when:$.editorTextFocus,primary:2118,weight:100},menu:[{id:Gt.EditorContext,group:"navigation",order:1.45},{id:Gt.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}},QQ.ID="editor.action.goToImplementation",QQ));var MQ;Cs((MQ=class extends dye{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:MQ.ID,title:Ni("actions.peekImplementation.label","Peek Implementations"),precondition:Ge.and($.hasImplementationProvider,Md.notInPeekEditor,$.isInEmbeddedEditor.toNegated()),keybinding:{when:$.editorTextFocus,primary:3142,weight:100},menu:{id:Gt.EditorContextPeek,group:"peek",order:5}})}},MQ.ID="editor.action.peekImplementation",MQ));class cye extends nb{_getNoResultFoundMessage(e){return e?F("references.no","No references found for '{0}'",e.word):F("references.noGeneric","No references found")}_getAlternativeCommand(e){return e.getOption(58).alternativeReferenceCommand}_getGoToPreference(e){return e.getOption(58).multipleReferences}}Cs(class extends cye{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{...Ni("goToReferences.label","Go to References"),mnemonicTitle:F({key:"miGotoReference",comment:["&& denotes a mnemonic"]},"Go to &&References")},precondition:Ge.and($.hasReferenceProvider,Md.notInPeekEditor,$.isInEmbeddedEditor.toNegated()),keybinding:{when:$.editorTextFocus,primary:1094,weight:100},menu:[{id:Gt.EditorContext,group:"navigation",order:1.45},{id:Gt.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}async _getLocationModel(e,t,i,n){return new hc(await Wk(e.referenceProvider,t,i,!0,!1,n),F("ref.title","References"))}});Cs(class extends cye{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:Ni("references.action.label","Peek References"),precondition:Ge.and($.hasReferenceProvider,Md.notInPeekEditor,$.isInEmbeddedEditor.toNegated()),menu:{id:Gt.EditorContextPeek,group:"peek",order:6}})}async _getLocationModel(e,t,i,n){return new hc(await Wk(e.referenceProvider,t,i,!1,!1,n),F("ref.title","References"))}});class hft extends nb{constructor(e,t,i){super(e,{id:"editor.action.goToLocation",title:Ni("label.generic","Go to Any Symbol"),precondition:Ge.and(Md.notInPeekEditor,$.isInEmbeddedEditor.toNegated())}),this._references=t,this._gotoMultipleBehaviour=i}async _getLocationModel(e,t,i,n){return new hc(this._references,F("generic.title","Locations"))}_getNoResultFoundMessage(e){return e&&F("generic.noResult","No results for '{0}'",e.word)||""}_getGoToPreference(e){return this._gotoMultipleBehaviour??e.getOption(58).multipleReferences}_getAlternativeCommand(){return""}}Sn.registerCommand({id:"editor.action.goToLocations",metadata:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:ni},{name:"position",description:"The position at which to start",constraint:ge.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:async(s,e,t,i,n,o,r)=>{vn(ni.isUri(e)),vn(ge.isIPosition(t)),vn(Array.isArray(i)),vn(typeof n>"u"||typeof n=="string"),vn(typeof r>"u"||typeof r=="boolean");const l=s.get(kn),a=await l.openCodeEditor({resource:e},l.getFocusedCodeEditor());if(jg(a))return a.setPosition(t),a.revealPositionInCenterIfOutsideViewport(t,0),a.invokeWithinContext(d=>{const c=new class extends hft{_getNoResultFoundMessage(h){return o||super._getNoResultFoundMessage(h)}}({muteMessage:!o,openInPeek:!!r,openToSide:!1},i,n);d.get(ti).invokeFunction(c.run.bind(c),a)})}});Sn.registerCommand({id:"editor.action.peekLocations",metadata:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:ni},{name:"position",description:"The position at which to start",constraint:ge.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"}]},handler:async(s,e,t,i,n)=>{s.get(ks).executeCommand("editor.action.goToLocations",e,t,i,n,void 0,!0)}});Sn.registerCommand({id:"editor.action.findReferences",handler:(s,e,t)=>{vn(ni.isUri(e)),vn(ge.isIPosition(t));const i=s.get(xt),n=s.get(kn);return n.openCodeEditor({resource:e},n.getFocusedCodeEditor()).then(o=>{if(!jg(o)||!o.hasModel())return;const r=EN.get(o);if(!r)return;const l=Tr(d=>Wk(i.referenceProvider,o.getModel(),ge.lift(t),!1,!1,d).then(c=>new hc(c,F("ref.title","References")))),a=new z(t.lineNumber,t.column,t.lineNumber,t.column);return Promise.resolve(r.toggleWidget(a,l,!1))})}});Sn.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations");async function uft(s,e,t,i){const n=s.get(Td),o=s.get(Uc),r=s.get(ks),l=s.get(ti),a=s.get(jo);if(await i.item.resolve(Gi.None),!i.part.location)return;const d=i.part.location,c=[],h=new Set(zr.getMenuItems(Gt.EditorContext).map(m=>w1(m)?m.command.id:D9()));for(const m of nb.all())h.has(m.desc.id)&&c.push(new ac(m.desc.id,dc.label(m.desc,{renderShortTitle:!0}),void 0,!0,async()=>{const p=await n.createModelReference(d.uri);try{const g=new Ky(p.object.textEditorModel,z.getStartPosition(d.range)),f=i.item.anchor.range;await l.invokeFunction(m.runEditorCommand.bind(m),e,g,f)}finally{p.dispose()}}));if(i.part.command){const{command:m}=i.part;c.push(new Br),c.push(new ac(m.id,m.title,void 0,!0,async()=>{try{await r.executeCommand(m.id,...m.arguments??[])}catch(p){a.notify({severity:O3.Error,source:i.item.provider.displayName,message:p})}}))}const u=e.getOption(128);o.showContextMenu({domForShadowRoot:u?e.getDomNode()??void 0:void 0,getAnchor:()=>{const m=Lo(t);return{x:m.left,y:m.top+m.height+8}},getActions:()=>c,onHide:()=>{e.focus()},autoSelectFirstItem:!0})}async function hye(s,e,t,i){const o=await s.get(Td).createModelReference(i.uri);await t.invokeWithinContext(async r=>{const l=e.hasSideBySideModifier,a=r.get(fi),d=Md.inPeekEditor.getValue(a),c=!l&&t.getOption(89)&&!d;return new yk({openToSide:l,openInPeek:c,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(r,new Ky(o.object.textEditorModel,z.getStartPosition(i.range)),z.lift(i.range))}),o.dispose()}var mft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},jR=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},BV;class sY{constructor(){this._entries=new $g(50)}get(e){const t=sY._key(e);return this._entries.get(t)}set(e,t){const i=sY._key(e);this._entries.set(i,t)}static _key(e){return`${e.uri.toString()}/${e.getVersionId()}`}}const uye=un("IInlayHintsCache");Fn(uye,sY,1);class fee{constructor(e,t){this.item=e,this.index=t}get part(){const e=this.item.hint.label;return typeof e=="string"?{label:e}:e[this.index]}}class pft{constructor(e,t){this.part=e,this.hasTriggerModifier=t}}var pF;let ev=(pF=class{static get(e){return e.getContribution(BV.ID)??void 0}constructor(e,t,i,n,o,r,l){this._editor=e,this._languageFeaturesService=t,this._inlayHintsCache=n,this._commandService=o,this._notificationService=r,this._instaService=l,this._disposables=new De,this._sessionDisposables=new De,this._decorationsMetadata=new Map,this._ruleFactory=new S5(this._editor),this._activeRenderMode=0,this._debounceInfo=i.for(t.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(t.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(e.onDidChangeModel(()=>this._update())),this._disposables.add(e.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(e.onDidChangeConfiguration(a=>{a.hasChanged(142)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const e=this._editor.getOption(142);if(e.enabled==="off")return;const t=this._editor.getModel();if(!t||!this._languageFeaturesService.inlayHintsProvider.has(t))return;if(e.enabled==="on")this._activeRenderMode=0;else{let l,a;e.enabled==="onUnlessPressed"?(l=0,a=1):(l=1,a=0),this._activeRenderMode=l,this._sessionDisposables.add(Wf.getInstance().event(d=>{if(!this._editor.hasModel())return;const c=d.altKey&&d.ctrlKey&&!(d.shiftKey||d.metaKey)?a:l;if(c!==this._activeRenderMode){this._activeRenderMode=c;const h=this._editor.getModel(),u=this._copyInlayHintsWithCurrentAnchor(h);this._updateHintsDecorators([h.getFullModelRange()],u),r.schedule(0)}}))}const i=this._inlayHintsCache.get(t);i&&this._updateHintsDecorators([t.getFullModelRange()],i),this._sessionDisposables.add(ei(()=>{t.isDisposed()||this._cacheHintsForFastRestore(t)}));let n;const o=new Set,r=new cs(async()=>{const l=Date.now();n==null||n.dispose(!0),n=new go;const a=t.onWillDispose(()=>n==null?void 0:n.cancel());try{const d=n.token,c=await $5.create(this._languageFeaturesService.inlayHintsProvider,t,this._getHintsRanges(),d);if(r.delay=this._debounceInfo.update(t,Date.now()-l),d.isCancellationRequested){c.dispose();return}for(const h of c.provider)typeof h.onDidChangeInlayHints=="function"&&!o.has(h)&&(o.add(h),this._sessionDisposables.add(h.onDidChangeInlayHints(()=>{r.isScheduled()||r.schedule()})));this._sessionDisposables.add(c),this._updateHintsDecorators(c.ranges,c.items),this._cacheHintsForFastRestore(t)}catch(d){wi(d)}finally{n.dispose(),a.dispose()}},this._debounceInfo.get(t));this._sessionDisposables.add(r),this._sessionDisposables.add(ei(()=>n==null?void 0:n.dispose(!0))),r.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(l=>{(l.scrollTopChanged||!r.isScheduled())&&r.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeModelContent(l=>{n==null||n.cancel();const a=Math.max(r.delay,1250);r.schedule(a)})),this._sessionDisposables.add(this._installDblClickGesture(()=>r.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const e=new De,t=e.add(new _9(this._editor)),i=new De;return e.add(i),e.add(t.onMouseMoveOrRelevantKeyDown(n=>{const[o]=n,r=this._getInlayHintLabelPart(o),l=this._editor.getModel();if(!r||!l){i.clear();return}const a=new go;i.add(ei(()=>a.dispose(!0))),r.item.resolve(a.token),this._activeInlayHintPart=r.part.command||r.part.location?new pft(r,o.hasTriggerModifier):void 0;const d=l.validatePosition(r.item.hint.position).lineNumber,c=new z(d,1,d,l.getLineMaxColumn(d)),h=this._getInlineHintsForRange(c);this._updateHintsDecorators([c],h),i.add(ei(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([c],h)}))})),e.add(t.onCancel(()=>i.clear())),e.add(t.onExecute(async n=>{const o=this._getInlayHintLabelPart(n);if(o){const r=o.part;r.location?this._instaService.invokeFunction(hye,n,this._editor,r.location):d7.is(r.command)&&await this._invokeCommand(r.command,o.item)}})),e}_getInlineHintsForRange(e){const t=new Set;for(const i of this._decorationsMetadata.values())e.containsRange(i.item.anchor.range)&&t.add(i.item);return Array.from(t)}_installDblClickGesture(e){return this._editor.onMouseUp(async t=>{if(t.event.detail!==2)return;const i=this._getInlayHintLabelPart(t);if(i&&(t.event.preventDefault(),await i.item.resolve(Gi.None),ba(i.item.hint.textEdits))){const n=i.item.hint.textEdits.map(o=>mo.replace(z.lift(o.range),o.text));this._editor.executeEdits("inlayHint.default",n),e()}})}_installContextMenu(){return this._editor.onContextMenu(async e=>{if(!Cr(e.event.target))return;const t=this._getInlayHintLabelPart(e);t&&await this._instaService.invokeFunction(uft,this._editor,e.event.target,t)})}_getInlayHintLabelPart(e){var i;if(e.target.type!==6)return;const t=(i=e.target.detail.injectedText)==null?void 0:i.options;if(t instanceof JF&&(t==null?void 0:t.attachedData)instanceof fee)return t.attachedData}async _invokeCommand(e,t){try{await this._commandService.executeCommand(e.id,...e.arguments??[])}catch(i){this._notificationService.notify({severity:O3.Error,source:t.provider.displayName,message:i})}}_cacheHintsForFastRestore(e){const t=this._copyInlayHintsWithCurrentAnchor(e);this._inlayHintsCache.set(e,t)}_copyInlayHintsWithCurrentAnchor(e){const t=new Map;for(const[i,n]of this._decorationsMetadata){if(t.has(n.item))continue;const o=e.getDecorationRange(i);if(o){const r=new $1e(o,n.item.anchor.direction),l=n.item.with({anchor:r});t.set(n.item,l)}}return Array.from(t.values())}_getHintsRanges(){const t=this._editor.getModel(),i=this._editor.getVisibleRangesPlusViewportAboveBelow(),n=[];for(const o of i.sort(z.compareRangesUsingStarts)){const r=t.validateRange(new z(o.startLineNumber-30,o.startColumn,o.endLineNumber+30,o.endColumn));n.length===0||!z.areIntersectingOrTouching(n[n.length-1],r)?n.push(r):n[n.length-1]=z.plusRange(n[n.length-1],r)}return n}_updateHintsDecorators(e,t){var p,g;const i=[],n=(f,b,U,S,Z)=>{const R={content:U,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:b.className,cursorStops:S,attachedData:Z};i.push({item:f,classNameRef:b,decoration:{range:f.anchor.range,options:{description:"InlayHint",showIfCollapsed:f.anchor.range.isEmpty(),collapseOnReplaceEdit:!f.anchor.range.isEmpty(),stickiness:0,[f.anchor.direction]:this._activeRenderMode===0?R:void 0}}})},o=(f,b)=>{const U=this._ruleFactory.createClassNameRef({width:`${r/3|0}px`,display:"inline-block"});n(f,U," ",b?zu.Right:zu.None)},{fontSize:r,fontFamily:l,padding:a,isUniform:d}=this._getLayoutInfo(),c="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(c,l);let h={line:0,totalLen:0};for(const f of t){if(h.line!==f.anchor.range.startLineNumber&&(h={line:f.anchor.range.startLineNumber,totalLen:0}),h.totalLen>BV._MAX_LABEL_LEN)continue;f.hint.paddingLeft&&o(f,!1);const b=typeof f.hint.label=="string"?[{label:f.hint.label}]:f.hint.label;for(let U=0;U<b.length;U++){const S=b[U],Z=U===0,R=U===b.length-1,y={fontSize:`${r}px`,fontFamily:`var(${c}), ${Xa.fontFamily}`,verticalAlign:d?"baseline":"middle",unicodeBidi:"isolate"};ba(f.hint.textEdits)&&(y.cursor="default"),this._fillInColors(y,f.hint),(S.command||S.location)&&((p=this._activeInlayHintPart)==null?void 0:p.part.item)===f&&this._activeInlayHintPart.part.index===U&&(y.textDecoration="underline",this._activeInlayHintPart.hasTriggerModifier&&(y.color=Vo(I8e),y.cursor="pointer")),a&&(Z&&R?(y.padding=`1px ${Math.max(1,r/4)|0}px`,y.borderRadius=`${r/4|0}px`):Z?(y.padding=`1px 0 1px ${Math.max(1,r/4)|0}px`,y.borderRadius=`${r/4|0}px 0 0 ${r/4|0}px`):R?(y.padding=`1px ${Math.max(1,r/4)|0}px 1px 0`,y.borderRadius=`0 ${r/4|0}px ${r/4|0}px 0`):y.padding="1px 0 1px 0");let N=S.label;h.totalLen+=N.length;let w=!1;const Q=h.totalLen-BV._MAX_LABEL_LEN;if(Q>0&&(N=N.slice(0,-Q)+"…",w=!0),n(f,this._ruleFactory.createClassNameRef(y),gft(N),R&&!f.hint.paddingRight?zu.Right:zu.None,new fee(f,U)),w)break}if(f.hint.paddingRight&&o(f,!0),i.length>BV._MAX_DECORATORS)break}const u=[];for(const[f,b]of this._decorationsMetadata){const U=(g=this._editor.getModel())==null?void 0:g.getDecorationRange(f);U&&e.some(S=>S.containsRange(U))&&(u.push(f),b.classNameRef.dispose(),this._decorationsMetadata.delete(f))}const m=mp.capture(this._editor);this._editor.changeDecorations(f=>{const b=f.deltaDecorations(u,i.map(U=>U.decoration));for(let U=0;U<b.length;U++){const S=i[U];this._decorationsMetadata.set(b[U],S)}}),m.restore(this._editor)}_fillInColors(e,t){t.kind===tX.Parameter?(e.backgroundColor=Vo(z8e),e.color=Vo(_8e)):t.kind===tX.Type?(e.backgroundColor=Vo(Y8e),e.color=Vo(X8e)):(e.backgroundColor=Vo(doe),e.color=Vo(aoe))}_getLayoutInfo(){const e=this._editor.getOption(142),t=e.padding,i=this._editor.getOption(52),n=this._editor.getOption(49);let o=e.fontSize;(!o||o<5||o>i)&&(o=i);const r=e.fontFamily||n;return{fontSize:o,fontFamily:r,padding:t,isUniform:!t&&r===n&&o===i}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const e of this._decorationsMetadata.values())e.classNameRef.dispose();this._decorationsMetadata.clear()}},BV=pF,pF.ID="editor.contrib.InlayHints",pF._MAX_DECORATORS=1500,pF._MAX_LABEL_LEN=43,pF);ev=BV=mft([jR(1,xt),jR(2,dh),jR(3,uye),jR(4,ks),jR(5,jo),jR(6,ti)],ev);function gft(s){const e=" ";return s.replace(/[ \t]/g,e)}Sn.registerCommand("_executeInlayHintProvider",async(s,...e)=>{const[t,i]=e;vn(ni.isUri(t)),vn(z.isIRange(i));const{inlayHintsProvider:n}=s.get(xt),o=await s.get(Td).createModelReference(t);try{const r=await $5.create(n,o.object.textEditorModel,[z.lift(i)],Gi.None),l=r.items.map(a=>a.hint);return setTimeout(()=>r.dispose(),0),l}finally{o.dispose()}});var fft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Wb=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Kge extends ID{constructor(e,t,i,n){super(10,t,e.item.anchor.range,i,n,!0),this.part=e}}let oY=class extends qL{constructor(e,t,i,n,o,r,l,a,d){super(e,t,i,r,a,n,o,d),this._resolverService=l,this.hoverOrdinal=6}suggestHoverAnchor(e){var n;if(!ev.get(this._editor)||e.target.type!==6)return null;const i=(n=e.target.detail.injectedText)==null?void 0:n.options;return i instanceof JF&&i.attachedData instanceof fee?new Kge(i.attachedData,this,e.event.posx,e.event.posy):null}computeSync(){return[]}computeAsync(e,t,i){return e instanceof Kge?new jc(async n=>{const{part:o}=e;if(await o.item.resolve(i),i.isCancellationRequested)return;let r;typeof o.item.hint.tooltip=="string"?r=new _l().appendText(o.item.hint.tooltip):o.item.hint.tooltip&&(r=o.item.hint.tooltip),r&&n.emitOne(new Ju(this,e.range,[r],!1,0)),ba(o.item.hint.textEdits)&&n.emitOne(new Ju(this,e.range,[new _l().appendText(F("hint.dbl","Double-click to insert"))],!1,10001));let l;if(typeof o.part.tooltip=="string"?l=new _l().appendText(o.part.tooltip):o.part.tooltip&&(l=o.part.tooltip),l&&n.emitOne(new Ju(this,e.range,[l],!1,1)),o.part.location||o.part.command){let d;const h=this._editor.getOption(78)==="altKey"?hn?F("links.navigate.kb.meta.mac","cmd + click"):F("links.navigate.kb.meta","ctrl + click"):hn?F("links.navigate.kb.alt.mac","option + click"):F("links.navigate.kb.alt","alt + click");o.part.location&&o.part.command?d=new _l().appendText(F("hint.defAndCommand","Go to Definition ({0}), right click for more",h)):o.part.location?d=new _l().appendText(F("hint.def","Go to Definition ({0})",h)):o.part.command&&(d=new _l(`[${F("hint.cmd","Execute Command")}](${Y0t(o.part.command)} "${o.part.command.title}") (${h})`,{isTrusted:!0})),d&&n.emitOne(new Ju(this,e.range,[d],!1,1e4))}const a=await this._resolveInlayHintLabelPartHover(o,i);for await(const d of a)n.emitOne(d)}):jc.EMPTY}async _resolveInlayHintLabelPartHover(e,t){if(!e.part.location)return jc.EMPTY;const{uri:i,range:n}=e.part.location,o=await this._resolverService.createModelReference(i);try{const r=o.object.textEditorModel;return this._languageFeaturesService.hoverProvider.has(r)?fle(this._languageFeaturesService.hoverProvider,r,new ge(n.startLineNumber,n.startColumn),t).filter(l=>!By(l.hover.contents)).map(l=>new Ju(this,e.item.anchor.range,l.hover.contents,!1,2+l.ordinal)):jc.EMPTY}finally{o.dispose()}}};oY=fft([Wb(1,ao),Wb(2,Bd),Wb(3,qn),Wb(4,t0),Wb(5,Hi),Wb(6,Td),Wb(7,xt),Wb(8,ks)],oY);class Sle extends be{constructor(e,t,i,n,o,r){super();const l=t.anchor,a=t.hoverParts;this._renderedHoverParts=this._register(new bee(e,i,a,r,o));const{showAtPosition:d,showAtSecondaryPosition:c}=Sle.computeHoverPositions(e,l.range,a);this.shouldAppearBeforeContent=a.some(h=>h.isBeforeContent),this.showAtPosition=d,this.showAtSecondaryPosition=c,this.initialMousePosX=l.initialMousePosX,this.initialMousePosY=l.initialMousePosY,this.shouldFocus=n.shouldFocus,this.source=n.source}get domNode(){return this._renderedHoverParts.domNode}get domNodeHasChildren(){return this._renderedHoverParts.domNodeHasChildren}get focusedHoverPartIndex(){return this._renderedHoverParts.focusedHoverPartIndex}async updateHoverVerbosityLevel(e,t,i){this._renderedHoverParts.updateHoverVerbosityLevel(e,t,i)}isColorPickerVisible(){return this._renderedHoverParts.isColorPickerVisible()}static computeHoverPositions(e,t,i){let n=1;if(e.hasModel()){const c=e._getViewModel(),h=c.coordinatesConverter,u=h.convertModelRangeToViewRange(t),m=c.getLineMinColumn(u.startLineNumber),p=new ge(u.startLineNumber,m);n=h.convertViewPositionToModelPosition(p).column}const o=t.startLineNumber;let r=t.startColumn,l;for(const c of i){const h=c.range,u=h.startLineNumber===o,m=h.endLineNumber===o;if(u&&m){const g=h.startColumn,f=Math.min(r,g);r=Math.max(f,n)}c.forceShowAtRange&&(l=h)}let a,d;if(l){const c=l.getStartPosition();a=c,d=c}else a=t.getStartPosition(),d=new ge(o,r);return{showAtPosition:a,showAtSecondaryPosition:d}}}class bft{constructor(e,t){this._statusBar=t,e.appendChild(this._statusBar.hoverElement)}get hoverElement(){return this._statusBar.hoverElement}get actions(){return this._statusBar.actions}dispose(){this._statusBar.dispose()}}const Az=class Az extends be{constructor(e,t,i,n,o){super(),this._renderedParts=[],this._focusedHoverPartIndex=-1,this._context=o,this._fragment=document.createDocumentFragment(),this._register(this._renderParts(t,i,o,n)),this._register(this._registerListenersOnRenderedParts()),this._register(this._createEditorDecorations(e,i)),this._updateMarkdownAndColorParticipantInfo(t)}_createEditorDecorations(e,t){if(t.length===0)return be.None;let i=t[0].range;for(const o of t){const r=o.range;i=z.plusRange(i,r)}const n=e.createDecorationsCollection();return n.set([{range:i,options:Az._DECORATION_OPTIONS}]),ei(()=>{n.clear()})}_renderParts(e,t,i,n){const o=new q5(n),r={fragment:this._fragment,statusBar:o,...i},l=new De;for(const d of e){const c=this._renderHoverPartsForParticipant(t,d,r);l.add(c);for(const h of c.renderedHoverParts)this._renderedParts.push({type:"hoverPart",participant:d,hoverPart:h.hoverPart,hoverElement:h.hoverElement})}const a=this._renderStatusBar(this._fragment,o);return a&&(l.add(a),this._renderedParts.push({type:"statusBar",hoverElement:a.hoverElement,actions:a.actions})),ei(()=>{l.dispose()})}_renderHoverPartsForParticipant(e,t,i){const n=e.filter(r=>r.owner===t);return n.length>0?t.renderHoverParts(i,n):new IN([])}_renderStatusBar(e,t){if(t.hasContent)return new bft(e,t)}_registerListenersOnRenderedParts(){const e=new De;return this._renderedParts.forEach((t,i)=>{const n=t.hoverElement;n.tabIndex=0,e.add(Te(n,ut.FOCUS_IN,o=>{o.stopPropagation(),this._focusedHoverPartIndex=i})),e.add(Te(n,ut.FOCUS_OUT,o=>{o.stopPropagation(),this._focusedHoverPartIndex=-1}))}),e}_updateMarkdownAndColorParticipantInfo(e){const t=e.find(i=>i instanceof qL&&!(i instanceof oY));t&&(this._markdownHoverParticipant=t),this._colorHoverParticipant=e.find(i=>i instanceof HL)}async updateHoverVerbosityLevel(e,t,i){if(!this._markdownHoverParticipant)return;const n=this._normalizedIndexToMarkdownHoverIndexRange(this._markdownHoverParticipant,t);if(n===void 0)return;const o=await this._markdownHoverParticipant.updateMarkdownHoverVerbosityLevel(e,n,i);o&&(this._renderedParts[t]={type:"hoverPart",participant:this._markdownHoverParticipant,hoverPart:o.hoverPart,hoverElement:o.hoverElement},this._context.onContentsChanged())}isColorPickerVisible(){var e;return((e=this._colorHoverParticipant)==null?void 0:e.isColorPickerVisible())??!1}_normalizedIndexToMarkdownHoverIndexRange(e,t){const i=this._renderedParts[t];if(!i||i.type!=="hoverPart"||!(i.participant===e))return;const o=this._renderedParts.findIndex(r=>r.type==="hoverPart"&&r.participant===e);if(o===-1)throw new _n;return t-o}get domNode(){return this._fragment}get domNodeHasChildren(){return this._fragment.hasChildNodes()}get focusedHoverPartIndex(){return this._focusedHoverPartIndex}};Az._DECORATION_OPTIONS=ki.register({description:"content-hover-highlight",className:"hoverHighlight"});let bee=Az;var Uft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},qge=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Uee=class extends be{constructor(e,t,i){super(),this._editor=e,this._instantiationService=t,this._keybindingService=i,this._currentResult=null,this._onContentsChanged=this._register(new fe),this.onContentsChanged=this._onContentsChanged.event,this._contentHoverWidget=this._register(this._instantiationService.createInstance(see,this._editor)),this._participants=this._initializeHoverParticipants(),this._computer=new K5(this._editor,this._participants),this._hoverOperation=this._register(new j1e(this._editor,this._computer)),this._registerListeners()}_initializeHoverParticipants(){const e=[];for(const t of aR.getAll()){const i=this._instantiationService.createInstance(t,this._editor);e.push(i)}return e.sort((t,i)=>t.hoverOrdinal-i.hoverOrdinal),this._register(this._contentHoverWidget.onDidResize(()=>{this._participants.forEach(t=>{var i;return(i=t.handleResize)==null?void 0:i.call(t)})})),e}_registerListeners(){this._register(this._hoverOperation.onResult(t=>{if(!this._computer.anchor)return;const i=t.hasLoadingMessage?this._addLoadingMessage(t.value):t.value;this._withResult(new P1e(this._computer.anchor,i,t.isComplete))}));const e=this._contentHoverWidget.getDomNode();this._register(Fo(e,"keydown",t=>{t.equals(9)&&this.hide()})),this._register(Fo(e,"mouseleave",t=>{this._onMouseLeave(t)})),this._register(Ro.onDidChange(()=>{this._contentHoverWidget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)}))}_startShowingOrUpdateHover(e,t,i,n,o){if(!(this._contentHoverWidget.position&&this._currentResult))return e?(this._startHoverOperationIfNecessary(e,t,i,n,!1),!0):!1;const l=this._editor.getOption(60).sticky,a=o&&this._contentHoverWidget.isMouseGettingCloser(o.event.posx,o.event.posy);return l&&a?(e&&this._startHoverOperationIfNecessary(e,t,i,n,!0),!0):e?this._currentResult.anchor.equals(e)?!0:e.canAdoptVisibleHover(this._currentResult.anchor,this._contentHoverWidget.position)?(this._setCurrentResult(this._currentResult.filter(e)),this._startHoverOperationIfNecessary(e,t,i,n,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(e,t,i,n,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(e,t,i,n,o){this._computer.anchor&&this._computer.anchor.equals(e)||(this._hoverOperation.cancel(),this._computer.anchor=e,this._computer.shouldFocus=n,this._computer.source=i,this._computer.insistOnKeepingHoverVisible=o,this._hoverOperation.start(t))}_setCurrentResult(e){let t=e;if(this._currentResult===t)return;t&&t.hoverParts.length===0&&(t=null),this._currentResult=t,this._currentResult?this._showHover(this._currentResult):this._hideHover()}_addLoadingMessage(e){if(!this._computer.anchor)return e;for(const t of this._participants){if(!t.createLoadingMessage)continue;const i=t.createLoadingMessage(this._computer.anchor);if(i)return e.slice(0).concat([i])}return e}_withResult(e){if(this._contentHoverWidget.position&&this._currentResult&&this._currentResult.isComplete||this._setCurrentResult(e),!e.isComplete)return;const n=e.hoverParts.length===0,o=this._computer.insistOnKeepingHoverVisible;n&&o||this._setCurrentResult(e)}_showHover(e){const t=this._getHoverContext();this._renderedContentHover=new Sle(this._editor,e,this._participants,this._computer,t,this._keybindingService),this._renderedContentHover.domNodeHasChildren?this._contentHoverWidget.show(this._renderedContentHover):this._renderedContentHover.dispose()}_hideHover(){this._contentHoverWidget.hide()}_getHoverContext(){return{hide:()=>{this.hide()},onContentsChanged:()=>{this._onContentsChanged.fire(),this._contentHoverWidget.onContentsChanged()},setMinimumDimensions:n=>{this._contentHoverWidget.setMinimumDimensions(n)}}}showsOrWillShow(e){if(this._contentHoverWidget.isResizing)return!0;const i=this._findHoverAnchorCandidates(e);if(!(i.length>0))return this._startShowingOrUpdateHover(null,0,0,!1,e);const o=i[0];return this._startShowingOrUpdateHover(o,0,0,!1,e)}_findHoverAnchorCandidates(e){const t=[];for(const n of this._participants){if(!n.suggestHoverAnchor)continue;const o=n.suggestHoverAnchor(e);o&&t.push(o)}const i=e.target;switch(i.type){case 6:{t.push(new hH(0,i.range,e.event.posx,e.event.posy));break}case 7:{const n=this._editor.getOption(50).typicalHalfwidthCharacterWidth/2;if(!(!i.detail.isAfterLines&&typeof i.detail.horizontalDistanceToText=="number"&&i.detail.horizontalDistanceToText<n))break;t.push(new hH(0,i.range,e.event.posx,e.event.posy));break}}return t.sort((n,o)=>o.priority-n.priority),t}_onMouseLeave(e){const t=this._editor.getDomNode();(!t||!Y9(t,e.x,e.y))&&this.hide()}startShowingAtRange(e,t,i,n){this._startShowingOrUpdateHover(new hH(0,e,void 0,void 0),t,i,n,null)}async updateHoverVerbosityLevel(e,t,i){var n;(n=this._renderedContentHover)==null||n.updateHoverVerbosityLevel(e,t,i)}focusedHoverPartIndex(){var e;return((e=this._renderedContentHover)==null?void 0:e.focusedHoverPartIndex)??-1}containsNode(e){return e?this._contentHoverWidget.getDomNode().contains(e):!1}focus(){this._contentHoverWidget.focus()}scrollUp(){this._contentHoverWidget.scrollUp()}scrollDown(){this._contentHoverWidget.scrollDown()}scrollLeft(){this._contentHoverWidget.scrollLeft()}scrollRight(){this._contentHoverWidget.scrollRight()}pageUp(){this._contentHoverWidget.pageUp()}pageDown(){this._contentHoverWidget.pageDown()}goToTop(){this._contentHoverWidget.goToTop()}goToBottom(){this._contentHoverWidget.goToBottom()}hide(){this._computer.anchor=null,this._hoverOperation.cancel(),this._setCurrentResult(null)}getDomNode(){return this._contentHoverWidget.getDomNode()}get isColorPickerVisible(){var e;return((e=this._renderedContentHover)==null?void 0:e.isColorPickerVisible())??!1}get isVisibleFromKeyboard(){return this._contentHoverWidget.isVisibleFromKeyboard}get isVisible(){return this._contentHoverWidget.isVisible}get isFocused(){return this._contentHoverWidget.isFocused}get isResizing(){return this._contentHoverWidget.isResizing}get widget(){return this._contentHoverWidget}};Uee=Uft([qge(1,ti),qge(2,qn)],Uee);var Fft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},$ge=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Fee;const Aft=!1;var wQ;let Fa=(wQ=class extends be{constructor(e,t,i){super(),this._editor=e,this._instantiationService=t,this._keybindingService=i,this._onHoverContentsChanged=this._register(new fe),this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new De,this._hoverState={mouseDown:!1,activatedByDecoratorClick:!1},this._reactToEditorMouseMoveRunner=this._register(new cs(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(60)&&(this._unhookListeners(),this._hookListeners())}))}static get(e){return e.getContribution(Fee.ID)}_hookListeners(){const e=this._editor.getOption(60);this._hoverSettings={enabled:e.enabled,sticky:e.sticky,hidingDelay:e.hidingDelay},e.enabled?(this._listenersStore.add(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))):(this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))),this._listenersStore.add(this._editor.onMouseLeave(t=>this._onEditorMouseLeave(t))),this._listenersStore.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this._hideWidgets()})),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(t=>this._onEditorScrollChanged(t)))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(e){this._hoverState.mouseDown=!0,!this._shouldNotHideCurrentHoverWidget(e)&&this._hideWidgets()}_shouldNotHideCurrentHoverWidget(e){return this._isMouseOnContentHoverWidget(e)||this._isContentWidgetResizing()}_isMouseOnContentHoverWidget(e){var i;const t=(i=this._contentWidget)==null?void 0:i.getDomNode();return t?Y9(t,e.event.posx,e.event.posy):!1}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(e){this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._shouldNotHideCurrentHoverWidget(e))||this._hideWidgets()}_shouldNotRecomputeCurrentHoverWidget(e){const t=this._hoverSettings.sticky,i=(r,l)=>{const a=this._isMouseOnContentHoverWidget(r);return l&&a},n=r=>{var d;const l=this._isMouseOnContentHoverWidget(r),a=((d=this._contentWidget)==null?void 0:d.isColorPickerVisible)??!1;return l&&a},o=(r,l)=>{var a,d,c,h;return(l&&((d=this._contentWidget)==null?void 0:d.containsNode((a=r.event.browserEvent.view)==null?void 0:a.document.activeElement))&&!((h=(c=r.event.browserEvent.view)==null?void 0:c.getSelection())!=null&&h.isCollapsed))??!1};return i(e,t)||n(e)||o(e,t)}_onEditorMouseMove(e){var l,a,d,c;if(this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._mouseMoveEvent=e,(l=this._contentWidget)!=null&&l.isFocused||(a=this._contentWidget)!=null&&a.isResizing))return;const t=this._hoverSettings.sticky;if(t&&((d=this._contentWidget)!=null&&d.isVisibleFromKeyboard))return;if(this._shouldNotRecomputeCurrentHoverWidget(e)){this._reactToEditorMouseMoveRunner.cancel();return}const n=this._hoverSettings.hidingDelay;if(((c=this._contentWidget)==null?void 0:c.isVisible)&&t&&n>0){this._reactToEditorMouseMoveRunner.isScheduled()||this._reactToEditorMouseMoveRunner.schedule(n);return}this._reactToEditorMouseMove(e)}_reactToEditorMouseMove(e){var a;if(!e)return;const i=(a=e.target.element)==null?void 0:a.classList.contains("colorpicker-color-decoration"),n=this._editor.getOption(149),o=this._hoverSettings.enabled,r=this._hoverState.activatedByDecoratorClick;if(i&&(n==="click"&&!r||n==="hover"&&!o&&!Aft||n==="clickAndHover"&&!o&&!r)||!i&&!o&&!r){this._hideWidgets();return}this._tryShowHoverWidget(e)||this._hideWidgets()}_tryShowHoverWidget(e){return this._getOrCreateContentWidget().showsOrWillShow(e)}_onKeyDown(e){var n;if(!this._editor.hasModel())return;const t=this._keybindingService.softDispatch(e,this._editor.getDomNode()),i=t.kind===1||t.kind===2&&(t.commandId===Y1e||t.commandId===J9||t.commandId===X9)&&((n=this._contentWidget)==null?void 0:n.isVisible);e.keyCode===5||e.keyCode===6||e.keyCode===57||e.keyCode===4||i||this._hideWidgets()}_hideWidgets(){var e,t;this._hoverState.mouseDown&&((e=this._contentWidget)!=null&&e.isColorPickerVisible)||Hy.dropDownVisible||(this._hoverState.activatedByDecoratorClick=!1,(t=this._contentWidget)==null||t.hide())}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(Uee,this._editor),this._listenersStore.add(this._contentWidget.onContentsChanged(()=>this._onHoverContentsChanged.fire()))),this._contentWidget}showContentHover(e,t,i,n,o=!1){this._hoverState.activatedByDecoratorClick=o,this._getOrCreateContentWidget().startShowingAtRange(e,t,i,n)}_isContentWidgetResizing(){var e;return((e=this._contentWidget)==null?void 0:e.widget.isResizing)||!1}focusedHoverPartIndex(){return this._getOrCreateContentWidget().focusedHoverPartIndex()}updateHoverVerbosityLevel(e,t,i){this._getOrCreateContentWidget().updateHoverVerbosityLevel(e,t,i)}focus(){var e;(e=this._contentWidget)==null||e.focus()}scrollUp(){var e;(e=this._contentWidget)==null||e.scrollUp()}scrollDown(){var e;(e=this._contentWidget)==null||e.scrollDown()}scrollLeft(){var e;(e=this._contentWidget)==null||e.scrollLeft()}scrollRight(){var e;(e=this._contentWidget)==null||e.scrollRight()}pageUp(){var e;(e=this._contentWidget)==null||e.pageUp()}pageDown(){var e;(e=this._contentWidget)==null||e.pageDown()}goToTop(){var e;(e=this._contentWidget)==null||e.goToTop()}goToBottom(){var e;(e=this._contentWidget)==null||e.goToBottom()}get isColorPickerVisible(){var e;return(e=this._contentWidget)==null?void 0:e.isColorPickerVisible}get isHoverVisible(){var e;return(e=this._contentWidget)==null?void 0:e.isVisible}dispose(){var e;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(e=this._contentWidget)==null||e.dispose()}},Fee=wQ,wQ.ID="editor.contrib.contentHover",wQ);Fa=Fee=Fft([$ge(1,ti),$ge(2,qn)],Fa);const pae=class pae extends be{constructor(e){super(),this._editor=e,this._register(e.onMouseDown(t=>this.onMouseDown(t)))}dispose(){super.dispose()}onMouseDown(e){const t=this._editor.getOption(149);if(t!=="click"&&t!=="clickAndHover")return;const i=e.target;if(i.type!==6||!i.detail.injectedText||i.detail.injectedText.options.attachedData!==x1e||!i.range)return;const n=this._editor.getContribution(Fa.ID);if(n&&!n.isColorPickerVisible){const o=new z(i.range.startLineNumber,i.range.startColumn+1,i.range.endLineNumber,i.range.endColumn+1);n.showContentHover(o,1,0,!1,!0)}}};pae.ID="editor.contrib.colorContribution";let rY=pae;Wn(rY.ID,rY,2);aR.register(HL);var mye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},kW=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Aee,Zee,TQ;let DN=(TQ=class extends be{constructor(e,t,i){super(),this._editor=e,this._instantiationService=i,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=$.standaloneColorPickerVisible.bindTo(t),this._standaloneColorPickerFocused=$.standaloneColorPickerFocused.bindTo(t)}showOrFocus(){var e;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(e=this._standaloneColorPickerWidget)==null||e.focus():this._standaloneColorPickerWidget=this._instantiationService.createInstance(See,this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused))}hide(){var e;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(e=this._standaloneColorPickerWidget)==null||e.hide(),this._editor.focus()}insertColor(){var e;(e=this._standaloneColorPickerWidget)==null||e.updateEditor(),this.hide()}static get(e){return e.getContribution(Aee.ID)}},Aee=TQ,TQ.ID="editor.contrib.standaloneColorPickerController",TQ);DN=Aee=mye([kW(1,fi),kW(2,ti)],DN);Wn(DN.ID,DN,1);const e0e=8,Zft=22;var CQ;let See=(CQ=class extends be{constructor(e,t,i,n,o,r,l){var h;super(),this._editor=e,this._standaloneColorPickerVisible=t,this._standaloneColorPickerFocused=i,this._keybindingService=o,this._languageFeaturesService=r,this._editorWorkerService=l,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement("div"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new fe),this.onResult=this._onResult.event,this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=n.createInstance(KL,this._editor),this._position=(h=this._editor._getViewModel())==null?void 0:h.getPrimaryCursorState().modelState.position;const a=this._editor.getSelection(),d=a?{startLineNumber:a.startLineNumber,startColumn:a.startColumn,endLineNumber:a.endLineNumber,endColumn:a.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},c=this._register(ap(this._body));this._register(c.onDidBlur(u=>{this.hide()})),this._register(c.onDidFocus(u=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(u=>{var p;const m=(p=u.target.element)==null?void 0:p.classList;m&&m.contains("colorpicker-color-decoration")&&this.hide()})),this._register(this.onResult(u=>{this._render(u.value,u.foundInEditor)})),this._start(d),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return Zee.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const e=this._editor.getOption(60).above;return{position:this._position,secondaryPosition:this._position,preference:e?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}async _start(e){const t=await this._computeAsync(e);t&&this._onResult.fire(new Sft(t.result,t.foundInEditor))}async _computeAsync(e){if(!this._editor.hasModel())return null;const t={range:e,color:{red:0,green:0,blue:0,alpha:1}},i=await this._standaloneColorPickerParticipant.createColorHover(t,new PL(this._editorWorkerService),this._languageFeaturesService.colorProvider);return i?{result:i.colorHover,foundInEditor:i.foundInEditor}:null}_render(e,t){const i=document.createDocumentFragment(),n=this._register(new q5(this._keybindingService)),o={fragment:i,statusBar:n,onContentsChanged:()=>{},hide:()=>this.hide()};this._colorHover=e;const r=this._standaloneColorPickerParticipant.renderHoverParts(o,[e]);if(!r)return;this._register(r.disposables);const l=r.colorPicker;this._body.classList.add("standalone-colorpicker-body"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+"px",this._body.style.maxWidth=Math.max(this._editor.getLayoutInfo().width*.66,500)+"px",this._body.tabIndex=0,this._body.appendChild(i),l.layout();const a=l.body,d=a.saturationBox.domNode.clientWidth,c=a.domNode.clientWidth-d-Zft-e0e,h=l.body.enterButton;h==null||h.onClicked(()=>{this.updateEditor(),this.hide()});const u=l.header,m=u.pickedColorNode;m.style.width=d+e0e+"px";const p=u.originalColorNode;p.style.width=c+"px";const g=l.header.closeButton;g==null||g.onClicked(()=>{this.hide()}),t&&(h&&(h.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(e.range)),this._editor.layoutContentWidget(this)}},Zee=CQ,CQ.ID="editor.contrib.standaloneColorPickerWidget",CQ);See=Zee=mye([kW(3,ti),kW(4,qn),kW(5,xt),kW(6,Ld)],See);class Sft{constructor(e,t){this.value=e,this.foundInEditor=t}}class Nft extends Fp{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{...Ni("showOrFocusStandaloneColorPicker","Show or Focus Standalone Color Picker"),mnemonicTitle:F({key:"mishowOrFocusStandaloneColorPicker",comment:["&& denotes a mnemonic"]},"&&Show or Focus Standalone Color Picker")},precondition:void 0,menu:[{id:Gt.CommandPalette}],metadata:{description:Ni("showOrFocusStandaloneColorPickerDescription","Show or focus a standalone color picker which uses the default color provider. It displays hex/rgb/hsl colors.")}})}runEditorCommand(e,t){var i;(i=DN.get(t))==null||i.showOrFocus()}}class Rft extends Tt{constructor(){super({id:"editor.action.hideColorPicker",label:F({key:"hideColorPicker",comment:["Action that hides the color picker"]},"Hide the Color Picker"),alias:"Hide the Color Picker",precondition:$.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100},metadata:{description:Ni("hideColorPickerDescription","Hide the standalone color picker.")}})}run(e,t){var i;(i=DN.get(t))==null||i.hide()}}class Vft extends Tt{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:F({key:"insertColorWithStandaloneColorPicker",comment:["Action that inserts color with standalone color picker"]},"Insert Color with Standalone Color Picker"),alias:"Insert Color with Standalone Color Picker",precondition:$.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100},metadata:{description:Ni("insertColorWithStandaloneColorPickerDescription","Insert hex/rgb/hsl colors with the focused standalone color picker.")}})}run(e,t){var i;(i=DN.get(t))==null||i.insertColor()}}lt(Rft);lt(Vft);Cs(Nft);class tF{constructor(e,t,i){this.languageConfigurationService=i,this._selection=e,this._insertSpace=t,this._usedEndToken=null}static _haystackHasNeedleAtOffset(e,t,i){if(i<0)return!1;const n=t.length,o=e.length;if(i+n>o)return!1;for(let r=0;r<n;r++){const l=e.charCodeAt(i+r),a=t.charCodeAt(r);if(l!==a&&!(l>=65&&l<=90&&l+32===a)&&!(a>=65&&a<=90&&a+32===l))return!1}return!0}_createOperationsForBlockComment(e,t,i,n,o,r){const l=e.startLineNumber,a=e.startColumn,d=e.endLineNumber,c=e.endColumn,h=o.getLineContent(l),u=o.getLineContent(d);let m=h.lastIndexOf(t,a-1+t.length),p=u.indexOf(i,c-1-i.length);if(m!==-1&&p!==-1)if(l===d)h.substring(m+t.length,p).indexOf(i)>=0&&(m=-1,p=-1);else{const f=h.substring(m+t.length),b=u.substring(0,p);(f.indexOf(i)>=0||b.indexOf(i)>=0)&&(m=-1,p=-1)}let g;m!==-1&&p!==-1?(n&&m+t.length<h.length&&h.charCodeAt(m+t.length)===32&&(t=t+" "),n&&p>0&&u.charCodeAt(p-1)===32&&(i=" "+i,p-=1),g=tF._createRemoveBlockCommentOperations(new z(l,m+t.length+1,d,p+1),t,i)):(g=tF._createAddBlockCommentOperations(e,t,i,this._insertSpace),this._usedEndToken=g.length===1?i:null);for(const f of g)r.addTrackedEditOperation(f.range,f.text)}static _createRemoveBlockCommentOperations(e,t,i){const n=[];return z.isEmpty(e)?n.push(mo.delete(new z(e.startLineNumber,e.startColumn-t.length,e.endLineNumber,e.endColumn+i.length))):(n.push(mo.delete(new z(e.startLineNumber,e.startColumn-t.length,e.startLineNumber,e.startColumn))),n.push(mo.delete(new z(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn+i.length)))),n}static _createAddBlockCommentOperations(e,t,i,n){const o=[];return z.isEmpty(e)?o.push(mo.replace(new z(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),t+" "+i)):(o.push(mo.insert(new ge(e.startLineNumber,e.startColumn),t+(n?" ":""))),o.push(mo.insert(new ge(e.endLineNumber,e.endColumn),(n?" ":"")+i))),o}getEditOperations(e,t){const i=this._selection.startLineNumber,n=this._selection.startColumn;e.tokenization.tokenizeIfCheap(i);const o=e.getLanguageIdAtPosition(i,n),r=this.languageConfigurationService.getLanguageConfiguration(o).comments;!r||!r.blockCommentStartToken||!r.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,r.blockCommentStartToken,r.blockCommentEndToken,this._insertSpace,e,t)}computeCursorState(e,t){const i=t.getInverseEditOperations();if(i.length===2){const n=i[0],o=i[1];return new _t(n.range.endLineNumber,n.range.endColumn,o.range.startLineNumber,o.range.startColumn)}else{const n=i[0].range,o=this._usedEndToken?-this._usedEndToken.length-1:0;return new _t(n.endLineNumber,n.endColumn+o,n.endLineNumber,n.endColumn+o)}}}class J0{constructor(e,t,i,n,o,r,l){this.languageConfigurationService=e,this._selection=t,this._indentSize=i,this._type=n,this._insertSpace=o,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=r,this._ignoreFirstLine=l||!1}static _gatherPreflightCommentStrings(e,t,i,n){e.tokenization.tokenizeIfCheap(t);const o=e.getLanguageIdAtPosition(t,1),r=n.getLanguageConfiguration(o).comments,l=r?r.lineCommentToken:null;if(!l)return null;const a=[];for(let d=0,c=i-t+1;d<c;d++)a[d]={ignore:!1,commentStr:l,commentStrOffset:0,commentStrLength:l.length};return a}static _analyzeLines(e,t,i,n,o,r,l,a){let d=!0,c;e===0?c=!0:e===1?c=!1:c=!0;for(let h=0,u=n.length;h<u;h++){const m=n[h],p=o+h;if(p===o&&l){m.ignore=!0;continue}const g=i.getLineContent(p),f=Ua(g);if(f===-1){m.ignore=r,m.commentStrOffset=g.length;continue}if(d=!1,m.ignore=!1,m.commentStrOffset=f,c&&!tF._haystackHasNeedleAtOffset(g,m.commentStr,f)&&(e===0?c=!1:e===1||(m.ignore=!0)),c&&t){const b=f+m.commentStrLength;b<g.length&&g.charCodeAt(b)===32&&(m.commentStrLength+=1)}}if(e===0&&d){c=!1;for(let h=0,u=n.length;h<u;h++)n[h].ignore=!1}return{supported:!0,shouldRemoveComments:c,lines:n}}static _gatherPreflightData(e,t,i,n,o,r,l,a){const d=J0._gatherPreflightCommentStrings(i,n,o,a);return d===null?{supported:!1}:J0._analyzeLines(e,t,i,d,n,r,l,a)}_executeLineComments(e,t,i,n){let o;i.shouldRemoveComments?o=J0._createRemoveLineCommentsOperations(i.lines,n.startLineNumber):(J0._normalizeInsertionPoint(e,i.lines,n.startLineNumber,this._indentSize),o=this._createAddLineCommentsOperations(i.lines,n.startLineNumber));const r=new ge(n.positionLineNumber,n.positionColumn);for(let l=0,a=o.length;l<a;l++)t.addEditOperation(o[l].range,o[l].text),z.isEmpty(o[l].range)&&z.getStartPosition(o[l].range).equals(r)&&e.getLineContent(r.lineNumber).length+1===r.column&&(this._deltaColumn=(o[l].text||"").length);this._selectionId=t.trackSelection(n)}_attemptRemoveBlockComment(e,t,i,n){let o=t.startLineNumber,r=t.endLineNumber;const l=n.length+Math.max(e.getLineFirstNonWhitespaceColumn(t.startLineNumber),t.startColumn);let a=e.getLineContent(o).lastIndexOf(i,l-1),d=e.getLineContent(r).indexOf(n,t.endColumn-1-i.length);return a!==-1&&d===-1&&(d=e.getLineContent(o).indexOf(n,a+i.length),r=o),a===-1&&d!==-1&&(a=e.getLineContent(r).lastIndexOf(i,d),o=r),t.isEmpty()&&(a===-1||d===-1)&&(a=e.getLineContent(o).indexOf(i),a!==-1&&(d=e.getLineContent(o).indexOf(n,a+i.length))),a!==-1&&e.getLineContent(o).charCodeAt(a+i.length)===32&&(i+=" "),d!==-1&&e.getLineContent(r).charCodeAt(d-1)===32&&(n=" "+n,d-=1),a!==-1&&d!==-1?tF._createRemoveBlockCommentOperations(new z(o,a+i.length+1,r,d+1),i,n):null}_executeBlockComment(e,t,i){e.tokenization.tokenizeIfCheap(i.startLineNumber);const n=e.getLanguageIdAtPosition(i.startLineNumber,1),o=this.languageConfigurationService.getLanguageConfiguration(n).comments;if(!o||!o.blockCommentStartToken||!o.blockCommentEndToken)return;const r=o.blockCommentStartToken,l=o.blockCommentEndToken;let a=this._attemptRemoveBlockComment(e,i,r,l);if(!a){if(i.isEmpty()){const d=e.getLineContent(i.startLineNumber);let c=Ua(d);c===-1&&(c=d.length),a=tF._createAddBlockCommentOperations(new z(i.startLineNumber,c+1,i.startLineNumber,d.length+1),r,l,this._insertSpace)}else a=tF._createAddBlockCommentOperations(new z(i.startLineNumber,e.getLineFirstNonWhitespaceColumn(i.startLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),r,l,this._insertSpace);a.length===1&&(this._deltaColumn=r.length+1)}this._selectionId=t.trackSelection(i);for(const d of a)t.addEditOperation(d.range,d.text)}getEditOperations(e,t){let i=this._selection;if(this._moveEndPositionDown=!1,i.startLineNumber===i.endLineNumber&&this._ignoreFirstLine){t.addEditOperation(new z(i.startLineNumber,e.getLineMaxColumn(i.startLineNumber),i.startLineNumber+1,1),i.startLineNumber===e.getLineCount()?"":`
- `),this._selectionId=t.trackSelection(i);return}i.startLineNumber<i.endLineNumber&&i.endColumn===1&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const n=J0._gatherPreflightData(this._type,this._insertSpace,e,i.startLineNumber,i.endLineNumber,this._ignoreEmptyLines,this._ignoreFirstLine,this.languageConfigurationService);return n.supported?this._executeLineComments(e,t,n,i):this._executeBlockComment(e,t,i)}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),new _t(i.selectionStartLineNumber,i.selectionStartColumn+this._deltaColumn,i.positionLineNumber,i.positionColumn+this._deltaColumn)}static _createRemoveLineCommentsOperations(e,t){const i=[];for(let n=0,o=e.length;n<o;n++){const r=e[n];r.ignore||i.push(mo.delete(new z(t+n,r.commentStrOffset+1,t+n,r.commentStrOffset+r.commentStrLength+1)))}return i}_createAddLineCommentsOperations(e,t){const i=[],n=this._insertSpace?" ":"";for(let o=0,r=e.length;o<r;o++){const l=e[o];l.ignore||i.push(mo.insert(new ge(t+o,l.commentStrOffset+1),l.commentStr+n))}return i}static nextVisibleColumn(e,t,i,n){return i?e+(t-e%t):e+n}static _normalizeInsertionPoint(e,t,i,n){let o=1073741824,r,l;for(let a=0,d=t.length;a<d;a++){if(t[a].ignore)continue;const c=e.getLineContent(i+a);let h=0;for(let u=0,m=t[a].commentStrOffset;h<o&&u<m;u++)h=J0.nextVisibleColumn(h,n,c.charCodeAt(u)===9,1);h<o&&(o=h)}o=Math.floor(o/n)*n;for(let a=0,d=t.length;a<d;a++){if(t[a].ignore)continue;const c=e.getLineContent(i+a);let h=0;for(r=0,l=t[a].commentStrOffset;h<o&&r<l;r++)h=J0.nextVisibleColumn(h,n,c.charCodeAt(r)===9,1);h>o?t[a].commentStrOffset=r-1:t[a].commentStrOffset=r}}}class Nle extends Tt{constructor(e,t){super(t),this._type=e}run(e,t){const i=e.get(bo);if(!t.hasModel())return;const n=t.getModel(),o=[],r=n.getOptions(),l=t.getOption(23),a=t.getSelections().map((c,h)=>({selection:c,index:h,ignoreFirstLine:!1}));a.sort((c,h)=>z.compareRangesUsingStarts(c.selection,h.selection));let d=a[0];for(let c=1;c<a.length;c++){const h=a[c];d.selection.endLineNumber===h.selection.startLineNumber&&(d.index<h.index?h.ignoreFirstLine=!0:(d.ignoreFirstLine=!0,d=h))}for(const c of a)o.push(new J0(i,c.selection,r.indentSize,this._type,l.insertSpace,l.ignoreEmptyLines,c.ignoreFirstLine));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class Wft extends Nle{constructor(){super(0,{id:"editor.action.commentLine",label:F("comment.line","Toggle Line Comment"),alias:"Toggle Line Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2138,weight:100},menuOpts:{menuId:Gt.MenubarEditMenu,group:"5_insert",title:F({key:"miToggleLineComment",comment:["&& denotes a mnemonic"]},"&&Toggle Line Comment"),order:1}})}}class yft extends Nle{constructor(){super(1,{id:"editor.action.addCommentLine",label:F("comment.line.add","Add Line Comment"),alias:"Add Line Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2081),weight:100}})}}class Qft extends Nle{constructor(){super(2,{id:"editor.action.removeCommentLine",label:F("comment.line.remove","Remove Line Comment"),alias:"Remove Line Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2099),weight:100}})}}class Mft extends Tt{constructor(){super({id:"editor.action.blockComment",label:F("comment.block","Toggle Block Comment"),alias:"Toggle Block Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:1567,linux:{primary:3103},weight:100},menuOpts:{menuId:Gt.MenubarEditMenu,group:"5_insert",title:F({key:"miToggleBlockComment",comment:["&& denotes a mnemonic"]},"Toggle &&Block Comment"),order:2}})}run(e,t){const i=e.get(bo);if(!t.hasModel())return;const n=t.getOption(23),o=[],r=t.getSelections();for(const l of r)o.push(new tF(l,n.insertSpace,i));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}lt(Wft);lt(yft);lt(Qft);lt(Mft);var wft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},CA=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Nee,BQ;let qy=(BQ=class{static get(e){return e.getContribution(Nee.ID)}constructor(e,t,i,n,o,r,l,a){this._contextMenuService=t,this._contextViewService=i,this._contextKeyService=n,this._keybindingService=o,this._menuService=r,this._configurationService=l,this._workspaceContextService=a,this._toDispose=new De,this._contextMenuIsBeingShownCount=0,this._editor=e,this._toDispose.add(this._editor.onContextMenu(d=>this._onContextMenu(d))),this._toDispose.add(this._editor.onMouseWheel(d=>{if(this._contextMenuIsBeingShownCount>0){const c=this._contextViewService.getContextViewElement(),h=d.srcElement;h.shadowRoot&&AN(c)===h.shadowRoot||this._contextViewService.hideContextView()}})),this._toDispose.add(this._editor.onKeyDown(d=>{this._editor.getOption(24)&&d.keyCode===58&&(d.preventDefault(),d.stopPropagation(),this.showContextMenu())}))}_onContextMenu(e){if(!this._editor.hasModel())return;if(!this._editor.getOption(24)){this._editor.focus(),e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position);return}if(e.target.type===12||e.target.type===6&&e.target.detail.injectedText)return;if(e.event.preventDefault(),e.event.stopPropagation(),e.target.type===11)return this._showScrollbarContextMenu(e.event);if(e.target.type!==6&&e.target.type!==7&&e.target.type!==1)return;if(this._editor.focus(),e.target.position){let i=!1;for(const n of this._editor.getSelections())if(n.containsPosition(e.target.position)){i=!0;break}i||this._editor.setPosition(e.target.position)}let t=null;e.target.type!==1&&(t=e.event),this.showContextMenu(t)}showContextMenu(e){if(!this._editor.getOption(24)||!this._editor.hasModel())return;const t=this._getMenuActions(this._editor.getModel(),this._editor.contextMenuId);t.length>0&&this._doShowContextMenu(t,e)}_getMenuActions(e,t){const i=[],n=this._menuService.getMenuActions(t,this._contextKeyService,{arg:e.uri});for(const o of n){const[,r]=o;let l=0;for(const a of r)if(a instanceof T1){const d=this._getMenuActions(e,a.item.submenu);d.length>0&&(i.push(new Ry(a.id,a.label,d)),l++)}else i.push(a),l++;l&&i.push(new Br)}return i.length&&i.pop(),i}_doShowContextMenu(e,t=null){if(!this._editor.hasModel())return;const i=this._editor.getOption(60);this._editor.updateOptions({hover:{enabled:!1}});let n=t;if(!n){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const r=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),l=Lo(this._editor.getDomNode()),a=l.left+r.left,d=l.top+r.top+r.height;n={x:a,y:d}}const o=this._editor.getOption(128)&&!lp;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:o?this._editor.getOverflowWidgetsDomNode()??this._editor.getDomNode():void 0,getAnchor:()=>n,getActions:()=>e,getActionViewItem:r=>{const l=this._keybindingFor(r);if(l)return new Iy(r,r,{label:!0,keybinding:l.getLabel(),isMenu:!0});const a=r;return typeof a.getActionViewItem=="function"?a.getActionViewItem():new Iy(r,r,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:r=>this._keybindingFor(r),onHide:r=>{this._contextMenuIsBeingShownCount--,this._editor.updateOptions({hover:i})}})}_showScrollbarContextMenu(e){if(!this._editor.hasModel()||Bet(this._workspaceContextService.getWorkspace()))return;const t=this._editor.getOption(73);let i=0;const n=d=>({id:`menu-action-${++i}`,label:d.label,tooltip:"",class:void 0,enabled:typeof d.enabled>"u"?!0:d.enabled,checked:d.checked,run:d.run}),o=(d,c)=>new Ry(`menu-action-${++i}`,d,c,void 0),r=(d,c,h,u,m)=>{if(!c)return n({label:d,enabled:c,run:()=>{}});const p=f=>()=>{this._configurationService.updateValue(h,f)},g=[];for(const f of m)g.push(n({label:f.label,checked:u===f.value,run:p(f.value)}));return o(d,g)},l=[];l.push(n({label:F("context.minimap.minimap","Minimap"),checked:t.enabled,run:()=>{this._configurationService.updateValue("editor.minimap.enabled",!t.enabled)}})),l.push(new Br),l.push(n({label:F("context.minimap.renderCharacters","Render Characters"),enabled:t.enabled,checked:t.renderCharacters,run:()=>{this._configurationService.updateValue("editor.minimap.renderCharacters",!t.renderCharacters)}})),l.push(r(F("context.minimap.size","Vertical size"),t.enabled,"editor.minimap.size",t.size,[{label:F("context.minimap.size.proportional","Proportional"),value:"proportional"},{label:F("context.minimap.size.fill","Fill"),value:"fill"},{label:F("context.minimap.size.fit","Fit"),value:"fit"}])),l.push(r(F("context.minimap.slider","Slider"),t.enabled,"editor.minimap.showSlider",t.showSlider,[{label:F("context.minimap.slider.mouseover","Mouse Over"),value:"mouseover"},{label:F("context.minimap.slider.always","Always"),value:"always"}]));const a=this._editor.getOption(128)&&!lp;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:a?this._editor.getDomNode():void 0,getAnchor:()=>e,getActions:()=>l,onHide:d=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(e){return this._keybindingService.lookupKeybinding(e.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}},Nee=BQ,BQ.ID="editor.contrib.contextmenu",BQ);qy=Nee=wft([CA(1,Uc),CA(2,ab),CA(3,fi),CA(4,qn),CA(5,ah),CA(6,Hi),CA(7,WN)],qy);class Tft extends Tt{constructor(){super({id:"editor.action.showContextMenu",label:F("action.showContextMenu.label","Show Editor Context Menu"),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:1092,weight:100}})}run(e,t){var i;(i=qy.get(t))==null||i.showContextMenu()}}Wn(qy.ID,qy,2);lt(Tft);class mH{constructor(e){this.selections=e}equals(e){const t=this.selections.length,i=e.selections.length;if(t!==i)return!1;for(let n=0;n<t;n++)if(!this.selections[n].equalsSelection(e.selections[n]))return!1;return!0}}class pH{constructor(e,t,i){this.cursorState=e,this.scrollTop=t,this.scrollLeft=i}}const Zz=class Zz extends be{static get(e){return e.getContribution(Zz.ID)}constructor(e){super(),this._editor=e,this._isCursorUndoRedo=!1,this._undoStack=[],this._redoStack=[],this._register(e.onDidChangeModel(t=>{this._undoStack=[],this._redoStack=[]})),this._register(e.onDidChangeModelContent(t=>{this._undoStack=[],this._redoStack=[]})),this._register(e.onDidChangeCursorSelection(t=>{if(this._isCursorUndoRedo||!t.oldSelections||t.oldModelVersionId!==t.modelVersionId)return;const i=new mH(t.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(i)||(this._undoStack.push(new pH(i,e.getScrollTop(),e.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())}))}cursorUndo(){!this._editor.hasModel()||this._undoStack.length===0||(this._redoStack.push(new pH(new mH(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){!this._editor.hasModel()||this._redoStack.length===0||(this._undoStack.push(new pH(new mH(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(e){this._isCursorUndoRedo=!0,this._editor.setSelections(e.cursorState.selections),this._editor.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}),this._isCursorUndoRedo=!1}};Zz.ID="editor.contrib.cursorUndoRedoController";let $y=Zz;class Cft extends Tt{constructor(){super({id:"cursorUndo",label:F("cursor.undo","Cursor Undo"),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:2099,weight:100}})}run(e,t,i){var n;(n=$y.get(t))==null||n.cursorUndo()}}class Bft extends Tt{constructor(){super({id:"cursorRedo",label:F("cursor.redo","Cursor Redo"),alias:"Cursor Redo",precondition:void 0})}run(e,t,i){var n;(n=$y.get(t))==null||n.cursorRedo()}}Wn($y.ID,$y,0);lt(Cft);lt(Bft);class Lft{constructor(e,t,i){this.selection=e,this.targetPosition=t,this.copy=i,this.targetSelection=null}getEditOperations(e,t){const i=e.getValueInRange(this.selection);if(this.copy||t.addEditOperation(this.selection,null),t.addEditOperation(new z(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),i),this.selection.containsPosition(this.targetPosition)&&!(this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition)))){this.targetSelection=this.selection;return}if(this.copy){this.targetSelection=new _t(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber>this.selection.endLineNumber){this.targetSelection=new _t(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber<this.selection.endLineNumber){this.targetSelection=new _t(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber+this.selection.endLineNumber-this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}this.selection.endColumn<=this.targetPosition.column?this.targetSelection=new _t(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column-this.selection.endColumn+this.selection.startColumn:this.targetPosition.column-this.selection.endColumn+this.selection.startColumn,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column:this.selection.endColumn):this.targetSelection=new _t(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column+this.selection.endColumn-this.selection.startColumn)}computeCursorState(e,t){return this.targetSelection}}function PR(s){return hn?s.altKey:s.ctrlKey}const UU=class UU extends be{constructor(e){super(),this._editor=e,this._dndDecorationIds=this._editor.createDecorationsCollection(),this._register(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._register(this._editor.onMouseUp(t=>this._onEditorMouseUp(t))),this._register(this._editor.onMouseDrag(t=>this._onEditorMouseDrag(t))),this._register(this._editor.onMouseDrop(t=>this._onEditorMouseDrop(t))),this._register(this._editor.onMouseDropCanceled(()=>this._onEditorMouseDropCanceled())),this._register(this._editor.onKeyDown(t=>this.onEditorKeyDown(t))),this._register(this._editor.onKeyUp(t=>this.onEditorKeyUp(t))),this._register(this._editor.onDidBlurEditorWidget(()=>this.onEditorBlur())),this._register(this._editor.onDidBlurEditorText(()=>this.onEditorBlur())),this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(e){!this._editor.getOption(35)||this._editor.getOption(22)||(PR(e)&&(this._modifierPressed=!0),this._mouseDown&&PR(e)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(e){!this._editor.getOption(35)||this._editor.getOption(22)||(PR(e)&&(this._modifierPressed=!1),this._mouseDown&&e.keyCode===UU.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(e){this._mouseDown=!0}_onEditorMouseUp(e){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(e){const t=e.target;if(this._dragSelection===null){const n=(this._editor.getSelections()||[]).filter(o=>t.position&&o.containsPosition(t.position));if(n.length===1)this._dragSelection=n[0];else return}PR(e.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}_onEditorMouseDropCanceled(){this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}_onEditorMouseDrop(e){if(e.target&&(this._hitContent(e.target)||this._hitMargin(e.target))&&e.target.position){const t=new ge(e.target.position.lineNumber,e.target.position.column);if(this._dragSelection===null){let i=null;if(e.event.shiftKey){const n=this._editor.getSelection();if(n){const{selectionStartLineNumber:o,selectionStartColumn:r}=n;i=[new _t(o,r,t.lineNumber,t.column)]}}else i=(this._editor.getSelections()||[]).map(n=>n.containsPosition(t)?new _t(t.lineNumber,t.column,t.lineNumber,t.column):n);this._editor.setSelections(i||[],"mouse",3)}else(!this._dragSelection.containsPosition(t)||(PR(e.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(UU.ID,new Lft(this._dragSelection,t,PR(e.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(e){this._dndDecorationIds.set([{range:new z(e.lineNumber,e.column,e.lineNumber,e.column),options:UU._DECORATION_OPTIONS}]),this._editor.revealPosition(e,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(e){return e.type===6||e.type===7}_hitMargin(e){return e.type===2||e.type===3||e.type===4}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}};UU.ID="editor.contrib.dragAndDrop",UU.TRIGGER_KEY_VALUE=hn?6:5,UU._DECORATION_OPTIONS=ki.register({description:"dnd-target",className:"dnd-target"});let lY=UU;Wn(lY.ID,lY,2);Wn(ib.ID,ib,0);QM(I$);Vt(new class extends Nr{constructor(){super({id:f1e,precondition:dle,kbOpts:{weight:100,primary:2137}})}runEditorCommand(s,e){var t;return(t=ib.get(e))==null?void 0:t.changePasteType()}});Vt(new class extends Nr{constructor(){super({id:"editor.hidePasteWidget",precondition:dle,kbOpts:{weight:100,primary:9}})}runEditorCommand(s,e){var t;(t=ib.get(e))==null||t.clearWidgets()}});var LQ;lt((LQ=class extends Tt{constructor(){super({id:"editor.action.pasteAs",label:F("pasteAs","Paste As..."),alias:"Paste As...",precondition:$.writable,metadata:{description:"Paste as",args:[{name:"args",schema:LQ.argsSchema}]}})}run(e,t,i){var o;let n=typeof(i==null?void 0:i.kind)=="string"?i.kind:void 0;return!n&&i&&(n=typeof i.id=="string"?i.id:void 0),(o=ib.get(t))==null?void 0:o.pasteAs(n?new ro(n):void 0)}},LQ.argsSchema={type:"object",properties:{kind:{type:"string",description:F("pasteAs.kind","The kind of the paste edit to try applying. If not provided or there are multiple edits for this kind, the editor will show a picker.")}}},LQ));lt(class extends Tt{constructor(){super({id:"editor.action.pasteAsText",label:F("pasteAsText","Paste as Text"),alias:"Paste as Text",precondition:$.writable})}run(s,e){var t;return(t=ib.get(e))==null?void 0:t.pasteAs({providerId:BN.id})}});class vft{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(e){if(e&&this._dragOperations.has(e)){const t=this._dragOperations.get(e);return this._dragOperations.delete(e),t}}}class t0e{constructor(e){this.identifier=e}}const pye=un("treeViewsDndService");Fn(pye,vft,1);var kft=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},CI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Ree;const gye="editor.experimental.dropIntoEditor.defaultProvider",fye="editor.changeDropType",Rle=new yt("dropWidgetVisible",!1,F("dropWidgetVisible","Whether the drop widget is showing"));var vQ;let eQ=(vQ=class extends be{static get(e){return e.getContribution(Ree.ID)}constructor(e,t,i,n,o){super(),this._configService=i,this._languageFeaturesService=n,this._treeViewsDragAndDropService=o,this.treeItemsTransfer=k$.getInstance(),this._dropProgressManager=this._register(t.createInstance(j5,"dropIntoEditor",e)),this._postDropWidgetManager=this._register(t.createInstance(H5,"dropIntoEditor",e,Rle,{id:fye,label:F("postDropWidgetTitle","Show drop options...")})),this._register(e.onDropIntoEditor(r=>this.onDropIntoEditor(e,r.position,r.event)))}clearWidgets(){this._postDropWidgetManager.clear()}changeDropType(){this._postDropWidgetManager.tryShowSelector()}async onDropIntoEditor(e,t,i){var o;if(!i.dataTransfer||!e.hasModel())return;(o=this._currentOperation)==null||o.cancel(),e.focus(),e.setPosition(t);const n=Tr(async r=>{const l=new De,a=l.add(new _F(e,1,void 0,r));try{const d=await this.extractDataTransferData(i);if(d.size===0||a.token.isCancellationRequested)return;const c=e.getModel();if(!c)return;const h=this._languageFeaturesService.documentDropEditProvider.ordered(c).filter(m=>m.dropMimeTypes?m.dropMimeTypes.some(p=>d.matches(p)):!0),u=l.add(await this.getDropEdits(h,c,t,d,a));if(a.token.isCancellationRequested)return;if(u.edits.length){const m=this.getInitialActiveEditIndex(c,u.edits),p=e.getOption(36).showDropSelector==="afterDrop";await this._postDropWidgetManager.applyEditAndShowIfNeeded([z.fromPositions(t)],{activeEditIndex:m,allEdits:u.edits},p,async g=>g,r)}}finally{l.dispose(),this._currentOperation===n&&(this._currentOperation=void 0)}});this._dropProgressManager.showWhile(t,F("dropIntoEditorProgress","Running drop handlers. Click to cancel"),n,{cancel:()=>n.cancel()}),this._currentOperation=n}async getDropEdits(e,t,i,n,o){const r=new De,l=await Pv(Promise.all(e.map(async d=>{try{const c=await d.provideDocumentDropEdits(t,i,n,o.token);return c&&r.add(c),c==null?void 0:c.edits.map(h=>({...h,providerId:d.id}))}catch(c){console.error(c)}})),o.token),a=Hu(l??[]).flat();return{edits:p1e(a),dispose:()=>r.dispose()}}getInitialActiveEditIndex(e,t){const i=this._configService.getValue(gye,{resource:e.uri});for(const[n,o]of Object.entries(i)){const r=new ro(o),l=t.findIndex(a=>r.value===a.providerId&&a.handledMimeType&&r1e(n,[a.handledMimeType]));if(l>=0)return l}return 0}async extractDataTransferData(e){if(!e.dataTransfer)return new o1e;const t=d1e(e.dataTransfer);if(this.treeItemsTransfer.hasData(t0e.prototype)){const i=this.treeItemsTransfer.getData(t0e.prototype);if(Array.isArray(i))for(const n of i){const o=await this._treeViewsDragAndDropService.removeDragOperationTransfer(n.identifier);if(o)for(const[r,l]of o)t.replace(r,l)}}return t}},Ree=vQ,vQ.ID="editor.contrib.dropIntoEditorController",vQ);eQ=Ree=kft([CI(1,ti),CI(2,Hi),CI(3,xt),CI(4,pye)],eQ);Wn(eQ.ID,eQ,2);QM(x$);Vt(new class extends Nr{constructor(){super({id:fye,precondition:Rle,kbOpts:{weight:100,primary:2137}})}runEditorCommand(s,e,t){var i;(i=eQ.get(e))==null||i.changeDropType()}});Vt(new class extends Nr{constructor(){super({id:"editor.hideDropWidget",precondition:Rle,kbOpts:{weight:100,primary:9}})}runEditorCommand(s,e,t){var i;(i=eQ.get(e))==null||i.clearWidgets()}});fo.as(rm.Configuration).registerConfiguration({...sk,properties:{[gye]:{type:"object",scope:5,description:F("defaultProviderDescription","Configures the default drop provider to use for content of a given mime type."),default:{},additionalProperties:{type:"string"}}}});const la=class la{constructor(e){this._editor=e,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const e=this._findScopeDecorationIds.map(t=>this._editor.getModel().getDecorationRange(t)).filter(t=>!!t);if(e.length)return e}return null}getStartPosition(){return this._startPosition}setStartPosition(e){this._startPosition=e,this.setCurrentFindMatch(null)}_getDecorationIndex(e){const t=this._decorations.indexOf(e);return t>=0?t+1:1}getDecorationRangeAt(e){const t=e<this._decorations.length?this._decorations[e]:null;return t?this._editor.getModel().getDecorationRange(t):null}getCurrentMatchesPosition(e){const t=this._editor.getModel().getDecorationsInRange(e);for(const i of t){const n=i.options;if(n===la._FIND_MATCH_DECORATION||n===la._CURRENT_FIND_MATCH_DECORATION)return this._getDecorationIndex(i.id)}return 0}setCurrentFindMatch(e){let t=null,i=0;if(e)for(let n=0,o=this._decorations.length;n<o;n++){const r=this._editor.getModel().getDecorationRange(this._decorations[n]);if(e.equalsRange(r)){t=this._decorations[n],i=n+1;break}}return(this._highlightedDecorationId!==null||t!==null)&&this._editor.changeDecorations(n=>{if(this._highlightedDecorationId!==null&&(n.changeDecorationOptions(this._highlightedDecorationId,la._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),t!==null&&(this._highlightedDecorationId=t,n.changeDecorationOptions(this._highlightedDecorationId,la._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(n.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),t!==null){let o=this._editor.getModel().getDecorationRange(t);if(o.startLineNumber!==o.endLineNumber&&o.endColumn===1){const r=o.endLineNumber-1,l=this._editor.getModel().getLineMaxColumn(r);o=new z(o.startLineNumber,o.startColumn,r,l)}this._rangeHighlightDecorationId=n.addDecoration(o,la._RANGE_HIGHLIGHT_DECORATION)}}),i}set(e,t){this._editor.changeDecorations(i=>{let n=la._FIND_MATCH_DECORATION;const o=[];if(e.length>1e3){n=la._FIND_MATCH_NO_OVERVIEW_DECORATION;const l=this._editor.getModel().getLineCount(),d=this._editor.getLayoutInfo().height/l,c=Math.max(2,Math.ceil(3/d));let h=e[0].range.startLineNumber,u=e[0].range.endLineNumber;for(let m=1,p=e.length;m<p;m++){const g=e[m].range;u+c>=g.startLineNumber?g.endLineNumber>u&&(u=g.endLineNumber):(o.push({range:new z(h,1,u,1),options:la._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),h=g.startLineNumber,u=g.endLineNumber)}o.push({range:new z(h,1,u,1),options:la._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const r=new Array(e.length);for(let l=0,a=e.length;l<a;l++)r[l]={range:e[l].range,options:n};this._decorations=i.deltaDecorations(this._decorations,r),this._overviewRulerApproximateDecorations=i.deltaDecorations(this._overviewRulerApproximateDecorations,o),this._rangeHighlightDecorationId&&(i.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),this._findScopeDecorationIds.length&&(this._findScopeDecorationIds.forEach(l=>i.removeDecoration(l)),this._findScopeDecorationIds=[]),t!=null&&t.length&&(this._findScopeDecorationIds=t.map(l=>i.addDecoration(l,la._FIND_SCOPE_DECORATION)))})}matchBeforePosition(e){if(this._decorations.length===0)return null;for(let t=this._decorations.length-1;t>=0;t--){const i=this._decorations[t],n=this._editor.getModel().getDecorationRange(i);if(!(!n||n.endLineNumber>e.lineNumber)){if(n.endLineNumber<e.lineNumber)return n;if(!(n.endColumn>e.column))return n}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(e){if(this._decorations.length===0)return null;for(let t=0,i=this._decorations.length;t<i;t++){const n=this._decorations[t],o=this._editor.getModel().getDecorationRange(n);if(!(!o||o.startLineNumber<e.lineNumber)){if(o.startLineNumber>e.lineNumber)return o;if(!(o.startColumn<e.column))return o}}return this._editor.getModel().getDecorationRange(this._decorations[0])}_allDecorations(){let e=[];return e=e.concat(this._decorations),e=e.concat(this._overviewRulerApproximateDecorations),this._findScopeDecorationIds.length&&e.push(...this._findScopeDecorationIds),this._rangeHighlightDecorationId&&e.push(this._rangeHighlightDecorationId),e}};la._CURRENT_FIND_MATCH_DECORATION=ki.register({description:"current-find-match",stickiness:1,zIndex:13,className:"currentFindMatch",inlineClassName:"currentFindMatchInline",showIfCollapsed:!0,overviewRuler:{color:Vo(cP),position:eh.Center},minimap:{color:Vo(H8),position:1}}),la._FIND_MATCH_DECORATION=ki.register({description:"find-match",stickiness:1,zIndex:10,className:"findMatch",inlineClassName:"findMatchInline",showIfCollapsed:!0,overviewRuler:{color:Vo(cP),position:eh.Center},minimap:{color:Vo(H8),position:1}}),la._FIND_MATCH_NO_OVERVIEW_DECORATION=ki.register({description:"find-match-no-overview",stickiness:1,className:"findMatch",showIfCollapsed:!0}),la._FIND_MATCH_ONLY_OVERVIEW_DECORATION=ki.register({description:"find-match-only-overview",stickiness:1,overviewRuler:{color:Vo(cP),position:eh.Center}}),la._RANGE_HIGHLIGHT_DECORATION=ki.register({description:"find-range-highlight",stickiness:1,className:"rangeHighlight",isWholeLine:!0}),la._FIND_SCOPE_DECORATION=ki.register({description:"find-scope",className:"findScope",isWholeLine:!0});let Vee=la;class xft{constructor(e,t,i){this._editorSelection=e,this._ranges=t,this._replaceStrings=i,this._trackedEditorSelectionId=null}getEditOperations(e,t){if(this._ranges.length>0){const i=[];for(let r=0;r<this._ranges.length;r++)i.push({range:this._ranges[r],text:this._replaceStrings[r]});i.sort((r,l)=>z.compareRangesUsingStarts(r.range,l.range));const n=[];let o=i[0];for(let r=1;r<i.length;r++)o.range.endLineNumber===i[r].range.startLineNumber&&o.range.endColumn===i[r].range.startColumn?(o.range=o.range.plusRange(i[r].range),o.text=o.text+i[r].text):(n.push(o),o=i[r]);n.push(o);for(const r of n)t.addEditOperation(r.range,r.text)}this._trackedEditorSelectionId=t.trackSelection(this._editorSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._trackedEditorSelectionId)}}function bye(s,e){if(s&&s[0]!==""){const t=i0e(s,e,"-"),i=i0e(s,e,"_");return t&&!i?n0e(s,e,"-"):!t&&i?n0e(s,e,"_"):s[0].toUpperCase()===s[0]?e.toUpperCase():s[0].toLowerCase()===s[0]?e.toLowerCase():IPe(s[0][0])&&e.length>0?e[0].toUpperCase()+e.substr(1):s[0][0].toUpperCase()!==s[0][0]&&e.length>0?e[0].toLowerCase()+e.substr(1):e}else return e}function i0e(s,e,t){return s[0].indexOf(t)!==-1&&e.indexOf(t)!==-1&&s[0].split(t).length===e.split(t).length}function n0e(s,e,t){const i=e.split(t),n=s[0].split(t);let o="";return i.forEach((r,l)=>{o+=bye([n[l]],r)+t}),o.slice(0,-1)}class s0e{constructor(e){this.staticValue=e,this.kind=0}}class Ift{constructor(e){this.pieces=e,this.kind=1}}class tQ{static fromStaticValue(e){return new tQ([OS.staticValue(e)])}get hasReplacementPatterns(){return this._state.kind===1}constructor(e){!e||e.length===0?this._state=new s0e(""):e.length===1&&e[0].staticValue!==null?this._state=new s0e(e[0].staticValue):this._state=new Ift(e)}buildReplaceString(e,t){if(this._state.kind===0)return t?bye(e,this._state.staticValue):this._state.staticValue;let i="";for(let n=0,o=this._state.pieces.length;n<o;n++){const r=this._state.pieces[n];if(r.staticValue!==null){i+=r.staticValue;continue}let l=tQ._substitute(r.matchIndex,e);if(r.caseOps!==null&&r.caseOps.length>0){const a=[],d=r.caseOps.length;let c=0;for(let h=0,u=l.length;h<u;h++){if(c>=d){a.push(l.slice(h));break}switch(r.caseOps[c]){case"U":a.push(l[h].toUpperCase());break;case"u":a.push(l[h].toUpperCase()),c++;break;case"L":a.push(l[h].toLowerCase());break;case"l":a.push(l[h].toLowerCase()),c++;break;default:a.push(l[h])}}l=a.join("")}i+=l}return i}static _substitute(e,t){if(t===null)return"";if(e===0)return t[0];let i="";for(;e>0;){if(e<t.length)return(t[e]||"")+i;i=String(e%10)+i,e=Math.floor(e/10)}return"$"+i}}class OS{static staticValue(e){return new OS(e,-1,null)}static caseOps(e,t){return new OS(null,e,t)}constructor(e,t,i){this.staticValue=e,this.matchIndex=t,!i||i.length===0?this.caseOps=null:this.caseOps=i.slice(0)}}class Eft{constructor(e){this._source=e,this._lastCharIndex=0,this._result=[],this._resultLen=0,this._currentStaticPiece=""}emitUnchanged(e){this._emitStatic(this._source.substring(this._lastCharIndex,e)),this._lastCharIndex=e}emitStatic(e,t){this._emitStatic(e),this._lastCharIndex=t}_emitStatic(e){e.length!==0&&(this._currentStaticPiece+=e)}emitMatchIndex(e,t,i){this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=OS.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),this._result[this._resultLen++]=OS.caseOps(e,i),this._lastCharIndex=t}finalize(){return this.emitUnchanged(this._source.length),this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=OS.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),new tQ(this._result)}}function Dft(s){if(!s||s.length===0)return new tQ(null);const e=[],t=new Eft(s);for(let i=0,n=s.length;i<n;i++){const o=s.charCodeAt(i);if(o===92){if(i++,i>=n)break;const r=s.charCodeAt(i);switch(r){case 92:t.emitUnchanged(i-1),t.emitStatic("\\",i+1);break;case 110:t.emitUnchanged(i-1),t.emitStatic(`
- `,i+1);break;case 116:t.emitUnchanged(i-1),t.emitStatic(" ",i+1);break;case 117:case 85:case 108:case 76:t.emitUnchanged(i-1),t.emitStatic("",i+1),e.push(String.fromCharCode(r));break}continue}if(o===36){if(i++,i>=n)break;const r=s.charCodeAt(i);if(r===36){t.emitUnchanged(i-1),t.emitStatic("$",i+1);continue}if(r===48||r===38){t.emitUnchanged(i-1),t.emitMatchIndex(0,i+1,e),e.length=0;continue}if(49<=r&&r<=57){let l=r-48;if(i+1<n){const a=s.charCodeAt(i+1);if(48<=a&&a<=57){i++,l=l*10+(a-48),t.emitUnchanged(i-2),t.emitMatchIndex(l,i+1,e),e.length=0;continue}}t.emitUnchanged(i-1),t.emitMatchIndex(l,i+1,e),e.length=0;continue}}}return t.finalize()}const ub=new yt("findWidgetVisible",!1);ub.toNegated();const P9=new yt("findInputFocussed",!1),Vle=new yt("replaceInputFocussed",!1),BI={primary:545,mac:{primary:2593}},LI={primary:565,mac:{primary:2613}},vI={primary:560,mac:{primary:2608}},kI={primary:554,mac:{primary:2602}},xI={primary:558,mac:{primary:2606}},Js={StartFindAction:"actions.find",StartFindWithSelection:"actions.findWithSelection",StartFindWithArgs:"editor.actions.findWithArgs",NextMatchFindAction:"editor.action.nextMatchFindAction",PreviousMatchFindAction:"editor.action.previousMatchFindAction",GoToMatchFindAction:"editor.action.goToMatchFindAction",NextSelectionMatchFindAction:"editor.action.nextSelectionMatchFindAction",PreviousSelectionMatchFindAction:"editor.action.previousSelectionMatchFindAction",StartFindReplaceAction:"editor.action.startFindReplaceAction",CloseFindWidgetCommand:"closeFindWidget",ToggleCaseSensitiveCommand:"toggleFindCaseSensitive",ToggleWholeWordCommand:"toggleFindWholeWord",ToggleRegexCommand:"toggleFindRegex",ToggleSearchScopeCommand:"toggleFindInSelection",TogglePreserveCaseCommand:"togglePreserveCase",ReplaceOneAction:"editor.action.replaceOne",ReplaceAllAction:"editor.action.replaceAll",SelectAllMatchesAction:"editor.action.selectAllMatches"},iF=19999,Gft=240;class N2{constructor(e,t){this._toDispose=new De,this._editor=e,this._state=t,this._isDisposed=!1,this._startSearchingTimer=new om,this._decorations=new Vee(e),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new cs(()=>{if(this._editor.hasModel())return this.research(!1)},100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(i=>{(i.reason===3||i.reason===5||i.reason===6)&&this._decorations.setStartPosition(this._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(i=>{this._ignoreModelContentChanged||(i.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(i=>this._onStateChanged(i))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,Ws(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(e){this._isDisposed||this._editor.hasModel()&&(e.searchString||e.isReplaceRevealed||e.isRegex||e.wholeWord||e.matchCase||e.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(()=>{e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor)},Gft)):e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor))}static _getSearchRange(e,t){return t||e.getFullModelRange()}research(e,t){let i=null;typeof t<"u"?t!==null&&(Array.isArray(t)?i=t:i=[t]):i=this._decorations.getFindScopes(),i!==null&&(i=i.map(l=>{if(l.startLineNumber!==l.endLineNumber){let a=l.endLineNumber;return l.endColumn===1&&(a=a-1),new z(l.startLineNumber,1,a,this._editor.getModel().getLineMaxColumn(a))}return l}));const n=this._findMatches(i,!1,iF);this._decorations.set(n,i);const o=this._editor.getSelection();let r=this._decorations.getCurrentMatchesPosition(o);if(r===0&&n.length>0){const l=eL(n.map(a=>a.range),a=>z.compareRangesUsingStarts(a,o)>=0);r=l>0?l-1+1:r}this._state.changeMatchInfo(r,this._decorations.getCount(),void 0),e&&this._editor.getOption(41).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1}_setCurrentFindMatch(e){const t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)}_prevSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:n}=e;const o=this._editor.getModel();return t||n===1?(i===1?i=o.getLineCount():i--,n=o.getLineMaxColumn(i)):n--,new ge(i,n)}_moveToPrevMatch(e,t=!1){if(!this._state.canNavigateBack()){const c=this._decorations.matchAfterPosition(e);c&&this._setCurrentFindMatch(c);return}if(this._decorations.getCount()<iF){let c=this._decorations.matchBeforePosition(e);c&&c.isEmpty()&&c.getStartPosition().equals(e)&&(e=this._prevSearchPosition(e),c=this._decorations.matchBeforePosition(e)),c&&this._setCurrentFindMatch(c);return}if(this._cannotFind())return;const i=this._decorations.getFindScope(),n=N2._getSearchRange(this._editor.getModel(),i);n.getEndPosition().isBefore(e)&&(e=n.getEndPosition()),e.isBefore(n.getStartPosition())&&(e=n.getEndPosition());const{lineNumber:o,column:r}=e,l=this._editor.getModel();let a=new ge(o,r),d=l.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,!1);if(d&&d.range.isEmpty()&&d.range.getStartPosition().equals(a)&&(a=this._prevSearchPosition(a),d=l.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,!1)),!!d){if(!t&&!n.containsRange(d.range))return this._moveToPrevMatch(d.range.getStartPosition(),!0);this._setCurrentFindMatch(d.range)}}moveToPrevMatch(){this._moveToPrevMatch(this._editor.getSelection().getStartPosition())}_nextSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:n}=e;const o=this._editor.getModel();return t||n===o.getLineMaxColumn(i)?(i===o.getLineCount()?i=1:i++,n=1):n++,new ge(i,n)}_moveToNextMatch(e){if(!this._state.canNavigateForward()){const i=this._decorations.matchBeforePosition(e);i&&this._setCurrentFindMatch(i);return}if(this._decorations.getCount()<iF){let i=this._decorations.matchAfterPosition(e);i&&i.isEmpty()&&i.getStartPosition().equals(e)&&(e=this._nextSearchPosition(e),i=this._decorations.matchAfterPosition(e)),i&&this._setCurrentFindMatch(i);return}const t=this._getNextMatch(e,!1,!0);t&&this._setCurrentFindMatch(t.range)}_getNextMatch(e,t,i,n=!1){if(this._cannotFind())return null;const o=this._decorations.getFindScope(),r=N2._getSearchRange(this._editor.getModel(),o);r.getEndPosition().isBefore(e)&&(e=r.getStartPosition()),e.isBefore(r.getStartPosition())&&(e=r.getStartPosition());const{lineNumber:l,column:a}=e,d=this._editor.getModel();let c=new ge(l,a),h=d.findNextMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,t);return i&&h&&h.range.isEmpty()&&h.range.getStartPosition().equals(c)&&(c=this._nextSearchPosition(c),h=d.findNextMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,t)),h?!n&&!r.containsRange(h.range)?this._getNextMatch(h.range.getEndPosition(),t,i,!0):h:null}moveToNextMatch(){this._moveToNextMatch(this._editor.getSelection().getEndPosition())}_moveToMatch(e){const t=this._decorations.getDecorationRangeAt(e);t&&this._setCurrentFindMatch(t)}moveToMatch(e){this._moveToMatch(e)}_getReplacePattern(){return this._state.isRegex?Dft(this._state.replaceString):tQ.fromStaticValue(this._state.replaceString)}replace(){if(!this._hasMatches())return;const e=this._getReplacePattern(),t=this._editor.getSelection(),i=this._getNextMatch(t.getStartPosition(),!0,!1);if(i)if(t.equalsRange(i.range)){const n=e.buildReplaceString(i.matches,this._state.preserveCase),o=new Wl(t,n);this._executeEditorCommand("replace",o),this._decorations.setStartPosition(new ge(t.startLineNumber,t.startColumn+n.length)),this.research(!0)}else this._decorations.setStartPosition(this._editor.getPosition()),this._setCurrentFindMatch(i.range)}_findMatches(e,t,i){const n=(e||[null]).map(o=>N2._getSearchRange(this._editor.getModel(),o));return this._editor.getModel().findMatches(this._state.searchString,n,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,t,i)}replaceAll(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();e===null&&this._state.matchesCount>=iF?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}_largeReplaceAll(){const t=new lZ(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null).parseSearchRequest();if(!t)return;let i=t.regex;if(!i.multiline){let h="mu";i.ignoreCase&&(h+="i"),i.global&&(h+="g"),i=new RegExp(i.source,h)}const n=this._editor.getModel(),o=n.getValue(1),r=n.getFullModelRange(),l=this._getReplacePattern();let a;const d=this._state.preserveCase;l.hasReplacementPatterns||d?a=o.replace(i,function(){return l.buildReplaceString(arguments,d)}):a=o.replace(i,l.buildReplaceString(null,d));const c=new Sre(r,a,this._editor.getSelection());this._executeEditorCommand("replaceAll",c)}_regularReplaceAll(e){const t=this._getReplacePattern(),i=this._findMatches(e,t.hasReplacementPatterns||this._state.preserveCase,1073741824),n=[];for(let r=0,l=i.length;r<l;r++)n[r]=t.buildReplaceString(i[r].matches,this._state.preserveCase);const o=new xft(this._editor.getSelection(),i.map(r=>r.range),n);this._executeEditorCommand("replaceAll",o)}selectAllMatches(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();let i=this._findMatches(e,!1,1073741824).map(o=>new _t(o.range.startLineNumber,o.range.startColumn,o.range.endLineNumber,o.range.endColumn));const n=this._editor.getSelection();for(let o=0,r=i.length;o<r;o++)if(i[o].equalsRange(n)){i=[n].concat(i.slice(0,o)).concat(i.slice(o+1));break}this._editor.setSelections(i)}_executeEditorCommand(e,t){try{this._ignoreModelContentChanged=!0,this._editor.pushUndoStop(),this._editor.executeCommand(e,t),this._editor.pushUndoStop()}finally{this._ignoreModelContentChanged=!1}}}const Sz=class Sz extends ch{constructor(e,t,i){super(),this._hideSoon=this._register(new cs(()=>this._hide(),2e3)),this._isVisible=!1,this._editor=e,this._state=t,this._keybindingService=i,this._domNode=document.createElement("div"),this._domNode.className="findOptionsWidget",this._domNode.style.display="none",this._domNode.style.top="10px",this._domNode.style.zIndex="12",this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true");const n={inputActiveOptionBorder:Mt($3),inputActiveOptionForeground:Mt(e9),inputActiveOptionBackground:Mt($v)},o=this._register(xy());this.caseSensitive=this._register(new iVe({appendTitle:this._keybindingLabelFor(Js.ToggleCaseSensitiveCommand),isChecked:this._state.matchCase,hoverDelegate:o,...n})),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange(()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)})),this.wholeWords=this._register(new nVe({appendTitle:this._keybindingLabelFor(Js.ToggleWholeWordCommand),isChecked:this._state.wholeWord,hoverDelegate:o,...n})),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange(()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)})),this.regex=this._register(new sVe({appendTitle:this._keybindingLabelFor(Js.ToggleRegexCommand),isChecked:this._state.isRegex,hoverDelegate:o,...n})),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange(()=>{this._state.change({isRegex:this.regex.checked},!1)})),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange(r=>{let l=!1;r.isRegex&&(this.regex.checked=this._state.isRegex,l=!0),r.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,l=!0),r.matchCase&&(this.caseSensitive.checked=this._state.matchCase,l=!0),!this._state.isRevealed&&l&&this._revealTemporarily()})),this._register(Te(this._domNode,ut.MOUSE_LEAVE,r=>this._onMouseLeave())),this._register(Te(this._domNode,"mouseover",r=>this._onMouseOver()))}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return Sz.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseLeave(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}};Sz.ID="editor.contrib.findOptionsWidget";let Wee=Sz;function II(s,e){return s===1?!0:s===2?!1:e}class Jft extends be{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return II(this._isRegexOverride,this._isRegex)}get wholeWord(){return II(this._wholeWordOverride,this._wholeWord)}get matchCase(){return II(this._matchCaseOverride,this._matchCase)}get preserveCase(){return II(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}constructor(){super(),this._onFindReplaceStateChange=this._register(new fe),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString="",this._replaceString="",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0,this._isSearching=!1,this._filters=null}changeMatchInfo(e,t,i){const n={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let o=!1;t===0&&(e=0),e>t&&(e=t),this._matchesPosition!==e&&(this._matchesPosition=e,n.matchesPosition=!0,o=!0),this._matchesCount!==t&&(this._matchesCount=t,n.matchesCount=!0,o=!0),typeof i<"u"&&(z.equalsRange(this._currentMatch,i)||(this._currentMatch=i,n.currentMatch=!0,o=!0)),o&&this._onFindReplaceStateChange.fire(n)}change(e,t,i=!0){var c;const n={moveCursor:t,updateHistory:i,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let o=!1;const r=this.isRegex,l=this.wholeWord,a=this.matchCase,d=this.preserveCase;typeof e.searchString<"u"&&this._searchString!==e.searchString&&(this._searchString=e.searchString,n.searchString=!0,o=!0),typeof e.replaceString<"u"&&this._replaceString!==e.replaceString&&(this._replaceString=e.replaceString,n.replaceString=!0,o=!0),typeof e.isRevealed<"u"&&this._isRevealed!==e.isRevealed&&(this._isRevealed=e.isRevealed,n.isRevealed=!0,o=!0),typeof e.isReplaceRevealed<"u"&&this._isReplaceRevealed!==e.isReplaceRevealed&&(this._isReplaceRevealed=e.isReplaceRevealed,n.isReplaceRevealed=!0,o=!0),typeof e.isRegex<"u"&&(this._isRegex=e.isRegex),typeof e.wholeWord<"u"&&(this._wholeWord=e.wholeWord),typeof e.matchCase<"u"&&(this._matchCase=e.matchCase),typeof e.preserveCase<"u"&&(this._preserveCase=e.preserveCase),typeof e.searchScope<"u"&&((c=e.searchScope)!=null&&c.every(h=>{var u;return(u=this._searchScope)==null?void 0:u.some(m=>!z.equalsRange(m,h))})||(this._searchScope=e.searchScope,n.searchScope=!0,o=!0)),typeof e.loop<"u"&&this._loop!==e.loop&&(this._loop=e.loop,n.loop=!0,o=!0),typeof e.isSearching<"u"&&this._isSearching!==e.isSearching&&(this._isSearching=e.isSearching,n.isSearching=!0,o=!0),typeof e.filters<"u"&&(this._filters?this._filters.update(e.filters):this._filters=e.filters,n.filters=!0,o=!0),this._isRegexOverride=typeof e.isRegexOverride<"u"?e.isRegexOverride:0,this._wholeWordOverride=typeof e.wholeWordOverride<"u"?e.wholeWordOverride:0,this._matchCaseOverride=typeof e.matchCaseOverride<"u"?e.matchCaseOverride:0,this._preserveCaseOverride=typeof e.preserveCaseOverride<"u"?e.preserveCaseOverride:0,r!==this.isRegex&&(o=!0,n.isRegex=!0),l!==this.wholeWord&&(o=!0,n.wholeWord=!0),a!==this.matchCase&&(o=!0,n.matchCase=!0),d!==this.preserveCase&&(o=!0,n.preserveCase=!0),o&&this._onFindReplaceStateChange.fire(n)}canNavigateBack(){return this.canNavigateInLoop()||this.matchesPosition!==1}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition<this.matchesCount}canNavigateInLoop(){return this._loop||this.matchesCount>=iF}}const Xft=F("defaultLabel","input"),Yft=F("label.preserveCaseToggle","Preserve Case");class _ft extends RM{constructor(e){super({icon:ct.preserveCase,title:Yft+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??Ka("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class zft extends ch{constructor(e,t,i,n){super(),this._showOptionButtons=i,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new fe),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new fe),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new fe),this._onInput=this._register(new fe),this._onKeyUp=this._register(new fe),this._onPreserveCaseKeyDown=this._register(new fe),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=t,this.placeholder=n.placeholder||"",this.validation=n.validation,this.label=n.label||Xft;const o=n.appendPreserveCaseLabel||"",r=n.history||[],l=!!n.flexibleHeight,a=!!n.flexibleWidth,d=n.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new oVe(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},history:r,showHistoryHint:n.showHistoryHint,flexibleHeight:l,flexibleWidth:a,flexibleMaxHeight:d,inputBoxStyles:n.inputBoxStyles})),this.preserveCase=this._register(new _ft({appendTitle:o,isChecked:!1,...n.toggleStyles})),this._register(this.preserveCase.onChange(u=>{this._onDidOptionChange.fire(u),!u&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.preserveCase.onKeyDown(u=>{this._onPreserveCaseKeyDown.fire(u)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const c=[this.preserveCase.domNode];this.onkeydown(this.domNode,u=>{if(u.equals(15)||u.equals(17)||u.equals(9)){const m=c.indexOf(this.domNode.ownerDocument.activeElement);if(m>=0){let p=-1;u.equals(17)?p=(m+1)%c.length:u.equals(15)&&(m===0?p=c.length-1:p=m-1),u.equals(9)?(c[m].blur(),this.inputBox.focus()):p>=0&&c[p].focus(),Un.stop(u,!0)}}});const h=document.createElement("div");h.className="controls",h.style.display=this._showOptionButtons?"block":"none",h.appendChild(this.preserveCase.domNode),this.domNode.appendChild(h),e==null||e.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,u=>this._onKeyDown.fire(u)),this.onkeyup(this.inputBox.inputElement,u=>this._onKeyUp.fire(u)),this.oninput(this.inputBox.inputElement,u=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,u=>this._onMouseDown.fire(u))}enable(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.preserveCase.enable()}disable(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(e){e?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(e){this.preserveCase.checked=e}focusOnPreserve(){this.preserveCase.focus()}validate(){var e;(e=this.inputBox)==null||e.validate()}set width(e){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=e+"px"}dispose(){super.dispose()}}var Uye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Fye=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Wle=new yt("suggestWidgetVisible",!1,F("suggestWidgetVisible","Whether suggestion are visible")),yle="historyNavigationWidgetFocus",Aye="historyNavigationForwardsEnabled",Zye="historyNavigationBackwardsEnabled";let Df;const EI=[];function Sye(s,e){if(EI.includes(e))throw new Error("Cannot register the same widget multiple times");EI.push(e);const t=new De,i=new yt(yle,!1).bindTo(s),n=new yt(Aye,!0).bindTo(s),o=new yt(Zye,!0).bindTo(s),r=()=>{i.set(!0),Df=e},l=()=>{i.set(!1),Df===e&&(Df=void 0)};return C3(e.element)&&r(),t.add(e.onDidFocus(()=>r())),t.add(e.onDidBlur(()=>l())),t.add(ei(()=>{EI.splice(EI.indexOf(e),1),l()})),{historyNavigationForwardsEnablement:n,historyNavigationBackwardsEnablement:o,dispose(){t.dispose()}}}let yee=class extends rVe{constructor(e,t,i,n){super(e,t,i);const o=this._register(n.createScoped(this.inputBox.element));this._register(Sye(o,this.inputBox))}};yee=Uye([Fye(3,fi)],yee);let Qee=class extends zft{constructor(e,t,i,n,o=!1){super(e,t,o,i);const r=this._register(n.createScoped(this.inputBox.element));this._register(Sye(r,this.inputBox))}};Qee=Uye([Fye(3,fi)],Qee);Oa.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:Ge.and(Ge.has(yle),Ge.equals(Zye,!0),Ge.not("isComposing"),Wle.isEqualTo(!1)),primary:16,secondary:[528],handler:s=>{Df==null||Df.showPreviousValue()}});Oa.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:Ge.and(Ge.has(yle),Ge.equals(Aye,!0),Ge.not("isComposing"),Wle.isEqualTo(!1)),primary:18,secondary:[530],handler:s=>{Df==null||Df.showNextValue()}});function o0e(s){var e,t;return((e=s.lookupKeybinding("history.showPrevious"))==null?void 0:e.getElectronAccelerator())==="Up"&&((t=s.lookupKeybinding("history.showNext"))==null?void 0:t.getElectronAccelerator())==="Down"}const r0e=Os("find-collapsed",ct.chevronRight,F("findCollapsedIcon","Icon to indicate that the editor find widget is collapsed.")),l0e=Os("find-expanded",ct.chevronDown,F("findExpandedIcon","Icon to indicate that the editor find widget is expanded.")),Oft=Os("find-selection",ct.selection,F("findSelectionIcon","Icon for 'Find in Selection' in the editor find widget.")),jft=Os("find-replace",ct.replace,F("findReplaceIcon","Icon for 'Replace' in the editor find widget.")),Pft=Os("find-replace-all",ct.replaceAll,F("findReplaceAllIcon","Icon for 'Replace All' in the editor find widget.")),Hft=Os("find-previous-match",ct.arrowUp,F("findPreviousMatchIcon","Icon for 'Find Previous' in the editor find widget.")),Kft=Os("find-next-match",ct.arrowDown,F("findNextMatchIcon","Icon for 'Find Next' in the editor find widget.")),qft=F("label.findDialog","Find / Replace"),$ft=F("label.find","Find"),ebt=F("placeholder.find","Find"),tbt=F("label.previousMatchButton","Previous Match"),ibt=F("label.nextMatchButton","Next Match"),nbt=F("label.toggleSelectionFind","Find in Selection"),sbt=F("label.closeButton","Close"),obt=F("label.replace","Replace"),rbt=F("placeholder.replace","Replace"),lbt=F("label.replaceButton","Replace"),abt=F("label.replaceAllButton","Replace All"),dbt=F("label.toggleReplaceButton","Toggle Replace"),cbt=F("title.matchesCountLimit","Only the first {0} results are highlighted, but all find operations work on the entire text.",iF),hbt=F("label.matchesLocation","{0} of {1}"),a0e=F("label.noResults","No results"),wp=419,ubt=275,mbt=ubt-54;let Tw=69;const pbt=33,d0e="ctrlEnterReplaceAll.windows.donotask",c0e=hn?256:2048;class gH{constructor(e){this.afterLineNumber=e,this.heightInPx=pbt,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}function h0e(s,e,t){const i=!!e.match(/\n/);if(t&&i&&t.selectionStart>0){s.stopPropagation();return}}function u0e(s,e,t){const i=!!e.match(/\n/);if(t&&i&&t.selectionEnd<t.value.length){s.stopPropagation();return}}const Nz=class Nz extends ch{constructor(e,t,i,n,o,r,l,a,d,c){super(),this._hoverService=c,this._cachedHeight=null,this._revealTimeouts=[],this._codeEditor=e,this._controller=t,this._state=i,this._contextViewProvider=n,this._keybindingService=o,this._contextKeyService=r,this._storageService=a,this._notificationService=d,this._ctrlEnterReplaceAllWarningPrompted=!!a.getBoolean(d0e,0),this._isVisible=!1,this._isReplaceVisible=!1,this._ignoreChangeEvent=!1,this._updateHistoryDelayer=new Oh(500),this._register(ei(()=>this._updateHistoryDelayer.cancel())),this._register(this._state.onFindReplaceStateChange(h=>this._onStateChanged(h))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration(h=>{if(h.hasChanged(92)&&(this._codeEditor.getOption(92)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),h.hasChanged(146)&&this._tryUpdateWidgetWidth(),h.hasChanged(2)&&this.updateAccessibilitySupport(),h.hasChanged(41)){const u=this._codeEditor.getOption(41).loop;this._state.change({loop:u},!1);const m=this._codeEditor.getOption(41).addExtraSpaceOnTop;m&&!this._viewZone&&(this._viewZone=new gH(0),this._showViewZone()),!m&&this._viewZone&&this._removeViewZone()}})),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection(()=>{this._isVisible&&this._updateToggleSelectionFindButton()})),this._register(this._codeEditor.onDidFocusEditorWidget(async()=>{if(this._isVisible){const h=await this._controller.getGlobalBufferTerm();h&&h!==this._state.searchString&&(this._state.change({searchString:h},!1),this._findInput.select())}})),this._findInputFocused=P9.bindTo(r),this._findFocusTracker=this._register(ap(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus(()=>{this._findInputFocused.set(!0),this._updateSearchScope()})),this._register(this._findFocusTracker.onDidBlur(()=>{this._findInputFocused.set(!1)})),this._replaceInputFocused=Vle.bindTo(r),this._replaceFocusTracker=this._register(ap(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus(()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()})),this._register(this._replaceFocusTracker.onDidBlur(()=>{this._replaceInputFocused.set(!1)})),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(41).addExtraSpaceOnTop&&(this._viewZone=new gH(0)),this._register(this._codeEditor.onDidChangeModel(()=>{this._isVisible&&(this._viewZoneId=void 0)})),this._register(this._codeEditor.onDidScrollChange(h=>{if(h.scrollTopChanged){this._layoutViewZone();return}setTimeout(()=>{this._layoutViewZone()},0)}))}getId(){return Nz.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(e){if(e.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(e.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?!this._codeEditor.getOption(92)&&!this._isReplaceVisible&&(this._isReplaceVisible=!0,this._replaceInput.width=qd(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(e.isRevealed||e.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){const t=this._state.searchString.length>0&&this._state.matchesCount===0;this._domNode.classList.toggle("no-results",t),this._updateMatchesCount(),this._updateButtons()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory(),e.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,wi)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){var t;this._matchesCount.style.minWidth=Tw+"px",this._state.matchesCount>=iF?this._matchesCount.title=cbt:this._matchesCount.title="",(t=this._matchesCount.firstChild)==null||t.remove();let e;if(this._state.matchesCount>0){let i=String(this._state.matchesCount);this._state.matchesCount>=iF&&(i+="+");let n=String(this._state.matchesPosition);n==="0"&&(n="?"),e=bN(hbt,n,i)}else e=a0e;this._matchesCount.appendChild(document.createTextNode(e)),ja(this._getAriaLabel(e,this._state.currentMatch,this._state.searchString)),Tw=Math.max(Tw,this._matchesCount.clientWidth)}_getAriaLabel(e,t,i){if(e===a0e)return i===""?F("ariaSearchNoResultEmpty","{0} found",e):F("ariaSearchNoResult","{0} found for '{1}'",e,i);if(t){const n=F("ariaSearchNoResultWithLineNum","{0} found for '{1}', at {2}",e,i,t.startLineNumber+":"+t.startColumn),o=this._codeEditor.getModel();return o&&t.startLineNumber<=o.getLineCount()&&t.startLineNumber>=1?`${o.getLineContent(t.startLineNumber)}, ${n}`:n}return F("ariaSearchNoResultWithLineNumNoCurrentMatch","{0} found for '{1}'",e,i)}_updateToggleSelectionFindButton(){const e=this._codeEditor.getSelection(),t=e?e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn:!1,i=this._toggleSelectionFind.checked;this._isVisible&&(i||t)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);const e=this._state.searchString.length>0,t=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const i=!this._codeEditor.getOption(92);this._toggleReplaceBtn.setEnabled(this._isVisible&&i)}_reveal(){if(this._revealTimeouts.forEach(e=>{clearTimeout(e)}),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const e=this._codeEditor.getSelection();switch(this._codeEditor.getOption(41).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":{const i=!!e&&e.startLineNumber!==e.endLineNumber;this._toggleSelectionFind.checked=i;break}}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout(()=>{this._domNode.classList.add("visible"),this._domNode.setAttribute("aria-hidden","false")},0)),this._revealTimeouts.push(setTimeout(()=>{this._findInput.validate()},200)),this._codeEditor.layoutOverlayWidget(this);let t=!0;if(this._codeEditor.getOption(41).seedSearchStringFromSelection&&e){const i=this._codeEditor.getDomNode();if(i){const n=Lo(i),o=this._codeEditor.getScrolledVisiblePosition(e.getStartPosition()),r=n.left+(o?o.left:0),l=o?o.top:0;if(this._viewZone&&l<this._viewZone.heightInPx){e.endLineNumber>e.startLineNumber&&(t=!1);const a=sSe(this._domNode).left;r>a&&(t=!1);const d=this._codeEditor.getScrolledVisiblePosition(e.getEndPosition());n.left+(d?d.left:0)>a&&(t=!1)}}}this._showViewZone(t)}}_hide(e){this._revealTimeouts.forEach(t=>{clearTimeout(t)}),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(e){if(!this._codeEditor.getOption(41).addExtraSpaceOnTop){this._removeViewZone();return}if(!this._isVisible)return;const i=this._viewZone;this._viewZoneId!==void 0||!i||this._codeEditor.changeViewZones(n=>{i.heightInPx=this._getHeight(),this._viewZoneId=n.addZone(i),this._codeEditor.setScrollTop(e||this._codeEditor.getScrollTop()+i.heightInPx)})}_showViewZone(e=!0){if(!this._isVisible||!this._codeEditor.getOption(41).addExtraSpaceOnTop)return;this._viewZone===void 0&&(this._viewZone=new gH(0));const i=this._viewZone;this._codeEditor.changeViewZones(n=>{if(this._viewZoneId!==void 0){const o=this._getHeight();if(o===i.heightInPx)return;const r=o-i.heightInPx;i.heightInPx=o,n.layoutZone(this._viewZoneId),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+r);return}else{let o=this._getHeight();if(o-=this._codeEditor.getOption(84).top,o<=0)return;i.heightInPx=o,this._viewZoneId=n.addZone(i),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+o)}})}_removeViewZone(){this._codeEditor.changeViewZones(e=>{this._viewZoneId!==void 0&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))})}_tryUpdateWidgetWidth(){if(!this._isVisible||!this._domNode.isConnected)return;const e=this._codeEditor.getLayoutInfo();if(e.contentWidth<=0){this._domNode.classList.add("hiddenEditor");return}else this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");const i=e.width,n=e.minimap.minimapWidth;let o=!1,r=!1,l=!1;if(this._resized&&qd(this._domNode)>wp){this._domNode.style.maxWidth=`${i-28-n-15}px`,this._replaceInput.width=qd(this._findInput.domNode);return}if(wp+28+n>=i&&(r=!0),wp+28+n-Tw>=i&&(l=!0),wp+28+n-Tw>=i+50&&(o=!0),this._domNode.classList.toggle("collapsed-find-widget",o),this._domNode.classList.toggle("narrow-find-widget",l),this._domNode.classList.toggle("reduced-find-widget",r),!l&&!o&&(this._domNode.style.maxWidth=`${i-28-n-15}px`),this._findInput.layout({collapsedFindWidget:o,narrowFindWidget:l,reducedFindWidget:r}),this._resized){const a=this._findInput.inputBox.element.clientWidth;a>0&&(this._replaceInput.width=a)}else this._isReplaceVisible&&(this._replaceInput.width=qd(this._findInput.domNode))}_getHeight(){let e=0;return e+=4,e+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(e+=4,e+=this._replaceInput.inputBox.height+2),e+=4,e}_tryUpdateHeight(){const e=this._getHeight();return this._cachedHeight!==null&&this._cachedHeight===e?!1:(this._cachedHeight=e,this._domNode.style.height=`${e}px`,!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){const e=this._codeEditor.getSelections();e.map(t=>{t.endColumn===1&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(t.endLineNumber-1)));const i=this._state.currentMatch;return t.startLineNumber!==t.endLineNumber&&!z.equalsRange(t,i)?t:null}).filter(t=>!!t),e.length&&this._state.change({searchScope:e},!0)}}_onFindInputMouseDown(e){e.middleButton&&e.stopPropagation()}_onFindInputKeyDown(e){if(e.equals(c0e|3))if(this._keybindingService.dispatchEvent(e,e.target)){e.preventDefault();return}else{this._findInput.inputBox.insertAtCursor(`
- `),e.preventDefault();return}if(e.equals(2)){this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),e.preventDefault();return}if(e.equals(2066)){this._codeEditor.focus(),e.preventDefault();return}if(e.equals(16))return h0e(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"));if(e.equals(18))return u0e(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"))}_onReplaceInputKeyDown(e){if(e.equals(c0e|3))if(this._keybindingService.dispatchEvent(e,e.target)){e.preventDefault();return}else{Tl&&$m&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(F("ctrlEnter.keybindingChanged","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(d0e,!0,0,0)),this._replaceInput.inputBox.insertAtCursor(`
- `),e.preventDefault();return}if(e.equals(2)){this._findInput.focusOnCaseSensitive(),e.preventDefault();return}if(e.equals(1026)){this._findInput.focus(),e.preventDefault();return}if(e.equals(2066)){this._codeEditor.focus(),e.preventDefault();return}if(e.equals(16))return h0e(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"));if(e.equals(18))return u0e(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"))}getVerticalSashLeft(e){return 0}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}_buildDomNode(){this._findInput=this._register(new yee(null,this._contextViewProvider,{width:mbt,label:$ft,placeholder:ebt,appendCaseSensitiveLabel:this._keybindingLabelFor(Js.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(Js.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(Js.ToggleRegexCommand),validation:c=>{if(c.length===0||!this._findInput.getRegex())return null;try{return new RegExp(c,"gu"),null}catch(h){return{content:h.message}}},flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showCommonFindToggles:!0,showHistoryHint:()=>o0e(this._keybindingService),inputBoxStyles:XX,toggleStyles:JX},this._contextKeyService)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown(c=>this._onFindInputKeyDown(c))),this._register(this._findInput.inputBox.onDidChange(()=>{this._ignoreChangeEvent||this._state.change({searchString:this._findInput.getValue()},!0)})),this._register(this._findInput.onDidOptionChange(()=>{this._state.change({isRegex:this._findInput.getRegex(),wholeWord:this._findInput.getWholeWords(),matchCase:this._findInput.getCaseSensitive()},!0)})),this._register(this._findInput.onCaseSensitiveKeyDown(c=>{c.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),c.preventDefault())})),this._register(this._findInput.onRegexKeyDown(c=>{c.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),c.preventDefault())})),this._register(this._findInput.inputBox.onDidHeightChange(c=>{this._tryUpdateHeight()&&this._showViewZone()})),_a&&this._register(this._findInput.onMouseDown(c=>this._onFindInputMouseDown(c))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount();const i=this._register(xy());this._prevBtn=this._register(new HR({label:tbt+this._keybindingLabelFor(Js.PreviousMatchFindAction),icon:Hft,hoverDelegate:i,onTrigger:()=>{YU(this._codeEditor.getAction(Js.PreviousMatchFindAction)).run().then(void 0,wi)}},this._hoverService)),this._nextBtn=this._register(new HR({label:ibt+this._keybindingLabelFor(Js.NextMatchFindAction),icon:Kft,hoverDelegate:i,onTrigger:()=>{YU(this._codeEditor.getAction(Js.NextMatchFindAction)).run().then(void 0,wi)}},this._hoverService));const n=document.createElement("div");n.className="find-part",n.appendChild(this._findInput.domNode);const o=document.createElement("div");o.className="find-actions",n.appendChild(o),o.appendChild(this._matchesCount),o.appendChild(this._prevBtn.domNode),o.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new RM({icon:Oft,title:nbt+this._keybindingLabelFor(Js.ToggleSearchScopeCommand),isChecked:!1,hoverDelegate:i,inputActiveOptionBackground:Mt($v),inputActiveOptionBorder:Mt($3),inputActiveOptionForeground:Mt(e9)})),this._register(this._toggleSelectionFind.onChange(()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){let c=this._codeEditor.getSelections();c=c.map(h=>(h.endColumn===1&&h.endLineNumber>h.startLineNumber&&(h=h.setEndPosition(h.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(h.endLineNumber-1))),h.isEmpty()?null:h)).filter(h=>!!h),c.length&&this._state.change({searchScope:c},!0)}}else this._state.change({searchScope:null},!0)})),o.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new HR({label:sbt+this._keybindingLabelFor(Js.CloseFindWidgetCommand),icon:kVe,hoverDelegate:i,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:c=>{c.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),c.preventDefault())}},this._hoverService)),this._replaceInput=this._register(new Qee(null,void 0,{label:obt,placeholder:rbt,appendPreserveCaseLabel:this._keybindingLabelFor(Js.TogglePreserveCaseCommand),history:[],flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showHistoryHint:()=>o0e(this._keybindingService),inputBoxStyles:XX,toggleStyles:JX},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown(c=>this._onReplaceInputKeyDown(c))),this._register(this._replaceInput.inputBox.onDidChange(()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)})),this._register(this._replaceInput.inputBox.onDidHeightChange(c=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()})),this._register(this._replaceInput.onDidOptionChange(()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)})),this._register(this._replaceInput.onPreserveCaseKeyDown(c=>{c.equals(2)&&(this._prevBtn.isEnabled()?this._prevBtn.focus():this._nextBtn.isEnabled()?this._nextBtn.focus():this._toggleSelectionFind.enabled?this._toggleSelectionFind.focus():this._closeBtn.isEnabled()&&this._closeBtn.focus(),c.preventDefault())}));const r=this._register(xy());this._replaceBtn=this._register(new HR({label:lbt+this._keybindingLabelFor(Js.ReplaceOneAction),icon:jft,hoverDelegate:r,onTrigger:()=>{this._controller.replace()},onKeyDown:c=>{c.equals(1026)&&(this._closeBtn.focus(),c.preventDefault())}},this._hoverService)),this._replaceAllBtn=this._register(new HR({label:abt+this._keybindingLabelFor(Js.ReplaceAllAction),icon:Pft,hoverDelegate:r,onTrigger:()=>{this._controller.replaceAll()}},this._hoverService));const l=document.createElement("div");l.className="replace-part",l.appendChild(this._replaceInput.domNode);const a=document.createElement("div");a.className="replace-actions",l.appendChild(a),a.appendChild(this._replaceBtn.domNode),a.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new HR({label:dbt,className:"codicon toggle left",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=qd(this._findInput.domNode),this._replaceInput.inputBox.layout()),this._showViewZone()}},this._hoverService)),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.ariaLabel=qft,this._domNode.role="dialog",this._domNode.style.width=`${wp}px`,this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(n),this._domNode.appendChild(this._closeBtn.domNode),this._domNode.appendChild(l),this._resizeSash=this._register(new Jl(this._domNode,this,{orientation:0,size:2})),this._resized=!1;let d=wp;this._register(this._resizeSash.onDidStart(()=>{d=qd(this._domNode)})),this._register(this._resizeSash.onDidChange(c=>{this._resized=!0;const h=d+c.startX-c.currentX;if(h<wp)return;const u=parseFloat(T3(this._domNode).maxWidth)||0;h>u||(this._domNode.style.width=`${h}px`,this._isReplaceVisible&&(this._replaceInput.width=qd(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())})),this._register(this._resizeSash.onDidReset(()=>{const c=qd(this._domNode);if(c<wp)return;let h=wp;if(!this._resized||c===wp){const u=this._codeEditor.getLayoutInfo();h=u.width-28-u.minimap.minimapWidth-15,this._resized=!0}this._domNode.style.width=`${h}px`,this._isReplaceVisible&&(this._replaceInput.width=qd(this._findInput.domNode)),this._findInput.inputBox.layout()}))}updateAccessibilitySupport(){const e=this._codeEditor.getOption(2);this._findInput.setFocusInputOnOptionClick(e!==2)}};Nz.ID="editor.contrib.findWidget";let Mee=Nz;class HR extends ch{constructor(e,t){super(),this._opts=e;let i="button";this._opts.className&&(i=i+" "+this._opts.className),this._opts.icon&&(i=i+" "+ui.asClassName(this._opts.icon)),this._domNode=document.createElement("div"),this._domNode.tabIndex=0,this._domNode.className=i,this._domNode.setAttribute("role","button"),this._domNode.setAttribute("aria-label",this._opts.label),this._register(t.setupManagedHover(e.hoverDelegate??Ka("element"),this._domNode,this._opts.label)),this.onclick(this._domNode,n=>{this._opts.onTrigger(),n.preventDefault()}),this.onkeydown(this._domNode,n=>{var o,r;if(n.equals(10)||n.equals(3)){this._opts.onTrigger(),n.preventDefault();return}(r=(o=this._opts).onKeyDown)==null||r.call(o,n)})}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(e){this._domNode.classList.toggle("disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1}setExpanded(e){this._domNode.setAttribute("aria-expanded",String(!!e)),e?(this._domNode.classList.remove(...ui.asClassNameArray(r0e)),this._domNode.classList.add(...ui.asClassNameArray(l0e))):(this._domNode.classList.remove(...ui.asClassNameArray(l0e)),this._domNode.classList.add(...ui.asClassNameArray(r0e)))}}eu((s,e)=>{const t=s.getColor(OU);t&&e.addRule(`.monaco-editor .findMatch { border: 1px ${np(s.type)?"dotted":"solid"} ${t}; box-sizing: border-box; }`);const i=s.getColor(J8e);i&&e.addRule(`.monaco-editor .findScope { border: 1px ${np(s.type)?"dashed":"solid"} ${i}; }`);const n=s.getColor(Vn);n&&e.addRule(`.monaco-editor .find-widget { border: 1px solid ${n}; }`);const o=s.getColor(D8e);o&&e.addRule(`.monaco-editor .findMatchInline { color: ${o}; }`);const r=s.getColor(G8e);r&&e.addRule(`.monaco-editor .currentFindMatchInline { color: ${r}; }`)});var Nye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ch=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},wee;const gbt=524288;function Tee(s,e="single",t=!1){if(!s.hasModel())return null;const i=s.getSelection();if(e==="single"&&i.startLineNumber===i.endLineNumber||e==="multiple"){if(i.isEmpty()){const n=s.getConfiguredWordAtPosition(i.getStartPosition());if(n&&t===!1)return n.word}else if(s.getModel().getValueLengthInRange(i)<gbt)return s.getModel().getValueInRange(i)}return null}var kQ;let wd=(kQ=class extends be{get editor(){return this._editor}static get(e){return e.getContribution(wee.ID)}constructor(e,t,i,n,o,r){super(),this._editor=e,this._findWidgetVisible=ub.bindTo(t),this._contextKeyService=t,this._storageService=i,this._clipboardService=n,this._notificationService=o,this._hoverService=r,this._updateHistoryDelayer=new Oh(500),this._state=this._register(new Jft),this.loadQueryState(),this._register(this._state.onFindReplaceStateChange(l=>this._onStateChanged(l))),this._model=null,this._register(this._editor.onDidChangeModel(()=>{const l=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:this._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,!1)},!1),l&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(41).loop})}))}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(e){this.saveQueryState(e),e.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),e.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(e){e.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,1),e.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,1),e.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,1),e.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!P9.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}togglePreserveCase(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){let e=this._editor.getSelections();e=e.map(t=>(t.endColumn===1&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,this._editor.getModel().getLineMaxColumn(t.endLineNumber-1))),t.isEmpty()?null:t)).filter(t=>!!t),e.length&&this._state.change({searchScope:e},!0)}}setSearchString(e){this._state.isRegex&&(e=nh(e)),this._state.change({searchString:e},!1)}highlightFindOptions(e=!1){}async _start(e,t){if(this.disposeModel(),!this._editor.hasModel())return;const i={...t,isRevealed:!0};if(e.seedSearchStringFromSelection==="single"){const n=Tee(this._editor,e.seedSearchStringFromSelection,e.seedSearchStringFromNonEmptySelection);n&&(this._state.isRegex?i.searchString=nh(n):i.searchString=n)}else if(e.seedSearchStringFromSelection==="multiple"&&!e.updateSearchScope){const n=Tee(this._editor,e.seedSearchStringFromSelection);n&&(i.searchString=n)}if(!i.searchString&&e.seedSearchStringFromGlobalClipboard){const n=await this.getGlobalBufferTerm();if(!this._editor.hasModel())return;n&&(i.searchString=n)}if(e.forceRevealReplace||i.isReplaceRevealed?i.isReplaceRevealed=!0:this._findWidgetVisible.get()||(i.isReplaceRevealed=!1),e.updateSearchScope){const n=this._editor.getSelections();n.some(o=>!o.isEmpty())&&(i.searchScope=n)}i.loop=e.loop,this._state.change(i,!1),this._model||(this._model=new N2(this._editor,this._state))}start(e,t){return this._start(e,t)}moveToNextMatch(){return this._model?(this._model.moveToNextMatch(),!0):!1}moveToPrevMatch(){return this._model?(this._model.moveToPrevMatch(),!0):!1}goToMatch(e){return this._model?(this._model.moveToMatch(e),!0):!1}replace(){return this._model?(this._model.replace(),!0):!1}replaceAll(){var e;return this._model?(e=this._editor.getModel())!=null&&e.isTooLargeForHeapOperation()?(this._notificationService.warn(F("too.large.for.replaceall","The file is too large to perform a replace all operation.")),!1):(this._model.replaceAll(),!0):!1}selectAllMatches(){return this._model?(this._model.selectAllMatches(),this._editor.focus(),!0):!1}async getGlobalBufferTerm(){return this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""}setGlobalBufferTerm(e){this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)}},wee=kQ,kQ.ID="editor.contrib.findController",kQ);wd=wee=Nye([Ch(1,fi),Ch(2,lm),Ch(3,hb),Ch(4,jo),Ch(5,t0)],wd);let Cee=class extends wd{constructor(e,t,i,n,o,r,l,a,d){super(e,i,l,a,r,d),this._contextViewService=t,this._keybindingService=n,this._themeService=o,this._widget=null,this._findOptionsWidget=null}async _start(e,t){this._widget||this._createFindWidget();const i=this._editor.getSelection();let n=!1;switch(this._editor.getOption(41).autoFindInSelection){case"always":n=!0;break;case"never":n=!1;break;case"multiline":{n=!!i&&i.startLineNumber!==i.endLineNumber;break}}e.updateSearchScope=e.updateSearchScope||n,await super._start(e,t),this._widget&&(e.shouldFocus===2?this._widget.focusReplaceInput():e.shouldFocus===1&&this._widget.focusFindInput())}highlightFindOptions(e=!1){this._widget||this._createFindWidget(),this._state.isRevealed&&!e?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new Mee(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService,this._hoverService)),this._findOptionsWidget=this._register(new Wee(this._editor,this._state,this._keybindingService))}};Cee=Nye([Ch(1,ab),Ch(2,fi),Ch(3,qn),Ch(4,Rr),Ch(5,jo),Ch(6,lm),Ch(7,hb),Ch(8,t0)],Cee);const fbt=ZSe(new ASe({id:Js.StartFindAction,label:F("startFindAction","Find"),alias:"Find",precondition:Ge.or($.focus,Ge.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:Gt.MenubarEditMenu,group:"3_find",title:F({key:"miFind",comment:["&& denotes a mnemonic"]},"&&Find"),order:1}}));fbt.addImplementation(0,(s,e,t)=>{const i=wd.get(e);return i?i.start({forceRevealReplace:!1,seedSearchStringFromSelection:e.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:e.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:e.getOption(41).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:e.getOption(41).loop}):!1});const bbt={description:"Open a new In-Editor Find Widget.",args:[{name:"Open a new In-Editor Find Widget args",schema:{properties:{searchString:{type:"string"},replaceString:{type:"string"},isRegex:{type:"boolean"},matchWholeWord:{type:"boolean"},isCaseSensitive:{type:"boolean"},preserveCase:{type:"boolean"},findInSelection:{type:"boolean"}}}}]};class Ubt extends Tt{constructor(){super({id:Js.StartFindWithArgs,label:F("startFindWithArgsAction","Find With Arguments"),alias:"Find With Arguments",precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},metadata:bbt})}async run(e,t,i){const n=wd.get(t);if(n){const o=i?{searchString:i.searchString,replaceString:i.replaceString,isReplaceRevealed:i.replaceString!==void 0,isRegex:i.isRegex,wholeWord:i.matchWholeWord,matchCase:i.isCaseSensitive,preserveCase:i.preserveCase}:{};await n.start({forceRevealReplace:!1,seedSearchStringFromSelection:n.getState().searchString.length===0&&t.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:(i==null?void 0:i.findInSelection)||!1,loop:t.getOption(41).loop},o),n.setGlobalBufferTerm(n.getState().searchString)}}}class Fbt extends Tt{constructor(){super({id:Js.StartFindWithSelection,label:F("startFindWithSelectionAction","Find With Selection"),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}async run(e,t){const i=wd.get(t);i&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),i.setGlobalBufferTerm(i.getState().searchString))}}class Rye extends Tt{async run(e,t){const i=wd.get(t);i&&!this._run(i)&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:i.getState().searchString.length===0&&t.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}class Abt extends Rye{constructor(){super({id:Js.NextMatchFindAction,label:F("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:[{kbExpr:$.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:Ge.and($.focus,P9),primary:3,weight:100}]})}_run(e){return e.moveToNextMatch()?(e.editor.pushUndoStop(),!0):!1}}class Zbt extends Rye{constructor(){super({id:Js.PreviousMatchFindAction,label:F("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:[{kbExpr:$.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:Ge.and($.focus,P9),primary:1027,weight:100}]})}_run(e){return e.moveToPrevMatch()}}class Sbt extends Tt{constructor(){super({id:Js.GoToMatchFindAction,label:F("findMatchAction.goToMatch","Go to Match..."),alias:"Go to Match...",precondition:ub}),this._highlightDecorations=[]}run(e,t,i){const n=wd.get(t);if(!n)return;const o=n.getState().matchesCount;if(o<1){e.get(jo).notify({severity:O3.Warning,message:F("findMatchAction.noResults","No matches. Try searching for something else.")});return}const r=e.get(tu),l=new De,a=l.add(r.createInputBox());a.placeholder=F("findMatchAction.inputPlaceHolder","Type a number to go to a specific match (between 1 and {0})",o);const d=h=>{const u=parseInt(h);if(isNaN(u))return;const m=n.getState().matchesCount;if(u>0&&u<=m)return u-1;if(u<0&&u>=-m)return m+u},c=h=>{const u=d(h);if(typeof u=="number"){a.validationMessage=void 0,n.goToMatch(u);const m=n.getState().currentMatch;m&&this.addDecorations(t,m)}else a.validationMessage=F("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",n.getState().matchesCount),this.clearDecorations(t)};l.add(a.onDidChangeValue(h=>{c(h)})),l.add(a.onDidAccept(()=>{const h=d(a.value);typeof h=="number"?(n.goToMatch(h),a.hide()):a.validationMessage=F("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",n.getState().matchesCount)})),l.add(a.onDidHide(()=>{this.clearDecorations(t),l.dispose()})),a.show()}clearDecorations(e){e.changeDecorations(t=>{this._highlightDecorations=t.deltaDecorations(this._highlightDecorations,[])})}addDecorations(e,t){e.changeDecorations(i=>{this._highlightDecorations=i.deltaDecorations(this._highlightDecorations,[{range:t,options:{description:"find-match-quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"find-match-quick-access-range-highlight-overview",overviewRuler:{color:Vo(NRe),position:eh.Full}}}])})}}class Vye extends Tt{async run(e,t){const i=wd.get(t);if(!i)return;const n=Tee(t,"single",!1);n&&i.setSearchString(n),this._run(i)||(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}class Nbt extends Vye{constructor(){super({id:Js.NextSelectionMatchFindAction,label:F("nextSelectionMatchFindAction","Find Next Selection"),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:2109,weight:100}})}_run(e){return e.moveToNextMatch()}}class Rbt extends Vye{constructor(){super({id:Js.PreviousSelectionMatchFindAction,label:F("previousSelectionMatchFindAction","Find Previous Selection"),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:3133,weight:100}})}_run(e){return e.moveToPrevMatch()}}const Vbt=ZSe(new ASe({id:Js.StartFindReplaceAction,label:F("startReplace","Replace"),alias:"Replace",precondition:Ge.or($.focus,Ge.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:Gt.MenubarEditMenu,group:"3_find",title:F({key:"miReplace",comment:["&& denotes a mnemonic"]},"&&Replace"),order:2}}));Vbt.addImplementation(0,(s,e,t)=>{if(!e.hasModel()||e.getOption(92))return!1;const i=wd.get(e);if(!i)return!1;const n=e.getSelection(),o=i.isFindInputFocused(),r=!n.isEmpty()&&n.startLineNumber===n.endLineNumber&&e.getOption(41).seedSearchStringFromSelection!=="never"&&!o,l=o||r?2:1;return i.start({forceRevealReplace:!0,seedSearchStringFromSelection:r?"single":"none",seedSearchStringFromNonEmptySelection:e.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:e.getOption(41).seedSearchStringFromSelection!=="never",shouldFocus:l,shouldAnimate:!0,updateSearchScope:!1,loop:e.getOption(41).loop})});Wn(wd.ID,Cee,0);lt(Ubt);lt(Fbt);lt(Abt);lt(Zbt);lt(Sbt);lt(Nbt);lt(Rbt);const Sp=Nr.bindToContribution(wd.get);Vt(new Sp({id:Js.CloseFindWidgetCommand,precondition:ub,handler:s=>s.closeFindWidget(),kbOpts:{weight:100+5,kbExpr:Ge.and($.focus,Ge.not("isComposing")),primary:9,secondary:[1033]}}));Vt(new Sp({id:Js.ToggleCaseSensitiveCommand,precondition:void 0,handler:s=>s.toggleCaseSensitive(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:BI.primary,mac:BI.mac,win:BI.win,linux:BI.linux}}));Vt(new Sp({id:Js.ToggleWholeWordCommand,precondition:void 0,handler:s=>s.toggleWholeWords(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:LI.primary,mac:LI.mac,win:LI.win,linux:LI.linux}}));Vt(new Sp({id:Js.ToggleRegexCommand,precondition:void 0,handler:s=>s.toggleRegex(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:vI.primary,mac:vI.mac,win:vI.win,linux:vI.linux}}));Vt(new Sp({id:Js.ToggleSearchScopeCommand,precondition:void 0,handler:s=>s.toggleSearchScope(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:kI.primary,mac:kI.mac,win:kI.win,linux:kI.linux}}));Vt(new Sp({id:Js.TogglePreserveCaseCommand,precondition:void 0,handler:s=>s.togglePreserveCase(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:xI.primary,mac:xI.mac,win:xI.win,linux:xI.linux}}));Vt(new Sp({id:Js.ReplaceOneAction,precondition:ub,handler:s=>s.replace(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:3094}}));Vt(new Sp({id:Js.ReplaceOneAction,precondition:ub,handler:s=>s.replace(),kbOpts:{weight:100+5,kbExpr:Ge.and($.focus,Vle),primary:3}}));Vt(new Sp({id:Js.ReplaceAllAction,precondition:ub,handler:s=>s.replaceAll(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:2563}}));Vt(new Sp({id:Js.ReplaceAllAction,precondition:ub,handler:s=>s.replaceAll(),kbOpts:{weight:100+5,kbExpr:Ge.and($.focus,Vle),primary:void 0,mac:{primary:2051}}}));Vt(new Sp({id:Js.SelectAllMatchesAction,precondition:ub,handler:s=>s.selectAllMatches(),kbOpts:{weight:100+5,kbExpr:$.focus,primary:515}}));const Wbt={0:" ",1:"u",2:"r"},m0e=65535,Gm=16777215,p0e=4278190080;class fH{constructor(e){const t=Math.ceil(e/32);this._states=new Uint32Array(t)}get(e){const t=e/32|0,i=e%32;return(this._states[t]&1<<i)!==0}set(e,t){const i=e/32|0,n=e%32,o=this._states[i];t?this._states[i]=o|1<<n:this._states[i]=o&~(1<<n)}}class Jc{constructor(e,t,i){if(e.length!==t.length||e.length>m0e)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=e,this._endIndexes=t,this._collapseStates=new fH(e.length),this._userDefinedStates=new fH(e.length),this._recoveredStates=new fH(e.length),this._types=i,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const e=[],t=(i,n)=>{const o=e[e.length-1];return this.getStartLineNumber(o)<=i&&this.getEndLineNumber(o)>=n};for(let i=0,n=this._startIndexes.length;i<n;i++){const o=this._startIndexes[i],r=this._endIndexes[i];if(o>Gm||r>Gm)throw new Error("startLineNumber or endLineNumber must not exceed "+Gm);for(;e.length>0&&!t(o,r);)e.pop();const l=e.length>0?e[e.length-1]:-1;e.push(i),this._startIndexes[i]=o+((l&255)<<24),this._endIndexes[i]=r+((l&65280)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(e){return this._startIndexes[e]&Gm}getEndLineNumber(e){return this._endIndexes[e]&Gm}getType(e){return this._types?this._types[e]:void 0}hasTypes(){return!!this._types}isCollapsed(e){return this._collapseStates.get(e)}setCollapsed(e,t){this._collapseStates.set(e,t)}isUserDefined(e){return this._userDefinedStates.get(e)}setUserDefined(e,t){return this._userDefinedStates.set(e,t)}isRecovered(e){return this._recoveredStates.get(e)}setRecovered(e,t){return this._recoveredStates.set(e,t)}getSource(e){return this.isUserDefined(e)?1:this.isRecovered(e)?2:0}setSource(e,t){t===1?(this.setUserDefined(e,!0),this.setRecovered(e,!1)):t===2?(this.setUserDefined(e,!1),this.setRecovered(e,!0)):(this.setUserDefined(e,!1),this.setRecovered(e,!1))}setCollapsedAllOfType(e,t){let i=!1;if(this._types)for(let n=0;n<this._types.length;n++)this._types[n]===e&&(this.setCollapsed(n,t),i=!0);return i}toRegion(e){return new ybt(this,e)}getParentIndex(e){this.ensureParentIndices();const t=((this._startIndexes[e]&p0e)>>>24)+((this._endIndexes[e]&p0e)>>>16);return t===m0e?-1:t}contains(e,t){return this.getStartLineNumber(e)<=t&&this.getEndLineNumber(e)>=t}findIndex(e){let t=0,i=this._startIndexes.length;if(i===0)return-1;for(;t<i;){const n=Math.floor((t+i)/2);e<this.getStartLineNumber(n)?i=n:t=n+1}return t-1}findRange(e){let t=this.findIndex(e);if(t>=0){if(this.getEndLineNumber(t)>=e)return t;for(t=this.getParentIndex(t);t!==-1;){if(this.contains(t,e))return t;t=this.getParentIndex(t)}}return-1}toString(){const e=[];for(let t=0;t<this.length;t++)e[t]=`[${Wbt[this.getSource(t)]}${this.isCollapsed(t)?"+":"-"}] ${this.getStartLineNumber(t)}/${this.getEndLineNumber(t)}`;return e.join(", ")}toFoldRange(e){return{startLineNumber:this._startIndexes[e]&Gm,endLineNumber:this._endIndexes[e]&Gm,type:this._types?this._types[e]:void 0,isCollapsed:this.isCollapsed(e),source:this.getSource(e)}}static fromFoldRanges(e){const t=e.length,i=new Uint32Array(t),n=new Uint32Array(t);let o=[],r=!1;for(let a=0;a<t;a++){const d=e[a];i[a]=d.startLineNumber,n[a]=d.endLineNumber,o.push(d.type),d.type&&(r=!0)}r||(o=void 0);const l=new Jc(i,n,o);for(let a=0;a<t;a++)e[a].isCollapsed&&l.setCollapsed(a,!0),l.setSource(a,e[a].source);return l}static sanitizeAndMerge(e,t,i,n){i=i??Number.MAX_VALUE;const o=(f,b)=>Array.isArray(f)?U=>U<b?f[U]:void 0:U=>U<b?f.toFoldRange(U):void 0,r=o(e,e.length),l=o(t,t.length);let a=0,d=0,c=r(0),h=l(0);const u=[];let m,p=0;const g=[];for(;c||h;){let f;if(h&&(!c||c.startLineNumber>=h.startLineNumber))c&&c.startLineNumber===h.startLineNumber?(h.source===1?f=h:(f=c,f.isCollapsed=h.isCollapsed&&(c.endLineNumber===h.endLineNumber||!(n!=null&&n.startsInside(c.startLineNumber+1,c.endLineNumber+1))),f.source=0),c=r(++a)):(f=h,h.isCollapsed&&h.source===0&&(f.source=2)),h=l(++d);else{let b=d,U=h;for(;;){if(!U||U.startLineNumber>c.endLineNumber){f=c;break}if(U.source===1&&U.endLineNumber>c.endLineNumber)break;U=l(++b)}c=r(++a)}if(f){for(;m&&m.endLineNumber<f.startLineNumber;)m=u.pop();f.endLineNumber>f.startLineNumber&&f.startLineNumber>p&&f.endLineNumber<=i&&(!m||m.endLineNumber>=f.endLineNumber)&&(g.push(f),p=f.startLineNumber,m&&u.push(m),m=f)}}return g}}class ybt{constructor(e,t){this.ranges=e,this.index=t}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(e){return e.startLineNumber<=this.startLineNumber&&e.endLineNumber>=this.endLineNumber}containsLine(e){return this.startLineNumber<=e&&e<=this.endLineNumber}}class Qbt{get regions(){return this._regions}get textModel(){return this._textModel}constructor(e,t){this._updateEventEmitter=new fe,this.onDidChange=this._updateEventEmitter.event,this._textModel=e,this._decorationProvider=t,this._regions=new Jc(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(e){if(!e.length)return;e=e.sort((i,n)=>i.regionIndex-n.regionIndex);const t={};this._decorationProvider.changeDecorations(i=>{let n=0,o=-1,r=-1;const l=a=>{for(;n<a;){const d=this._regions.getEndLineNumber(n),c=this._regions.isCollapsed(n);if(d<=o){const h=this.regions.getSource(n)!==0;i.changeDecorationOptions(this._editorDecorationIds[n],this._decorationProvider.getDecorationOption(c,d<=r,h))}c&&d>r&&(r=d),n++}};for(const a of e){const d=a.regionIndex,c=this._editorDecorationIds[d];if(c&&!t[c]){t[c]=!0,l(d);const h=!this._regions.isCollapsed(d);this._regions.setCollapsed(d,h),o=Math.max(o,this._regions.getEndLineNumber(d))}}l(this._regions.length)}),this._updateEventEmitter.fire({model:this,collapseStateChanged:e})}removeManualRanges(e){const t=new Array,i=n=>{for(const o of e)if(!(o.startLineNumber>n.endLineNumber||n.startLineNumber>o.endLineNumber))return!0;return!1};for(let n=0;n<this._regions.length;n++){const o=this._regions.toFoldRange(n);(o.source===0||!i(o))&&t.push(o)}this.updatePost(Jc.fromFoldRanges(t))}update(e,t){const i=this._currentFoldedOrManualRanges(t),n=Jc.sanitizeAndMerge(e,i,this._textModel.getLineCount(),t);this.updatePost(Jc.fromFoldRanges(n))}updatePost(e){const t=[];let i=-1;for(let n=0,o=e.length;n<o;n++){const r=e.getStartLineNumber(n),l=e.getEndLineNumber(n),a=e.isCollapsed(n),d=e.getSource(n)!==0,c={startLineNumber:r,startColumn:this._textModel.getLineMaxColumn(r),endLineNumber:l,endColumn:this._textModel.getLineMaxColumn(l)+1};t.push({range:c,options:this._decorationProvider.getDecorationOption(a,l<=i,d)}),a&&l>i&&(i=l)}this._decorationProvider.changeDecorations(n=>this._editorDecorationIds=n.deltaDecorations(this._editorDecorationIds,t)),this._regions=e,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(e){const t=[];for(let i=0,n=this._regions.length;i<n;i++){let o=this.regions.isCollapsed(i);const r=this.regions.getSource(i);if(o||r!==0){const l=this._regions.toFoldRange(i),a=this._textModel.getDecorationRange(this._editorDecorationIds[i]);a&&(o&&(e!=null&&e.startsInside(a.startLineNumber+1,a.endLineNumber))&&(o=!1),t.push({startLineNumber:a.startLineNumber,endLineNumber:a.endLineNumber,type:l.type,isCollapsed:o,source:r}))}}return t}getMemento(){const e=this._currentFoldedOrManualRanges(),t=[],i=this._textModel.getLineCount();for(let n=0,o=e.length;n<o;n++){const r=e[n];if(r.startLineNumber>=r.endLineNumber||r.startLineNumber<1||r.endLineNumber>i)continue;const l=this._getLinesChecksum(r.startLineNumber+1,r.endLineNumber);t.push({startLineNumber:r.startLineNumber,endLineNumber:r.endLineNumber,isCollapsed:r.isCollapsed,source:r.source,checksum:l})}return t.length>0?t:void 0}applyMemento(e){if(!Array.isArray(e))return;const t=[],i=this._textModel.getLineCount();for(const o of e){if(o.startLineNumber>=o.endLineNumber||o.startLineNumber<1||o.endLineNumber>i)continue;const r=this._getLinesChecksum(o.startLineNumber+1,o.endLineNumber);(!o.checksum||r===o.checksum)&&t.push({startLineNumber:o.startLineNumber,endLineNumber:o.endLineNumber,type:void 0,isCollapsed:o.isCollapsed??!0,source:o.source??0})}const n=Jc.sanitizeAndMerge(this._regions,t,i);this.updatePost(Jc.fromFoldRanges(n))}_getLinesChecksum(e,t){return Q3(this._textModel.getLineContent(e)+this._textModel.getLineContent(t))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(e,t){const i=[];if(this._regions){let n=this._regions.findRange(e),o=1;for(;n>=0;){const r=this._regions.toRegion(n);(!t||t(r,o))&&i.push(r),o++,n=r.parentIndex}}return i}getRegionAtLine(e){if(this._regions){const t=this._regions.findRange(e);if(t>=0)return this._regions.toRegion(t)}return null}getRegionsInside(e,t){const i=[],n=e?e.regionIndex+1:0,o=e?e.endLineNumber:Number.MAX_VALUE;if(t&&t.length===2){const r=[];for(let l=n,a=this._regions.length;l<a;l++){const d=this._regions.toRegion(l);if(this._regions.getStartLineNumber(l)<o){for(;r.length>0&&!d.containedBy(r[r.length-1]);)r.pop();r.push(d),t(d,r.length)&&i.push(d)}else break}}else for(let r=n,l=this._regions.length;r<l;r++){const a=this._regions.toRegion(r);if(this._regions.getStartLineNumber(r)<o)(!t||t(a))&&i.push(a);else break}return i}}function Qle(s,e,t){const i=[];for(const n of t){const o=s.getRegionAtLine(n);if(o){const r=!o.isCollapsed;if(i.push(o),e>1){const l=s.getRegionsInside(o,(a,d)=>a.isCollapsed!==r&&d<e);i.push(...l)}}}s.toggleCollapseState(i)}function LM(s,e,t=Number.MAX_VALUE,i){const n=[];if(i&&i.length>0)for(const o of i){const r=s.getRegionAtLine(o);if(r&&(r.isCollapsed!==e&&n.push(r),t>1)){const l=s.getRegionsInside(r,(a,d)=>a.isCollapsed!==e&&d<t);n.push(...l)}}else{const o=s.getRegionsInside(null,(r,l)=>r.isCollapsed!==e&&l<t);n.push(...o)}s.toggleCollapseState(n)}function Wye(s,e,t,i){const n=[];for(const o of i){const r=s.getAllRegionsAtLine(o,(l,a)=>l.isCollapsed!==e&&a<=t);n.push(...r)}s.toggleCollapseState(n)}function Mbt(s,e,t){const i=[];for(const n of t){const o=s.getAllRegionsAtLine(n,r=>r.isCollapsed!==e);o.length>0&&i.push(o[0])}s.toggleCollapseState(i)}function wbt(s,e,t,i){const n=(r,l)=>l===e&&r.isCollapsed!==t&&!i.some(a=>r.containsLine(a)),o=s.getRegionsInside(null,n);s.toggleCollapseState(o)}function yye(s,e,t){const i=[];for(const r of t){const l=s.getAllRegionsAtLine(r,void 0);l.length>0&&i.push(l[0])}const n=r=>i.every(l=>!l.containedBy(r)&&!r.containedBy(l))&&r.isCollapsed!==e,o=s.getRegionsInside(null,n);s.toggleCollapseState(o)}function Mle(s,e,t){const i=s.textModel,n=s.regions,o=[];for(let r=n.length-1;r>=0;r--)if(t!==n.isCollapsed(r)){const l=n.getStartLineNumber(r);e.test(i.getLineContent(l))&&o.push(n.toRegion(r))}s.toggleCollapseState(o)}function wle(s,e,t){const i=s.regions,n=[];for(let o=i.length-1;o>=0;o--)t!==i.isCollapsed(o)&&e===i.getType(o)&&n.push(i.toRegion(o));s.toggleCollapseState(n)}function Tbt(s,e){let t=null;const i=e.getRegionAtLine(s);if(i!==null&&(t=i.startLineNumber,s===t)){const n=i.parentIndex;n!==-1?t=e.regions.getStartLineNumber(n):t=null}return t}function Cbt(s,e){let t=e.getRegionAtLine(s);if(t!==null&&t.startLineNumber===s){if(s!==t.startLineNumber)return t.startLineNumber;{const i=t.parentIndex;let n=0;for(i!==-1&&(n=e.regions.getStartLineNumber(t.parentIndex));t!==null;)if(t.regionIndex>0){if(t=e.regions.toRegion(t.regionIndex-1),t.startLineNumber<=n)return null;if(t.parentIndex===i)return t.startLineNumber}else return null}}else if(e.regions.length>0)for(t=e.regions.toRegion(e.regions.length-1);t!==null;){if(t.startLineNumber<s)return t.startLineNumber;t.regionIndex>0?t=e.regions.toRegion(t.regionIndex-1):t=null}return null}function Bbt(s,e){let t=e.getRegionAtLine(s);if(t!==null&&t.startLineNumber===s){const i=t.parentIndex;let n=0;if(i!==-1)n=e.regions.getEndLineNumber(t.parentIndex);else{if(e.regions.length===0)return null;n=e.regions.getEndLineNumber(e.regions.length-1)}for(;t!==null;)if(t.regionIndex<e.regions.length){if(t=e.regions.toRegion(t.regionIndex+1),t.startLineNumber>=n)return null;if(t.parentIndex===i)return t.startLineNumber}else return null}else if(e.regions.length>0)for(t=e.regions.toRegion(0);t!==null;){if(t.startLineNumber>s)return t.startLineNumber;t.regionIndex<e.regions.length?t=e.regions.toRegion(t.regionIndex+1):t=null}return null}class Lbt{get onDidChange(){return this._updateEventEmitter.event}get hiddenRanges(){return this._hiddenRanges}constructor(e){this._updateEventEmitter=new fe,this._hasLineChanges=!1,this._foldingModel=e,this._foldingModelListener=e.onDidChange(t=>this.updateHiddenRanges()),this._hiddenRanges=[],e.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(e){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=e.changes.some(t=>t.range.endLineNumber!==t.range.startLineNumber||IF(t.text)[0]!==0))}updateHiddenRanges(){let e=!1;const t=[];let i=0,n=0,o=Number.MAX_VALUE,r=-1;const l=this._foldingModel.regions;for(;i<l.length;i++){if(!l.isCollapsed(i))continue;const a=l.getStartLineNumber(i)+1,d=l.getEndLineNumber(i);o<=a&&d<=r||(!e&&n<this._hiddenRanges.length&&this._hiddenRanges[n].startLineNumber===a&&this._hiddenRanges[n].endLineNumber===d?(t.push(this._hiddenRanges[n]),n++):(e=!0,t.push(new z(a,1,d,1))),o=a,r=d)}(this._hasLineChanges||e||n<this._hiddenRanges.length)&&this.applyHiddenRanges(t)}applyHiddenRanges(e){this._hiddenRanges=e,this._hasLineChanges=!1,this._updateEventEmitter.fire(e)}hasRanges(){return this._hiddenRanges.length>0}isHidden(e){return g0e(this._hiddenRanges,e)!==null}adjustSelections(e){let t=!1;const i=this._foldingModel.textModel;let n=null;const o=r=>((!n||!vbt(r,n))&&(n=g0e(this._hiddenRanges,r)),n?n.startLineNumber-1:null);for(let r=0,l=e.length;r<l;r++){let a=e[r];const d=o(a.startLineNumber);d&&(a=a.setStartPosition(d,i.getLineMaxColumn(d)),t=!0);const c=o(a.endLineNumber);c&&(a=a.setEndPosition(c,i.getLineMaxColumn(c)),t=!0),e[r]=a}return t}dispose(){this.hiddenRanges.length>0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}function vbt(s,e){return s>=e.startLineNumber&&s<=e.endLineNumber}function g0e(s,e){const t=eL(s,i=>e<i.startLineNumber)-1;return t>=0&&s[t].endLineNumber>=e?s[t]:null}const kbt=5e3,xbt="indent";class Tle{constructor(e,t,i){this.editorModel=e,this.languageConfigurationService=t,this.foldingRangesLimit=i,this.id=xbt}dispose(){}compute(e){const t=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,i=t&&!!t.offSide,n=t&&t.markers;return Promise.resolve(Dbt(this.editorModel,i,n,this.foldingRangesLimit))}}let Ibt=class{constructor(e){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=e}insertFirst(e,t,i){if(e>Gm||t>Gm)return;const n=this._length;this._startIndexes[n]=e,this._endIndexes[n]=t,this._length++,i<1e3&&(this._indentOccurrences[i]=(this._indentOccurrences[i]||0)+1)}toIndentRanges(e){const t=this._foldingRangesLimit.limit;if(this._length<=t){this._foldingRangesLimit.update(this._length,!1);const i=new Uint32Array(this._length),n=new Uint32Array(this._length);for(let o=this._length-1,r=0;o>=0;o--,r++)i[r]=this._startIndexes[o],n[r]=this._endIndexes[o];return new Jc(i,n)}else{this._foldingRangesLimit.update(this._length,t);let i=0,n=this._indentOccurrences.length;for(let a=0;a<this._indentOccurrences.length;a++){const d=this._indentOccurrences[a];if(d){if(d+i>t){n=a;break}i+=d}}const o=e.getOptions().tabSize,r=new Uint32Array(t),l=new Uint32Array(t);for(let a=this._length-1,d=0;a>=0;a--){const c=this._startIndexes[a],h=e.getLineContent(c),u=b9(h,o);(u<n||u===n&&i++<t)&&(r[d]=c,l[d]=this._endIndexes[a],d++)}return new Jc(r,l)}}};const Ebt={limit:kbt,update:()=>{}};function Dbt(s,e,t,i=Ebt){const n=s.getOptions().tabSize,o=new Ibt(i);let r;t&&(r=new RegExp(`(${t.start.source})|(?:${t.end.source})`));const l=[],a=s.getLineCount()+1;l.push({indent:-1,endAbove:a,line:a});for(let d=s.getLineCount();d>0;d--){const c=s.getLineContent(d),h=b9(c,n);let u=l[l.length-1];if(h===-1){e&&(u.endAbove=d);continue}let m;if(r&&(m=c.match(r)))if(m[1]){let p=l.length-1;for(;p>0&&l[p].indent!==-2;)p--;if(p>0){l.length=p+1,u=l[p],o.insertFirst(d,u.line,h),u.line=d,u.indent=h,u.endAbove=d;continue}}else{l.push({indent:-2,endAbove:d,line:d});continue}if(u.indent>h){do l.pop(),u=l[l.length-1];while(u.indent>h);const p=u.endAbove-1;p-d>=1&&o.insertFirst(d,p,h)}u.indent===h?u.endAbove=d:l.push({indent:h,endAbove:d,line:d})}return o.toIndentRanges(s)}const Gbt=te("editor.foldBackground",{light:Oi(zU,.3),dark:Oi(zU,.3),hcDark:null,hcLight:null},F("foldBackgroundBackground","Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.foldPlaceholderForeground",{light:"#808080",dark:"#808080",hcDark:null,hcLight:null},F("collapsedTextColor","Color of the collapsed text after the first line of a folded range."));te("editorGutter.foldingControlForeground",WX,F("editorGutter.foldingControlForeground","Color of the folding control in the editor gutter."));const aY=Os("folding-expanded",ct.chevronDown,F("foldingExpandedIcon","Icon for expanded ranges in the editor glyph margin.")),dY=Os("folding-collapsed",ct.chevronRight,F("foldingCollapsedIcon","Icon for collapsed ranges in the editor glyph margin.")),f0e=Os("folding-manual-collapsed",dY,F("foldingManualCollapedIcon","Icon for manually collapsed ranges in the editor glyph margin.")),b0e=Os("folding-manual-expanded",aY,F("foldingManualExpandedIcon","Icon for manually expanded ranges in the editor glyph margin.")),bH={color:Vo(Gbt),position:1},KR=F("linesCollapsed","Click to expand the range."),DI=F("linesExpanded","Click to collapse the range."),rr=class rr{constructor(e){this.editor=e,this.showFoldingControls="mouseover",this.showFoldingHighlights=!0}getDecorationOption(e,t,i){return t?rr.HIDDEN_RANGE_DECORATION:this.showFoldingControls==="never"?e?this.showFoldingHighlights?rr.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:rr.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:rr.NO_CONTROLS_EXPANDED_RANGE_DECORATION:e?i?this.showFoldingHighlights?rr.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:rr.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?rr.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:rr.COLLAPSED_VISUAL_DECORATION:this.showFoldingControls==="mouseover"?i?rr.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:rr.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:i?rr.MANUALLY_EXPANDED_VISUAL_DECORATION:rr.EXPANDED_VISUAL_DECORATION}changeDecorations(e){return this.editor.changeDecorations(e)}removeDecorations(e){this.editor.removeDecorations(e)}};rr.COLLAPSED_VISUAL_DECORATION=ki.register({description:"folding-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:KR,firstLineDecorationClassName:ui.asClassName(dY)}),rr.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=ki.register({description:"folding-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:bH,isWholeLine:!0,linesDecorationsTooltip:KR,firstLineDecorationClassName:ui.asClassName(dY)}),rr.MANUALLY_COLLAPSED_VISUAL_DECORATION=ki.register({description:"folding-manually-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:KR,firstLineDecorationClassName:ui.asClassName(f0e)}),rr.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=ki.register({description:"folding-manually-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:bH,isWholeLine:!0,linesDecorationsTooltip:KR,firstLineDecorationClassName:ui.asClassName(f0e)}),rr.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=ki.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:KR}),rr.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=ki.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:bH,isWholeLine:!0,linesDecorationsTooltip:KR}),rr.EXPANDED_VISUAL_DECORATION=ki.register({description:"folding-expanded-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+ui.asClassName(aY),linesDecorationsTooltip:DI}),rr.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=ki.register({description:"folding-expanded-auto-hide-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:ui.asClassName(aY),linesDecorationsTooltip:DI}),rr.MANUALLY_EXPANDED_VISUAL_DECORATION=ki.register({description:"folding-manually-expanded-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+ui.asClassName(b0e),linesDecorationsTooltip:DI}),rr.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=ki.register({description:"folding-manually-expanded-auto-hide-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:ui.asClassName(b0e),linesDecorationsTooltip:DI}),rr.NO_CONTROLS_EXPANDED_RANGE_DECORATION=ki.register({description:"folding-no-controls-range-decoration",stickiness:0,isWholeLine:!0}),rr.HIDDEN_RANGE_DECORATION=ki.register({description:"folding-hidden-range-decoration",stickiness:1});let Bee=rr;const Jbt={},Xbt="syntax";class Cle{constructor(e,t,i,n,o){this.editorModel=e,this.providers=t,this.handleFoldingRangesChange=i,this.foldingRangesLimit=n,this.fallbackRangeProvider=o,this.id=Xbt,this.disposables=new De,o&&this.disposables.add(o);for(const r of t)typeof r.onDidChange=="function"&&this.disposables.add(r.onDidChange(i))}compute(e){return Ybt(this.providers,this.editorModel,e).then(t=>{var i;return t?zbt(t,this.foldingRangesLimit):((i=this.fallbackRangeProvider)==null?void 0:i.compute(e))??null})}dispose(){this.disposables.dispose()}}function Ybt(s,e,t){let i=null;const n=s.map((o,r)=>Promise.resolve(o.provideFoldingRanges(e,Jbt,t)).then(l=>{if(!t.isCancellationRequested&&Array.isArray(l)){Array.isArray(i)||(i=[]);const a=e.getLineCount();for(const d of l)d.start>0&&d.end>d.start&&d.end<=a&&i.push({start:d.start,end:d.end,rank:r,kind:d.kind})}},vo));return Promise.all(n).then(o=>i)}class _bt{constructor(e){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=e}add(e,t,i,n){if(e>Gm||t>Gm)return;const o=this._length;this._startIndexes[o]=e,this._endIndexes[o]=t,this._nestingLevels[o]=n,this._types[o]=i,this._length++,n<30&&(this._nestingLevelCounts[n]=(this._nestingLevelCounts[n]||0)+1)}toIndentRanges(){const e=this._foldingRangesLimit.limit;if(this._length<=e){this._foldingRangesLimit.update(this._length,!1);const t=new Uint32Array(this._length),i=new Uint32Array(this._length);for(let n=0;n<this._length;n++)t[n]=this._startIndexes[n],i[n]=this._endIndexes[n];return new Jc(t,i,this._types)}else{this._foldingRangesLimit.update(this._length,e);let t=0,i=this._nestingLevelCounts.length;for(let l=0;l<this._nestingLevelCounts.length;l++){const a=this._nestingLevelCounts[l];if(a){if(a+t>e){i=l;break}t+=a}}const n=new Uint32Array(e),o=new Uint32Array(e),r=[];for(let l=0,a=0;l<this._length;l++){const d=this._nestingLevels[l];(d<i||d===i&&t++<e)&&(n[a]=this._startIndexes[l],o[a]=this._endIndexes[l],r[a]=this._types[l],a++)}return new Jc(n,o,r)}}}function zbt(s,e){const t=s.sort((r,l)=>{let a=r.start-l.start;return a===0&&(a=r.rank-l.rank),a}),i=new _bt(e);let n;const o=[];for(const r of t)if(!n)n=r,i.add(r.start,r.end,r.kind&&r.kind.value,o.length);else if(r.start>n.start)if(r.end<=n.end)o.push(n),n=r,i.add(r.start,r.end,r.kind&&r.kind.value,o.length);else{if(r.start>n.end){do n=o.pop();while(n&&r.start>n.end);n&&o.push(n),n=r}i.add(r.start,r.end,r.kind&&r.kind.value,o.length)}return i.toIndentRanges()}var Obt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Cw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},pZ;const Bl=new yt("foldingEnabled",!1);var xQ;let jF=(xQ=class extends be{static get(e){return e.getContribution(pZ.ID)}static getFoldingRangeProviders(e,t){var n;const i=e.foldingRangeProvider.ordered(t);return((n=pZ._foldingRangeSelector)==null?void 0:n.call(pZ,i,t))??i}constructor(e,t,i,n,o,r){super(),this.contextKeyService=t,this.languageConfigurationService=i,this.languageFeaturesService=r,this.localToDispose=this._register(new De),this.editor=e,this._foldingLimitReporter=new Qye(e);const l=this.editor.getOptions();this._isEnabled=l.get(43),this._useFoldingProviders=l.get(44)!=="indentation",this._unfoldOnClickAfterEndOfLine=l.get(48),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=l.get(46),this.updateDebounceInfo=o.for(r.foldingRangeProvider,"Folding",{min:200}),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new Bee(e),this.foldingDecorationProvider.showFoldingControls=l.get(111),this.foldingDecorationProvider.showFoldingHighlights=l.get(45),this.foldingEnabled=Bl.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel(()=>this.onModelChanged())),this._register(this.editor.onDidChangeConfiguration(a=>{if(a.hasChanged(43)&&(this._isEnabled=this.editor.getOptions().get(43),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),a.hasChanged(47)&&this.onModelChanged(),a.hasChanged(111)||a.hasChanged(45)){const d=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=d.get(111),this.foldingDecorationProvider.showFoldingHighlights=d.get(45),this.triggerFoldingModelChanged()}a.hasChanged(44)&&(this._useFoldingProviders=this.editor.getOptions().get(44)!=="indentation",this.onFoldingStrategyChanged()),a.hasChanged(48)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(48)),a.hasChanged(46)&&(this._foldingImportsByDefault=this.editor.getOptions().get(46))})),this.onModelChanged()}saveViewState(){const e=this.editor.getModel();if(!e||!this._isEnabled||e.isTooLargeForTokenization())return{};if(this.foldingModel){const t=this.foldingModel.getMemento(),i=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:t,lineCount:e.getLineCount(),provider:i,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(e){const t=this.editor.getModel();if(!(!t||!this._isEnabled||t.isTooLargeForTokenization()||!this.hiddenRangeModel)&&e&&(this._currentModelHasFoldedImports=!!e.foldedImports,e.collapsedRegions&&e.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(e.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const e=this.editor.getModel();!this._isEnabled||!e||e.isTooLargeForTokenization()||(this._currentModelHasFoldedImports=!1,this.foldingModel=new Qbt(e,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new Lbt(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(t=>this.onHiddenRangesChanges(t))),this.updateScheduler=new Oh(this.updateDebounceInfo.get(e)),this.cursorChangedScheduler=new cs(()=>this.revealCursor(),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelContent(t=>this.onDidChangeModelContent(t))),this.localToDispose.add(this.editor.onDidChangeCursorPosition(()=>this.onCursorPositionChanged())),this.localToDispose.add(this.editor.onMouseDown(t=>this.onEditorMouseDown(t))),this.localToDispose.add(this.editor.onMouseUp(t=>this.onEditorMouseUp(t))),this.localToDispose.add({dispose:()=>{var t,i;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),(t=this.updateScheduler)==null||t.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,(i=this.rangeProvider)==null||i.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var e;(e=this.rangeProvider)==null||e.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(e){if(this.rangeProvider)return this.rangeProvider;const t=new Tle(e,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=t,this._useFoldingProviders&&this.foldingModel){const i=pZ.getFoldingRangeProviders(this.languageFeaturesService,e);i.length>0&&(this.rangeProvider=new Cle(e,i,()=>this.triggerFoldingModelChanged(),this._foldingLimitReporter,t))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(e){var t;(t=this.hiddenRangeModel)==null||t.notifyChangeModelContent(e),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(()=>{const e=this.foldingModel;if(!e)return null;const t=new jr,i=this.getRangeProvider(e.textModel),n=this.foldingRegionPromise=Tr(o=>i.compute(o));return n.then(o=>{if(o&&n===this.foldingRegionPromise){let r;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const d=o.setCollapsedAllOfType(BF.Imports.value,!0);d&&(r=mp.capture(this.editor),this._currentModelHasFoldedImports=d)}const l=this.editor.getSelections();e.update(o,jbt(l)),r==null||r.restore(this.editor);const a=this.updateDebounceInfo.update(e.textModel,t.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=a)}return e})}).then(void 0,e=>(wi(e),null)))}onHiddenRangesChanges(e){if(this.hiddenRangeModel&&e.length&&!this._restoringViewState){const t=this.editor.getSelections();t&&this.hiddenRangeModel.adjustSelections(t)&&this.editor.setSelections(t)}this.editor.setHiddenAreas(e,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const e=this.getFoldingModel();e&&e.then(t=>{if(t){const i=this.editor.getSelections();if(i&&i.length>0){const n=[];for(const o of i){const r=o.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden(r)&&n.push(...t.getAllRegionsAtLine(r,l=>l.isCollapsed&&r>l.startLineNumber))}n.length&&(t.toggleCollapseState(n),this.reveal(i[0].getPosition()))}}}).then(void 0,wi)}onEditorMouseDown(e){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!e.target||!e.target.range||!e.event.leftButton&&!e.event.middleButton)return;const t=e.target.range;let i=!1;switch(e.target.type){case 4:{const n=e.target.detail,o=e.target.element.offsetLeft;if(n.offsetX-o<4)return;i=!0;break}case 7:{if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!e.target.detail.isAfterLines)break;return}case 6:{if(this.hiddenRangeModel.hasRanges()){const n=this.editor.getModel();if(n&&t.startColumn===n.getLineMaxColumn(t.startLineNumber))break}return}default:return}this.mouseDownInfo={lineNumber:t.startLineNumber,iconClicked:i}}onEditorMouseUp(e){const t=this.foldingModel;if(!t||!this.mouseDownInfo||!e.target)return;const i=this.mouseDownInfo.lineNumber,n=this.mouseDownInfo.iconClicked,o=e.target.range;if(!o||o.startLineNumber!==i)return;if(n){if(e.target.type!==4)return}else{const l=this.editor.getModel();if(!l||o.startColumn!==l.getLineMaxColumn(i))return}const r=t.getRegionAtLine(i);if(r&&r.startLineNumber===i){const l=r.isCollapsed;if(n||l){const a=e.event.altKey;let d=[];if(a){const c=u=>!u.containedBy(r)&&!r.containedBy(u),h=t.getRegionsInside(null,c);for(const u of h)u.isCollapsed&&d.push(u);d.length===0&&(d=h)}else{const c=e.event.middleButton||e.event.shiftKey;if(c)for(const h of t.getRegionsInside(r))h.isCollapsed===l&&d.push(h);(l||!c||d.length===0)&&d.push(r)}t.toggleCollapseState(d),this.reveal({lineNumber:i,column:1})}}}reveal(e){this.editor.revealPositionInCenterIfOutsideViewport(e,0)}},pZ=xQ,xQ.ID="editor.contrib.folding",xQ);jF=pZ=Obt([Cw(1,fi),Cw(2,bo),Cw(3,jo),Cw(4,dh),Cw(5,xt)],jF);class Qye{constructor(e){this.editor=e,this._onDidChange=new fe,this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(47)}update(e,t){(e!==this._computed||t!==this._limited)&&(this._computed=e,this._limited=t,this._onDidChange.fire())}}class ta extends Tt{runEditorCommand(e,t,i){const n=e.get(bo),o=jF.get(t);if(!o)return;const r=o.getFoldingModel();if(r)return this.reportTelemetry(e,t),r.then(l=>{if(l){this.invoke(o,l,t,i,n);const a=t.getSelection();a&&o.reveal(a.getStartPosition())}})}getSelectedLines(e){const t=e.getSelections();return t?t.map(i=>i.startLineNumber):[]}getLineNumbers(e,t){return e&&e.selectionLines?e.selectionLines.map(i=>i+1):this.getSelectedLines(t)}run(e,t){}}function jbt(s){return!s||s.length===0?{startsInside:()=>!1}:{startsInside(e,t){for(const i of s){const n=i.startLineNumber;if(n>=e&&n<=t)return!0}return!1}}}function Mye(s){if(!fa(s)){if(!_r(s))return!1;const e=s;if(!fa(e.levels)&&!wF(e.levels)||!fa(e.direction)&&!Vd(e.direction)||!fa(e.selectionLines)&&(!Array.isArray(e.selectionLines)||!e.selectionLines.every(wF)))return!1}return!0}class Pbt extends ta{constructor(){super({id:"editor.unfold",label:F("unfoldAction.label","Unfold"),alias:"Unfold",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:3166,mac:{primary:2654},weight:100},metadata:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:`Property-value pairs that can be passed through this argument:
- * 'levels': Number of levels to unfold. If not set, defaults to 1.
- * 'direction': If 'up', unfold given number of levels up otherwise unfolds down.
- * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.
- `,constraint:Mye,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,n){const o=n&&n.levels||1,r=this.getLineNumbers(n,i);n&&n.direction==="up"?Wye(t,!1,o,r):LM(t,!1,o,r)}}class Hbt extends ta{constructor(){super({id:"editor.unfoldRecursively",label:F("unFoldRecursivelyAction.label","Unfold Recursively"),alias:"Unfold Recursively",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2142),weight:100}})}invoke(e,t,i,n){LM(t,!1,Number.MAX_VALUE,this.getSelectedLines(i))}}class Kbt extends ta{constructor(){super({id:"editor.fold",label:F("foldAction.label","Fold"),alias:"Fold",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:3164,mac:{primary:2652},weight:100},metadata:{description:"Fold the content in the editor",args:[{name:"Fold editor argument",description:`Property-value pairs that can be passed through this argument:
- * 'levels': Number of levels to fold.
- * 'direction': If 'up', folds given number of levels up otherwise folds down.
- * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.
- If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.
- `,constraint:Mye,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,n){const o=this.getLineNumbers(n,i),r=n&&n.levels,l=n&&n.direction;typeof r!="number"&&typeof l!="string"?Mbt(t,!0,o):l==="up"?Wye(t,!0,r||1,o):LM(t,!0,r||1,o)}}class qbt extends ta{constructor(){super({id:"editor.toggleFold",label:F("toggleFoldAction.label","Toggle Fold"),alias:"Toggle Fold",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2090),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);Qle(t,1,n)}}class $bt extends ta{constructor(){super({id:"editor.foldRecursively",label:F("foldRecursivelyAction.label","Fold Recursively"),alias:"Fold Recursively",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2140),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);LM(t,!0,Number.MAX_VALUE,n)}}class eUt extends ta{constructor(){super({id:"editor.toggleFoldRecursively",label:F("toggleFoldRecursivelyAction.label","Toggle Fold Recursively"),alias:"Toggle Fold Recursively",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,3114),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);Qle(t,Number.MAX_VALUE,n)}}class tUt extends ta{constructor(){super({id:"editor.foldAllBlockComments",label:F("foldAllBlockComments.label","Fold All Block Comments"),alias:"Fold All Block Comments",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2138),weight:100}})}invoke(e,t,i,n,o){if(t.regions.hasTypes())wle(t,BF.Comment.value,!0);else{const r=i.getModel();if(!r)return;const l=o.getLanguageConfiguration(r.getLanguageId()).comments;if(l&&l.blockCommentStartToken){const a=new RegExp("^\\s*"+nh(l.blockCommentStartToken));Mle(t,a,!0)}}}}class iUt extends ta{constructor(){super({id:"editor.foldAllMarkerRegions",label:F("foldAllMarkerRegions.label","Fold All Regions"),alias:"Fold All Regions",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2077),weight:100}})}invoke(e,t,i,n,o){if(t.regions.hasTypes())wle(t,BF.Region.value,!0);else{const r=i.getModel();if(!r)return;const l=o.getLanguageConfiguration(r.getLanguageId()).foldingRules;if(l&&l.markers&&l.markers.start){const a=new RegExp(l.markers.start);Mle(t,a,!0)}}}}class nUt extends ta{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:F("unfoldAllMarkerRegions.label","Unfold All Regions"),alias:"Unfold All Regions",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2078),weight:100}})}invoke(e,t,i,n,o){if(t.regions.hasTypes())wle(t,BF.Region.value,!1);else{const r=i.getModel();if(!r)return;const l=o.getLanguageConfiguration(r.getLanguageId()).foldingRules;if(l&&l.markers&&l.markers.start){const a=new RegExp(l.markers.start);Mle(t,a,!1)}}}}class sUt extends ta{constructor(){super({id:"editor.foldAllExcept",label:F("foldAllExcept.label","Fold All Except Selected"),alias:"Fold All Except Selected",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2136),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);yye(t,!0,n)}}class oUt extends ta{constructor(){super({id:"editor.unfoldAllExcept",label:F("unfoldAllExcept.label","Unfold All Except Selected"),alias:"Unfold All Except Selected",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2134),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);yye(t,!1,n)}}class rUt extends ta{constructor(){super({id:"editor.foldAll",label:F("foldAllAction.label","Fold All"),alias:"Fold All",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2069),weight:100}})}invoke(e,t,i){LM(t,!0)}}class lUt extends ta{constructor(){super({id:"editor.unfoldAll",label:F("unfoldAllAction.label","Unfold All"),alias:"Unfold All",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2088),weight:100}})}invoke(e,t,i){LM(t,!1)}}const U1=class U1 extends ta{getFoldingLevel(){return parseInt(this.id.substr(U1.ID_PREFIX.length))}invoke(e,t,i){wbt(t,this.getFoldingLevel(),!0,this.getSelectedLines(i))}};U1.ID_PREFIX="editor.foldLevel",U1.ID=e=>U1.ID_PREFIX+e;let cY=U1;class aUt extends ta{constructor(){super({id:"editor.gotoParentFold",label:F("gotoParentFold.label","Go to Parent Fold"),alias:"Go to Parent Fold",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);if(n.length>0){const o=Tbt(n[0],t);o!==null&&i.setSelection({startLineNumber:o,startColumn:1,endLineNumber:o,endColumn:1})}}}class dUt extends ta{constructor(){super({id:"editor.gotoPreviousFold",label:F("gotoPreviousFold.label","Go to Previous Folding Range"),alias:"Go to Previous Folding Range",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);if(n.length>0){const o=Cbt(n[0],t);o!==null&&i.setSelection({startLineNumber:o,startColumn:1,endLineNumber:o,endColumn:1})}}}class cUt extends ta{constructor(){super({id:"editor.gotoNextFold",label:F("gotoNextFold.label","Go to Next Folding Range"),alias:"Go to Next Folding Range",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);if(n.length>0){const o=Bbt(n[0],t);o!==null&&i.setSelection({startLineNumber:o,startColumn:1,endLineNumber:o,endColumn:1})}}}class hUt extends ta{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:F("createManualFoldRange.label","Create Folding Range from Selection"),alias:"Create Folding Range from Selection",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2135),weight:100}})}invoke(e,t,i){var r;const n=[],o=i.getSelections();if(o){for(const l of o){let a=l.endLineNumber;l.endColumn===1&&--a,a>l.startLineNumber&&(n.push({startLineNumber:l.startLineNumber,endLineNumber:a,type:void 0,isCollapsed:!0,source:1}),i.setSelection({startLineNumber:l.startLineNumber,startColumn:1,endLineNumber:l.startLineNumber,endColumn:1}))}if(n.length>0){n.sort((a,d)=>a.startLineNumber-d.startLineNumber);const l=Jc.sanitizeAndMerge(t.regions,n,(r=i.getModel())==null?void 0:r.getLineCount());t.updatePost(Jc.fromFoldRanges(l))}}}}class uUt extends ta{constructor(){super({id:"editor.removeManualFoldingRanges",label:F("removeManualFoldingRanges.label","Remove Manual Folding Ranges"),alias:"Remove Manual Folding Ranges",precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2137),weight:100}})}invoke(e,t,i){const n=i.getSelections();if(n){const o=[];for(const r of n){const{startLineNumber:l,endLineNumber:a}=r;o.push(a>=l?{startLineNumber:l,endLineNumber:a}:{endLineNumber:a,startLineNumber:l})}t.removeManualRanges(o),e.triggerFoldingModelChanged()}}}Wn(jF.ID,jF,0);lt(Pbt);lt(Hbt);lt(Kbt);lt($bt);lt(eUt);lt(rUt);lt(lUt);lt(tUt);lt(iUt);lt(nUt);lt(sUt);lt(oUt);lt(qbt);lt(aUt);lt(dUt);lt(cUt);lt(hUt);lt(uUt);for(let s=1;s<=7;s++)L4e(new cY({id:cY.ID(s),label:F("foldLevelAction.label","Fold Level {0}",s),alias:`Fold Level ${s}`,precondition:Bl,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2048|21+s),weight:100}}));Sn.registerCommand("_executeFoldingRangeProvider",async function(s,...e){const[t]=e;if(!(t instanceof ni))throw Xh();const i=s.get(xt),n=s.get(zs).getModel(t);if(!n)throw Xh();const o=s.get(Hi);if(!o.getValue("editor.folding",{resource:t}))return[];const r=s.get(bo),l=o.getValue("editor.foldingStrategy",{resource:t}),a={get limit(){return o.getValue("editor.foldingMaximumRegions",{resource:t})},update:(m,p)=>{}},d=new Tle(n,r,a);let c=d;if(l!=="indentation"){const m=jF.getFoldingRangeProviders(i,n);m.length&&(c=new Cle(n,m,()=>{},a,d))}const h=await c.compute(Gi.None),u=[];try{if(h)for(let m=0;m<h.length;m++){const p=h.getType(m);u.push({start:h.getStartLineNumber(m),end:h.getEndLineNumber(m),kind:p?BF.fromValue(p):void 0})}return u}finally{c.dispose()}});class mUt extends Tt{constructor(){super({id:"editor.action.fontZoomIn",label:F("EditorFontZoomIn.label","Increase Editor Font Size"),alias:"Increase Editor Font Size",precondition:void 0})}run(e,t){kh.setZoomLevel(kh.getZoomLevel()+1)}}class pUt extends Tt{constructor(){super({id:"editor.action.fontZoomOut",label:F("EditorFontZoomOut.label","Decrease Editor Font Size"),alias:"Decrease Editor Font Size",precondition:void 0})}run(e,t){kh.setZoomLevel(kh.getZoomLevel()-1)}}class gUt extends Tt{constructor(){super({id:"editor.action.fontZoomReset",label:F("EditorFontZoomReset.label","Reset Editor Font Size"),alias:"Reset Editor Font Size",precondition:void 0})}run(e,t){kh.setZoomLevel(0)}}lt(mUt);lt(pUt);lt(gUt);var wye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},R2=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},yv;let hY=(yv=class{constructor(e,t,i,n){this._editor=e,this._languageFeaturesService=t,this._workerService=i,this._accessibilitySignalService=n,this._disposables=new De,this._sessionDisposables=new De,this._disposables.add(t.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(e.onDidChangeModel(()=>this._update())),this._disposables.add(e.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(e.onDidChangeConfiguration(o=>{o.hasChanged(56)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(56)||!this._editor.hasModel())return;const e=this._editor.getModel(),[t]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(e);if(!t||!t.autoFormatTriggerCharacters)return;const i=new fX;for(const n of t.autoFormatTriggerCharacters)i.add(n.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(n=>{const o=n.charCodeAt(n.length-1);i.has(o)&&this._trigger(String.fromCharCode(o))}))}_trigger(e){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const t=this._editor.getModel(),i=this._editor.getPosition(),n=new go,o=this._editor.onDidChangeModelContent(r=>{if(r.isFlush){n.cancel(),o.dispose();return}for(let l=0,a=r.changes.length;l<a;l++)if(r.changes[l].range.endLineNumber<=i.lineNumber){n.cancel(),o.dispose();return}});vWe(this._workerService,this._languageFeaturesService,t,i,e,t.getFormattingOptions(),n.token).then(r=>{n.token.isCancellationRequested||ba(r)&&(this._accessibilitySignalService.playSignal(Gc.format,{userGesture:!1}),zy.execute(this._editor,r,!0))}).finally(()=>{o.dispose()})}},yv.ID="editor.contrib.autoFormat",yv);hY=wye([R2(1,xt),R2(2,Ld),R2(3,oA)],hY);var Qv;let uY=(Qv=class{constructor(e,t,i){this.editor=e,this._languageFeaturesService=t,this._instantiationService=i,this._callOnDispose=new De,this._callOnModel=new De,this._callOnDispose.add(e.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(e.onDidChangeModel(()=>this._update())),this._callOnDispose.add(e.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(t.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(55)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste(({range:e})=>this._trigger(e)))}_trigger(e){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(LWe,this.editor,e,2,Hm.None,Gi.None,!1).catch(wi))}},Qv.ID="editor.contrib.formatOnPaste",Qv);uY=wye([R2(1,xt),R2(2,ti)],uY);class fUt extends Tt{constructor(){super({id:"editor.action.formatDocument",label:F("formatDocument.label","Format Document"),alias:"Format Document",precondition:Ge.and($.notInCompositeEditor,$.writable,$.hasDocumentFormattingProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}async run(e,t){if(t.hasModel()){const i=e.get(ti);await e.get(iA).showWhile(i.invokeFunction(Qmt,t,1,Hm.None,Gi.None,!0),250)}}}class bUt extends Tt{constructor(){super({id:"editor.action.formatSelection",label:F("formatSelection.label","Format Selection"),alias:"Format Selection",precondition:Ge.and($.writable,$.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2084),weight:100},contextMenuOpts:{when:$.hasNonEmptySelection,group:"1_modification",order:1.31}})}async run(e,t){if(!t.hasModel())return;const i=e.get(ti),n=t.getModel(),o=t.getSelections().map(l=>l.isEmpty()?new z(l.startLineNumber,1,l.startLineNumber,n.getLineMaxColumn(l.startLineNumber)):l);await e.get(iA).showWhile(i.invokeFunction(LWe,t,o,1,Hm.None,Gi.None,!0),250)}}Wn(hY.ID,hY,2);Wn(uY.ID,uY,2);lt(fUt);lt(bUt);Sn.registerCommand("editor.action.format",async s=>{const e=s.get(kn).getFocusedCodeEditor();if(!e||!e.hasModel())return;const t=s.get(ks);e.getSelection().isEmpty()?await t.executeCommand("editor.action.formatDocument"):await t.executeCommand("editor.action.formatSelection")});var UUt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},UH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class xW{remove(){var e;(e=this.parent)==null||e.children.delete(this.id)}static findId(e,t){let i;typeof e=="string"?i=`${t.id}/${e}`:(i=`${t.id}/${e.name}`,t.children.get(i)!==void 0&&(i=`${t.id}/${e.name}_${e.range.startLineNumber}_${e.range.startColumn}`));let n=i;for(let o=0;t.children.get(n)!==void 0;o++)n=`${i}_${o}`;return n}static empty(e){return e.children.size===0}}class Lee extends xW{constructor(e,t,i){super(),this.id=e,this.parent=t,this.symbol=i,this.children=new Map}}class Tye extends xW{constructor(e,t,i,n){super(),this.id=e,this.parent=t,this.label=i,this.order=n,this.children=new Map}}class sf extends xW{static create(e,t,i){const n=new go(i),o=new sf(t.uri),r=e.ordered(t),l=r.map((d,c)=>{const h=xW.findId(`provider_${c}`,o),u=new Tye(h,o,d.displayName??"Unknown Outline Provider",c);return Promise.resolve(d.provideDocumentSymbols(t,n.token)).then(m=>{for(const p of m||[])sf._makeOutlineElement(p,u);return u},m=>(vo(m),u)).then(m=>{xW.empty(m)?m.remove():o._groups.set(h,m)})}),a=e.onDidChange(()=>{const d=e.ordered(t);lo(d,r)||n.cancel()});return Promise.all(l).then(()=>n.token.isCancellationRequested&&!i.isCancellationRequested?sf.create(e,t,i):o._compact()).finally(()=>{n.dispose(),a.dispose(),n.dispose()})}static _makeOutlineElement(e,t){const i=xW.findId(e,t),n=new Lee(i,t,e);if(e.children)for(const o of e.children)sf._makeOutlineElement(o,n);t.children.set(n.id,n)}constructor(e){super(),this.uri=e,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let e=0;for(const[t,i]of this._groups)i.children.size===0?this._groups.delete(t):e+=1;if(e!==1)this.children=this._groups;else{const t=Zn.first(this._groups.values());for(const[,i]of t.children)i.parent=this,this.children.set(i.id,i)}return this}getTopLevelSymbols(){const e=[];for(const t of this.children.values())t instanceof Lee?e.push(t.symbol):e.push(...Zn.map(t.children.values(),i=>i.symbol));return e.sort((t,i)=>z.compareRangesUsingStarts(t.range,i.range))}asListOfDocumentSymbols(){const e=this.getTopLevelSymbols(),t=[];return sf._flattenDocumentSymbols(t,e,""),t.sort((i,n)=>ge.compare(z.getStartPosition(i.range),z.getStartPosition(n.range))||ge.compare(z.getEndPosition(n.range),z.getEndPosition(i.range)))}static _flattenDocumentSymbols(e,t,i){for(const n of t)e.push({kind:n.kind,tags:n.tags,name:n.name,detail:n.detail,containerName:n.containerName||i,range:n.range,selectionRange:n.selectionRange,children:void 0}),n.children&&sf._flattenDocumentSymbols(e,n.children,n.name)}}const Qk=un("IOutlineModelService");let vee=class{constructor(e,t,i){this._languageFeaturesService=e,this._disposables=new De,this._cache=new $g(10,.7),this._debounceInformation=t.for(e.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(i.onModelRemoved(n=>{this._cache.delete(n.id)}))}dispose(){this._disposables.dispose()}async getOrCreate(e,t){const i=this._languageFeaturesService.documentSymbolProvider,n=i.ordered(e);let o=this._cache.get(e.id);if(!o||o.versionId!==e.getVersionId()||!lo(o.provider,n)){const l=new go;o={versionId:e.getVersionId(),provider:n,promiseCnt:0,source:l,promise:sf.create(i,e,l.token),model:void 0},this._cache.set(e.id,o);const a=Date.now();o.promise.then(d=>{o.model=d,this._debounceInformation.update(e,Date.now()-a)}).catch(d=>{this._cache.delete(e.id)})}if(o.model)return o.model;o.promiseCnt+=1;const r=t.onCancellationRequested(()=>{--o.promiseCnt===0&&(o.source.cancel(),this._cache.delete(e.id))});try{return await o.promise}finally{r.dispose()}}};vee=UUt([UH(0,xt),UH(1,dh),UH(2,zs)],vee);Fn(Qk,vee,1);Sn.registerCommand("_executeDocumentSymbolProvider",async function(s,...e){const[t]=e;vn(ni.isUri(t));const i=s.get(Qk),o=await s.get(Td).createModelReference(t);try{return(await i.getOrCreate(o.object.textEditorModel,Gi.None)).getTopLevelSymbols()}finally{o.dispose()}});const eg=class eg extends be{constructor(e,t){super(),this.contextKeyService=e,this.model=t,this.inlineCompletionVisible=eg.inlineSuggestionVisible.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentation=eg.inlineSuggestionHasIndentation.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentationLessThanTabSize=eg.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService),this.suppressSuggestions=eg.suppressSuggestions.bindTo(this.contextKeyService),this._register(yi(i=>{const n=this.model.read(i),o=n==null?void 0:n.state.read(i),r=!!(o!=null&&o.inlineCompletion)&&(o==null?void 0:o.primaryGhostText)!==void 0&&!(o!=null&&o.primaryGhostText.isEmpty());this.inlineCompletionVisible.set(r),o!=null&&o.primaryGhostText&&(o!=null&&o.inlineCompletion)&&this.suppressSuggestions.set(o.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions)})),this._register(yi(i=>{const n=this.model.read(i);let o=!1,r=!0;const l=n==null?void 0:n.primaryGhostText.read(i);if(n!=null&&n.selectedSuggestItem&&l&&l.parts.length>0){const{column:a,lines:d}=l.parts[0],c=d[0],h=n.textModel.getLineIndentColumn(l.lineNumber);if(a<=h){let m=Ua(c);m===-1&&(m=c.length-1),o=m>0;const p=n.textModel.getOptions().tabSize;r=Zr.visibleColumnFromColumn(c,m+1,p)<p}}this.inlineCompletionSuggestsIndentation.set(o),this.inlineCompletionSuggestsIndentationLessThanTabSize.set(r)}))}};eg.inlineSuggestionVisible=new yt("inlineSuggestionVisible",!1,F("inlineSuggestionVisible","Whether an inline suggestion is visible")),eg.inlineSuggestionHasIndentation=new yt("inlineSuggestionHasIndentation",!1,F("inlineSuggestionHasIndentation","Whether the inline suggestion starts with whitespace")),eg.inlineSuggestionHasIndentationLessThanTabSize=new yt("inlineSuggestionHasIndentationLessThanTabSize",!0,F("inlineSuggestionHasIndentationLessThanTabSize","Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab")),eg.suppressSuggestions=new yt("inlineSuggestionSuppressSuggestions",void 0,F("suppressSuggestions","Whether suggestions should be suppressed for the current suggestion"));let uc=eg;function FUt(s){const e=new De,t=e.add(aSe());return e.add(yi(i=>{t.setStyle(s.read(i))})),e}class tv{constructor(e,t){this.lineNumber=e,this.parts=t}equals(e){return this.lineNumber===e.lineNumber&&this.parts.length===e.parts.length&&this.parts.every((t,i)=>t.equals(e.parts[i]))}renderForScreenReader(e){if(this.parts.length===0)return"";const t=this.parts[this.parts.length-1],i=e.substr(0,t.column-1);return new Kse([...this.parts.map(o=>new Dg(z.fromPositions(new ge(1,o.column)),o.lines.join(`
- `)))]).applyToString(i).substring(this.parts[0].column-1)}isEmpty(){return this.parts.every(e=>e.lines.length===0)}get lineCount(){return 1+this.parts.reduce((e,t)=>e+t.lines.length-1,0)}}class mY{constructor(e,t,i){this.column=e,this.text=t,this.preview=i,this.lines=Kg(this.text)}equals(e){return this.column===e.column&&this.lines.length===e.lines.length&&this.lines.every((t,i)=>t===e.lines[i])}}class kee{constructor(e,t,i,n=0){this.lineNumber=e,this.columnRange=t,this.text=i,this.additionalReservedLineCount=n,this.parts=[new mY(this.columnRange.endColumnExclusive,this.text,!1)],this.newLines=Kg(this.text)}renderForScreenReader(e){return this.newLines.join(`
- `)}get lineCount(){return this.newLines.length}isEmpty(){return this.parts.every(e=>e.lines.length===0)}equals(e){return this.lineNumber===e.lineNumber&&this.columnRange.equals(e.columnRange)&&this.newLines.length===e.newLines.length&&this.newLines.every((t,i)=>t===e.newLines[i])&&this.additionalReservedLineCount===e.additionalReservedLineCount}}function U0e(s,e){return lo(s,e,Cye)}function Cye(s,e){return s===e?!0:!s||!e?!1:s instanceof tv&&e instanceof tv||s instanceof kee&&e instanceof kee?s.equals(e):!1}const AUt=[];function ZUt(){return AUt}class Bye{constructor(e,t){if(this.startColumn=e,this.endColumnExclusive=t,e>t)throw new _n(`startColumn ${e} cannot be after endColumnExclusive ${t}`)}toRange(e){return new z(e,this.startColumn,e,this.endColumnExclusive)}equals(e){return this.startColumn===e.startColumn&&this.endColumnExclusive===e.endColumnExclusive}}function Lye(s,e){const t=new De,i=s.createDecorationsCollection();return t.add(rk({debugName:()=>`Apply decorations from ${e.debugName}`},n=>{const o=e.read(n);i.set(o)})),t.add({dispose:()=>{i.clear()}}),t}function SUt(s,e){return new ge(s.lineNumber+e.lineNumber-1,e.lineNumber===1?s.column+e.column-1:e.column)}function F0e(s,e){return new ge(s.lineNumber-e.lineNumber+1,s.lineNumber-e.lineNumber===0?s.column-e.column+1:s.column)}var NUt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},RUt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const A0e="ghost-text";let xee=class extends be{constructor(e,t,i){super(),this.editor=e,this.model=t,this.languageService=i,this.isDisposed=Pi(this,!1),this.currentTextModel=is(this,this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=Pt(this,n=>{if(this.isDisposed.read(n))return;const o=this.currentTextModel.read(n);if(o!==this.model.targetTextModel.read(n))return;const r=this.model.ghostText.read(n);if(!r)return;const l=r instanceof kee?r.columnRange:void 0,a=[],d=[];function c(g,f){if(d.length>0){const b=d[d.length-1];f&&b.decorations.push(new Da(b.content.length+1,b.content.length+1+g[0].length,f,0)),b.content+=g[0],g=g.slice(1)}for(const b of g)d.push({content:b,decorations:f?[new Da(1,b.length+1,f,0)]:[]})}const h=o.getLineContent(r.lineNumber);let u,m=0;for(const g of r.parts){let f=g.lines;u===void 0?(a.push({column:g.column,text:f[0],preview:g.preview}),f=f.slice(1)):c([h.substring(m,g.column-1)],void 0),f.length>0&&(c(f,A0e),u===void 0&&g.column<=h.length&&(u=g.column)),m=g.column-1}u!==void 0&&c([h.substring(m)],void 0);const p=u!==void 0?new Bye(u,h.length+1):void 0;return{replacedRange:l,inlineTexts:a,additionalLines:d,hiddenRange:p,lineNumber:r.lineNumber,additionalReservedLineCount:this.model.minReservedLineCount.read(n),targetTextModel:o}}),this.decorations=Pt(this,n=>{const o=this.uiState.read(n);if(!o)return[];const r=[];o.replacedRange&&r.push({range:o.replacedRange.toRange(o.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace",description:"GhostTextReplacement"}}),o.hiddenRange&&r.push({range:o.hiddenRange.toRange(o.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const l of o.inlineTexts)r.push({range:z.fromPositions(new ge(o.lineNumber,l.column)),options:{description:A0e,after:{content:l.text,inlineClassName:l.preview?"ghost-text-decoration-preview":"ghost-text-decoration",cursorStops:zu.Left},showIfCollapsed:!0}});return r}),this.additionalLinesWidget=this._register(new VUt(this.editor,this.languageService.languageIdCodec,Pt(n=>{const o=this.uiState.read(n);return o?{lineNumber:o.lineNumber,additionalLines:o.additionalLines,minReservedLineCount:o.additionalReservedLineCount,targetTextModel:o.targetTextModel}:void 0}))),this._register(ei(()=>{this.isDisposed.set(!0,void 0)})),this._register(Lye(this.editor,this.decorations))}ownsViewZone(e){return this.additionalLinesWidget.viewZoneId===e}};xee=NUt([RUt(2,ao)],xee);class VUt extends be{get viewZoneId(){return this._viewZoneId}constructor(e,t,i){super(),this.editor=e,this.languageIdCodec=t,this.lines=i,this._viewZoneId=void 0,this.editorOptionsChanged=Vl("editorOptionChanged",Ut.filter(this.editor.onDidChangeConfiguration,n=>n.hasChanged(33)||n.hasChanged(118)||n.hasChanged(100)||n.hasChanged(95)||n.hasChanged(51)||n.hasChanged(50)||n.hasChanged(67))),this._register(yi(n=>{const o=this.lines.read(n);this.editorOptionsChanged.read(n),o?this.updateLines(o.lineNumber,o.additionalLines,o.minReservedLineCount):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this.editor.changeViewZones(e=>{this._viewZoneId&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0)})}updateLines(e,t,i){const n=this.editor.getModel();if(!n)return;const{tabSize:o}=n.getOptions();this.editor.changeViewZones(r=>{this._viewZoneId&&(r.removeZone(this._viewZoneId),this._viewZoneId=void 0);const l=Math.max(t.length,i);if(l>0){const a=document.createElement("div");WUt(a,o,t,this.editor.getOptions(),this.languageIdCodec),this._viewZoneId=r.addZone({afterLineNumber:e,heightInLines:l,domNode:a,afterColumnAffinity:1})}})}}function WUt(s,e,t,i,n){const o=i.get(33),r=i.get(118),l="none",a=i.get(95),d=i.get(51),c=i.get(50),h=i.get(67),u=new gM(1e4);u.appendString('<div class="suggest-preview-text">');for(let g=0,f=t.length;g<f;g++){const b=t[g],U=b.content;u.appendString('<div class="view-line'),u.appendString('" style="top:'),u.appendString(String(g*h)),u.appendString('px;width:1000000px;">');const S=Ov(U),Z=Ny(U),R=Pr.createEmpty(U,n);gk(new rA(c.isMonospace&&!o,c.canUseHalfwidthRightwardsArrow,U,!1,S,Z,0,R,b.decorations,e,0,c.spaceWidth,c.middotWidth,c.wsmiddotWidth,r,l,a,d!==TF.OFF,null),u),u.appendString("</div>")}u.appendString("</div>"),hl(s,c);const m=u.build(),p=Z0e?Z0e.createHTML(m):m;s.innerHTML=p}const Z0e=lb("editorGhostText",{createHTML:s=>s});function yUt(s,e){const t=new TRe,i=new BRe(t,d=>e.getLanguageConfiguration(d)),n=new CRe(new QUt([s]),i),o=X6(n,[],void 0,!0);let r="";const l=s.getLineContent();function a(d,c){if(d.kind===2)if(a(d.openingBracket,c),c=yo(c,d.openingBracket.length),d.child&&(a(d.child,c),c=yo(c,d.child.length)),d.closingBracket)a(d.closingBracket,c),c=yo(c,d.closingBracket.length);else{const u=i.getSingleLanguageBracketTokens(d.openingBracket.languageId).findClosingTokenText(d.openingBracket.bracketIds);r+=u}else if(d.kind!==3){if(d.kind===0||d.kind===1)r+=l.substring(c,yo(c,d.length));else if(d.kind===4)for(const h of d.children)a(h,c),c=yo(c,h.length)}}return a(o,Ea),r}class QUt{constructor(e){this.lines=e,this.tokenization={getLineTokens:t=>this.lines[t-1]}}getLineCount(){return this.lines.length}getLineLength(e){return this.lines[e-1].getLineContent().length}}async function vye(s,e,t,i,n=Gi.None,o){const r=e instanceof ge?TUt(e,t):e,l=s.all(t),a=new zse;for(const b of l)b.groupId&&a.add(b.groupId,b);function d(b){if(!b.yieldsToGroupIds)return[];const U=[];for(const S of b.yieldsToGroupIds||[]){const Z=a.get(S);for(const R of Z)U.push(R)}return U}const c=new Map,h=new Set;function u(b,U){if(U=[...U,b],h.has(b))return U;h.add(b);try{const S=d(b);for(const Z of S){const R=u(Z,U);if(R)return R}}finally{h.delete(b)}}function m(b){const U=c.get(b);if(U)return U;const S=u(b,[]);S&&vo(new Error(`Inline completions: cyclic yield-to dependency detected. Path: ${S.map(R=>R.toString?R.toString():""+R).join(" -> ")}`));const Z=new hM;return c.set(b,Z.p),(async()=>{var R;if(!S){const y=d(b);for(const N of y){const w=await m(N);if(w&&w.items.length>0)return}}try{return e instanceof ge?await b.provideInlineCompletions(t,e,i,n):await((R=b.provideInlineEdits)==null?void 0:R.call(b,t,e,i,n))}catch(y){vo(y);return}})().then(R=>Z.complete(R),R=>Z.error(R)),Z.p}const p=await Promise.all(l.map(async b=>({provider:b,completions:await m(b)}))),g=new Map,f=[];for(const b of p){const U=b.completions;if(!U)continue;const S=new wUt(U,b.provider);f.push(S);for(const Z of U.items){const R=pY.from(Z,S,r,t,o);g.set(R.hash(),R)}}return new MUt(Array.from(g.values()),new Set(g.keys()),f)}class MUt{constructor(e,t,i){this.completions=e,this.hashs=t,this.providerResults=i}has(e){return this.hashs.has(e.hash())}dispose(){for(const e of this.providerResults)e.removeRef()}}class wUt{constructor(e,t){this.inlineCompletions=e,this.provider=t,this.refCount=1}addRef(){this.refCount++}removeRef(){this.refCount--,this.refCount===0&&this.provider.freeInlineCompletions(this.inlineCompletions)}}class pY{static from(e,t,i,n,o){let r,l,a=e.range?z.lift(e.range):i;if(typeof e.insertText=="string"){if(r=e.insertText,o&&e.completeBracketPairs){r=S0e(r,a.getStartPosition(),n,o);const d=r.length-e.insertText.length;d!==0&&(a=new z(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+d))}l=void 0}else if("snippet"in e.insertText){const d=e.insertText.snippet.length;if(o&&e.completeBracketPairs){e.insertText.snippet=S0e(e.insertText.snippet,a.getStartPosition(),n,o);const h=e.insertText.snippet.length-d;h!==0&&(a=new z(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+h))}const c=new LN().parse(e.insertText.snippet);c.children.length===1&&c.children[0]instanceof ka?(r=c.children[0].value,l=void 0):(r=c.toString(),l={snippet:e.insertText.snippet,range:a})}else G3(e.insertText);return new pY(r,e.command,a,r,l,e.additionalTextEdits||ZUt(),e,t)}constructor(e,t,i,n,o,r,l,a){this.filterText=e,this.command=t,this.range=i,this.insertText=n,this.snippetInfo=o,this.additionalTextEdits=r,this.sourceInlineCompletion=l,this.source=a,e=e.replace(/\r\n|\r/g,`
- `),n=e.replace(/\r\n|\r/g,`
- `)}withRange(e){return new pY(this.filterText,this.command,e,this.insertText,this.snippetInfo,this.additionalTextEdits,this.sourceInlineCompletion,this.source)}hash(){return JSON.stringify({insertText:this.insertText,range:this.range.toString()})}toSingleTextEdit(){return new Dg(this.range,this.insertText)}}function TUt(s,e){const t=e.getWordAtPosition(s),i=e.getLineMaxColumn(s.lineNumber);return t?new z(s.lineNumber,t.startColumn,s.lineNumber,i):z.fromPositions(s,s.with(void 0,i))}function S0e(s,e,t,i){const o=t.getLineContent(e.lineNumber).substring(0,e.column-1)+s,r=t.tokenization.tokenizeLineWithEdit(e,o.length-(e.column-1),s),l=r==null?void 0:r.sliceAndInflate(e.column-1,o.length,0);return l?yUt(l,i):s}function jS(s,e,t){const i=t?s.range.intersectRanges(t):s.range;if(!i)return s;const n=e.getValueInRange(i,1),o=LF(n,s.text),r=tm.ofText(n.substring(0,o)).addToPosition(s.range.getStartPosition()),l=s.text.substring(o),a=z.fromPositions(r,s.range.getEndPosition());return new Dg(a,l)}function kye(s,e){return s.text.startsWith(e.text)&&CUt(s.range,e.range)}function N0e(s,e,t,i,n=0){let o=jS(s,e);if(o.range.endLineNumber!==o.range.startLineNumber)return;const r=e.getLineContent(o.range.startLineNumber),l=Rs(r).length;if(o.range.startColumn-1<=l){const p=Rs(o.text).length,g=r.substring(o.range.startColumn-1,l),[f,b]=[o.range.getStartPosition(),o.range.getEndPosition()],U=f.column+g.length<=b.column?f.delta(0,g.length):b,S=z.fromPositions(U,b),Z=o.text.startsWith(g)?o.text.substring(g.length):o.text.substring(p);o=new Dg(S,Z)}const d=e.getValueInRange(o.range),c=BUt(d,o.text);if(!c)return;const h=o.range.startLineNumber,u=new Array;if(t==="prefix"){const p=c.filter(g=>g.originalLength===0);if(p.length>1||p.length===1&&p[0].originalStart!==d.length)return}const m=o.text.length-n;for(const p of c){const g=o.range.startColumn+p.originalStart+p.originalLength;if(t==="subwordSmart"&&i&&i.lineNumber===o.range.startLineNumber&&g<i.column||p.originalLength>0)return;if(p.modifiedLength===0)continue;const f=p.modifiedStart+p.modifiedLength,b=Math.max(p.modifiedStart,Math.min(f,m)),U=o.text.substring(p.modifiedStart,b),S=o.text.substring(b,Math.max(p.modifiedStart,f));U.length>0&&u.push(new mY(g,U,!1)),S.length>0&&u.push(new mY(g,S,!0))}return new tv(h,u)}function CUt(s,e){return e.getStartPosition().equals(s.getStartPosition())&&e.getEndPosition().isBeforeOrEqual(s.getEndPosition())}let Tp;function BUt(s,e){if((Tp==null?void 0:Tp.originalValue)===s&&(Tp==null?void 0:Tp.newValue)===e)return Tp==null?void 0:Tp.changes;{let t=V0e(s,e,!0);if(t){const i=R0e(t);if(i>0){const n=V0e(s,e,!1);n&&R0e(n)<i&&(t=n)}}return Tp={originalValue:s,newValue:e,changes:t},t}}function R0e(s){let e=0;for(const t of s)e+=t.originalLength;return e}function V0e(s,e,t){if(s.length>5e3||e.length>5e3)return;function i(d){let c=0;for(let h=0,u=d.length;h<u;h++){const m=d.charCodeAt(h);m>c&&(c=m)}return c}const n=Math.max(i(s),i(e));function o(d){if(d<0)throw new Error("unexpected");return n+d+1}function r(d){let c=0,h=0;const u=new Int32Array(d.length);for(let m=0,p=d.length;m<p;m++)if(t&&d[m]==="("){const g=h*100+c;u[m]=o(2*g),c++}else if(t&&d[m]===")"){c=Math.max(c-1,0);const g=h*100+c;u[m]=o(2*g+1),c===0&&h++}else u[m]=d.charCodeAt(m);return u}const l=r(s),a=r(e);return new Rg({getElements:()=>l},{getElements:()=>a}).ComputeDiff(!1).changes}var LUt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},W0e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Iee=class extends be{constructor(e,t,i,n,o){super(),this.textModel=e,this.versionId=t,this._debounceValue=i,this.languageFeaturesService=n,this.languageConfigurationService=o,this._updateOperation=this._register(new Lr),this.inlineCompletions=gL("inlineCompletions",void 0),this.suggestWidgetInlineCompletions=gL("suggestWidgetInlineCompletions",void 0),this._register(this.textModel.onDidChangeContent(()=>{this._updateOperation.clear()}))}fetch(e,t,i){var c,h;const n=new kUt(e,t,this.textModel.getVersionId()),o=t.selectedSuggestionInfo?this.suggestWidgetInlineCompletions:this.inlineCompletions;if((c=this._updateOperation.value)!=null&&c.request.satisfies(n))return this._updateOperation.value.promise;if((h=o.get())!=null&&h.request.satisfies(n))return Promise.resolve(!0);const r=!!this._updateOperation.value;this._updateOperation.clear();const l=new go,a=(async()=>{if((r||t.triggerKind===tp.Automatic)&&await vUt(this._debounceValue.get(this.textModel),l.token),l.token.isCancellationRequested||this._store.isDisposed||this.textModel.getVersionId()!==n.versionId)return!1;const m=new Date,p=await vye(this.languageFeaturesService.inlineCompletionsProvider,e,this.textModel,t,l.token,this.languageConfigurationService);if(l.token.isCancellationRequested||this._store.isDisposed||this.textModel.getVersionId()!==n.versionId)return!1;const g=new Date;this._debounceValue.update(this.textModel,g.getTime()-m.getTime());const f=new IUt(p,n,this.textModel,this.versionId);if(i){const b=i.toInlineCompletion(void 0);i.canBeReused(this.textModel,e)&&!p.has(b)&&f.prepend(i.inlineCompletion,b.range,!0)}return this._updateOperation.clear(),po(b=>{o.set(f,b)}),!0})(),d=new xUt(n,l,a);return this._updateOperation.value=d,a}clear(e){this._updateOperation.clear(),this.inlineCompletions.set(void 0,e),this.suggestWidgetInlineCompletions.set(void 0,e)}clearSuggestWidgetInlineCompletions(e){var t;(t=this._updateOperation.value)!=null&&t.request.context.selectedSuggestionInfo&&this._updateOperation.clear(),this.suggestWidgetInlineCompletions.set(void 0,e)}cancelUpdate(){this._updateOperation.clear()}};Iee=LUt([W0e(3,xt),W0e(4,bo)],Iee);function vUt(s,e){return new Promise(t=>{let i;const n=setTimeout(()=>{i&&i.dispose(),t()},s);e&&(i=e.onCancellationRequested(()=>{clearTimeout(n),i&&i.dispose(),t()}))})}class kUt{constructor(e,t,i){this.position=e,this.context=t,this.versionId=i}satisfies(e){return this.position.equals(e.position)&&N6(this.context.selectedSuggestionInfo,e.context.selectedSuggestionInfo,Get())&&(e.context.triggerKind===tp.Automatic||this.context.triggerKind===tp.Explicit)&&this.versionId===e.versionId}}class xUt{constructor(e,t,i){this.request=e,this.cancellationTokenSource=t,this.promise=i}dispose(){this.cancellationTokenSource.cancel()}}class IUt{get inlineCompletions(){return this._inlineCompletions}constructor(e,t,i,n){this.inlineCompletionProviderResult=e,this.request=t,this._textModel=i,this._versionId=n,this._refCount=1,this._prependedInlineCompletionItems=[];const o=i.deltaDecorations([],e.completions.map(r=>({range:r.range,options:{description:"inline-completion-tracking-range"}})));this._inlineCompletions=e.completions.map((r,l)=>new y0e(r,o[l],this._textModel,this._versionId))}clone(){return this._refCount++,this}dispose(){if(this._refCount--,this._refCount===0){setTimeout(()=>{this._textModel.isDisposed()||this._textModel.deltaDecorations(this._inlineCompletions.map(e=>e.decorationId),[])},0),this.inlineCompletionProviderResult.dispose();for(const e of this._prependedInlineCompletionItems)e.source.removeRef()}}prepend(e,t,i){i&&e.source.addRef();const n=this._textModel.deltaDecorations([],[{range:t,options:{description:"inline-completion-tracking-range"}}])[0];this._inlineCompletions.unshift(new y0e(e,n,this._textModel,this._versionId)),this._prependedInlineCompletionItems.push(e)}}class y0e{get forwardStable(){return this.inlineCompletion.source.inlineCompletions.enableForwardStability??!1}constructor(e,t,i,n){this.inlineCompletion=e,this.decorationId=t,this._textModel=i,this._modelVersion=n,this.semanticId=JSON.stringify([this.inlineCompletion.filterText,this.inlineCompletion.insertText,this.inlineCompletion.range.getStartPosition().toString()]),this._updatedRange=Yc({owner:this,equalsFn:z.equalsRange},o=>(this._modelVersion.read(o),this._textModel.getDecorationRange(this.decorationId)))}toInlineCompletion(e){return this.inlineCompletion.withRange(this._updatedRange.read(e)??FH)}toSingleTextEdit(e){return new Dg(this._updatedRange.read(e)??FH,this.inlineCompletion.insertText)}isVisible(e,t,i){const n=jS(this._toFilterTextReplacement(i),e),o=this._updatedRange.read(i);if(!o||!this.inlineCompletion.range.getStartPosition().equals(o.getStartPosition())||t.lineNumber!==n.range.startLineNumber)return!1;const r=e.getValueInRange(n.range,1),l=n.text,a=Math.max(0,t.column-n.range.startColumn);let d=l.substring(0,a),c=l.substring(a),h=r.substring(0,a),u=r.substring(a);const m=e.getLineIndentColumn(n.range.startLineNumber);return n.range.startColumn<=m&&(h=h.trimStart(),h.length===0&&(u=u.trimStart()),d=d.trimStart(),d.length===0&&(c=c.trimStart())),d.startsWith(h)&&!!kNe(u,c)}canBeReused(e,t){const i=this._updatedRange.read(void 0);return!!i&&i.containsPosition(t)&&this.isVisible(e,t,void 0)&&tm.ofRange(i).isGreaterThanOrEqualTo(tm.ofRange(this.inlineCompletion.range))}_toFilterTextReplacement(e){return new Dg(this._updatedRange.read(e)??FH,this.inlineCompletion.filterText)}}const FH=new z(1,1,1,1),zi={Visible:Wle,HasFocusedSuggestion:new yt("suggestWidgetHasFocusedSuggestion",!1,F("suggestWidgetHasSelection","Whether any suggestion is focused")),DetailsVisible:new yt("suggestWidgetDetailsVisible",!1,F("suggestWidgetDetailsVisible","Whether suggestion details are visible")),MultipleSuggestions:new yt("suggestWidgetMultipleSuggestions",!1,F("suggestWidgetMultipleSuggestions","Whether there are multiple suggestions to pick from")),MakesTextEdit:new yt("suggestionMakesTextEdit",!0,F("suggestionMakesTextEdit","Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new yt("acceptSuggestionOnEnter",!0,F("acceptSuggestionOnEnter","Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new yt("suggestionHasInsertAndReplaceRange",!1,F("suggestionHasInsertAndReplaceRange","Whether the current suggestion has insert and replace behaviour")),InsertMode:new yt("suggestionInsertMode",void 0,{type:"string",description:F("suggestionInsertMode","Whether the default behaviour is to insert or replace")}),CanResolve:new yt("suggestionCanResolve",!1,F("suggestionCanResolve","Whether the current suggestion supports to resolve further details"))},WF=new Gt("suggestWidgetStatusBar");class EUt{constructor(e,t,i,n){var o;this.position=e,this.completion=t,this.container=i,this.provider=n,this.isInvalid=!1,this.score=op.Default,this.distance=0,this.textLabel=typeof t.label=="string"?t.label:(o=t.label)==null?void 0:o.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=t.sortText&&t.sortText.toLowerCase(),this.filterTextLow=t.filterText&&t.filterText.toLowerCase(),this.extensionId=t.extensionId,z.isIRange(t.range)?(this.editStart=new ge(t.range.startLineNumber,t.range.startColumn),this.editInsertEnd=new ge(t.range.endLineNumber,t.range.endColumn),this.editReplaceEnd=new ge(t.range.endLineNumber,t.range.endColumn),this.isInvalid=this.isInvalid||z.spansMultipleLines(t.range)||t.range.startLineNumber!==e.lineNumber):(this.editStart=new ge(t.range.insert.startLineNumber,t.range.insert.startColumn),this.editInsertEnd=new ge(t.range.insert.endLineNumber,t.range.insert.endColumn),this.editReplaceEnd=new ge(t.range.replace.endLineNumber,t.range.replace.endColumn),this.isInvalid=this.isInvalid||z.spansMultipleLines(t.range.insert)||z.spansMultipleLines(t.range.replace)||t.range.insert.startLineNumber!==e.lineNumber||t.range.replace.startLineNumber!==e.lineNumber||t.range.insert.startColumn!==t.range.replace.startColumn),typeof n.resolveCompletionItem!="function"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}async resolve(e){if(!this._resolveCache){const t=e.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),i=new jr(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,e)).then(n=>{Object.assign(this.completion,n),this._resolveDuration=i.elapsed()},n=>{$h(n)&&(this._resolveCache=void 0,this._resolveDuration=void 0)}).finally(()=>{t.dispose()})}return this._resolveCache}}const Rz=class Rz{constructor(e=2,t=new Set,i=new Set,n=new Map,o=!0){this.snippetSortOrder=e,this.kindFilter=t,this.providerFilter=i,this.providerItemsToReuse=n,this.showDeprecated=o}};Rz.default=new Rz;let iv=Rz;class DUt{constructor(e,t,i,n){this.items=e,this.needsClipboard=t,this.durations=i,this.disposable=n}}async function Ble(s,e,t,i=iv.default,n={triggerKind:0},o=Gi.None){const r=new jr;t=t.clone();const l=e.getWordAtPosition(t),a=l?new z(t.lineNumber,l.startColumn,t.lineNumber,l.endColumn):z.fromPositions(t),d={replace:a,insert:a.setEndPosition(t.lineNumber,t.column)},c=[],h=new De,u=[];let m=!1;const p=(f,b,U)=>{var Z;let S=!1;if(!b)return S;for(const R of b.suggestions)if(!i.kindFilter.has(R.kind)){if(!i.showDeprecated&&((Z=R==null?void 0:R.tags)!=null&&Z.includes(1)))continue;R.range||(R.range=d),R.sortText||(R.sortText=typeof R.label=="string"?R.label:R.label.label),!m&&R.insertTextRules&&R.insertTextRules&4&&(m=LN.guessNeedsClipboard(R.insertText)),c.push(new EUt(t,R,b,f)),S=!0}return R3(b)&&h.add(b),u.push({providerName:f._debugDisplayName??"unknown_provider",elapsedProvider:b.duration??-1,elapsedOverall:U.elapsed()}),S},g=(async()=>{})();for(const f of s.orderedGroups(e)){let b=!1;if(await Promise.all(f.map(async U=>{if(i.providerItemsToReuse.has(U)){const S=i.providerItemsToReuse.get(U);S.forEach(Z=>c.push(Z)),b=b||S.length>0;return}if(!(i.providerFilter.size>0&&!i.providerFilter.has(U)))try{const S=new jr,Z=await U.provideCompletionItems(e,t,n,o);b=p(U,Z,S)||b}catch(S){vo(S)}})),b||o.isCancellationRequested)break}return await g,o.isCancellationRequested?(h.dispose(),Promise.reject(new Ku)):new DUt(c.sort(XUt(i.snippetSortOrder)),m,{entries:u,elapsed:r.elapsed()},h)}function Lle(s,e){if(s.sortTextLow&&e.sortTextLow){if(s.sortTextLow<e.sortTextLow)return-1;if(s.sortTextLow>e.sortTextLow)return 1}return s.textLabel<e.textLabel?-1:s.textLabel>e.textLabel?1:s.completion.kind-e.completion.kind}function GUt(s,e){if(s.completion.kind!==e.completion.kind){if(s.completion.kind===27)return-1;if(e.completion.kind===27)return 1}return Lle(s,e)}function JUt(s,e){if(s.completion.kind!==e.completion.kind){if(s.completion.kind===27)return 1;if(e.completion.kind===27)return-1}return Lle(s,e)}const H9=new Map;H9.set(0,GUt);H9.set(2,JUt);H9.set(1,Lle);function XUt(s){return H9.get(s)}Sn.registerCommand("_executeCompletionItemProvider",async(s,...e)=>{const[t,i,n,o]=e;vn(ni.isUri(t)),vn(ge.isIPosition(i)),vn(typeof n=="string"||!n),vn(typeof o=="number"||!o);const{completionProvider:r}=s.get(xt),l=await s.get(Td).createModelReference(t);try{const a={incomplete:!1,suggestions:[]},d=[],c=l.object.textEditorModel.validatePosition(i),h=await Ble(r,l.object.textEditorModel,c,void 0,{triggerCharacter:n??void 0,triggerKind:n?1:0});for(const u of h.items)d.length<(o??0)&&d.push(u.resolve(Gi.None)),a.incomplete=a.incomplete||u.container.incomplete,a.suggestions.push(u.completion);try{return await Promise.all(d),a}finally{setTimeout(()=>h.disposable.dispose(),100)}}finally{l.dispose()}});function YUt(s,e){var t;(t=s.getContribution("editor.contrib.suggestController"))==null||t.triggerSuggest(new Set().add(e),void 0,!0)}class IW{static isAllOff(e){return e.other==="off"&&e.comments==="off"&&e.strings==="off"}static isAllOn(e){return e.other==="on"&&e.comments==="on"&&e.strings==="on"}static valueFor(e,t){switch(t){case 1:return e.comments;case 2:return e.strings;default:return e.other}}}function Q0e(s,e=Tl){return d8e(s,e)?s.charAt(0).toUpperCase()+s.slice(1):s}var _Ut=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zUt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class M0e{constructor(e){this._delegates=e}resolve(e){for(const t of this._delegates){const i=t.resolve(e);if(i!==void 0)return i}}}class w0e{constructor(e,t,i,n){this._model=e,this._selection=t,this._selectionIdx=i,this._overtypingCapturer=n}resolve(e){const{name:t}=e;if(t==="SELECTION"||t==="TM_SELECTED_TEXT"){let i=this._model.getValueInRange(this._selection)||void 0,n=this._selection.startLineNumber!==this._selection.endLineNumber;if(!i&&this._overtypingCapturer){const o=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);o&&(i=o.value,n=o.multiline)}if(i&&n&&e.snippet){const o=this._model.getLineContent(this._selection.startLineNumber),r=Rs(o,0,this._selection.startColumn-1);let l=r;e.snippet.walk(d=>d===e?!1:(d instanceof ka&&(l=Rs(Kg(d.value).pop())),!0));const a=LF(l,r);i=i.replace(/(\r\n|\r|\n)(.*)/g,(d,c,h)=>`${c}${l.substr(a)}${h}`)}return i}else{if(t==="TM_CURRENT_LINE")return this._model.getLineContent(this._selection.positionLineNumber);if(t==="TM_CURRENT_WORD"){const i=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return i&&i.word||void 0}else{if(t==="TM_LINE_INDEX")return String(this._selection.positionLineNumber-1);if(t==="TM_LINE_NUMBER")return String(this._selection.positionLineNumber);if(t==="CURSOR_INDEX")return String(this._selectionIdx);if(t==="CURSOR_NUMBER")return String(this._selectionIdx+1)}}}}class T0e{constructor(e,t){this._labelService=e,this._model=t}resolve(e){const{name:t}=e;if(t==="TM_FILENAME")return AF(this._model.uri.fsPath);if(t==="TM_FILENAME_BASE"){const i=AF(this._model.uri.fsPath),n=i.lastIndexOf(".");return n<=0?i:i.slice(0,n)}else{if(t==="TM_DIRECTORY")return RZe(this._model.uri.fsPath)==="."?"":this._labelService.getUriLabel(o9(this._model.uri));if(t==="TM_FILEPATH")return this._labelService.getUriLabel(this._model.uri);if(t==="RELATIVE_FILEPATH")return this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0})}}}class C0e{constructor(e,t,i,n){this._readClipboardText=e,this._selectionIdx=t,this._selectionCount=i,this._spread=n}resolve(e){if(e.name!=="CLIPBOARD")return;const t=this._readClipboardText();if(t){if(this._spread){const i=t.split(/\r\n|\n|\r/).filter(n=>!BZe(n));if(i.length===this._selectionCount)return i[this._selectionIdx]}return t}}}let gY=class{constructor(e,t,i){this._model=e,this._selection=t,this._languageConfigurationService=i}resolve(e){const{name:t}=e,i=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),n=this._languageConfigurationService.getLanguageConfiguration(i).comments;if(n){if(t==="LINE_COMMENT")return n.lineCommentToken||void 0;if(t==="BLOCK_COMMENT_START")return n.blockCommentStartToken||void 0;if(t==="BLOCK_COMMENT_END")return n.blockCommentEndToken||void 0}}};gY=_Ut([zUt(2,bo)],gY);const tg=class tg{constructor(){this._date=new Date}resolve(e){const{name:t}=e;if(t==="CURRENT_YEAR")return String(this._date.getFullYear());if(t==="CURRENT_YEAR_SHORT")return String(this._date.getFullYear()).slice(-2);if(t==="CURRENT_MONTH")return String(this._date.getMonth().valueOf()+1).padStart(2,"0");if(t==="CURRENT_DATE")return String(this._date.getDate().valueOf()).padStart(2,"0");if(t==="CURRENT_HOUR")return String(this._date.getHours().valueOf()).padStart(2,"0");if(t==="CURRENT_MINUTE")return String(this._date.getMinutes().valueOf()).padStart(2,"0");if(t==="CURRENT_SECOND")return String(this._date.getSeconds().valueOf()).padStart(2,"0");if(t==="CURRENT_DAY_NAME")return tg.dayNames[this._date.getDay()];if(t==="CURRENT_DAY_NAME_SHORT")return tg.dayNamesShort[this._date.getDay()];if(t==="CURRENT_MONTH_NAME")return tg.monthNames[this._date.getMonth()];if(t==="CURRENT_MONTH_NAME_SHORT")return tg.monthNamesShort[this._date.getMonth()];if(t==="CURRENT_SECONDS_UNIX")return String(Math.floor(this._date.getTime()/1e3));if(t==="CURRENT_TIMEZONE_OFFSET"){const i=this._date.getTimezoneOffset(),n=i>0?"-":"+",o=Math.trunc(Math.abs(i/60)),r=o<10?"0"+o:o,l=Math.abs(i)-o*60,a=l<10?"0"+l:l;return n+r+":"+a}}};tg.dayNames=[F("Sunday","Sunday"),F("Monday","Monday"),F("Tuesday","Tuesday"),F("Wednesday","Wednesday"),F("Thursday","Thursday"),F("Friday","Friday"),F("Saturday","Saturday")],tg.dayNamesShort=[F("SundayShort","Sun"),F("MondayShort","Mon"),F("TuesdayShort","Tue"),F("WednesdayShort","Wed"),F("ThursdayShort","Thu"),F("FridayShort","Fri"),F("SaturdayShort","Sat")],tg.monthNames=[F("January","January"),F("February","February"),F("March","March"),F("April","April"),F("May","May"),F("June","June"),F("July","July"),F("August","August"),F("September","September"),F("October","October"),F("November","November"),F("December","December")],tg.monthNamesShort=[F("JanuaryShort","Jan"),F("FebruaryShort","Feb"),F("MarchShort","Mar"),F("AprilShort","Apr"),F("MayShort","May"),F("JuneShort","Jun"),F("JulyShort","Jul"),F("AugustShort","Aug"),F("SeptemberShort","Sep"),F("OctoberShort","Oct"),F("NovemberShort","Nov"),F("DecemberShort","Dec")];let fY=tg;class B0e{constructor(e){this._workspaceService=e}resolve(e){if(!this._workspaceService)return;const t=wet(this._workspaceService.getWorkspace());if(!yet(t)){if(e.name==="WORKSPACE_NAME")return this._resolveWorkspaceName(t);if(e.name==="WORKSPACE_FOLDER")return this._resoveWorkspacePath(t)}}_resolveWorkspaceName(e){if(g6(e))return AF(e.uri.path);let t=AF(e.configPath.path);return t.endsWith(f6)&&(t=t.substr(0,t.length-f6.length-1)),t}_resoveWorkspacePath(e){if(g6(e))return Q0e(e.uri.fsPath);const t=AF(e.configPath.path);let i=e.configPath.fsPath;return i.endsWith(t)&&(i=i.substr(0,i.length-t.length-1)),i?Q0e(i):"/"}}class L0e{resolve(e){const{name:t}=e;if(t==="RANDOM")return Math.random().toString().slice(-6);if(t==="RANDOM_HEX")return Math.random().toString(16).slice(-6);if(t==="UUID")return D9()}}var OUt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},jUt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Qm;const Ru=class Ru{constructor(e,t,i){this._editor=e,this._snippet=t,this._snippetLineLeadingWhitespace=i,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=Ece(t.placeholders,vh.compareByIndex),this._placeholderGroupsIdx=-1}initialize(e){this._offset=e.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(this._offset===-1)throw new Error("Snippet not initialized!");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const e=this._editor.getModel();this._editor.changeDecorations(t=>{for(const i of this._snippet.placeholders){const n=this._snippet.offset(i),o=this._snippet.fullLen(i),r=z.fromPositions(e.getPositionAt(this._offset+n),e.getPositionAt(this._offset+n+o)),l=i.isFinalTabstop?Ru._decor.inactiveFinal:Ru._decor.inactive,a=t.addDecoration(r,l);this._placeholderDecorations.set(i,a)}})}move(e){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const n=[];for(const o of this._placeholderGroups[this._placeholderGroupsIdx])if(o.transform){const r=this._placeholderDecorations.get(o),l=this._editor.getModel().getDecorationRange(r),a=this._editor.getModel().getValueInRange(l),d=o.transform.resolve(a).split(/\r\n|\r|\n/);for(let c=1;c<d.length;c++)d[c]=this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace+d[c]);n.push(mo.replace(l,d.join(this._editor.getModel().getEOL())))}n.length>0&&this._editor.executeEdits("snippet.placeholderTransform",n)}let t=!1;e===!0&&this._placeholderGroupsIdx<this._placeholderGroups.length-1?(this._placeholderGroupsIdx+=1,t=!0):e===!1&&this._placeholderGroupsIdx>0&&(this._placeholderGroupsIdx-=1,t=!0);const i=this._editor.getModel().changeDecorations(n=>{const o=new Set,r=[];for(const l of this._placeholderGroups[this._placeholderGroupsIdx]){const a=this._placeholderDecorations.get(l),d=this._editor.getModel().getDecorationRange(a);r.push(new _t(d.startLineNumber,d.startColumn,d.endLineNumber,d.endColumn)),t=t&&this._hasPlaceholderBeenCollapsed(l),n.changeDecorationOptions(a,l.isFinalTabstop?Ru._decor.activeFinal:Ru._decor.active),o.add(l);for(const c of this._snippet.enclosingPlaceholders(l)){const h=this._placeholderDecorations.get(c);n.changeDecorationOptions(h,c.isFinalTabstop?Ru._decor.activeFinal:Ru._decor.active),o.add(c)}}for(const[l,a]of this._placeholderDecorations)o.has(l)||n.changeDecorationOptions(a,l.isFinalTabstop?Ru._decor.inactiveFinal:Ru._decor.inactive);return r});return t?this.move(e):i??[]}_hasPlaceholderBeenCollapsed(e){let t=e;for(;t;){if(t instanceof vh){const i=this._placeholderDecorations.get(t);if(this._editor.getModel().getDecorationRange(i).isEmpty()&&t.toString().length>0)return!0}t=t.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||this._placeholderGroups.length===0}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(this._snippet.placeholders.length===0)return!0;if(this._snippet.placeholders.length===1){const[e]=this._snippet.placeholders;if(e.isFinalTabstop&&this._snippet.rightMostDescendant===e)return!0}return!1}computePossibleSelections(){const e=new Map;for(const t of this._placeholderGroups){let i;for(const n of t){if(n.isFinalTabstop)break;i||(i=[],e.set(n.index,i));const o=this._placeholderDecorations.get(n),r=this._editor.getModel().getDecorationRange(o);if(!r){e.delete(n.index);break}i.push(r)}}return e}get activeChoice(){if(!this._placeholderDecorations)return;const e=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!(e!=null&&e.choice))return;const t=this._placeholderDecorations.get(e);if(!t)return;const i=this._editor.getModel().getDecorationRange(t);if(i)return{range:i,choice:e.choice}}get hasChoice(){let e=!1;return this._snippet.walk(t=>(e=t instanceof BM,!e)),e}merge(e){const t=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations(i=>{for(const n of this._placeholderGroups[this._placeholderGroupsIdx]){const o=e.shift();console.assert(o._offset!==-1),console.assert(!o._placeholderDecorations);const r=o._snippet.placeholderInfo.last.index;for(const a of o._snippet.placeholderInfo.all)a.isFinalTabstop?a.index=n.index+(r+1)/this._nestingLevel:a.index=n.index+a.index/this._nestingLevel;this._snippet.replace(n,o._snippet.children);const l=this._placeholderDecorations.get(n);i.removeDecoration(l),this._placeholderDecorations.delete(n);for(const a of o._snippet.placeholders){const d=o._snippet.offset(a),c=o._snippet.fullLen(a),h=z.fromPositions(t.getPositionAt(o._offset+d),t.getPositionAt(o._offset+d+c)),u=i.addDecoration(h,Ru._decor.inactive);this._placeholderDecorations.set(a,u)}}this._placeholderGroups=Ece(this._snippet.placeholders,vh.compareByIndex)})}};Ru._decor={active:ki.register({description:"snippet-placeholder-1",stickiness:0,className:"snippet-placeholder"}),inactive:ki.register({description:"snippet-placeholder-2",stickiness:1,className:"snippet-placeholder"}),activeFinal:ki.register({description:"snippet-placeholder-3",stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:ki.register({description:"snippet-placeholder-4",stickiness:1,className:"finish-snippet-placeholder"})};let bY=Ru;const v0e={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let UY=Qm=class{static adjustWhitespace(e,t,i,n,o){const r=e.getLineContent(t.lineNumber),l=Rs(r,0,t.column-1);let a;return n.walk(d=>{if(!(d instanceof ka)||d.parent instanceof BM||o&&!o.has(d))return!0;const c=d.value.split(/\r\n|\r|\n/);if(i){const u=n.offset(d);if(u===0)c[0]=e.normalizeIndentation(c[0]);else{a=a??n.toString();const m=a.charCodeAt(u-1);(m===10||m===13)&&(c[0]=e.normalizeIndentation(l+c[0]))}for(let m=1;m<c.length;m++)c[m]=e.normalizeIndentation(l+c[m])}const h=c.join(e.getEOL());return h!==d.value&&(d.parent.replace(d,[new ka(h)]),a=void 0),!0}),l}static adjustSelection(e,t,i,n){if(i!==0||n!==0){const{positionLineNumber:o,positionColumn:r}=t,l=r-i,a=r+n,d=e.validateRange({startLineNumber:o,startColumn:l,endLineNumber:o,endColumn:a});t=_t.createWithDirection(d.startLineNumber,d.startColumn,d.endLineNumber,d.endColumn,t.getDirection())}return t}static createEditsAndSnippetsFromSelections(e,t,i,n,o,r,l,a,d){const c=[],h=[];if(!e.hasModel())return{edits:c,snippets:h};const u=e.getModel(),m=e.invokeWithinContext(Z=>Z.get(WN)),p=e.invokeWithinContext(Z=>new T0e(Z.get(vy),u)),g=()=>l,f=u.getValueInRange(Qm.adjustSelection(u,e.getSelection(),i,0)),b=u.getValueInRange(Qm.adjustSelection(u,e.getSelection(),0,n)),U=u.getLineFirstNonWhitespaceColumn(e.getSelection().positionLineNumber),S=e.getSelections().map((Z,R)=>({selection:Z,idx:R})).sort((Z,R)=>z.compareRangesUsingStarts(Z.selection,R.selection));for(const{selection:Z,idx:R}of S){let y=Qm.adjustSelection(u,Z,i,0),N=Qm.adjustSelection(u,Z,0,n);f!==u.getValueInRange(y)&&(y=Z),b!==u.getValueInRange(N)&&(N=Z);const w=Z.setStartPosition(y.startLineNumber,y.startColumn).setEndPosition(N.endLineNumber,N.endColumn),Q=new LN().parse(t,!0,o),C=w.getStartPosition(),v=Qm.adjustWhitespace(u,C,r||R>0&&U!==u.getLineFirstNonWhitespaceColumn(Z.positionLineNumber),Q);Q.resolveVariables(new M0e([p,new C0e(g,R,S.length,e.getOption(79)==="spread"),new w0e(u,Z,R,a),new gY(u,Z,d),new fY,new B0e(m),new L0e])),c[R]=mo.replace(w,Q.toString()),c[R].identifier={major:R,minor:0},c[R]._isTracked=!0,h[R]=new bY(e,Q,v)}return{edits:c,snippets:h}}static createEditsAndSnippetsFromEdits(e,t,i,n,o,r,l){if(!e.hasModel()||t.length===0)return{edits:[],snippets:[]};const a=[],d=e.getModel(),c=new LN,h=new Zk,u=new M0e([e.invokeWithinContext(p=>new T0e(p.get(vy),d)),new C0e(()=>o,0,e.getSelections().length,e.getOption(79)==="spread"),new w0e(d,e.getSelection(),0,r),new gY(d,e.getSelection(),l),new fY,new B0e(e.invokeWithinContext(p=>p.get(WN))),new L0e]);t=t.sort((p,g)=>z.compareRangesUsingStarts(p.range,g.range));let m=0;for(let p=0;p<t.length;p++){const{range:g,template:f}=t[p];if(p>0){const R=t[p-1].range,y=z.fromPositions(R.getEndPosition(),g.getStartPosition()),N=new ka(d.getValueInRange(y));h.appendChild(N),m+=N.value.length}const b=c.parseFragment(f,h);Qm.adjustWhitespace(d,g.getStartPosition(),!0,h,new Set(b)),h.resolveVariables(u);const U=h.toString(),S=U.slice(m);m=U.length;const Z=mo.replace(g,S);Z.identifier={major:p,minor:0},Z._isTracked=!0,a.push(Z)}return c.ensureFinalTabstop(h,i,!0),{edits:a,snippets:[new bY(e,h,"")]}}constructor(e,t,i=v0e,n){this._editor=e,this._template=t,this._options=i,this._languageConfigurationService=n,this._templateMerges=[],this._snippets=[]}dispose(){Ws(this._snippets)}_logInfo(){return`template="${this._template}", merged_templates="${this._templateMerges.join(" -> ")}"`}insert(){if(!this._editor.hasModel())return;const{edits:e,snippets:t}=typeof this._template=="string"?Qm.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):Qm.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=t,this._editor.executeEdits("snippet",e,i=>{const n=i.filter(o=>!!o.identifier);for(let o=0;o<t.length;o++)t[o].initialize(n[o].textChange);return this._snippets[0].hasPlaceholder?this._move(!0):n.map(o=>_t.fromPositions(o.range.getEndPosition()))}),this._editor.revealRange(this._editor.getSelections()[0])}merge(e,t=v0e){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,e]);const{edits:i,snippets:n}=Qm.createEditsAndSnippetsFromSelections(this._editor,e,t.overwriteBefore,t.overwriteAfter,!0,t.adjustWhitespace,t.clipboardText,t.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits("snippet",i,o=>{const r=o.filter(a=>!!a.identifier);for(let a=0;a<n.length;a++)n[a].initialize(r[a].textChange);const l=n[0].isTrivialSnippet;if(!l){for(const a of this._snippets)a.merge(n);console.assert(n.length===0)}return this._snippets[0].hasPlaceholder&&!l?this._move(void 0):r.map(a=>_t.fromPositions(a.range.getEndPosition()))})}next(){const e=this._move(!0);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}prev(){const e=this._move(!1);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}_move(e){const t=[];for(const i of this._snippets){const n=i.move(e);t.push(...n)}return t}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get hasChoice(){return this._snippets[0].hasChoice}get activeChoice(){return this._snippets[0].activeChoice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const e=this._editor.getSelections();if(e.length<this._snippets.length)return!1;const t=new Map;for(const i of this._snippets){const n=i.computePossibleSelections();if(t.size===0)for(const[o,r]of n){r.sort(z.compareRangesUsingStarts);for(const l of e)if(r[0].containsRange(l)){t.set(o,[]);break}}if(t.size===0)return!1;t.forEach((o,r)=>{o.push(...n.get(r))})}e.sort(z.compareRangesUsingStarts);for(const[i,n]of t){if(n.length!==e.length){t.delete(i);continue}n.sort(z.compareRangesUsingStarts);for(let o=0;o<n.length;o++)if(!n[o].containsRange(e[o])){t.delete(i);continue}}return t.size>0}};UY=Qm=OUt([jUt(3,bo)],UY);var PUt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},GI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},LV;const k0e={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};var Af;let Pa=(Af=class{static get(e){return e.getContribution(LV.ID)}constructor(e,t,i,n,o){this._editor=e,this._logService=t,this._languageFeaturesService=i,this._languageConfigurationService=o,this._snippetListener=new De,this._modelVersionId=-1,this._inSnippet=LV.InSnippetMode.bindTo(n),this._hasNextTabstop=LV.HasNextTabstop.bindTo(n),this._hasPrevTabstop=LV.HasPrevTabstop.bindTo(n)}dispose(){var e;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),(e=this._session)==null||e.dispose(),this._snippetListener.dispose()}insert(e,t){try{this._doInsert(e,typeof t>"u"?k0e:{...k0e,...t})}catch(i){this.cancel(),this._logService.error(i),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"<no_session>")}}_doInsert(e,t){var i;if(this._editor.hasModel()){if(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&typeof e!="string"&&this.cancel(),this._session?(vn(typeof e=="string"),this._session.merge(e,t)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new UY(this._editor,e,t,this._languageConfigurationService),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),(i=this._session)!=null&&i.hasChoice){const n={_debugDisplayName:"snippetChoiceCompletions",provideCompletionItems:(c,h)=>{if(!this._session||c!==this._editor.getModel()||!ge.equals(this._editor.getPosition(),h))return;const{activeChoice:u}=this._session;if(!u||u.choice.options.length===0)return;const m=c.getValueInRange(u.range),p=!!u.choice.options.find(f=>f.value===m),g=[];for(let f=0;f<u.choice.options.length;f++){const b=u.choice.options[f];g.push({kind:13,label:b.value,insertText:b.value,sortText:"a".repeat(f+1),range:u.range,filterText:p?`${m}_${b.value}`:void 0,command:{id:"jumpToNextSnippetPlaceholder",title:F("next","Go to next placeholder...")}})}return{suggestions:g}}},o=this._editor.getModel();let r,l=!1;const a=()=>{r==null||r.dispose(),l=!1},d=()=>{l||(r=this._languageFeaturesService.completionProvider.register({language:o.getLanguageId(),pattern:o.uri.fsPath,scheme:o.uri.scheme,exclusive:!0},n),this._snippetListener.add(r),l=!0)};this._choiceCompletions={provider:n,enable:d,disable:a}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent(n=>n.isFlush&&this.cancel())),this._snippetListener.add(this._editor.onDidChangeModel(()=>this.cancel())),this._snippetListener.add(this._editor.onDidChangeCursorSelection(()=>this._updateState()))}}_updateState(){if(!(!this._session||!this._editor.hasModel())){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this._editor.getModel().pushStackElement(),this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){var t;if(!this._session||!this._editor.hasModel()){this._currentChoice=void 0;return}const{activeChoice:e}=this._session;if(!e||!this._choiceCompletions){(t=this._choiceCompletions)==null||t.disable(),this._currentChoice=void 0;return}this._currentChoice!==e.choice&&(this._currentChoice=e.choice,this._choiceCompletions.enable(),queueMicrotask(()=>{YUt(this._editor,this._choiceCompletions.provider)}))}finish(){for(;this._inSnippet.get();)this.next()}cancel(e=!1){var t;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,(t=this._session)==null||t.dispose(),this._session=void 0,this._modelVersionId=-1,e&&this._editor.setSelections([this._editor.getSelection()])}prev(){var e;(e=this._session)==null||e.prev(),this._updateState()}next(){var e;(e=this._session)==null||e.next(),this._updateState()}isInSnippet(){return!!this._inSnippet.get()}},LV=Af,Af.ID="snippetController2",Af.InSnippetMode=new yt("inSnippetMode",!1,F("inSnippetMode","Whether the editor in current in snippet mode")),Af.HasNextTabstop=new yt("hasNextTabstop",!1,F("hasNextTabstop","Whether there is a next tab stop when in snippet mode")),Af.HasPrevTabstop=new yt("hasPrevTabstop",!1,F("hasPrevTabstop","Whether there is a previous tab stop when in snippet mode")),Af);Pa=LV=PUt([GI(1,Cl),GI(2,xt),GI(3,fi),GI(4,bo)],Pa);Wn(Pa.ID,Pa,4);const K9=Nr.bindToContribution(Pa.get);Vt(new K9({id:"jumpToNextSnippetPlaceholder",precondition:Ge.and(Pa.InSnippetMode,Pa.HasNextTabstop),handler:s=>s.next(),kbOpts:{weight:100+30,kbExpr:$.textInputFocus,primary:2}}));Vt(new K9({id:"jumpToPrevSnippetPlaceholder",precondition:Ge.and(Pa.InSnippetMode,Pa.HasPrevTabstop),handler:s=>s.prev(),kbOpts:{weight:100+30,kbExpr:$.textInputFocus,primary:1026}}));Vt(new K9({id:"leaveSnippet",precondition:Pa.InSnippetMode,handler:s=>s.cancel(!0),kbOpts:{weight:100+30,kbExpr:$.textInputFocus,primary:9,secondary:[1033]}}));Vt(new K9({id:"acceptSnippet",precondition:Pa.InSnippetMode,handler:s=>s.finish()}));var HUt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},AH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Eee=class extends be{get isAcceptingPartially(){return this._isAcceptingPartially}constructor(e,t,i,n,o,r,l,a,d,c,h,u){super(),this.textModel=e,this.selectedSuggestItem=t,this._textModelVersionId=i,this._positions=n,this._debounceValue=o,this._suggestPreviewEnabled=r,this._suggestPreviewMode=l,this._inlineSuggestMode=a,this._enabled=d,this._instantiationService=c,this._commandService=h,this._languageConfigurationService=u,this._source=this._register(this._instantiationService.createInstance(Iee,this.textModel,this._textModelVersionId,this._debounceValue)),this._isActive=Pi(this,!1),this._forceUpdateExplicitlySignal=SM(this),this._selectedInlineCompletionId=Pi(this,void 0),this._primaryPosition=Pt(this,p=>this._positions.read(p)[0]??new ge(1,1)),this._isAcceptingPartially=!1,this._preserveCurrentCompletionReasons=new Set([X0.Redo,X0.Undo,X0.AcceptWord]),this._fetchInlineCompletionsPromise=oRe({owner:this,createEmptyChangeSummary:()=>({preserveCurrentCompletion:!1,inlineCompletionTriggerKind:tp.Automatic}),handleChange:(p,g)=>(p.didChange(this._textModelVersionId)&&this._preserveCurrentCompletionReasons.has(this._getReason(p.change))?g.preserveCurrentCompletion=!0:p.didChange(this._forceUpdateExplicitlySignal)&&(g.inlineCompletionTriggerKind=tp.Explicit),!0)},(p,g)=>{if(this._forceUpdateExplicitlySignal.read(p),!(this._enabled.read(p)&&this.selectedSuggestItem.read(p)||this._isActive.read(p))){this._source.cancelUpdate();return}this._textModelVersionId.read(p);const b=this._source.suggestWidgetInlineCompletions.get(),U=this.selectedSuggestItem.read(p);if(b&&!U){const N=this._source.inlineCompletions.get();po(w=>{(!N||b.request.versionId>N.request.versionId)&&this._source.inlineCompletions.set(b.clone(),w),this._source.clearSuggestWidgetInlineCompletions(w)})}const S=this._primaryPosition.read(p),Z={triggerKind:g.inlineCompletionTriggerKind,selectedSuggestionInfo:U==null?void 0:U.toSelectedSuggestionInfo()},R=this.selectedInlineCompletion.get(),y=g.preserveCurrentCompletion||R!=null&&R.forwardStable?R:void 0;return this._source.fetch(S,Z,y)}),this._filteredInlineCompletionItems=Yc({owner:this,equalsFn:IX()},p=>{const g=this._source.inlineCompletions.read(p);if(!g)return[];const f=this._primaryPosition.read(p);return g.inlineCompletions.filter(U=>U.isVisible(this.textModel,f,p))}),this.selectedInlineCompletionIndex=Pt(this,p=>{const g=this._selectedInlineCompletionId.read(p),f=this._filteredInlineCompletionItems.read(p),b=this._selectedInlineCompletionId===void 0?-1:f.findIndex(U=>U.semanticId===g);return b===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):b}),this.selectedInlineCompletion=Pt(this,p=>{const g=this._filteredInlineCompletionItems.read(p),f=this.selectedInlineCompletionIndex.read(p);return g[f]}),this.activeCommands=Yc({owner:this,equalsFn:IX()},p=>{var g;return((g=this.selectedInlineCompletion.read(p))==null?void 0:g.inlineCompletion.source.inlineCompletions.commands)??[]}),this.lastTriggerKind=this._source.inlineCompletions.map(this,p=>p==null?void 0:p.request.context.triggerKind),this.inlineCompletionsCount=Pt(this,p=>{if(this.lastTriggerKind.read(p)===tp.Explicit)return this._filteredInlineCompletionItems.read(p).length}),this.state=Yc({owner:this,equalsFn:(p,g)=>!p||!g?p===g:U0e(p.ghostTexts,g.ghostTexts)&&p.inlineCompletion===g.inlineCompletion&&p.suggestItem===g.suggestItem},p=>{const g=this.textModel,f=this.selectedSuggestItem.read(p);if(f){const b=jS(f.toSingleTextEdit(),g),U=this._computeAugmentation(b,p);if(!this._suggestPreviewEnabled.read(p)&&!U)return;const Z=(U==null?void 0:U.edit)??b,R=U?U.edit.text.length-b.text.length:0,y=this._suggestPreviewMode.read(p),N=this._positions.read(p),w=[Z,...ZH(this.textModel,N,Z)],Q=w.map((v,Y)=>N0e(v,g,y,N[Y],R)).filter(Lg),C=Q[0]??new tv(Z.range.endLineNumber,[]);return{edits:w,primaryGhostText:C,ghostTexts:Q,inlineCompletion:U==null?void 0:U.completion,suggestItem:f}}else{if(!this._isActive.read(p))return;const b=this.selectedInlineCompletion.read(p);if(!b)return;const U=b.toSingleTextEdit(p),S=this._inlineSuggestMode.read(p),Z=this._positions.read(p),R=[U,...ZH(this.textModel,Z,U)],y=R.map((N,w)=>N0e(N,g,S,Z[w],0)).filter(Lg);return y[0]?{edits:R,primaryGhostText:y[0],ghostTexts:y,inlineCompletion:b,suggestItem:void 0}:void 0}}),this.ghostTexts=Yc({owner:this,equalsFn:U0e},p=>{const g=this.state.read(p);if(g)return g.ghostTexts}),this.primaryGhostText=Yc({owner:this,equalsFn:Cye},p=>{const g=this.state.read(p);if(g)return g==null?void 0:g.primaryGhostText}),this._register(NM(this._fetchInlineCompletionsPromise));let m;this._register(yi(p=>{var b,U;const g=this.state.read(p),f=g==null?void 0:g.inlineCompletion;if((f==null?void 0:f.semanticId)!==(m==null?void 0:m.semanticId)&&(m=f,f)){const S=f.inlineCompletion,Z=S.source;(U=(b=Z.provider).handleItemDidShow)==null||U.call(b,Z.inlineCompletions,S.sourceInlineCompletion,S.insertText)}}))}_getReason(e){return e!=null&&e.isUndoing?X0.Undo:e!=null&&e.isRedoing?X0.Redo:this.isAcceptingPartially?X0.AcceptWord:X0.Other}async trigger(e){this._isActive.set(!0,e),await this._fetchInlineCompletionsPromise.get()}async triggerExplicitly(e){yN(e,t=>{this._isActive.set(!0,t),this._forceUpdateExplicitlySignal.trigger(t)}),await this._fetchInlineCompletionsPromise.get()}stop(e){yN(e,t=>{this._isActive.set(!1,t),this._source.clear(t)})}_computeAugmentation(e,t){const i=this.textModel,n=this._source.suggestWidgetInlineCompletions.read(t),o=n?n.inlineCompletions:[this.selectedInlineCompletion.read(t)].filter(Lg);return s7e(o,l=>{let a=l.toSingleTextEdit(t);return a=jS(a,i,z.fromPositions(a.range.getStartPosition(),e.range.getEndPosition())),kye(a,e)?{completion:l,edit:a}:void 0})}async _deltaSelectedInlineCompletionIndex(e){await this.triggerExplicitly();const t=this._filteredInlineCompletionItems.get()||[];if(t.length>0){const i=(this.selectedInlineCompletionIndex.get()+e+t.length)%t.length;this._selectedInlineCompletionId.set(t[i].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)}async next(){await this._deltaSelectedInlineCompletionIndex(1)}async previous(){await this._deltaSelectedInlineCompletionIndex(-1)}async accept(e){var n;if(e.getModel()!==this.textModel)throw new _n;const t=this.state.get();if(!t||t.primaryGhostText.isEmpty()||!t.inlineCompletion)return;const i=t.inlineCompletion.toInlineCompletion(void 0);if(i.command&&i.source.addRef(),e.pushUndoStop(),i.snippetInfo)e.executeEdits("inlineSuggestion.accept",[mo.replace(i.range,""),...i.additionalTextEdits]),e.setPosition(i.snippetInfo.range.getStartPosition(),"inlineCompletionAccept"),(n=Pa.get(e))==null||n.insert(i.snippetInfo.snippet,{undoStopBefore:!1});else{const o=t.edits,r=x0e(o).map(l=>_t.fromPositions(l));e.executeEdits("inlineSuggestion.accept",[...o.map(l=>mo.replace(l.range,l.text)),...i.additionalTextEdits]),e.setSelections(r,"inlineCompletionAccept")}this.stop(),i.command&&(await this._commandService.executeCommand(i.command.id,...i.command.arguments||[]).then(void 0,vo),i.source.removeRef())}async acceptNextWord(e){await this._acceptNext(e,(t,i)=>{const n=this.textModel.getLanguageIdAtPosition(t.lineNumber,t.column),o=this._languageConfigurationService.getLanguageConfiguration(n),r=new RegExp(o.wordDefinition.source,o.wordDefinition.flags.replace("g","")),l=i.match(r);let a=0;l&&l.index!==void 0?l.index===0?a=l[0].length:a=l.index:a=i.length;const c=/\s+/g.exec(i);return c&&c.index!==void 0&&c.index+c[0].length<a&&(a=c.index+c[0].length),a},0)}async acceptNextLine(e){await this._acceptNext(e,(t,i)=>{const n=i.match(/\n/);return n&&n.index!==void 0?n.index+1:i.length},1)}async _acceptNext(e,t,i){if(e.getModel()!==this.textModel)throw new _n;const n=this.state.get();if(!n||n.primaryGhostText.isEmpty()||!n.inlineCompletion)return;const o=n.primaryGhostText,r=n.inlineCompletion.toInlineCompletion(void 0);if(r.snippetInfo||r.filterText!==r.insertText){await this.accept(e);return}const l=o.parts[0],a=new ge(o.lineNumber,l.column),d=l.text,c=t(a,d);if(c===d.length&&o.parts.length===1){this.accept(e);return}const h=d.substring(0,c),u=this._positions.get(),m=u[0];r.source.addRef();try{this._isAcceptingPartially=!0;try{e.pushUndoStop();const p=z.fromPositions(m,a),g=e.getModel().getValueInRange(p)+h,f=new Dg(p,g),b=[f,...ZH(this.textModel,u,f)],U=x0e(b).map(S=>_t.fromPositions(S));e.executeEdits("inlineSuggestion.accept",b.map(S=>mo.replace(S.range,S.text))),e.setSelections(U,"inlineCompletionPartialAccept"),e.revealPositionInCenterIfOutsideViewport(e.getPosition(),1)}finally{this._isAcceptingPartially=!1}if(r.source.provider.handlePartialAccept){const p=z.fromPositions(r.range.getStartPosition(),tm.ofText(h).addToPosition(a)),g=e.getModel().getValueInRange(p,1);r.source.provider.handlePartialAccept(r.source.inlineCompletions,r.sourceInlineCompletion,g.length,{kind:i})}}finally{r.source.removeRef()}}handleSuggestAccepted(e){var o,r;const t=jS(e.toSingleTextEdit(),this.textModel),i=this._computeAugmentation(t,void 0);if(!i)return;const n=i.completion.inlineCompletion;(r=(o=n.source.provider).handlePartialAccept)==null||r.call(o,n.source.inlineCompletions,n.sourceInlineCompletion,t.text.length,{kind:2})}};Eee=HUt([AH(9,ti),AH(10,ks),AH(11,bo)],Eee);var X0;(function(s){s[s.Undo=0]="Undo",s[s.Redo=1]="Redo",s[s.AcceptWord=2]="AcceptWord",s[s.Other=3]="Other"})(X0||(X0={}));function ZH(s,e,t){if(e.length===1)return[];const i=e[0],n=e.slice(1),o=t.range.getStartPosition(),r=t.range.getEndPosition(),l=s.getValueInRange(z.fromPositions(i,r)),a=F0e(i,o);if(a.lineNumber<1)return wi(new _n(`positionWithinTextEdit line number should be bigger than 0.
- Invalid subtraction between ${i.toString()} and ${o.toString()}`)),[];const d=KUt(t.text,a);return n.map(c=>{const h=SUt(F0e(c,o),r),u=s.getValueInRange(z.fromPositions(c,h)),m=LF(l,u),p=z.fromPositions(c,c.delta(0,m));return new Dg(p,d)})}function KUt(s,e){let t="";const i=CPe(s);for(let n=e.lineNumber-1;n<i.length;n++)t+=i[n].substring(n===e.lineNumber-1?e.column-1:0);return t}function x0e(s){const e=YJ.createSortPermutation(s,Ja(o=>o.range,z.compareRangesUsingStarts)),i=new Kse(e.apply(s)).getNewRanges();return e.inverse().apply(i).map(o=>o.getEndPosition())}var qUt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},I0e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},IT;class vle{constructor(e){this.name=e}select(e,t,i){if(i.length===0)return 0;const n=i[0].score[0];for(let o=0;o<i.length;o++){const{score:r,completion:l}=i[o];if(r[0]!==n)break;if(l.preselect)return o}return 0}}class E0e extends vle{constructor(){super("first")}memorize(e,t,i){}toJSON(){}fromJSON(){}}class $Ut extends vle{constructor(){super("recentlyUsed"),this._cache=new $g(300,.66),this._seq=0}memorize(e,t,i){const n=`${e.getLanguageId()}/${i.textLabel}`;this._cache.set(n,{touch:this._seq++,type:i.completion.kind,insertText:i.completion.insertText})}select(e,t,i){if(i.length===0)return 0;const n=e.getLineContent(t.lineNumber).substr(t.column-10,t.column-1);if(/\s$/.test(n))return super.select(e,t,i);const o=i[0].score[0];let r=-1,l=-1,a=-1;for(let d=0;d<i.length&&i[d].score[0]===o;d++){const c=`${e.getLanguageId()}/${i[d].textLabel}`,h=this._cache.peek(c);if(h&&h.touch>a&&h.type===i[d].completion.kind&&h.insertText===i[d].completion.insertText&&(a=h.touch,l=d),i[d].completion.preselect&&r===-1)return r=d}return l!==-1?l:r!==-1?r:0}toJSON(){return this._cache.toJSON()}fromJSON(e){this._cache.clear();const t=0;for(const[i,n]of e)n.touch=t,n.type=typeof n.type=="number"?n.type:XB.fromString(n.type),this._cache.set(i,n);this._seq=this._cache.size}}class eFt extends vle{constructor(){super("recentlyUsedByPrefix"),this._trie=v1.forStrings(),this._seq=0}memorize(e,t,i){const{word:n}=e.getWordUntilPosition(t),o=`${e.getLanguageId()}/${n}`;this._trie.set(o,{type:i.completion.kind,insertText:i.completion.insertText,touch:this._seq++})}select(e,t,i){const{word:n}=e.getWordUntilPosition(t);if(!n)return super.select(e,t,i);const o=`${e.getLanguageId()}/${n}`;let r=this._trie.get(o);if(r||(r=this._trie.findSubstr(o)),r)for(let l=0;l<i.length;l++){const{kind:a,insertText:d}=i[l].completion;if(a===r.type&&d===r.insertText)return l}return super.select(e,t,i)}toJSON(){const e=[];return this._trie.forEach((t,i)=>e.push([i,t])),e.sort((t,i)=>-(t[1].touch-i[1].touch)).forEach((t,i)=>t[1].touch=i),e.slice(0,200)}fromJSON(e){if(this._trie.clear(),e.length>0){this._seq=e[0][1].touch+1;for(const[t,i]of e)i.type=typeof i.type=="number"?i.type:XB.fromString(i.type),this._trie.set(t,i)}}}var oN;let Dee=(oN=class{constructor(e,t){this._storageService=e,this._configService=t,this._disposables=new De,this._persistSoon=new cs(()=>this._saveState(),500),this._disposables.add(e.onWillSaveState(i=>{i.reason===UL.SHUTDOWN&&this._saveState()}))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(e,t,i){this._withStrategy(e,t).memorize(e,t,i),this._persistSoon.schedule()}select(e,t,i){return this._withStrategy(e,t).select(e,t,i)}_withStrategy(e,t){var n;const i=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:e.getLanguageIdAtPosition(t.lineNumber,t.column),resource:e.uri});if(((n=this._strategy)==null?void 0:n.name)!==i){this._saveState();const o=IT._strategyCtors.get(i)||E0e;this._strategy=new o;try{const l=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,a=this._storageService.get(`${IT._storagePrefix}/${i}`,l);a&&this._strategy.fromJSON(JSON.parse(a))}catch{}}return this._strategy}_saveState(){if(this._strategy){const t=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,i=JSON.stringify(this._strategy);this._storageService.store(`${IT._storagePrefix}/${this._strategy.name}`,i,t,1)}}},IT=oN,oN._strategyCtors=new Map([["recentlyUsedByPrefix",eFt],["recentlyUsed",$Ut],["first",E0e]]),oN._storagePrefix="suggest/memories",oN);Dee=IT=qUt([I0e(0,lm),I0e(1,Hi)],Dee);const q9=un("ISuggestMemories");Fn(q9,Dee,1);var tFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},iFt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Gee,IQ;let FY=(IQ=class{constructor(e,t){this._editor=e,this._enabled=!1,this._ckAtEnd=Gee.AtEnd.bindTo(t),this._configListener=this._editor.onDidChangeConfiguration(i=>i.hasChanged(124)&&this._update()),this._update()}dispose(){var e;this._configListener.dispose(),(e=this._selectionListener)==null||e.dispose(),this._ckAtEnd.reset()}_update(){const e=this._editor.getOption(124)==="on";if(this._enabled!==e)if(this._enabled=e,this._enabled){const t=()=>{if(!this._editor.hasModel()){this._ckAtEnd.set(!1);return}const i=this._editor.getModel(),n=this._editor.getSelection(),o=i.getWordAtPosition(n.getStartPosition());if(!o){this._ckAtEnd.set(!1);return}this._ckAtEnd.set(o.endColumn===n.getStartPosition().column)};this._selectionListener=this._editor.onDidChangeCursorSelection(t),t()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}},Gee=IQ,IQ.AtEnd=new yt("atEndOfWord",!1),IQ);FY=Gee=tFt([iFt(1,fi)],FY);var nFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},sFt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},ET,EQ;let iQ=(EQ=class{constructor(e,t){this._editor=e,this._index=0,this._ckOtherSuggestions=ET.OtherSuggestions.bindTo(t)}dispose(){this.reset()}reset(){var e;this._ckOtherSuggestions.reset(),(e=this._listener)==null||e.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:e,index:t},i){if(e.items.length===0){this.reset();return}if(ET._moveIndex(!0,e,t)===t){this.reset();return}this._acceptNext=i,this._model=e,this._index=t,this._listener=this._editor.onDidChangeCursorPosition(()=>{this._ignore||this.reset()}),this._ckOtherSuggestions.set(!0)}static _moveIndex(e,t,i){let n=i;for(let o=t.items.length;o>0&&(n=(n+t.items.length+(e?1:-1))%t.items.length,!(n===i||!t.items[n].completion.additionalTextEdits));o--);return n}next(){this._move(!0)}prev(){this._move(!1)}_move(e){if(this._model)try{this._ignore=!0,this._index=ET._moveIndex(e,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}},ET=EQ,EQ.OtherSuggestions=new yt("hasOtherSuggestions",!1),EQ);iQ=ET=nFt([sFt(1,fi)],iQ);class oFt{constructor(e,t,i,n){this._disposables=new De,this._disposables.add(i.onDidSuggest(o=>{o.completionModel.items.length===0&&this.reset()})),this._disposables.add(i.onDidCancel(o=>{this.reset()})),this._disposables.add(t.onDidShow(()=>this._onItem(t.getFocusedItem()))),this._disposables.add(t.onDidFocus(this._onItem,this)),this._disposables.add(t.onDidHide(this.reset,this)),this._disposables.add(e.onWillType(o=>{if(this._active&&!t.isFrozen()&&i.state!==0){const r=o.charCodeAt(o.length-1);this._active.acceptCharacters.has(r)&&e.getOption(0)&&n(this._active.item)}}))}_onItem(e){if(!e||!ba(e.item.completion.commitCharacters)){this.reset();return}if(this._active&&this._active.item.item===e.item)return;const t=new fX;for(const i of e.item.completion.commitCharacters)i.length>0&&t.add(i.charCodeAt(0));this._active={acceptCharacters:t,item:e}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}const Mh=class Mh{async provideSelectionRanges(e,t){const i=[];for(const n of t){const o=[];i.push(o);const r=new Map;await new Promise(l=>Mh._bracketsRightYield(l,0,e,n,r)),await new Promise(l=>Mh._bracketsLeftYield(l,0,e,n,r,o))}return i}static _bracketsRightYield(e,t,i,n,o){const r=new Map,l=Date.now();for(;;){if(t>=Mh._maxRounds){e();break}if(!n){e();break}const a=i.bracketPairs.findNextBracket(n);if(!a){e();break}if(Date.now()-l>Mh._maxDuration){setTimeout(()=>Mh._bracketsRightYield(e,t+1,i,n,o));break}if(a.bracketInfo.isOpeningBracket){const c=a.bracketInfo.bracketText,h=r.has(c)?r.get(c):0;r.set(c,h+1)}else{const c=a.bracketInfo.getOpeningBrackets()[0].bracketText;let h=r.has(c)?r.get(c):0;if(h-=1,r.set(c,Math.max(0,h)),h<0){let u=o.get(c);u||(u=new Ia,o.set(c,u)),u.push(a.range)}}n=a.range.getEndPosition()}}static _bracketsLeftYield(e,t,i,n,o,r){const l=new Map,a=Date.now();for(;;){if(t>=Mh._maxRounds&&o.size===0){e();break}if(!n){e();break}const d=i.bracketPairs.findPrevBracket(n);if(!d){e();break}if(Date.now()-a>Mh._maxDuration){setTimeout(()=>Mh._bracketsLeftYield(e,t+1,i,n,o,r));break}if(d.bracketInfo.isOpeningBracket){const h=d.bracketInfo.bracketText;let u=l.has(h)?l.get(h):0;if(u-=1,l.set(h,Math.max(0,u)),u<0){const m=o.get(h);if(m){const p=m.shift();m.size===0&&o.delete(h);const g=z.fromPositions(d.range.getEndPosition(),p.getStartPosition()),f=z.fromPositions(d.range.getStartPosition(),p.getEndPosition());r.push({range:g}),r.push({range:f}),Mh._addBracketLeading(i,f,r)}}}else{const h=d.bracketInfo.getOpeningBrackets()[0].bracketText,u=l.has(h)?l.get(h):0;l.set(h,u+1)}n=d.range.getStartPosition()}}static _addBracketLeading(e,t,i){if(t.startLineNumber===t.endLineNumber)return;const n=t.startLineNumber,o=e.getLineFirstNonWhitespaceColumn(n);o!==0&&o!==t.startColumn&&(i.push({range:z.fromPositions(new ge(n,o),t.getEndPosition())}),i.push({range:z.fromPositions(new ge(n,1),t.getEndPosition())}));const r=n-1;if(r>0){const l=e.getLineFirstNonWhitespaceColumn(r);l===t.startColumn&&l!==e.getLineLastNonWhitespaceColumn(r)&&(i.push({range:z.fromPositions(new ge(r,l),t.getEndPosition())}),i.push({range:z.fromPositions(new ge(r,1),t.getEndPosition())}))}}};Mh._maxDuration=30,Mh._maxRounds=2;let AY=Mh;const ig=class ig{static async create(e,t){if(!t.getOption(119).localityBonus||!t.hasModel())return ig.None;const i=t.getModel(),n=t.getPosition();if(!e.canComputeWordRanges(i.uri))return ig.None;const[o]=await new AY().provideSelectionRanges(i,[n]);if(o.length===0)return ig.None;const r=await e.computeWordRanges(i.uri,o[0].range);if(!r)return ig.None;const l=i.getWordUntilPosition(n);return delete r[l.word],new class extends ig{distance(a,d){if(!n.equals(t.getPosition()))return 0;if(d.kind===17)return 2<<20;const c=typeof d.label=="string"?d.label:d.label.label,h=r[c];if($Ae(h))return 2<<20;const u=xB(h,z.fromPositions(a),z.compareRangesUsingStarts),m=u>=0?h[u]:h[Math.max(0,~u-1)];let p=o.length;for(const g of o){if(!z.containsRange(g.range,m))break;p-=1}return p}}}};ig.None=new class extends ig{distance(){return 0}};let ZY=ig,D0e=class{constructor(e,t){this.leadingLineContent=e,this.characterCountDelta=t}};class yU{constructor(e,t,i,n,o,r,l=hL.default,a=void 0){this.clipboardText=a,this._snippetCompareFn=yU._compareCompletionItems,this._items=e,this._column=t,this._wordDistance=n,this._options=o,this._refilterKind=1,this._lineContext=i,this._fuzzyScoreOptions=l,r==="top"?this._snippetCompareFn=yU._compareCompletionItemsSnippetsUp:r==="bottom"&&(this._snippetCompareFn=yU._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(e){(this._lineContext.leadingLineContent!==e.leadingLineContent||this._lineContext.characterCountDelta!==e.characterCountDelta)&&(this._refilterKind=this._lineContext.characterCountDelta<e.characterCountDelta&&this._filteredItems?2:1,this._lineContext=e)}get items(){return this._ensureCachedState(),this._filteredItems}getItemsByProvider(){return this._ensureCachedState(),this._itemsByProvider}getIncompleteProvider(){this._ensureCachedState();const e=new Set;for(const[t,i]of this.getItemsByProvider())i.length>0&&i[0].container.incomplete&&e.add(t);return e}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){this._refilterKind!==0&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const e=[],{leadingLineContent:t,characterCountDelta:i}=this._lineContext;let n="",o="";const r=this._refilterKind===1?this._items:this._filteredItems,l=[],a=!this._options.filterGraceful||r.length>2e3?VN:Pqe;for(let d=0;d<r.length;d++){const c=r[d];if(c.isInvalid)continue;const h=this._itemsByProvider.get(c.provider);h?h.push(c):this._itemsByProvider.set(c.provider,[c]);const u=c.position.column-c.editStart.column,m=u+i-(c.position.column-this._column);if(n.length!==m&&(n=m===0?"":t.slice(-m),o=n.toLowerCase()),c.word=n,m===0)c.score=op.Default;else{let p=0;for(;p<u;){const g=n.charCodeAt(p);if(g===32||g===9)p+=1;else break}if(p>=m)c.score=op.Default;else if(typeof c.completion.filterText=="string"){const g=a(n,o,p,c.completion.filterText,c.filterTextLow,0,this._fuzzyScoreOptions);if(!g)continue;n8(c.completion.filterText,c.textLabel)===0?c.score=g:(c.score=_qe(n,o,p,c.textLabel,c.labelLow,0),c.score[0]=g[0])}else{const g=a(n,o,p,c.textLabel,c.labelLow,0,this._fuzzyScoreOptions);if(!g)continue;c.score=g}}c.idx=d,c.distance=this._wordDistance.distance(c.position,c.completion),l.push(c),e.push(c.textLabel.length)}this._filteredItems=l.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:e.length?jK(e.length-.85,e,(d,c)=>d-c):0}}static _compareCompletionItems(e,t){return e.score[0]>t.score[0]?-1:e.score[0]<t.score[0]?1:e.distance<t.distance?-1:e.distance>t.distance?1:e.idx<t.idx?-1:e.idx>t.idx?1:0}static _compareCompletionItemsSnippetsDown(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===27)return 1;if(t.completion.kind===27)return-1}return yU._compareCompletionItems(e,t)}static _compareCompletionItemsSnippetsUp(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===27)return-1;if(t.completion.kind===27)return 1}return yU._compareCompletionItems(e,t)}}var rFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},yb=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Jee;class BA{static shouldAutoTrigger(e){if(!e.hasModel())return!1;const t=e.getModel(),i=e.getPosition();t.tokenization.tokenizeIfCheap(i.lineNumber);const n=t.getWordAtPosition(i);return!(!n||n.endColumn!==i.column&&n.startColumn+1!==i.column||!isNaN(Number(n.word)))}constructor(e,t,i){this.leadingLineContent=e.getLineContent(t.lineNumber).substr(0,t.column-1),this.leadingWord=e.getWordUntilPosition(t),this.lineNumber=t.lineNumber,this.column=t.column,this.triggerOptions=i}}function lFt(s,e,t){if(!e.getContextKeyValue(uc.inlineSuggestionVisible.key))return!0;const i=e.getContextKeyValue(uc.suppressSuggestions.key);return i!==void 0?!i:!s.getOption(62).suppressSuggestions}function aFt(s,e,t){if(!e.getContextKeyValue("inlineSuggestionVisible"))return!0;const i=e.getContextKeyValue(uc.suppressSuggestions.key);return i!==void 0?!i:!s.getOption(62).suppressSuggestions}let SY=Jee=class{constructor(e,t,i,n,o,r,l,a,d){this._editor=e,this._editorWorkerService=t,this._clipboardService=i,this._telemetryService=n,this._logService=o,this._contextKeyService=r,this._configurationService=l,this._languageFeaturesService=a,this._envService=d,this._toDispose=new De,this._triggerCharacterListener=new De,this._triggerQuickSuggest=new om,this._triggerState=void 0,this._completionDisposables=new De,this._onDidCancel=new fe,this._onDidTrigger=new fe,this._onDidSuggest=new fe,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new _t(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeModelLanguage(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeConfiguration(()=>{this._updateTriggerCharacters()})),this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange(()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()}));let c=!1;this._toDispose.add(this._editor.onDidCompositionStart(()=>{c=!0})),this._toDispose.add(this._editor.onDidCompositionEnd(()=>{c=!1,this._onCompositionEnd()})),this._toDispose.add(this._editor.onDidChangeCursorSelection(h=>{c||this._onCursorChange(h)})),this._toDispose.add(this._editor.onDidChangeModelContent(()=>{!c&&this._triggerState!==void 0&&this._refilterCompletionItems()})),this._updateTriggerCharacters()}dispose(){Ws(this._triggerCharacterListener),Ws([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(92)||!this._editor.hasModel()||!this._editor.getOption(122))return;const e=new Map;for(const i of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const n of i.triggerCharacters||[]){let o=e.get(n);o||(o=new Set,e.set(n,o)),o.add(i)}const t=i=>{var r;if(!aFt(this._editor,this._contextKeyService,this._configurationService)||BA.shouldAutoTrigger(this._editor))return;if(!i){const l=this._editor.getPosition();i=this._editor.getModel().getLineContent(l.lineNumber).substr(0,l.column-1)}let n="";UN(i.charCodeAt(i.length-1))?Mr(i.charCodeAt(i.length-2))&&(n=i.substr(i.length-2)):n=i.charAt(i.length-1);const o=e.get(n);if(o){const l=new Map;if(this._completionModel)for(const[a,d]of this._completionModel.getItemsByProvider())o.has(a)||l.set(a,d);this.trigger({auto:!0,triggerKind:1,triggerCharacter:n,retrigger:!!this._completionModel,clipboardText:(r=this._completionModel)==null?void 0:r.clipboardText,completionOptions:{providerFilter:o,providerItemsToReuse:l}})}};this._triggerCharacterListener.add(this._editor.onDidType(t)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(()=>t()))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(e=!1){var t;this._triggerState!==void 0&&(this._triggerQuickSuggest.cancel(),(t=this._requestToken)==null||t.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:e}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){this._triggerState!==void 0&&(!this._editor.hasModel()||!this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.cancel():this.trigger({auto:this._triggerState.auto,retrigger:!0}))}_onCursorChange(e){if(!this._editor.hasModel())return;const t=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!e.selection.isEmpty()||e.reason!==0&&e.reason!==3||e.source!=="keyboard"&&e.source!=="deleteLeft"){this.cancel();return}this._triggerState===void 0&&e.reason===0?(t.containsRange(this._currentSelection)||t.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():this._triggerState!==void 0&&e.reason===3&&this._refilterCompletionItems()}_onCompositionEnd(){this._triggerState===void 0?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var e;IW.isAllOff(this._editor.getOption(90))||this._editor.getOption(119).snippetsPreventQuickSuggestions&&((e=Pa.get(this._editor))!=null&&e.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet(()=>{if(this._triggerState!==void 0||!BA.shouldAutoTrigger(this._editor)||!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const t=this._editor.getModel(),i=this._editor.getPosition(),n=this._editor.getOption(90);if(!IW.isAllOff(n)){if(!IW.isAllOn(n)){t.tokenization.tokenizeIfCheap(i.lineNumber);const o=t.tokenization.getLineTokens(i.lineNumber),r=o.getStandardTokenType(o.findTokenIndexAtOffset(Math.max(i.column-1-1,0)));if(IW.valueFor(n,r)!=="on")return}lFt(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(t)&&this.trigger({auto:!0})}},this._editor.getOption(91)))}_refilterCompletionItems(){vn(this._editor.hasModel()),vn(this._triggerState!==void 0);const e=this._editor.getModel(),t=this._editor.getPosition(),i=new BA(e,t,{...this._triggerState,refilter:!0});this._onNewContext(i)}trigger(e){var u,m,p;if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=new BA(t,this._editor.getPosition(),e);this.cancel(e.retrigger),this._triggerState=e,this._onDidTrigger.fire({auto:e.auto,shy:e.shy??!1,position:this._editor.getPosition()}),this._context=i;let n={triggerKind:e.triggerKind??0};e.triggerCharacter&&(n={triggerKind:1,triggerCharacter:e.triggerCharacter}),this._requestToken=new go;const o=this._editor.getOption(113);let r=1;switch(o){case"top":r=0;break;case"bottom":r=2;break}const{itemKind:l,showDeprecated:a}=Jee.createSuggestFilter(this._editor),d=new iv(r,((u=e.completionOptions)==null?void 0:u.kindFilter)??l,(m=e.completionOptions)==null?void 0:m.providerFilter,(p=e.completionOptions)==null?void 0:p.providerItemsToReuse,a),c=ZY.create(this._editorWorkerService,this._editor),h=Ble(this._languageFeaturesService.completionProvider,t,this._editor.getPosition(),d,n,this._requestToken.token);Promise.all([h,c]).then(async([g,f])=>{var R;if((R=this._requestToken)==null||R.dispose(),!this._editor.hasModel())return;let b=e==null?void 0:e.clipboardText;if(!b&&g.needsClipboard&&(b=await this._clipboardService.readText()),this._triggerState===void 0)return;const U=this._editor.getModel(),S=new BA(U,this._editor.getPosition(),e),Z={...hL.default,firstMatchCanBeWeak:!this._editor.getOption(119).matchOnWordStartOnly};if(this._completionModel=new yU(g.items,this._context.column,{leadingLineContent:S.leadingLineContent,characterCountDelta:S.column-this._context.column},f,this._editor.getOption(119),this._editor.getOption(113),Z,b),this._completionDisposables.add(g.disposable),this._onNewContext(S),this._reportDurationsTelemetry(g.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const y of g.items)y.isInvalid&&this._logService.warn(`[suggest] did IGNORE invalid completion item from ${y.provider._debugDisplayName}`,y.completion)}).catch(wi)}_reportDurationsTelemetry(e){this._telemetryGate++%230===0&&setTimeout(()=>{this._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(e)}),this._logService.debug("suggest.durations.json",e)})}static createSuggestFilter(e){const t=new Set;e.getOption(113)==="none"&&t.add(27);const n=e.getOption(119);return n.showMethods||t.add(0),n.showFunctions||t.add(1),n.showConstructors||t.add(2),n.showFields||t.add(3),n.showVariables||t.add(4),n.showClasses||t.add(5),n.showStructs||t.add(6),n.showInterfaces||t.add(7),n.showModules||t.add(8),n.showProperties||t.add(9),n.showEvents||t.add(10),n.showOperators||t.add(11),n.showUnits||t.add(12),n.showValues||t.add(13),n.showConstants||t.add(14),n.showEnums||t.add(15),n.showEnumMembers||t.add(16),n.showKeywords||t.add(17),n.showWords||t.add(18),n.showColors||t.add(19),n.showFiles||t.add(20),n.showReferences||t.add(21),n.showColors||t.add(22),n.showFolders||t.add(23),n.showTypeParameters||t.add(24),n.showSnippets||t.add(27),n.showUsers||t.add(25),n.showIssues||t.add(26),{itemKind:t,showDeprecated:n.showDeprecated}}_onNewContext(e){if(this._context){if(e.lineNumber!==this._context.lineNumber){this.cancel();return}if(Rs(e.leadingLineContent)!==Rs(this._context.leadingLineContent)){this.cancel();return}if(e.column<this._context.column){e.leadingWord.word?this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0}):this.cancel();return}if(this._completionModel){if(e.leadingWord.word.length!==0&&e.leadingWord.startColumn>this._context.leadingWord.startColumn){if(BA.shouldAutoTrigger(this._editor)&&this._context){const i=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:i}})}return}if(e.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&e.leadingWord.word.length!==0){const t=new Map,i=new Set;for(const[n,o]of this._completionModel.getItemsByProvider())o.length>0&&o[0].container.incomplete?i.add(n):t.set(n,o);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:i,providerItemsToReuse:t}})}else{const t=this._completionModel.lineContext;let i=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},this._completionModel.items.length===0){const n=BA.shouldAutoTrigger(this._editor);if(!this._context){this.cancel();return}if(n&&this._context.leadingWord.endColumn<e.leadingWord.startColumn){this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0});return}if(this._context.triggerOptions.auto){this.cancel();return}else if(this._completionModel.lineContext=t,i=this._completionModel.items.length>0,i&&e.leadingWord.word.length===0){this.cancel();return}}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:e.triggerOptions,isFrozen:i})}}}}};SY=Jee=rFt([yb(1,Ld),yb(2,hb),yb(3,$l),yb(4,Cl),yb(5,fi),yb(6,Hi),yb(7,xt),yb(8,toe)],SY);const Vz=class Vz{constructor(e,t){this._disposables=new De,this._lastOvertyped=[],this._locked=!1,this._disposables.add(e.onWillType(()=>{if(this._locked||!e.hasModel())return;const i=e.getSelections(),n=i.length;let o=!1;for(let l=0;l<n;l++)if(!i[l].isEmpty()){o=!0;break}if(!o){this._lastOvertyped.length!==0&&(this._lastOvertyped.length=0);return}this._lastOvertyped=[];const r=e.getModel();for(let l=0;l<n;l++){const a=i[l];if(r.getValueLengthInRange(a)>Vz._maxSelectionLength)return;this._lastOvertyped[l]={value:r.getValueInRange(a),multiline:a.startLineNumber!==a.endLineNumber}}})),this._disposables.add(t.onDidTrigger(i=>{this._locked=!0})),this._disposables.add(t.onDidCancel(i=>{this._locked=!1}))}getLastOvertypedInfo(e){if(e>=0&&e<this._lastOvertyped.length)return this._lastOvertyped[e]}dispose(){this._disposables.dispose()}};Vz._maxSelectionLength=51200;let Xee=Vz;var dFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},SH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Yee=class{constructor(e,t,i,n,o){this._menuId=t,this._menuService=n,this._contextKeyService=o,this._menuDisposables=new De,this.element=nt(e,gt(".suggest-status-bar"));const r=l=>l instanceof dc?i.createInstance(Boe,l,{useComma:!0}):void 0;this._leftActions=new ih(this.element,{actionViewItemProvider:r}),this._rightActions=new ih(this.element,{actionViewItemProvider:r}),this._leftActions.domNode.classList.add("left"),this._rightActions.domNode.classList.add("right")}dispose(){this._menuDisposables.dispose(),this._leftActions.dispose(),this._rightActions.dispose(),this.element.remove()}show(){const e=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const i=[],n=[];for(const[o,r]of e.getActions())o==="left"?i.push(...r):n.push(...r);this._leftActions.clear(),this._leftActions.push(i),this._rightActions.clear(),this._rightActions.push(n)};this._menuDisposables.add(e.onDidChange(()=>t())),this._menuDisposables.add(e)}hide(){this._menuDisposables.clear()}};Yee=dFt([SH(2,ti),SH(3,ah),SH(4,fi)],Yee);var cFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},hFt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function kle(s){return!!s&&!!(s.completion.documentation||s.completion.detail&&s.completion.detail!==s.completion.label)}let _ee=class{constructor(e,t){this._editor=e,this._onDidClose=new fe,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new fe,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new De,this._renderDisposeable=new De,this._borderWidth=1,this._size=new ns(330,0),this.domNode=gt(".suggest-details"),this.domNode.classList.add("no-docs"),this._markdownRenderer=t.createInstance($f,{editor:e}),this._body=gt(".body"),this._scrollbar=new ek(this._body,{alwaysConsumeMouseWheel:!0}),nt(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=nt(this._body,gt(".header")),this._close=nt(this._header,gt("span"+ui.asCSSSelector(ct.close))),this._close.title=F("details.close","Close"),this._type=nt(this._header,gt("p.type")),this._docs=nt(this._body,gt("p.docs")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(50)&&this._configureFont()}))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const e=this._editor.getOptions(),t=e.get(50),i=t.getMassagedFontFamily(),n=e.get(120)||t.fontSize,o=e.get(121)||t.lineHeight,r=t.fontWeight,l=`${n}px`,a=`${o}px`;this.domNode.style.fontSize=l,this.domNode.style.lineHeight=`${o/n}`,this.domNode.style.fontWeight=r,this.domNode.style.fontFeatureSettings=t.fontFeatureSettings,this._type.style.fontFamily=i,this._close.style.height=a,this._close.style.width=a}getLayoutInfo(){const e=this._editor.getOption(121)||this._editor.getOption(50).lineHeight,t=this._borderWidth,i=t*2;return{lineHeight:e,borderWidth:t,borderHeight:i,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=F("loading","Loading..."),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,this.getLayoutInfo().lineHeight*2),this._onDidChangeContents.fire(this)}renderItem(e,t){var o;this._renderDisposeable.clear();let{detail:i,documentation:n}=e.completion;if(t){let r="";r+=`score: ${e.score[0]}
- `,r+=`prefix: ${e.word??"(no prefix)"}
- `,r+=`word: ${e.completion.filterText?e.completion.filterText+" (filterText)":e.textLabel}
- `,r+=`distance: ${e.distance} (localityBonus-setting)
- `,r+=`index: ${e.idx}, based on ${e.completion.sortText&&`sortText: "${e.completion.sortText}"`||"label"}
- `,r+=`commit_chars: ${(o=e.completion.commitCharacters)==null?void 0:o.join("")}
- `,n=new _l().appendCodeblock("empty",r),i=`Provider: ${e.provider._debugDisplayName}`}if(!t&&!kle(e)){this.clearContents();return}if(this.domNode.classList.remove("no-docs","no-type"),i){const r=i.length>1e5?`${i.substr(0,1e5)}…`:i;this._type.textContent=r,this._type.title=r,nc(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gmi.test(r))}else dl(this._type),this._type.title="",La(this._type),this.domNode.classList.add("no-type");if(dl(this._docs),typeof n=="string")this._docs.classList.remove("markdown-docs"),this._docs.textContent=n;else if(n){this._docs.classList.add("markdown-docs"),dl(this._docs);const r=this._markdownRenderer.render(n);this._docs.appendChild(r.element),this._renderDisposeable.add(r),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}))}this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=r=>{r.preventDefault(),r.stopPropagation()},this._close.onclick=r=>{r.preventDefault(),r.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get isEmpty(){return this.domNode.classList.contains("no-docs")}get size(){return this._size}layout(e,t){const i=new ns(e,t);ns.equals(i,this._size)||(this._size=i,EHe(this.domNode,e,t)),this._scrollbar.scanDomNode()}scrollDown(e=8){this._body.scrollTop+=e}scrollUp(e=8){this._body.scrollTop-=e}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(e){this._borderWidth=e}get borderWidth(){return this._borderWidth}};_ee=cFt([hFt(1,ti)],_ee);class uFt{constructor(e,t){this.widget=e,this._editor=t,this.allowEditorOverflow=!0,this._disposables=new De,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new gle,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(e.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let i,n,o=0,r=0;this._disposables.add(this._resizable.onDidWillResize(()=>{i=this._topLeft,n=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(l=>{if(i&&n){this.widget.layout(l.dimension.width,l.dimension.height);let a=!1;l.west&&(r=n.width-l.dimension.width,a=!0),l.north&&(o=n.height-l.dimension.height,a=!0),a&&this._applyTopLeft({top:i.top+o,left:i.left+r})}l.done&&(i=void 0,n=void 0,o=0,r=0,this._userSize=l.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{this._anchorBox&&this._placeAtAnchor(this._anchorBox,this._userSize??this.widget.size,this._preferAlignAtTop)}))}dispose(){this._resizable.dispose(),this._disposables.dispose(),this.hide()}getId(){return"suggest.details"}getDomNode(){return this._resizable.domNode}getPosition(){return this._topLeft?{preference:this._topLeft}:null}show(){this._added||(this._editor.addOverlayWidget(this),this._added=!0)}hide(e=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),e&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(e,t){const i=e.getBoundingClientRect();this._anchorBox=i,this._preferAlignAtTop=t,this._placeAtAnchor(this._anchorBox,this._userSize??this.widget.size,t)}_placeAtAnchor(e,t,i){const n=Hf(this.getDomNode().ownerDocument.body),o=this.widget.getLayoutInfo(),r=new ns(220,2*o.lineHeight),l=e.top,a=function(){const R=n.width-(e.left+e.width+o.borderWidth+o.horizontalPadding),y=-o.borderWidth+e.left+e.width,N=new ns(R,n.height-e.top-o.borderHeight-o.verticalPadding),w=N.with(void 0,e.top+e.height-o.borderHeight-o.verticalPadding);return{top:l,left:y,fit:R-t.width,maxSizeTop:N,maxSizeBottom:w,minSize:r.with(Math.min(R,r.width))}}(),d=function(){const R=e.left-o.borderWidth-o.horizontalPadding,y=Math.max(o.horizontalPadding,e.left-t.width-o.borderWidth),N=new ns(R,n.height-e.top-o.borderHeight-o.verticalPadding),w=N.with(void 0,e.top+e.height-o.borderHeight-o.verticalPadding);return{top:l,left:y,fit:R-t.width,maxSizeTop:N,maxSizeBottom:w,minSize:r.with(Math.min(R,r.width))}}(),c=function(){const R=e.left,y=-o.borderWidth+e.top+e.height,N=new ns(e.width-o.borderHeight,n.height-e.top-e.height-o.verticalPadding);return{top:y,left:R,fit:N.height-t.height,maxSizeBottom:N,maxSizeTop:N,minSize:r.with(N.width)}}(),h=[a,d,c],u=h.find(R=>R.fit>=0)??h.sort((R,y)=>y.fit-R.fit)[0],m=e.top+e.height-o.borderHeight;let p,g=t.height;const f=Math.max(u.maxSizeTop.height,u.maxSizeBottom.height);g>f&&(g=f);let b;i?g<=u.maxSizeTop.height?(p=!0,b=u.maxSizeTop):(p=!1,b=u.maxSizeBottom):g<=u.maxSizeBottom.height?(p=!1,b=u.maxSizeBottom):(p=!0,b=u.maxSizeTop);let{top:U,left:S}=u;!p&&g>e.height&&(U=m-g);const Z=this._editor.getDomNode();if(Z){const R=Z.getBoundingClientRect();U-=R.top,S-=R.left}this._applyTopLeft({left:S,top:U}),this._resizable.enableSashes(!p,u===a,p,u!==a),this._resizable.minSize=u.minSize,this._resizable.maxSize=b,this._resizable.layout(g,Math.min(b.width,t.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(e){this._topLeft=e,this._editor.layoutOverlayWidget(this)}}var Tg;(function(s){s[s.FILE=0]="FILE",s[s.FOLDER=1]="FOLDER",s[s.ROOT_FOLDER=2]="ROOT_FOLDER"})(Tg||(Tg={}));const mFt=/(?:\/|^)(?:([^\/]+)\/)?([^\/]+)$/;function JI(s,e,t,i,n){if(ui.isThemeIcon(n))return[`codicon-${n.id}`,"predefined-file-icon"];if(ni.isUri(n))return[];const o=i===Tg.ROOT_FOLDER?["rootfolder-icon"]:i===Tg.FOLDER?["folder-icon"]:["file-icon"];if(t){let r;if(t.scheme===Ti.data)r=EF.parseMetaData(t).get(EF.META_DATA_LABEL);else{const l=t.path.match(mFt);l?(r=XI(l[2].toLowerCase()),l[1]&&o.push(`${XI(l[1].toLowerCase())}-name-dir-icon`)):r=XI(t.authority.toLowerCase())}if(i===Tg.ROOT_FOLDER)o.push(`${r}-root-name-folder-icon`);else if(i===Tg.FOLDER)o.push(`${r}-name-folder-icon`);else{if(r){if(o.push(`${r}-name-file-icon`),o.push("name-file-icon"),r.length<=255){const a=r.split(".");for(let d=1;d<a.length;d++)o.push(`${a.slice(d).join(".")}-ext-file-icon`)}o.push("ext-file-icon")}const l=pFt(s,e,t);l&&o.push(`${XI(l)}-lang-file-icon`)}}return o}function pFt(s,e,t){if(!t)return null;let i=null;if(t.scheme===Ti.data){const o=EF.parseMetaData(t).get(EF.META_DATA_MIME);o&&(i=e.getLanguageIdByMimeType(o))}else{const n=s.getModel(t);n&&(i=n.getLanguageId())}return i&&i!==Ya?i:e.guessLanguageIdByFilepathOrFirstLine(t)}function XI(s){return s.replace(/[\s]/g,"/")}var gFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},NH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function xye(s){return`suggest-aria-id:${s}`}const fFt=Os("suggest-more-info",ct.chevronRight,F("suggestMoreInfoIcon","Icon for more information in the suggest widget."));var Ag;const bFt=new(Ag=class{extract(e,t){if(e.textLabel.match(Ag._regexStrict))return t[0]=e.textLabel,!0;if(e.completion.detail&&e.completion.detail.match(Ag._regexStrict))return t[0]=e.completion.detail,!0;if(e.completion.documentation){const i=typeof e.completion.documentation=="string"?e.completion.documentation:e.completion.documentation.value,n=Ag._regexRelaxed.exec(i);if(n&&(n.index===0||n.index+n[0].length===i.length))return t[0]=n[0],!0}return!1}},Ag._regexRelaxed=/(#([\da-fA-F]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))/,Ag._regexStrict=new RegExp(`^${Ag._regexRelaxed.source}$`,"i"),Ag);let zee=class{constructor(e,t,i,n){this._editor=e,this._modelService=t,this._languageService=i,this._themeService=n,this._onDidToggleDetails=new fe,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(e){const t=new De,i=e;i.classList.add("show-file-icons");const n=nt(e,gt(".icon")),o=nt(n,gt("span.colorspan")),r=nt(e,gt(".contents")),l=nt(r,gt(".main")),a=nt(l,gt(".icon-label.codicon")),d=nt(l,gt("span.left")),c=nt(l,gt("span.right")),h=new h5(d,{supportHighlights:!0,supportIcons:!0});t.add(h);const u=nt(d,gt("span.signature-label")),m=nt(d,gt("span.qualifier-label")),p=nt(c,gt("span.details-label")),g=nt(c,gt("span.readMore"+ui.asCSSSelector(fFt)));return g.title=F("readMore","Read More"),{root:i,left:d,right:c,icon:n,colorspan:o,iconLabel:h,iconContainer:a,parametersLabel:u,qualifierLabel:m,detailsLabel:p,readMore:g,disposables:t,configureFont:()=>{const b=this._editor.getOptions(),U=b.get(50),S=U.getMassagedFontFamily(),Z=U.fontFeatureSettings,R=b.get(120)||U.fontSize,y=b.get(121)||U.lineHeight,N=U.fontWeight,w=U.letterSpacing,Q=`${R}px`,C=`${y}px`,v=`${w}px`;i.style.fontSize=Q,i.style.fontWeight=N,i.style.letterSpacing=v,l.style.fontFamily=S,l.style.fontFeatureSettings=Z,l.style.lineHeight=C,n.style.height=C,n.style.width=C,g.style.height=C,g.style.width=C}}}renderElement(e,t,i){i.configureFont();const{completion:n}=e;i.root.id=xye(t),i.colorspan.style.backgroundColor="";const o={labelEscapeNewLines:!0,matches:tk(e.score)},r=[];if(n.kind===19&&bFt.extract(e,r))i.icon.className="icon customcolor",i.iconContainer.className="icon hide",i.colorspan.style.backgroundColor=r[0];else if(n.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){i.icon.className="icon hide",i.iconContainer.className="icon hide";const l=JI(this._modelService,this._languageService,ni.from({scheme:"fake",path:e.textLabel}),Tg.FILE),a=JI(this._modelService,this._languageService,ni.from({scheme:"fake",path:n.detail}),Tg.FILE);o.extraClasses=l.length>a.length?l:a}else n.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(i.icon.className="icon hide",i.iconContainer.className="icon hide",o.extraClasses=[JI(this._modelService,this._languageService,ni.from({scheme:"fake",path:e.textLabel}),Tg.FOLDER),JI(this._modelService,this._languageService,ni.from({scheme:"fake",path:n.detail}),Tg.FOLDER)].flat()):(i.icon.className="icon hide",i.iconContainer.className="",i.iconContainer.classList.add("suggest-icon",...ui.asClassNameArray(XB.toIcon(n.kind))));n.tags&&n.tags.indexOf(1)>=0&&(o.extraClasses=(o.extraClasses||[]).concat(["deprecated"]),o.matches=[]),i.iconLabel.setLabel(e.textLabel,void 0,o),typeof n.label=="string"?(i.parametersLabel.textContent="",i.detailsLabel.textContent=RH(n.detail||""),i.root.classList.add("string-label")):(i.parametersLabel.textContent=RH(n.label.detail||""),i.detailsLabel.textContent=RH(n.label.description||""),i.root.classList.remove("string-label")),this._editor.getOption(119).showInlineDetails?nc(i.detailsLabel):La(i.detailsLabel),kle(e)?(i.right.classList.add("can-expand-details"),nc(i.readMore),i.readMore.onmousedown=l=>{l.stopPropagation(),l.preventDefault()},i.readMore.onclick=l=>{l.stopPropagation(),l.preventDefault(),this._onDidToggleDetails.fire()}):(i.right.classList.remove("can-expand-details"),La(i.readMore),i.readMore.onmousedown=null,i.readMore.onclick=null)}disposeTemplate(e){e.disposables.dispose()}};zee=gFt([NH(1,zs),NH(2,ao),NH(3,Rr)],zee);function RH(s){return s.replace(/\r\n|\r|\n/g,"")}var UFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},YI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},vV;te("editorSuggestWidget.background",Pc,F("editorSuggestWidgetBackground","Background color of the suggest widget."));te("editorSuggestWidget.border",roe,F("editorSuggestWidgetBorder","Border color of the suggest widget."));const FFt=te("editorSuggestWidget.foreground",e0,F("editorSuggestWidgetForeground","Foreground color of the suggest widget."));te("editorSuggestWidget.selectedForeground",lL,F("editorSuggestWidgetSelectedForeground","Foreground color of the selected entry in the suggest widget."));te("editorSuggestWidget.selectedIconForeground",moe,F("editorSuggestWidgetSelectedIconForeground","Icon foreground color of the selected entry in the suggest widget."));const AFt=te("editorSuggestWidget.selectedBackground",aL,F("editorSuggestWidgetSelectedBackground","Background color of the selected entry in the suggest widget."));te("editorSuggestWidget.highlightForeground",SW,F("editorSuggestWidgetHighlightForeground","Color of the match highlights in the suggest widget."));te("editorSuggestWidget.focusHighlightForeground",P6e,F("editorSuggestWidgetFocusHighlightForeground","Color of the match highlights in the suggest widget when an item is focused."));te("editorSuggestWidgetStatus.foreground",Oi(FFt,.5),F("editorSuggestWidgetStatusForeground","Foreground color of the suggest widget status."));class ZFt{constructor(e,t){this._service=e,this._key=`suggestWidget.size/${t.getEditorType()}/${t instanceof sm}`}restore(){const e=this._service.get(this._key,0)??"";try{const t=JSON.parse(e);if(ns.is(t))return ns.lift(t)}catch{}}store(e){this._service.store(this._key,JSON.stringify(e),0,1)}reset(){this._service.remove(this._key,0)}}var rN;let Oee=(rN=class{constructor(e,t,i,n,o){this.editor=e,this._storageService=t,this._state=0,this._isAuto=!1,this._pendingLayout=new Lr,this._pendingShowDetails=new Lr,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new om,this._disposables=new De,this._onDidSelect=new fN,this._onDidFocus=new fN,this._onDidHide=new fe,this._onDidShow=new fe,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new fe,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new gle,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new SFt(this,e),this._persistedSize=new ZFt(t,e);class r{constructor(m,p,g=!1,f=!1){this.persistedSize=m,this.currentSize=p,this.persistHeight=g,this.persistWidth=f}}let l;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),l=new r(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(u=>{var m,p;if(this._resize(u.dimension.width,u.dimension.height),l&&(l.persistHeight=l.persistHeight||!!u.north||!!u.south,l.persistWidth=l.persistWidth||!!u.east||!!u.west),!!u.done){if(l){const{itemHeight:g,defaultSize:f}=this.getLayoutInfo(),b=Math.round(g/2);let{width:U,height:S}=this.element.size;(!l.persistHeight||Math.abs(l.currentSize.height-S)<=b)&&(S=((m=l.persistedSize)==null?void 0:m.height)??f.height),(!l.persistWidth||Math.abs(l.currentSize.width-U)<=b)&&(U=((p=l.persistedSize)==null?void 0:p.width)??f.width),this._persistedSize.store(new ns(U,S))}this._contentWidget.unlockPreference(),l=void 0}})),this._messageElement=nt(this.element.domNode,gt(".message")),this._listElement=nt(this.element.domNode,gt(".tree"));const a=this._disposables.add(o.createInstance(_ee,this.editor));a.onDidClose(this.toggleDetails,this,this._disposables),this._details=new uFt(a,this.editor);const d=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(119).showIcons);d();const c=o.createInstance(zee,this.editor);this._disposables.add(c),this._disposables.add(c.onDidToggleDetails(()=>this.toggleDetails())),this._list=new hh("SuggestWidget",this._listElement,{getHeight:u=>this.getLayoutInfo().itemHeight,getTemplateId:u=>"suggestion"},[c],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>"option",getWidgetAriaLabel:()=>F("suggest","Suggest"),getWidgetRole:()=>"listbox",getAriaLabel:u=>{let m=u.textLabel;if(typeof u.completion.label!="string"){const{detail:b,description:U}=u.completion.label;b&&U?m=F("label.full","{0} {1}, {2}",m,b,U):b?m=F("label.detail","{0} {1}",m,b):U&&(m=F("label.desc","{0}, {1}",m,U))}if(!u.isResolved||!this._isDetailsVisible())return m;const{documentation:p,detail:g}=u.completion,f=bN("{0}{1}",g||"",p?typeof p=="string"?p:p.value:"");return F("ariaCurrenttSuggestionReadDetails","{0}, docs: {1}",m,f)}}}),this._list.style(eR({listInactiveFocusBackground:AFt,listInactiveFocusOutline:to})),this._status=o.createInstance(Yee,this.element.domNode,WF);const h=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(119).showStatusBar);h(),this._disposables.add(n.onDidColorThemeChange(u=>this._onThemeChange(u))),this._onThemeChange(n.getColorTheme()),this._disposables.add(this._list.onMouseDown(u=>this._onListMouseDownOrTap(u))),this._disposables.add(this._list.onTap(u=>this._onListMouseDownOrTap(u))),this._disposables.add(this._list.onDidChangeSelection(u=>this._onListSelection(u))),this._disposables.add(this._list.onDidChangeFocus(u=>this._onListFocus(u))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(u=>{u.hasChanged(119)&&(h(),d()),this._completionModel&&(u.hasChanged(50)||u.hasChanged(120)||u.hasChanged(121))&&this._list.splice(0,this._list.length,this._completionModel.items)})),this._ctxSuggestWidgetVisible=zi.Visible.bindTo(i),this._ctxSuggestWidgetDetailsVisible=zi.DetailsVisible.bindTo(i),this._ctxSuggestWidgetMultipleSuggestions=zi.MultipleSuggestions.bindTo(i),this._ctxSuggestWidgetHasFocusedSuggestion=zi.HasFocusedSuggestion.bindTo(i),this._disposables.add(Fo(this._details.widget.domNode,"keydown",u=>{this._onDetailsKeydown.fire(u)})),this._disposables.add(this.editor.onMouseDown(u=>this._onEditorMouseDown(u)))}dispose(){var e;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(e=this._loadingTimeout)==null||e.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(e){this._details.widget.domNode.contains(e.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(e.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(e){typeof e.element>"u"||typeof e.index>"u"||(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this._select(e.element,e.index))}_onListSelection(e){e.elements.length&&this._select(e.elements[0],e.indexes[0])}_select(e,t){const i=this._completionModel;i&&(this._onDidSelect.fire({item:e,index:t,model:i}),this.editor.focus())}_onThemeChange(e){this._details.widget.borderWidth=np(e.type)?2:1}_onListFocus(e){var n;if(this._ignoreFocusEvents)return;if(!e.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const t=e.elements[0],i=e.indexes[0];t!==this._focusedItem&&((n=this._currentSuggestionDetails)==null||n.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=t,this._list.reveal(i),this._currentSuggestionDetails=Tr(async o=>{const r=kF(()=>{this._isDetailsVisible()&&this.showDetails(!0)},250),l=o.onCancellationRequested(()=>r.dispose());try{return await t.resolve(o)}finally{r.dispose(),l.dispose()}}),this._currentSuggestionDetails.then(()=>{i>=this._list.length||t!==this._list.element(i)||(this._ignoreFocusEvents=!0,this._list.splice(i,1,[t]),this._list.setFocus([i]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:xye(i)}))}).catch(wi)),this._onDidFocus.fire({item:t,index:i,model:this._completionModel})}_setState(e){if(this._state!==e)switch(this._state=e,this.element.domNode.classList.toggle("frozen",e===4),this.element.domNode.classList.remove("message"),e){case 0:La(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._ctxSuggestWidgetHasFocusedSuggestion.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove("visible"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add("message"),this._messageElement.textContent=vV.LOADING_MESSAGE,La(this._listElement,this._status.element),nc(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,Xg(vV.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=vV.NO_SUGGESTIONS_MESSAGE,La(this._listElement,this._status.element),nc(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,Xg(vV.NO_SUGGESTIONS_MESSAGE);break;case 3:La(this._messageElement),nc(this._listElement,this._status.element),this._show();break;case 4:La(this._messageElement),nc(this._listElement,this._status.element),this._show();break;case 5:La(this._messageElement),nc(this._listElement,this._status.element),this._details.show(),this._show();break}}_show(){this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet(()=>{this.element.domNode.classList.add("visible"),this._onDidShow.fire(this)},100)}showTriggered(e,t){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!e,this._isAuto||(this._loadingTimeout=kF(()=>this._setState(1),t)))}showSuggestions(e,t,i,n,o){var a,d;if(this._contentWidget.setPosition(this.editor.getPosition()),(a=this._loadingTimeout)==null||a.dispose(),(d=this._currentSuggestionDetails)==null||d.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==e&&(this._completionModel=e),i&&this._state!==2&&this._state!==0){this._setState(4);return}const r=this._completionModel.items.length,l=r===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(r>1),l){this._setState(n?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(i?4:3),this._list.reveal(t,0),this._list.setFocus(o?[]:[t])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=aX(ai(this.element.domNode),()=>{this._pendingLayout.clear(),this._layout(this.element.size),this._details.widget.domNode.classList.remove("focused")})}focusSelected(){this._list.length>0&&this._list.setFocus([0])}selectNextPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}selectNext(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}selectLast(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}selectPreviousPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}selectPrevious(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}selectFirst(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}getFocusedItem(){if(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._setState(3),this._details.widget.domNode.classList.remove("focused")):this._state===3&&this._isDetailsVisible()&&(this._setState(5),this._details.widget.domNode.classList.add("focused"))}toggleDetails(){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):(kle(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(e){this._pendingShowDetails.value=aX(ai(this.element.domNode),()=>{this._pendingShowDetails.clear(),this._details.show(),e?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._details.widget.isEmpty?this._details.hide():(this._positionDetails(),this.element.domNode.classList.add("shows-details")),this.editor.focus()})}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var i;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(i=this._loadingTimeout)==null||i.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const e=this._persistedSize.restore(),t=Math.ceil(this.getLayoutInfo().itemHeight*4.3);e&&e.height<t&&this._persistedSize.store(e.with(void 0,t))}isFrozen(){return this._state===4}_afterRender(e){if(e===null){this._isDetailsVisible()&&this._details.hide();return}this._state===2||this._state===1||(this._isDetailsVisible()&&!this._details.widget.isEmpty&&this._details.show(),this._positionDetails())}_layout(e){var r,l;if(!this.editor.hasModel()||!this.editor.getDomNode())return;const t=Hf(this.element.domNode.ownerDocument.body),i=this.getLayoutInfo();e||(e=i.defaultSize);let n=e.height,o=e.width;if(this._status.element.style.height=`${i.itemHeight}px`,this._state===2||this._state===1)n=i.itemHeight+i.borderHeight,o=i.defaultSize.width/2,this.element.enableSashes(!1,!1,!1,!1),this.element.minSize=this.element.maxSize=new ns(o,n),this._contentWidget.setPreference(2);else{const a=t.width-i.borderHeight-2*i.horizontalPadding;o>a&&(o=a);const d=this._completionModel?this._completionModel.stats.pLabelLen*i.typicalHalfwidthCharacterWidth:o,c=i.statusBarHeight+this._list.contentHeight+i.borderHeight,h=i.itemHeight+i.statusBarHeight,u=Lo(this.editor.getDomNode()),m=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),p=u.top+m.top+m.height,g=Math.min(t.height-p-i.verticalPadding,c),f=u.top+m.top-i.verticalPadding,b=Math.min(f,c);let U=Math.min(Math.max(b,g)+i.borderHeight,c);n===((r=this._cappedHeight)==null?void 0:r.capped)&&(n=this._cappedHeight.wanted),n<h&&(n=h),n>U&&(n=U);const S=150;n>g||this._forceRenderingAbove&&f>S?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),U=b):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),U=g),this.element.preferredSize=new ns(d,i.defaultSize.height),this.element.maxSize=new ns(a,U),this.element.minSize=new ns(220,h),this._cappedHeight=n===c?{wanted:((l=this._cappedHeight)==null?void 0:l.wanted)??e.height,capped:n}:void 0}this._resize(o,n)}_resize(e,t){const{width:i,height:n}=this.element.maxSize;e=Math.min(i,e),t=Math.min(n,t);const{statusBarHeight:o}=this.getLayoutInfo();this._list.layout(t-o,e),this._listElement.style.height=`${t-o}px`,this.element.layout(t,e),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var e;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((e=this._contentWidget.getPosition())==null?void 0:e.preference[0])===2)}getLayoutInfo(){const e=this.editor.getOption(50),t=Ba(this.editor.getOption(121)||e.lineHeight,8,1e3),i=!this.editor.getOption(119).showStatusBar||this._state===2||this._state===1?0:t,n=this._details.widget.borderWidth,o=2*n;return{itemHeight:t,statusBarHeight:i,borderWidth:n,borderHeight:o,typicalHalfwidthCharacterWidth:e.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new ns(430,i+12*t+o)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(e){this._storageService.store("expandSuggestionDocs",e,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}},vV=rN,rN.LOADING_MESSAGE=F("suggestWidget.loading","Loading..."),rN.NO_SUGGESTIONS_MESSAGE=F("suggestWidget.noSuggestions","No suggestions."),rN);Oee=vV=UFt([YI(1,lm),YI(2,fi),YI(3,Rr),YI(4,ti)],Oee);class SFt{constructor(e,t){this._widget=e,this._editor=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}dispose(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}getId(){return"editor.widget.suggestWidget"}getDomNode(){return this._widget.element.domNode}show(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}hide(){this._hidden||(this._hidden=!0,this.layout())}layout(){this._editor.layoutContentWidget(this)}getPosition(){return this._hidden||!this._position||!this._preference?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:e,width:t}=this._widget.element.size,{borderWidth:i,horizontalPadding:n}=this._widget.getLayoutInfo();return new ns(t+2*i+n,e+2*i)}afterRender(e){this._widget._afterRender(e)}setPreference(e){this._preferenceLocked||(this._preference=e)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(e){this._position=e}}var NFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},qR=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},jee;class RFt{constructor(e,t){if(this._model=e,this._position=t,this._decorationOptions=ki.register({description:"suggest-line-suffix",stickiness:1}),e.getLineMaxColumn(t.lineNumber)!==t.column){const n=e.getOffsetAt(t),o=e.getPositionAt(n+1);e.changeDecorations(r=>{this._marker&&r.removeDecoration(this._marker),this._marker=r.addDecoration(z.fromPositions(t,o),this._decorationOptions)})}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.changeDecorations(e=>{e.removeDecoration(this._marker),this._marker=void 0})}delta(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){const t=this._model.getDecorationRange(this._marker);return this._model.getOffsetAt(t.getStartPosition())-this._model.getOffsetAt(e)}else return this._model.getLineMaxColumn(e.lineNumber)-e.column}}var DQ;let Ou=(DQ=class{static get(e){return e.getContribution(jee.ID)}constructor(e,t,i,n,o,r,l){this._memoryService=t,this._commandService=i,this._contextKeyService=n,this._instantiationService=o,this._logService=r,this._telemetryService=l,this._lineSuffix=new Lr,this._toDispose=new De,this._selectors=new VFt(h=>h.priority),this._onWillInsertSuggestItem=new fe,this.onWillInsertSuggestItem=this._onWillInsertSuggestItem.event,this.editor=e,this.model=o.createInstance(SY,this.editor),this._selectors.register({priority:0,select:(h,u,m)=>this._memoryService.select(h,u,m)});const a=zi.InsertMode.bindTo(n);a.set(e.getOption(119).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>a.set(e.getOption(119).insertMode))),this.widget=this._toDispose.add(new Gj(ai(e.getDomNode()),()=>{const h=this._instantiationService.createInstance(Oee,this.editor);this._toDispose.add(h),this._toDispose.add(h.onDidSelect(f=>this._insertSuggestion(f,0),this));const u=new oFt(this.editor,h,this.model,f=>this._insertSuggestion(f,2));this._toDispose.add(u);const m=zi.MakesTextEdit.bindTo(this._contextKeyService),p=zi.HasInsertAndReplaceRange.bindTo(this._contextKeyService),g=zi.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add(ei(()=>{m.reset(),p.reset(),g.reset()})),this._toDispose.add(h.onDidFocus(({item:f})=>{const b=this.editor.getPosition(),U=f.editStart.column,S=b.column;let Z=!0;this.editor.getOption(1)==="smart"&&this.model.state===2&&!f.completion.additionalTextEdits&&!(f.completion.insertTextRules&4)&&S-U===f.completion.insertText.length&&(Z=this.editor.getModel().getValueInRange({startLineNumber:b.lineNumber,startColumn:U,endLineNumber:b.lineNumber,endColumn:S})!==f.completion.insertText),m.set(Z),p.set(!ge.equals(f.editInsertEnd,f.editReplaceEnd)),g.set(!!f.provider.resolveCompletionItem||!!f.completion.documentation||f.completion.detail!==f.completion.label)})),this._toDispose.add(h.onDetailsKeyDown(f=>{if(f.toKeyCodeChord().equals(new jf(!0,!1,!1,!1,33))||hn&&f.toKeyCodeChord().equals(new jf(!1,!1,!1,!0,33))){f.stopPropagation();return}f.toKeyCodeChord().isModifierKey()||this.editor.focus()})),h})),this._overtypingCapturer=this._toDispose.add(new Gj(ai(e.getDomNode()),()=>this._toDispose.add(new Xee(this.editor,this.model)))),this._alternatives=this._toDispose.add(new Gj(ai(e.getDomNode()),()=>this._toDispose.add(new iQ(this.editor,this._contextKeyService)))),this._toDispose.add(o.createInstance(FY,e)),this._toDispose.add(this.model.onDidTrigger(h=>{this.widget.value.showTriggered(h.auto,h.shy?250:50),this._lineSuffix.value=new RFt(this.editor.getModel(),h.position)})),this._toDispose.add(this.model.onDidSuggest(h=>{if(h.triggerOptions.shy)return;let u=-1;for(const p of this._selectors.itemsOrderedByPriorityDesc)if(u=p.select(this.editor.getModel(),this.editor.getPosition(),h.completionModel.items),u!==-1)break;if(u===-1&&(u=0),this.model.state===0)return;let m=!1;if(h.triggerOptions.auto){const p=this.editor.getOption(119);p.selectionMode==="never"||p.selectionMode==="always"?m=p.selectionMode==="never":p.selectionMode==="whenTriggerCharacter"?m=h.triggerOptions.triggerKind!==1:p.selectionMode==="whenQuickSuggestion"&&(m=h.triggerOptions.triggerKind===1&&!h.triggerOptions.refilter)}this.widget.value.showSuggestions(h.completionModel,u,h.isFrozen,h.triggerOptions.auto,m)})),this._toDispose.add(this.model.onDidCancel(h=>{h.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{this.model.cancel(),this.model.clear()}));const d=zi.AcceptSuggestionsOnEnter.bindTo(n),c=()=>{const h=this.editor.getOption(1);d.set(h==="on"||h==="smart")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>c())),c()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(e,t){if(!e||!e.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const i=Pa.get(this.editor);if(!i)return;this._onWillInsertSuggestItem.fire({item:e.item});const n=this.editor.getModel(),o=n.getAlternativeVersionId(),{item:r}=e,l=[],a=new go;t&1||this.editor.pushUndoStop();const d=this.getOverwriteInfo(r,!!(t&8));this._memoryService.memorize(n,this.editor.getPosition(),r);const c=r.isResolved;let h=-1,u=-1;if(Array.isArray(r.completion.additionalTextEdits)){this.model.cancel();const p=mp.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",r.completion.additionalTextEdits.map(g=>{let f=z.lift(g.range);if(f.startLineNumber===r.position.lineNumber&&f.startColumn>r.position.column){const b=this.editor.getPosition().column-r.position.column,U=b,S=z.spansMultipleLines(f)?0:b;f=new z(f.startLineNumber,f.startColumn+U,f.endLineNumber,f.endColumn+S)}return mo.replaceMove(f,g.text)})),p.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!c){const p=new jr;let g;const f=n.onDidChangeContent(Z=>{if(Z.isFlush){a.cancel(),f.dispose();return}for(const R of Z.changes){const y=z.getEndPosition(R.range);(!g||ge.isBefore(y,g))&&(g=y)}}),b=t;t|=2;let U=!1;const S=this.editor.onWillType(()=>{S.dispose(),U=!0,b&2||this.editor.pushUndoStop()});l.push(r.resolve(a.token).then(()=>{if(!r.completion.additionalTextEdits||a.token.isCancellationRequested)return;if(g&&r.completion.additionalTextEdits.some(R=>ge.isBefore(g,z.getStartPosition(R.range))))return!1;U&&this.editor.pushUndoStop();const Z=mp.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",r.completion.additionalTextEdits.map(R=>mo.replaceMove(z.lift(R.range),R.text))),Z.restoreRelativeVerticalPositionOfCursor(this.editor),(U||!(b&2))&&this.editor.pushUndoStop(),!0}).then(Z=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",p.elapsed(),Z),u=Z===!0?1:Z===!1?0:-2}).finally(()=>{f.dispose(),S.dispose()}))}let{insertText:m}=r.completion;if(r.completion.insertTextRules&4||(m=LN.escape(m)),this.model.cancel(),i.insert(m,{overwriteBefore:d.overwriteBefore,overwriteAfter:d.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(r.completion.insertTextRules&1),clipboardText:e.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),t&2||this.editor.pushUndoStop(),r.completion.command)if(r.completion.command.id===NY.id)this.model.trigger({auto:!0,retrigger:!0});else{const p=new jr;l.push(this._commandService.executeCommand(r.completion.command.id,...r.completion.command.arguments?[...r.completion.command.arguments]:[]).catch(g=>{r.completion.extensionId?vo(g):wi(g)}).finally(()=>{h=p.elapsed()}))}t&4&&this._alternatives.value.set(e,p=>{for(a.cancel();n.canUndo();){o!==n.getAlternativeVersionId()&&n.undo(),this._insertSuggestion(p,3|(t&8?8:0));break}}),this._alertCompletionItem(r),Promise.all(l).finally(()=>{this._reportSuggestionAcceptedTelemetry(r,n,c,h,u,e.index,e.model.items),this.model.clear(),a.dispose()})}_reportSuggestionAcceptedTelemetry(e,t,i,n,o,r,l){var u;if(Math.floor(Math.random()*100)===0)return;const a=new Map;for(let m=0;m<Math.min(30,l.length);m++){const p=l[m].textLabel;a.has(p)?a.get(p).push(m):a.set(p,[m])}const d=a.get(e.textLabel),h=d&&d.length>1?d[0]:-1;this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:((u=e.extensionId)==null?void 0:u.value)??"unknown",providerId:e.provider._debugDisplayName??"unknown",kind:e.completion.kind,basenameHash:Q3(Hh(t.uri)).toString(16),languageId:t.getLanguageId(),fileExtension:l$e(t.uri),resolveInfo:e.provider.resolveCompletionItem?i?1:0:-1,resolveDuration:e.resolveDuration,commandDuration:n,additionalEditsAsync:o,index:r,firstIndex:h})}getOverwriteInfo(e,t){vn(this.editor.hasModel());let i=this.editor.getOption(119).insertMode==="replace";t&&(i=!i);const n=e.position.column-e.editStart.column,o=(i?e.editReplaceEnd.column:e.editInsertEnd.column)-e.position.column,r=this.editor.getPosition().column-e.position.column,l=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:n+r,overwriteAfter:o+l}}_alertCompletionItem(e){if(ba(e.completion.additionalTextEdits)){const t=F("aria.alert.snippet","Accepting '{0}' made {1} additional edits",e.textLabel,e.completion.additionalTextEdits.length);ja(t)}}triggerSuggest(e,t,i){this.editor.hasModel()&&(this.model.trigger({auto:t??!1,completionOptions:{providerFilter:e,kindFilter:i?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(e){if(!this.editor.hasModel())return;const t=this.editor.getPosition(),i=()=>{t.equals(this.editor.getPosition())&&this._commandService.executeCommand(e.fallback)},n=o=>{if(o.completion.insertTextRules&4||o.completion.additionalTextEdits)return!0;const r=this.editor.getPosition(),l=o.editStart.column,a=r.column;return a-l!==o.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:r.lineNumber,startColumn:l,endLineNumber:r.lineNumber,endColumn:a})!==o.completion.insertText};Ut.once(this.model.onDidTrigger)(o=>{const r=[];Ut.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{Ws(r),i()},void 0,r),this.model.onDidSuggest(({completionModel:l})=>{if(Ws(r),l.items.length===0){i();return}const a=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),l.items),d=l.items[a];if(!n(d)){i();return}this.editor.pushUndoStop(),this._insertSuggestion({index:a,item:d,model:l},7)},void 0,r)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(t,0),this.editor.focus()}acceptSelectedSuggestion(e,t){const i=this.widget.value.getFocusedItem();let n=0;e&&(n|=4),t&&(n|=8),this._insertSuggestion(i,n)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}focusSuggestion(){this.widget.value.focusSelected()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}resetWidgetSize(){this.widget.value.resetPersistedSize()}forceRenderingAbove(){this.widget.value.forceRenderingAbove()}stopForceRenderingAbove(){this.widget.isInitialized&&this.widget.value.stopForceRenderingAbove()}registerSelector(e){return this._selectors.register(e)}},jee=DQ,DQ.ID="editor.contrib.suggestController",DQ);Ou=jee=NFt([qR(1,q9),qR(2,ks),qR(3,fi),qR(4,ti),qR(5,Cl),qR(6,$l)],Ou);class VFt{constructor(e){this.prioritySelector=e,this._items=new Array}register(e){if(this._items.indexOf(e)!==-1)throw new Error("Value is already registered");return this._items.push(e),this._items.sort((t,i)=>this.prioritySelector(i)-this.prioritySelector(t)),{dispose:()=>{const t=this._items.indexOf(e);t>=0&&this._items.splice(t,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}const Wz=class Wz extends Tt{constructor(){super({id:Wz.id,label:F("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:Ge.and($.writable,$.hasCompletionItemProvider,zi.Visible.toNegated()),kbOpts:{kbExpr:$.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(e,t,i){const n=Ou.get(t);if(!n)return;let o;i&&typeof i=="object"&&i.auto===!0&&(o=!0),n.triggerSuggest(void 0,o,void 0)}};Wz.id="editor.action.triggerSuggest";let NY=Wz;Wn(Ou.ID,Ou,2);lt(NY);const lh=100+90,$a=Nr.bindToContribution(Ou.get);Vt(new $a({id:"acceptSelectedSuggestion",precondition:Ge.and(zi.Visible,zi.HasFocusedSuggestion),handler(s){s.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:Ge.and(zi.Visible,$.textInputFocus),weight:lh},{primary:3,kbExpr:Ge.and(zi.Visible,$.textInputFocus,zi.AcceptSuggestionsOnEnter,zi.MakesTextEdit),weight:lh}],menuOpts:[{menuId:WF,title:F("accept.insert","Insert"),group:"left",order:1,when:zi.HasInsertAndReplaceRange.toNegated()},{menuId:WF,title:F("accept.insert","Insert"),group:"left",order:1,when:Ge.and(zi.HasInsertAndReplaceRange,zi.InsertMode.isEqualTo("insert"))},{menuId:WF,title:F("accept.replace","Replace"),group:"left",order:1,when:Ge.and(zi.HasInsertAndReplaceRange,zi.InsertMode.isEqualTo("replace"))}]}));Vt(new $a({id:"acceptAlternativeSelectedSuggestion",precondition:Ge.and(zi.Visible,$.textInputFocus,zi.HasFocusedSuggestion),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:1027,secondary:[1026]},handler(s){s.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:WF,group:"left",order:2,when:Ge.and(zi.HasInsertAndReplaceRange,zi.InsertMode.isEqualTo("insert")),title:F("accept.replace","Replace")},{menuId:WF,group:"left",order:2,when:Ge.and(zi.HasInsertAndReplaceRange,zi.InsertMode.isEqualTo("replace")),title:F("accept.insert","Insert")}]}));Sn.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion");Vt(new $a({id:"hideSuggestWidget",precondition:zi.Visible,handler:s=>s.cancelSuggestWidget(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:9,secondary:[1033]}}));Vt(new $a({id:"selectNextSuggestion",precondition:Ge.and(zi.Visible,Ge.or(zi.MultipleSuggestions,zi.HasFocusedSuggestion.negate())),handler:s=>s.selectNextSuggestion(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}}));Vt(new $a({id:"selectNextPageSuggestion",precondition:Ge.and(zi.Visible,Ge.or(zi.MultipleSuggestions,zi.HasFocusedSuggestion.negate())),handler:s=>s.selectNextPageSuggestion(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:12,secondary:[2060]}}));Vt(new $a({id:"selectLastSuggestion",precondition:Ge.and(zi.Visible,Ge.or(zi.MultipleSuggestions,zi.HasFocusedSuggestion.negate())),handler:s=>s.selectLastSuggestion()}));Vt(new $a({id:"selectPrevSuggestion",precondition:Ge.and(zi.Visible,Ge.or(zi.MultipleSuggestions,zi.HasFocusedSuggestion.negate())),handler:s=>s.selectPrevSuggestion(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}}));Vt(new $a({id:"selectPrevPageSuggestion",precondition:Ge.and(zi.Visible,Ge.or(zi.MultipleSuggestions,zi.HasFocusedSuggestion.negate())),handler:s=>s.selectPrevPageSuggestion(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:11,secondary:[2059]}}));Vt(new $a({id:"selectFirstSuggestion",precondition:Ge.and(zi.Visible,Ge.or(zi.MultipleSuggestions,zi.HasFocusedSuggestion.negate())),handler:s=>s.selectFirstSuggestion()}));Vt(new $a({id:"focusSuggestion",precondition:Ge.and(zi.Visible,zi.HasFocusedSuggestion.negate()),handler:s=>s.focusSuggestion(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}}));Vt(new $a({id:"focusAndAcceptSuggestion",precondition:Ge.and(zi.Visible,zi.HasFocusedSuggestion.negate()),handler:s=>{s.focusSuggestion(),s.acceptSelectedSuggestion(!0,!1)}}));Vt(new $a({id:"toggleSuggestionDetails",precondition:Ge.and(zi.Visible,zi.HasFocusedSuggestion),handler:s=>s.toggleSuggestionDetails(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:WF,group:"right",order:1,when:Ge.and(zi.DetailsVisible,zi.CanResolve),title:F("detail.more","Show Less")},{menuId:WF,group:"right",order:1,when:Ge.and(zi.DetailsVisible.toNegated(),zi.CanResolve),title:F("detail.less","Show More")}]}));Vt(new $a({id:"toggleExplainMode",precondition:zi.Visible,handler:s=>s.toggleExplainMode(),kbOpts:{weight:100,primary:2138}}));Vt(new $a({id:"toggleSuggestionFocus",precondition:zi.Visible,handler:s=>s.toggleSuggestionFocus(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:2570,mac:{primary:778}}}));Vt(new $a({id:"insertBestCompletion",precondition:Ge.and($.textInputFocus,Ge.equals("config.editor.tabCompletion","on"),FY.AtEnd,zi.Visible.toNegated(),iQ.OtherSuggestions.toNegated(),Pa.InSnippetMode.toNegated()),handler:(s,e)=>{s.triggerSuggestAndAcceptBest(_r(e)?{fallback:"tab",...e}:{fallback:"tab"})},kbOpts:{weight:lh,primary:2}}));Vt(new $a({id:"insertNextSuggestion",precondition:Ge.and($.textInputFocus,Ge.equals("config.editor.tabCompletion","on"),iQ.OtherSuggestions,zi.Visible.toNegated(),Pa.InSnippetMode.toNegated()),handler:s=>s.acceptNextSuggestion(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:2}}));Vt(new $a({id:"insertPrevSuggestion",precondition:Ge.and($.textInputFocus,Ge.equals("config.editor.tabCompletion","on"),iQ.OtherSuggestions,zi.Visible.toNegated(),Pa.InSnippetMode.toNegated()),handler:s=>s.acceptPrevSuggestion(),kbOpts:{weight:lh,kbExpr:$.textInputFocus,primary:1026}}));lt(class extends Tt{constructor(){super({id:"editor.action.resetSuggestSize",label:F("suggest.reset.label","Reset Suggest Widget Size"),alias:"Reset Suggest Widget Size",precondition:void 0})}run(s,e){var t;(t=Ou.get(e))==null||t.resetWidgetSize()}});class WFt extends be{get selectedItem(){return this._currentSuggestItemInfo}constructor(e,t,i){super(),this.editor=e,this.suggestControllerPreselector=t,this.onWillAccept=i,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._onDidSelectedItemChange=this._register(new fe),this.onDidSelectedItemChange=this._onDidSelectedItemChange.event,this._register(e.onKeyDown(o=>{o.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(e.onKeyUp(o=>{o.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const n=Ou.get(this.editor);if(n){this._register(n.registerSelector({priority:100,select:(l,a,d)=>{const c=this.editor.getModel();if(!c)return-1;const h=this.suggestControllerPreselector(),u=h?jS(h,c):void 0;if(!u)return-1;const m=ge.lift(a),p=d.map((f,b)=>{const U=V2.fromSuggestion(n,c,m,f,this.isShiftKeyPressed),S=jS(U.toSingleTextEdit(),c),Z=kye(u,S);return{index:b,valid:Z,prefixLength:S.text.length,suggestItem:f}}).filter(f=>f&&f.valid&&f.prefixLength>0),g=Hse(p,Ja(f=>f.prefixLength,ju));return g?g.index:-1}}));let o=!1;const r=()=>{o||(o=!0,this._register(n.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(n.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(n.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(Ut.once(n.model.onDidTrigger)(l=>{r()})),this._register(n.onWillInsertSuggestItem(l=>{const a=this.editor.getPosition(),d=this.editor.getModel();if(!a||!d)return;const c=V2.fromSuggestion(n,d,a,l.item,this.isShiftKeyPressed);this.onWillAccept(c)}))}this.update(this._isActive)}update(e){const t=this.getSuggestItemInfo();(this._isActive!==e||!yFt(this._currentSuggestItemInfo,t))&&(this._isActive=e,this._currentSuggestItemInfo=t,this._onDidSelectedItemChange.fire())}getSuggestItemInfo(){const e=Ou.get(this.editor);if(!e||!this.isSuggestWidgetVisible)return;const t=e.widget.value.getFocusedItem(),i=this.editor.getPosition(),n=this.editor.getModel();if(!(!t||!i||!n))return V2.fromSuggestion(e,n,i,t.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const e=Ou.get(this.editor);e==null||e.stopForceRenderingAbove()}forceRenderingAbove(){const e=Ou.get(this.editor);e==null||e.forceRenderingAbove()}}class V2{static fromSuggestion(e,t,i,n,o){let{insertText:r}=n.completion,l=!1;if(n.completion.insertTextRules&4){const d=new LN().parse(r);d.children.length<100&&UY.adjustWhitespace(t,i,!0,d),r=d.toString(),l=!0}const a=e.getOverwriteInfo(n,o);return new V2(z.fromPositions(i.delta(0,-a.overwriteBefore),i.delta(0,Math.max(a.overwriteAfter,0))),r,n.completion.kind,l)}constructor(e,t,i,n){this.range=e,this.insertText=t,this.completionItemKind=i,this.isSnippetText=n}equals(e){return this.range.equalsRange(e.range)&&this.insertText===e.insertText&&this.completionItemKind===e.completionItemKind&&this.isSnippetText===e.isSnippetText}toSelectedSuggestionInfo(){return new wZe(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}toSingleTextEdit(){return new Dg(this.range,this.insertText)}}function yFt(s,e){return s===e?!0:!s||!e?!1:s.equals(e)}var QFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},U0=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Pee,GQ;let qh=(GQ=class extends be{static get(e){return e.getContribution(Pee.ID)}constructor(e,t,i,n,o,r,l,a,d,c){super(),this.editor=e,this._instantiationService=t,this._contextKeyService=i,this._configurationService=n,this._commandService=o,this._debounceService=r,this._languageFeaturesService=l,this._accessibilitySignalService=a,this._keybindingService=d,this._accessibilityService=c,this._editorObs=oc(this.editor),this._positions=Pt(this,u=>{var m;return((m=this._editorObs.selections.read(u))==null?void 0:m.map(p=>p.getEndPosition()))??[new ge(1,1)]}),this._suggestWidgetAdaptor=this._register(new WFt(this.editor,()=>{var u,m;return this._editorObs.forceUpdate(),(m=(u=this.model.get())==null?void 0:u.selectedInlineCompletion.get())==null?void 0:m.toSingleTextEdit(void 0)},u=>this._editorObs.forceUpdate(m=>{var p;(p=this.model.get())==null||p.handleSuggestAccepted(u)}))),this._suggestWidgetSelectedItem=is(this,u=>this._suggestWidgetAdaptor.onDidSelectedItemChange(()=>{this._editorObs.forceUpdate(m=>u(void 0))}),()=>this._suggestWidgetAdaptor.selectedItem),this._enabledInConfig=is(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).enabled),this._isScreenReaderEnabled=is(this,this._accessibilityService.onDidChangeScreenReaderOptimized,()=>this._accessibilityService.isScreenReaderOptimized()),this._editorDictationInProgress=is(this,this._contextKeyService.onDidChangeContext,()=>this._contextKeyService.getContext(this.editor.getDomNode()).getValue("editorDictation.inProgress")===!0),this._enabled=Pt(this,u=>this._enabledInConfig.read(u)&&(!this._isScreenReaderEnabled.read(u)||!this._editorDictationInProgress.read(u))),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineCompletionsDebounce",{min:50,max:50}),this.model=ma(this,u=>{if(this._editorObs.isReadonly.read(u))return;const m=this._editorObs.model.read(u);return m?this._instantiationService.createInstance(Eee,m,this._suggestWidgetSelectedItem,this._editorObs.versionId,this._positions,this._debounceValue,is(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(119).preview),is(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(119).previewMode),is(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).mode),this._enabled):void 0}).recomputeInitiallyAndOnChange(this._store),this._ghostTexts=Pt(this,u=>{const m=this.model.read(u);return(m==null?void 0:m.ghostTexts.read(u))??[]}),this._stablizedGhostTexts=MFt(this._ghostTexts,this._store),this._ghostTextWidgets=stt(this,this._stablizedGhostTexts,(u,m)=>m.add(this._instantiationService.createInstance(xee,this.editor,{ghostText:u,minReservedLineCount:Jh(0),targetTextModel:this.model.map(p=>p==null?void 0:p.textModel)}))).recomputeInitiallyAndOnChange(this._store),this._playAccessibilitySignal=SM(this),this._fontFamily=is(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).fontFamily),this._register(new uc(this._contextKeyService,this.model)),this._register(S$(this._editorObs.onDidType,(u,m)=>{var p;this._enabled.get()&&((p=this.model.get())==null||p.trigger())})),this._register(this._commandService.onDidExecuteCommand(u=>{new Set([O1.Tab.id,O1.DeleteLeft.id,O1.DeleteRight.id,_1e,"acceptSelectedSuggestion"]).has(u.commandId)&&e.hasTextFocus()&&this._enabled.get()&&this._editorObs.forceUpdate(p=>{var g;(g=this.model.get())==null||g.trigger(p)})})),this._register(S$(this._editorObs.selections,(u,m)=>{var p;m.some(g=>g.reason===3||g.source==="api")&&((p=this.model.get())==null||p.stop())})),this._register(this.editor.onDidBlurEditorWidget(()=>{this._contextKeyService.getContextKeyValue("accessibleViewIsShown")||this._configurationService.getValue("editor.inlineSuggest.keepOnBlur")||e.getOption(62).keepOnBlur||Hy.dropDownVisible||po(u=>{var m;(m=this.model.get())==null||m.stop(u)})})),this._register(yi(u=>{var p;const m=(p=this.model.read(u))==null?void 0:p.state.read(u);m!=null&&m.suggestItem?m.primaryGhostText.lineCount>=2&&this._suggestWidgetAdaptor.forceRenderingAbove():this._suggestWidgetAdaptor.stopForceRenderingAbove()})),this._register(ei(()=>{this._suggestWidgetAdaptor.stopForceRenderingAbove()}));const h=ak(this,(u,m)=>{var f;const p=this.model.read(u),g=p==null?void 0:p.state.read(u);return this._suggestWidgetSelectedItem.get()?m:(f=g==null?void 0:g.inlineCompletion)==null?void 0:f.semanticId});this._register(Mht(Pt(u=>(this._playAccessibilitySignal.read(u),h.read(u),{})),async(u,m,p)=>{const g=this.model.get(),f=g==null?void 0:g.state.get();if(!f||!g)return;const b=g.textModel.getLineContent(f.primaryGhostText.lineNumber);await Pf(50,t7(p)),await lRe(this._suggestWidgetSelectedItem,fa,()=>!1,t7(p)),await this._accessibilitySignalService.playSignal(Gc.inlineSuggestion),this.editor.getOption(8)&&this._provideScreenReaderUpdate(f.primaryGhostText.renderForScreenReader(b))})),this._register(new iee(this.editor,this.model,this._instantiationService)),this._register(FUt(Pt(u=>{const m=this._fontFamily.read(u);return m===""||m==="default"?"":`
- .monaco-editor .ghost-text-decoration,
- .monaco-editor .ghost-text-decoration-preview,
- .monaco-editor .ghost-text {
- font-family: ${m};
- }`}))),this._register(this._configurationService.onDidChangeConfiguration(u=>{u.affectsConfiguration("accessibility.verbosity.inlineCompletions")&&this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})})),this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})}playAccessibilitySignal(e){this._playAccessibilitySignal.trigger(e)}_provideScreenReaderUpdate(e){const t=this._contextKeyService.getContextKeyValue("accessibleViewIsShown"),i=this._keybindingService.lookupKeybinding("editor.action.accessibleView");let n;!t&&i&&this.editor.getOption(150)&&(n=F("showAccessibleViewHint","Inspect this in the accessible view ({0})",i.getAriaLabel())),ja(n?e+", "+n:e)}shouldShowHoverAt(e){var i;const t=(i=this.model.get())==null?void 0:i.primaryGhostText.get();return t?t.parts.some(n=>e.containsPosition(new ge(t.lineNumber,n.column))):!1}shouldShowHoverAtViewZone(e){var t;return((t=this._ghostTextWidgets.get()[0])==null?void 0:t.ownsViewZone(e))??!1}},Pee=GQ,GQ.ID="editor.contrib.inlineCompletionsController",GQ);qh=Pee=QFt([U0(1,ti),U0(2,fi),U0(3,Hi),U0(4,ks),U0(5,dh),U0(6,xt),U0(7,oA),U0(8,qn),U0(9,Fc)],qh);function MFt(s,e){const t=Pi("result",[]),i=[];return e.add(yi(n=>{const o=s.read(n);po(r=>{if(o.length!==i.length){i.length=o.length;for(let l=0;l<i.length;l++)i[l]||(i[l]=Pi("item",o[l]));t.set([...i],r)}i.forEach((l,a)=>l.set(o[a],r))})})),t}const yz=class yz extends Tt{constructor(){super({id:yz.ID,label:F("action.inlineSuggest.showNext","Show Next Inline Suggestion"),alias:"Show Next Inline Suggestion",precondition:Ge.and($.writable,uc.inlineSuggestionVisible),kbOpts:{weight:100,primary:606}})}async run(e,t){var n;const i=qh.get(t);(n=i==null?void 0:i.model.get())==null||n.next()}};yz.ID=O1e;let Hee=yz;const Qz=class Qz extends Tt{constructor(){super({id:Qz.ID,label:F("action.inlineSuggest.showPrevious","Show Previous Inline Suggestion"),alias:"Show Previous Inline Suggestion",precondition:Ge.and($.writable,uc.inlineSuggestionVisible),kbOpts:{weight:100,primary:604}})}async run(e,t){var n;const i=qh.get(t);(n=i==null?void 0:i.model.get())==null||n.previous()}};Qz.ID=z1e;let Kee=Qz;class wFt extends Tt{constructor(){super({id:"editor.action.inlineSuggest.trigger",label:F("action.inlineSuggest.trigger","Trigger Inline Suggestion"),alias:"Trigger Inline Suggestion",precondition:$.writable})}async run(e,t){const i=qh.get(t);await sRe(async n=>{var o;await((o=i==null?void 0:i.model.get())==null?void 0:o.triggerExplicitly(n)),i==null||i.playAccessibilitySignal(n)})}}class TFt extends Tt{constructor(){super({id:"editor.action.inlineSuggest.acceptNextWord",label:F("action.inlineSuggest.acceptNextWord","Accept Next Word Of Inline Suggestion"),alias:"Accept Next Word Of Inline Suggestion",precondition:Ge.and($.writable,uc.inlineSuggestionVisible),kbOpts:{weight:100+1,primary:2065,kbExpr:Ge.and($.writable,uc.inlineSuggestionVisible)},menuOpts:[{menuId:Gt.InlineSuggestionToolbar,title:F("acceptWord","Accept Word"),group:"primary",order:2}]})}async run(e,t){var n;const i=qh.get(t);await((n=i==null?void 0:i.model.get())==null?void 0:n.acceptNextWord(i.editor))}}class CFt extends Tt{constructor(){super({id:"editor.action.inlineSuggest.acceptNextLine",label:F("action.inlineSuggest.acceptNextLine","Accept Next Line Of Inline Suggestion"),alias:"Accept Next Line Of Inline Suggestion",precondition:Ge.and($.writable,uc.inlineSuggestionVisible),kbOpts:{weight:100+1},menuOpts:[{menuId:Gt.InlineSuggestionToolbar,title:F("acceptLine","Accept Line"),group:"secondary",order:2}]})}async run(e,t){var n;const i=qh.get(t);await((n=i==null?void 0:i.model.get())==null?void 0:n.acceptNextLine(i.editor))}}class BFt extends Tt{constructor(){super({id:_1e,label:F("action.inlineSuggest.accept","Accept Inline Suggestion"),alias:"Accept Inline Suggestion",precondition:uc.inlineSuggestionVisible,menuOpts:[{menuId:Gt.InlineSuggestionToolbar,title:F("accept","Accept"),group:"primary",order:1}],kbOpts:{primary:2,weight:200,kbExpr:Ge.and(uc.inlineSuggestionVisible,$.tabMovesFocus.toNegated(),uc.inlineSuggestionHasIndentationLessThanTabSize,zi.Visible.toNegated(),$.hoverFocused.toNegated())}})}async run(e,t){var n;const i=qh.get(t);i&&((n=i.model.get())==null||n.accept(i.editor),i.editor.focus())}}const Mz=class Mz extends Tt{constructor(){super({id:Mz.ID,label:F("action.inlineSuggest.hide","Hide Inline Suggestion"),alias:"Hide Inline Suggestion",precondition:uc.inlineSuggestionVisible,kbOpts:{weight:100,primary:9}})}async run(e,t){const i=qh.get(t);po(n=>{var o;(o=i==null?void 0:i.model.get())==null||o.stop(n)})}};Mz.ID="editor.action.inlineSuggest.hide";let qee=Mz;const wz=class wz extends Ha{constructor(){super({id:wz.ID,title:F("action.inlineSuggest.alwaysShowToolbar","Always Show Toolbar"),f1:!1,precondition:void 0,menu:[{id:Gt.InlineSuggestionToolbar,group:"secondary",order:10}],toggled:Ge.equals("config.editor.inlineSuggest.showToolbar","always")})}async run(e,t){const i=e.get(Hi),o=i.getValue("editor.inlineSuggest.showToolbar")==="always"?"onHover":"always";i.updateValue("editor.inlineSuggest.showToolbar",o)}};wz.ID="editor.action.inlineSuggest.toggleAlwaysShowToolbar";let $ee=wz;var LFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Bw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class vFt{constructor(e,t,i){this.owner=e,this.range=t,this.controller=i}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let ete=class{constructor(e,t,i,n,o,r){this._editor=e,this._languageService=t,this._openerService=i,this.accessibilityService=n,this._instantiationService=o,this._telemetryService=r,this.hoverOrdinal=4}suggestHoverAnchor(e){const t=qh.get(this._editor);if(!t)return null;const i=e.target;if(i.type===8){const n=i.detail;if(t.shouldShowHoverAtViewZone(n.viewZoneId))return new ID(1e3,this,z.fromPositions(this._editor.getModel().validatePosition(n.positionBefore||n.position)),e.event.posx,e.event.posy,!1)}return i.type===7&&t.shouldShowHoverAt(i.range)?new ID(1e3,this,i.range,e.event.posx,e.event.posy,!1):i.type===6&&i.detail.mightBeForeignElement&&t.shouldShowHoverAt(i.range)?new ID(1e3,this,i.range,e.event.posx,e.event.posy,!1):null}computeSync(e,t){if(this._editor.getOption(62).showToolbar!=="onHover")return[];const i=qh.get(this._editor);return i&&i.shouldShowHoverAt(e.range)?[new vFt(this,e.range,i)]:[]}renderHoverParts(e,t){const i=new De,n=t[0];this._telemetryService.publicLog2("inlineCompletionHover.shown"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(8)&&i.add(this.renderScreenReaderText(e,n));const o=n.controller.model.get(),r=this._instantiationService.createInstance(Hy,this._editor,!1,Jh(null),o.selectedInlineCompletionIndex,o.inlineCompletionsCount,o.activeCommands),l=r.getDomNode();e.fragment.appendChild(l),o.triggerExplicitly(),i.add(r);const a={hoverPart:n,hoverElement:l,dispose(){i.dispose()}};return new IN([a])}renderScreenReaderText(e,t){const i=new De,n=gt,o=n("div.hover-row.markdown-hover"),r=nt(o,n("div.hover-contents",{"aria-live":"assertive"})),l=i.add(new $f({editor:this._editor},this._languageService,this._openerService)),a=d=>{i.add(l.onDidRenderAsync(()=>{r.className="hover-contents code-hover-contents",e.onContentsChanged()}));const c=F("inlineSuggestionFollows","Suggestion:"),h=i.add(l.render(new _l().appendText(c).appendCodeblock("text",d)));r.replaceChildren(h.element)};return i.add(yi(d=>{var h;const c=(h=t.controller.model.read(d))==null?void 0:h.primaryGhostText.read(d);if(c){const u=this._editor.getModel().getLineContent(c.lineNumber);a(c.renderForScreenReader(u))}else cl(r)})),e.fragment.appendChild(o),i}};ete=LFt([Bw(1,ao),Bw(2,Bd),Bw(3,Fc),Bw(4,ti),Bw(5,$l)],ete);class kFt{}const $9=new class{constructor(){this._implementations=[]}register(e){return this._implementations.push(e),{dispose:()=>{const t=this._implementations.indexOf(e);t!==-1&&this._implementations.splice(t,1)}}}getImplementations(){return this._implementations}};Wn(qh.ID,qh,3);lt(wFt);lt(Hee);lt(Kee);lt(TFt);lt(CFt);lt(BFt);lt(qee);Cs($ee);aR.register(ete);$9.register(new kFt);var xFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},VH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},DT,lN;let nv=(lN=class{constructor(e,t,i,n){this.textModelResolverService=t,this.languageService=i,this.languageFeaturesService=n,this.toUnhook=new De,this.toUnhookForKeyboard=new De,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=e,this.linkDecorations=this.editor.createDecorationsCollection();const o=new _9(e);this.toUnhook.add(o),this.toUnhook.add(o.onMouseMoveOrRelevantKeyDown(([r,l])=>{this.startFindDefinitionFromMouse(r,l??void 0)})),this.toUnhook.add(o.onExecute(r=>{this.isEnabled(r)&&this.gotoDefinition(r.target.position,r.hasSideBySideModifier).catch(l=>{wi(l)}).finally(()=>{this.removeLinkDecorations()})})),this.toUnhook.add(o.onCancel(()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null}))}static get(e){return e.getContribution(DT.ID)}async startFindDefinitionFromCursor(e){await this.startFindDefinition(e),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()})),this.toUnhookForKeyboard.add(this.editor.onKeyDown(t=>{t&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())}))}startFindDefinitionFromMouse(e,t){if(e.target.type===9&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(e,t)){this.currentWordAtPosition=null,this.removeLinkDecorations();return}const i=e.target.position;this.startFindDefinition(i)}async startFindDefinition(e){var r;this.toUnhookForKeyboard.clear();const t=e?(r=this.editor.getModel())==null?void 0:r.getWordAtPosition(e):null;if(!t){this.currentWordAtPosition=null,this.removeLinkDecorations();return}if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===t.startColumn&&this.currentWordAtPosition.endColumn===t.endColumn&&this.currentWordAtPosition.word===t.word)return;this.currentWordAtPosition=t;const i=new TWe(this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=Tr(l=>this.findDefinition(e,l));let n;try{n=await this.previousPromise}catch(l){wi(l);return}if(!n||!n.length||!i.validate(this.editor)){this.removeLinkDecorations();return}const o=n[0].originSelectionRange?z.lift(n[0].originSelectionRange):new z(e.lineNumber,t.startColumn,e.lineNumber,t.endColumn);if(n.length>1){let l=o;for(const{originSelectionRange:a}of n)a&&(l=z.plusRange(l,a));this.addDecoration(l,new _l().appendText(F("multipleResults","Click to show {0} definitions.",n.length)))}else{const l=n[0];if(!l.uri)return;this.textModelResolverService.createModelReference(l.uri).then(a=>{if(!a.object||!a.object.textEditorModel){a.dispose();return}const{object:{textEditorModel:d}}=a,{startLineNumber:c}=l.range;if(c<1||c>d.getLineCount()){a.dispose();return}const h=this.getPreviewValue(d,c,l),u=this.languageService.guessLanguageIdByFilepathOrFirstLine(d.uri);this.addDecoration(o,h?new _l().appendCodeblock(u||"",h):void 0),a.dispose()})}}getPreviewValue(e,t,i){let n=i.range;return n.endLineNumber-n.startLineNumber>=DT.MAX_SOURCE_PREVIEW_LINES&&(n=this.getPreviewRangeBasedOnIndentation(e,t)),this.stripIndentationFromPreviewRange(e,t,n)}stripIndentationFromPreviewRange(e,t,i){let o=e.getLineFirstNonWhitespaceColumn(t);for(let l=t+1;l<i.endLineNumber;l++){const a=e.getLineFirstNonWhitespaceColumn(l);o=Math.min(o,a)}return e.getValueInRange(i).replace(new RegExp(`^\\s{${o-1}}`,"gm"),"").trim()}getPreviewRangeBasedOnIndentation(e,t){const i=e.getLineFirstNonWhitespaceColumn(t),n=Math.min(e.getLineCount(),t+DT.MAX_SOURCE_PREVIEW_LINES);let o=t+1;for(;o<n;o++){const r=e.getLineFirstNonWhitespaceColumn(o);if(i===r)break}return new z(t,1,o+1,1)}addDecoration(e,t){const i={range:e,options:{description:"goto-definition-link",inlineClassName:"goto-definition-link",hoverMessage:t}};this.linkDecorations.set([i])}removeLinkDecorations(){this.linkDecorations.clear()}isEnabled(e,t){var i;return this.editor.hasModel()&&e.isLeftClick&&e.isNoneOrSingleMouseDown&&e.target.type===6&&!(((i=e.target.detail.injectedText)==null?void 0:i.options)instanceof JF)&&(e.hasTriggerModifier||(t?t.keyCodeIsTriggerKey:!1))&&this.languageFeaturesService.definitionProvider.has(this.editor.getModel())}findDefinition(e,t){const i=this.editor.getModel();return i?Vk(this.languageFeaturesService.definitionProvider,i,e,!1,t):Promise.resolve(null)}gotoDefinition(e,t){return this.editor.setPosition(e),this.editor.invokeWithinContext(i=>{const n=!t&&this.editor.getOption(89)&&!this.isInPeekEditor(i);return new yk({openToSide:t,openInPeek:n,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(i)})}isInPeekEditor(e){const t=e.get(fi);return Md.inPeekEditor.getValue(t)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}},DT=lN,lN.ID="editor.contrib.gotodefinitionatposition",lN.MAX_SOURCE_PREVIEW_LINES=8,lN);nv=DT=xFt([VH(1,Td),VH(2,ao),VH(3,xt)],nv);Wn(nv.ID,nv,2);var Iye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},RY=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class G0e{constructor(e,t,i){this.marker=e,this.index=t,this.total=i}}let tte=class{constructor(e,t,i){this._markerService=t,this._configService=i,this._onDidChange=new fe,this.onDidChange=this._onDidChange.event,this._dispoables=new De,this._markers=[],this._nextIdx=-1,ni.isUri(e)?this._resourceFilter=l=>l.toString()===e.toString():e&&(this._resourceFilter=e);const n=this._configService.getValue("problems.sortOrder"),o=(l,a)=>{let d=zB(l.resource.toString(),a.resource.toString());return d===0&&(n==="position"?d=z.compareRangesUsingStarts(l,a)||Wo.compare(l.severity,a.severity):d=Wo.compare(l.severity,a.severity)||z.compareRangesUsingStarts(l,a)),d},r=()=>{this._markers=this._markerService.read({resource:ni.isUri(e)?e:void 0,severities:Wo.Error|Wo.Warning|Wo.Info}),typeof e=="function"&&(this._markers=this._markers.filter(l=>this._resourceFilter(l.resource))),this._markers.sort(o)};r(),this._dispoables.add(t.onMarkerChanged(l=>{(!this._resourceFilter||l.some(a=>this._resourceFilter(a)))&&(r(),this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(e){return!this._resourceFilter&&!e?!0:!this._resourceFilter||!e?!1:this._resourceFilter(e)}get selected(){const e=this._markers[this._nextIdx];return e&&new G0e(e,this._nextIdx+1,this._markers.length)}_initIdx(e,t,i){let n=!1,o=this._markers.findIndex(r=>r.resource.toString()===e.uri.toString());o<0&&(o=xB(this._markers,{resource:e.uri},(r,l)=>zB(r.resource.toString(),l.resource.toString())),o<0&&(o=~o));for(let r=o;r<this._markers.length;r++){let l=z.lift(this._markers[r]);if(l.isEmpty()){const a=e.getWordAtPosition(l.getStartPosition());a&&(l=new z(l.startLineNumber,a.startColumn,l.startLineNumber,a.endColumn))}if(t&&(l.containsPosition(t)||t.isBeforeOrEqual(l.getStartPosition()))){this._nextIdx=r,n=!0;break}if(this._markers[r].resource.toString()!==e.uri.toString())break}n||(this._nextIdx=i?0:this._markers.length-1),this._nextIdx<0&&(this._nextIdx=this._markers.length-1)}resetIndex(){this._nextIdx=-1}move(e,t,i){if(this._markers.length===0)return!1;const n=this._nextIdx;return this._nextIdx===-1?this._initIdx(t,i,e):e?this._nextIdx=(this._nextIdx+1)%this._markers.length:e||(this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length),n!==this._nextIdx}find(e,t){let i=this._markers.findIndex(n=>n.resource.toString()===e.toString());if(!(i<0)){for(;i<this._markers.length;i++)if(z.containsPosition(this._markers[i],t))return new G0e(this._markers[i],i+1,this._markers.length)}}};tte=Iye([RY(1,i0),RY(2,Hi)],tte);const Eye=un("IMarkerNavigationService");let ite=class{constructor(e,t){this._markerService=e,this._configService=t,this._provider=new Ia}getMarkerList(e){for(const t of this._provider){const i=t.getMarkerList(e);if(i)return i}return new tte(e,this._markerService,this._configService)}};ite=Iye([RY(0,i0),RY(1,Hi)],ite);Fn(Eye,ite,1);var nte;(function(s){function e(t){switch(t){case zo.Ignore:return"severity-ignore "+ui.asClassName(ct.info);case zo.Info:return ui.asClassName(ct.info);case zo.Warning:return ui.asClassName(ct.warning);case zo.Error:return ui.asClassName(ct.error);default:return""}}s.className=e})(nte||(nte={}));var IFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},$R=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},ste;class EFt{constructor(e,t,i,n,o){this._openerService=n,this._labelService=o,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new De,this._editor=t;const r=document.createElement("div");r.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),r.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),r.appendChild(this._relatedBlock),this._disposables.add(Fo(this._relatedBlock,"click",l=>{l.preventDefault();const a=this._relatedDiagnostics.get(l.target);a&&i(a)})),this._scrollable=new MNe(r,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),e.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(l=>{r.style.left=`-${l.scrollLeft}px`,r.style.top=`-${l.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){Ws(this._disposables)}update(e){const{source:t,message:i,relatedInformation:n,code:o}=e;let r=((t==null?void 0:t.length)||0)+2;o&&(typeof o=="string"?r+=o.length:r+=o.value.length);const l=Kg(i);this._lines=l.length,this._longestLineLength=0;for(const u of l)this._longestLineLength=Math.max(u.length+r,this._longestLineLength);dl(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(e)),this._editor.applyFontInfo(this._messageBlock);let a=this._messageBlock;for(const u of l)a=document.createElement("div"),a.innerText=u,u===""&&(a.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(a);if(t||o){const u=document.createElement("span");if(u.classList.add("details"),a.appendChild(u),t){const m=document.createElement("span");m.innerText=t,m.classList.add("source"),u.appendChild(m)}if(o)if(typeof o=="string"){const m=document.createElement("span");m.innerText=`(${o})`,m.classList.add("code"),u.appendChild(m)}else{this._codeLink=gt("a.code-link"),this._codeLink.setAttribute("href",`${o.target.toString()}`),this._codeLink.onclick=p=>{this._openerService.open(o.target,{allowCommands:!0}),p.preventDefault(),p.stopPropagation()};const m=nt(this._codeLink,gt("span"));m.innerText=o.value,u.appendChild(this._codeLink)}}if(dl(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),ba(n)){const u=this._relatedBlock.appendChild(document.createElement("div"));u.style.paddingTop=`${Math.floor(this._editor.getOption(67)*.66)}px`,this._lines+=1;for(const m of n){const p=document.createElement("div"),g=document.createElement("a");g.classList.add("filename"),g.innerText=`${this._labelService.getUriBasenameLabel(m.resource)}(${m.startLineNumber}, ${m.startColumn}): `,g.title=this._labelService.getUriLabel(m.resource),this._relatedDiagnostics.set(g,m);const f=document.createElement("span");f.innerText=m.message,p.appendChild(g),p.appendChild(f),this._lines+=1,u.appendChild(p)}}const d=this._editor.getOption(50),c=Math.ceil(d.typicalFullwidthCharacterWidth*this._longestLineLength*.75),h=d.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:c,scrollHeight:h})}layout(e,t){this._scrollable.getDomNode().style.height=`${e}px`,this._scrollable.getDomNode().style.width=`${t}px`,this._scrollable.setScrollDimensions({width:t,height:e})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(e){let t="";switch(e.severity){case Wo.Error:t=F("Error","Error");break;case Wo.Warning:t=F("Warning","Warning");break;case Wo.Info:t=F("Info","Info");break;case Wo.Hint:t=F("Hint","Hint");break}let i=F("marker aria","{0} at {1}. ",t,e.startLineNumber+":"+e.startColumn);const n=this._editor.getModel();return n&&e.startLineNumber<=n.getLineCount()&&e.startLineNumber>=1&&(i=`${n.getLineContent(e.startLineNumber)}, ${i}`),i}}var JQ;let sv=(JQ=class extends tY{constructor(e,t,i,n,o,r,l){super(e,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},o),this._themeService=t,this._openerService=i,this._menuService=n,this._contextKeyService=r,this._labelService=l,this._callOnDispose=new De,this._onDidSelectRelatedInformation=new fe,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=Wo.Warning,this._backgroundColor=Je.white,this._applyTheme(t.getColorTheme()),this._callOnDispose.add(t.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(e){this._backgroundColor=e.getColor(XFt);let t=ote,i=DFt;this._severity===Wo.Warning?(t=JD,i=GFt):this._severity===Wo.Info&&(t=rte,i=JFt);const n=e.getColor(t),o=e.getColor(i);this.style({arrowColor:n,frameColor:n,headerBackgroundColor:o,primaryHeadingColor:e.getColor(nye),secondaryHeadingColor:e.getColor(sye)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(e){super._fillHead(e),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(n=>this.editor.focus()));const t=[],i=this._menuService.getMenuActions(ste.TitleMenu,this._contextKeyService);g9(i,t),this._actionbarWidget.push(t,{label:!1,icon:!0,index:0})}_fillTitleIcon(e){this._icon=nt(e,gt(""))}_fillBody(e){this._parentContainer=e,e.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),e.appendChild(this._container),this._message=new EFt(this._container,this.editor,t=>this._onDidSelectRelatedInformation.fire(t),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(e,t,i){this._container.classList.remove("stale"),this._message.update(e),this._severity=e.severity,this._applyTheme(this._themeService.getColorTheme());const n=z.lift(e),o=this.editor.getPosition(),r=o&&n.containsPosition(o)?o:n.getStartPosition();super.show(r,this.computeRequiredHeight());const l=this.editor.getModel();if(l){const a=i>1?F("problems","{0} of {1} problems",t,i):F("change","{0} of {1} problem",t,i);this.setTitle(Hh(l.uri),a)}this._icon.className=`codicon ${nte.className(Wo.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(r,0),this.editor.focus()}updateMarker(e){this._container.classList.remove("stale"),this._message.update(e)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._heightInPixel=e,this._message.layout(e,t),this._container.style.height=`${e}px`}_onWidth(e){this._message.layout(this._heightInPixel,e)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}},ste=JQ,JQ.TitleMenu=new Gt("gotoErrorTitleMenu"),JQ);sv=ste=IFt([$R(1,Rr),$R(2,Bd),$R(3,ah),$R(4,ti),$R(5,fi),$R(6,vy)],sv);const J0e=nL(K3,v8e),X0e=nL(qf,sL),Y0e=nL(Jg,oL),ote=te("editorMarkerNavigationError.background",{dark:J0e,light:J0e,hcDark:Vn,hcLight:Vn},F("editorMarkerNavigationError","Editor marker navigation widget error color.")),DFt=te("editorMarkerNavigationError.headerBackground",{dark:Oi(ote,.1),light:Oi(ote,.1),hcDark:null,hcLight:null},F("editorMarkerNavigationErrorHeaderBackground","Editor marker navigation widget error heading background.")),JD=te("editorMarkerNavigationWarning.background",{dark:X0e,light:X0e,hcDark:Vn,hcLight:Vn},F("editorMarkerNavigationWarning","Editor marker navigation widget warning color.")),GFt=te("editorMarkerNavigationWarning.headerBackground",{dark:Oi(JD,.1),light:Oi(JD,.1),hcDark:"#0C141F",hcLight:Oi(JD,.2)},F("editorMarkerNavigationWarningBackground","Editor marker navigation widget warning heading background.")),rte=te("editorMarkerNavigationInfo.background",{dark:Y0e,light:Y0e,hcDark:Vn,hcLight:Vn},F("editorMarkerNavigationInfo","Editor marker navigation widget info color.")),JFt=te("editorMarkerNavigationInfo.headerBackground",{dark:Oi(rte,.1),light:Oi(rte,.1),hcDark:null,hcLight:null},F("editorMarkerNavigationInfoHeaderBackground","Editor marker navigation widget info heading background.")),XFt=te("editorMarkerNavigation.background",im,F("editorMarkerNavigationBackground","Editor marker navigation widget background."));var YFt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_I=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},GT,XQ;let GN=(XQ=class{static get(e){return e.getContribution(GT.ID)}constructor(e,t,i,n,o){this._markerNavigationService=t,this._contextKeyService=i,this._editorService=n,this._instantiationService=o,this._sessionDispoables=new De,this._editor=e,this._widgetVisible=Dye.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(e){if(this._model&&this._model.matches(e))return this._model;let t=!1;return this._model&&(t=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(e),t&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(sv,this._editor),this._widget.onDidClose(()=>this.close(),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(i=>{var n,o,r;(!((n=this._model)!=null&&n.selected)||!z.containsPosition((o=this._model)==null?void 0:o.selected.marker,i.position))&&((r=this._model)==null||r.resetIndex())})),this._sessionDispoables.add(this._model.onDidChange(()=>{if(!this._widget||!this._widget.position||!this._model)return;const i=this._model.find(this._editor.getModel().uri,this._widget.position);i?this._widget.updateMarker(i.marker):this._widget.showStale()})),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(i=>{this._editorService.openCodeEditor({resource:i.resource,options:{pinned:!0,revealIfOpened:!0,selection:z.lift(i).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(e=!0){this._cleanUp(),e&&this._editor.focus()}showAtMarker(e){if(this._editor.hasModel()){const t=this._getOrCreateModel(this._editor.getModel().uri);t.resetIndex(),t.move(!0,this._editor.getModel(),new ge(e.startLineNumber,e.startColumn)),t.selected&&this._widget.showAtMarker(t.selected.marker,t.selected.index,t.selected.total)}}async nagivate(e,t){var i,n;if(this._editor.hasModel()){const o=this._getOrCreateModel(t?void 0:this._editor.getModel().uri);if(o.move(e,this._editor.getModel(),this._editor.getPosition()),!o.selected)return;if(o.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const r=await this._editorService.openCodeEditor({resource:o.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:o.selected.marker}},this._editor);r&&((i=GT.get(r))==null||i.close(),(n=GT.get(r))==null||n.nagivate(e,t))}else this._widget.showAtMarker(o.selected.marker,o.selected.index,o.selected.total)}}},GT=XQ,XQ.ID="editor.contrib.markerController",XQ);GN=GT=YFt([_I(1,Eye),_I(2,fi),_I(3,kn),_I(4,ti)],GN);class eO extends Tt{constructor(e,t,i){super(i),this._next=e,this._multiFile=t}async run(e,t){var i;t.hasModel()&&((i=GN.get(t))==null||i.nagivate(this._next,this._multiFile))}}const mS=class mS extends eO{constructor(){super(!0,!1,{id:mS.ID,label:mS.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:578,weight:100},menuOpts:{menuId:sv.TitleMenu,title:mS.LABEL,icon:Os("marker-navigation-next",ct.arrowDown,F("nextMarkerIcon","Icon for goto next marker.")),group:"navigation",order:1}})}};mS.ID="editor.action.marker.next",mS.LABEL=F("markerAction.next.label","Go to Next Problem (Error, Warning, Info)");let VY=mS;const pS=class pS extends eO{constructor(){super(!1,!1,{id:pS.ID,label:pS.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:1602,weight:100},menuOpts:{menuId:sv.TitleMenu,title:pS.LABEL,icon:Os("marker-navigation-previous",ct.arrowUp,F("previousMarkerIcon","Icon for goto previous marker.")),group:"navigation",order:2}})}};pS.ID="editor.action.marker.prev",pS.LABEL=F("markerAction.previous.label","Go to Previous Problem (Error, Warning, Info)");let lte=pS;class _Ft extends eO{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:F("markerAction.nextInFiles.label","Go to Next Problem in Files (Error, Warning, Info)"),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:66,weight:100},menuOpts:{menuId:Gt.MenubarGoMenu,title:F({key:"miGotoNextProblem",comment:["&& denotes a mnemonic"]},"Next &&Problem"),group:"6_problem_nav",order:1}})}}class zFt extends eO{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:F("markerAction.previousInFiles.label","Go to Previous Problem in Files (Error, Warning, Info)"),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:1090,weight:100},menuOpts:{menuId:Gt.MenubarGoMenu,title:F({key:"miGotoPreviousProblem",comment:["&& denotes a mnemonic"]},"Previous &&Problem"),group:"6_problem_nav",order:2}})}}Wn(GN.ID,GN,4);lt(VY);lt(lte);lt(_Ft);lt(zFt);const Dye=new yt("markersNavigationVisible",!1),OFt=Nr.bindToContribution(GN.get);Vt(new OFt({id:"closeMarkersNavigation",precondition:Dye,handler:s=>s.close(),kbOpts:{weight:100+50,kbExpr:$.focus,primary:9,secondary:[1033]}}));var Lm;(function(s){s.NoAutoFocus="noAutoFocus",s.FocusIfVisible="focusIfVisible",s.AutoFocusImmediately="autoFocusImmediately"})(Lm||(Lm={}));class jFt extends Tt{constructor(){super({id:Y1e,label:F({key:"showOrFocusHover",comment:["Label for action that will trigger the showing/focusing of a hover in the editor.","If the hover is not visible, it will show the hover.","This allows for users to show the hover without using the mouse."]},"Show or Focus Hover"),metadata:{description:Ni("showOrFocusHoverDescription","Show or focus the editor hover which shows documentation, references, and other content for a symbol at the current cursor position."),args:[{name:"args",schema:{type:"object",properties:{focus:{description:"Controls if and when the hover should take focus upon being triggered by this action.",enum:[Lm.NoAutoFocus,Lm.FocusIfVisible,Lm.AutoFocusImmediately],enumDescriptions:[F("showOrFocusHover.focus.noAutoFocus","The hover will not automatically take focus."),F("showOrFocusHover.focus.focusIfVisible","The hover will take focus only if it is already visible."),F("showOrFocusHover.focus.autoFocusImmediately","The hover will automatically take focus when it appears.")],default:Lm.FocusIfVisible}}}}]},alias:"Show or Focus Hover",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2087),weight:100}})}run(e,t,i){if(!t.hasModel())return;const n=Fa.get(t);if(!n)return;const o=i==null?void 0:i.focus;let r=Lm.FocusIfVisible;Object.values(Lm).includes(o)?r=o:typeof o=="boolean"&&o&&(r=Lm.AutoFocusImmediately);const l=d=>{const c=t.getPosition(),h=new z(c.lineNumber,c.column,c.lineNumber,c.column);n.showContentHover(h,1,1,d)},a=t.getOption(2)===2;n.isHoverVisible?r!==Lm.NoAutoFocus?n.focus():l(a):l(a||r===Lm.AutoFocusImmediately)}}class PFt extends Tt{constructor(){super({id:h0t,label:F({key:"showDefinitionPreviewHover",comment:["Label for action that will trigger the showing of definition preview hover in the editor.","This allows for users to show the definition preview hover without using the mouse."]},"Show Definition Preview Hover"),alias:"Show Definition Preview Hover",precondition:void 0,metadata:{description:Ni("showDefinitionPreviewHoverDescription","Show the definition preview hover in the editor.")}})}run(e,t){const i=Fa.get(t);if(!i)return;const n=t.getPosition();if(!n)return;const o=new z(n.lineNumber,n.column,n.lineNumber,n.column),r=nv.get(t);if(!r)return;r.startFindDefinitionFromCursor(n).then(()=>{i.showContentHover(o,1,1,!0)})}}class HFt extends Tt{constructor(){super({id:u0t,label:F({key:"scrollUpHover",comment:["Action that allows to scroll up in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Up Hover"),alias:"Scroll Up Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:16,weight:100},metadata:{description:Ni("scrollUpHoverDescription","Scroll up the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.scrollUp()}}class KFt extends Tt{constructor(){super({id:m0t,label:F({key:"scrollDownHover",comment:["Action that allows to scroll down in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Down Hover"),alias:"Scroll Down Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:18,weight:100},metadata:{description:Ni("scrollDownHoverDescription","Scroll down the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.scrollDown()}}class qFt extends Tt{constructor(){super({id:p0t,label:F({key:"scrollLeftHover",comment:["Action that allows to scroll left in the hover widget with the left arrow when the hover widget is focused."]},"Scroll Left Hover"),alias:"Scroll Left Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:15,weight:100},metadata:{description:Ni("scrollLeftHoverDescription","Scroll left the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.scrollLeft()}}class $Ft extends Tt{constructor(){super({id:g0t,label:F({key:"scrollRightHover",comment:["Action that allows to scroll right in the hover widget with the right arrow when the hover widget is focused."]},"Scroll Right Hover"),alias:"Scroll Right Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:17,weight:100},metadata:{description:Ni("scrollRightHoverDescription","Scroll right the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.scrollRight()}}class eAt extends Tt{constructor(){super({id:f0t,label:F({key:"pageUpHover",comment:["Action that allows to page up in the hover widget with the page up command when the hover widget is focused."]},"Page Up Hover"),alias:"Page Up Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:11,secondary:[528],weight:100},metadata:{description:Ni("pageUpHoverDescription","Page up the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.pageUp()}}class tAt extends Tt{constructor(){super({id:b0t,label:F({key:"pageDownHover",comment:["Action that allows to page down in the hover widget with the page down command when the hover widget is focused."]},"Page Down Hover"),alias:"Page Down Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:12,secondary:[530],weight:100},metadata:{description:Ni("pageDownHoverDescription","Page down the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.pageDown()}}class iAt extends Tt{constructor(){super({id:U0t,label:F({key:"goToTopHover",comment:["Action that allows to go to the top of the hover widget with the home command when the hover widget is focused."]},"Go To Top Hover"),alias:"Go To Bottom Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:14,secondary:[2064],weight:100},metadata:{description:Ni("goToTopHoverDescription","Go to the top of the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.goToTop()}}class nAt extends Tt{constructor(){super({id:F0t,label:F({key:"goToBottomHover",comment:["Action that allows to go to the bottom in the hover widget with the end command when the hover widget is focused."]},"Go To Bottom Hover"),alias:"Go To Bottom Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:13,secondary:[2066],weight:100},metadata:{description:Ni("goToBottomHoverDescription","Go to the bottom of the editor hover.")}})}run(e,t){const i=Fa.get(t);i&&i.goToBottom()}}class sAt extends Tt{constructor(){super({id:J9,label:A0t,alias:"Increase Hover Verbosity Level",precondition:$.hoverVisible})}run(e,t,i){const n=Fa.get(t);if(!n)return;const o=(i==null?void 0:i.index)!==void 0?i.index:n.focusedHoverPartIndex();n.updateHoverVerbosityLevel(ic.Increase,o,i==null?void 0:i.focus)}}class oAt extends Tt{constructor(){super({id:X9,label:Z0t,alias:"Decrease Hover Verbosity Level",precondition:$.hoverVisible})}run(e,t,i){var r;const n=Fa.get(t);if(!n)return;const o=(i==null?void 0:i.index)!==void 0?i.index:n.focusedHoverPartIndex();(r=Fa.get(t))==null||r.updateHoverVerbosityLevel(ic.Decrease,o,i==null?void 0:i.focus)}}var rAt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},WH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const cu=gt;class lAt{constructor(e,t,i){this.owner=e,this.range=t,this.marker=i}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}const _0e={type:1,filter:{include:$s.QuickFix},triggerAction:bc.QuickFixHover};let ate=class{constructor(e,t,i,n){this._editor=e,this._markerDecorationsService=t,this._openerService=i,this._languageFeaturesService=n,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1&&!e.supportsMarkerHover)return[];const i=this._editor.getModel(),n=e.range.startLineNumber,o=i.getLineMaxColumn(n),r=[];for(const l of t){const a=l.range.startLineNumber===n?l.range.startColumn:1,d=l.range.endLineNumber===n?l.range.endColumn:o,c=this._markerDecorationsService.getMarker(i.uri,l);if(!c)continue;const h=new z(e.range.startLineNumber,a,e.range.startLineNumber,d);r.push(new lAt(this,h,c))}return r}renderHoverParts(e,t){if(!t.length)return new IN([]);const i=new De,n=[];t.forEach(r=>{const l=this._renderMarkerHover(r);e.fragment.appendChild(l.hoverElement),n.push(l)});const o=t.length===1?t[0]:t.sort((r,l)=>Wo.compare(r.marker.severity,l.marker.severity))[0];return this.renderMarkerStatusbar(e,o,i),new IN(n)}_renderMarkerHover(e){const t=new De,i=cu("div.hover-row"),n=nt(i,cu("div.marker.hover-contents")),{source:o,message:r,code:l,relatedInformation:a}=e.marker;this._editor.applyFontInfo(n);const d=nt(n,cu("span"));if(d.style.whiteSpace="pre-wrap",d.innerText=r,o||l)if(l&&typeof l!="string"){const h=cu("span");if(o){const g=nt(h,cu("span"));g.innerText=o}const u=nt(h,cu("a.code-link"));u.setAttribute("href",l.target.toString()),t.add(Te(u,"click",g=>{this._openerService.open(l.target,{allowCommands:!0}),g.preventDefault(),g.stopPropagation()}));const m=nt(u,cu("span"));m.innerText=l.value;const p=nt(n,h);p.style.opacity="0.6",p.style.paddingLeft="6px"}else{const h=nt(n,cu("span"));h.style.opacity="0.6",h.style.paddingLeft="6px",h.innerText=o&&l?`${o}(${l})`:o||`(${l})`}if(ba(a))for(const{message:h,resource:u,startLineNumber:m,startColumn:p}of a){const g=nt(n,cu("div"));g.style.marginTop="8px";const f=nt(g,cu("a"));f.innerText=`${Hh(u)}(${m}, ${p}): `,f.style.cursor="pointer",t.add(Te(f,"click",U=>{if(U.stopPropagation(),U.preventDefault(),this._openerService){const S={selection:{startLineNumber:m,startColumn:p}};this._openerService.open(u,{fromUserGesture:!0,editorOptions:S}).catch(wi)}}));const b=nt(g,cu("span"));b.innerText=h,this._editor.applyFontInfo(b)}return{hoverPart:e,hoverElement:i,dispose:()=>t.dispose()}}renderMarkerStatusbar(e,t,i){if(t.marker.severity===Wo.Error||t.marker.severity===Wo.Warning||t.marker.severity===Wo.Info){const n=GN.get(this._editor);n&&e.statusBar.addAction({label:F("view problem","View Problem"),commandId:VY.ID,run:()=>{e.hide(),n.showAtMarker(t.marker),this._editor.focus()}})}if(!this._editor.getOption(92)){const n=e.statusBar.append(cu("div"));this.recentMarkerCodeActionsInfo&&(OX.makeKey(this.recentMarkerCodeActionsInfo.marker)===OX.makeKey(t.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(n.textContent=F("noQuickFixes","No quick fixes available")):this.recentMarkerCodeActionsInfo=void 0);const o=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?be.None:kF(()=>n.textContent=F("checkingForQuickFixes","Checking for quick fixes..."),200,i);n.textContent||(n.textContent=String.fromCharCode(160));const r=this.getCodeActions(t.marker);i.add(ei(()=>r.cancel())),r.then(l=>{if(o.dispose(),this.recentMarkerCodeActionsInfo={marker:t.marker,hasCodeActions:l.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){l.dispose(),n.textContent=F("noQuickFixes","No quick fixes available");return}n.style.display="none";let a=!1;i.add(ei(()=>{a||l.dispose()})),e.statusBar.addAction({label:F("quick fixes","Quick Fix..."),commandId:hle,run:d=>{a=!0;const c=jy.get(this._editor),h=Lo(d);e.hide(),c==null||c.showCodeActions(_0e,l,{x:h.left,y:h.top,width:h.width,height:h.height})}})},wi)}}getCodeActions(e){return Tr(t=>LW(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new z(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),_0e,Hm.None,t))}};ate=rAt([WH(1,xoe),WH(2,Bd),WH(3,xt)],ate);class aAt{get lineNumber(){return this._lineNumber}set lineNumber(e){this._lineNumber=e}get lane(){return this._laneOrLine}set lane(e){this._laneOrLine=e}constructor(e){this._editor=e,this._lineNumber=-1,this._laneOrLine=em.Center}computeSync(){var o;const e=r=>({value:r}),t=this._editor.getLineDecorations(this._lineNumber),i=[],n=this._laneOrLine==="lineNo";if(!t)return i;for(const r of t){const l=((o=r.options.glyphMargin)==null?void 0:o.position)??em.Center;if(!n&&l!==this._laneOrLine)continue;const a=n?r.options.lineNumberHoverMessage:r.options.glyphMarginHoverMessage;!a||By(a)||i.push(...pse(a).map(e))}return i}}var dAt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},z0e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},dte;const O0e=gt;var YQ;let cte=(YQ=class extends be{constructor(e,t,i){super(),this._renderDisposeables=this._register(new De),this._editor=e,this._isVisible=!1,this._messages=[],this._hover=this._register(new goe),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._markdownRenderer=this._register(new $f({editor:this._editor},t,i)),this._computer=new aAt(this._editor),this._hoverOperation=this._register(new j1e(this._editor,this._computer)),this._register(this._hoverOperation.onResult(n=>{this._withResult(n.value)})),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(50)&&this._updateFont()})),this._register(Fo(this._hover.containerDomNode,"mouseleave",n=>{this._onMouseLeave(n)})),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return dte.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(t=>this._editor.applyFontInfo(t))}_onModelDecorationsChanged(){this._isVisible&&(this._hoverOperation.cancel(),this._hoverOperation.start(0))}showsOrWillShow(e){const t=e.target;return t.type===2&&t.detail.glyphMarginLane?(this._startShowingAt(t.position.lineNumber,t.detail.glyphMarginLane),!0):t.type===3?(this._startShowingAt(t.position.lineNumber,"lineNo"),!0):!1}_startShowingAt(e,t){this._computer.lineNumber===e&&this._computer.lane===t||(this._hoverOperation.cancel(),this.hide(),this._computer.lineNumber=e,this._computer.lane=t,this._hoverOperation.start(0))}hide(){this._computer.lineNumber=-1,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible))}_withResult(e){this._messages=e,this._messages.length>0?this._renderMessages(this._computer.lineNumber,this._messages):this.hide()}_renderMessages(e,t){this._renderDisposeables.clear();const i=document.createDocumentFragment();for(const n of t){const o=O0e("div.hover-row.markdown-hover"),r=nt(o,O0e("div.hover-contents")),l=this._renderDisposeables.add(this._markdownRenderer.render(n.value));r.appendChild(l.element),i.appendChild(o)}this._updateContents(i),this._showAt(e)}_updateContents(e){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(e),this._updateFont()}_showAt(e){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const t=this._editor.getLayoutInfo(),i=this._editor.getTopForLineNumber(e),n=this._editor.getScrollTop(),o=this._editor.getOption(67),r=this._hover.containerDomNode.clientHeight,l=i-n-(r-o)/2,a=t.glyphMarginLeft+t.glyphMarginWidth+(this._computer.lane==="lineNo"?t.lineNumbersWidth:0);this._hover.containerDomNode.style.left=`${a}px`,this._hover.containerDomNode.style.top=`${Math.max(Math.round(l),0)}px`}_onMouseLeave(e){const t=this._editor.getDomNode();(!t||!Y9(t,e.x,e.y))&&this.hide()}},dte=YQ,YQ.ID="editor.contrib.modesGlyphHoverWidget",YQ);cte=dte=dAt([z0e(1,ao),z0e(2,Bd)],cte);var cAt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},hAt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Mv;let WY=(Mv=class extends be{constructor(e,t){super(),this._editor=e,this._instantiationService=t,this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new De,this._hoverState={mouseDown:!1},this._reactToEditorMouseMoveRunner=this._register(new cs(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(60)&&(this._unhookListeners(),this._hookListeners())}))}_hookListeners(){const e=this._editor.getOption(60);this._hoverSettings={enabled:e.enabled,sticky:e.sticky,hidingDelay:e.hidingDelay},e.enabled?(this._listenersStore.add(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))):(this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))),this._listenersStore.add(this._editor.onMouseLeave(t=>this._onEditorMouseLeave(t))),this._listenersStore.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this._hideWidgets()})),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(t=>this._onEditorScrollChanged(t)))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(e){this._hoverState.mouseDown=!0,!this._isMouseOnMarginHoverWidget(e)&&this._hideWidgets()}_isMouseOnMarginHoverWidget(e){var i;const t=(i=this._glyphWidget)==null?void 0:i.getDomNode();return t?Y9(t,e.event.posx,e.event.posy):!1}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(e){this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._isMouseOnMarginHoverWidget(e))||this._hideWidgets()}_shouldNotRecomputeCurrentHoverWidget(e){const t=this._hoverSettings.sticky,i=this._isMouseOnMarginHoverWidget(e);return t&&i}_onEditorMouseMove(e){if(this.shouldKeepOpenOnEditorMouseMoveOrLeave)return;if(this._mouseMoveEvent=e,this._shouldNotRecomputeCurrentHoverWidget(e)){this._reactToEditorMouseMoveRunner.cancel();return}this._reactToEditorMouseMove(e)}_reactToEditorMouseMove(e){!e||this._tryShowHoverWidget(e)||this._hideWidgets()}_tryShowHoverWidget(e){return this._getOrCreateGlyphWidget().showsOrWillShow(e)}_onKeyDown(e){this._editor.hasModel()&&(e.keyCode===5||e.keyCode===6||e.keyCode===57||e.keyCode===4||this._hideWidgets())}_hideWidgets(){var e;(e=this._glyphWidget)==null||e.hide()}_getOrCreateGlyphWidget(){return this._glyphWidget||(this._glyphWidget=this._instantiationService.createInstance(cte,this._editor)),this._glyphWidget}dispose(){var e;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(e=this._glyphWidget)==null||e.dispose()}},Mv.ID="editor.contrib.marginHover",Mv);WY=cAt([hAt(1,ti)],WY);class uAt{}class mAt{}class pAt{}Wn(Fa.ID,Fa,2);Wn(WY.ID,WY,2);lt(jFt);lt(PFt);lt(HFt);lt(KFt);lt(qFt);lt($Ft);lt(eAt);lt(tAt);lt(iAt);lt(nAt);lt(sAt);lt(oAt);aR.register(qL);aR.register(ate);eu((s,e)=>{const t=s.getColor(fNe);t&&(e.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${t.transparent(.5)}; }`))});$9.register(new uAt);$9.register(new mAt);$9.register(new pAt);function Kd(s,e){let t=0;for(let i=0;i<s.length;i++)s.charAt(i)===" "?t+=e:t++;return t}function W2(s,e,t){s=s<0?0:s;let i="";if(!t){const n=Math.floor(s/e);s=s%e;for(let o=0;o<n;o++)i+=" "}for(let n=0;n<s;n++)i+=" ";return i}function Gye(s,e,t,i){if(s.getLineCount()===1&&s.getLineMaxColumn(1)===1)return[];const n=e.getLanguageConfiguration(s.getLanguageId()).indentRulesSupport;if(!n)return[];const o=new Nre(s,n,e);for(i=Math.min(i,s.getLineCount());t<=i&&o.shouldIgnore(t);)t++;if(t>i-1)return[];const{tabSize:r,indentSize:l,insertSpaces:a}=s.getOptions(),d=(g,f)=>(f=f||1,Kh.shiftIndent(g,g.length+f,r,l,a)),c=(g,f)=>(f=f||1,Kh.unshiftIndent(g,g.length+f,r,l,a)),h=[],u=s.getLineContent(t);let m=Rs(u),p=m;o.shouldIncrease(t)?(p=d(p),m=d(m)):o.shouldIndentNextLine(t)&&(p=d(p)),t++;for(let g=t;g<=i;g++){if(gAt(s,g))continue;const f=s.getLineContent(g),b=Rs(f),U=p;o.shouldDecrease(g,U)&&(p=c(p),m=c(m)),b!==p&&h.push(mo.replaceMove(new _t(g,1,g,b.length+1),Ioe(p,l,a))),!o.shouldIgnore(g)&&(o.shouldIncrease(g,U)?(m=d(m),p=m):o.shouldIndentNextLine(g,U)?p=d(p):p=m)}return h}function gAt(s,e){return s.tokenization.isCheapToTokenize(e)?s.tokenization.getLineTokens(e).getStandardTokenType(0)===2:!1}var fAt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},bAt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Tz=class Tz extends Tt{constructor(){super({id:Tz.ID,label:F("indentationToSpaces","Convert Indentation to Spaces"),alias:"Convert Indentation to Spaces",precondition:$.writable,metadata:{description:Ni("indentationToSpacesDescription","Convert the tab indentation to spaces.")}})}run(e,t){const i=t.getModel();if(!i)return;const n=i.getOptions(),o=t.getSelection();if(!o)return;const r=new SAt(o,n.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[r]),t.pushUndoStop(),i.updateOptions({insertSpaces:!0})}};Tz.ID="editor.action.indentationToSpaces";let hte=Tz;const Cz=class Cz extends Tt{constructor(){super({id:Cz.ID,label:F("indentationToTabs","Convert Indentation to Tabs"),alias:"Convert Indentation to Tabs",precondition:$.writable,metadata:{description:Ni("indentationToTabsDescription","Convert the spaces indentation to tabs.")}})}run(e,t){const i=t.getModel();if(!i)return;const n=i.getOptions(),o=t.getSelection();if(!o)return;const r=new NAt(o,n.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[r]),t.pushUndoStop(),i.updateOptions({insertSpaces:!1})}};Cz.ID="editor.action.indentationToTabs";let ute=Cz;class xle extends Tt{constructor(e,t,i){super(i),this.insertSpaces=e,this.displaySizeOnly=t}run(e,t){const i=e.get(tu),n=e.get(zs),o=t.getModel();if(!o)return;const r=n.getCreationOptions(o.getLanguageId(),o.uri,o.isForSimpleWidget),l=o.getOptions(),a=[1,2,3,4,5,6,7,8].map(c=>({id:c.toString(),label:c.toString(),description:c===r.tabSize&&c===l.tabSize?F("configuredTabSize","Configured Tab Size"):c===r.tabSize?F("defaultTabSize","Default Tab Size"):c===l.tabSize?F("currentTabSize","Current Tab Size"):void 0})),d=Math.min(o.getOptions().tabSize-1,7);setTimeout(()=>{i.pick(a,{placeHolder:F({key:"selectTabWidth",comment:["Tab corresponds to the tab key"]},"Select Tab Size for Current File"),activeItem:a[d]}).then(c=>{if(c&&o&&!o.isDisposed()){const h=parseInt(c.label,10);this.displaySizeOnly?o.updateOptions({tabSize:h}):o.updateOptions({tabSize:h,indentSize:h,insertSpaces:this.insertSpaces})}})},50)}}const Bz=class Bz extends xle{constructor(){super(!1,!1,{id:Bz.ID,label:F("indentUsingTabs","Indent Using Tabs"),alias:"Indent Using Tabs",precondition:void 0,metadata:{description:Ni("indentUsingTabsDescription","Use indentation with tabs.")}})}};Bz.ID="editor.action.indentUsingTabs";let mte=Bz;const Lz=class Lz extends xle{constructor(){super(!0,!1,{id:Lz.ID,label:F("indentUsingSpaces","Indent Using Spaces"),alias:"Indent Using Spaces",precondition:void 0,metadata:{description:Ni("indentUsingSpacesDescription","Use indentation with spaces.")}})}};Lz.ID="editor.action.indentUsingSpaces";let pte=Lz;const vz=class vz extends xle{constructor(){super(!0,!0,{id:vz.ID,label:F("changeTabDisplaySize","Change Tab Display Size"),alias:"Change Tab Display Size",precondition:void 0,metadata:{description:Ni("changeTabDisplaySizeDescription","Change the space size equivalent of the tab.")}})}};vz.ID="editor.action.changeTabDisplaySize";let gte=vz;const kz=class kz extends Tt{constructor(){super({id:kz.ID,label:F("detectIndentation","Detect Indentation from Content"),alias:"Detect Indentation from Content",precondition:void 0,metadata:{description:Ni("detectIndentationDescription","Detect the indentation from content.")}})}run(e,t){const i=e.get(zs),n=t.getModel();if(!n)return;const o=i.getCreationOptions(n.getLanguageId(),n.uri,n.isForSimpleWidget);n.detectIndentation(o.insertSpaces,o.tabSize)}};kz.ID="editor.action.detectIndentation";let fte=kz;class UAt extends Tt{constructor(){super({id:"editor.action.reindentlines",label:F("editor.reindentlines","Reindent Lines"),alias:"Reindent Lines",precondition:$.writable,metadata:{description:Ni("editor.reindentlinesDescription","Reindent the lines of the editor.")}})}run(e,t){const i=e.get(bo),n=t.getModel();if(!n)return;const o=Gye(n,i,1,n.getLineCount());o.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,o),t.pushUndoStop())}}class FAt extends Tt{constructor(){super({id:"editor.action.reindentselectedlines",label:F("editor.reindentselectedlines","Reindent Selected Lines"),alias:"Reindent Selected Lines",precondition:$.writable,metadata:{description:Ni("editor.reindentselectedlinesDescription","Reindent the selected lines of the editor.")}})}run(e,t){const i=e.get(bo),n=t.getModel();if(!n)return;const o=t.getSelections();if(o===null)return;const r=[];for(const l of o){let a=l.startLineNumber,d=l.endLineNumber;if(a!==d&&l.endColumn===1&&d--,a===1){if(a===d)continue}else a--;const c=Gye(n,i,a,d);r.push(...c)}r.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,r),t.pushUndoStop())}}class AAt{constructor(e,t){this._initialSelection=t,this._edits=[],this._selectionId=null;for(const i of e)i.range&&typeof i.text=="string"&&this._edits.push(i)}getEditOperations(e,t){for(const n of this._edits)t.addEditOperation(z.lift(n.range),n.text);let i=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!1))),i||(this._selectionId=t.trackSelection(this._initialSelection))}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}var wv;let yY=(wv=class{constructor(e,t){this.editor=e,this._languageConfigurationService=t,this.callOnDispose=new De,this.callOnModel=new De,this.callOnDispose.add(e.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(e.onDidChangeModel(()=>this.update())),this.callOnDispose.add(e.onDidChangeModelLanguage(()=>this.update()))}update(){this.callOnModel.clear(),!(this.editor.getOption(12)<4||this.editor.getOption(55))&&this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste(({range:e})=>{this.trigger(e)}))}trigger(e){const t=this.editor.getSelections();if(t===null||t.length>1)return;const i=this.editor.getModel();if(!i||this.rangeContainsOnlyWhitespaceCharacters(i,e)||ZAt(i,e)||!i.tokenization.isCheapToTokenize(e.getStartPosition().lineNumber))return;const o=this.editor.getOption(12),{tabSize:r,indentSize:l,insertSpaces:a}=i.getOptions(),d=[],c={shiftIndent:p=>Kh.shiftIndent(p,p.length+1,r,l,a),unshiftIndent:p=>Kh.unshiftIndent(p,p.length+1,r,l,a)};let h=e.startLineNumber;for(;h<=e.endLineNumber;){if(this.shouldIgnoreLine(i,h)){h++;continue}break}if(h>e.endLineNumber)return;let u=i.getLineContent(h);if(!/\S/.test(u.substring(0,e.startColumn-1))){const p=m2(o,i,i.getLanguageId(),h,c,this._languageConfigurationService);if(p!==null){const g=Rs(u),f=Kd(p,r),b=Kd(g,r);if(f!==b){const U=W2(f,r,a);d.push({range:new z(h,1,h,g.length+1),text:U}),u=U+u.substring(g.length)}else{const U=iWe(i,h,this._languageConfigurationService);if(U===0||U===8)return}}}const m=h;for(;h<e.endLineNumber;){if(!/\S/.test(i.getLineContent(h+1))){h++;continue}break}if(h!==e.endLineNumber){const g=m2(o,{tokenization:{getLineTokens:f=>i.tokenization.getLineTokens(f),getLanguageId:()=>i.getLanguageId(),getLanguageIdAtPosition:(f,b)=>i.getLanguageIdAtPosition(f,b)},getLineContent:f=>f===m?u:i.getLineContent(f)},i.getLanguageId(),h+1,c,this._languageConfigurationService);if(g!==null){const f=Kd(g,r),b=Kd(Rs(i.getLineContent(h+1)),r);if(f!==b){const U=f-b;for(let S=h+1;S<=e.endLineNumber;S++){const Z=i.getLineContent(S),R=Rs(Z),N=Kd(R,r)+U,w=W2(N,r,a);w!==R&&d.push({range:new z(S,1,S,R.length+1),text:w})}}}}if(d.length>0){this.editor.pushUndoStop();const p=new AAt(d,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",p),this.editor.pushUndoStop()}}rangeContainsOnlyWhitespaceCharacters(e,t){const i=o=>o.trim().length===0;let n=!0;if(t.startLineNumber===t.endLineNumber){const r=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);n=i(r)}else for(let o=t.startLineNumber;o<=t.endLineNumber;o++){const r=e.getLineContent(o);if(o===t.startLineNumber){const l=r.substring(t.startColumn-1);n=i(l)}else if(o===t.endLineNumber){const l=r.substring(0,t.endColumn-1);n=i(l)}else n=e.getLineFirstNonWhitespaceColumn(o)===0;if(!n)break}return n}shouldIgnoreLine(e,t){e.tokenization.forceTokenization(t);const i=e.getLineFirstNonWhitespaceColumn(t);if(i===0)return!0;const n=e.tokenization.getLineTokens(t);if(n.getCount()>0){const o=n.findTokenIndexAtOffset(i);if(o>=0&&n.getStandardTokenType(o)===1)return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}},wv.ID="editor.contrib.autoIndentOnPaste",wv);yY=fAt([bAt(1,bo)],yY);function ZAt(s,e){const t=i=>J$e(s,i)===2;return t(e.getStartPosition())||t(e.getEndPosition())}function Jye(s,e,t,i){if(s.getLineCount()===1&&s.getLineMaxColumn(1)===1)return;let n="";for(let r=0;r<t;r++)n+=" ";const o=new RegExp(n,"gi");for(let r=1,l=s.getLineCount();r<=l;r++){let a=s.getLineFirstNonWhitespaceColumn(r);if(a===0&&(a=s.getLineMaxColumn(r)),a===1)continue;const d=new z(r,1,r,a),c=s.getValueInRange(d),h=i?c.replace(/\t/ig,n):c.replace(o," ");e.addEditOperation(d,h)}}class SAt{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),Jye(e,t,this.tabSize,!0)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}class NAt{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),Jye(e,t,this.tabSize,!1)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}Wn(yY.ID,yY,2);lt(hte);lt(ute);lt(mte);lt(pte);lt(gte);lt(fte);lt(UAt);lt(FAt);Wn(ev.ID,ev,1);aR.register(oY);class RAt{constructor(e,t,i){this._editRange=e,this._originalSelection=t,this._text=i}getEditOperations(e,t){t.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new _t(n.endLineNumber,Math.min(this._originalSelection.positionColumn,n.endColumn),n.endLineNumber,Math.min(this._originalSelection.positionColumn,n.endColumn)):new _t(n.endLineNumber,n.endColumn-this._text.length,n.endLineNumber,n.endColumn)}}var VAt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},WAt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},XD,aN;let nQ=(aN=class{static get(e){return e.getContribution(XD.ID)}constructor(e,t){this.editor=e,this.editorWorkerService=t,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(e,t){var a;(a=this.currentRequest)==null||a.cancel();const i=this.editor.getSelection(),n=this.editor.getModel();if(!n||!i)return;let o=i;if(o.startLineNumber!==o.endLineNumber)return;const r=new TWe(this.editor,5),l=n.uri;return this.editorWorkerService.canNavigateValueSet(l)?(this.currentRequest=Tr(d=>this.editorWorkerService.navigateValueSet(l,o,t)),this.currentRequest.then(d=>{var p;if(!d||!d.range||!d.value||!r.validate(this.editor))return;const c=z.lift(d.range);let h=d.range;const u=d.value.length-(o.endColumn-o.startColumn);h={startLineNumber:h.startLineNumber,startColumn:h.startColumn,endLineNumber:h.endLineNumber,endColumn:h.startColumn+d.value.length},u>1&&(o=new _t(o.startLineNumber,o.startColumn,o.endLineNumber,o.endColumn+u-1));const m=new RAt(c,o,d.value);this.editor.pushUndoStop(),this.editor.executeCommand(e,m),this.editor.pushUndoStop(),this.decorations.set([{range:h,options:XD.DECORATION}]),(p=this.decorationRemover)==null||p.cancel(),this.decorationRemover=Pf(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(wi)}).catch(wi)):Promise.resolve(void 0)}},XD=aN,aN.ID="editor.contrib.inPlaceReplaceController",aN.DECORATION=ki.register({description:"in-place-replace",className:"valueSetReplacement"}),aN);nQ=XD=VAt([WAt(1,Ld)],nQ);class yAt extends Tt{constructor(){super({id:"editor.action.inPlaceReplace.up",label:F("InPlaceReplaceAction.previous.label","Replace with Previous Value"),alias:"Replace with Previous Value",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:3159,weight:100}})}run(e,t){const i=nQ.get(t);return i?i.run(this.id,!1):Promise.resolve(void 0)}}class QAt extends Tt{constructor(){super({id:"editor.action.inPlaceReplace.down",label:F("InPlaceReplaceAction.next.label","Replace with Next Value"),alias:"Replace with Next Value",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:3161,weight:100}})}run(e,t){const i=nQ.get(t);return i?i.run(this.id,!0):Promise.resolve(void 0)}}Wn(nQ.ID,nQ,4);lt(yAt);lt(QAt);class MAt extends Tt{constructor(){super({id:"expandLineSelection",label:F("expandLineSelection","Expand Line Selection"),alias:"Expand Line Selection",precondition:void 0,kbOpts:{weight:0,kbExpr:$.textInputFocus,primary:2090}})}run(e,t,i){if(i=i||{},!t.hasModel())return;const n=t._getViewModel();n.model.pushStackElement(),n.setCursorStates(i.source,3,el.expandLineSelection(n,n.getCursorStates())),n.revealAllCursors(i.source,!0)}}lt(MAt);class wAt{constructor(e,t,i){this._selection=e,this._cursors=t,this._selectionId=null,this._trimInRegexesAndStrings=i}getEditOperations(e,t){const i=TAt(e,this._cursors,this._trimInRegexesAndStrings);for(let n=0,o=i.length;n<o;n++){const r=i[n];t.addEditOperation(r.range,r.text)}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}function TAt(s,e,t){e.sort((l,a)=>l.lineNumber===a.lineNumber?l.column-a.column:l.lineNumber-a.lineNumber);for(let l=e.length-2;l>=0;l--)e[l].lineNumber===e[l+1].lineNumber&&e.splice(l,1);const i=[];let n=0,o=0;const r=e.length;for(let l=1,a=s.getLineCount();l<=a;l++){const d=s.getLineContent(l),c=d.length+1;let h=0;if(o<r&&e[o].lineNumber===l&&(h=e[o].column,o++,h===c)||d.length===0)continue;const u=ip(d);let m=0;if(u===-1)m=1;else if(u!==d.length-1)m=u+2;else continue;if(!t){if(!s.tokenization.hasAccurateTokensForLine(l))continue;const p=s.tokenization.getLineTokens(l),g=p.getStandardTokenType(p.findTokenIndexAtOffset(m));if(g===2||g===3)continue}m=Math.max(h,m),i[n++]=mo.delete(new z(l,m,l,c))}return i}class Xye{constructor(e,t,i){this._selection=e,this._isCopyingDown=t,this._noop=i||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(e,t){let i=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,i.startLineNumber<i.endLineNumber&&i.endColumn===1&&(this._endLineNumberDelta=1,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const n=[];for(let r=i.startLineNumber;r<=i.endLineNumber;r++)n.push(e.getLineContent(r));const o=n.join(`
- `);o===""&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._noop?t.addEditOperation(new z(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber+1,1),i.endLineNumber===e.getLineCount()?"":`
- `):this._isCopyingDown?t.addEditOperation(new z(i.startLineNumber,1,i.startLineNumber,1),o+`
- `):t.addEditOperation(new z(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),`
- `+o),this._selectionId=t.trackSelection(i),this._selectionDirection=this._selection.getDirection()}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);if(this._startLineNumberDelta!==0||this._endLineNumberDelta!==0){let n=i.startLineNumber,o=i.startColumn,r=i.endLineNumber,l=i.endColumn;this._startLineNumberDelta!==0&&(n=n+this._startLineNumberDelta,o=1),this._endLineNumberDelta!==0&&(r=r+this._endLineNumberDelta,l=1),i=_t.createWithDirection(n,o,r,l,this._selectionDirection)}return i}}var CAt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},BAt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let bte=class{constructor(e,t,i,n){this._languageConfigurationService=n,this._selection=e,this._isMovingDown=t,this._autoIndent=i,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(e,t){const i=()=>e.getLanguageId(),n=(h,u)=>e.getLanguageIdAtPosition(h,u),o=e.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===o){this._selectionId=t.trackSelection(this._selection);return}if(!this._isMovingDown&&this._selection.startLineNumber===1){this._selectionId=t.trackSelection(this._selection);return}this._moveEndPositionDown=!1;let r=this._selection;r.startLineNumber<r.endLineNumber&&r.endColumn===1&&(this._moveEndPositionDown=!0,r=r.setEndPosition(r.endLineNumber-1,e.getLineMaxColumn(r.endLineNumber-1)));const{tabSize:l,indentSize:a,insertSpaces:d}=e.getOptions(),c=this.buildIndentConverter(l,a,d);if(r.startLineNumber===r.endLineNumber&&e.getLineMaxColumn(r.startLineNumber)===1){const h=r.startLineNumber,u=this._isMovingDown?h+1:h-1;e.getLineMaxColumn(u)===1?t.addEditOperation(new z(1,1,1,1),null):(t.addEditOperation(new z(h,1,h,1),e.getLineContent(u)),t.addEditOperation(new z(u,1,u,e.getLineMaxColumn(u)),null)),r=new _t(u,1,u,1)}else{let h,u;if(this._isMovingDown){h=r.endLineNumber+1,u=e.getLineContent(h),t.addEditOperation(new z(h-1,e.getLineMaxColumn(h-1),h,e.getLineMaxColumn(h)),null);let m=u;if(this.shouldAutoIndent(e,r)){const p=this.matchEnterRule(e,c,l,h,r.startLineNumber-1);if(p!==null){const f=Rs(e.getLineContent(h)),b=p+Kd(f,l);m=W2(b,l,d)+this.trimStart(u)}else{const f={tokenization:{getLineTokens:U=>U===r.startLineNumber?e.tokenization.getLineTokens(h):e.tokenization.getLineTokens(U),getLanguageId:i,getLanguageIdAtPosition:n},getLineContent:U=>U===r.startLineNumber?e.getLineContent(h):e.getLineContent(U)},b=m2(this._autoIndent,f,e.getLanguageIdAtPosition(h,1),r.startLineNumber,c,this._languageConfigurationService);if(b!==null){const U=Rs(e.getLineContent(h)),S=Kd(b,l),Z=Kd(U,l);S!==Z&&(m=W2(S,l,d)+this.trimStart(u))}}t.addEditOperation(new z(r.startLineNumber,1,r.startLineNumber,1),m+`
- `);const g=this.matchEnterRuleMovingDown(e,c,l,r.startLineNumber,h,m);if(g!==null)g!==0&&this.getIndentEditsOfMovingBlock(e,t,r,l,d,g);else{const f={tokenization:{getLineTokens:U=>U===r.startLineNumber?e.tokenization.getLineTokens(h):U>=r.startLineNumber+1&&U<=r.endLineNumber+1?e.tokenization.getLineTokens(U-1):e.tokenization.getLineTokens(U),getLanguageId:i,getLanguageIdAtPosition:n},getLineContent:U=>U===r.startLineNumber?m:U>=r.startLineNumber+1&&U<=r.endLineNumber+1?e.getLineContent(U-1):e.getLineContent(U)},b=m2(this._autoIndent,f,e.getLanguageIdAtPosition(h,1),r.startLineNumber+1,c,this._languageConfigurationService);if(b!==null){const U=Rs(e.getLineContent(r.startLineNumber)),S=Kd(b,l),Z=Kd(U,l);if(S!==Z){const R=S-Z;this.getIndentEditsOfMovingBlock(e,t,r,l,d,R)}}}}else t.addEditOperation(new z(r.startLineNumber,1,r.startLineNumber,1),m+`
- `)}else if(h=r.startLineNumber-1,u=e.getLineContent(h),t.addEditOperation(new z(h,1,h+1,1),null),t.addEditOperation(new z(r.endLineNumber,e.getLineMaxColumn(r.endLineNumber),r.endLineNumber,e.getLineMaxColumn(r.endLineNumber)),`
- `+u),this.shouldAutoIndent(e,r)){const m={tokenization:{getLineTokens:g=>g===h?e.tokenization.getLineTokens(r.startLineNumber):e.tokenization.getLineTokens(g),getLanguageId:i,getLanguageIdAtPosition:n},getLineContent:g=>g===h?e.getLineContent(r.startLineNumber):e.getLineContent(g)},p=this.matchEnterRule(e,c,l,r.startLineNumber,r.startLineNumber-2);if(p!==null)p!==0&&this.getIndentEditsOfMovingBlock(e,t,r,l,d,p);else{const g=m2(this._autoIndent,m,e.getLanguageIdAtPosition(r.startLineNumber,1),h,c,this._languageConfigurationService);if(g!==null){const f=Rs(e.getLineContent(r.startLineNumber)),b=Kd(g,l),U=Kd(f,l);if(b!==U){const S=b-U;this.getIndentEditsOfMovingBlock(e,t,r,l,d,S)}}}}}this._selectionId=t.trackSelection(r)}buildIndentConverter(e,t,i){return{shiftIndent:n=>Kh.shiftIndent(n,n.length+1,e,t,i),unshiftIndent:n=>Kh.unshiftIndent(n,n.length+1,e,t,i)}}parseEnterResult(e,t,i,n,o){if(o){let r=o.indentation;o.indentAction===ar.None||o.indentAction===ar.Indent?r=o.indentation+o.appendText:o.indentAction===ar.IndentOutdent?r=o.indentation:o.indentAction===ar.Outdent&&(r=t.unshiftIndent(o.indentation)+o.appendText);const l=e.getLineContent(n);if(this.trimStart(l).indexOf(this.trimStart(r))>=0){const a=Rs(e.getLineContent(n));let d=Rs(r);const c=iWe(e,n,this._languageConfigurationService);c!==null&&c&2&&(d=t.unshiftIndent(d));const h=Kd(d,i),u=Kd(a,i);return h-u}}return null}matchEnterRuleMovingDown(e,t,i,n,o,r){if(ip(r)>=0){const l=e.getLineMaxColumn(o),a=z1(this._autoIndent,e,new z(o,l,o,l),this._languageConfigurationService);return this.parseEnterResult(e,t,i,n,a)}else{let l=n-1;for(;l>=1;){const c=e.getLineContent(l);if(ip(c)>=0)break;l--}if(l<1||n>e.getLineCount())return null;const a=e.getLineMaxColumn(l),d=z1(this._autoIndent,e,new z(l,a,l,a),this._languageConfigurationService);return this.parseEnterResult(e,t,i,n,d)}}matchEnterRule(e,t,i,n,o,r){let l=o;for(;l>=1;){let c;if(l===o&&r!==void 0?c=r:c=e.getLineContent(l),ip(c)>=0)break;l--}if(l<1||n>e.getLineCount())return null;const a=e.getLineMaxColumn(l),d=z1(this._autoIndent,e,new z(l,a,l,a),this._languageConfigurationService);return this.parseEnterResult(e,t,i,n,d)}trimStart(e){return e.replace(/^\s+/,"")}shouldAutoIndent(e,t){if(this._autoIndent<4||!e.tokenization.isCheapToTokenize(t.startLineNumber))return!1;const i=e.getLanguageIdAtPosition(t.startLineNumber,1),n=e.getLanguageIdAtPosition(t.endLineNumber,1);return!(i!==n||this._languageConfigurationService.getLanguageConfiguration(i).indentRulesSupport===null)}getIndentEditsOfMovingBlock(e,t,i,n,o,r){for(let l=i.startLineNumber;l<=i.endLineNumber;l++){const a=e.getLineContent(l),d=Rs(a),h=Kd(d,n)+r,u=W2(h,n,o);u!==d&&(t.addEditOperation(new z(l,1,l,d.length+1),u),l===i.endLineNumber&&i.endColumn<=d.length+1&&u===""&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&i.startLineNumber<i.endLineNumber&&(i=i.setEndPosition(i.endLineNumber,2)),i}};bte=CAt([BAt(3,bo)],bte);const F1=class F1{static getCollator(){return F1._COLLATOR||(F1._COLLATOR=new Intl.Collator),F1._COLLATOR}constructor(e,t){this.selection=e,this.descending=t,this.selectionId=null}getEditOperations(e,t){const i=LAt(e,this.selection,this.descending);i&&t.addEditOperation(i.range,i.text),this.selectionId=t.trackSelection(this.selection)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}static canRun(e,t,i){if(e===null)return!1;const n=Yye(e,t,i);if(!n)return!1;for(let o=0,r=n.before.length;o<r;o++)if(n.before[o]!==n.after[o])return!0;return!1}};F1._COLLATOR=null;let ov=F1;function Yye(s,e,t){const i=e.startLineNumber;let n=e.endLineNumber;if(e.endColumn===1&&n--,i>=n)return null;const o=[];for(let l=i;l<=n;l++)o.push(s.getLineContent(l));let r=o.slice(0);return r.sort(ov.getCollator().compare),t===!0&&(r=r.reverse()),{startLineNumber:i,endLineNumber:n,before:o,after:r}}function LAt(s,e,t){const i=Yye(s,e,t);return i?mo.replace(new z(i.startLineNumber,1,i.endLineNumber,s.getLineMaxColumn(i.endLineNumber)),i.after.join(`
- `)):null}class _ye extends Tt{constructor(e,t){super(t),this.down=e}run(e,t){if(!t.hasModel())return;const i=t.getSelections().map((r,l)=>({selection:r,index:l,ignore:!1}));i.sort((r,l)=>z.compareRangesUsingStarts(r.selection,l.selection));let n=i[0];for(let r=1;r<i.length;r++){const l=i[r];n.selection.endLineNumber===l.selection.startLineNumber&&(n.index<l.index?l.ignore=!0:(n.ignore=!0,n=l))}const o=[];for(const r of i)o.push(new Xye(r.selection,this.down,r.ignore));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class vAt extends _ye{constructor(){super(!1,{id:"editor.action.copyLinesUpAction",label:F("lines.copyUp","Copy Line Up"),alias:"Copy Line Up",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:1552,linux:{primary:3600},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"2_line",title:F({key:"miCopyLinesUp",comment:["&& denotes a mnemonic"]},"&&Copy Line Up"),order:1}})}}class kAt extends _ye{constructor(){super(!0,{id:"editor.action.copyLinesDownAction",label:F("lines.copyDown","Copy Line Down"),alias:"Copy Line Down",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:1554,linux:{primary:3602},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"2_line",title:F({key:"miCopyLinesDown",comment:["&& denotes a mnemonic"]},"Co&&py Line Down"),order:2}})}}class xAt extends Tt{constructor(){super({id:"editor.action.duplicateSelection",label:F("duplicateSelection","Duplicate Selection"),alias:"Duplicate Selection",precondition:$.writable,menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"2_line",title:F({key:"miDuplicateSelection",comment:["&& denotes a mnemonic"]},"&&Duplicate Selection"),order:5}})}run(e,t,i){if(!t.hasModel())return;const n=[],o=t.getSelections(),r=t.getModel();for(const l of o)if(l.isEmpty())n.push(new Xye(l,!0));else{const a=new _t(l.endLineNumber,l.endColumn,l.endLineNumber,l.endColumn);n.push(new Vat(a,r.getValueInRange(l)))}t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class zye extends Tt{constructor(e,t){super(t),this.down=e}run(e,t){const i=e.get(bo),n=[],o=t.getSelections()||[],r=t.getOption(12);for(const l of o)n.push(new bte(l,this.down,r,i));t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class IAt extends zye{constructor(){super(!1,{id:"editor.action.moveLinesUpAction",label:F("lines.moveUp","Move Line Up"),alias:"Move Line Up",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:528,linux:{primary:528},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"2_line",title:F({key:"miMoveLinesUp",comment:["&& denotes a mnemonic"]},"Mo&&ve Line Up"),order:3}})}}class EAt extends zye{constructor(){super(!0,{id:"editor.action.moveLinesDownAction",label:F("lines.moveDown","Move Line Down"),alias:"Move Line Down",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:530,linux:{primary:530},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"2_line",title:F({key:"miMoveLinesDown",comment:["&& denotes a mnemonic"]},"Move &&Line Down"),order:4}})}}class Oye extends Tt{constructor(e,t){super(t),this.descending=e}run(e,t){if(!t.hasModel())return;const i=t.getModel();let n=t.getSelections();n.length===1&&n[0].isEmpty()&&(n=[new _t(1,1,i.getLineCount(),i.getLineMaxColumn(i.getLineCount()))]);for(const r of n)if(!ov.canRun(t.getModel(),r,this.descending))return;const o=[];for(let r=0,l=n.length;r<l;r++)o[r]=new ov(n[r],this.descending);t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class DAt extends Oye{constructor(){super(!1,{id:"editor.action.sortLinesAscending",label:F("lines.sortAscending","Sort Lines Ascending"),alias:"Sort Lines Ascending",precondition:$.writable})}}class GAt extends Oye{constructor(){super(!0,{id:"editor.action.sortLinesDescending",label:F("lines.sortDescending","Sort Lines Descending"),alias:"Sort Lines Descending",precondition:$.writable})}}class JAt extends Tt{constructor(){super({id:"editor.action.removeDuplicateLines",label:F("lines.deleteDuplicates","Delete Duplicate Lines"),alias:"Delete Duplicate Lines",precondition:$.writable})}run(e,t){if(!t.hasModel())return;const i=t.getModel();if(i.getLineCount()===1&&i.getLineMaxColumn(1)===1)return;const n=[],o=[];let r=0,l=!0,a=t.getSelections();a.length===1&&a[0].isEmpty()&&(a=[new _t(1,1,i.getLineCount(),i.getLineMaxColumn(i.getLineCount()))],l=!1);for(const d of a){const c=new Set,h=[];for(let g=d.startLineNumber;g<=d.endLineNumber;g++){const f=i.getLineContent(g);c.has(f)||(h.push(f),c.add(f))}const u=new _t(d.startLineNumber,1,d.endLineNumber,i.getLineMaxColumn(d.endLineNumber)),m=d.startLineNumber-r,p=new _t(m,1,m+h.length-1,h[h.length-1].length);n.push(mo.replace(u,h.join(`
- `))),o.push(p),r+=d.endLineNumber-d.startLineNumber+1-h.length}t.pushUndoStop(),t.executeEdits(this.id,n,l?o:void 0),t.pushUndoStop()}}const xz=class xz extends Tt{constructor(){super({id:xz.ID,label:F("lines.trimTrailingWhitespace","Trim Trailing Whitespace"),alias:"Trim Trailing Whitespace",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:dr(2089,2102),weight:100}})}run(e,t,i){let n=[];i.reason==="auto-save"&&(n=(t.getSelections()||[]).map(c=>new ge(c.positionLineNumber,c.positionColumn)));const o=t.getSelection();if(o===null)return;const r=e.get(Hi),l=t.getModel(),a=r.getValue("files.trimTrailingWhitespaceInRegexAndStrings",{overrideIdentifier:l==null?void 0:l.getLanguageId(),resource:l==null?void 0:l.uri}),d=new wAt(o,n,a);t.pushUndoStop(),t.executeCommands(this.id,[d]),t.pushUndoStop()}};xz.ID="editor.action.trimTrailingWhitespace";let Ute=xz;class XAt extends Tt{constructor(){super({id:"editor.action.deleteLines",label:F("lines.delete","Delete Line"),alias:"Delete Line",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:3113,weight:100}})}run(e,t){if(!t.hasModel())return;const i=this._getLinesToRemove(t),n=t.getModel();if(n.getLineCount()===1&&n.getLineMaxColumn(1)===1)return;let o=0;const r=[],l=[];for(let a=0,d=i.length;a<d;a++){const c=i[a];let h=c.startLineNumber,u=c.endLineNumber,m=1,p=n.getLineMaxColumn(u);u<n.getLineCount()?(u+=1,p=1):h>1&&(h-=1,m=n.getLineMaxColumn(h)),r.push(mo.replace(new _t(h,m,u,p),"")),l.push(new _t(h-o,c.positionColumn,h-o,c.positionColumn)),o+=c.endLineNumber-c.startLineNumber+1}t.pushUndoStop(),t.executeEdits(this.id,r,l),t.pushUndoStop()}_getLinesToRemove(e){const t=e.getSelections().map(o=>{let r=o.endLineNumber;return o.startLineNumber<o.endLineNumber&&o.endColumn===1&&(r-=1),{startLineNumber:o.startLineNumber,selectionStartColumn:o.selectionStartColumn,endLineNumber:r,positionColumn:o.positionColumn}});t.sort((o,r)=>o.startLineNumber===r.startLineNumber?o.endLineNumber-r.endLineNumber:o.startLineNumber-r.startLineNumber);const i=[];let n=t[0];for(let o=1;o<t.length;o++)n.endLineNumber+1>=t[o].startLineNumber?n.endLineNumber=t[o].endLineNumber:(i.push(n),n=t[o]);return i.push(n),i}}class YAt extends Tt{constructor(){super({id:"editor.action.indentLines",label:F("lines.indent","Indent Line"),alias:"Indent Line",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2142,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,WU.indent(i.cursorConfig,t.getModel(),t.getSelections())),t.pushUndoStop())}}class _At extends Tt{constructor(){super({id:"editor.action.outdentLines",label:F("lines.outdent","Outdent Line"),alias:"Outdent Line",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2140,weight:100}})}run(e,t){O1.Outdent.runEditorCommand(e,t,null)}}class zAt extends Tt{constructor(){super({id:"editor.action.insertLineBefore",label:F("lines.insertBefore","Insert Line Above"),alias:"Insert Line Above",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:3075,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,w9.lineInsertBefore(i.cursorConfig,t.getModel(),t.getSelections())))}}class OAt extends Tt{constructor(){super({id:"editor.action.insertLineAfter",label:F("lines.insertAfter","Insert Line Below"),alias:"Insert Line Below",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2051,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,w9.lineInsertAfter(i.cursorConfig,t.getModel(),t.getSelections())))}}class jye extends Tt{run(e,t){if(!t.hasModel())return;const i=t.getSelection(),n=this._getRangesToDelete(t),o=[];for(let a=0,d=n.length-1;a<d;a++){const c=n[a],h=n[a+1];z.intersectRanges(c,h)===null?o.push(c):n[a+1]=z.plusRange(c,h)}o.push(n[n.length-1]);const r=this._getEndCursorState(i,o),l=o.map(a=>mo.replace(a,""));t.pushUndoStop(),t.executeEdits(this.id,l,r),t.pushUndoStop()}}class jAt extends jye{constructor(){super({id:"deleteAllLeft",label:F("lines.deleteAllLeft","Delete All Left"),alias:"Delete All Left",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(e,t){let i=null;const n=[];let o=0;return t.forEach(r=>{let l;if(r.endColumn===1&&o>0){const a=r.startLineNumber-o;l=new _t(a,r.startColumn,a,r.startColumn)}else l=new _t(r.startLineNumber,r.startColumn,r.startLineNumber,r.startColumn);o+=r.endLineNumber-r.startLineNumber,r.intersectRanges(e)?i=l:n.push(l)}),i&&n.unshift(i),n}_getRangesToDelete(e){const t=e.getSelections();if(t===null)return[];let i=t;const n=e.getModel();return n===null?[]:(i.sort(z.compareRangesUsingStarts),i=i.map(o=>{if(o.isEmpty())if(o.startColumn===1){const r=Math.max(1,o.startLineNumber-1),l=o.startLineNumber===1?1:n.getLineLength(r)+1;return new z(r,l,o.startLineNumber,1)}else return new z(o.startLineNumber,1,o.startLineNumber,o.startColumn);else return new z(o.startLineNumber,1,o.endLineNumber,o.endColumn)}),i)}}class PAt extends jye{constructor(){super({id:"deleteAllRight",label:F("lines.deleteAllRight","Delete All Right"),alias:"Delete All Right",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(e,t){let i=null;const n=[];for(let o=0,r=t.length,l=0;o<r;o++){const a=t[o],d=new _t(a.startLineNumber-l,a.startColumn,a.startLineNumber-l,a.startColumn);a.intersectRanges(e)?i=d:n.push(d)}return i&&n.unshift(i),n}_getRangesToDelete(e){const t=e.getModel();if(t===null)return[];const i=e.getSelections();if(i===null)return[];const n=i.map(o=>{if(o.isEmpty()){const r=t.getLineMaxColumn(o.startLineNumber);return o.startColumn===r?new z(o.startLineNumber,o.startColumn,o.startLineNumber+1,1):new z(o.startLineNumber,o.startColumn,o.startLineNumber,r)}return o});return n.sort(z.compareRangesUsingStarts),n}}class HAt extends Tt{constructor(){super({id:"editor.action.joinLines",label:F("lines.joinLines","Join Lines"),alias:"Join Lines",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(e,t){const i=t.getSelections();if(i===null)return;let n=t.getSelection();if(n===null)return;i.sort(z.compareRangesUsingStarts);const o=[],r=i.reduce((u,m)=>u.isEmpty()?u.endLineNumber===m.startLineNumber?(n.equalsSelection(u)&&(n=m),m):m.startLineNumber>u.endLineNumber+1?(o.push(u),m):new _t(u.startLineNumber,u.startColumn,m.endLineNumber,m.endColumn):m.startLineNumber>u.endLineNumber?(o.push(u),m):new _t(u.startLineNumber,u.startColumn,m.endLineNumber,m.endColumn));o.push(r);const l=t.getModel();if(l===null)return;const a=[],d=[];let c=n,h=0;for(let u=0,m=o.length;u<m;u++){const p=o[u],g=p.startLineNumber,f=1;let b=0,U,S;const Z=l.getLineLength(p.endLineNumber)-p.endColumn;if(p.isEmpty()||p.startLineNumber===p.endLineNumber){const N=p.getStartPosition();N.lineNumber<l.getLineCount()?(U=g+1,S=l.getLineMaxColumn(U)):(U=N.lineNumber,S=l.getLineMaxColumn(N.lineNumber))}else U=p.endLineNumber,S=l.getLineMaxColumn(U);let R=l.getLineContent(g);for(let N=g+1;N<=U;N++){const w=l.getLineContent(N),Q=l.getLineFirstNonWhitespaceColumn(N);if(Q>=1){let C=!0;R===""&&(C=!1),C&&(R.charAt(R.length-1)===" "||R.charAt(R.length-1)===" ")&&(C=!1,R=R.replace(/[\s\uFEFF\xA0]+$/g," "));const v=w.substr(Q-1);R+=(C?" ":"")+v,C?b=v.length+1:b=v.length}else b=0}const y=new z(g,f,U,S);if(!y.isEmpty()){let N;p.isEmpty()?(a.push(mo.replace(y,R)),N=new _t(y.startLineNumber-h,R.length-b+1,g-h,R.length-b+1)):p.startLineNumber===p.endLineNumber?(a.push(mo.replace(y,R)),N=new _t(p.startLineNumber-h,p.startColumn,p.endLineNumber-h,p.endColumn)):(a.push(mo.replace(y,R)),N=new _t(p.startLineNumber-h,p.startColumn,p.startLineNumber-h,R.length-Z)),z.intersectRanges(y,n)!==null?c=N:d.push(N)}h+=y.endLineNumber-y.startLineNumber}d.unshift(c),t.pushUndoStop(),t.executeEdits(this.id,a,d),t.pushUndoStop()}}class KAt extends Tt{constructor(){super({id:"editor.action.transpose",label:F("editor.transpose","Transpose Characters around the Cursor"),alias:"Transpose Characters around the Cursor",precondition:$.writable})}run(e,t){const i=t.getSelections();if(i===null)return;const n=t.getModel();if(n===null)return;const o=[];for(let r=0,l=i.length;r<l;r++){const a=i[r];if(!a.isEmpty())continue;const d=a.getStartPosition(),c=n.getLineMaxColumn(d.lineNumber);if(d.column>=c){if(d.lineNumber===n.getLineCount())continue;const h=new z(d.lineNumber,Math.max(1,d.column-1),d.lineNumber+1,1),u=n.getValueInRange(h).split("").reverse().join("");o.push(new Wl(new _t(d.lineNumber,Math.max(1,d.column-1),d.lineNumber+1,1),u))}else{const h=new z(d.lineNumber,Math.max(1,d.column-1),d.lineNumber,d.column+1),u=n.getValueInRange(h).split("").reverse().join("");o.push(new Sre(h,u,new _t(d.lineNumber,d.column+1,d.lineNumber,d.column+1)))}}t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class hR extends Tt{run(e,t){const i=t.getSelections();if(i===null)return;const n=t.getModel();if(n===null)return;const o=t.getOption(132),r=[];for(const l of i)if(l.isEmpty()){const a=l.getStartPosition(),d=t.getConfiguredWordAtPosition(a);if(!d)continue;const c=new z(a.lineNumber,d.startColumn,a.lineNumber,d.endColumn),h=n.getValueInRange(c);r.push(mo.replace(c,this._modifyText(h,o)))}else{const a=n.getValueInRange(l);r.push(mo.replace(l,this._modifyText(a,o)))}t.pushUndoStop(),t.executeEdits(this.id,r),t.pushUndoStop()}}class qAt extends hR{constructor(){super({id:"editor.action.transformToUppercase",label:F("editor.transformToUppercase","Transform to Uppercase"),alias:"Transform to Uppercase",precondition:$.writable})}_modifyText(e,t){return e.toLocaleUpperCase()}}class $At extends hR{constructor(){super({id:"editor.action.transformToLowercase",label:F("editor.transformToLowercase","Transform to Lowercase"),alias:"Transform to Lowercase",precondition:$.writable})}_modifyText(e,t){return e.toLocaleLowerCase()}}class Gf{constructor(e,t){this._pattern=e,this._flags=t,this._actual=null,this._evaluated=!1}get(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch{}}return this._actual}isSupported(){return this.get()!==null}}const Iz=class Iz extends hR{constructor(){super({id:"editor.action.transformToTitlecase",label:F("editor.transformToTitlecase","Transform to Title Case"),alias:"Transform to Title Case",precondition:$.writable})}_modifyText(e,t){const i=Iz.titleBoundary.get();return i?e.toLocaleLowerCase().replace(i,n=>n.toLocaleUpperCase()):e}};Iz.titleBoundary=new Gf("(^|[^\\p{L}\\p{N}']|((^|\\P{L})'))\\p{L}","gmu");let QY=Iz;const A1=class A1 extends hR{constructor(){super({id:"editor.action.transformToSnakecase",label:F("editor.transformToSnakecase","Transform to Snake Case"),alias:"Transform to Snake Case",precondition:$.writable})}_modifyText(e,t){const i=A1.caseBoundary.get(),n=A1.singleLetters.get();return!i||!n?e:e.replace(i,"$1_$2").replace(n,"$1_$2$3").toLocaleLowerCase()}};A1.caseBoundary=new Gf("(\\p{Ll})(\\p{Lu})","gmu"),A1.singleLetters=new Gf("(\\p{Lu}|\\p{N})(\\p{Lu})(\\p{Ll})","gmu");let y2=A1;const Ez=class Ez extends hR{constructor(){super({id:"editor.action.transformToCamelcase",label:F("editor.transformToCamelcase","Transform to Camel Case"),alias:"Transform to Camel Case",precondition:$.writable})}_modifyText(e,t){const i=Ez.wordBoundary.get();if(!i)return e;const n=e.split(i);return n.shift()+n.map(r=>r.substring(0,1).toLocaleUpperCase()+r.substring(1)).join("")}};Ez.wordBoundary=new Gf("[_\\s-]","gm");let MY=Ez;const Z1=class Z1 extends hR{constructor(){super({id:"editor.action.transformToPascalcase",label:F("editor.transformToPascalcase","Transform to Pascal Case"),alias:"Transform to Pascal Case",precondition:$.writable})}_modifyText(e,t){const i=Z1.wordBoundary.get(),n=Z1.wordBoundaryToMaintain.get();return!i||!n?e:e.split(n).map(l=>l.split(i)).flat().map(l=>l.substring(0,1).toLocaleUpperCase()+l.substring(1)).join("")}};Z1.wordBoundary=new Gf("[_\\s-]","gm"),Z1.wordBoundaryToMaintain=new Gf("(?<=\\.)","gm");let wY=Z1;const FU=class FU extends hR{static isSupported(){return[this.caseBoundary,this.singleLetters,this.underscoreBoundary].every(t=>t.isSupported())}constructor(){super({id:"editor.action.transformToKebabcase",label:F("editor.transformToKebabcase","Transform to Kebab Case"),alias:"Transform to Kebab Case",precondition:$.writable})}_modifyText(e,t){const i=FU.caseBoundary.get(),n=FU.singleLetters.get(),o=FU.underscoreBoundary.get();return!i||!n||!o?e:e.replace(o,"$1-$3").replace(i,"$1-$2").replace(n,"$1-$2").toLocaleLowerCase()}};FU.caseBoundary=new Gf("(\\p{Ll})(\\p{Lu})","gmu"),FU.singleLetters=new Gf("(\\p{Lu}|\\p{N})(\\p{Lu}\\p{Ll})","gmu"),FU.underscoreBoundary=new Gf("(\\S)(_)(\\S)","gm");let TY=FU;lt(vAt);lt(kAt);lt(xAt);lt(IAt);lt(EAt);lt(DAt);lt(GAt);lt(JAt);lt(Ute);lt(XAt);lt(YAt);lt(_At);lt(zAt);lt(OAt);lt(jAt);lt(PAt);lt(HAt);lt(KAt);lt(qAt);lt($At);y2.caseBoundary.isSupported()&&y2.singleLetters.isSupported()&<(y2);MY.wordBoundary.isSupported()&<(MY);wY.wordBoundary.isSupported()&<(wY);QY.titleBoundary.isSupported()&<(QY);TY.isSupported()&<(TY);var eZt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},YD;const Pye=new yt("LinkedEditingInputVisible",!1),tZt="linked-editing-decoration";var dN;let sQ=(dN=class extends be{static get(e){return e.getContribution(YD.ID)}constructor(e,t,i,n,o){super(),this.languageConfigurationService=n,this._syncRangesToken=0,this._localToDispose=this._register(new De),this._editor=e,this._providers=i.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=Pye.bindTo(t),this._debounceInformation=o.for(this._providers,"Linked Editing",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new De),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequestCts=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel(()=>this.reinitialize(!0))),this._register(this._editor.onDidChangeConfiguration(r=>{(r.hasChanged(70)||r.hasChanged(94))&&this.reinitialize(!1)})),this._register(this._providers.onDidChange(()=>this.reinitialize(!1))),this._register(this._editor.onDidChangeModelLanguage(()=>this.reinitialize(!0))),this.reinitialize(!0)}reinitialize(e){const t=this._editor.getModel(),i=t!==null&&(this._editor.getOption(70)||this._editor.getOption(94))&&this._providers.has(t);if(i===this._enabled&&!e||(this._enabled=i,this.clearRanges(),this._localToDispose.clear(),!i||t===null))return;this._localToDispose.add(Ut.runAndSubscribe(t.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(t.getLanguageId()).getWordDefinition()}));const n=new Oh(this._debounceInformation.get(t)),o=()=>{this._rangeUpdateTriggerPromise=n.trigger(()=>this.updateRanges(),this._debounceDuration??this._debounceInformation.get(t))},r=new Oh(0),l=a=>{this._rangeSyncTriggerPromise=r.trigger(()=>this._syncRanges(a))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{o()})),this._localToDispose.add(this._editor.onDidChangeModelContent(a=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const d=this._currentDecorations.getRange(0);if(d&&a.changes.every(c=>d.intersectRanges(c.range))){l(this._syncRangesToken);return}}o()})),this._localToDispose.add({dispose:()=>{n.dispose(),r.dispose()}}),this.updateRanges()}_syncRanges(e){if(!this._editor.hasModel()||e!==this._syncRangesToken||this._currentDecorations.length===0)return;const t=this._editor.getModel(),i=this._currentDecorations.getRange(0);if(!i||i.startLineNumber!==i.endLineNumber)return this.clearRanges();const n=t.getValueInRange(i);if(this._currentWordPattern){const r=n.match(this._currentWordPattern);if((r?r[0].length:0)!==n.length)return this.clearRanges()}const o=[];for(let r=1,l=this._currentDecorations.length;r<l;r++){const a=this._currentDecorations.getRange(r);if(a)if(a.startLineNumber!==a.endLineNumber)o.push({range:a,text:n});else{let d=t.getValueInRange(a),c=n,h=a.startColumn,u=a.endColumn;const m=LF(d,c);h+=m,d=d.substr(m),c=c.substr(m);const p=nX(d,c);u-=p,d=d.substr(0,d.length-p),c=c.substr(0,c.length-p),(h!==u||c.length!==0)&&o.push({range:new z(a.startLineNumber,h,a.endLineNumber,u),text:c})}}if(o.length!==0)try{this._editor.popUndoStop(),this._ignoreChangeEvent=!0;const r=this._editor._getViewModel().getPrevEditOperationType();this._editor.executeEdits("linkedEditing",o),this._editor._getViewModel().setPrevEditOperationType(r)}finally{this._ignoreChangeEvent=!1}}dispose(){this.clearRanges(),super.dispose()}clearRanges(){this._visibleContextKey.set(!1),this._currentDecorations.clear(),this._currentRequestCts&&(this._currentRequestCts.cancel(),this._currentRequestCts=null,this._currentRequestPosition=null)}async updateRanges(e=!1){if(!this._editor.hasModel()){this.clearRanges();return}const t=this._editor.getPosition();if(!this._enabled&&!e||this._editor.getSelections().length>1){this.clearRanges();return}const i=this._editor.getModel(),n=i.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===n){if(t.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const r=this._currentDecorations.getRange(0);if(r&&r.containsPosition(t))return}}this.clearRanges(),this._currentRequestPosition=t,this._currentRequestModelVersion=n;const o=this._currentRequestCts=new go;try{const r=new jr(!1),l=await Hye(this._providers,i,t,o.token);if(this._debounceInformation.update(i,r.elapsed()),o!==this._currentRequestCts||(this._currentRequestCts=null,n!==i.getVersionId()))return;let a=[];l!=null&&l.ranges&&(a=l.ranges),this._currentWordPattern=(l==null?void 0:l.wordPattern)||this._languageWordPattern;let d=!1;for(let h=0,u=a.length;h<u;h++)if(z.containsPosition(a[h],t)){if(d=!0,h!==0){const m=a[h];a.splice(h,1),a.unshift(m)}break}if(!d){this.clearRanges();return}const c=a.map(h=>({range:h,options:YD.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(c),this._syncRangesToken++}catch(r){$h(r)||wi(r),(this._currentRequestCts===o||!this._currentRequestCts)&&this.clearRanges()}}},YD=dN,dN.ID="editor.contrib.linkedEditing",dN.DECORATION=ki.register({description:"linked-editing",stickiness:0,className:tZt}),dN);sQ=YD=eZt([zI(1,fi),zI(2,xt),zI(3,bo),zI(4,dh)],sQ);class iZt extends Tt{constructor(){super({id:"editor.action.linkedEditing",label:F("linkedEditing.label","Start Linked Editing"),alias:"Start Linked Editing",precondition:Ge.and($.writable,$.hasRenameProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:3132,weight:100}})}runCommand(e,t){const i=e.get(kn),[n,o]=Array.isArray(t)&&t||[void 0,void 0];return ni.isUri(n)&&ge.isIPosition(o)?i.openCodeEditor({resource:n},i.getActiveCodeEditor()).then(r=>{r&&(r.setPosition(o),r.invokeWithinContext(l=>(this.reportTelemetry(l,r),this.run(l,r))))},wi):super.runCommand(e,t)}run(e,t){const i=sQ.get(t);return i?Promise.resolve(i.updateRanges(!0)):Promise.resolve()}}const nZt=Nr.bindToContribution(sQ.get);Vt(new nZt({id:"cancelLinkedEditingInput",precondition:Pye,handler:s=>s.clearRanges(),kbOpts:{kbExpr:$.editorTextFocus,weight:100+99,primary:9,secondary:[1033]}}));function Hye(s,e,t,i){const n=s.ordered(e);return Lse(n.map(o=>async()=>{try{return await o.provideLinkedEditingRanges(e,t,i)}catch(r){vo(r);return}}),o=>!!o&&ba(o==null?void 0:o.ranges))}te("editor.linkedEditingBackground",{dark:Je.fromHex("#f00").transparent(.3),light:Je.fromHex("#f00").transparent(.3),hcDark:Je.fromHex("#f00").transparent(.3),hcLight:Je.white},F("editorLinkedEditingBackground","Background color when the editor auto renames on type."));Cd("_executeLinkedEditingProvider",(s,e,t)=>{const{linkedEditingRangeProvider:i}=s.get(xt);return Hye(i,e,t,Gi.None)});Wn(sQ.ID,sQ,1);lt(iZt);let sZt=class{constructor(e,t){this._link=e,this._provider=t}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}async resolve(e){return this._link.url?this._link.url:typeof this._provider.resolveLink=="function"?Promise.resolve(this._provider.resolveLink(this._link,e)).then(t=>(this._link=t||this._link,this._link.url?this.resolve(e):Promise.reject(new Error("missing")))):Promise.reject(new Error("missing"))}};class CY{constructor(e){this._disposables=new De;let t=[];for(const[i,n]of e){const o=i.links.map(r=>new sZt(r,n));t=CY._union(t,o),R3(i)&&this._disposables.add(i)}this.links=t}dispose(){this._disposables.dispose(),this.links.length=0}static _union(e,t){const i=[];let n,o,r,l;for(n=0,r=0,o=e.length,l=t.length;n<o&&r<l;){const a=e[n],d=t[r];if(z.areIntersectingOrTouching(a.range,d.range)){n++;continue}z.compareRangesUsingStarts(a.range,d.range)<0?(i.push(a),n++):(i.push(d),r++)}for(;n<o;n++)i.push(e[n]);for(;r<l;r++)i.push(t[r]);return i}}function Kye(s,e,t){const i=[],n=s.ordered(e).reverse().map((o,r)=>Promise.resolve(o.provideLinks(e,t)).then(l=>{l&&(i[r]=[l,o])},vo));return Promise.all(n).then(()=>{const o=new CY(Hu(i));return t.isCancellationRequested?(o.dispose(),new CY([])):o})}Sn.registerCommand("_executeLinkProvider",async(s,...e)=>{let[t,i]=e;vn(t instanceof ni),typeof i!="number"&&(i=0);const{linkProvider:n}=s.get(xt),o=s.get(zs).getModel(t);if(!o)return[];const r=await Kye(n,o,Gi.None);if(!r)return[];for(let a=0;a<Math.min(i,r.links.length);a++)await r.links[a].resolve(Gi.None);const l=r.links.slice(0);return r.dispose(),l});var oZt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},OI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Fte,_Q;let rv=(_Q=class extends be{static get(e){return e.getContribution(Fte.ID)}constructor(e,t,i,n,o){super(),this.editor=e,this.openerService=t,this.notificationService=i,this.languageFeaturesService=n,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=o.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new cs(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const r=this._register(new _9(e));this._register(r.onMouseMoveOrRelevantKeyDown(([l,a])=>{this._onEditorMouseMove(l,a)})),this._register(r.onExecute(l=>{this.onEditorMouseUp(l)})),this._register(r.onCancel(l=>{this.cleanUpActiveLinkDecoration()})),this._register(e.onDidChangeConfiguration(l=>{l.hasChanged(71)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(e.onDidChangeModelContent(l=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(e.onDidChangeModel(l=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(e.onDidChangeModelLanguage(l=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(l=>{this.stop(),this.computeLinks.schedule(0)})),this.computeLinks.schedule(0)}async computeLinksNow(){if(!this.editor.hasModel()||!this.editor.getOption(71))return;const e=this.editor.getModel();if(!e.isTooLargeForSyncing()&&this.providers.has(e)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=Tr(t=>Kye(this.providers,e,t));try{const t=new jr(!1);if(this.activeLinksList=await this.computePromise,this.debounceInformation.update(e,t.elapsed()),e.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(t){wi(t)}finally{this.computePromise=null}}}updateDecorations(e){const t=this.editor.getOption(78)==="altKey",i=[],n=Object.keys(this.currentOccurrences);for(const r of n){const l=this.currentOccurrences[r];i.push(l.decorationId)}const o=[];if(e)for(const r of e)o.push(K1.decoration(r,t));this.editor.changeDecorations(r=>{const l=r.deltaDecorations(i,o);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let a=0,d=l.length;a<d;a++){const c=new K1(e[a],l[a]);this.currentOccurrences[c.decorationId]=c}})}_onEditorMouseMove(e,t){const i=this.editor.getOption(78)==="altKey";if(this.isEnabled(e,t)){this.cleanUpActiveLinkDecoration();const n=this.getLinkOccurrence(e.target.position);n&&this.editor.changeDecorations(o=>{n.activate(o,i),this.activeLinkDecorationId=n.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const e=this.editor.getOption(78)==="altKey";if(this.activeLinkDecorationId){const t=this.currentOccurrences[this.activeLinkDecorationId];t&&this.editor.changeDecorations(i=>{t.deactivate(i,e)}),this.activeLinkDecorationId=null}}onEditorMouseUp(e){if(!this.isEnabled(e))return;const t=this.getLinkOccurrence(e.target.position);t&&this.openLinkOccurrence(t,e.hasSideBySideModifier,!0)}openLinkOccurrence(e,t,i=!1){if(!this.openerService)return;const{link:n}=e;n.resolve(Gi.None).then(o=>{if(typeof o=="string"&&this.editor.hasModel()){const r=this.editor.getModel().uri;if(r.scheme===Ti.file&&o.startsWith(`${Ti.file}:`)){const l=ni.parse(o);if(l.scheme===Ti.file){const a=Xp(l);let d=null;a.startsWith("/./")||a.startsWith("\\.\\")?d=`.${a.substr(1)}`:(a.startsWith("//./")||a.startsWith("\\\\.\\"))&&(d=`.${a.substr(2)}`),d&&(o=a$e(r,d))}}}return this.openerService.open(o,{openToSide:t,fromUserGesture:i,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},o=>{const r=o instanceof Error?o.message:o;r==="invalid"?this.notificationService.warn(F("invalid.url","Failed to open this link because it is not well-formed: {0}",n.url.toString())):r==="missing"?this.notificationService.warn(F("missing.url","Failed to open this link because its target is missing.")):wi(o)})}getLinkOccurrence(e){if(!this.editor.hasModel()||!e)return null;const t=this.editor.getModel().getDecorationsInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column},0,!0);for(const i of t){const n=this.currentOccurrences[i.id];if(n)return n}return null}isEnabled(e,t){return!!(e.target.type===6&&(e.hasTriggerModifier||t&&t.keyCodeIsTriggerKey))}stop(){var e;this.computeLinks.cancel(),this.activeLinksList&&((e=this.activeLinksList)==null||e.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}},Fte=_Q,_Q.ID="editor.linkDetector",_Q);rv=Fte=oZt([OI(1,Bd),OI(2,jo),OI(3,xt),OI(4,dh)],rv);const j0e={general:ki.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:ki.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class K1{static decoration(e,t){return{range:e.range,options:K1._getOptions(e,t,!1)}}static _getOptions(e,t,i){const n={...i?j0e.active:j0e.general};return n.hoverMessage=rZt(e,t),n}constructor(e,t){this.link=e,this.decorationId=t}activate(e,t){e.changeDecorationOptions(this.decorationId,K1._getOptions(this.link,t,!0))}deactivate(e,t){e.changeDecorationOptions(this.decorationId,K1._getOptions(this.link,t,!1))}}function rZt(s,e){const t=s.url&&/^command:/i.test(s.url.toString()),i=s.tooltip?s.tooltip:t?F("links.navigate.executeCmd","Execute command"):F("links.navigate.follow","Follow link"),n=e?hn?F("links.navigate.kb.meta.mac","cmd + click"):F("links.navigate.kb.meta","ctrl + click"):hn?F("links.navigate.kb.alt.mac","option + click"):F("links.navigate.kb.alt","alt + click");if(s.url){let o="";if(/^command:/i.test(s.url.toString())){const l=s.url.toString().match(/^command:([^?#]+)/);if(l){const a=l[1];o=F("tooltip.explanation","Execute command {0}",a)}}return new _l("",!0).appendLink(s.url.toString(!0).replace(/ /g,"%20"),i,o).appendMarkdown(` (${n})`)}else return new _l().appendText(`${i} (${n})`)}class lZt extends Tt{constructor(){super({id:"editor.action.openLink",label:F("label","Open Link"),alias:"Open Link",precondition:void 0})}run(e,t){const i=rv.get(t);if(!i||!t.hasModel())return;const n=t.getSelections();for(const o of n){const r=i.getLinkOccurrence(o.getEndPosition());r&&i.openLinkOccurrence(r,!1)}}}Wn(rv.ID,rv,1);lt(lZt);const gae=class gae extends be{constructor(e){super(),this._editor=e,this._register(this._editor.onMouseDown(t=>{const i=this._editor.getOption(118);i>=0&&t.target.type===6&&t.target.position.column>=i&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}};gae.ID="editor.contrib.longLinesHelper";let BY=gae;Wn(BY.ID,BY,2);const aZt=te("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},F("wordHighlight","Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},F("wordHighlightStrong","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0);te("editor.wordHighlightTextBackground",aZt,F("wordHighlightText","Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0);const dZt=te("editor.wordHighlightBorder",{light:null,dark:null,hcDark:to,hcLight:to},F("wordHighlightBorder","Border color of a symbol during read-access, like reading a variable."));te("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:to,hcLight:to},F("wordHighlightStrongBorder","Border color of a symbol during write-access, like writing to a variable."));te("editor.wordHighlightTextBorder",dZt,F("wordHighlightTextBorder","Border color of a textual occurrence for a symbol."));const cZt=te("editorOverviewRuler.wordHighlightForeground","#A0A0A0CC",F("overviewRulerWordHighlightForeground","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),hZt=te("editorOverviewRuler.wordHighlightStrongForeground","#C0A0C0CC",F("overviewRulerWordHighlightStrongForeground","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),uZt=te("editorOverviewRuler.wordHighlightTextForeground",FNe,F("overviewRulerWordHighlightTextForeground","Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0),mZt=ki.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:Vo(hZt),position:eh.Center},minimap:{color:Vo(q3),position:1}}),pZt=ki.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:Vo(uZt),position:eh.Center},minimap:{color:Vo(q3),position:1}}),gZt=ki.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:Vo(FNe),position:eh.Center},minimap:{color:Vo(q3),position:1}}),fZt=ki.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),bZt=ki.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:Vo(cZt),position:eh.Center},minimap:{color:Vo(q3),position:1}});function UZt(s){return s===Sy.Write?mZt:s===Sy.Text?pZt:bZt}function FZt(s){return s?fZt:gZt}eu((s,e)=>{const t=s.getColor(loe);t&&e.addRule(`.monaco-editor .selectionHighlight { background-color: ${t.transparent(.5)}; }`)});var AZt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ZZt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Ate;function lA(s,e){const t=e.filter(i=>!s.find(n=>n.equals(i)));if(t.length>=1){const i=t.map(o=>`line ${o.viewState.position.lineNumber} column ${o.viewState.position.column}`).join(", "),n=t.length===1?F("cursorAdded","Cursor added: {0}",i):F("cursorsAdded","Cursors added: {0}",i);Xg(n)}}class SZt extends Tt{constructor(){super({id:"editor.action.insertCursorAbove",label:F("mutlicursor.insertAbove","Add Cursor Above"),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"3_multi",title:F({key:"miInsertCursorAbove",comment:["&& denotes a mnemonic"]},"&&Add Cursor Above"),order:2}})}run(e,t,i){if(!t.hasModel())return;let n=!0;i&&i.logicalLine===!1&&(n=!1);const o=t._getViewModel();if(o.cursorConfig.readOnly)return;o.model.pushStackElement();const r=o.getCursorStates();o.setCursorStates(i.source,3,el.addCursorUp(o,r,n)),o.revealTopMostCursor(i.source),lA(r,o.getCursorStates())}}class NZt extends Tt{constructor(){super({id:"editor.action.insertCursorBelow",label:F("mutlicursor.insertBelow","Add Cursor Below"),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"3_multi",title:F({key:"miInsertCursorBelow",comment:["&& denotes a mnemonic"]},"A&&dd Cursor Below"),order:3}})}run(e,t,i){if(!t.hasModel())return;let n=!0;i&&i.logicalLine===!1&&(n=!1);const o=t._getViewModel();if(o.cursorConfig.readOnly)return;o.model.pushStackElement();const r=o.getCursorStates();o.setCursorStates(i.source,3,el.addCursorDown(o,r,n)),o.revealBottomMostCursor(i.source),lA(r,o.getCursorStates())}}class RZt extends Tt{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:F("mutlicursor.insertAtEndOfEachLineSelected","Add Cursors to Line Ends"),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"3_multi",title:F({key:"miInsertCursorAtEndOfEachLineSelected",comment:["&& denotes a mnemonic"]},"Add C&&ursors to Line Ends"),order:4}})}getCursorsForSelection(e,t,i){if(!e.isEmpty()){for(let n=e.startLineNumber;n<e.endLineNumber;n++){const o=t.getLineMaxColumn(n);i.push(new _t(n,o,n,o))}e.endColumn>1&&i.push(new _t(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}}run(e,t){if(!t.hasModel())return;const i=t.getModel(),n=t.getSelections(),o=t._getViewModel(),r=o.getCursorStates(),l=[];n.forEach(a=>this.getCursorsForSelection(a,i,l)),l.length>0&&t.setSelections(l),lA(r,o.getCursorStates())}}class VZt extends Tt{constructor(){super({id:"editor.action.addCursorsToBottom",label:F("mutlicursor.addCursorsToBottom","Add Cursors To Bottom"),alias:"Add Cursors To Bottom",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),n=t.getModel().getLineCount(),o=[];for(let a=i[0].startLineNumber;a<=n;a++)o.push(new _t(a,i[0].startColumn,a,i[0].endColumn));const r=t._getViewModel(),l=r.getCursorStates();o.length>0&&t.setSelections(o),lA(l,r.getCursorStates())}}class WZt extends Tt{constructor(){super({id:"editor.action.addCursorsToTop",label:F("mutlicursor.addCursorsToTop","Add Cursors To Top"),alias:"Add Cursors To Top",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),n=[];for(let l=i[0].startLineNumber;l>=1;l--)n.push(new _t(l,i[0].startColumn,l,i[0].endColumn));const o=t._getViewModel(),r=o.getCursorStates();n.length>0&&t.setSelections(n),lA(r,o.getCursorStates())}}class jI{constructor(e,t,i){this.selections=e,this.revealRange=t,this.revealScrollType=i}}class lv{static create(e,t){if(!e.hasModel())return null;const i=t.getState();if(!e.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new lv(e,t,!1,i.searchString,i.wholeWord,i.matchCase,null);let n=!1,o,r;const l=e.getSelections();l.length===1&&l[0].isEmpty()?(n=!0,o=!0,r=!0):(o=i.wholeWord,r=i.matchCase);const a=e.getSelection();let d,c=null;if(a.isEmpty()){const h=e.getConfiguredWordAtPosition(a.getStartPosition());if(!h)return null;d=h.word,c=new _t(a.startLineNumber,h.startColumn,a.startLineNumber,h.endColumn)}else d=e.getModel().getValueInRange(a).replace(/\r\n/g,`
- `);return new lv(e,t,n,d,o,r,c)}constructor(e,t,i,n,o,r,l){this._editor=e,this.findController=t,this.isDisconnectedFromFindController=i,this.searchText=n,this.wholeWord=o,this.matchCase=r,this.currentMatch=l}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new jI(t.concat(e),e,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new jI(t.slice(0,t.length-1).concat(e),e,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const n=this.currentMatch;return this.currentMatch=null,n}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findNextMatch(this.searchText,t.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1);return i?new _t(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new jI(t.concat(e),e,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new jI(t.slice(0,t.length-1).concat(e),e,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const n=this.currentMatch;return this.currentMatch=null,n}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,t.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1);return i?new _t(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}selectAll(e){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const t=this._editor.getModel();return e?t.findMatches(this.searchText,e,!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1,1073741824):t.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1,1073741824)}}const Dz=class Dz extends be{static get(e){return e.getContribution(Dz.ID)}constructor(e){super(),this._sessionDispose=this._register(new De),this._editor=e,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(e){if(!this._session){const t=lv.create(this._editor,e);if(!t)return;this._session=t;const i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(n=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(e.getState().onFindReplaceStateChange(n=>{(n.matchCase||n.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const e={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(e,!1)}this._session=null}_setSelections(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1}_expandEmptyToWord(e,t){if(!t.isEmpty())return t;const i=this._editor.getConfiguredWordAtPosition(t.getStartPosition());return i?new _t(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):t}_applySessionResult(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))}getSession(e){return this._session}addSelectionToNextFindMatch(e){if(this._editor.hasModel()){if(!this._session){const t=this._editor.getSelections();if(t.length>1){const n=e.getState().matchCase;if(!qye(this._editor.getModel(),t,n)){const r=this._editor.getModel(),l=[];for(let a=0,d=t.length;a<d;a++)l[a]=this._expandEmptyToWord(r,t[a]);this._editor.setSelections(l);return}}}this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToNextFindMatch())}}addSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToPreviousFindMatch())}moveSelectionToNextFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToNextFindMatch())}moveSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToPreviousFindMatch())}selectAll(e){if(!this._editor.hasModel())return;let t=null;const i=e.getState();if(i.isRevealed&&i.searchString.length>0&&i.isRegex){const n=this._editor.getModel();i.searchScope?t=n.findMatches(i.searchString,i.searchScope,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(132):null,!1,1073741824):t=n.findMatches(i.searchString,!0,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(132):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll(i.searchScope)}if(t.length>0){const n=this._editor.getSelection();for(let o=0,r=t.length;o<r;o++){const l=t[o];if(l.range.intersectRanges(n)){t[o]=t[0],t[0]=l;break}}this._setSelections(t.map(o=>new _t(o.range.startLineNumber,o.range.startColumn,o.range.endLineNumber,o.range.endColumn)))}}};Dz.ID="editor.contrib.multiCursorController";let oQ=Dz;class vM extends Tt{run(e,t){const i=oQ.get(t);if(!i)return;const n=t._getViewModel();if(n){const o=n.getCursorStates(),r=wd.get(t);if(r)this._run(i,r);else{const l=e.get(ti).createInstance(wd,t);this._run(i,l),l.dispose()}lA(o,n.getCursorStates())}}}class yZt extends vM{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:F("addSelectionToNextFindMatch","Add Selection To Next Find Match"),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:2082,weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"3_multi",title:F({key:"miAddSelectionToNextFindMatch",comment:["&& denotes a mnemonic"]},"Add &&Next Occurrence"),order:5}})}_run(e,t){e.addSelectionToNextFindMatch(t)}}class QZt extends vM{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:F("addSelectionToPreviousFindMatch","Add Selection To Previous Find Match"),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"3_multi",title:F({key:"miAddSelectionToPreviousFindMatch",comment:["&& denotes a mnemonic"]},"Add P&&revious Occurrence"),order:6}})}_run(e,t){e.addSelectionToPreviousFindMatch(t)}}class MZt extends vM{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:F("moveSelectionToNextFindMatch","Move Last Selection To Next Find Match"),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:dr(2089,2082),weight:100}})}_run(e,t){e.moveSelectionToNextFindMatch(t)}}class wZt extends vM{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:F("moveSelectionToPreviousFindMatch","Move Last Selection To Previous Find Match"),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}_run(e,t){e.moveSelectionToPreviousFindMatch(t)}}class TZt extends vM{constructor(){super({id:"editor.action.selectHighlights",label:F("selectAllOccurrencesOfFindMatch","Select All Occurrences of Find Match"),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:3114,weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"3_multi",title:F({key:"miSelectHighlights",comment:["&& denotes a mnemonic"]},"Select All &&Occurrences"),order:7}})}_run(e,t){e.selectAll(t)}}class CZt extends vM{constructor(){super({id:"editor.action.changeAll",label:F("changeAll.label","Change All Occurrences"),alias:"Change All Occurrences",precondition:Ge.and($.writable,$.editorTextFocus),kbOpts:{kbExpr:$.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(e,t){e.selectAll(t)}}class BZt{constructor(e,t,i,n,o){this._model=e,this._searchText=t,this._matchCase=i,this._wordSeparators=n,this._modelVersionId=this._model.getVersionId(),this._cachedFindMatches=null,o&&this._model===o._model&&this._searchText===o._searchText&&this._matchCase===o._matchCase&&this._wordSeparators===o._wordSeparators&&this._modelVersionId===o._modelVersionId&&(this._cachedFindMatches=o._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(e=>e.range),this._cachedFindMatches.sort(z.compareRangesUsingStarts)),this._cachedFindMatches}}var zQ;let LY=(zQ=class extends be{constructor(e,t){super(),this._languageFeaturesService=t,this.editor=e,this._isEnabled=e.getOption(109),this._decorations=e.createDecorationsCollection(),this.updateSoon=this._register(new cs(()=>this._update(),300)),this.state=null,this._register(e.onDidChangeConfiguration(n=>{this._isEnabled=e.getOption(109)})),this._register(e.onDidChangeCursorSelection(n=>{this._isEnabled&&(n.selection.isEmpty()?n.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(e.onDidChangeModel(n=>{this._setState(null)})),this._register(e.onDidChangeModelContent(n=>{this._isEnabled&&this.updateSoon.schedule()}));const i=wd.get(e);i&&this._register(i.getState().onFindReplaceStateChange(n=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(Ate._createState(this.state,this._isEnabled,this.editor))}static _createState(e,t,i){if(!t||!i.hasModel())return null;const n=i.getSelection();if(n.startLineNumber!==n.endLineNumber)return null;const o=oQ.get(i);if(!o)return null;const r=wd.get(i);if(!r)return null;let l=o.getSession(r);if(!l){const c=i.getSelections();if(c.length>1){const u=r.getState().matchCase;if(!qye(i.getModel(),c,u))return null}l=lv.create(i,r)}if(!l||l.currentMatch||/^[ \t]+$/.test(l.searchText)||l.searchText.length>200)return null;const a=r.getState(),d=a.matchCase;if(a.isRevealed){let c=a.searchString;d||(c=c.toLowerCase());let h=l.searchText;if(d||(h=h.toLowerCase()),c===h&&l.matchCase===a.matchCase&&l.wholeWord===a.wholeWord&&!a.isRegex)return null}return new BZt(i.getModel(),l.searchText,l.matchCase,l.wholeWord?i.getOption(132):null,e)}_setState(e){if(this.state=e,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const t=this.editor.getModel();if(t.isTooLargeForTokenization())return;const i=this.state.findMatches(),n=this.editor.getSelections();n.sort(z.compareRangesUsingStarts);const o=[];for(let d=0,c=0,h=i.length,u=n.length;d<h;){const m=i[d];if(c>=u)o.push(m),d++;else{const p=z.compareRangesUsingStarts(m,n[c]);p<0?((n[c].isEmpty()||!z.areIntersecting(m,n[c]))&&o.push(m),d++):(p>0||d++,c++)}}const r=this.editor.getOption(81)!=="off",l=this._languageFeaturesService.documentHighlightProvider.has(t)&&r,a=o.map(d=>({range:d,options:FZt(l)}));this._decorations.set(a)}dispose(){this._setState(null),super.dispose()}},Ate=zQ,zQ.ID="editor.contrib.selectionHighlighter",zQ);LY=Ate=AZt([ZZt(1,xt)],LY);function qye(s,e,t){const i=P0e(s,e[0],!t);for(let n=1,o=e.length;n<o;n++){const r=e[n];if(r.isEmpty())return!1;const l=P0e(s,r,!t);if(i!==l)return!1}return!0}function P0e(s,e,t){const i=s.getValueInRange(e);return t?i.toLowerCase():i}class LZt extends Tt{constructor(){super({id:"editor.action.focusNextCursor",label:F("mutlicursor.focusNextCursor","Focus Next Cursor"),metadata:{description:F("mutlicursor.focusNextCursor.description","Focuses the next cursor"),args:[]},alias:"Focus Next Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const n=t._getViewModel();if(n.cursorConfig.readOnly)return;n.model.pushStackElement();const o=Array.from(n.getCursorStates()),r=o.shift();r&&(o.push(r),n.setCursorStates(i.source,3,o),n.revealPrimaryCursor(i.source,!0),lA(o,n.getCursorStates()))}}class vZt extends Tt{constructor(){super({id:"editor.action.focusPreviousCursor",label:F("mutlicursor.focusPreviousCursor","Focus Previous Cursor"),metadata:{description:F("mutlicursor.focusPreviousCursor.description","Focuses the previous cursor"),args:[]},alias:"Focus Previous Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const n=t._getViewModel();if(n.cursorConfig.readOnly)return;n.model.pushStackElement();const o=Array.from(n.getCursorStates()),r=o.pop();r&&(o.unshift(r),n.setCursorStates(i.source,3,o),n.revealPrimaryCursor(i.source,!0),lA(o,n.getCursorStates()))}}Wn(oQ.ID,oQ,4);Wn(LY.ID,LY,1);lt(SZt);lt(NZt);lt(RZt);lt(yZt);lt(QZt);lt(MZt);lt(wZt);lt(TZt);lt(CZt);lt(VZt);lt(WZt);lt(LZt);lt(vZt);const kZt="editor.action.inlineEdit.accept",xZt="editor.action.inlineEdit.reject",IZt="editor.action.inlineEdit.jumpTo",EZt="editor.action.inlineEdit.jumpBack";var DZt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},GZt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const yH="inline-edit";let Zte=class extends be{constructor(e,t,i){super(),this.editor=e,this.model=t,this.languageService=i,this.isDisposed=Pi(this,!1),this.currentTextModel=is(this,this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=Pt(this,n=>{var U;if(this.isDisposed.read(n))return;const o=this.currentTextModel.read(n);if(o!==this.model.targetTextModel.read(n))return;const r=this.model.ghostText.read(n);if(!r)return;let l=(U=this.model.range)==null?void 0:U.read(n);l&&l.startLineNumber===l.endLineNumber&&l.startColumn===l.endColumn&&(l=void 0);const a=(l?l.startLineNumber===l.endLineNumber:!0)&&r.parts.length===1&&r.parts[0].lines.length===1,d=r.parts.length===1&&r.parts[0].lines.every(S=>S.length===0),c=[],h=[];function u(S,Z){if(h.length>0){const R=h[h.length-1];Z&&R.decorations.push(new Da(R.content.length+1,R.content.length+1+S[0].length,Z,0)),R.content+=S[0],S=S.slice(1)}for(const R of S)h.push({content:R,decorations:Z?[new Da(1,R.length+1,Z,0)]:[]})}const m=o.getLineContent(r.lineNumber);let p,g=0;if(!d&&(a||!l)){for(const S of r.parts){let Z=S.lines;l&&!a&&(u(Z,yH),Z=[]),p===void 0?(c.push({column:S.column,text:Z[0],preview:S.preview}),Z=Z.slice(1)):u([m.substring(g,S.column-1)],void 0),Z.length>0&&(u(Z,yH),p===void 0&&S.column<=m.length&&(p=S.column)),g=S.column-1}p!==void 0&&u([m.substring(g)],void 0)}const f=p!==void 0?new Bye(p,m.length+1):void 0,b=a||!l?r.lineNumber:l.endLineNumber-1;return{inlineTexts:c,additionalLines:h,hiddenRange:f,lineNumber:b,additionalReservedLineCount:this.model.minReservedLineCount.read(n),targetTextModel:o,range:l,isSingleLine:a,isPureRemove:d}}),this.decorations=Pt(this,n=>{const o=this.uiState.read(n);if(!o)return[];const r=[];if(o.hiddenRange&&r.push({range:o.hiddenRange.toRange(o.lineNumber),options:{inlineClassName:"inline-edit-hidden",description:"inline-edit-hidden"}}),o.range){const l=[];if(o.isSingleLine)l.push(o.range);else if(!o.isPureRemove){const a=o.range.endLineNumber-o.range.startLineNumber;for(let d=0;d<a;d++){const c=o.range.startLineNumber+d,h=o.targetTextModel.getLineFirstNonWhitespaceColumn(c),u=o.targetTextModel.getLineLastNonWhitespaceColumn(c),m=new z(c,h,c,u);l.push(m)}}for(const a of l)r.push({range:a,options:_y})}if(o.range&&!o.isSingleLine&&o.isPureRemove){const l=new z(o.range.startLineNumber,1,o.range.endLineNumber-1,1);r.push({range:l,options:IL})}for(const l of o.inlineTexts)r.push({range:z.fromPositions(new ge(o.lineNumber,l.column)),options:{description:yH,after:{content:l.text,inlineClassName:l.preview?"inline-edit-decoration-preview":"inline-edit-decoration",cursorStops:zu.Left},showIfCollapsed:!0}});return r}),this._register(ei(()=>{this.isDisposed.set(!0,void 0)})),this._register(Lye(this.editor,this.decorations))}};Zte=DZt([GZt(2,ao)],Zte);var Ile=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},gg=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},_D;let Ste=class extends be{constructor(e,t,i){super(),this.editor=e,this.model=t,this.instantiationService=i,this.alwaysShowToolbar=is(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).showToolbar==="always"),this.sessionPosition=void 0,this.position=Pt(this,n=>{var a,d;const o=(a=this.model.read(n))==null?void 0:a.model.ghostText.read(n);if(!this.alwaysShowToolbar.read(n)||!o||o.parts.length===0)return this.sessionPosition=void 0,null;const r=o.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==o.lineNumber&&(this.sessionPosition=void 0);const l=new ge(o.lineNumber,Math.min(r,((d=this.sessionPosition)==null?void 0:d.column)??Number.MAX_SAFE_INTEGER));return this.sessionPosition=l,l}),this._register(Wd((n,o)=>{if(!this.model.read(n)||!this.alwaysShowToolbar.read(n))return;const l=o.add(this.instantiationService.createInstance(Nte,this.editor,!0,this.position));e.addContentWidget(l),o.add(ei(()=>e.removeContentWidget(l)))}))}};Ste=Ile([gg(2,ti)],Ste);var cN;let Nte=(cN=class extends be{constructor(e,t,i,n,o,r){super(),this.editor=e,this.withBorder=t,this._position=i,this._contextKeyService=o,this._menuService=r,this.id=`InlineEditHintsContentWidget${_D.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=an("div.inlineEditHints",{className:this.withBorder?".withBorder":""},[an("div@toolBar")]),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(Gt.InlineEditActions,this._contextKeyService)),this.toolBar=this._register(n.createInstance(Rte,this.nodes.toolBar,this.editor,Gt.InlineEditToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:l=>l.startsWith("primary")},actionViewItemProvider:(l,a)=>{if(l instanceof dc)return n.createInstance(JZt,l,void 0)},telemetrySource:"InlineEditToolbar"})),this._register(this.toolBar.onDidChangeDropdownVisibility(l=>{_D._dropDownVisible=l})),this._register(yi(l=>{this._position.read(l),this.editor.layoutContentWidget(this)})),this._register(yi(l=>{const a=[];for(const[d,c]of this.inlineCompletionsActionsMenus.getActions())for(const h of c)h instanceof dc&&a.push(h);a.length>0&&a.unshift(new Br),this.toolBar.setAdditionalSecondaryActions(a)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}},_D=cN,cN._dropDownVisible=!1,cN.id=0,cN);Nte=_D=Ile([gg(3,ti),gg(4,fi),gg(5,ah)],Nte);class JZt extends DF{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const t=an("div.keybinding").root;this._register(new WM(t,rc,{disableTitle:!0,...yVe})).set(e),this.label.textContent=this._action.label,this.label.appendChild(t),this.label.classList.add("inlineEditStatusBarItemLabel")}}updateTooltip(){}}let Rte=class extends DL{constructor(e,t,i,n,o,r,l,a,d,c){super(e,{resetMenu:i,...n},o,r,l,a,d,c),this.editor=t,this.menuId=i,this.options2=n,this.menuService=o,this.contextKeyService=r,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this._store.add(this.editor.onDidChangeCursorPosition(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var i,n,o,r,l,a,d;const e=[],t=[];g9(this.menu,(i=this.options2)==null?void 0:i.menuOptions,{primary:e,secondary:t},(o=(n=this.options2)==null?void 0:n.toolbarOptions)==null?void 0:o.primaryGroup,(l=(r=this.options2)==null?void 0:r.toolbarOptions)==null?void 0:l.shouldInlineSubmenu,(d=(a=this.options2)==null?void 0:a.toolbarOptions)==null?void 0:d.useSeparatorsInPrimaryActions),t.push(...this.additionalActions),e.unshift(...this.prependedPrimaryActions),this.setActions(e,t)}setAdditionalSecondaryActions(e){lo(this.additionalActions,e,(t,i)=>t===i)||(this.additionalActions=e,this.updateToolbar())}};Rte=Ile([gg(4,ah),gg(5,fi),gg(6,Uc),gg(7,qn),gg(8,ks),gg(9,$l)],Rte);var $ye=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zD=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},JT,Vte;function*XZt(s,e,t=1){e===void 0&&([e,s]=[s,0]);for(let i=s;i<e;i+=t)yield i}function QH(s){var i;const e=((i=s[0].match(/^\s*/))==null?void 0:i[0])??"",t=e.length;return{text:s.map(n=>n.replace(new RegExp("^"+e),"")),shift:t}}var OQ;let Wte=(OQ=class extends be{static _createUniqueUri(){return ni.from({scheme:"inline-edit-widget",path:new Date().toString()+String(JT._modelId++)})}constructor(e,t,i,n,o){super(),this._editor=e,this._model=t,this._instantiationService=i,this._diffProviderFactoryService=n,this._modelService=o,this._position=Pt(this,r=>{const l=this._model.read(r);if(!l||l.text.length===0||l.range.startLineNumber===l.range.endLineNumber&&!(l.range.startColumn===l.range.endColumn&&l.range.startColumn===1))return null;const a=this._editor.getModel();if(!a)return null;const d=Array.from(XZt(l.range.startLineNumber,l.range.endLineNumber+1)),c=d.map(g=>a.getLineLastNonWhitespaceColumn(g)),h=Math.max(...c),u=d[c.indexOf(h)],m=new ge(u,h);return{top:l.range.startLineNumber,left:m}}),this._text=Pt(this,r=>{const l=this._model.read(r);if(!l)return{text:"",shift:0};const a=QH(l.text.split(`
- `));return{text:a.text.join(`
- `),shift:a.shift}}),this._originalModel=ma(()=>this._modelService.createModel("",null,JT._createUniqueUri())).keepObserved(this._store),this._modifiedModel=ma(()=>this._modelService.createModel("",null,JT._createUniqueUri())).keepObserved(this._store),this._diff=Pt(this,r=>{var l,a;return(a=(l=this._diffPromise.read(r))==null?void 0:l.promiseResult.read(r))==null?void 0:a.data}),this._diffPromise=Pt(this,r=>{const l=this._model.read(r);if(!l)return;const a=this._editor.getModel();if(!a)return;const d=QH(a.getValueInRange(l.range).split(`
- `)).text.join(`
- `),c=QH(l.text.split(`
- `)).text.join(`
- `);this._originalModel.get().setValue(d),this._modifiedModel.get().setValue(c);const h=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:"advanced"});return u9.fromFn(async()=>{const u=await h.computeDiff(this._originalModel.get(),this._modifiedModel.get(),{computeMoves:!1,ignoreTrimWhitespace:!1,maxComputationTimeMs:1e3},Gi.None);if(!u.identical)return u.changes})}),this._register(Wd((r,l)=>{if(!this._model.read(r)||this._position.get()===null)return;const d=l.add(this._instantiationService.createInstance(yte,this._editor,this._position,this._text.map(c=>c.text),this._text.map(c=>c.shift),this._diff));e.addOverlayWidget(d),l.add(ei(()=>e.removeOverlayWidget(d)))}))}},JT=OQ,OQ._modelId=0,OQ);Wte=JT=$ye([zD(2,ti),zD(3,bk),zD(4,zs)],Wte);var jQ;let yte=(jQ=class extends be{constructor(e,t,i,n,o,r){var l;super(),this._editor=e,this._position=t,this._text=i,this._shift=n,this._diff=o,this._instantiationService=r,this.id=`InlineEditSideBySideContentWidget${Vte.id++}`,this.allowEditorOverflow=!1,this._nodes=gt("div.inlineEditSideBySide",void 0),this._scrollChanged=Vl("editor.onDidScrollChange",this._editor.onDidScrollChange),this._previewEditor=this._register(this._instantiationService.createInstance(sm,this._nodes,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0,scrollbar:{vertical:"hidden",horizontal:"hidden",alwaysConsumeMouseWheel:!1,handleMouseWheel:!1},readOnly:!0,wordWrap:"off",wordWrapOverride1:"off",wordWrapOverride2:"off",wrappingIndent:"none",wrappingStrategy:void 0},{contributions:[],isSimpleWidget:!0},this._editor)),this._previewEditorObs=oc(this._previewEditor),this._editorObs=oc(this._editor),this._previewTextModel=this._register(this._instantiationService.createInstance(Km,"",((l=this._editor.getModel())==null?void 0:l.getLanguageId())??Ya,Km.DEFAULT_CREATION_OPTIONS,null)),this._setText=Pt(a=>{const d=this._text.read(a);d&&this._previewTextModel.setValue(d)}).recomputeInitiallyAndOnChange(this._store),this._decorations=Pt(this,a=>{this._setText.read(a);const d=this._position.read(a);if(!d)return{org:[],mod:[]};const c=this._diff.read(a);if(!c)return{org:[],mod:[]};const h=[],u=[];if(c.length===1&&c[0].innerChanges[0].modifiedRange.equalsRange(this._previewTextModel.getFullModelRange()))return{org:[],mod:[]};const m=this._shift.get(),p=g=>new z(g.startLineNumber+d.top-1,g.startColumn+m,g.endLineNumber+d.top-1,g.endColumn+m);for(const g of c)if(g.original.isEmpty||h.push({range:p(g.original.toInclusiveRange()),options:IL}),g.modified.isEmpty||u.push({range:g.modified.toInclusiveRange(),options:I5}),g.modified.isEmpty||g.original.isEmpty)g.original.isEmpty||h.push({range:p(g.original.toInclusiveRange()),options:Yre}),g.modified.isEmpty||u.push({range:g.modified.toInclusiveRange(),options:Jre});else for(const f of g.innerChanges||[])g.original.contains(f.originalRange.startLineNumber)&&h.push({range:p(f.originalRange),options:f.originalRange.isEmpty()?_re:_y}),g.modified.contains(f.modifiedRange.startLineNumber)&&u.push({range:f.modifiedRange,options:f.modifiedRange.isEmpty()?Xre:E5});return{org:h,mod:u}}),this._originalDecorations=Pt(this,a=>this._decorations.read(a).org),this._modifiedDecorations=Pt(this,a=>this._decorations.read(a).mod),this._previewEditor.setModel(this._previewTextModel),this._register(this._editorObs.setDecorations(this._originalDecorations)),this._register(this._previewEditorObs.setDecorations(this._modifiedDecorations)),this._register(yi(a=>{const d=this._previewEditorObs.contentWidth.read(a),c=this._text.read(a).split(`
- `).length-1,h=this._editor.getOption(67)*c;d<=0||this._previewEditor.layout({height:h,width:d})})),this._register(yi(a=>{this._position.read(a),this._editor.layoutOverlayWidget(this)})),this._register(yi(a=>{this._scrollChanged.read(a),this._position.read(a)&&this._editor.layoutOverlayWidget(this)}))}getId(){return this.id}getDomNode(){return this._nodes}getPosition(){const e=this._position.get();if(!e)return null;const t=this._editor.getLayoutInfo(),i=this._editor.getScrolledVisiblePosition(new ge(e.top,1));if(!i)return null;const n=i.top-1,o=this._editor.getOffsetForColumn(e.left.lineNumber,e.left.column);return{preference:{left:t.contentLeft+o+10,top:n}}}},Vte=jQ,jQ.id=0,jQ);yte=Vte=$ye([zD(5,ti)],yte);var YZt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},LA=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},XT,Tu;let Ga=(Tu=class extends be{static get(e){return e.getContribution(XT.ID)}constructor(e,t,i,n,o,r,l,a){super(),this.editor=e,this.instantiationService=t,this.contextKeyService=i,this.languageFeaturesService=n,this._commandService=o,this._configurationService=r,this._diffProviderFactoryService=l,this._modelService=a,this._isVisibleContext=XT.inlineEditVisibleContext.bindTo(this.contextKeyService),this._isCursorAtInlineEditContext=XT.cursorAtInlineEditContext.bindTo(this.contextKeyService),this._currentEdit=Pi(this,void 0),this._currentWidget=ma(this._currentEdit,p=>{const g=this._currentEdit.read(p);if(!g)return;const f=g.range.endLineNumber,b=g.range.endColumn,U=g.text.endsWith(`
- `)&&!(g.range.startLineNumber===g.range.endLineNumber&&g.range.startColumn===g.range.endColumn)?g.text.slice(0,-1):g.text,S=new tv(f,[new mY(b,U,!1)]),Z=g.range.startLineNumber===g.range.endLineNumber&&S.parts.length===1&&S.parts[0].lines.length===1,R=g.text==="";return!Z&&!R?void 0:this.instantiationService.createInstance(Zte,this.editor,{ghostText:Jh(S),minReservedLineCount:Jh(0),targetTextModel:Jh(this.editor.getModel()??void 0),range:Jh(g.range)})}),this._isAccepting=Pi(this,!1),this._enabled=is(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).enabled),this._fontFamily=is(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).fontFamily);const d=Vl("InlineEditController.modelContentChangedSignal",e.onDidChangeModelContent);this._register(yi(p=>{this._enabled.read(p)&&(d.read(p),!this._isAccepting.read(p)&&this.getInlineEdit(e,!0))}));const c=is(this,e.onDidChangeCursorPosition,()=>e.getPosition());this._register(yi(p=>{if(!this._enabled.read(p))return;const g=c.read(p);g&&this.checkCursorPosition(g)})),this._register(yi(p=>{const g=this._currentEdit.read(p);if(this._isCursorAtInlineEditContext.set(!1),!g){this._isVisibleContext.set(!1);return}this._isVisibleContext.set(!0);const f=e.getPosition();f&&this.checkCursorPosition(f)}));const h=Vl("InlineEditController.editorBlurSignal",e.onDidBlurEditorWidget);this._register(yi(async p=>{var g;this._enabled.read(p)&&(h.read(p),!(this._configurationService.getValue("editor.experimentalInlineEdit.keepOnBlur")||e.getOption(63).keepOnBlur)&&((g=this._currentRequestCts)==null||g.dispose(!0),this._currentRequestCts=void 0,await this.clear(!1)))}));const u=Vl("InlineEditController.editorFocusSignal",e.onDidFocusEditorText);this._register(yi(p=>{this._enabled.read(p)&&(u.read(p),this.getInlineEdit(e,!0))}));const m=this._register(aSe());this._register(yi(p=>{const g=this._fontFamily.read(p);m.setStyle(g===""||g==="default"?"":`
- .monaco-editor .inline-edit-decoration,
- .monaco-editor .inline-edit-decoration-preview,
- .monaco-editor .inline-edit {
- font-family: ${g};
- }`)})),this._register(new Ste(this.editor,this._currentWidget,this.instantiationService)),this._register(new Wte(this.editor,this._currentEdit,this.instantiationService,this._diffProviderFactoryService,this._modelService))}checkCursorPosition(e){if(!this._currentEdit){this._isCursorAtInlineEditContext.set(!1);return}const t=this._currentEdit.get();if(!t){this._isCursorAtInlineEditContext.set(!1);return}this._isCursorAtInlineEditContext.set(z.containsPosition(t.range,e))}validateInlineEdit(e,t){var i;if(t.text.includes(`
- `)&&t.range.startLineNumber!==t.range.endLineNumber&&t.range.startColumn!==t.range.endColumn){if(t.range.startColumn!==1)return!1;const o=t.range.endLineNumber,r=t.range.endColumn,l=((i=e.getModel())==null?void 0:i.getLineLength(o))??0;if(r!==l+1)return!1}return!0}async fetchInlineEdit(e,t){this._currentRequestCts&&this._currentRequestCts.dispose(!0);const i=e.getModel();if(!i)return;const n=i.getVersionId(),o=this.languageFeaturesService.inlineEditProvider.all(i);if(o.length===0)return;const r=o[0];this._currentRequestCts=new go;const l=this._currentRequestCts.token,a=t?iX.Automatic:iX.Invoke;if(t&&await _Zt(50,l),l.isCancellationRequested||i.isDisposed()||i.getVersionId()!==n)return;const c=await r.provideInlineEdit(i,{triggerKind:a},l);if(c&&!(l.isCancellationRequested||i.isDisposed()||i.getVersionId()!==n)&&this.validateInlineEdit(e,c))return c}async getInlineEdit(e,t){this._isCursorAtInlineEditContext.set(!1),await this.clear();const i=await this.fetchInlineEdit(e,t);i&&this._currentEdit.set(i,void 0)}async trigger(){await this.getInlineEdit(this.editor,!1)}async jumpBack(){this._jumpBackPosition&&(this.editor.setPosition(this._jumpBackPosition),this.editor.revealPositionInCenterIfOutsideViewport(this._jumpBackPosition))}async accept(){this._isAccepting.set(!0,void 0);const e=this._currentEdit.get();if(!e)return;let t=e.text;e.text.startsWith(`
- `)&&(t=e.text.substring(1)),this.editor.pushUndoStop(),this.editor.executeEdits("acceptCurrent",[mo.replace(z.lift(e.range),t)]),e.accepted&&await this._commandService.executeCommand(e.accepted.id,...e.accepted.arguments||[]).then(void 0,vo),this.freeEdit(e),po(i=>{this._currentEdit.set(void 0,i),this._isAccepting.set(!1,i)})}jumpToCurrent(){var i;this._jumpBackPosition=(i=this.editor.getSelection())==null?void 0:i.getStartPosition();const e=this._currentEdit.get();if(!e)return;const t=ge.lift({lineNumber:e.range.startLineNumber,column:e.range.startColumn});this.editor.setPosition(t),this.editor.revealPositionInCenterIfOutsideViewport(t)}async clear(e=!0){const t=this._currentEdit.get();t&&(t!=null&&t.rejected)&&e&&await this._commandService.executeCommand(t.rejected.id,...t.rejected.arguments||[]).then(void 0,vo),t&&this.freeEdit(t),this._currentEdit.set(void 0,void 0)}freeEdit(e){const t=this.editor.getModel();if(!t)return;const i=this.languageFeaturesService.inlineEditProvider.all(t);i.length!==0&&i[0].freeInlineEdit(e)}},XT=Tu,Tu.ID="editor.contrib.inlineEditController",Tu.inlineEditVisibleKey="inlineEditVisible",Tu.inlineEditVisibleContext=new yt(Tu.inlineEditVisibleKey,!1),Tu.cursorAtInlineEditKey="cursorAtInlineEdit",Tu.cursorAtInlineEditContext=new yt(Tu.cursorAtInlineEditKey,!1),Tu);Ga=XT=YZt([LA(1,ti),LA(2,fi),LA(3,xt),LA(4,ks),LA(5,Hi),LA(6,bk),LA(7,zs)],Ga);function _Zt(s,e){return new Promise(t=>{let i;const n=setTimeout(()=>{i&&i.dispose(),t()},s);e&&(i=e.onCancellationRequested(()=>{clearTimeout(n),i&&i.dispose(),t()}))})}let zZt=class extends Tt{constructor(){super({id:kZt,label:"Accept Inline Edit",alias:"Accept Inline Edit",precondition:Ge.and($.writable,Ga.inlineEditVisibleContext),kbOpts:[{weight:100+1,primary:2,kbExpr:Ge.and($.writable,Ga.inlineEditVisibleContext,Ga.cursorAtInlineEditContext)}],menuOpts:[{menuId:Gt.InlineEditToolbar,title:"Accept",group:"primary",order:1}]})}async run(e,t){const i=Ga.get(t);await(i==null?void 0:i.accept())}};class OZt extends Tt{constructor(){const e=Ge.and($.writable,Ge.not(Ga.inlineEditVisibleKey));super({id:"editor.action.inlineEdit.trigger",label:"Trigger Inline Edit",alias:"Trigger Inline Edit",precondition:e,kbOpts:{weight:100+1,primary:2646,kbExpr:e}})}async run(e,t){const i=Ga.get(t);i==null||i.trigger()}}class jZt extends Tt{constructor(){const e=Ge.and($.writable,Ga.inlineEditVisibleContext,Ge.not(Ga.cursorAtInlineEditKey));super({id:IZt,label:"Jump to Inline Edit",alias:"Jump to Inline Edit",precondition:e,kbOpts:{weight:100+1,primary:2646,kbExpr:e},menuOpts:[{menuId:Gt.InlineEditToolbar,title:"Jump To Edit",group:"primary",order:3,when:e}]})}async run(e,t){const i=Ga.get(t);i==null||i.jumpToCurrent()}}class PZt extends Tt{constructor(){const e=Ge.and($.writable,Ga.cursorAtInlineEditContext);super({id:EZt,label:"Jump Back from Inline Edit",alias:"Jump Back from Inline Edit",precondition:e,kbOpts:{weight:100+10,primary:2646,kbExpr:e},menuOpts:[{menuId:Gt.InlineEditToolbar,title:"Jump Back",group:"primary",order:3,when:e}]})}async run(e,t){const i=Ga.get(t);i==null||i.jumpBack()}}class HZt extends Tt{constructor(){const e=Ge.and($.writable,Ga.inlineEditVisibleContext);super({id:xZt,label:"Reject Inline Edit",alias:"Reject Inline Edit",precondition:e,kbOpts:{weight:100,primary:9,kbExpr:e},menuOpts:[{menuId:Gt.InlineEditToolbar,title:"Reject",group:"secondary",order:2}]})}async run(e,t){const i=Ga.get(t);await(i==null?void 0:i.clear())}}lt(zZt);lt(HZt);lt(jZt);lt(PZt);lt(OZt);Wn(Ga.ID,Ga,3);const KZt="editor.action.inlineEdits.accept",qZt="editor.action.inlineEdits.showPrevious",$Zt="editor.action.inlineEdits.showNext",rQ=new yt("inlineEditsVisible",!1,F("inlineEditsVisible","Whether an inline edit is visible")),eSt=new yt("inlineEditsIsPinned",!1,F("isPinned","Whether an inline edit is visible"));const fae=class fae extends be{constructor(e){super(),this._editor=e,this._editorObs=oc(this._editor),this._placeholderText=this._editorObs.getOption(88),this._state=Yc({owner:this,equalsFn:EX},t=>{const i=this._placeholderText.read(t);if(i&&this._editorObs.valueIsEmpty.read(t))return{placeholder:i}}),this._shouldViewBeAlive=tSt(this,t=>{var i;return((i=this._state.read(t))==null?void 0:i.placeholder)!==void 0}),this._view=nA((t,i)=>{if(!this._shouldViewBeAlive.read(t))return;const n=an("div.editorPlaceholder");i.add(yi(o=>{const r=this._state.read(o),l=(r==null?void 0:r.placeholder)!==void 0;n.root.style.display=l?"block":"none",n.root.innerText=(r==null?void 0:r.placeholder)??""})),i.add(yi(o=>{const r=this._editorObs.layoutInfo.read(o);n.root.style.left=`${r.contentLeft}px`,n.root.style.width=r.contentWidth-r.verticalScrollbarWidth+"px",n.root.style.top=`${this._editor.getTopForLineNumber(0)}px`})),i.add(yi(o=>{n.root.style.fontFamily=this._editorObs.getOption(49).read(o),n.root.style.fontSize=this._editorObs.getOption(52).read(o)+"px",n.root.style.lineHeight=this._editorObs.getOption(67).read(o)+"px"})),i.add(this._editorObs.createOverlayWidget({allowEditorOverflow:!1,minContentWidthInPx:Jh(0),position:Jh(null),domNode:n.root}))}),this._view.recomputeInitiallyAndOnChange(this._store)}};fae.ID="editor.contrib.placeholderText";let av=fae;function tSt(s,e){return ak(s,(t,i)=>i===!0?!0:e(t))}var iSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},nSt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class sSt{constructor(e,t,i){this.range=e,this.newLines=t,this.changes=i}}let Qte=class extends be{constructor(e,t,i,n){super(),this._editor=e,this._edit=t,this._userPrompt=i,this._instantiationService=n,this._editorObs=oc(this._editor),this._elements=an("div.inline-edits-widget",{style:{position:"absolute",overflow:"visible",top:"0px",left:"0px"}},[an("div@editorContainer",{style:{position:"absolute",top:"0px",left:"0px",width:"500px",height:"500px"}},[an("div.toolbar@toolbar",{style:{position:"absolute",top:"-25px",left:"0px"}}),an("div.promptEditor@promptEditor",{style:{position:"absolute",top:"-25px",left:"80px",width:"300px",height:"22px"}}),an("div.preview@editor",{style:{position:"absolute",top:"0px",left:"0px"}})]),vR("svg",{style:{overflow:"visible",pointerEvents:"none"}},[vR("defs",[vR("linearGradient",{id:"Gradient2",x1:"0",y1:"0",x2:"1",y2:"0"},[vR("stop",{offset:"0%",class:"gradient-stop"}),vR("stop",{offset:"100%",class:"gradient-stop"})])]),vR("path@path",{d:"",fill:"url(#Gradient2)"})])]),this._previewTextModel=this._register(this._instantiationService.createInstance(Km,"",Ya,Km.DEFAULT_CREATION_OPTIONS,null)),this._setText=Pt(r=>{const l=this._edit.read(r);l&&this._previewTextModel.setValue(l.newLines.join(`
- `))}).recomputeInitiallyAndOnChange(this._store),this._promptTextModel=this._register(this._instantiationService.createInstance(Km,"",Ya,Km.DEFAULT_CREATION_OPTIONS,null)),this._promptEditor=this._register(this._instantiationService.createInstance(sm,this._elements.promptEditor,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0,placeholder:"Describe the change you want...",fontFamily:cWe},{contributions:DS.getSomeEditorContributions([Ou.ID,av.ID,qy.ID]),isSimpleWidget:!0},this._editor)),this._previewEditor=this._register(this._instantiationService.createInstance(sm,this._elements.editor,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0},{contributions:[]},this._editor)),this._previewEditorObs=oc(this._previewEditor),this._decorations=Pt(this,r=>{var c;this._setText.read(r);const l=(c=this._edit.read(r))==null?void 0:c.changes;if(!l)return[];const a=[],d=[];if(l.length===1&&l[0].innerChanges[0].modifiedRange.equalsRange(this._previewTextModel.getFullModelRange()))return[];for(const h of l)if(h.original.isEmpty||a.push({range:h.original.toInclusiveRange(),options:IL}),h.modified.isEmpty||d.push({range:h.modified.toInclusiveRange(),options:I5}),h.modified.isEmpty||h.original.isEmpty)h.original.isEmpty||a.push({range:h.original.toInclusiveRange(),options:Yre}),h.modified.isEmpty||d.push({range:h.modified.toInclusiveRange(),options:Jre});else for(const u of h.innerChanges||[])h.original.contains(u.originalRange.startLineNumber)&&a.push({range:u.originalRange,options:u.originalRange.isEmpty()?_re:_y}),h.modified.contains(u.modifiedRange.startLineNumber)&&d.push({range:u.modifiedRange,options:u.modifiedRange.isEmpty()?Xre:E5});return d}),this._layout1=Pt(this,r=>{const l=this._editor.getModel(),a=this._edit.read(r);if(!a)return null;const d=a.range;let c=0;for(let m=d.startLineNumber;m<d.endLineNumberExclusive;m++){const p=l.getLineMaxColumn(m),g=this._editor.getOffsetForColumn(m,p);c=Math.max(c,g)}return{left:this._editor.getLayoutInfo().contentLeft+c}}),this._layout=Pt(this,r=>{const l=this._edit.read(r);if(!l)return null;const a=l.range,d=this._editorObs.scrollLeft.read(r),c=this._layout1.read(r).left+20-d,h=this._editor.getTopForLineNumber(a.startLineNumber)-this._editorObs.scrollTop.read(r),u=this._editor.getTopForLineNumber(a.endLineNumberExclusive)-this._editorObs.scrollTop.read(r),m=new EW(c,h),p=new EW(c,u),g=u-h,f=50,b=this._editor.getOption(67)*l.newLines.length,U=g-b,S=new EW(c+f,h+U/2),Z=new EW(c+f,u-U/2);return{topCode:m,bottomCode:p,codeHeight:g,topEdit:S,bottomEdit:Z,editHeight:b}});const o=Pt(this,r=>this._edit.read(r)!==void 0||this._userPrompt.read(r)!==void 0);this._register(eb(this._elements.root,{display:Pt(this,r=>o.read(r)?"block":"none")})),this._register(CW(this._editor.getDomNode(),this._elements.root)),this._register(oc(e).createOverlayWidget({domNode:this._elements.root,position:Jh(null),allowEditorOverflow:!1,minContentWidthInPx:Pt(r=>{var d;const l=(d=this._layout1.read(r))==null?void 0:d.left;if(l===void 0)return 0;const a=this._previewEditorObs.contentWidth.read(r);return l+a})})),this._previewEditor.setModel(this._previewTextModel),this._register(this._previewEditorObs.setDecorations(this._decorations)),this._register(yi(r=>{const l=this._layout.read(r);if(!l)return;const{topCode:a,bottomCode:d,topEdit:c,bottomEdit:h,editHeight:u}=l,m=10,p=0,g=40,f=new rSt().moveTo(a).lineTo(a.deltaX(m)).curveTo(a.deltaX(m+g),c.deltaX(-g-p),c.deltaX(-p)).lineTo(c).lineTo(h).lineTo(h.deltaX(-p)).curveTo(h.deltaX(-g-p),d.deltaX(m+g),d.deltaX(m)).lineTo(d).build();this._elements.path.setAttribute("d",f),this._elements.editorContainer.style.top=`${c.y}px`,this._elements.editorContainer.style.left=`${c.x}px`,this._elements.editorContainer.style.height=`${u}px`;const b=this._previewEditorObs.contentWidth.read(r);this._previewEditor.layout({height:u,width:b})})),this._promptEditor.setModel(this._promptTextModel),this._promptEditor.layout(),this._register(lSt(oSt(this._userPrompt,r=>r??"",r=>r),oc(this._promptEditor).value)),this._register(yi(r=>{const l=oc(this._promptEditor).isFocused.read(r);this._elements.root.classList.toggle("focused",l)}))}};Qte=iSt([nSt(3,ti)],Qte);function oSt(s,e,t){return ok(void 0,i=>e(s.read(i)),(i,n)=>s.set(t(i),n))}class EW{constructor(e,t){this.x=e,this.y=t}deltaX(e){return new EW(this.x+e,this.y)}}class rSt{constructor(){this._data=""}moveTo(e){return this._data+=`M ${e.x} ${e.y} `,this}lineTo(e){return this._data+=`L ${e.x} ${e.y} `,this}curveTo(e,t,i){return this._data+=`C ${e.x} ${e.y} ${t.x} ${t.y} ${i.x} ${i.y} `,this}build(){return this._data}}function lSt(s,e){const t=new De;return t.add(yi(i=>{const n=s.read(i);e.set(n,void 0)})),t.add(yi(i=>{const n=e.read(i);s.set(n,void 0)})),t}var aSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},MH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},YT,PQ;let Mte=(PQ=class extends be{static _createUniqueUri(){return ni.from({scheme:"inline-edits",path:new Date().toString()+String(YT._modelId++)})}constructor(e,t,i,n,o,r,l){super(),this.textModel=e,this._textModelVersionId=t,this._selection=i,this._debounceValue=n,this.languageFeaturesService=o,this._diffProviderFactoryService=r,this._modelService=l,this._forceUpdateExplicitlySignal=SM(this),this._selectedInlineCompletionId=Pi(this,void 0),this._isActive=Pi(this,!1),this._originalModel=ma(()=>this._modelService.createModel("",null,YT._createUniqueUri())).keepObserved(this._store),this._modifiedModel=ma(()=>this._modelService.createModel("",null,YT._createUniqueUri())).keepObserved(this._store),this._pinnedRange=new cSt(this.textModel,this._textModelVersionId),this.isPinned=this._pinnedRange.range.map(a=>!!a),this.userPrompt=Pi(this,void 0),this.inlineEdit=Pt(this,a=>{var d,c;return(c=(d=this._inlineEdit.read(a))==null?void 0:d.promiseResult.read(a))==null?void 0:c.data}),this._inlineEdit=Pt(this,a=>{const d=this.selectedInlineEdit.read(a);if(!d)return;const c=d.inlineCompletion.range;if(d.inlineCompletion.insertText.trim()==="")return;let h=d.inlineCompletion.insertText.split(/\r\n|\r|\n/);function u(f){var U;const b=((U=f[0].match(/^\s*/))==null?void 0:U[0])??"";return f.map(S=>S.replace(new RegExp("^"+b),""))}h=u(h);let p=this.textModel.getValueInRange(c).split(/\r\n|\r|\n/);p=u(p),this._originalModel.get().setValue(p.join(`
- `)),this._modifiedModel.get().setValue(h.join(`
- `));const g=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:"advanced"});return u9.fromFn(async()=>{const f=await g.computeDiff(this._originalModel.get(),this._modifiedModel.get(),{computeMoves:!1,ignoreTrimWhitespace:!1,maxComputationTimeMs:1e3},Gi.None);if(!f.identical)return new sSt(Ii.fromRangeInclusive(c),u(h),f.changes)})}),this._fetchStore=this._register(new De),this._inlineEditsFetchResult=gL(this,void 0),this._inlineEdits=Yc({owner:this,equalsFn:EX},a=>{var d;return((d=this._inlineEditsFetchResult.read(a))==null?void 0:d.completions.map(c=>new dSt(c)))??[]}),this._fetchInlineEditsPromise=oRe({owner:this,createEmptyChangeSummary:()=>({inlineCompletionTriggerKind:tp.Automatic}),handleChange:(a,d)=>(a.didChange(this._forceUpdateExplicitlySignal)&&(d.inlineCompletionTriggerKind=tp.Explicit),!0)},async(a,d)=>{this._fetchStore.clear(),this._forceUpdateExplicitlySignal.read(a),this._textModelVersionId.read(a);function c(g,f){return f(g)}const h=this._pinnedRange.range.read(a)??c(this._selection.read(a),g=>g.isEmpty()?void 0:g);if(!h){this._inlineEditsFetchResult.set(void 0,void 0),this.userPrompt.set(void 0,void 0);return}const u={triggerKind:d.inlineCompletionTriggerKind,selectedSuggestionInfo:void 0,userPrompt:this.userPrompt.read(a)},m=t7(this._fetchStore);await Pf(200,m);const p=await vye(this.languageFeaturesService.inlineCompletionsProvider,h,this.textModel,u,m);m.isCancellationRequested||this._inlineEditsFetchResult.set(p,void 0)}),this._filteredInlineEditItems=Yc({owner:this,equalsFn:IX()},a=>this._inlineEdits.read(a)),this.selectedInlineCompletionIndex=Pt(this,a=>{const d=this._selectedInlineCompletionId.read(a),c=this._filteredInlineEditItems.read(a),h=this._selectedInlineCompletionId===void 0?-1:c.findIndex(u=>u.semanticId===d);return h===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):h}),this.selectedInlineEdit=Pt(this,a=>{const d=this._filteredInlineEditItems.read(a),c=this.selectedInlineCompletionIndex.read(a);return d[c]}),this._register(NM(this._fetchInlineEditsPromise))}async triggerExplicitly(e){yN(e,t=>{this._isActive.set(!0,t),this._forceUpdateExplicitlySignal.trigger(t)}),await this._fetchInlineEditsPromise.get()}stop(e){yN(e,t=>{this.userPrompt.set(void 0,t),this._isActive.set(!1,t),this._inlineEditsFetchResult.set(void 0,t),this._pinnedRange.setRange(void 0,t)})}async _deltaSelectedInlineCompletionIndex(e){await this.triggerExplicitly();const t=this._filteredInlineEditItems.get()||[];if(t.length>0){const i=(this.selectedInlineCompletionIndex.get()+e+t.length)%t.length;this._selectedInlineCompletionId.set(t[i].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)}async next(){await this._deltaSelectedInlineCompletionIndex(1)}async previous(){await this._deltaSelectedInlineCompletionIndex(-1)}async accept(e){if(e.getModel()!==this.textModel)throw new _n;const t=this.selectedInlineEdit.get();t&&(e.pushUndoStop(),e.executeEdits("inlineSuggestion.accept",[t.inlineCompletion.toSingleTextEdit().toSingleEditOperation()]),this.stop())}},YT=PQ,PQ._modelId=0,PQ);Mte=YT=aSt([MH(4,xt),MH(5,bk),MH(6,zs)],Mte);class dSt{constructor(e){this.inlineCompletion=e,this.semanticId=this.inlineCompletion.hash()}}class cSt extends be{constructor(e,t){super(),this._textModel=e,this._versionId=t,this._decorations=Pi(this,[]),this.range=Pt(this,i=>{this._versionId.read(i);const n=this._decorations.read(i)[0];return n?this._textModel.getDecorationRange(n)??null:null}),this._register(ei(()=>{this._textModel.deltaDecorations(this._decorations.get(),[])}))}setRange(e,t){this._decorations.set(this._textModel.deltaDecorations(this._decorations.get(),e?[{range:e,options:{description:"trackedRange"}}]:[]),t)}}var hSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Lw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},wte,HQ;let sb=(HQ=class extends be{static get(e){return e.getContribution(wte.ID)}constructor(e,t,i,n,o,r){super(),this.editor=e,this._instantiationService=t,this._contextKeyService=i,this._debounceService=n,this._languageFeaturesService=o,this._configurationService=r,this._enabled=vht("editor.inlineEdits.enabled",!1,this._configurationService),this._editorObs=oc(this.editor),this._selection=Pt(this,l=>this._editorObs.cursorSelection.read(l)??new _t(1,1,1,1)),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineEditsDebounce",{min:50,max:50}),this.model=ma(this,l=>{if(!this._enabled.read(l)||this._editorObs.isReadonly.read(l))return;const a=this._editorObs.model.read(l);return a?this._instantiationService.createInstance(tc(Mte,l),a,this._editorObs.versionId,this._selection,this._debounceValue):void 0}),this._hadInlineEdit=ak(this,(l,a)=>{var d;return a||((d=this.model.read(l))==null?void 0:d.inlineEdit.read(l))!==void 0}),this._widget=ma(this,l=>{if(this._hadInlineEdit.read(l))return this._instantiationService.createInstance(tc(Qte,l),this.editor,this.model.map((a,d)=>a==null?void 0:a.inlineEdit.read(d)),uSt(a=>{var d;return((d=this.model.read(a))==null?void 0:d.userPrompt)??Pi("empty","")}))}),this._register(Cm(rQ,this._contextKeyService,l=>{var a;return!!((a=this.model.read(l))!=null&&a.inlineEdit.read(l))})),this._register(Cm(eSt,this._contextKeyService,l=>{var a;return!!((a=this.model.read(l))!=null&&a.isPinned.read(l))})),this.model.recomputeInitiallyAndOnChange(this._store),this._widget.recomputeInitiallyAndOnChange(this._store)}},wte=HQ,HQ.ID="editor.contrib.inlineEditsController",HQ);sb=wte=hSt([Lw(1,ti),Lw(2,fi),Lw(3,dh),Lw(4,xt),Lw(5,Hi)],sb);function uSt(s){return ok(void 0,e=>s(e).read(e),(e,t)=>{s(void 0).set(e,t)})}function Mk(s){return{label:s.value,alias:s.original}}const Gz=class Gz extends Tt{constructor(){super({id:Gz.ID,...Mk(Ni("action.inlineEdits.showNext","Show Next Inline Edit")),precondition:Ge.and($.writable,rQ),kbOpts:{weight:100,primary:606}})}async run(e,t){var n;const i=sb.get(t);(n=i==null?void 0:i.model.get())==null||n.next()}};Gz.ID=$Zt;let Tte=Gz;const Jz=class Jz extends Tt{constructor(){super({id:Jz.ID,...Mk(Ni("action.inlineEdits.showPrevious","Show Previous Inline Edit")),precondition:Ge.and($.writable,rQ),kbOpts:{weight:100,primary:604}})}async run(e,t){var n;const i=sb.get(t);(n=i==null?void 0:i.model.get())==null||n.previous()}};Jz.ID=qZt;let Cte=Jz;class mSt extends Tt{constructor(){super({id:"editor.action.inlineEdits.trigger",...Mk(Ni("action.inlineEdits.trigger","Trigger Inline Edit")),precondition:$.writable})}async run(e,t){const i=sb.get(t);await sRe(async n=>{var o;await((o=i==null?void 0:i.model.get())==null?void 0:o.triggerExplicitly(n))})}}class pSt extends Tt{constructor(){super({id:KZt,...Mk(Ni("action.inlineEdits.accept","Accept Inline Edit")),precondition:rQ,menuOpts:{menuId:Gt.InlineEditsActions,title:F("inlineEditsActions","Accept Inline Edit"),group:"primary",order:1,icon:ct.check},kbOpts:{primary:2058,weight:2e4,kbExpr:rQ}})}async run(e,t){var n;t instanceof sm&&(t=t.getParentEditor());const i=sb.get(t);i&&((n=i.model.get())==null||n.accept(i.editor),i.editor.focus())}}const Xz=class Xz extends Tt{constructor(){super({id:Xz.ID,...Mk(Ni("action.inlineEdits.hide","Hide Inline Edit")),precondition:rQ,kbOpts:{weight:100,primary:9}})}async run(e,t){const i=sb.get(t);po(n=>{var o;(o=i==null?void 0:i.model.get())==null||o.stop(n)})}};Xz.ID="editor.action.inlineEdits.hide";let Bte=Xz;Wn(sb.ID,sb,3);lt(mSt);lt(Tte);lt(Cte);lt(pSt);lt(Bte);const JN={Visible:new yt("parameterHintsVisible",!1),MultipleSignatures:new yt("parameterHintsMultipleSignatures",!1)};async function eQe(s,e,t,i,n){const o=s.ordered(e);for(const r of o)try{const l=await r.provideSignatureHelp(e,t,n,i);if(l)return l}catch(l){vo(l)}}Sn.registerCommand("_executeSignatureHelpProvider",async(s,...e)=>{const[t,i,n]=e;vn(ni.isUri(t)),vn(ge.isIPosition(i)),vn(typeof n=="string"||!n);const o=s.get(xt),r=await s.get(Td).createModelReference(t);try{const l=await eQe(o.signatureHelpProvider,r.object.textEditorModel,ge.lift(i),{triggerKind:vg.Invoke,isRetrigger:!1,triggerCharacter:n},Gi.None);return l?(setTimeout(()=>l.dispose(),0),l.value):void 0}finally{r.dispose()}});var sU;(function(s){s.Default={type:0};class e{constructor(n,o){this.request=n,this.previouslyActiveHints=o,this.type=2}}s.Pending=e;class t{constructor(n){this.hints=n,this.type=1}}s.Active=t})(sU||(sU={}));const Yz=class Yz extends be{constructor(e,t,i=Yz.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new fe),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=sU.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new Lr),this.triggerChars=new fX,this.retriggerChars=new fX,this.triggerId=0,this.editor=e,this.providers=t,this.throttledDelayer=new Oh(i),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(n=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(n=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(n=>this.onCursorChange(n))),this._register(this.editor.onDidChangeModelContent(n=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(n=>this.onDidType(n))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(e){this._state.type===2&&this._state.request.cancel(),this._state=e}cancel(e=!1){this.state=sU.Default,this.throttledDelayer.cancel(),e||this._onChangedHints.fire(void 0)}trigger(e,t){const i=this.editor.getModel();if(!i||!this.providers.has(i))return;const n=++this.triggerId;this._pendingTriggers.push(e),this.throttledDelayer.trigger(()=>this.doTrigger(n),t).catch(wi)}next(){if(this.state.type!==1)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t%e===e-1,n=this.editor.getOption(86).cycle;if((e<2||i)&&!n){this.cancel();return}this.updateActiveSignature(i&&n?0:t+1)}previous(){if(this.state.type!==1)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t===0,n=this.editor.getOption(86).cycle;if((e<2||i)&&!n){this.cancel();return}this.updateActiveSignature(i&&n?e-1:t-1)}updateActiveSignature(e){this.state.type===1&&(this.state=new sU.Active({...this.state.hints,activeSignature:e}),this._onChangedHints.fire(this.state.hints))}async doTrigger(e){const t=this.state.type===1||this.state.type===2,i=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const n=this._pendingTriggers.reduce(gSt);this._pendingTriggers=[];const o={triggerKind:n.triggerKind,triggerCharacter:n.triggerCharacter,isRetrigger:t,activeSignatureHelp:i};if(!this.editor.hasModel())return!1;const r=this.editor.getModel(),l=this.editor.getPosition();this.state=new sU.Pending(Tr(a=>eQe(this.providers,r,l,o,a)),i);try{const a=await this.state.request;return e!==this.triggerId?(a==null||a.dispose(),!1):!a||!a.value.signatures||a.value.signatures.length===0?(a==null||a.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new sU.Active(a.value),this._lastSignatureHelpResult.value=a,this._onChangedHints.fire(this.state.hints),!0)}catch(a){return e===this.triggerId&&(this.state=sU.Default),wi(a),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const e=this.editor.getModel();if(e)for(const t of this.providers.ordered(e)){for(const i of t.signatureHelpTriggerCharacters||[])if(i.length){const n=i.charCodeAt(0);this.triggerChars.add(n),this.retriggerChars.add(n)}for(const i of t.signatureHelpRetriggerCharacters||[])i.length&&this.retriggerChars.add(i.charCodeAt(0))}}onDidType(e){if(!this.triggerOnType)return;const t=e.length-1,i=e.charCodeAt(t);(this.triggerChars.has(i)||this.isTriggered&&this.retriggerChars.has(i))&&this.trigger({triggerKind:vg.TriggerCharacter,triggerCharacter:e.charAt(t)})}onCursorChange(e){e.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:vg.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:vg.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(86).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}};Yz.DEFAULT_DELAY=120;let Lte=Yz;function gSt(s,e){switch(e.triggerKind){case vg.Invoke:return e;case vg.ContentChange:return s;case vg.TriggerCharacter:default:return e}}var fSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},PI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},vte;const Nc=gt,bSt=Os("parameter-hints-next",ct.chevronDown,F("parameterHintsNextIcon","Icon for show next parameter hint.")),USt=Os("parameter-hints-previous",ct.chevronUp,F("parameterHintsPreviousIcon","Icon for show previous parameter hint."));var KQ;let kte=(KQ=class extends be{constructor(e,t,i,n,o,r){super(),this.editor=e,this.model=t,this.telemetryService=r,this.renderDisposeables=this._register(new De),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new $f({editor:e},o,n)),this.keyVisible=JN.Visible.bindTo(i),this.keyMultipleSignatures=JN.MultipleSignatures.bindTo(i)}createParameterHintDOMNodes(){const e=Nc(".editor-widget.parameter-hints-widget"),t=nt(e,Nc(".phwrapper"));t.tabIndex=-1;const i=nt(t,Nc(".controls")),n=nt(i,Nc(".button"+ui.asCSSSelector(USt))),o=nt(i,Nc(".overloads")),r=nt(i,Nc(".button"+ui.asCSSSelector(bSt)));this._register(Te(n,"click",u=>{Un.stop(u),this.previous()})),this._register(Te(r,"click",u=>{Un.stop(u),this.next()}));const l=Nc(".body"),a=new ek(l,{alwaysConsumeMouseWheel:!0});this._register(a),t.appendChild(a.getDomNode());const d=nt(l,Nc(".signature")),c=nt(l,Nc(".docs"));e.style.userSelect="text",this.domNodes={element:e,signature:d,overloads:o,docs:c,scrollbar:a},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(u=>{this.visible&&this.editor.layoutContentWidget(this)}));const h=()=>{if(!this.domNodes)return;const u=this.editor.getOption(50),m=this.domNodes.element;m.style.fontSize=`${u.fontSize}px`,m.style.lineHeight=`${u.lineHeight/u.fontSize}`,m.style.setProperty("--vscode-parameterHintsWidget-editorFontFamily",u.fontFamily),m.style.setProperty("--vscode-parameterHintsWidget-editorFontFamilyDefault",Xa.fontFamily)};h(),this._register(Ut.chain(this.editor.onDidChangeConfiguration.bind(this.editor),u=>u.filter(m=>m.hasChanged(50)))(h)),this._register(this.editor.onDidLayoutChange(u=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var e;(e=this.domNodes)==null||e.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var e;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(e=this.domNodes)==null||e.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(e){if(this.renderDisposeables.clear(),!this.domNodes)return;const t=e.signatures.length>1;this.domNodes.element.classList.toggle("multiple",t),this.keyMultipleSignatures.set(t),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const i=e.signatures[e.activeSignature];if(!i)return;const n=nt(this.domNodes.signature,Nc(".code")),o=i.parameters.length>0,r=i.activeParameter??e.activeParameter;if(o)this.renderParameters(n,i,r);else{const d=nt(n,Nc("span"));d.textContent=i.label}const l=i.parameters[r];if(l!=null&&l.documentation){const d=Nc("span.documentation");if(typeof l.documentation=="string")d.textContent=l.documentation;else{const c=this.renderMarkdownDocs(l.documentation);d.appendChild(c.element)}nt(this.domNodes.docs,Nc("p",{},d))}if(i.documentation!==void 0)if(typeof i.documentation=="string")nt(this.domNodes.docs,Nc("p",{},i.documentation));else{const d=this.renderMarkdownDocs(i.documentation);nt(this.domNodes.docs,d.element)}const a=this.hasDocs(i,l);if(this.domNodes.signature.classList.toggle("has-docs",a),this.domNodes.docs.classList.toggle("empty",!a),this.domNodes.overloads.textContent=String(e.activeSignature+1).padStart(e.signatures.length.toString().length,"0")+"/"+e.signatures.length,l){let d="";const c=i.parameters[r];Array.isArray(c.label)?d=i.label.substring(c.label[0],c.label[1]):d=c.label,c.documentation&&(d+=typeof c.documentation=="string"?`, ${c.documentation}`:`, ${c.documentation.value}`),i.documentation&&(d+=typeof i.documentation=="string"?`, ${i.documentation}`:`, ${i.documentation.value}`),this.announcedLabel!==d&&(ja(F("hint","{0}, hint",d)),this.announcedLabel=d)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(e){const t=new jr,i=this.renderDisposeables.add(this.markdownRenderer.render(e,{asyncRenderCallback:()=>{var o;(o=this.domNodes)==null||o.scrollbar.scanDomNode()}}));i.element.classList.add("markdown-docs");const n=t.elapsed();return n>300&&this.telemetryService.publicLog2("parameterHints.parseMarkdown",{renderDuration:n}),i}hasDocs(e,t){return!!(t&&typeof t.documentation=="string"&&YU(t.documentation).length>0||t&&typeof t.documentation=="object"&&YU(t.documentation).value.length>0||e.documentation&&typeof e.documentation=="string"&&YU(e.documentation).length>0||e.documentation&&typeof e.documentation=="object"&&YU(e.documentation.value).length>0)}renderParameters(e,t,i){const[n,o]=this.getParameterLabelOffsets(t,i),r=document.createElement("span");r.textContent=t.label.substring(0,n);const l=document.createElement("span");l.textContent=t.label.substring(n,o),l.className="parameter active";const a=document.createElement("span");a.textContent=t.label.substring(o),nt(e,r,l,a)}getParameterLabelOffsets(e,t){const i=e.parameters[t];if(i){if(Array.isArray(i.label))return i.label;if(i.label.length){const n=new RegExp(`(\\W|^)${nh(i.label)}(?=\\W|$)`,"g");n.test(e.label);const o=n.lastIndex-i.label.length;return o>=0?[o,n.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return vte.ID}updateMaxHeight(){if(!this.domNodes)return;const t=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=t;const i=this.domNodes.element.getElementsByClassName("phwrapper");i.length&&(i[0].style.maxHeight=t)}},vte=KQ,KQ.ID="editor.widget.parameterHintsWidget",KQ);kte=vte=fSt([PI(2,fi),PI(3,Bd),PI(4,ao),PI(5,$l)],kte);te("editorHoverWidget.highlightForeground",SW,F("editorHoverWidgetHighlightForeground","Foreground color of the active item in the parameter hint."));var FSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},H0e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},xte,qQ;let lQ=(qQ=class extends be{static get(e){return e.getContribution(xte.ID)}constructor(e,t,i){super(),this.editor=e,this.model=this._register(new Lte(e,i.signatureHelpProvider)),this._register(this.model.onChangedHints(n=>{var o;n?(this.widget.value.show(),this.widget.value.render(n)):(o=this.widget.rawValue)==null||o.hide()})),this.widget=new qu(()=>this._register(t.createInstance(kte,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var e;(e=this.widget.rawValue)==null||e.previous()}next(){var e;(e=this.widget.rawValue)==null||e.next()}trigger(e){this.model.trigger(e,0)}},xte=qQ,qQ.ID="editor.controller.parameterHints",qQ);lQ=xte=FSt([H0e(1,ti),H0e(2,xt)],lQ);class ASt extends Tt{constructor(){super({id:"editor.action.triggerParameterHints",label:F("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:$.hasSignatureHelpProvider,kbOpts:{kbExpr:$.editorTextFocus,primary:3082,weight:100}})}run(e,t){const i=lQ.get(t);i==null||i.trigger({triggerKind:vg.Invoke})}}Wn(lQ.ID,lQ,2);lt(ASt);const Ele=100+75,Dle=Nr.bindToContribution(lQ.get);Vt(new Dle({id:"closeParameterHints",precondition:JN.Visible,handler:s=>s.cancel(),kbOpts:{weight:Ele,kbExpr:$.focus,primary:9,secondary:[1033]}}));Vt(new Dle({id:"showPrevParameterHint",precondition:Ge.and(JN.Visible,JN.MultipleSignatures),handler:s=>s.previous(),kbOpts:{weight:Ele,kbExpr:$.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}}));Vt(new Dle({id:"showNextParameterHint",precondition:Ge.and(JN.Visible,JN.MultipleSignatures),handler:s=>s.next(),kbOpts:{weight:Ele,kbExpr:$.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));var ZSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},SSt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class NSt{constructor(e){this.instantiationService=e}init(...e){}}function RSt(s,e){return class extends e{constructor(){super(...arguments),this._autorun=void 0}init(...i){this._autorun=Wd((n,o)=>{const r=tc(s(),n);o.add(this.instantiationService.createInstance(r,...i))})}dispose(){var i;(i=this._autorun)==null||i.dispose()}}}function VSt(s){return B9()?RSt(s,Ite):s()}let Ite=class extends NSt{constructor(e,t){super(t),this.init(e)}};Ite=ZSt([SSt(1,ti)],Ite);Wn(av.ID,VSt(()=>av),0);te("editor.placeholder.foreground",Rit,F("placeholderForeground","Foreground color of the placeholder text in the editor."));var WSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},HI=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const kM=new yt("renameInputVisible",!1,F("renameInputVisible","Whether the rename input widget is visible"));new yt("renameInputFocused",!1,F("renameInputFocused","Whether the rename input widget is focused"));let Ete=class{constructor(e,t,i,n,o,r){this._editor=e,this._acceptKeybindings=t,this._themeService=i,this._keybindingService=n,this._logService=r,this.allowEditorOverflow=!0,this._disposables=new De,this._visibleContextKey=kM.bindTo(o),this._isEditingRenameCandidate=!1,this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,this._candidates=new Set,this._beforeFirstInputFieldEditSW=new jr,this._inputWithButton=new ySt,this._disposables.add(this._inputWithButton),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(l=>{l.hasChanged(50)&&this._updateFont()})),this._disposables.add(i.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._domNode.appendChild(this._inputWithButton.domNode),this._renameCandidateListView=this._disposables.add(new Gle(this._domNode,{fontInfo:this._editor.getOption(50),onFocusChange:e=>{this._inputWithButton.input.value=e,this._isEditingRenameCandidate=!1},onSelectionChange:()=>{this._isEditingRenameCandidate=!1,this.acceptInput(!1)}})),this._disposables.add(this._inputWithButton.onDidInputChange(()=>{var e,t,i;((e=this._renameCandidateListView)==null?void 0:e.focusedCandidate)!==void 0&&(this._isEditingRenameCandidate=!0),this._timeBeforeFirstInputFieldEdit??(this._timeBeforeFirstInputFieldEdit=this._beforeFirstInputFieldEditSW.elapsed()),((t=this._renameCandidateProvidersCts)==null?void 0:t.token.isCancellationRequested)===!1&&this._renameCandidateProvidersCts.cancel(),(i=this._renameCandidateListView)==null||i.clearFocus()})),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(e){if(!this._domNode)return;const t=e.getColor(bM),i=e.getColor(bNe);this._domNode.style.backgroundColor=String(e.getColor(Pc)??""),this._domNode.style.boxShadow=t?` 0 0 8px 2px ${t}`:"",this._domNode.style.border=i?`1px solid ${i}`:"",this._domNode.style.color=String(e.getColor(ANe)??"");const n=e.getColor(ZNe);this._inputWithButton.domNode.style.backgroundColor=String(e.getColor(K8)??""),this._inputWithButton.input.style.backgroundColor=String(e.getColor(K8)??""),this._inputWithButton.domNode.style.borderWidth=n?"1px":"0px",this._inputWithButton.domNode.style.borderStyle=n?"solid":"none",this._inputWithButton.domNode.style.borderColor=(n==null?void 0:n.toString())??"none"}_updateFont(){if(this._domNode===void 0)return;vn(this._label!==void 0,"RenameWidget#_updateFont: _label must not be undefined given _domNode is defined"),this._editor.applyFontInfo(this._inputWithButton.input);const e=this._editor.getOption(50);this._label.style.fontSize=`${this._computeLabelFontSize(e.fontSize)}px`}_computeLabelFontSize(e){return e*.8}getPosition(){if(!this._visible||!this._editor.hasModel()||!this._editor.getDomNode())return null;const e=Hf(this.getDomNode().ownerDocument.body),t=Lo(this._editor.getDomNode()),i=this._getTopForPosition();this._nPxAvailableAbove=i+t.top,this._nPxAvailableBelow=e.height-this._nPxAvailableAbove;const n=this._editor.getOption(67),{totalHeight:o}=dv.getLayoutInfo({lineHeight:n}),r=this._nPxAvailableBelow>o*6?[2,1]:[1,2];return{position:this._position,preference:r}}beforeRender(){var i,n;const[e,t]=this._acceptKeybindings;return this._label.innerText=F({key:"label",comment:['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"']},"{0} to Rename, {1} to Preview",(i=this._keybindingService.lookupKeybinding(e))==null?void 0:i.getLabel(),(n=this._keybindingService.lookupKeybinding(t))==null?void 0:n.getLabel()),this._domNode.style.minWidth="200px",null}afterRender(e){if(e===null){this.cancelInput(!0,"afterRender (because position is null)");return}if(!this._editor.hasModel()||!this._editor.getDomNode())return;vn(this._renameCandidateListView),vn(this._nPxAvailableAbove!==void 0),vn(this._nPxAvailableBelow!==void 0);const t=Vf(this._inputWithButton.domNode),i=Vf(this._label);let n;e===2?n=this._nPxAvailableBelow:n=this._nPxAvailableAbove,this._renameCandidateListView.layout({height:n-i-t,width:qd(this._inputWithButton.domNode)})}acceptInput(e){var t;this._trace("invoking acceptInput"),(t=this._currentAcceptInput)==null||t.call(this,e)}cancelInput(e,t){var i;(i=this._currentCancelInput)==null||i.call(this,e)}focusNextRenameSuggestion(){var e;(e=this._renameCandidateListView)!=null&&e.focusNext()||(this._inputWithButton.input.value=this._currentName)}focusPreviousRenameSuggestion(){var e;(e=this._renameCandidateListView)!=null&&e.focusPrevious()||(this._inputWithButton.input.value=this._currentName)}getInput(e,t,i,n,o){const{start:r,end:l}=this._getSelection(e,t);this._renameCts=o;const a=new De;this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,n===void 0?this._inputWithButton.button.style.display="none":(this._inputWithButton.button.style.display="flex",this._requestRenameCandidatesOnce=n,this._requestRenameCandidates(t,!1),a.add(Te(this._inputWithButton.button,"click",()=>this._requestRenameCandidates(t,!0))),a.add(Te(this._inputWithButton.button,ut.KEY_DOWN,c=>{const h=new Ts(c);(h.equals(3)||h.equals(10))&&(h.stopPropagation(),h.preventDefault(),this._requestRenameCandidates(t,!0))}))),this._isEditingRenameCandidate=!1,this._domNode.classList.toggle("preview",i),this._position=new ge(e.startLineNumber,e.startColumn),this._currentName=t,this._inputWithButton.input.value=t,this._inputWithButton.input.setAttribute("selectionStart",r.toString()),this._inputWithButton.input.setAttribute("selectionEnd",l.toString()),this._inputWithButton.input.size=Math.max((e.endColumn-e.startColumn)*1.1,20),this._beforeFirstInputFieldEditSW.reset(),a.add(ei(()=>{this._renameCts=void 0,o.dispose(!0)})),a.add(ei(()=>{this._renameCandidateProvidersCts!==void 0&&(this._renameCandidateProvidersCts.dispose(!0),this._renameCandidateProvidersCts=void 0)})),a.add(ei(()=>this._candidates.clear()));const d=new hM;return d.p.finally(()=>{a.dispose(),this._hide()}),this._currentCancelInput=c=>{var h;return this._trace("invoking _currentCancelInput"),this._currentAcceptInput=void 0,this._currentCancelInput=void 0,(h=this._renameCandidateListView)==null||h.clearCandidates(),d.complete(c),!0},this._currentAcceptInput=c=>{this._trace("invoking _currentAcceptInput"),vn(this._renameCandidateListView!==void 0);const h=this._renameCandidateListView.nCandidates;let u,m;const p=this._renameCandidateListView.focusedCandidate;if(p!==void 0?(this._trace("using new name from renameSuggestion"),u=p,m={k:"renameSuggestion"}):(this._trace("using new name from inputField"),u=this._inputWithButton.input.value,m=this._isEditingRenameCandidate?{k:"userEditedRenameSuggestion"}:{k:"inputField"}),u===t||u.trim().length===0){this.cancelInput(!0,"_currentAcceptInput (because newName === value || newName.trim().length === 0)");return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,this._renameCandidateListView.clearCandidates(),d.complete({newName:u,wantsPreview:i&&c,stats:{source:m,nRenameSuggestions:h,timeBeforeFirstInputFieldEdit:this._timeBeforeFirstInputFieldEdit,nRenameSuggestionsInvocations:this._nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:this._hadAutomaticRenameSuggestionsInvocation}})},a.add(o.token.onCancellationRequested(()=>this.cancelInput(!0,"cts.token.onCancellationRequested"))),a.add(this._editor.onDidBlurEditorWidget(()=>{var c;return this.cancelInput(!((c=this._domNode)!=null&&c.ownerDocument.hasFocus()),"editor.onDidBlurEditorWidget")})),this._show(),d.p}_requestRenameCandidates(e,t){if(this._requestRenameCandidatesOnce!==void 0&&(this._renameCandidateProvidersCts!==void 0&&this._renameCandidateProvidersCts.dispose(!0),vn(this._renameCts),this._inputWithButton.buttonState!=="stop")){this._renameCandidateProvidersCts=new go;const i=t?_B.Invoke:_B.Automatic,n=this._requestRenameCandidatesOnce(i,this._renameCandidateProvidersCts.token);if(n.length===0){this._inputWithButton.setSparkleButton();return}t||(this._hadAutomaticRenameSuggestionsInvocation=!0),this._nRenameSuggestionsInvocations+=1,this._inputWithButton.setStopButton(),this._updateRenameCandidates(n,e,this._renameCts.token)}}_getSelection(e,t){vn(this._editor.hasModel());const i=this._editor.getSelection();let n=0,o=t.length;return!z.isEmpty(i)&&!z.spansMultipleLines(i)&&z.containsRange(e,i)&&(n=Math.max(0,i.startColumn-e.startColumn),o=Math.min(e.endColumn,i.endColumn)-e.startColumn),{start:n,end:o}}_show(){this._trace("invoking _show"),this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._inputWithButton.input.focus(),this._inputWithButton.input.setSelectionRange(parseInt(this._inputWithButton.input.getAttribute("selectionStart")),parseInt(this._inputWithButton.input.getAttribute("selectionEnd")))},100)}async _updateRenameCandidates(e,t,i){const n=(...d)=>this._trace("_updateRenameCandidates",...d);n("start");const o=await Pv(Promise.allSettled(e),i);if(this._inputWithButton.setSparkleButton(),o===void 0){n("returning early - received updateRenameCandidates results - undefined");return}const r=o.flatMap(d=>d.status==="fulfilled"&&Lg(d.value)?d.value:[]);n(`received updateRenameCandidates results - total (unfiltered) ${r.length} candidates.`);const l=_f(r,d=>d.newSymbolName);n(`distinct candidates - ${l.length} candidates.`);const a=l.filter(({newSymbolName:d})=>d.trim().length>0&&d!==this._inputWithButton.input.value&&d!==t&&!this._candidates.has(d));if(n(`valid distinct candidates - ${r.length} candidates.`),a.forEach(d=>this._candidates.add(d.newSymbolName)),a.length<1){n("returning early - no valid distinct candidates");return}n("setting candidates"),this._renameCandidateListView.setCandidates(a),n("asking editor to re-layout"),this._editor.layoutContentWidget(this)}_hide(){this._trace("invoked _hide"),this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}_getTopForPosition(){const e=this._editor.getVisibleRanges();let t;return e.length>0?t=e[0].startLineNumber:(this._logService.warn("RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty"),t=Math.max(1,this._position.lineNumber-5)),this._editor.getTopForLineNumber(this._position.lineNumber)-this._editor.getTopForLineNumber(t)}_trace(...e){this._logService.trace("RenameWidget",...e)}};Ete=WSt([HI(2,Rr),HI(3,qn),HI(4,fi),HI(5,Cl)],Ete);class Gle{constructor(e,t){this._disposables=new De,this._availableHeight=0,this._minimumWidth=0,this._lineHeight=t.fontInfo.lineHeight,this._typicalHalfwidthCharacterWidth=t.fontInfo.typicalHalfwidthCharacterWidth,this._listContainer=document.createElement("div"),this._listContainer.className="rename-box rename-candidate-list-container",e.appendChild(this._listContainer),this._listWidget=Gle._createListWidget(this._listContainer,this._candidateViewHeight,t.fontInfo),this._listWidget.onDidChangeFocus(i=>{i.elements.length===1&&t.onFocusChange(i.elements[0].newSymbolName)},this._disposables),this._listWidget.onDidChangeSelection(i=>{i.elements.length===1&&t.onSelectionChange()},this._disposables),this._disposables.add(this._listWidget.onDidBlur(i=>{this._listWidget.setFocus([])})),this._listWidget.style(eR({listInactiveFocusForeground:lL,listInactiveFocusBackground:aL}))}dispose(){this._listWidget.dispose(),this._disposables.dispose()}layout({height:e,width:t}){this._availableHeight=e,this._minimumWidth=t}setCandidates(e){this._listWidget.splice(0,0,e);const t=this._pickListHeight(this._listWidget.length),i=this._pickListWidth(e);this._listWidget.layout(t,i),this._listContainer.style.height=`${t}px`,this._listContainer.style.width=`${i}px`,Xg(F("renameSuggestionsReceivedAria","Received {0} rename suggestions",e.length))}clearCandidates(){this._listContainer.style.height="0px",this._listContainer.style.width="0px",this._listWidget.splice(0,this._listWidget.length,[])}get nCandidates(){return this._listWidget.length}get focusedCandidate(){if(this._listWidget.length===0)return;const e=this._listWidget.getSelectedElements()[0];if(e!==void 0)return e.newSymbolName;const t=this._listWidget.getFocusedElements()[0];if(t!==void 0)return t.newSymbolName}focusNext(){if(this._listWidget.length===0)return!1;const e=this._listWidget.getFocus();if(e.length===0)return this._listWidget.focusFirst(),this._listWidget.reveal(0),!0;if(e[0]===this._listWidget.length-1)return this._listWidget.setFocus([]),this._listWidget.reveal(0),!1;{this._listWidget.focusNext();const t=this._listWidget.getFocus()[0];return this._listWidget.reveal(t),!0}}focusPrevious(){if(this._listWidget.length===0)return!1;const e=this._listWidget.getFocus();if(e.length===0){this._listWidget.focusLast();const t=this._listWidget.getFocus()[0];return this._listWidget.reveal(t),!0}else{if(e[0]===0)return this._listWidget.setFocus([]),!1;{this._listWidget.focusPrevious();const t=this._listWidget.getFocus()[0];return this._listWidget.reveal(t),!0}}}clearFocus(){this._listWidget.setFocus([])}get _candidateViewHeight(){const{totalHeight:e}=dv.getLayoutInfo({lineHeight:this._lineHeight});return e}_pickListHeight(e){const t=this._candidateViewHeight*e,i=7;return Math.min(t,this._availableHeight,this._candidateViewHeight*i)}_pickListWidth(e){const t=Math.ceil(Math.max(...e.map(n=>n.newSymbolName.length))*this._typicalHalfwidthCharacterWidth);return Math.max(this._minimumWidth,4+16+5+t+10)}static _createListWidget(e,t,i){const n=new class{getTemplateId(r){return"candidate"}getHeight(r){return t}},o=new class{constructor(){this.templateId="candidate"}renderTemplate(r){return new dv(r,i)}renderElement(r,l,a){a.populate(r)}disposeTemplate(r){r.dispose()}};return new hh("NewSymbolNameCandidates",e,n,[o],{keyboardSupport:!1,mouseSupport:!0,multipleSelectionSupport:!1})}}class ySt{constructor(){this._onDidInputChange=new fe,this.onDidInputChange=this._onDidInputChange.event,this._disposables=new De}get domNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="rename-input-with-button",this._domNode.style.display="flex",this._domNode.style.flexDirection="row",this._domNode.style.alignItems="center",this._inputNode=document.createElement("input"),this._inputNode.className="rename-input",this._inputNode.type="text",this._inputNode.style.border="none",this._inputNode.setAttribute("aria-label",F("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._inputNode),this._buttonNode=document.createElement("div"),this._buttonNode.className="rename-suggestions-button",this._buttonNode.setAttribute("tabindex","0"),this._buttonGenHoverText=F("generateRenameSuggestionsButton","Generate new name suggestions"),this._buttonCancelHoverText=F("cancelRenameSuggestionsButton","Cancel"),this._buttonHover=Ap().setupManagedHover(Ka("element"),this._buttonNode,this._buttonGenHoverText),this._disposables.add(this._buttonHover),this._domNode.appendChild(this._buttonNode),this._disposables.add(Te(this.input,ut.INPUT,()=>this._onDidInputChange.fire())),this._disposables.add(Te(this.input,ut.KEY_DOWN,e=>{const t=new Ts(e);(t.keyCode===15||t.keyCode===17)&&this._onDidInputChange.fire()})),this._disposables.add(Te(this.input,ut.CLICK,()=>this._onDidInputChange.fire())),this._disposables.add(Te(this.input,ut.FOCUS,()=>{this.domNode.style.outlineWidth="1px",this.domNode.style.outlineStyle="solid",this.domNode.style.outlineOffset="-1px",this.domNode.style.outlineColor="var(--vscode-focusBorder)"})),this._disposables.add(Te(this.input,ut.BLUR,()=>{this.domNode.style.outline="none"}))),this._domNode}get input(){return vn(this._inputNode),this._inputNode}get button(){return vn(this._buttonNode),this._buttonNode}get buttonState(){return this._buttonState}setSparkleButton(){var e;this._buttonState="sparkle",this._sparkleIcon??(this._sparkleIcon=RN(ct.sparkle)),dl(this.button),this.button.appendChild(this._sparkleIcon),this.button.setAttribute("aria-label","Generating new name suggestions"),(e=this._buttonHover)==null||e.update(this._buttonGenHoverText),this.input.focus()}setStopButton(){var e;this._buttonState="stop",this._stopIcon??(this._stopIcon=RN(ct.primitiveSquare)),dl(this.button),this.button.appendChild(this._stopIcon),this.button.setAttribute("aria-label","Cancel generating new name suggestions"),(e=this._buttonHover)==null||e.update(this._buttonCancelHoverText),this.input.focus()}dispose(){this._disposables.dispose()}}const wB=class wB{constructor(e,t){this._domNode=document.createElement("div"),this._domNode.className="rename-box rename-candidate",this._domNode.style.display="flex",this._domNode.style.columnGap="5px",this._domNode.style.alignItems="center",this._domNode.style.height=`${t.lineHeight}px`,this._domNode.style.padding=`${wB._PADDING}px`;const i=document.createElement("div");i.style.display="flex",i.style.alignItems="center",i.style.width=i.style.height=`${t.lineHeight*.8}px`,this._domNode.appendChild(i),this._icon=RN(ct.sparkle),this._icon.style.display="none",i.appendChild(this._icon),this._label=document.createElement("div"),hl(this._label,t),this._domNode.appendChild(this._label),e.appendChild(this._domNode)}populate(e){this._updateIcon(e),this._updateLabel(e)}_updateIcon(e){var i;const t=!!((i=e.tags)!=null&&i.includes(a7.AIGenerated));this._icon.style.display=t?"inherit":"none"}_updateLabel(e){this._label.innerText=e.newSymbolName}static getLayoutInfo({lineHeight:e}){return{totalHeight:e+wB._PADDING*2}}dispose(){}};wB._PADDING=2;let dv=wB;var QSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Qb=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Dte;class Jle{constructor(e,t,i){this.model=e,this.position=t,this._providerRenameIdx=0,this._providers=i.ordered(e)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(e){const t=[];for(this._providerRenameIdx=0;this._providerRenameIdx<this._providers.length;this._providerRenameIdx++){const n=this._providers[this._providerRenameIdx];if(!n.resolveRenameLocation)break;const o=await n.resolveRenameLocation(this.model,this.position,e);if(o){if(o.rejectReason){t.push(o.rejectReason);continue}return o}}this._providerRenameIdx=0;const i=this.model.getWordAtPosition(this.position);return i?{range:new z(this.position.lineNumber,i.startColumn,this.position.lineNumber,i.endColumn),text:i.word,rejectReason:t.length>0?t.join(`
- `):void 0}:{range:z.fromPositions(this.position),text:"",rejectReason:t.length>0?t.join(`
- `):void 0}}async provideRenameEdits(e,t){return this._provideRenameEdits(e,this._providerRenameIdx,[],t)}async _provideRenameEdits(e,t,i,n){const o=this._providers[t];if(!o)return{edits:[],rejectReason:i.join(`
- `)};const r=await o.provideRenameEdits(this.model,this.position,e,n);if(r){if(r.rejectReason)return this._provideRenameEdits(e,t+1,i.concat(r.rejectReason),n)}else return this._provideRenameEdits(e,t+1,i.concat(F("no result","No result.")),n);return r}}async function MSt(s,e,t,i){const n=new Jle(e,t,s),o=await n.resolveRenameLocation(Gi.None);return o!=null&&o.rejectReason?{edits:[],rejectReason:o.rejectReason}:n.provideRenameEdits(i,Gi.None)}var $Q;let PF=($Q=class{static get(e){return e.getContribution(Dte.ID)}constructor(e,t,i,n,o,r,l,a,d){this.editor=e,this._instaService=t,this._notificationService=i,this._bulkEditService=n,this._progressService=o,this._logService=r,this._configService=l,this._languageFeaturesService=a,this._telemetryService=d,this._disposableStore=new De,this._cts=new go,this._renameWidget=this._disposableStore.add(this._instaService.createInstance(Ete,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var p,g;const e=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new go,!this.editor.hasModel()){e("editor has no model");return}const t=this.editor.getPosition(),i=new Jle(this.editor.getModel(),t,this._languageFeaturesService.renameProvider);if(!i.hasProvider()){e("skeleton has no provider");return}const n=new _F(this.editor,5,void 0,this._cts.token);let o;try{e("resolving rename location");const f=i.resolveRenameLocation(n.token);this._progressService.showWhile(f,250),o=await f,e("resolved rename location")}catch(f){f instanceof Ku?e("resolve rename location cancelled",JSON.stringify(f,null," ")):(e("resolve rename location failed",f instanceof Error?f:JSON.stringify(f,null," ")),(typeof f=="string"||rp(f))&&((p=cc.get(this.editor))==null||p.showMessage(f||F("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),t)));return}finally{n.dispose()}if(!o){e("returning early - no loc");return}if(o.rejectReason){e(`returning early - rejected with reason: ${o.rejectReason}`,o.rejectReason),(g=cc.get(this.editor))==null||g.showMessage(o.rejectReason,t);return}if(n.token.isCancellationRequested){e("returning early - cts1 cancelled");return}const r=new _F(this.editor,5,o.range,this._cts.token),l=this.editor.getModel(),a=this._languageFeaturesService.newSymbolNamesProvider.all(l),d=await Promise.all(a.map(async f=>[f,await f.supportsAutomaticNewSymbolNamesTriggerKind??!1])),c=(f,b)=>{let U=d.slice();return f===_B.Automatic&&(U=U.filter(([S,Z])=>Z)),U.map(([S])=>S.provideNewSymbolNames(l,o.range,f,b))};e("creating rename input field and awaiting its result");const h=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),u=await this._renameWidget.getInput(o.range,o.text,h,a.length>0?c:void 0,r);if(e("received response from rename input field"),a.length>0&&this._reportTelemetry(a.length,l.getLanguageId(),u),typeof u=="boolean"){e(`returning early - rename input field response - ${u}`),u&&this.editor.focus(),r.dispose();return}this.editor.focus(),e("requesting rename edits");const m=Pv(i.provideRenameEdits(u.newName,r.token),r.token).then(async f=>{if(!f){e("returning early - no rename edits result");return}if(!this.editor.hasModel()){e("returning early - no model after rename edits are provided");return}if(f.rejectReason){e(`returning early - rejected with reason: ${f.rejectReason}`),this._notificationService.info(f.rejectReason);return}this.editor.setSelection(z.fromPositions(this.editor.getSelection().getPosition())),e("applying edits"),this._bulkEditService.apply(f,{editor:this.editor,showPreview:u.wantsPreview,label:F("label","Renaming '{0}' to '{1}'",o==null?void 0:o.text,u.newName),code:"undoredo.rename",quotableLabel:F("quotableLabel","Renaming {0} to {1}",o==null?void 0:o.text,u.newName),respectAutoSaveConfig:!0}).then(b=>{e("edits applied"),b.ariaSummary&&ja(F("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",o.text,u.newName,b.ariaSummary))}).catch(b=>{e(`error when applying edits ${JSON.stringify(b,null," ")}`),this._notificationService.error(F("rename.failedApply","Rename failed to apply edits")),this._logService.error(b)})},f=>{e("error when providing rename edits",JSON.stringify(f,null," ")),this._notificationService.error(F("rename.failed","Rename failed to compute edits")),this._logService.error(f)}).finally(()=>{r.dispose()});return e("returning rename operation"),this._progressService.showWhile(m,250),m}acceptRenameInput(e){this._renameWidget.acceptInput(e)}cancelRenameInput(){this._renameWidget.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameWidget.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameWidget.focusPreviousRenameSuggestion()}_reportTelemetry(e,t,i){const n=typeof i=="boolean"?{kind:"cancelled",languageId:t,nRenameSuggestionProviders:e}:{kind:"accepted",languageId:t,nRenameSuggestionProviders:e,source:i.stats.source.k,nRenameSuggestions:i.stats.nRenameSuggestions,timeBeforeFirstInputFieldEdit:i.stats.timeBeforeFirstInputFieldEdit,wantsPreview:i.wantsPreview,nRenameSuggestionsInvocations:i.stats.nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:i.stats.hadAutomaticRenameSuggestionsInvocation};this._telemetryService.publicLog2("renameInvokedEvent",n)}},Dte=$Q,$Q.ID="editor.contrib.renameController",$Q);PF=Dte=QSt([Qb(1,ti),Qb(2,jo),Qb(3,nk),Qb(4,iA),Qb(5,Cl),Qb(6,z3),Qb(7,xt),Qb(8,$l)],PF);class wSt extends Tt{constructor(){super({id:"editor.action.rename",label:F("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:Ge.and($.writable,$.hasRenameProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(e,t){const i=e.get(kn),[n,o]=Array.isArray(t)&&t||[void 0,void 0];return ni.isUri(n)&&ge.isIPosition(o)?i.openCodeEditor({resource:n},i.getActiveCodeEditor()).then(r=>{r&&(r.setPosition(o),r.invokeWithinContext(l=>(this.reportTelemetry(l,r),this.run(l,r))))},wi):super.runCommand(e,t)}run(e,t){const i=e.get(Cl),n=PF.get(t);return n?(i.trace("[RenameAction] got controller, running..."),n.run()):(i.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}}Wn(PF.ID,PF,4);lt(wSt);const Xle=Nr.bindToContribution(PF.get);Vt(new Xle({id:"acceptRenameInput",precondition:kM,handler:s=>s.acceptRenameInput(!1),kbOpts:{weight:100+99,kbExpr:Ge.and($.focus,Ge.not("isComposing")),primary:3}}));Vt(new Xle({id:"acceptRenameInputWithPreview",precondition:Ge.and(kM,Ge.has("config.editor.rename.enablePreview")),handler:s=>s.acceptRenameInput(!0),kbOpts:{weight:100+99,kbExpr:Ge.and($.focus,Ge.not("isComposing")),primary:2048+3}}));Vt(new Xle({id:"cancelRenameInput",precondition:kM,handler:s=>s.cancelRenameInput(),kbOpts:{weight:100+99,kbExpr:$.focus,primary:9,secondary:[1033]}}));Cs(class extends Ha{constructor(){super({id:"focusNextRenameSuggestion",title:{...Ni("focusNextRenameSuggestion","Focus Next Rename Suggestion")},precondition:kM,keybinding:[{primary:18,weight:100+99}]})}run(e){const t=e.get(kn).getFocusedCodeEditor();if(!t)return;const i=PF.get(t);i&&i.focusNextRenameSuggestion()}});Cs(class extends Ha{constructor(){super({id:"focusPreviousRenameSuggestion",title:{...Ni("focusPreviousRenameSuggestion","Focus Previous Rename Suggestion")},precondition:kM,keybinding:[{primary:16,weight:100+99}]})}run(e){const t=e.get(kn).getFocusedCodeEditor();if(!t)return;const i=PF.get(t);i&&i.focusPreviousRenameSuggestion()}});Cd("_executeDocumentRenameProvider",function(s,e,t,...i){const[n]=i;vn(typeof n=="string");const{renameProvider:o}=s.get(xt);return MSt(o,e,t,n)});Cd("_executePrepareRename",async function(s,e,t){const{renameProvider:i}=s.get(xt),o=await new Jle(e,t,i).resolveRenameLocation(Gi.None);if(o!=null&&o.rejectReason)throw new Error(o.rejectReason);return o});fo.as(rm.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:F("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var TSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},K0e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Tv;let vY=(Tv=class extends be{constructor(e,t,i){super(),this.editor=e,this.languageConfigurationService=t,this.editorWorkerService=i,this.decorations=this.editor.createDecorationsCollection(),this.options=this.createOptions(e.getOption(73)),this.computePromise=null,this.currentOccurrences={},this._register(e.onDidChangeModel(n=>{this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(e.onDidChangeModelLanguage(n=>{this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(t.onDidChange(n=>{var r;const o=(r=this.editor.getModel())==null?void 0:r.getLanguageId();o&&n.affects(o)&&(this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(e.onDidChangeConfiguration(n=>{this.options&&!n.hasChanged(73)||(this.options=this.createOptions(e.getOption(73)),this.updateDecorations([]),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(this.editor.onDidChangeModelContent(n=>{this.computeSectionHeaders.schedule()})),this._register(e.onDidChangeModelTokens(n=>{this.computeSectionHeaders.isScheduled()||this.computeSectionHeaders.schedule(1e3)})),this.computeSectionHeaders=this._register(new cs(()=>{this.findSectionHeaders()},250)),this.computeSectionHeaders.schedule(0)}createOptions(e){if(!e||!this.editor.hasModel())return;const t=this.editor.getModel().getLanguageId();if(!t)return;const i=this.languageConfigurationService.getLanguageConfiguration(t).comments,n=this.languageConfigurationService.getLanguageConfiguration(t).foldingRules;if(!(!i&&!(n!=null&&n.markers)))return{foldingRules:n,findMarkSectionHeaders:e.showMarkSectionHeaders,findRegionSectionHeaders:e.showRegionSectionHeaders}}findSectionHeaders(){var i,n;if(!this.editor.hasModel()||!((i=this.options)!=null&&i.findMarkSectionHeaders)&&!((n=this.options)!=null&&n.findRegionSectionHeaders))return;const e=this.editor.getModel();if(e.isDisposed()||e.isTooLargeForSyncing())return;const t=e.getVersionId();this.editorWorkerService.findSectionHeaders(e.uri,this.options).then(o=>{e.isDisposed()||e.getVersionId()!==t||this.updateDecorations(o)})}updateDecorations(e){const t=this.editor.getModel();t&&(e=e.filter(o=>{if(!o.shouldBeInComments)return!0;const r=t.validateRange(o.range),l=t.tokenization.getLineTokens(r.startLineNumber),a=l.findTokenIndexAtOffset(r.startColumn-1),d=l.getStandardTokenType(a);return l.getLanguageId(a)===t.getLanguageId()&&d===1}));const i=Object.values(this.currentOccurrences).map(o=>o.decorationId),n=e.map(o=>CSt(o));this.editor.changeDecorations(o=>{const r=o.deltaDecorations(i,n);this.currentOccurrences={};for(let l=0,a=r.length;l<a;l++){const d={sectionHeader:e[l],decorationId:r[l]};this.currentOccurrences[d.decorationId]=d}})}stop(){this.computeSectionHeaders.cancel(),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop(),this.decorations.clear()}},Tv.ID="editor.sectionHeaderDetector",Tv);vY=TSt([K0e(1,bo),K0e(2,Ld)],vY);function CSt(s){return{range:s.range,options:ki.createDynamic({description:"section-header",stickiness:3,collapseOnReplaceEdit:!0,minimap:{color:void 0,position:1,sectionHeaderStyle:s.hasSeparatorLine?2:1,sectionHeaderText:s.text}})}}Wn(vY.ID,vY,1);function BSt(s){for(let e=0,t=s.length;e<t;e+=4){const i=s[e+0],n=s[e+1],o=s[e+2],r=s[e+3];s[e+0]=r,s[e+1]=o,s[e+2]=n,s[e+3]=i}}function LSt(s){const e=new Uint8Array(s.buffer,s.byteOffset,s.length*4);return hZe()||BSt(e),X3.wrap(e)}function tQe(s){const e=new Uint32Array(vSt(s));let t=0;if(e[t++]=s.id,s.type==="full")e[t++]=1,e[t++]=s.data.length,e.set(s.data,t),t+=s.data.length;else{e[t++]=2,e[t++]=s.deltas.length;for(const i of s.deltas)e[t++]=i.start,e[t++]=i.deleteCount,i.data?(e[t++]=i.data.length,e.set(i.data,t),t+=i.data.length):e[t++]=0}return LSt(e)}function vSt(s){let e=0;if(e+=1+1,s.type==="full")e+=1+s.data.length;else{e+=1,e+=(1+1+1)*s.deltas.length;for(const t of s.deltas)t.data&&(e+=t.data.length)}return e}function tO(s){return s&&!!s.data}function iQe(s){return s&&Array.isArray(s.edits)}class kSt{constructor(e,t,i){this.provider=e,this.tokens=t,this.error=i}}function nQe(s,e){return s.has(e)}function xSt(s,e){const t=s.orderedGroups(e);return t.length>0?t[0]:[]}async function sQe(s,e,t,i,n){const o=xSt(s,e),r=await Promise.all(o.map(async l=>{let a,d=null;try{a=await l.provideDocumentSemanticTokens(e,l===t?i:null,n)}catch(c){d=c,a=null}return(!a||!tO(a)&&!iQe(a))&&(a=null),new kSt(l,a,d)}));for(const l of r){if(l.error)throw l.error;if(l.tokens)return l}return r.length>0?r[0]:null}function ISt(s,e){const t=s.orderedGroups(e);return t.length>0?t[0]:null}class ESt{constructor(e,t){this.provider=e,this.tokens=t}}function DSt(s,e){return s.has(e)}function oQe(s,e){const t=s.orderedGroups(e);return t.length>0?t[0]:[]}async function Yle(s,e,t,i){const n=oQe(s,e),o=await Promise.all(n.map(async r=>{let l;try{l=await r.provideDocumentRangeSemanticTokens(e,t,i)}catch(a){vo(a),l=null}return(!l||!tO(l))&&(l=null),new ESt(r,l)}));for(const r of o)if(r.tokens)return r;return o.length>0?o[0]:null}Sn.registerCommand("_provideDocumentSemanticTokensLegend",async(s,...e)=>{const[t]=e;vn(t instanceof ni);const i=s.get(zs).getModel(t);if(!i)return;const{documentSemanticTokensProvider:n}=s.get(xt),o=ISt(n,i);return o?o[0].getLegend():s.get(ks).executeCommand("_provideDocumentRangeSemanticTokensLegend",t)});Sn.registerCommand("_provideDocumentSemanticTokens",async(s,...e)=>{const[t]=e;vn(t instanceof ni);const i=s.get(zs).getModel(t);if(!i)return;const{documentSemanticTokensProvider:n}=s.get(xt);if(!nQe(n,i))return s.get(ks).executeCommand("_provideDocumentRangeSemanticTokens",t,i.getFullModelRange());const o=await sQe(n,i,null,null,Gi.None);if(!o)return;const{provider:r,tokens:l}=o;if(!l||!tO(l))return;const a=tQe({id:0,type:"full",data:l.data});return l.resultId&&r.releaseDocumentSemanticTokens(l.resultId),a});Sn.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(s,...e)=>{const[t,i]=e;vn(t instanceof ni);const n=s.get(zs).getModel(t);if(!n)return;const{documentRangeSemanticTokensProvider:o}=s.get(xt),r=oQe(o,n);if(r.length===0)return;if(r.length===1)return r[0].getLegend();if(!i||!z.isIRange(i))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),r[0].getLegend();const l=await Yle(o,n,z.lift(i),Gi.None);if(l)return l.provider.getLegend()});Sn.registerCommand("_provideDocumentRangeSemanticTokens",async(s,...e)=>{const[t,i]=e;vn(t instanceof ni),vn(z.isIRange(i));const n=s.get(zs).getModel(t);if(!n)return;const{documentRangeSemanticTokensProvider:o}=s.get(xt),r=await Yle(o,n,z.lift(i),Gi.None);if(!(!r||!r.tokens))return tQe({id:0,type:"full",data:r.tokens.data})});const _le="editor.semanticHighlighting";function OD(s,e,t){var n;const i=(n=t.getValue(_le,{overrideIdentifier:s.getLanguageId(),resource:s.uri}))==null?void 0:n.enabled;return typeof i=="boolean"?i:e.getColorTheme().semanticHighlighting}var rQe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},fg=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Xb;let Gte=class extends be{constructor(e,t,i,n,o,r){super(),this._watchers=Object.create(null);const l=c=>{this._watchers[c.uri.toString()]=new Jte(c,e,i,o,r)},a=(c,h)=>{h.dispose(),delete this._watchers[c.uri.toString()]},d=()=>{for(const c of t.getModels()){const h=this._watchers[c.uri.toString()];OD(c,i,n)?h||l(c):h&&a(c,h)}};t.getModels().forEach(c=>{OD(c,i,n)&&l(c)}),this._register(t.onModelAdded(c=>{OD(c,i,n)&&l(c)})),this._register(t.onModelRemoved(c=>{const h=this._watchers[c.uri.toString()];h&&a(c,h)})),this._register(n.onDidChangeConfiguration(c=>{c.affectsConfiguration(_le)&&d()})),this._register(i.onDidColorThemeChange(d))}dispose(){for(const e of Object.values(this._watchers))e.dispose();super.dispose()}};Gte=rQe([fg(0,j3),fg(1,zs),fg(2,Rr),fg(3,Hi),fg(4,dh),fg(5,xt)],Gte);var hN;let Jte=(hN=class extends be{constructor(e,t,i,n,o){super(),this._semanticTokensStylingService=t,this._isDisposed=!1,this._model=e,this._provider=o.documentSemanticTokensProvider,this._debounceInformation=n.for(this._provider,"DocumentSemanticTokens",{min:Xb.REQUEST_MIN_DELAY,max:Xb.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new cs(()=>this._fetchDocumentSemanticTokensNow(),Xb.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeAttached(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeLanguage(()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)}));const r=()=>{Ws(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const l of this._provider.all(e))typeof l.onDidChange=="function"&&this._documentProvidersChangeListeners.push(l.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};r(),this._register(this._provider.onDidChange(()=>{r(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(i.onDidColorThemeChange(l=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),Ws(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!nQe(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const e=new go,t=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,i=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,n=sQe(this._provider,this._model,t,i,e.token);this._currentDocumentRequestCancellationTokenSource=e,this._providersChangedDuringRequest=!1;const o=[],r=this._model.onDidChangeContent(a=>{o.push(a)}),l=new jr(!1);n.then(a=>{if(this._debounceInformation.update(this._model,l.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,r.dispose(),!a)this._setDocumentSemanticTokens(null,null,null,o);else{const{provider:d,tokens:c}=a,h=this._semanticTokensStylingService.getStyling(d);this._setDocumentSemanticTokens(d,c||null,h,o)}},a=>{a&&($h(a)||typeof a.message=="string"&&a.message.indexOf("busy")!==-1)||wi(a),this._currentDocumentRequestCancellationTokenSource=null,r.dispose(),(o.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(e,t,i,n,o){o=Math.min(o,i.length-n,e.length-t);for(let r=0;r<o;r++)i[n+r]=e[t+r]}_setDocumentSemanticTokens(e,t,i,n){const o=this._currentDocumentResponse,r=()=>{(n.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed){e&&t&&e.releaseDocumentSemanticTokens(t.resultId);return}if(!e||!i){this._model.tokenization.setSemanticTokens(null,!1);return}if(!t){this._model.tokenization.setSemanticTokens(null,!0),r();return}if(iQe(t)){if(!o){this._model.tokenization.setSemanticTokens(null,!0);return}if(t.edits.length===0)t={resultId:t.resultId,data:o.data};else{let l=0;for(const u of t.edits)l+=(u.data?u.data.length:0)-u.deleteCount;const a=o.data,d=new Uint32Array(a.length+l);let c=a.length,h=d.length;for(let u=t.edits.length-1;u>=0;u--){const m=t.edits[u];if(m.start>a.length){i.warnInvalidEditStart(o.resultId,t.resultId,u,m.start,a.length),this._model.tokenization.setSemanticTokens(null,!0);return}const p=c-(m.start+m.deleteCount);p>0&&(Xb._copy(a,c-p,d,h-p,p),h-=p),m.data&&(Xb._copy(m.data,0,d,h-m.data.length,m.data.length),h-=m.data.length),c=m.start}c>0&&Xb._copy(a,0,d,0,c),t={resultId:t.resultId,data:d}}}if(tO(t)){this._currentDocumentResponse=new GSt(e,t.resultId,t.data);const l=iNe(t,i,this._model.getLanguageId());if(n.length>0)for(const a of n)for(const d of l)for(const c of a.changes)d.applyEdit(c.range,c.text);this._model.tokenization.setSemanticTokens(l,!0)}else this._model.tokenization.setSemanticTokens(null,!0);r()}},Xb=hN,hN.REQUEST_MIN_DELAY=300,hN.REQUEST_MAX_DELAY=2e3,hN);Jte=Xb=rQe([fg(1,j3),fg(2,Rr),fg(3,dh),fg(4,xt)],Jte);class GSt{constructor(e,t,i){this.provider=e,this.resultId=t,this.data=i}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}QM(Gte);var JSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vw=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Cv;let kY=(Cv=class extends be{constructor(e,t,i,n,o,r){super(),this._semanticTokensStylingService=t,this._themeService=i,this._configurationService=n,this._editor=e,this._provider=r.documentRangeSemanticTokensProvider,this._debounceInformation=o.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new cs(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[];const l=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))};this._register(this._editor.onDidScrollChange(()=>{l()})),this._register(this._editor.onDidChangeModel(()=>{this._cancelAll(),l()})),this._register(this._editor.onDidChangeModelContent(a=>{this._cancelAll(),l()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),l()})),this._register(this._configurationService.onDidChangeConfiguration(a=>{a.affectsConfiguration(_le)&&(this._cancelAll(),l())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),l()})),l()}_cancelAll(){for(const e of this._outstandingRequests)e.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(e){for(let t=0,i=this._outstandingRequests.length;t<i;t++)if(this._outstandingRequests[t]===e){this._outstandingRequests.splice(t,1);return}}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const e=this._editor.getModel();if(e.tokenization.hasCompleteSemanticTokens())return;if(!OD(e,this._themeService,this._configurationService)){e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1);return}if(!DSt(this._provider,e)){e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1);return}const t=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(t.map(i=>this._requestRange(e,i)))}_requestRange(e,t){const i=e.getVersionId(),n=Tr(r=>Promise.resolve(Yle(this._provider,e,t,r))),o=new jr(!1);return n.then(r=>{if(this._debounceInformation.update(e,o.elapsed()),!r||!r.tokens||e.isDisposed()||e.getVersionId()!==i)return;const{provider:l,tokens:a}=r,d=this._semanticTokensStylingService.getStyling(l);e.tokenization.setPartialSemanticTokens(t,iNe(a,d,e.getLanguageId()))}).then(()=>this._removeOutstandingRequest(n),()=>this._removeOutstandingRequest(n)),n}},Cv.ID="editor.contrib.viewportSemanticTokens",Cv);kY=JSt([vw(1,j3),vw(2,Rr),vw(3,Hi),vw(4,dh),vw(5,xt)],kY);Wn(kY.ID,kY,1);class XSt{constructor(e=!0){this.selectSubwords=e}provideSelectionRanges(e,t){const i=[];for(const n of t){const o=[];i.push(o),this.selectSubwords&&this._addInWordRanges(o,e,n),this._addWordRanges(o,e,n),this._addWhitespaceLine(o,e,n),o.push({range:e.getFullModelRange()})}return i}_addInWordRanges(e,t,i){const n=t.getWordAtPosition(i);if(!n)return;const{word:o,startColumn:r}=n,l=i.column-r;let a=l,d=l,c=0;for(;a>=0;a--){const h=o.charCodeAt(a);if(a!==l&&(h===95||h===45))break;if(_U(h)&&ug(c))break;c=h}for(a+=1;d<o.length;d++){const h=o.charCodeAt(d);if(ug(h)&&_U(c))break;if(h===95||h===45)break;c=h}a<d&&e.push({range:new z(i.lineNumber,r+a,i.lineNumber,r+d)})}_addWordRanges(e,t,i){const n=t.getWordAtPosition(i);n&&e.push({range:new z(i.lineNumber,n.startColumn,i.lineNumber,n.endColumn)})}_addWhitespaceLine(e,t,i){t.getLineLength(i.lineNumber)>0&&t.getLineFirstNonWhitespaceColumn(i.lineNumber)===0&&t.getLineLastNonWhitespaceColumn(i.lineNumber)===0&&e.push({range:new z(i.lineNumber,1,i.lineNumber,t.getLineMaxColumn(i.lineNumber))})}}var YSt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_St=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Xte;class zle{constructor(e,t){this.index=e,this.ranges=t}mov(e){const t=this.index+(e?1:-1);if(t<0||t>=this.ranges.length)return this;const i=new zle(t,this.ranges);return i.ranges[t].equalsRange(this.ranges[this.index])?i.mov(e):i}}var eM;let cv=(eM=class{static get(e){return e.getContribution(Xte.ID)}constructor(e,t){this._editor=e,this._languageFeaturesService=t,this._ignoreSelection=!1}dispose(){var e;(e=this._selectionListener)==null||e.dispose()}async run(e){if(!this._editor.hasModel())return;const t=this._editor.getSelections(),i=this._editor.getModel();if(this._state||await aQe(this._languageFeaturesService.selectionRangeProvider,i,t.map(o=>o.getPosition()),this._editor.getOption(114),Gi.None).then(o=>{var r;if(!(!ba(o)||o.length!==t.length)&&!(!this._editor.hasModel()||!lo(this._editor.getSelections(),t,(l,a)=>l.equalsSelection(a)))){for(let l=0;l<o.length;l++)o[l]=o[l].filter(a=>a.containsPosition(t[l].getStartPosition())&&a.containsPosition(t[l].getEndPosition())),o[l].unshift(t[l]);this._state=o.map(l=>new zle(0,l)),(r=this._selectionListener)==null||r.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var l;this._ignoreSelection||((l=this._selectionListener)==null||l.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(o=>o.mov(e));const n=this._state.map(o=>_t.fromPositions(o.ranges[o.index].getStartPosition(),o.ranges[o.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(n)}finally{this._ignoreSelection=!1}}},Xte=eM,eM.ID="editor.contrib.smartSelectController",eM);cv=Xte=YSt([_St(1,xt)],cv);class lQe extends Tt{constructor(e,t){super(t),this._forward=e}async run(e,t){const i=cv.get(t);i&&await i.run(this._forward)}}class zSt extends lQe{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:F("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"1_basic",title:F({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}}Sn.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");class OSt extends lQe{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:F("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:Gt.MenubarSelectionMenu,group:"1_basic",title:F({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}}Wn(cv.ID,cv,4);lt(zSt);lt(OSt);async function aQe(s,e,t,i,n){const o=s.all(e).concat(new XSt(i.selectSubwords));o.length===1&&o.unshift(new AY);const r=[],l=[];for(const a of o)r.push(Promise.resolve(a.provideSelectionRanges(e,t,n)).then(d=>{if(ba(d)&&d.length===t.length)for(let c=0;c<t.length;c++){l[c]||(l[c]=[]);for(const h of d[c])z.isIRange(h.range)&&z.containsPosition(h.range,t[c])&&l[c].push(z.lift(h.range))}},vo));return await Promise.all(r),l.map(a=>{if(a.length===0)return[];a.sort((u,m)=>ge.isBefore(u.getStartPosition(),m.getStartPosition())?1:ge.isBefore(m.getStartPosition(),u.getStartPosition())||ge.isBefore(u.getEndPosition(),m.getEndPosition())?-1:ge.isBefore(m.getEndPosition(),u.getEndPosition())?1:0);const d=[];let c;for(const u of a)(!c||z.containsRange(u,c)&&!z.equalsRange(u,c))&&(d.push(u),c=u);if(!i.selectLeadingAndTrailingWhitespace)return d;const h=[d[0]];for(let u=1;u<d.length;u++){const m=d[u-1],p=d[u];if(p.startLineNumber!==m.startLineNumber||p.endLineNumber!==m.endLineNumber){const g=new z(m.startLineNumber,e.getLineFirstNonWhitespaceColumn(m.startLineNumber),m.endLineNumber,e.getLineLastNonWhitespaceColumn(m.endLineNumber));g.containsRange(m)&&!g.equalsRange(m)&&p.containsRange(g)&&!p.equalsRange(g)&&h.push(g);const f=new z(m.startLineNumber,1,m.endLineNumber,e.getLineMaxColumn(m.endLineNumber));f.containsRange(m)&&!f.equalsRange(g)&&p.containsRange(f)&&!p.equalsRange(f)&&h.push(f)}h.push(p)}return h})}Sn.registerCommand("_executeSelectionRangeProvider",async function(s,...e){const[t,i]=e;vn(ni.isUri(t));const n=s.get(xt).selectionRangeProvider,o=await s.get(Td).createModelReference(t);try{return aQe(n,o.object.textEditorModel,i,{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},Gi.None)}finally{o.dispose()}});const jSt=Object.freeze({View:Ni("view","View"),Help:Ni("help","Help"),Test:Ni("test","Test"),File:Ni("file","File"),Preferences:Ni("preferences","Preferences"),Developer:Ni({key:"developer",comment:["A developer on Code itself or someone diagnosing issues in Code"]},"Developer")});class Q2{constructor(e,t,i,n=null){this.startLineNumbers=e,this.endLineNumbers=t,this.lastLineRelativePosition=i,this.showEndForLine=n}equals(e){return!!e&&this.lastLineRelativePosition===e.lastLineRelativePosition&&this.showEndForLine===e.showEndForLine&&lo(this.startLineNumbers,e.startLineNumbers)&&lo(this.endLineNumbers,e.endLineNumbers)}static get Empty(){return new Q2([],[],0)}}const q0e=lb("stickyScrollViewLayer",{createHTML:s=>s}),wH="data-sticky-line-index",$0e="data-sticky-is-line",PSt="data-sticky-is-line-number",efe="data-sticky-is-folding-icon";class HSt extends be{constructor(e){super(),this._editor=e,this._foldingIconStore=new De,this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._lineHeight=this._editor.getOption(67),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._lineNumbersDomNode.className="sticky-widget-line-numbers",this._lineNumbersDomNode.setAttribute("role","none"),this._linesDomNode.className="sticky-widget-lines",this._linesDomNode.setAttribute("role","list"),this._linesDomNodeScrollable.className="sticky-widget-lines-scrollable",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",e instanceof sm),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const t=()=>{this._linesDomNode.style.left=this._editor.getOption(116).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"};this._register(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(116)&&t(),i.hasChanged(67)&&(this._lineHeight=this._editor.getOption(67))})),this._register(this._editor.onDidScrollChange(i=>{i.scrollLeftChanged&&t(),i.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{t(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),t(),this._register(this._editor.onDidLayoutChange(i=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(e){return this._renderedStickyLines.find(t=>t.lineNumber===e)}getCurrentLines(){return this._lineNumbers}setState(e,t,i){if(i===void 0&&(!this._previousState&&!e||this._previousState&&this._previousState.equals(e)))return;const n=this._isWidgetHeightZero(e),o=n?void 0:e,r=n?0:this._findLineToRebuildWidgetFrom(e,i);this._renderRootNode(o,t,r),this._previousState=e}_isWidgetHeightZero(e){if(!e)return!0;const t=e.startLineNumbers.length*this._lineHeight+e.lastLineRelativePosition;if(t>0){this._lastLineRelativePosition=e.lastLineRelativePosition;const i=[...e.startLineNumbers];e.showEndForLine!==null&&(i[e.showEndForLine]=e.endLineNumbers[e.showEndForLine]),this._lineNumbers=i}else this._lastLineRelativePosition=0,this._lineNumbers=[];return t===0}_findLineToRebuildWidgetFrom(e,t){if(!e||!this._previousState)return 0;if(t!==void 0)return t;const i=this._previousState,n=e.startLineNumbers.findIndex(o=>!i.startLineNumbers.includes(o));return n===-1?0:n}_updateWidgetWidth(){const e=this._editor.getLayoutInfo(),t=e.contentLeft;this._lineNumbersDomNode.style.width=`${t}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-e.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${e.width-e.verticalScrollbarWidth}px`}_clearStickyLinesFromLine(e){this._foldingIconStore.clear();for(let t=e;t<this._renderedStickyLines.length;t++){const i=this._renderedStickyLines[t];i.lineNumberDomNode.remove(),i.lineDomNode.remove()}this._renderedStickyLines=this._renderedStickyLines.slice(0,e),this._rootDomNode.style.display="none"}_useFoldingOpacityTransition(e){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${e?.5:0}s`)}_setFoldingIconsVisibility(e){for(const t of this._renderedStickyLines){const i=t.foldingIcon;i&&i.setVisible(e?!0:i.isCollapsed)}}async _renderRootNode(e,t,i){if(this._clearStickyLinesFromLine(i),!e)return;for(const l of this._renderedStickyLines)this._updateTopAndZIndexOfStickyLine(l);const n=this._editor.getLayoutInfo(),o=this._lineNumbers.slice(i);for(const[l,a]of o.entries()){const d=this._renderChildNode(l+i,a,t,n);d&&(this._linesDomNode.appendChild(d.lineDomNode),this._lineNumbersDomNode.appendChild(d.lineNumberDomNode),this._renderedStickyLines.push(d))}t&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const r=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;this._rootDomNode.style.display="block",this._lineNumbersDomNode.style.height=`${r}px`,this._linesDomNodeScrollable.style.height=`${r}px`,this._rootDomNode.style.height=`${r}px`,this._rootDomNode.style.marginLeft="0px",this._minContentWidthInPx=Math.max(...this._renderedStickyLines.map(l=>l.scrollWidth))+n.verticalScrollbarWidth,this._editor.layoutOverlayWidget(this)}_setFoldingHoverListeners(){this._editor.getOption(111)==="mouseover"&&(this._foldingIconStore.add(Te(this._lineNumbersDomNode,ut.MOUSE_ENTER,()=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(Te(this._lineNumbersDomNode,ut.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(e,t,i,n){const o=this._editor._getViewModel();if(!o)return;const r=o.coordinatesConverter.convertModelPositionToViewPosition(new ge(t,1)).lineNumber,l=o.getViewLineRenderingData(r),a=this._editor.getOption(68);let d;try{d=Da.filter(l.inlineDecorations,r,l.minColumn,l.maxColumn)}catch{d=[]}const c=new rA(!0,!0,l.content,l.continuesWithWrappedLine,l.isBasicASCII,l.containsRTL,0,l.tokens,d,l.tabSize,l.startVisibleColumn,1,1,1,500,"none",!0,!0,null),h=new gM(2e3),u=gk(c,h);let m;q0e?m=q0e.createHTML(h.build()):m=h.build();const p=document.createElement("span");p.setAttribute(wH,String(e)),p.setAttribute($0e,""),p.setAttribute("role","listitem"),p.tabIndex=0,p.className="sticky-line-content",p.classList.add(`stickyLine${t}`),p.style.lineHeight=`${this._lineHeight}px`,p.innerHTML=m;const g=document.createElement("span");g.setAttribute(wH,String(e)),g.setAttribute(PSt,""),g.className="sticky-line-number",g.style.lineHeight=`${this._lineHeight}px`;const f=n.contentLeft;g.style.width=`${f}px`;const b=document.createElement("span");a.renderType===1||a.renderType===3&&t%10===0?b.innerText=t.toString():a.renderType===2&&(b.innerText=Math.abs(t-this._editor.getPosition().lineNumber).toString()),b.className="sticky-line-number-inner",b.style.lineHeight=`${this._lineHeight}px`,b.style.width=`${n.lineNumbersWidth}px`,b.style.paddingLeft=`${n.lineNumbersLeft}px`,g.appendChild(b);const U=this._renderFoldingIconForLine(i,t);U&&g.appendChild(U.domNode),this._editor.applyFontInfo(p),this._editor.applyFontInfo(b),g.style.lineHeight=`${this._lineHeight}px`,p.style.lineHeight=`${this._lineHeight}px`,g.style.height=`${this._lineHeight}px`,p.style.height=`${this._lineHeight}px`;const S=new KSt(e,t,p,g,U,u.characterMapping,p.scrollWidth);return this._updateTopAndZIndexOfStickyLine(S)}_updateTopAndZIndexOfStickyLine(e){var c;const t=e.index,i=e.lineDomNode,n=e.lineNumberDomNode,o=t===this._lineNumbers.length-1,r="0",l="1";i.style.zIndex=o?r:l,n.style.zIndex=o?r:l;const a=`${t*this._lineHeight+this._lastLineRelativePosition+((c=e.foldingIcon)!=null&&c.isCollapsed?1:0)}px`,d=`${t*this._lineHeight}px`;return i.style.top=o?a:d,n.style.top=o?a:d,e}_renderFoldingIconForLine(e,t){const i=this._editor.getOption(111);if(!e||i==="never")return;const n=e.regions,o=n.findRange(t),r=n.getStartLineNumber(o);if(!(t===r))return;const a=n.isCollapsed(o),d=new qSt(a,r,n.getEndLineNumber(o),this._lineHeight);return d.setVisible(this._isOnGlyphMargin?!0:a||i==="always"),d.domNode.setAttribute(efe,""),d}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:2,stackOridinal:10}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(e){0<=e&&e<this._renderedStickyLines.length&&this._renderedStickyLines[e].lineDomNode.focus()}getEditorPositionFromNode(e){if(!e||e.children.length>0)return null;const t=this._getRenderedStickyLineFromChildDomNode(e);if(!t)return null;const i=Are(t.characterMapping,e,0);return new ge(t.lineNumber,i)}getLineNumberFromChildDomNode(e){var t;return((t=this._getRenderedStickyLineFromChildDomNode(e))==null?void 0:t.lineNumber)??null}_getRenderedStickyLineFromChildDomNode(e){const t=this.getLineIndexFromChildDomNode(e);return t===null||t<0||t>=this._renderedStickyLines.length?null:this._renderedStickyLines[t]}getLineIndexFromChildDomNode(e){const t=this._getAttributeValue(e,wH);return t?parseInt(t,10):null}isInStickyLine(e){return this._getAttributeValue(e,$0e)!==void 0}isInFoldingIconDomNode(e){return this._getAttributeValue(e,efe)!==void 0}_getAttributeValue(e,t){for(;e&&e!==this._rootDomNode;){const i=e.getAttribute(t);if(i!==null)return i;e=e.parentElement}}}class KSt{constructor(e,t,i,n,o,r,l){this.index=e,this.lineNumber=t,this.lineDomNode=i,this.lineNumberDomNode=n,this.foldingIcon=o,this.characterMapping=r,this.scrollWidth=l}}class qSt{constructor(e,t,i,n){this.isCollapsed=e,this.foldingStartLine=t,this.foldingEndLine=i,this.dimension=n,this.domNode=document.createElement("div"),this.domNode.style.width=`${n}px`,this.domNode.style.height=`${n}px`,this.domNode.className=ui.asClassName(e?dY:aY)}setVisible(e){this.domNode.style.cursor=e?"pointer":"default",this.domNode.style.opacity=e?"1":"0"}}class M2{constructor(e,t){this.startLineNumber=e,this.endLineNumber=t}}class xY{constructor(e,t,i){this.range=e,this.children=t,this.parent=i}}class dQe{constructor(e,t,i,n){this.uri=e,this.version=t,this.element=i,this.outlineProviderId=n}}var iO=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},hv=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},w2;(function(s){s.OUTLINE_MODEL="outlineModel",s.FOLDING_PROVIDER_MODEL="foldingProviderModel",s.INDENTATION_MODEL="indentationModel"})(w2||(w2={}));var nF;(function(s){s[s.VALID=0]="VALID",s[s.INVALID=1]="INVALID",s[s.CANCELED=2]="CANCELED"})(nF||(nF={}));let Yte=class extends be{constructor(e,t,i,n){switch(super(),this._editor=e,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new Oh(300)),this._updateOperation=this._register(new De),this._editor.getOption(116).defaultModel){case w2.OUTLINE_MODEL:this._modelProviders.push(new _te(this._editor,n));case w2.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new Ote(this._editor,t,n));case w2.INDENTATION_MODEL:this._modelProviders.push(new zte(this._editor,i));break}}dispose(){this._modelProviders.forEach(e=>e.dispose()),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(e){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const t of this._modelProviders){const{statusPromise:i,modelPromise:n}=t.computeStickyModel(e);this._modelPromise=n;const o=await i;if(this._modelPromise!==n)return null;switch(o){case nF.CANCELED:return this._updateOperation.clear(),null;case nF.VALID:return t.stickyModel}}return null}).catch(t=>(wi(t),null))}};Yte=iO([hv(2,ti),hv(3,xt)],Yte);class cQe extends be{constructor(e){super(),this._editor=e,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,nF.INVALID}computeStickyModel(e){if(e.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};const t=Tr(i=>this.createModelFromProvider(i));return{statusPromise:t.then(i=>this.isModelValid(i)?e.isCancellationRequested?nF.CANCELED:(this._stickyModel=this.createStickyModel(e,i),nF.VALID):this._invalid()).then(void 0,i=>(wi(i),nF.CANCELED)),modelPromise:t}}isModelValid(e){return!0}isProviderValid(){return!0}}let _te=class extends cQe{constructor(e,t){super(e),this._languageFeaturesService=t}createModelFromProvider(e){return sf.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),e)}createStickyModel(e,t){var r;const{stickyOutlineElement:i,providerID:n}=this._stickyModelFromOutlineModel(t,(r=this._stickyModel)==null?void 0:r.outlineProviderId),o=this._editor.getModel();return new dQe(o.uri,o.getVersionId(),i,n)}isModelValid(e){return e&&e.children.size>0}_stickyModelFromOutlineModel(e,t){let i;if(Zn.first(e.children.values())instanceof Tye){const l=Zn.find(e.children.values(),a=>a.id===t);if(l)i=l.children;else{let a="",d=-1,c;for(const[h,u]of e.children.entries()){const m=this._findSumOfRangesOfGroup(u);m>d&&(c=u,d=m,a=u.id)}t=a,i=c.children}}else i=e.children;const n=[],o=Array.from(i.values()).sort((l,a)=>{const d=new M2(l.symbol.range.startLineNumber,l.symbol.range.endLineNumber),c=new M2(a.symbol.range.startLineNumber,a.symbol.range.endLineNumber);return this._comparator(d,c)});for(const l of o)n.push(this._stickyModelFromOutlineElement(l,l.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new xY(void 0,n,void 0),providerID:t}}_stickyModelFromOutlineElement(e,t){const i=[];for(const o of e.children.values())if(o.symbol.selectionRange.startLineNumber!==o.symbol.range.endLineNumber)if(o.symbol.selectionRange.startLineNumber!==t)i.push(this._stickyModelFromOutlineElement(o,o.symbol.selectionRange.startLineNumber));else for(const r of o.children.values())i.push(this._stickyModelFromOutlineElement(r,o.symbol.selectionRange.startLineNumber));i.sort((o,r)=>this._comparator(o.range,r.range));const n=new M2(e.symbol.selectionRange.startLineNumber,e.symbol.range.endLineNumber);return new xY(n,i,void 0)}_comparator(e,t){return e.startLineNumber!==t.startLineNumber?e.startLineNumber-t.startLineNumber:t.endLineNumber-e.endLineNumber}_findSumOfRangesOfGroup(e){let t=0;for(const i of e.children.values())t+=this._findSumOfRangesOfGroup(i);return e instanceof Lee?t+e.symbol.range.endLineNumber-e.symbol.selectionRange.startLineNumber:t}};_te=iO([hv(1,xt)],_te);class hQe extends cQe{constructor(e){super(e),this._foldingLimitReporter=new Qye(e)}createStickyModel(e,t){const i=this._fromFoldingRegions(t),n=this._editor.getModel();return new dQe(n.uri,n.getVersionId(),i,void 0)}isModelValid(e){return e!==null}_fromFoldingRegions(e){const t=e.length,i=[],n=new xY(void 0,[],void 0);for(let o=0;o<t;o++){const r=e.getParentIndex(o);let l;r!==-1?l=i[r]:l=n;const a=new xY(new M2(e.getStartLineNumber(o),e.getEndLineNumber(o)+1),[],l);l.children.push(a),i.push(a)}return n}}let zte=class extends hQe{constructor(e,t){super(e),this._languageConfigurationService=t,this.provider=this._register(new Tle(e.getModel(),this._languageConfigurationService,this._foldingLimitReporter))}async createModelFromProvider(e){return this.provider.compute(e)}};zte=iO([hv(1,bo)],zte);let Ote=class extends hQe{constructor(e,t,i){super(e),this._languageFeaturesService=i;const n=jF.getFoldingRangeProviders(this._languageFeaturesService,e.getModel());n.length>0&&(this.provider=this._register(new Cle(e.getModel(),n,t,this._foldingLimitReporter,void 0)))}isProviderValid(){return this.provider!==void 0}async createModelFromProvider(e){var t;return((t=this.provider)==null?void 0:t.compute(e))??null}};Ote=iO([hv(2,xt)],Ote);var $St=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},tfe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class eNt{constructor(e,t,i){this.startLineNumber=e,this.endLineNumber=t,this.nestingDepth=i}}let jte=class extends be{constructor(e,t,i){super(),this._languageFeaturesService=t,this._languageConfigurationService=i,this._onDidChangeStickyScroll=this._register(new fe),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=e,this._sessionStore=this._register(new De),this._updateSoon=this._register(new cs(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(116)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._sessionStore.clear(),this._editor.getOption(116).enabled&&(this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this.updateStickyModelProvider(),this._onDidChangeStickyScroll.fire(),this.update()})),this._sessionStore.add(this._editor.onDidChangeHiddenAreas(()=>this.update())),this._sessionStore.add(this._editor.onDidChangeModelContent(()=>this._updateSoon.schedule())),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>this.update())),this._sessionStore.add(ei(()=>{var t;(t=this._stickyModelProvider)==null||t.dispose(),this._stickyModelProvider=null})),this.updateStickyModelProvider(),this.update())}getVersionId(){var e;return(e=this._model)==null?void 0:e.version}updateStickyModelProvider(){var t;(t=this._stickyModelProvider)==null||t.dispose(),this._stickyModelProvider=null;const e=this._editor;e.hasModel()&&(this._stickyModelProvider=new Yte(e,()=>this._updateSoon.schedule(),this._languageConfigurationService,this._languageFeaturesService))}async update(){var e;(e=this._cts)==null||e.dispose(!0),this._cts=new go,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(e){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const t=await this._stickyModelProvider.update(e);e.isCancellationRequested||(this._model=t)}updateIndex(e){return e===-1?e=0:e<0&&(e=-e-2),e}getCandidateStickyLinesIntersectingFromStickyModel(e,t,i,n,o){if(t.children.length===0)return;let r=o;const l=[];for(let c=0;c<t.children.length;c++){const h=t.children[c];h.range&&l.push(h.range.startLineNumber)}const a=this.updateIndex(xB(l,e.startLineNumber,(c,h)=>c-h)),d=this.updateIndex(xB(l,e.startLineNumber+n,(c,h)=>c-h));for(let c=a;c<=d;c++){const h=t.children[c];if(!h)return;if(h.range){const u=h.range.startLineNumber,m=h.range.endLineNumber;e.startLineNumber<=m+1&&u-1<=e.endLineNumber&&u!==r&&(r=u,i.push(new eNt(u,m-1,n+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(e,h,i,n+1,u))}else this.getCandidateStickyLinesIntersectingFromStickyModel(e,h,i,n,o)}}getCandidateStickyLinesIntersecting(e){var n,o;if(!((n=this._model)!=null&&n.element))return[];let t=[];this.getCandidateStickyLinesIntersectingFromStickyModel(e,this._model.element,t,0,-1);const i=(o=this._editor._getViewModel())==null?void 0:o.getHiddenAreas();if(i)for(const r of i)t=t.filter(l=>!(l.startLineNumber>=r.startLineNumber&&l.endLineNumber<=r.endLineNumber+1));return t}};jte=$St([tfe(1,xt),tfe(2,bo)],jte);var tNt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},eV=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Pte,tM;let ob=(tM=class extends be{constructor(e,t,i,n,o,r,l){super(),this._editor=e,this._contextMenuService=t,this._languageFeaturesService=i,this._instaService=n,this._contextKeyService=l,this._sessionStore=new De,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._stickyScrollWidget=new HSt(this._editor),this._stickyLineCandidateProvider=new jte(this._editor,i,o),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=Q2.Empty,this._onDidResize(),this._readConfiguration();const a=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(c=>{this._readConfigurationChange(c)})),this._register(Te(a,ut.CONTEXT_MENU,async c=>{this._onContextMenu(ai(a),c)})),this._stickyScrollFocusedContextKey=$.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=$.stickyScrollVisible.bindTo(this._contextKeyService);const d=this._register(ap(a));this._register(d.onDidBlur(c=>{this._positionRevealed===!1&&a.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(d.onDidFocus(c=>{this.focus()})),this._registerMouseListeners(),this._register(Te(a,ut.MOUSE_DOWN,c=>{this._onMouseDown=!0}))}static get(e){return e.getContribution(Pte.ID)}_disposeFocusStickyScrollStore(){var e;this._stickyScrollFocusedContextKey.set(!1),(e=this._focusDisposableStore)==null||e.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new De,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex<this._stickyScrollWidget.lineNumberCount-1&&this._focusNav(!0)}focusPrevious(){this._focusedStickyElementIndex>0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(e){this._focusedStickyElementIndex=e?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const e=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:e[this._focusedStickyElementIndex],column:1})}_revealPosition(e){this._reveaInEditor(e,()=>this._editor.revealPosition(e))}_revealLineInCenterIfOutsideViewport(e){this._reveaInEditor(e,()=>this._editor.revealLineInCenterIfOutsideViewport(e.lineNumber,0))}_reveaInEditor(e,t){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,t(),this._editor.setSelection(z.fromPositions(e)),this._editor.focus()}_registerMouseListeners(){const e=this._register(new De),t=this._register(new _9(this._editor,{extractLineNumberFromMouseEvent:o=>{const r=this._stickyScrollWidget.getEditorPositionFromNode(o.target.element);return r?r.lineNumber:0}})),i=o=>{if(!this._editor.hasModel()||o.target.type!==12||o.target.detail!==this._stickyScrollWidget.getId())return null;const r=o.target.element;if(!r||r.innerText!==r.innerHTML)return null;const l=this._stickyScrollWidget.getEditorPositionFromNode(r);return l?{range:new z(l.lineNumber,l.column,l.lineNumber,l.column+r.innerText.length),textElement:r}:null},n=this._stickyScrollWidget.getDomNode();this._register(Fo(n,ut.CLICK,o=>{if(o.ctrlKey||o.altKey||o.metaKey||!o.leftButton)return;if(o.shiftKey){const d=this._stickyScrollWidget.getLineIndexFromChildDomNode(o.target);if(d===null)return;const c=new ge(this._endLineNumbers[d],1);this._revealLineInCenterIfOutsideViewport(c);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(o.target)){const d=this._stickyScrollWidget.getLineNumberFromChildDomNode(o.target);this._toggleFoldingRegionForLine(d);return}if(!this._stickyScrollWidget.isInStickyLine(o.target))return;let a=this._stickyScrollWidget.getEditorPositionFromNode(o.target);if(!a){const d=this._stickyScrollWidget.getLineNumberFromChildDomNode(o.target);if(d===null)return;a=new ge(d,1)}this._revealPosition(a)})),this._register(Fo(n,ut.MOUSE_MOVE,o=>{if(o.shiftKey){const r=this._stickyScrollWidget.getLineIndexFromChildDomNode(o.target);if(r===null||this._showEndForLine!==null&&this._showEndForLine===r)return;this._showEndForLine=r,this._renderStickyScroll();return}this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(Te(n,ut.MOUSE_LEAVE,o=>{this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(t.onMouseMoveOrRelevantKeyDown(([o,r])=>{const l=i(o);if(!l||!o.hasTriggerModifier||!this._editor.hasModel()){e.clear();return}const{range:a,textElement:d}=l;if(!a.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=a,e.clear();else if(d.style.textDecoration==="underline")return;const c=new go;e.add(ei(()=>c.dispose(!0)));let h;Vk(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new ge(a.startLineNumber,a.startColumn+1),!1,c.token).then(u=>{if(!c.token.isCancellationRequested)if(u.length!==0){this._candidateDefinitionsLength=u.length;const m=d;h!==m?(e.clear(),h=m,h.style.textDecoration="underline",e.add(ei(()=>{h.style.textDecoration="none"}))):h||(h=m,h.style.textDecoration="underline",e.add(ei(()=>{h.style.textDecoration="none"})))}else e.clear()})})),this._register(t.onCancel(()=>{e.clear()})),this._register(t.onExecute(async o=>{if(o.target.type!==12||o.target.detail!==this._stickyScrollWidget.getId())return;const r=this._stickyScrollWidget.getEditorPositionFromNode(o.target.element);r&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:r.lineNumber,column:1})),this._instaService.invokeFunction(hye,o,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(e,t){const i=new _u(e,t);this._contextMenuService.showContextMenu({menuId:Gt.StickyScrollContext,getAnchor:()=>i})}_toggleFoldingRegionForLine(e){if(!this._foldingModel||e===null)return;const t=this._stickyScrollWidget.getRenderedStickyLine(e),i=t==null?void 0:t.foldingIcon;if(!i)return;Qle(this._foldingModel,Number.MAX_VALUE,[e]),i.isCollapsed=!i.isCollapsed;const n=(i.isCollapsed?this._editor.getTopForLineNumber(i.foldingEndLine):this._editor.getTopForLineNumber(i.foldingStartLine))-this._editor.getOption(67)*t.index+1;this._editor.setScrollTop(n),this._renderStickyScroll(e)}_readConfiguration(){const e=this._editor.getOption(116);if(e.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else e.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(i=>{i.scrollTopChanged&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(i=>this._onTokensChange(i))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=void 0,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(68).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=void 0,this._renderStickyScroll(0)}))}_readConfigurationChange(e){(e.hasChanged(116)||e.hasChanged(73)||e.hasChanged(67)||e.hasChanged(111)||e.hasChanged(68))&&this._readConfiguration(),e.hasChanged(68)&&this._renderStickyScroll(0)}_needsUpdate(e){const t=this._stickyScrollWidget.getCurrentLines();for(const i of t)for(const n of e.ranges)if(i>=n.fromLineNumber&&i<=n.toLineNumber)return!0;return!1}_onTokensChange(e){this._needsUpdate(e)&&this._renderStickyScroll(0)}_onDidResize(){const t=this._editor.getLayoutInfo().height/this._editor.getOption(67);this._maxStickyLines=Math.round(t*.25)}async _renderStickyScroll(e){const t=this._editor.getModel();if(!t||t.isTooLargeForTokenization()){this._resetState();return}const i=this._updateAndGetMinRebuildFromLine(e),n=this._stickyLineCandidateProvider.getVersionId();if(n===void 0||n===t.getVersionId())if(!this._focused)await this._updateState(i);else if(this._focusedStickyElementIndex===-1)await this._updateState(i),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const r=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];await this._updateState(i),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(r)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}_updateAndGetMinRebuildFromLine(e){if(e!==void 0){const t=this._minRebuildFromLine!==void 0?this._minRebuildFromLine:1/0;this._minRebuildFromLine=Math.min(e,t)}return this._minRebuildFromLine}async _updateState(e){var i;this._minRebuildFromLine=void 0,this._foldingModel=await((i=jF.get(this._editor))==null?void 0:i.getFoldingModel())??void 0,this._widgetState=this.findScrollWidgetState();const t=this._widgetState.startLineNumbers.length>0;this._stickyScrollVisibleContextKey.set(t),this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e)}async _resetState(){this._minRebuildFromLine=void 0,this._foldingModel=void 0,this._widgetState=Q2.Empty,this._stickyScrollVisibleContextKey.set(!1),this._stickyScrollWidget.setState(void 0,void 0)}findScrollWidgetState(){const e=this._editor.getOption(67),t=Math.min(this._maxStickyLines,this._editor.getOption(116).maxLineCount),i=this._editor.getScrollTop();let n=0;const o=[],r=[],l=this._editor.getVisibleRanges();if(l.length!==0){const a=new M2(l[0].startLineNumber,l[l.length-1].endLineNumber),d=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(a);for(const c of d){const h=c.startLineNumber,u=c.endLineNumber,m=c.nestingDepth;if(u-h>0){const p=(m-1)*e,g=m*e,f=this._editor.getBottomForLineNumber(h)-i,b=this._editor.getTopForLineNumber(u)-i,U=this._editor.getBottomForLineNumber(u)-i;if(p>b&&p<=U){o.push(h),r.push(u+1),n=U-g;break}else g>f&&g<=U&&(o.push(h),r.push(u+1));if(o.length===t)break}}}return this._endLineNumbers=r,new Q2(o,r,n,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}},Pte=tM,tM.ID="store.contrib.stickyScrollController",tM);ob=Pte=tNt([eV(1,Uc),eV(2,xt),eV(3,ti),eV(4,bo),eV(5,dh),eV(6,fi)],ob);class iNt extends Ha{constructor(){super({id:"editor.action.toggleStickyScroll",title:{...Ni("toggleEditorStickyScroll","Toggle Editor Sticky Scroll"),mnemonicTitle:F({key:"mitoggleStickyScroll",comment:["&& denotes a mnemonic"]},"&&Toggle Editor Sticky Scroll")},metadata:{description:Ni("toggleEditorStickyScroll.description","Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport")},category:jSt.View,toggled:{condition:Ge.equals("config.editor.stickyScroll.enabled",!0),title:F("stickyScroll","Sticky Scroll"),mnemonicTitle:F({key:"miStickyScroll",comment:["&& denotes a mnemonic"]},"&&Sticky Scroll")},menu:[{id:Gt.CommandPalette},{id:Gt.MenubarAppearanceMenu,group:"4_editor",order:3},{id:Gt.StickyScrollContext}]})}async run(e){const t=e.get(Hi),i=!t.getValue("editor.stickyScroll.enabled");return t.updateValue("editor.stickyScroll.enabled",i)}}const nO=100;class nNt extends Fp{constructor(){super({id:"editor.action.focusStickyScroll",title:{...Ni("focusStickyScroll","Focus on the editor sticky scroll"),mnemonicTitle:F({key:"mifocusStickyScroll",comment:["&& denotes a mnemonic"]},"&&Focus Sticky Scroll")},precondition:Ge.and(Ge.has("config.editor.stickyScroll.enabled"),$.stickyScrollVisible),menu:[{id:Gt.CommandPalette}]})}runEditorCommand(e,t){var i;(i=ob.get(t))==null||i.focus()}}class sNt extends Fp{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:Ni("selectNextStickyScrollLine.title","Select the next editor sticky scroll line"),precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:nO,primary:18}})}runEditorCommand(e,t){var i;(i=ob.get(t))==null||i.focusNext()}}class oNt extends Fp{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:Ni("selectPreviousStickyScrollLine.title","Select the previous sticky scroll line"),precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:nO,primary:16}})}runEditorCommand(e,t){var i;(i=ob.get(t))==null||i.focusPrevious()}}class rNt extends Fp{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:Ni("goToFocusedStickyScrollLine.title","Go to the focused sticky scroll line"),precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:nO,primary:3}})}runEditorCommand(e,t){var i;(i=ob.get(t))==null||i.goToFocused()}}class lNt extends Fp{constructor(){super({id:"editor.action.selectEditor",title:Ni("selectEditor.title","Select Editor"),precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:nO,primary:9}})}runEditorCommand(e,t){var i;(i=ob.get(t))==null||i.selectEditor()}}Wn(ob.ID,ob,1);Cs(iNt);Cs(nNt);Cs(oNt);Cs(sNt);Cs(rNt);Cs(lNt);var uQe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_T=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class aNt{constructor(e,t,i,n,o,r){this.range=e,this.insertText=t,this.filterText=i,this.additionalTextEdits=n,this.command=o,this.completion=r}}let Hte=class extends xje{constructor(e,t,i,n,o,r){super(o.disposable),this.model=e,this.line=t,this.word=i,this.completionModel=n,this._suggestMemoryService=r}canBeReused(e,t,i){return this.model===e&&this.line===t&&this.word.word.length>0&&this.word.startColumn===i.startColumn&&this.word.endColumn<i.endColumn&&this.completionModel.getIncompleteProvider().size===0}get items(){const e=[],{items:t}=this.completionModel,i=this._suggestMemoryService.select(this.model,{lineNumber:this.line,column:this.word.endColumn+this.completionModel.lineContext.characterCountDelta},t),n=Zn.slice(t,i),o=Zn.slice(t,0,i);let r=5;for(const l of Zn.concat(n,o)){if(l.score===op.Default)continue;const a=new z(l.editStart.lineNumber,l.editStart.column,l.editInsertEnd.lineNumber,l.editInsertEnd.column+this.completionModel.lineContext.characterCountDelta),d=l.completion.insertTextRules&&l.completion.insertTextRules&4?{snippet:l.completion.insertText}:l.completion.insertText;e.push(new aNt(a,d,l.filterTextLow??l.labelLow,l.completion.additionalTextEdits,l.completion.command,l)),r-->=0&&l.resolve(Gi.None)}return e}};Hte=uQe([_T(5,q9)],Hte);let Kte=class extends be{constructor(e,t,i,n){super(),this._languageFeatureService=e,this._clipboardService=t,this._suggestMemoryService=i,this._editorService=n,this._store.add(e.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(e,t,i,n){var m;if(i.selectedSuggestionInfo)return;let o;for(const p of this._editorService.listCodeEditors())if(p.getModel()===e){o=p;break}if(!o)return;const r=o.getOption(90);if(IW.isAllOff(r))return;e.tokenization.tokenizeIfCheap(t.lineNumber);const l=e.tokenization.getLineTokens(t.lineNumber),a=l.getStandardTokenType(l.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if(IW.valueFor(r,a)!=="inline")return;let d=e.getWordAtPosition(t),c;if(d!=null&&d.word||(c=this._getTriggerCharacterInfo(e,t)),!(d!=null&&d.word)&&!c||(d||(d=e.getWordUntilPosition(t)),d.endColumn!==t.column))return;let h;const u=e.getValueInRange(new z(t.lineNumber,1,t.lineNumber,t.column));if(!c&&((m=this._lastResult)!=null&&m.canBeReused(e,t.lineNumber,d))){const p=new D0e(u,t.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=p,this._lastResult.acquire(),h=this._lastResult}else{const p=await Ble(this._languageFeatureService.completionProvider,e,t,new iv(void 0,SY.createSuggestFilter(o).itemKind,c==null?void 0:c.providers),c&&{triggerKind:1,triggerCharacter:c.ch},n);let g;p.needsClipboard&&(g=await this._clipboardService.readText());const f=new yU(p.items,t.column,new D0e(u,0),ZY.None,o.getOption(119),o.getOption(113),{boostFullMatch:!1,firstMatchCanBeWeak:!1},g);h=new Hte(e,t.lineNumber,d,f,p,this._suggestMemoryService)}return this._lastResult=h,h}handleItemDidShow(e,t){t.completion.resolve(Gi.None)}freeInlineCompletions(e){e.release()}_getTriggerCharacterInfo(e,t){var o;const i=e.getValueInRange(z.fromPositions({lineNumber:t.lineNumber,column:t.column-1},t)),n=new Set;for(const r of this._languageFeatureService.completionProvider.all(e))(o=r.triggerCharacters)!=null&&o.includes(i)&&n.add(r);if(n.size!==0)return{providers:n,ch:i}}};Kte=uQe([_T(0,xt),_T(1,hb),_T(2,q9),_T(3,kn)],Kte);QM(Kte);class dNt extends Tt{constructor(){super({id:"editor.action.forceRetokenize",label:F("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getModel();i.tokenization.resetTokenization();const n=new jr;i.tokenization.forceTokenization(i.getLineCount()),n.stop(),console.log(`tokenization took ${n.elapsed()}`)}}lt(dNt);const _z=class _z extends Ha{constructor(){super({id:_z.ID,title:Ni({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},metadata:{description:Ni("tabMovesFocusDescriptions","Determines whether the tab key moves focus around the workbench or inserts the tab character in the current editor. This is also called tab trapping, tab navigation, or tab focus mode.")},f1:!0})}run(){const t=!Xy.getTabFocusMode();Xy.setTabFocusMode(t),ja(t?F("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element"):F("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}};_z.ID="editor.action.toggleTabFocusMode";let qte=_z;Cs(qte);var cNt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ife=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let $te=class extends be{get enabled(){return this._enabled}set enabled(e){e?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=e}constructor(e,t,i={},n,o){super(),this._link=t,this._hoverService=n,this._enabled=!0,this.el=nt(e,gt("a.monaco-link",{tabIndex:t.tabIndex??0,href:t.href},t.label)),this.hoverDelegate=i.hoverDelegate??Ka("mouse"),this.setTooltip(t.title),this.el.setAttribute("role","button");const r=this._register(new fn(this.el,"click")),l=this._register(new fn(this.el,"keypress")),a=Ut.chain(l.event,h=>h.map(u=>new Ts(u)).filter(u=>u.keyCode===3)),d=this._register(new fn(this.el,vs.Tap)).event;this._register(Hl.addTarget(this.el));const c=Ut.any(r.event,a,d);this._register(c(h=>{this.enabled&&(Un.stop(h,!0),i!=null&&i.opener?i.opener(this._link.href):o.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}setTooltip(e){this.hoverDelegate.showNativeHover?this.el.title=e??"":!this.hover&&e?this.hover=this._register(this._hoverService.setupManagedHover(this.hoverDelegate,this.el,e)):this.hover&&this.hover.update(e)}};$te=cNt([ife(3,t0),ife(4,Bd)],$te);var mQe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},pQe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const hNt=26;let eie=class extends be{constructor(e,t){super(),this._editor=e,this.instantiationService=t,this.banner=this._register(this.instantiationService.createInstance(tie))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(e){this.banner.show({...e,onClose:()=>{var t;this.hide(),(t=e.onClose)==null||t.call(e)}}),this._editor.setBanner(this.banner.element,hNt)}};eie=mQe([pQe(1,ti)],eie);let tie=class extends be{constructor(e){super(),this.instantiationService=e,this.markdownRenderer=this.instantiationService.createInstance($f,{}),this.element=gt("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(e){if(e.ariaLabel)return e.ariaLabel;if(typeof e.message=="string")return e.message}getBannerMessage(e){if(typeof e=="string"){const t=gt("span");return t.innerText=e,t}return this.markdownRenderer.render(e).element}clear(){dl(this.element)}show(e){dl(this.element);const t=this.getAriaLabel(e);t&&this.element.setAttribute("aria-label",t);const i=nt(this.element,gt("div.icon-container"));i.setAttribute("aria-hidden","true"),e.icon&&i.appendChild(gt(`div${ui.asCSSSelector(e.icon)}`));const n=nt(this.element,gt("div.message-container"));if(n.setAttribute("aria-hidden","true"),n.appendChild(this.getBannerMessage(e.message)),this.messageActionsContainer=nt(this.element,gt("div.message-actions-container")),e.actions)for(const r of e.actions)this._register(this.instantiationService.createInstance($te,this.messageActionsContainer,{...r,tabIndex:-1},{}));const o=nt(this.element,gt("div.action-container"));this.actionBar=this._register(new ih(o)),this.actionBar.push(this._register(new ac("banner.close","Close Banner",ui.asClassName(kVe),!0,()=>{typeof e.onClose=="function"&&e.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};tie=mQe([pQe(0,ti)],tie);var Ole=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},q1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const uNt=Os("extensions-warning-message",ct.warning,F("warningIcon","Icon shown with a warning message in the extensions editor."));var Bv;let uv=(Bv=class extends be{constructor(e,t,i,n){super(),this._editor=e,this._editorWorkerService=t,this._workspaceTrustService=i,this._highlighter=null,this._bannerClosed=!1,this._updateState=o=>{if(o&&o.hasMore){if(this._bannerClosed)return;const r=Math.max(o.ambiguousCharacterCount,o.nonBasicAsciiCharacterCount,o.invisibleCharacterCount);let l;if(o.nonBasicAsciiCharacterCount>=r)l={message:F("unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters","This document contains many non-basic ASCII unicode characters"),command:new pv};else if(o.ambiguousCharacterCount>=r)l={message:F("unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters","This document contains many ambiguous unicode characters"),command:new XN};else if(o.invisibleCharacterCount>=r)l={message:F("unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters","This document contains many invisible unicode characters"),command:new mv};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:l.message,icon:uNt,actions:[{label:l.command.shortLabel,href:`command:${l.command.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(n.createInstance(eie,e)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=e.getOption(126),this._register(i.onDidChangeTrust(o=>{this._updateHighlighter()})),this._register(e.onDidChangeConfiguration(o=>{o.hasChanged(126)&&(this._options=e.getOption(126),this._updateHighlighter())})),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const e=mNt(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([e.nonBasicASCII,e.ambiguousCharacters,e.invisibleCharacters].every(i=>i===!1))return;const t={nonBasicASCII:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments,includeStrings:e.includeStrings,allowedCodePoints:Object.keys(e.allowedCharacters).map(i=>i.codePointAt(0)),allowedLocales:Object.keys(e.allowedLocales).map(i=>i==="_os"?new Intl.NumberFormat().resolvedOptions().locale:i==="_vscode"?vOe:i)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new iie(this._editor,t,this._updateState,this._editorWorkerService):this._highlighter=new pNt(this._editor,t,this._updateState)}getDecorationInfo(e){return this._highlighter?this._highlighter.getDecorationInfo(e):null}},Bv.ID="editor.contrib.unicodeHighlighter",Bv);uv=Ole([q1(1,Ld),q1(2,qNe),q1(3,ti)],uv);function mNt(s,e){return{nonBasicASCII:e.nonBasicASCII===Tc?!s:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments===Tc?!s:e.includeComments,includeStrings:e.includeStrings===Tc?!s:e.includeStrings,allowedCharacters:e.allowedCharacters,allowedLocales:e.allowedLocales}}let iie=class extends be{constructor(e,t,i,n){super(),this._editor=e,this._options=t,this._updateState=i,this._editorWorkerService=n,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new cs(()=>this._update(),250)),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const e=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(t=>{if(this._model.isDisposed()||this._model.getVersionId()!==e)return;this._updateState(t);const i=[];if(!t.hasMore)for(const n of t.ranges)i.push({range:n,options:IY.instance.getDecorationFromOptions(this._options)});this._decorations.set(i)})}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel();if(!vre(t,e))return null;const i=t.getValueInRange(e.range);return{reason:fQe(i,this._options),inComment:kre(t,e),inString:xre(t,e)}}};iie=Ole([q1(3,Ld)],iie);class pNt extends be{constructor(e,t,i){super(),this._editor=e,this._options=t,this._updateState=i,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new cs(()=>this._update(),250)),this._register(this._editor.onDidLayoutChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidScrollChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeHiddenAreas(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const e=this._editor.getVisibleRanges(),t=[],i={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const n of e){const o=jse.computeUnicodeHighlights(this._model,this._options,n);for(const r of o.ranges)i.ranges.push(r);i.ambiguousCharacterCount+=i.ambiguousCharacterCount,i.invisibleCharacterCount+=i.invisibleCharacterCount,i.nonBasicAsciiCharacterCount+=i.nonBasicAsciiCharacterCount,i.hasMore=i.hasMore||o.hasMore}if(!i.hasMore)for(const n of i.ranges)t.push({range:n,options:IY.instance.getDecorationFromOptions(this._options)});this._updateState(i),this._decorations.set(t)}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel(),i=t.getValueInRange(e.range);return vre(t,e)?{reason:fQe(i,this._options),inComment:kre(t,e),inString:xre(t,e)}:null}}const gQe=F("unicodeHighlight.configureUnicodeHighlightOptions","Configure Unicode Highlight Options");let nie=class{constructor(e,t,i){this._editor=e,this._languageService=t,this._openerService=i,this.hoverOrdinal=5}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1)return[];const i=this._editor.getModel(),n=this._editor.getContribution(uv.ID);if(!n)return[];const o=[],r=new Set;let l=300;for(const a of t){const d=n.getDecorationInfo(a);if(!d)continue;const h=i.getValueInRange(a.range).codePointAt(0),u=TH(h);let m;switch(d.reason.kind){case 0:{Ov(d.reason.confusableWith)?m=F("unicodeHighlight.characterIsAmbiguousASCII","The character {0} could be confused with the ASCII character {1}, which is more common in source code.",u,TH(d.reason.confusableWith.codePointAt(0))):m=F("unicodeHighlight.characterIsAmbiguous","The character {0} could be confused with the character {1}, which is more common in source code.",u,TH(d.reason.confusableWith.codePointAt(0)));break}case 1:m=F("unicodeHighlight.characterIsInvisible","The character {0} is invisible.",u);break;case 2:m=F("unicodeHighlight.characterIsNonBasicAscii","The character {0} is not a basic ASCII character.",u);break}if(r.has(m))continue;r.add(m);const p={codePoint:h,reason:d.reason,inComment:d.inComment,inString:d.inString},g=F("unicodeHighlight.adjustSettings","Adjust settings"),f=`command:${EY.ID}?${encodeURIComponent(JSON.stringify(p))}`,b=new _l("",!0).appendMarkdown(m).appendText(" ").appendLink(f,g,gQe);o.push(new Ju(this,a.range,[b],!1,l++))}return o}renderHoverParts(e,t){return J0t(e,t,this._editor,this._languageService,this._openerService)}};nie=Ole([q1(1,ao),q1(2,Bd)],nie);function sie(s){return`U+${s.toString(16).padStart(4,"0")}`}function TH(s){let e=`\`${sie(s)}\``;return kS.isInvisibleCharacter(s)||(e+=` "${`${gNt(s)}`}"`),e}function gNt(s){return s===96?"`` ` ``":"`"+String.fromCodePoint(s)+"`"}function fQe(s,e){return jse.computeUnicodeHighlightReason(s,e)}const zz=class zz{constructor(){this.map=new Map}getDecorationFromOptions(e){return this.getDecoration(!e.includeComments,!e.includeStrings)}getDecoration(e,t){const i=`${e}${t}`;let n=this.map.get(i);return n||(n=ki.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:e,hideInStringTokens:t}),this.map.set(i,n)),n}};zz.instance=new zz;let IY=zz;class fNt extends Tt{constructor(){super({id:XN.ID,label:F("action.unicodeHighlight.disableHighlightingInComments","Disable highlighting of characters in comments"),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=F("unicodeHighlight.disableHighlightingInComments.shortLabel","Disable Highlight In Comments")}async run(e,t,i){const n=e==null?void 0:e.get(Hi);n&&this.runAction(n)}async runAction(e){await e.updateValue(fd.includeComments,!1,2)}}class bNt extends Tt{constructor(){super({id:XN.ID,label:F("action.unicodeHighlight.disableHighlightingInStrings","Disable highlighting of characters in strings"),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=F("unicodeHighlight.disableHighlightingInStrings.shortLabel","Disable Highlight In Strings")}async run(e,t,i){const n=e==null?void 0:e.get(Hi);n&&this.runAction(n)}async runAction(e){await e.updateValue(fd.includeStrings,!1,2)}}const Oz=class Oz extends Tt{constructor(){super({id:Oz.ID,label:F("action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters","Disable highlighting of ambiguous characters"),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=F("unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel","Disable Ambiguous Highlight")}async run(e,t,i){const n=e==null?void 0:e.get(Hi);n&&this.runAction(n)}async runAction(e){await e.updateValue(fd.ambiguousCharacters,!1,2)}};Oz.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";let XN=Oz;const jz=class jz extends Tt{constructor(){super({id:jz.ID,label:F("action.unicodeHighlight.disableHighlightingOfInvisibleCharacters","Disable highlighting of invisible characters"),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=F("unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel","Disable Invisible Highlight")}async run(e,t,i){const n=e==null?void 0:e.get(Hi);n&&this.runAction(n)}async runAction(e){await e.updateValue(fd.invisibleCharacters,!1,2)}};jz.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";let mv=jz;const Pz=class Pz extends Tt{constructor(){super({id:Pz.ID,label:F("action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters","Disable highlighting of non basic ASCII characters"),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=F("unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel","Disable Non ASCII Highlight")}async run(e,t,i){const n=e==null?void 0:e.get(Hi);n&&this.runAction(n)}async runAction(e){await e.updateValue(fd.nonBasicASCII,!1,2)}};Pz.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";let pv=Pz;const Hz=class Hz extends Tt{constructor(){super({id:Hz.ID,label:F("action.unicodeHighlight.showExcludeOptions","Show Exclude Options"),alias:"Show Exclude Options",precondition:void 0})}async run(e,t,i){const{codePoint:n,reason:o,inString:r,inComment:l}=i,a=String.fromCodePoint(n),d=e.get(tu),c=e.get(Hi);function h(p){return kS.isInvisibleCharacter(p)?F("unicodeHighlight.excludeInvisibleCharFromBeingHighlighted","Exclude {0} (invisible character) from being highlighted",sie(p)):F("unicodeHighlight.excludeCharFromBeingHighlighted","Exclude {0} from being highlighted",`${sie(p)} "${a}"`)}const u=[];if(o.kind===0)for(const p of o.notAmbiguousInLocales)u.push({label:F("unicodeHighlight.allowCommonCharactersInLanguage",'Allow unicode characters that are more common in the language "{0}".',p),run:async()=>{FNt(c,[p])}});if(u.push({label:h(n),run:()=>UNt(c,[n])}),l){const p=new fNt;u.push({label:p.label,run:async()=>p.runAction(c)})}else if(r){const p=new bNt;u.push({label:p.label,run:async()=>p.runAction(c)})}if(o.kind===0){const p=new XN;u.push({label:p.label,run:async()=>p.runAction(c)})}else if(o.kind===1){const p=new mv;u.push({label:p.label,run:async()=>p.runAction(c)})}else if(o.kind===2){const p=new pv;u.push({label:p.label,run:async()=>p.runAction(c)})}else ANt(o);const m=await d.pick(u,{title:gQe});m&&await m.run()}};Hz.ID="editor.action.unicodeHighlight.showExcludeOptions";let EY=Hz;async function UNt(s,e){const t=s.getValue(fd.allowedCharacters);let i;typeof t=="object"&&t?i=t:i={};for(const n of e)i[String.fromCodePoint(n)]=!0;await s.updateValue(fd.allowedCharacters,i,2)}async function FNt(s,e){var n;const t=(n=s.inspect(fd.allowedLocales).user)==null?void 0:n.value;let i;typeof t=="object"&&t?i=Object.assign({},t):i={};for(const o of e)i[o]=!0;await s.updateValue(fd.allowedLocales,i,2)}function ANt(s){throw new Error(`Unexpected value: ${s}`)}lt(XN);lt(mv);lt(pv);lt(EY);Wn(uv.ID,uv,1);aR.register(nie);var ZNt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},nfe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const bQe="ignoreUnusualLineTerminators";function SNt(s,e,t){s.setModelProperty(e.uri,bQe,t)}function NNt(s,e){return s.getModelProperty(e.uri,bQe)}var Lv;let DY=(Lv=class extends be{constructor(e,t,i){super(),this._editor=e,this._dialogService=t,this._codeEditorService=i,this._isPresentingDialog=!1,this._config=this._editor.getOption(127),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(127)&&(this._config=this._editor.getOption(127),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(n=>{n.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const e=this._editor.getModel();if(!e.mightContainUnusualLineTerminators()||NNt(this._codeEditorService,e)===!0||this._editor.getOption(92))return;if(this._config==="auto"){e.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let i;try{this._isPresentingDialog=!0,i=await this._dialogService.confirm({title:F("unusualLineTerminators.title","Unusual Line Terminators"),message:F("unusualLineTerminators.message","Detected unusual line terminators"),detail:F("unusualLineTerminators.detail","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.",Hh(e.uri)),primaryButton:F({key:"unusualLineTerminators.fix",comment:["&& denotes a mnemonic"]},"&&Remove Unusual Line Terminators"),cancelButton:F("unusualLineTerminators.ignore","Ignore")})}finally{this._isPresentingDialog=!1}if(!i.confirmed){SNt(this._codeEditorService,e,!0);return}e.removeUnusualLineTerminators(this._editor.getSelections())}},Lv.ID="editor.contrib.unusualLineTerminatorsDetector",Lv);DY=ZNt([nfe(1,qv),nfe(2,kn)],DY);Wn(DY.ID,DY,1);var RNt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},VNt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class sfe{constructor(){this.selector={language:"*"}}provideDocumentHighlights(e,t,i){const n=[],o=e.getWordAtPosition({lineNumber:t.lineNumber,column:t.column});return o?e.isDisposed()?void 0:e.findMatches(o.word,!0,!1,!0,jJ,!1).map(l=>({range:l.range,kind:Sy.Text})):Promise.resolve(n)}provideMultiDocumentHighlights(e,t,i,n){const o=new Or,r=e.getWordAtPosition({lineNumber:t.lineNumber,column:t.column});if(!r)return Promise.resolve(o);for(const l of[e,...i]){if(l.isDisposed())continue;const d=l.findMatches(r.word,!0,!1,!0,jJ,!1).map(c=>({range:c.range,kind:Sy.Text}));d&&o.set(l.uri,d)}return o}}let oie=class extends be{constructor(e){super(),this._register(e.documentHighlightProvider.register("*",new sfe)),this._register(e.multiDocumentHighlightProvider.register("*",new sfe))}};oie=RNt([VNt(0,xt)],oie);var UQe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},jD=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Do,rie;const jle=new yt("hasWordHighlights",!1);function FQe(s,e,t,i){const n=s.ordered(e);return Lse(n.map(o=>()=>Promise.resolve(o.provideDocumentHighlights(e,t,i)).then(void 0,vo)),o=>o!=null).then(o=>{if(o){const r=new Or;return r.set(e.uri,o),r}return new Or})}function WNt(s,e,t,i,n,o){const r=s.ordered(e);return Lse(r.map(l=>()=>{const a=o.filter(d=>xSe(d)).filter(d=>noe(l.selector,d.uri,d.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(l.provideMultiDocumentHighlights(e,t,a,n)).then(void 0,vo)}),l=>l!=null)}class AQe{constructor(e,t,i){this._model=e,this._selection=t,this._wordSeparators=i,this._wordRange=this._getCurrentWordRange(e,t),this._result=null}get result(){return this._result||(this._result=Tr(e=>this._compute(this._model,this._selection,this._wordSeparators,e))),this._result}_getCurrentWordRange(e,t){const i=e.getWordAtPosition(t.getPosition());return i?new z(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):null}isValid(e,t,i){const n=t.startLineNumber,o=t.startColumn,r=t.endColumn,l=this._getCurrentWordRange(e,t);let a=!!(this._wordRange&&this._wordRange.equalsRange(l));for(let d=0,c=i.length;!a&&d<c;d++){const h=i.getRange(d);h&&h.startLineNumber===n&&h.startColumn<=o&&h.endColumn>=r&&(a=!0)}return a}cancel(){this.result.cancel()}}class yNt extends AQe{constructor(e,t,i,n){super(e,t,i),this._providers=n}_compute(e,t,i,n){return FQe(this._providers,e,t.getPosition(),n).then(o=>o||new Or)}}class QNt extends AQe{constructor(e,t,i,n,o){super(e,t,i),this._providers=n,this._otherModels=o}_compute(e,t,i,n){return WNt(this._providers,e,t.getPosition(),i,n,this._otherModels).then(o=>o||new Or)}}function MNt(s,e,t,i,n){return new yNt(e,t,n,s)}function wNt(s,e,t,i,n,o){return new QNt(e,t,n,s,o)}Cd("_executeDocumentHighlights",async(s,e,t)=>{const i=s.get(xt),n=await FQe(i.documentHighlightProvider,e,t,Gi.None);return n==null?void 0:n.get(e.uri)});var uN;let lie=(uN=class{constructor(e,t,i,n,o){this.toUnhook=new De,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new Or,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.runDelayer=this.toUnhook.add(new Oh(50)),this.editor=e,this.providers=t,this.multiDocumentProviders=i,this.codeEditorService=o,this._hasWordHighlights=jle.bindTo(n),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(81),this.model=this.editor.getModel(),this.toUnhook.add(e.onDidChangeCursorPosition(r=>{this._ignorePositionChangeEvent||this.occurrencesHighlight!=="off"&&this.runDelayer.trigger(()=>{this._onPositionChanged(r)})})),this.toUnhook.add(e.onDidFocusEditorText(r=>{this.occurrencesHighlight!=="off"&&(this.workerRequest||this.runDelayer.trigger(()=>{this._run()}))})),this.toUnhook.add(e.onDidChangeModelContent(r=>{W3(this.model.uri,"output")||this._stopAll()})),this.toUnhook.add(e.onDidChangeModel(r=>{!r.newModelUrl&&r.oldModelUrl?this._stopSingular():Do.query&&this._run()})),this.toUnhook.add(e.onDidChangeConfiguration(r=>{var a,d;const l=this.editor.getOption(81);if(this.occurrencesHighlight!==l)switch(this.occurrencesHighlight=l,l){case"off":this._stopAll();break;case"singleFile":this._stopAll((d=(a=Do.query)==null?void 0:a.modelInfo)==null?void 0:d.model);break;case"multiFile":Do.query&&this._run(!0);break;default:console.warn("Unknown occurrencesHighlight setting value:",l);break}})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,Do.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight!=="off"&&(this.runDelayer.cancel(),this._run())}_getSortedHighlights(){return this.decorations.getRanges().sort(z.compareRangesUsingStarts)}moveNext(){const e=this._getSortedHighlights(),i=(e.findIndex(o=>o.containsPosition(this.editor.getPosition()))+1)%e.length,n=e[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(n.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(n);const o=this._getWord();if(o){const r=this.editor.getModel().getLineContent(n.startLineNumber);ja(`${r}, ${i+1} of ${e.length} for '${o.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const e=this._getSortedHighlights(),i=(e.findIndex(o=>o.containsPosition(this.editor.getPosition()))-1+e.length)%e.length,n=e[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(n.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(n);const o=this._getWord();if(o){const r=this.editor.getModel().getLineContent(n.startLineNumber);ja(`${r}, ${i+1} of ${e.length} for '${o.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const e=Do.storedDecorationIDs.get(this.editor.getModel().uri);e&&(this.editor.removeDecorations(e),Do.storedDecorationIDs.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(e){const t=this.codeEditorService.listCodeEditors(),i=[];for(const n of t){if(!n.hasModel()||uL(n.getModel().uri,e==null?void 0:e.uri))continue;const o=Do.storedDecorationIDs.get(n.getModel().uri);if(!o)continue;n.removeDecorations(o),i.push(n.getModel().uri);const r=HF.get(n);r!=null&&r.wordHighlighter&&r.wordHighlighter.decorations.length>0&&(r.wordHighlighter.decorations.clear(),r.wordHighlighter.workerRequest=null,r.wordHighlighter._hasWordHighlights.set(!1))}for(const n of i)Do.storedDecorationIDs.delete(n)}_stopSingular(){var e,t,i,n;this._removeSingleDecorations(),this.editor.hasTextFocus()&&(((e=this.editor.getModel())==null?void 0:e.uri.scheme)!==Ti.vscodeNotebookCell&&((i=(t=Do.query)==null?void 0:t.modelInfo)==null?void 0:i.model.uri.scheme)!==Ti.vscodeNotebookCell?(Do.query=null,this._run()):(n=Do.query)!=null&&n.modelInfo&&(Do.query.modelInfo=null)),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(e){this._removeAllDecorations(e),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(e){var t;if(this.occurrencesHighlight==="off"){this._stopAll();return}if(e.reason!==3&&((t=this.editor.getModel())==null?void 0:t.uri.scheme)!==Ti.vscodeNotebookCell){this._stopAll();return}this._run()}_getWord(){const e=this.editor.getSelection(),t=e.startLineNumber,i=e.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber:t,column:i})}getOtherModelsToHighlight(e){if(!e)return[];if(e.uri.scheme===Ti.vscodeNotebookCell){const o=[],r=this.codeEditorService.listCodeEditors();for(const l of r){const a=l.getModel();a&&a!==e&&a.uri.scheme===Ti.vscodeNotebookCell&&o.push(a)}return o}const i=[],n=this.codeEditorService.listCodeEditors();for(const o of n){if(!ele(o))continue;const r=o.getModel();r&&e===r.modified&&i.push(r.modified)}if(i.length)return i;if(this.occurrencesHighlight==="singleFile")return[];for(const o of n){const r=o.getModel();r&&r!==e&&i.push(r)}return i}_run(e){var n,o;let t;if(this.editor.hasTextFocus()){const r=this.editor.getSelection();if(!r||r.startLineNumber!==r.endLineNumber){Do.query=null,this._stopAll();return}const l=r.startColumn,a=r.endColumn,d=this._getWord();if(!d||d.startColumn>l||d.endColumn<a){Do.query=null,this._stopAll();return}t=this.workerRequest&&this.workerRequest.isValid(this.model,r,this.decorations),Do.query={modelInfo:{model:this.model,selection:r},word:d}}else if(!Do.query){this._stopAll();return}if(this.lastCursorPositionChangeTime=new Date().getTime(),t)this.workerRequestCompleted&&this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else if(uL(this.editor.getModel().uri,(n=Do.query.modelInfo)==null?void 0:n.model.uri)){if(!e){const a=this.decorations.getRanges();for(const d of a)if(d.containsPosition(this.editor.getPosition()))return}this._stopAll(e?this.model:void 0);const r=++this.workerRequestTokenId;this.workerRequestCompleted=!1;const l=this.getOtherModelsToHighlight(this.editor.getModel());if(!Do.query||!Do.query.modelInfo||Do.query.modelInfo.model.isDisposed())return;this.workerRequest=this.computeWithModel(Do.query.modelInfo.model,Do.query.modelInfo.selection,Do.query.word,l),(o=this.workerRequest)==null||o.result.then(a=>{r===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=a||[],this._beginRenderDecorations())},wi)}}computeWithModel(e,t,i,n){return n.length?wNt(this.multiDocumentProviders,e,t,i,this.editor.getOption(132),n):MNt(this.providers,e,t,i,this.editor.getOption(132))}_beginRenderDecorations(){const e=new Date().getTime(),t=this.lastCursorPositionChangeTime+250;e>=t?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},t-e)}renderDecorations(){var t,i,n;this.renderDecorationsTimer=-1;const e=this.codeEditorService.listCodeEditors();for(const o of e){const r=HF.get(o);if(!r)continue;const l=[],a=(t=o.getModel())==null?void 0:t.uri;if(a&&this.workerRequestValue.has(a)){const d=Do.storedDecorationIDs.get(a),c=this.workerRequestValue.get(a);if(c)for(const u of c)u.range&&l.push({range:u.range,options:UZt(u.kind)});let h=[];o.changeDecorations(u=>{h=u.deltaDecorations(d??[],l)}),Do.storedDecorationIDs=Do.storedDecorationIDs.set(a,h),l.length>0&&((i=r.wordHighlighter)==null||i.decorations.set(l),(n=r.wordHighlighter)==null||n._hasWordHighlights.set(!0))}}}dispose(){this._stopSingular(),this.toUnhook.dispose()}},Do=uN,uN.storedDecorationIDs=new Or,uN.query=null,uN);lie=Do=UQe([jD(4,kn)],lie);var iM;let HF=(iM=class extends be{static get(e){return e.getContribution(rie.ID)}constructor(e,t,i,n){super(),this._wordHighlighter=null;const o=()=>{e.hasModel()&&!e.getModel().isTooLargeForTokenization()&&(this._wordHighlighter=new lie(e,i.documentHighlightProvider,i.multiDocumentHighlightProvider,t,n))};this._register(e.onDidChangeModel(r=>{this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),o()})),o()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var e;(e=this._wordHighlighter)==null||e.moveNext()}moveBack(){var e;(e=this._wordHighlighter)==null||e.moveBack()}restoreViewState(e){this._wordHighlighter&&e&&this._wordHighlighter.restore()}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}},rie=iM,iM.ID="editor.contrib.wordHighlighter",iM);HF=rie=UQe([jD(1,fi),jD(2,xt),jD(3,kn)],HF);class ZQe extends Tt{constructor(e,t){super(t),this._isNext=e}run(e,t){const i=HF.get(t);i&&(this._isNext?i.moveNext():i.moveBack())}}class TNt extends ZQe{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:F("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:jle,kbOpts:{kbExpr:$.editorTextFocus,primary:65,weight:100}})}}class CNt extends ZQe{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:F("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:jle,kbOpts:{kbExpr:$.editorTextFocus,primary:1089,weight:100}})}}class BNt extends Tt{constructor(){super({id:"editor.action.wordHighlight.trigger",label:F("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:0,weight:100}})}run(e,t,i){const n=HF.get(t);n&&n.restoreViewState(!0)}}Wn(HF.ID,HF,0);lt(TNt);lt(CNt);lt(BNt);QM(oie);class sO extends Nr{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){if(!t.hasModel())return;const n=Ph(t.getOption(132),t.getOption(131)),o=t.getModel(),r=t.getSelections(),l=r.length>1,a=r.map(d=>{const c=new ge(d.positionLineNumber,d.positionColumn),h=this._move(n,o,c,this._wordNavigationType,l);return this._moveTo(d,h,this._inSelectionMode)});if(o.pushStackElement(),t._getViewModel().setCursorStates("moveWordCommand",3,a.map(d=>Bn.fromModelSelection(d))),a.length===1){const d=new ge(a[0].positionLineNumber,a[0].positionColumn);t.revealPosition(d,0)}}_moveTo(e,t,i){return i?new _t(e.selectionStartLineNumber,e.selectionStartColumn,t.lineNumber,t.column):new _t(t.lineNumber,t.column,t.lineNumber,t.column)}}class aA extends sO{_move(e,t,i,n,o){return Pn.moveWordLeft(e,t,i,n,o)}}class dA extends sO{_move(e,t,i,n,o){return Pn.moveWordRight(e,t,i,n)}}class LNt extends aA{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}class vNt extends aA{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}class kNt extends aA{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:Ge.and($.textInputFocus,(e=Ge.and(ik,U9))==null?void 0:e.negate()),primary:2063,mac:{primary:527},weight:100}})}}class xNt extends aA{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}class INt extends aA{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}class ENt extends aA{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:Ge.and($.textInputFocus,(e=Ge.and(ik,U9))==null?void 0:e.negate()),primary:3087,mac:{primary:1551},weight:100}})}}class DNt extends aA{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(e,t,i,n,o){return super._move(Ph(Up.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class GNt extends aA{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(e,t,i,n,o){return super._move(Ph(Up.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class JNt extends dA{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}class XNt extends dA{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:Ge.and($.textInputFocus,(e=Ge.and(ik,U9))==null?void 0:e.negate()),primary:2065,mac:{primary:529},weight:100}})}}class YNt extends dA{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}class _Nt extends dA{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}class zNt extends dA{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:Ge.and($.textInputFocus,(e=Ge.and(ik,U9))==null?void 0:e.negate()),primary:3089,mac:{primary:1553},weight:100}})}}class ONt extends dA{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}class jNt extends dA{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(e,t,i,n,o){return super._move(Ph(Up.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class PNt extends dA{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(e,t,i,n,o){return super._move(Ph(Up.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class oO extends Nr{constructor(e){super(e),this._whitespaceHeuristics=e.whitespaceHeuristics,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){const n=e.get(bo);if(!t.hasModel())return;const o=Ph(t.getOption(132),t.getOption(131)),r=t.getModel(),l=t.getSelections(),a=t.getOption(6),d=t.getOption(11),c=n.getLanguageConfiguration(r.getLanguageId()).getAutoClosingPairs(),h=t._getViewModel(),u=l.map(m=>{const p=this._delete({wordSeparators:o,model:r,selection:m,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:t.getOption(9),autoClosingBrackets:a,autoClosingQuotes:d,autoClosingPairs:c,autoClosedCharacters:h.getCursorAutoClosedCharacters()},this._wordNavigationType);return new Wl(p,"")});t.pushUndoStop(),t.executeCommands(this.id,u),t.pushUndoStop()}}class Ple extends oO{_delete(e,t){const i=Pn.deleteWordLeft(e,t);return i||new z(1,1,1,1)}}class Hle extends oO{_delete(e,t){const i=Pn.deleteWordRight(e,t);if(i)return i;const n=e.model.getLineCount(),o=e.model.getLineMaxColumn(n);return new z(n,o,n,o)}}class HNt extends Ple{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:$.writable})}}class KNt extends Ple{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:$.writable})}}class qNt extends Ple{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}class $Nt extends Hle{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:$.writable})}}class eRt extends Hle{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:$.writable})}}class tRt extends Hle{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}class iRt extends Tt{constructor(){super({id:"deleteInsideWord",precondition:$.writable,label:F("deleteInsideWord","Delete Word"),alias:"Delete Word"})}run(e,t,i){if(!t.hasModel())return;const n=Ph(t.getOption(132),t.getOption(131)),o=t.getModel(),l=t.getSelections().map(a=>{const d=Pn.deleteInsideWord(n,o,a);return new Wl(d,"")});t.pushUndoStop(),t.executeCommands(this.id,l),t.pushUndoStop()}}Vt(new LNt);Vt(new vNt);Vt(new kNt);Vt(new xNt);Vt(new INt);Vt(new ENt);Vt(new JNt);Vt(new XNt);Vt(new YNt);Vt(new _Nt);Vt(new zNt);Vt(new ONt);Vt(new DNt);Vt(new GNt);Vt(new jNt);Vt(new PNt);Vt(new HNt);Vt(new KNt);Vt(new qNt);Vt(new $Nt);Vt(new eRt);Vt(new tRt);lt(iRt);class nRt extends oO{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(e,t){const i=M9.deleteWordPartLeft(e);return i||new z(1,1,1,1)}}class sRt extends oO{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(e,t){const i=M9.deleteWordPartRight(e);if(i)return i;const n=e.model.getLineCount(),o=e.model.getLineMaxColumn(n);return new z(n,o,n,o)}}class SQe extends sO{_move(e,t,i,n,o){return M9.moveWordPartLeft(e,t,i,o)}}class oRt extends SQe{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}Sn.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class rRt extends SQe{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}Sn.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class NQe extends sO{_move(e,t,i,n,o){return M9.moveWordPartRight(e,t,i)}}class lRt extends NQe{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}class aRt extends NQe{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}Vt(new nRt);Vt(new sRt);Vt(new oRt);Vt(new rRt);Vt(new lRt);Vt(new aRt);const bae=class bae extends be{constructor(e){super(),this.editor=e,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const e=cc.get(this.editor);if(e&&this.editor.hasModel()){let t=this.editor.getOptions().get(93);t||(this.editor.isSimpleWidget?t=new _l(F("editor.simple.readonly","Cannot edit in read-only input")):t=new _l(F("editor.readonly","Cannot edit in read-only editor"))),e.showMessage(t,this.editor.getPosition())}}};bae.ID="editor.contrib.readOnlyMessageController";let GY=bae;Wn(GY.ID,GY,2);var dRt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ofe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let aie=class extends be{constructor(e,t,i){super(),this._textModel=e,this._languageFeaturesService=t,this._outlineModelService=i,this._currentModel=Pi(this,void 0);const n=Vl("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),o=Vl("_textModel.onDidChangeContent",Ut.debounce(r=>this._textModel.onDidChangeContent(r),()=>{},100));this._register(Wd(async(r,l)=>{n.read(r),o.read(r);const a=l.add(new $ct),d=await this._outlineModelService.getOrCreate(this._textModel,a.token);l.isDisposed||this._currentModel.set(d,void 0)}))}getBreadcrumbItems(e,t){const i=this._currentModel.read(t);if(!i)return[];const n=i.asListOfDocumentSymbols().filter(o=>e.contains(o.range.startLineNumber)&&!e.contains(o.range.endLineNumber));return n.sort(tZe(Ja(o=>o.range.endLineNumber-o.range.startLineNumber,ju))),n.map(o=>({name:o.name,kind:o.kind,startLineNumber:o.range.startLineNumber}))}};aie=dRt([ofe(1,xt),ofe(2,Qk)],aie);G5.setBreadcrumbsSourceFactory((s,e)=>e.createInstance(aie,s));const Uae=class Uae extends be{constructor(e){super(),this.editor=e,this.widget=null,lp&&(this._register(e.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const e=!this.editor.getOption(92);!this.widget&&e?this.widget=new die(this.editor):this.widget&&!e&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}};Uae.ID="editor.contrib.iPadShowKeyboard";let JY=Uae;const Kz=class Kz extends be{constructor(e){super(),this.editor=e,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(Te(this._domNode,"touchstart",t=>{this.editor.focus()})),this._register(Te(this._domNode,"focus",t=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return Kz.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}};Kz.ID="editor.contrib.ShowKeyboardWidget";let die=Kz;Wn(JY.ID,JY,3);var cRt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},rfe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},cie,nM;let gv=(nM=class extends be{static get(e){return e.getContribution(cie.ID)}constructor(e,t,i){super(),this._editor=e,this._languageService=i,this._widget=null,this._register(this._editor.onDidChangeModel(n=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(n=>this.stop())),this._register(Ro.onDidChange(n=>this.stop())),this._register(this._editor.onKeyUp(n=>n.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new hie(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}},cie=nM,nM.ID="editor.contrib.inspectTokens",nM);gv=cie=cRt([rfe(1,uh),rfe(2,ao)],gv);class hRt extends Tt{constructor(){super({id:"editor.action.inspectTokens",label:b6.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(e,t){const i=gv.get(t);i==null||i.launch()}}function uRt(s){let e="";for(let t=0,i=s.length;t<i;t++){const n=s.charCodeAt(t);switch(n){case 9:e+="→";break;case 32:e+="·";break;default:e+=String.fromCharCode(n)}}return e}function mRt(s,e){const t=Ro.get(e);if(t)return t;const i=s.encodeLanguageId(e);return{getInitialState:()=>Ly,tokenize:(n,o,r)=>Woe(e,r),tokenizeEncoded:(n,o,r)=>a9(i,r)}}const qz=class qz extends be{constructor(e,t){super(),this.allowEditorOverflow=!0,this._editor=e,this._languageService=t,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=mRt(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(i=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return qz._ID}_compute(e){const t=this._getTokensAtLine(e.lineNumber);let i=0;for(let a=t.tokens1.length-1;a>=0;a--){const d=t.tokens1[a];if(e.column-1>=d.offset){i=a;break}}let n=0;for(let a=t.tokens2.length>>>1;a>=0;a--)if(e.column-1>=t.tokens2[a<<1]){n=a;break}const o=this._model.getLineContent(e.lineNumber);let r="";if(i<t.tokens1.length){const a=t.tokens1[i].offset,d=i+1<t.tokens1.length?t.tokens1[i+1].offset:o.length;r=o.substring(a,d)}cl(this._domNode,gt("h2.tm-token",void 0,uRt(r),gt("span.tm-token-length",void 0,`${r.length} ${r.length===1?"char":"chars"}`))),nt(this._domNode,gt("hr.tokens-inspect-separator",{style:"clear:both"}));const l=(n<<1)+1<t.tokens2.length?this._decodeMetadata(t.tokens2[(n<<1)+1]):null;nt(this._domNode,gt("table.tm-metadata-table",void 0,gt("tbody",void 0,gt("tr",void 0,gt("td.tm-metadata-key",void 0,"language"),gt("td.tm-metadata-value",void 0,`${l?l.languageId:"-?-"}`)),gt("tr",void 0,gt("td.tm-metadata-key",void 0,"token type"),gt("td.tm-metadata-value",void 0,`${l?this._tokenTypeToString(l.tokenType):"-?-"}`)),gt("tr",void 0,gt("td.tm-metadata-key",void 0,"font style"),gt("td.tm-metadata-value",void 0,`${l?this._fontStyleToString(l.fontStyle):"-?-"}`)),gt("tr",void 0,gt("td.tm-metadata-key",void 0,"foreground"),gt("td.tm-metadata-value",void 0,`${l?Je.Format.CSS.formatHex(l.foreground):"-?-"}`)),gt("tr",void 0,gt("td.tm-metadata-key",void 0,"background"),gt("td.tm-metadata-value",void 0,`${l?Je.Format.CSS.formatHex(l.background):"-?-"}`))))),nt(this._domNode,gt("hr.tokens-inspect-separator")),i<t.tokens1.length&&nt(this._domNode,gt("span.tm-token-type",void 0,t.tokens1[i].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(e){const t=Ro.getColorMap(),i=Fd.getLanguageId(e),n=Fd.getTokenType(e),o=Fd.getFontStyle(e),r=Fd.getForeground(e),l=Fd.getBackground(e);return{languageId:this._languageService.languageIdCodec.decodeLanguageId(i),tokenType:n,fontStyle:o,foreground:t[r],background:t[l]}}_tokenTypeToString(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 3:return"RegEx";default:return"??"}}_fontStyleToString(e){let t="";return e&1&&(t+="italic "),e&2&&(t+="bold "),e&4&&(t+="underline "),e&8&&(t+="strikethrough "),t.length===0&&(t="---"),t}_getTokensAtLine(e){const t=this._getStateBeforeLine(e),i=this._tokenizationSupport.tokenize(this._model.getLineContent(e),!0,t),n=this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(e),!0,t);return{startState:t,tokens1:i.tokens,tokens2:n.tokens,endState:i.endState}}_getStateBeforeLine(e){let t=this._tokenizationSupport.getInitialState();for(let i=1;i<e;i++)t=this._tokenizationSupport.tokenize(this._model.getLineContent(i),!0,t).endState;return t}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}};qz._ID="editor.contrib.inspectTokensWidget";let hie=qz;Wn(gv.ID,gv,4);lt(hRt);var pRt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},lfe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},zT,sM;let uie=(sM=class{constructor(e,t){this.quickInputService=e,this.keybindingService=t,this.registry=fo.as(tR.Quickaccess)}provide(e){const t=new De;return t.add(e.onDidAccept(()=>{const[i]=e.selectedItems;i&&this.quickInputService.quickAccess.show(i.prefix,{preserveValue:!0})})),t.add(e.onDidChangeValue(i=>{const n=this.registry.getQuickAccessProvider(i.substr(zT.PREFIX.length));n&&n.prefix&&n.prefix!==zT.PREFIX&&this.quickInputService.quickAccess.show(n.prefix,{preserveValue:!0})})),e.items=this.getQuickAccessProviders().filter(i=>i.prefix!==zT.PREFIX),t}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((t,i)=>t.prefix.localeCompare(i.prefix)).flatMap(t=>this.createPicks(t))}createPicks(e){return e.helpEntries.map(t=>{const i=t.prefix||e.prefix,n=i||"…";return{prefix:i,label:n,keybinding:t.commandId?this.keybindingService.lookupKeybinding(t.commandId):void 0,ariaLabel:F("helpPickAriaLabel","{0}, {1}",n,t.description),description:t.description}})}},zT=sM,sM.PREFIX="?",sM);uie=zT=pRt([lfe(0,tu),lfe(1,qn)],uie);fo.as(tR.Quickaccess).registerQuickAccessProvider({ctor:uie,prefix:"",helpEntries:[{description:U6.helpQuickAccessActionLabel}]});class RQe{constructor(e){this.options=e,this.rangeHighlightDecorationId=void 0}provide(e,t,i){var r;const n=new De;e.canAcceptInBackground=!!((r=this.options)!=null&&r.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;const o=n.add(new Lr);return o.value=this.doProvide(e,t,i),n.add(this.onDidActiveTextEditorControlChange(()=>{o.value=void 0,o.value=this.doProvide(e,t)})),n}doProvide(e,t,i){const n=new De,o=this.activeTextEditorControl;if(o&&this.canProvideWithTextEditor(o)){const r={editor:o},l=CWe(o);if(l){let a=o.saveViewState()??void 0;n.add(l.onDidChangeCursorPosition(()=>{a=o.saveViewState()??void 0})),r.restoreViewState=()=>{a&&o===this.activeTextEditorControl&&o.restoreViewState(a)},n.add(CF(t.onCancellationRequested)(()=>{var d;return(d=r.restoreViewState)==null?void 0:d.call(r)}))}n.add(ei(()=>this.clearDecorations(o))),n.add(this.provideWithTextEditor(r,e,t,i))}else n.add(this.provideWithoutTextEditor(e,t));return n}canProvideWithTextEditor(e){return!0}gotoLocation({editor:e},t){e.setSelection(t.range,"code.jump"),e.revealRangeInCenter(t.range,0),t.preserveFocus||e.focus();const i=e.getModel();i&&"getLineContent"in i&&Xg(`${i.getLineContent(t.range.startLineNumber)}`)}getModel(e){var t;return ele(e)?(t=e.getModel())==null?void 0:t.modified:e.getModel()}addDecorations(e,t){e.changeDecorations(i=>{const n=[];this.rangeHighlightDecorationId&&(n.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),n.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const o=[{range:t,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:Vo(NRe),position:eh.Full}}}],[r,l]=i.deltaDecorations(n,o);this.rangeHighlightDecorationId={rangeHighlightId:r,overviewRulerDecorationId:l}})}clearDecorations(e){const t=this.rangeHighlightDecorationId;t&&(e.changeDecorations(i=>{i.deltaDecorations([t.overviewRulerDecorationId,t.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}const $z=class $z extends RQe{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(e){const t=F("cannotRunGotoLine","Open a text editor first to go to a line.");return e.items=[{label:t}],e.ariaLabel=t,be.None}provideWithTextEditor(e,t,i){const n=e.editor,o=new De;o.add(t.onDidAccept(a=>{const[d]=t.selectedItems;if(d){if(!this.isValidLineNumber(n,d.lineNumber))return;this.gotoLocation(e,{range:this.toRange(d.lineNumber,d.column),keyMods:t.keyMods,preserveFocus:a.inBackground}),a.inBackground||t.hide()}}));const r=()=>{const a=this.parsePosition(n,t.value.trim().substr($z.PREFIX.length)),d=this.getPickLabel(n,a.lineNumber,a.column);if(t.items=[{lineNumber:a.lineNumber,column:a.column,label:d}],t.ariaLabel=d,!this.isValidLineNumber(n,a.lineNumber)){this.clearDecorations(n);return}const c=this.toRange(a.lineNumber,a.column);n.revealRangeInCenter(c,0),this.addDecorations(n,c)};r(),o.add(t.onDidChangeValue(()=>r()));const l=CWe(n);return l&&l.getOptions().get(68).renderType===2&&(l.updateOptions({lineNumbers:"on"}),o.add(ei(()=>l.updateOptions({lineNumbers:"relative"})))),o}toRange(e=1,t=1){return{startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:t}}parsePosition(e,t){const i=t.split(/,|:|#/).map(o=>parseInt(o,10)).filter(o=>!isNaN(o)),n=this.lineCount(e)+1;return{lineNumber:i[0]>0?i[0]:n+i[0],column:i[1]}}getPickLabel(e,t,i){if(this.isValidLineNumber(e,t))return this.isValidColumn(e,t,i)?F("gotoLineColumnLabel","Go to line {0} and character {1}.",t,i):F("gotoLineLabel","Go to line {0}.",t);const n=e.getPosition()||{lineNumber:1,column:1},o=this.lineCount(e);return o>1?F("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",n.lineNumber,n.column,o):F("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",n.lineNumber,n.column)}isValidLineNumber(e,t){return!t||typeof t!="number"?!1:t>0&&t<=this.lineCount(e)}isValidColumn(e,t,i){if(!i||typeof i!="number")return!1;const n=this.getModel(e);if(!n)return!1;const o={lineNumber:t,column:i};return n.validatePosition(o).equals(o)}lineCount(e){var t;return((t=this.getModel(e))==null?void 0:t.getLineCount())??0}};$z.PREFIX=":";let mie=$z;var gRt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},fRt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let fv=class extends mie{constructor(e){super(),this.editorService=e,this.onDidActiveTextEditorControlChange=Ut.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};fv=gRt([fRt(0,kn)],fv);var oM;let VQe=(oM=class extends Tt{constructor(){super({id:oM.ID,label:kX.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:2085,mac:{primary:293},weight:100}})}run(e){e.get(tu).quickAccess.show(fv.PREFIX)}},oM.ID="editor.action.gotoLine",oM);lt(VQe);fo.as(tR.Quickaccess).registerQuickAccessProvider({ctor:fv,prefix:fv.PREFIX,helpEntries:[{description:kX.gotoLineActionLabel,commandId:VQe.ID}]});const WQe=[void 0,[]];function CH(s,e,t=0,i=0){const n=e;return n.values&&n.values.length>1?bRt(s,n.values,t,i):yQe(s,e,t,i)}function bRt(s,e,t,i){let n=0;const o=[];for(const r of e){const[l,a]=yQe(s,r,t,i);if(typeof l!="number")return WQe;n+=l,o.push(...a)}return[n,URt(o)]}function yQe(s,e,t,i){const n=VN(e.original,e.originalLowercase,t,s,s.toLowerCase(),i,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return n?[n[0],tk(n)]:WQe}function URt(s){const e=s.sort((n,o)=>n.start-o.start),t=[];let i;for(const n of e)!i||!FRt(i,n)?(i=n,t.push(n)):(i.start=Math.min(i.start,n.start),i.end=Math.max(i.end,n.end));return t}function FRt(s,e){return!(s.end<e.start||e.end<s.start)}function afe(s){return s.startsWith('"')&&s.endsWith('"')}const QQe=" ";function pie(s){typeof s!="string"&&(s="");const e=s.toLowerCase(),{pathNormalized:t,normalized:i,normalizedLowercase:n}=dfe(s),o=t.indexOf(ep)>=0,r=afe(s);let l;const a=s.split(QQe);if(a.length>1)for(const d of a){const c=afe(d),{pathNormalized:h,normalized:u,normalizedLowercase:m}=dfe(d);u&&(l||(l=[]),l.push({original:d,originalLowercase:d.toLowerCase(),pathNormalized:h,normalized:u,normalizedLowercase:m,expectContiguousMatch:c}))}return{original:s,originalLowercase:e,pathNormalized:t,normalized:i,normalizedLowercase:n,values:l,containsPathSeparator:o,expectContiguousMatch:r}}function dfe(s){let e;Tl?e=s.replace(/\//g,ep):e=s.replace(/\\/g,ep);const t=wPe(e).replace(/\s|"/g,"");return{pathNormalized:e,normalized:t,normalizedLowercase:t.toLowerCase()}}function cfe(s){return Array.isArray(s)?pie(s.map(e=>e.original).join(QQe)):pie(s.original)}var ARt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},hfe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},PD,Zg;let PS=(Zg=class extends RQe{constructor(e,t,i=Object.create(null)){super(i),this._languageFeaturesService=e,this._outlineModelService=t,this.options=i,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(e){return this.provideLabelPick(e,F("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),be.None}provideWithTextEditor(e,t,i,n){const o=e.editor,r=this.getModel(o);return r?this._languageFeaturesService.documentSymbolProvider.has(r)?this.doProvideWithEditorSymbols(e,r,t,i,n):this.doProvideWithoutEditorSymbols(e,r,t,i):be.None}doProvideWithoutEditorSymbols(e,t,i,n){const o=new De;return this.provideLabelPick(i,F("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),(async()=>!await this.waitForLanguageSymbolRegistry(t,o)||n.isCancellationRequested||o.add(this.doProvideWithEditorSymbols(e,t,i,n)))(),o}provideLabelPick(e,t){e.items=[{label:t,index:0,kind:14}],e.ariaLabel=t}async waitForLanguageSymbolRegistry(e,t){if(this._languageFeaturesService.documentSymbolProvider.has(e))return!0;const i=new hM,n=t.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(e)&&(n.dispose(),i.complete(!0))}));return t.add(ei(()=>i.complete(!1))),i.p}doProvideWithEditorSymbols(e,t,i,n,o){var h;const r=e.editor,l=new De;l.add(i.onDidAccept(u=>{var p;const[m]=i.selectedItems;m&&m.range&&(this.gotoLocation(e,{range:m.range.selection,keyMods:i.keyMods,preserveFocus:u.inBackground}),(p=o==null?void 0:o.handleAccept)==null||p.call(o,m),u.inBackground||i.hide())})),l.add(i.onDidTriggerItemButton(({item:u})=>{u&&u.range&&(this.gotoLocation(e,{range:u.range.selection,keyMods:i.keyMods,forceSideBySide:!0}),i.hide())}));const a=this.getDocumentSymbols(t,n);let d;const c=async u=>{d==null||d.dispose(!0),i.busy=!1,d=new go(n),i.busy=!0;try{const m=pie(i.value.substr(PD.PREFIX.length).trim()),p=await this.doGetSymbolPicks(a,m,void 0,d.token,t);if(n.isCancellationRequested)return;if(p.length>0){if(i.items=p,u&&m.original.length===0){const g=qB(p,f=>!!(f.type!=="separator"&&f.range&&z.containsPosition(f.range.decoration,u)));g&&(i.activeItems=[g])}}else m.original.length>0?this.provideLabelPick(i,F("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(i,F("noSymbolResults","No editor symbols"))}finally{n.isCancellationRequested||(i.busy=!1)}};return l.add(i.onDidChangeValue(()=>c(void 0))),c((h=r.getSelection())==null?void 0:h.getPosition()),l.add(i.onDidChangeActive(()=>{const[u]=i.activeItems;u&&u.range&&(r.revealRangeInCenter(u.range.selection,0),this.addDecorations(r,u.range.decoration))})),l}async doGetSymbolPicks(e,t,i,n,o){var f,b;const r=await e;if(n.isCancellationRequested)return[];const l=t.original.indexOf(PD.SCOPE_PREFIX)===0,a=l?1:0;let d,c;t.values&&t.values.length>1?(d=cfe(t.values[0]),c=cfe(t.values.slice(1))):d=t;let h;const u=(b=(f=this.options)==null?void 0:f.openSideBySideDirection)==null?void 0:b.call(f);u&&(h=[{iconClass:u==="right"?ui.asClassName(ct.splitHorizontal):ui.asClassName(ct.splitVertical),tooltip:u==="right"?F("openToSide","Open to the Side"):F("openToBottom","Open to the Bottom")}]);const m=[];for(let U=0;U<r.length;U++){const S=r[U],Z=QPe(S.name),R=`$(${eX.toIcon(S.kind).id}) ${Z}`,y=R.length-Z.length;let N=S.containerName;i!=null&&i.extraContainerLabel&&(N?N=`${i.extraContainerLabel} • ${N}`:N=i.extraContainerLabel);let w,Q,C,v;if(t.original.length>a){let J=!1;if(d!==t&&([w,Q]=CH(R,{...t,values:void 0},a,y),typeof w=="number"&&(J=!0)),typeof w!="number"&&([w,Q]=CH(R,d,a,y),typeof w!="number"))continue;if(!J&&c){if(N&&c.original.length>0&&([C,v]=CH(N,c)),typeof C!="number")continue;typeof w=="number"&&(w+=C)}}const Y=S.tags&&S.tags.indexOf(1)>=0;m.push({index:U,kind:S.kind,score:w,label:R,ariaLabel:ZPe(S.name,S.kind),description:N,highlights:Y?void 0:{label:Q,description:v},range:{selection:z.collapseToStart(S.selectionRange),decoration:S.range},uri:o.uri,symbolName:Z,strikethrough:Y,buttons:h})}const p=m.sort((U,S)=>l?this.compareByKindAndScore(U,S):this.compareByScore(U,S));let g=[];if(l){let R=function(){S&&typeof U=="number"&&Z>0&&(S.label=bN(LH[U]||BH,Z))},U,S,Z=0;for(const y of p)U!==y.kind?(R(),U=y.kind,Z=1,S={type:"separator"},g.push(S)):Z++,g.push(y);R()}else p.length>0&&(g=[{label:F("symbols","symbols ({0})",m.length),type:"separator"},...p]);return g}compareByScore(e,t){if(typeof e.score!="number"&&typeof t.score=="number")return 1;if(typeof e.score=="number"&&typeof t.score!="number")return-1;if(typeof e.score=="number"&&typeof t.score=="number"){if(e.score>t.score)return-1;if(e.score<t.score)return 1}return e.index<t.index?-1:e.index>t.index?1:0}compareByKindAndScore(e,t){const i=LH[e.kind]||BH,n=LH[t.kind]||BH,o=i.localeCompare(n);return o===0?this.compareByScore(e,t):o}async getDocumentSymbols(e,t){const i=await this._outlineModelService.getOrCreate(e,t);return t.isCancellationRequested?[]:i.asListOfDocumentSymbols()}},PD=Zg,Zg.PREFIX="@",Zg.SCOPE_PREFIX=":",Zg.PREFIX_BY_CATEGORY=`${Zg.PREFIX}${Zg.SCOPE_PREFIX}`,Zg);PS=PD=ARt([hfe(0,xt),hfe(1,Qk)],PS);const BH=F("property","properties ({0})"),LH={5:F("method","methods ({0})"),11:F("function","functions ({0})"),8:F("_constructor","constructors ({0})"),12:F("variable","variables ({0})"),4:F("class","classes ({0})"),22:F("struct","structs ({0})"),23:F("event","events ({0})"),24:F("operator","operators ({0})"),10:F("interface","interfaces ({0})"),2:F("namespace","namespaces ({0})"),3:F("package","packages ({0})"),25:F("typeParameter","type parameters ({0})"),1:F("modules","modules ({0})"),6:F("property","properties ({0})"),9:F("enum","enumerations ({0})"),21:F("enumMember","enumeration members ({0})"),14:F("string","strings ({0})"),0:F("file","files ({0})"),17:F("array","arrays ({0})"),15:F("number","numbers ({0})"),16:F("boolean","booleans ({0})"),18:F("object","objects ({0})"),19:F("key","keys ({0})"),7:F("field","fields ({0})"),13:F("constant","constants ({0})")};var ZRt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vH=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let gie=class extends PS{constructor(e,t,i){super(t,i),this.editorService=e,this.onDidActiveTextEditorControlChange=Ut.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};gie=ZRt([vH(0,kn),vH(1,xt),vH(2,Qk)],gie);const e3=class e3 extends Tt{constructor(){super({id:e3.ID,label:pL.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:$.hasDocumentSymbolProvider,kbOpts:{kbExpr:$.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(e){e.get(tu).quickAccess.show(PS.PREFIX,{itemActivation:Em.NONE})}};e3.ID="editor.action.quickOutline";let XY=e3;lt(XY);fo.as(tR.Quickaccess).registerQuickAccessProvider({ctor:gie,prefix:PS.PREFIX,helpEntries:[{description:pL.quickOutlineActionLabel,prefix:PS.PREFIX,commandId:XY.ID},{description:pL.quickOutlineByCategoryActionLabel,prefix:PS.PREFIX_BY_CATEGORY}]});function SRt(s){const e=new Map;for(const t of s)e.set(t,(e.get(t)??0)+1);return e}class T2{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(e,t){const i=this.computeEmbedding(e),n=new Map,o=[];for(const[r,l]of this.documents){if(t.isCancellationRequested)return[];for(const a of l.chunks){const d=this.computeSimilarityScore(a,i,n);d>0&&o.push({key:r,score:d})}}return o}static termFrequencies(e){return SRt(T2.splitTerms(e))}static*splitTerms(e){const t=i=>i.toLowerCase();for(const[i]of e.matchAll(/\b\p{Letter}[\p{Letter}\d]{2,}\b/gu)){yield t(i);const n=i.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(n.length>1)for(const o of n)o.length>2&&/\p{Letter}{3,}/gu.test(o)&&(yield t(o))}}updateDocuments(e){for(const{key:t}of e)this.deleteDocument(t);for(const t of e){const i=[];for(const n of t.textChunks){const o=T2.termFrequencies(n);for(const r of o.keys())this.chunkOccurrences.set(r,(this.chunkOccurrences.get(r)??0)+1);i.push({text:n,tf:o})}this.chunkCount+=i.length,this.documents.set(t.key,{chunks:i})}return this}deleteDocument(e){const t=this.documents.get(e);if(t){this.documents.delete(e),this.chunkCount-=t.chunks.length;for(const i of t.chunks)for(const n of i.tf.keys()){const o=this.chunkOccurrences.get(n);if(typeof o=="number"){const r=o-1;r<=0?this.chunkOccurrences.delete(n):this.chunkOccurrences.set(n,r)}}}}computeSimilarityScore(e,t,i){let n=0;for(const[o,r]of Object.entries(t)){const l=e.tf.get(o);if(!l)continue;let a=i.get(o);typeof a!="number"&&(a=this.computeIdf(o),i.set(o,a));const d=l*a;n+=d*r}return n}computeEmbedding(e){const t=T2.termFrequencies(e);return this.computeTfidf(t)}computeIdf(e){const t=this.chunkOccurrences.get(e)??0;return t>0?Math.log((this.chunkCount+1)/t):0}computeTfidf(e){const t=Object.create(null);for(const[i,n]of e){const o=this.computeIdf(i);o>0&&(t[i]=n*o)}return t}}function NRt(s){var i;const e=s.slice(0);e.sort((n,o)=>o.score-n.score);const t=((i=e[0])==null?void 0:i.score)??0;if(t>0)for(const n of e)n.score/=t;return e}var DW;(function(s){s[s.NO_ACTION=0]="NO_ACTION",s[s.CLOSE_PICKER=1]="CLOSE_PICKER",s[s.REFRESH_PICKER=2]="REFRESH_PICKER",s[s.REMOVE_ITEM=3]="REMOVE_ITEM"})(DW||(DW={}));function kH(s){const e=s;return Array.isArray(e.items)}function ufe(s){const e=s;return!!e.picks&&e.additionalPicks instanceof Promise}class RRt extends be{constructor(e,t){super(),this.prefix=e,this.options=t}provide(e,t,i){var d;const n=new De;e.canAcceptInBackground=!!((d=this.options)!=null&&d.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;let o;const r=n.add(new Lr),l=async()=>{var f;const c=r.value=new De;o==null||o.dispose(!0),e.busy=!1,o=new go(t);const h=o.token;let u=e.value.substring(this.prefix.length);(f=this.options)!=null&&f.shouldSkipTrimPickFilter||(u=u.trim());const m=this._getPicks(u,c,h,i),p=(b,U)=>{var R;let S,Z;if(kH(b)?(S=b.items,Z=b.active):S=b,S.length===0){if(U)return!1;(u.length>0||e.hideInput)&&((R=this.options)!=null&&R.noResultsPick)&&(EB(this.options.noResultsPick)?S=[this.options.noResultsPick(u)]:S=[this.options.noResultsPick])}return e.items=S,Z&&(e.activeItems=[Z]),!0},g=async b=>{let U=!1,S=!1;await Promise.all([(async()=>{typeof b.mergeDelay=="number"&&(await Pf(b.mergeDelay),h.isCancellationRequested)||S||(U=p(b.picks,!0))})(),(async()=>{e.busy=!0;try{const Z=await b.additionalPicks;if(h.isCancellationRequested)return;let R,y;kH(b.picks)?(R=b.picks.items,y=b.picks.active):R=b.picks;let N,w;if(kH(Z)?(N=Z.items,w=Z.active):N=Z,N.length>0||!U){let Q;if(!y&&!w){const C=e.activeItems[0];C&&R.indexOf(C)!==-1&&(Q=C)}p({items:[...R,...N],active:y||w||Q})}}finally{h.isCancellationRequested||(e.busy=!1),S=!0}})()])};if(m!==null)if(ufe(m))await g(m);else if(!(m instanceof Promise))p(m);else{e.busy=!0;try{const b=await m;if(h.isCancellationRequested)return;ufe(b)?await g(b):p(b)}finally{h.isCancellationRequested||(e.busy=!1)}}};n.add(e.onDidChangeValue(()=>l())),l(),n.add(e.onDidAccept(c=>{var u;if(i!=null&&i.handleAccept){c.inBackground||e.hide(),(u=i.handleAccept)==null||u.call(i,e.activeItems[0]);return}const[h]=e.selectedItems;typeof(h==null?void 0:h.accept)=="function"&&(c.inBackground||e.hide(),h.accept(e.keyMods,c))}));const a=async(c,h)=>{var m;if(typeof h.trigger!="function")return;const u=((m=h.buttons)==null?void 0:m.indexOf(c))??-1;if(u>=0){const p=h.trigger(u,e.keyMods),g=typeof p=="number"?p:await p;if(t.isCancellationRequested)return;switch(g){case DW.NO_ACTION:break;case DW.CLOSE_PICKER:e.hide();break;case DW.REFRESH_PICKER:l();break;case DW.REMOVE_ITEM:{const f=e.items.indexOf(h);if(f!==-1){const b=e.items.slice(),U=b.splice(f,1),S=e.activeItems.filter(R=>R!==U[0]),Z=e.keepScrollPosition;e.keepScrollPosition=!0,e.items=b,S&&(e.activeItems=S),e.keepScrollPosition=Z}break}}}};return n.add(e.onDidTriggerItemButton(({button:c,item:h})=>a(c,h))),n.add(e.onDidTriggerSeparatorButton(({button:c,separator:h})=>a(c,h))),n}}var MQe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},QU=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},gZ,cr,Zf;let fie=(Zf=class extends RRt{constructor(e,t,i,n,o,r){super(gZ.PREFIX,e),this.instantiationService=t,this.keybindingService=i,this.commandService=n,this.telemetryService=o,this.dialogService=r,this.commandsHistory=this._register(this.instantiationService.createInstance(bie)),this.options=e}async _getPicks(e,t,i,n){var m,p;const o=await this.getCommandPicks(i);if(i.isCancellationRequested)return[];const r=CF(()=>{const g=new T2;g.updateDocuments(o.map(b=>({key:b.commandId,textChunks:[this.getTfIdfChunk(b)]})));const f=g.calculateScores(e,i);return NRt(f).filter(b=>b.score>gZ.TFIDF_THRESHOLD).slice(0,gZ.TFIDF_MAX_RESULTS)}),l=[];for(const g of o){const f=gZ.WORD_FILTER(e,g.label)??void 0,b=g.commandAlias?gZ.WORD_FILTER(e,g.commandAlias)??void 0:void 0;if(f||b)g.highlights={label:f,detail:this.options.showAlias?b:void 0},l.push(g);else if(e===g.commandId)l.push(g);else if(e.length>=3){const U=r();if(i.isCancellationRequested)return[];const S=U.find(Z=>Z.key===g.commandId);S&&(g.tfIdfScore=S.score,l.push(g))}}const a=new Map;for(const g of l){const f=a.get(g.label);f?(g.description=g.commandId,f.description=f.commandId):a.set(g.label,g)}l.sort((g,f)=>{if(g.tfIdfScore&&f.tfIdfScore)return g.tfIdfScore===f.tfIdfScore?g.label.localeCompare(f.label):f.tfIdfScore-g.tfIdfScore;if(g.tfIdfScore)return 1;if(f.tfIdfScore)return-1;const b=this.commandsHistory.peek(g.commandId),U=this.commandsHistory.peek(f.commandId);if(b&&U)return b>U?-1:1;if(b)return-1;if(U)return 1;if(this.options.suggestedCommandIds){const S=this.options.suggestedCommandIds.has(g.commandId),Z=this.options.suggestedCommandIds.has(f.commandId);if(S&&Z)return 0;if(S)return-1;if(Z)return 1}return g.label.localeCompare(f.label)});const d=[];let c=!1,h=!0,u=!!this.options.suggestedCommandIds;for(let g=0;g<l.length;g++){const f=l[g];g===0&&this.commandsHistory.peek(f.commandId)&&(d.push({type:"separator",label:F("recentlyUsed","recently used")}),c=!0),h&&f.tfIdfScore!==void 0&&(d.push({type:"separator",label:F("suggested","similar commands")}),h=!1),u&&f.tfIdfScore===void 0&&!this.commandsHistory.peek(f.commandId)&&((m=this.options.suggestedCommandIds)!=null&&m.has(f.commandId))&&(d.push({type:"separator",label:F("commonlyUsed","commonly used")}),c=!0,u=!1),c&&f.tfIdfScore===void 0&&!this.commandsHistory.peek(f.commandId)&&!((p=this.options.suggestedCommandIds)!=null&&p.has(f.commandId))&&(d.push({type:"separator",label:F("morecCommands","other commands")}),c=!1),d.push(this.toCommandPick(f,n))}return this.hasAdditionalCommandPicks(e,i)?{picks:d,additionalPicks:(async()=>{var b;const g=await this.getAdditionalCommandPicks(o,l,e,i);if(i.isCancellationRequested)return[];const f=g.map(U=>this.toCommandPick(U,n));return h&&((b=f[0])==null?void 0:b.type)!=="separator"&&f.unshift({type:"separator",label:F("suggested","similar commands")}),f})()}:d}toCommandPick(e,t){if(e.type==="separator")return e;const i=this.keybindingService.lookupKeybinding(e.commandId),n=i?F("commandPickAriaLabelWithKeybinding","{0}, {1}",e.label,i.getAriaLabel()):e.label;return{...e,ariaLabel:n,detail:this.options.showAlias&&e.commandAlias!==e.label?e.commandAlias:void 0,keybinding:i,accept:async()=>{var o;this.commandsHistory.push(e.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.commandId,from:(t==null?void 0:t.from)??"quick open"});try{(o=e.args)!=null&&o.length?await this.commandService.executeCommand(e.commandId,...e.args):await this.commandService.executeCommand(e.commandId)}catch(r){$h(r)||this.dialogService.error(F("canNotRun","Command '{0}' resulted in an error",e.label),P5(r))}}}}getTfIdfChunk({label:e,commandAlias:t,commandDescription:i}){let n=e;return t&&t!==e&&(n+=` - ${t}`),i&&i.value!==e&&(n+=` - ${i.value===i.original?i.value:`${i.value} (${i.original})`}`),n}},gZ=Zf,Zf.PREFIX=">",Zf.TFIDF_THRESHOLD=.5,Zf.TFIDF_MAX_RESULTS=5,Zf.WORD_FILTER=boe(cL,Gqe,vNe),Zf);fie=gZ=MQe([QU(1,ti),QU(2,qn),QU(3,ks),QU(4,$l),QU(5,qv)],fie);var Sg;let bie=(Sg=class extends be{constructor(e,t,i){super(),this.storageService=e,this.configurationService=t,this.logService=i,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>this.updateConfiguration(e))),this._register(this.storageService.onWillSaveState(e=>{e.reason===UL.SHUTDOWN&&this.saveState()}))}updateConfiguration(e){e&&!e.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=cr.getConfiguredCommandHistoryLength(this.configurationService),cr.cache&&cr.cache.limit!==this.configuredCommandsHistoryLength&&(cr.cache.limit=this.configuredCommandsHistoryLength,cr.hasChanges=!0))}load(){const e=this.storageService.get(cr.PREF_KEY_CACHE,0);let t;if(e)try{t=JSON.parse(e)}catch(n){this.logService.error(`[CommandsHistory] invalid data: ${n}`)}const i=cr.cache=new $g(this.configuredCommandsHistoryLength,1);if(t){let n;t.usesLRU?n=t.entries:n=t.entries.sort((o,r)=>o.value-r.value),n.forEach(o=>i.set(o.key,o.value))}cr.counter=this.storageService.getNumber(cr.PREF_KEY_COUNTER,0,cr.counter)}push(e){cr.cache&&(cr.cache.set(e,cr.counter++),cr.hasChanges=!0)}peek(e){var t;return(t=cr.cache)==null?void 0:t.peek(e)}saveState(){if(!cr.cache||!cr.hasChanges)return;const e={usesLRU:!0,entries:[]};cr.cache.forEach((t,i)=>e.entries.push({key:i,value:t})),this.storageService.store(cr.PREF_KEY_CACHE,JSON.stringify(e),0,0),this.storageService.store(cr.PREF_KEY_COUNTER,cr.counter,0,0),cr.hasChanges=!1}static getConfiguredCommandHistoryLength(e){var n,o;const i=(o=(n=e.getValue().workbench)==null?void 0:n.commandPalette)==null?void 0:o.history;return typeof i=="number"?i:cr.DEFAULT_COMMANDS_HISTORY_LENGTH}},cr=Sg,Sg.DEFAULT_COMMANDS_HISTORY_LENGTH=50,Sg.PREF_KEY_CACHE="commandPalette.mru.cache",Sg.PREF_KEY_COUNTER="commandPalette.mru.counter",Sg.counter=1,Sg.hasChanges=!1,Sg);bie=cr=MQe([QU(0,lm),QU(1,Hi),QU(2,Cl)],bie);class VRt extends fie{constructor(e,t,i,n,o,r){super(e,t,i,n,o,r)}getCodeEditorCommandPicks(){var i;const e=this.activeTextEditorControl;if(!e)return[];const t=[];for(const n of e.getSupportedActions()){let o;(i=n.metadata)!=null&&i.description&&(Jtt(n.metadata.description)?o=n.metadata.description:o={original:n.metadata.description,value:n.metadata.description}),t.push({commandId:n.id,commandAlias:n.alias,commandDescription:o,label:Noe(n.label)||n.id})}return t}}var WRt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},tV=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let bv=class extends VRt{get activeTextEditorControl(){return this.codeEditorService.getFocusedCodeEditor()??void 0}constructor(e,t,i,n,o,r){super({showAlias:!1},e,i,n,o,r),this.codeEditorService=t}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}};bv=WRt([tV(0,ti),tV(1,kn),tV(2,qn),tV(3,ks),tV(4,$l),tV(5,qv)],bv);const t3=class t3 extends Tt{constructor(){super({id:t3.ID,label:xX.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(e){e.get(tu).quickAccess.show(bv.PREFIX)}};t3.ID="editor.action.quickCommand";let YY=t3;lt(YY);fo.as(tR.Quickaccess).registerQuickAccessProvider({ctor:bv,prefix:bv.PREFIX,helpEntries:[{description:xX.quickCommandHelp,commandId:YY.ID}]});var yRt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var l=s.length-1;l>=0;l--)(r=s[l])&&(o=(n<3?r(o):n>3?r(e,t,o):r(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},iV=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Uie=class extends EN{constructor(e,t,i,n,o,r,l){super(!0,e,t,i,n,o,r,l)}};Uie=yRt([iV(1,fi),iV(2,kn),iV(3,jo),iV(4,ti),iV(5,lm),iV(6,Hi)],Uie);Wn(EN.ID,Uie,4);class QRt extends Tt{constructor(){super({id:"editor.action.toggleHighContrast",label:A6.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(e,t){const i=e.get(uh),n=i.getColorTheme();np(n.type)?(i.setTheme(this._originalThemeName||(yy(n.type)?J1:uf)),this._originalThemeName=null):(i.setTheme(yy(n.type)?YS:_S),this._originalThemeName=n.themeName)}}lt(QRt);const MRt={id:"editorContainer"},wQe={__name:"index",props:{value:String,language:String},emits:["change"],setup(s,{emit:e}){const t=s,i=()=>$2e(n.value).getValue(),n=X(null);return ul(()=>{B$.defineTheme("custom-light",{base:"vs",inherit:!0,rules:[],colors:{"editorGutter.background":"#EEEEEE"}}),n.value=B$.create(document.getElementById("editorContainer"),{value:t.value||"",language:t.language||"python",minimap:{enabled:!0},colorDecorators:!0,readOnly:!1,theme:"custom-light",automaticLayout:!0}),n.value.onDidChangeModelContent(()=>{e("change",i())})}),(o,r)=>(he(),$e("div",MRt))}},wRt=""+new URL("mathfuncX-72dd5829.png",import.meta.url).href,TRt=""+new URL("mathfuncFx-4b79da5a.png",import.meta.url).href,CRt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA7kSURBVHgB7d1NdhzXecfh91ZroGik7ABMjsfmDsQVhMQKhBxHVo4n1g5C7YCcyY5yDK4AsTZAaAeZRwqxBA6iTExUpasbJAAKH43u6u5b9T7PhMc+GknAXz9131sVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsSolkHn39w+sS3ZNgoX3XHp79x+F/BqPwj1+dHHVN85dIqHTx489/fvokEmkima6cfxt8UD6Z/TEYjfk4/1skVdr2eSSTbqDPvjs87aKcBgv9f00c/MvJk6B6fT3P/ziIhPp6/un7w9NIJt1A91T0dU1TVPQIqOd80n0G/Z7Poq9r/679+7MXh2+DKh3868mTpmteR0IZP3t+L2VB91T0dc3/xTdBtWZdk/afT9Z67qUt6J6KvqKLt+1n7SMVXZ95PR/M6/lNJJS5nntpC7qnoq8o8fm8oo+C6pS2eR5JnTftUSSWeqD7Ex39H8FCF+XLoCp9PZcSSf+5dMfz39GzSCz1QPdKaVX0hVLKY0fuatOk/ZdmW7r0v5vpB/rn7w6PQ0V/UGaztEe5atR0WT92Us+99APdU9GXXFypR+aLKep5yUCHiv5YM4tnwd7lvZiint8z0BdU9BVd8+XBNyefB3ujnukZ6AuLiu7CGeDe8sidiyt71DZZT9So56sM9FVN+zK40PxRRe/H4mhdlCeRkHq+zkBf0X4aL1T0hXlFxy8+i96HvBdT1PPHDPQVi2vOKvqD0sxcXNmxzBdT1POvGeiPqOhLjtztnnrmKgP9ERV9nYsru9N/5j+v5y8iIfV8MwN9AxV9aVHR8//sDrZutvzM/yDSUc+3MdA3UNHXNa2n3O1C1osp6vl2BvoWKvoqR+62Le/FFPV8FwN9CxV9hYsrW9c2Tcr3QqrnuxnoO6joq3IOyC707xssEY8jHfV8HwN9BxV9xbyiHbnbjtI2R5GQer6fgb6Hir7kyN3w8l5MUc+rMND3UNGXXFwZXtaLKep5NQZ6BSr6UjPz3sKhqGfuY6BXoKKvKkeO3A1jdh5PIiH1vDoDvSIVfcmRu2GkvJjSxbfqeXUGekUq+ioXVzaV8WJKN/81apv2OFiZgX4AFX1heXHlKFhbxnouXbxSzw9joB9ARV/qyuxpsJb+YkqoZ1ZgoB9IRS85cre+0hX1zEoM9AMtKrq0rwIXV9aQ8X2D6nl9BnoNbZlXNMuK/uok4TMk1pfxYop6Xp+BXkP/w9bNf+iCaBpfFq4q48UU9bwZA72mrmmfB/3fiC8duVtN0+V7IuD88/aX6nl9BnpNKvqCZ0U/xLNIpK/n//nzP/k4cAMGegMq+j3Pir5PyosppXWle0MGegMq+kL/rOjfnaSqw4fKdjGlr+f578dxsBEDvaHOFyAL5ZOZir6FemZdBnpD80o47aKcRnIurtyubXI9olU9D8dAD6Ar52ohXFy5yW/+cPI43cUU9TwYAz0AFb20qGhH7q55965JdcJFPQ/LQA9ERS85cncp5cUU9TwoAz0QFf2eZ0W/l+1at3oenoEekIoOz4q+cFHPX0Qi6nl4BnpAKnqpKy6uXLxv8CCSUM/bYaAHpqL7iI6D7Efu0l1MUc9bYaAHpqKXMh+5y3YxRT1vj4HeAhWd++KKemYoBnoLVPRSM8v19LZetvcNquftMtBboqIj5bOiS9scRSLqebsM9Jao6Ej3rOhsF1PU8/YZ6C1S0b08F1fSXUxRz1tnoLdIRceiouOX6X8WrZ7ZBgO9ZSp6vtHNLMFwNZ65weAM9Jap6BxH7pouz/V29bw7BnoHVPS0L66ku5iinnfGQO+Air6o6PnntDFBmS6mqOfdMtA7oqLnP2zt9D4GOPj94mW5B5HE7Lz952BnDPSO9BXd/xGpTe/IXSklzZP7Shc//vT94ueYHTHQO1Syf3Y3sYsri6N1id43WNr2ebBTBnqHfl5+dncWqU3nWdGZLqao5/0w0DumouPzKRy5y3YxRT3vh4HeMRU9jSN36pldMNB7kL2ix35xpf+iM9P7BtXz/hjoPVDR/bOiy2g/Hpgtny1yECl0x+p5fwz0vnTty0itHI31yF2miylt6dwa3CMDvSftZ3EcXbyNxMZ45C7Xte7u+Oy7w7Ngbwz0npy9OHwbTfaKHt/FlbYZ70czD6We989A71H7abxIXdHLiytHMRL9+wbzXExRzzUw0HukovuH74ynSDO9b1A918FA71n2ii6lPB7DkbtcF1PUcy0M9J6p6HFcXMl0MUU918NAVyB9RfcXV746eRyVWj4UKZ5GCuq5Jga6Aip6/oPY1Ptl4ew8nixefpuAeq6Lga5E+hMdXfNlrUfu8lxMUc+1MdCVSF/RlT4rOtPFFPVcHwNdkfQVXeGzotUz+2SgK6Ki4/OD3y3e8VeF/mJKqGf2yEBXJv2Jjk9m1VT0rGsm83quu6nnWhnoymSv6FqeFd0freuSHK1Tz/Uy0BVKX9EVXFzJczFFPdfMQFdIRc8reo9H7jJd61bPdTPQlcpe0fs9ctd45gZVMNCVcrtwf8+KbrrxPAJ1E+q5fga6Yqkrek8XV/JcTFHPY2CgK5a9oruy+48aslxMUc/jYKAr10YcR1JlXrK7PHKnnqmNga5c/4vUdfEqktrlkbsU7xucf2SmnsfDQI9A17TPI6ldXVxZPvM5xfsGX6rn8TDQI5C9opvZ9ss2w8WUbv6j1DbtcTAaBnokMlf0/NvCZ9s8cpflYkqZ/0tePY+LgR6J1BW95SN36plaGegRSV3RW7q4clHPX8TEqedxMtAjsqjoKKeR0bKij2Jgi/cNTvxonXoeLwM9Ml05T3tEqiuzwR//meFiinoeLwM9MvNftNOsFT30kbsMF1PU87gZ6BHKXNFDXlxpm/regTi0rrTfqufxKsEoPfr6h9d9UUZCbWkfbTo6/fsGm655HRPW1/ObPz19FIyWgh6pzBXddJsfuSttcxQT19dzMGoKesTSVnT/PInP5hXdP+1vDf3Runk9v4kJU8/ToKBHLG1Fb3hxJcXFFPU8CQZ6xDKf6OgvrsQaMlzr7ut5/rNxHIyegR65zBW9zpG7i4spk6aep8NAj1zqc9FrHLmb+sUU9TwtBnoCslZ06brHD3k+x8HvT57F1C+mqOdJMdATkLai5x9zzH6JZ6v+5bMy7aN16nl6DPREZK3otpmt9IVf/+XgfMAGf5ZHTdTz9Bjoicha0at+zDH1LwfV8zQZ6AlJWdHzjznif+PxfX/Z1F8Iq56nyUBPSNaKvu+dhX1hT/mFsOp5ugz0xKSs6K7c+UXhQ75IHCP1PF0GemJSVvQ9l1ba0jyJiVLP02agJyhjRTfN7V8CTvmdg+p52gz0BGWs6K7Mbhzh3/zhpP8C8SAmSD1Pn4GOaWrK+atIZPE6rBuO252/m+7xOvU8fQZ6on5eltVZJHLTW7+7UiZ5OUU952CgJ6wkK6yua558/P+Vrtx7RnqM1HMOBnrCslX0x18GLj5/7i+yTIx6zsNAT1yqiv7ouF37t1DPjJqBnrhsFd3MLi+lTPH8c+niR/Wch4HOoGtfRhJdzH774X+U+G1MTGnb50EaBjqB9rM47t+EHQlcPW5XYlofcfT1/NP3h6dBGgY6gbMXh2+jyVPR/bM3Li6oTIp6zsdAJ9F+Gi+yVHTXlC/+9m5atwfVc04GOolcFV2Ommj+EhOinnMy0IlkqugpnX9Wz3kZ6ESyfRY9FU3XfhOkZKCTSVXRk9Ad//e/H/5XkJKBTkZFj0tbOrcGEzPQCanoseiOz747PAvSMtAJqehxUM8Y6KRUdO3UMwY6LRVdN/VMz0AnpqJrpZ5ZMtCJqeg6qWfeM9DJqejaqGcuGejkVHRd1DNXGWhUdDXUM9cZaFR0JdQzHzPQLKjofVPP/JqBZkFF75d65iYGmg8WFc0eqGduZqD5oK/orotXwU6pZ25joLmma7xaabfUM7cz0FzTj4WK3h31zF0MNL+iondFPXM3A82vqOjdUM/cx0BzIxW9beqZ+xlobtSPR4n4a7AV6plVGGhudV5a56K3Qj2zGgPNreYjctpFOQ0G083/tqpnVmWguVNXzo3JgMr8y1f1zKoMNHdS0cNZ1HPTHgesyEBzLxU9DPXMQxlo7qWiN6eeWYeBZiUqejPqmXUYaFaiotennlmXgWZlKno96pl1lYAHePT1D69LdE+ClfT1/OZPTx8FrEFB8yAq+mG60vr7xdoUNA+molejntmUgubBVPRq1DObUtCsRUXfTT0zBAXNWlT03dQzQ1DQrE1F30w9MxQFzdpU9M3UM0NR0GxERV+nnhmSgmYjKvo69cyQFDQbU9FL6pmhKWg21nTnLwP1zOAUNIP4h6//+mb+x0EkpZ7ZBgXNIEryelTPbIOCZjBZK1o9sy0KmsFkrWj1zLYoaAaVraLVM9ukoBlUtoouXfsqYEsMNIM6jzgNYBAGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhqgUgYaoFIGGqBSBhoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEjv/wEzO3heddHQewAAAABJRU5ErkJggg==",BRt={class:"XFpdding",style:{height:"350px"}},LRt=["onClick"],vRt=["src"],kRt={class:"eldesign classtable",style:{"margin-top":"10px"}},xRt={style:{"margin-top":"10px"}},IRt={class:"eldesign classtable",style:{"margin-top":"10px"}},ERt={class:"my-header"},DRt=["id"],GRt={style:{"margin-top":"20px",padding:"20px"}},JRt={class:"dialog-footer"},XRt={__name:"MathFunc",emits:["selectTab"],setup(s,{expose:e,emit:t}){let i=X(0),n=X(),o=X(),r=X(),l=X([{id:"0",name:"自变量x",imgSrc:wRt},{id:"1",name:"表达式y=F(x)",imgSrc:TRt},{id:"2",name:"因变量y",imgSrc:CRt}]),a=X([]),d=X(`import os
- import numpy as np
- from surromdao.solver import BaseSolver
- class Branin(BaseSolver):
- def __init__(self, filename=os.path):
- super().__init__(filename)
- def compute(self, xdict):
- x = np.zeros(2)
- # x[1] = x[2]`),c=X([]),h=X(!1),u=X(100),m=X(""),p=X("");const g=()=>{h.value=!0};let f=()=>{if(m.value&&p.value){if(i.value===0)a.value.push({code:m.value,name:p.value,value:0,flag:1});else if(i.value===2)c.value.push({code:m.value,name:p.value,value:0,flag:1});else return;m.value="",p.value=""}else vi.error("请输入code和参数名称")};const b=N=>{i.value=N,t("selectTab",N)},U=({column:N})=>N.property==="name"?(console.log("yanse",N.property),"header-blue"):N.property==="value"?"header-green":N.property==="flag"?"header-yellow":"",S=(N,w)=>(console.log("Data:",w),Array.isArray(w)?(N=w.map(Q=>{const C=Q.code||" ",v=Q.name||" ",Y=Q.value===null||Q.value===void 0||Q.value===""?" ":Q.value,J=Q.flag===null||Q.flag===void 0||Q.flag===""?" ":Q.flag;return`${C},${v},${Y},${J}`}).join(";"),N):(console.error("Data should be an array"),N)),Z=(N,w)=>{n.value=N,w&&(o.value=w);const Q={transCode:"MDO0063",pid:n.value,wid:o.value};Dn(Q).then(C=>{C.hasOwnProperty("mfcid")&&(R(C),Gr.emit("mfcidFromMathFunc",r))}).catch(C=>{console.log("MathFunc初始化失败err:",C),vi.error("MathFunc初始化失败")})},R=N=>{n.value=N.pid,r.value=N.mfcid,d.value=N.equation,a.value=N.inParams,c.value=N.outParams};return e({getmathfunc:Z,getmathfuncAssign:R,getmathfuncsave:(N,w)=>{w&&(o.value=w),n.value=N;const Q={transCode:"MDO0064",pid:n.value,wid:o.value,equation:d.value,inParams:S([],a.value),outParams:S([],c.value)};Dn(Q).then(C=>{vi({message:"保存成功",type:"success"}),Z(n.value,o.value)}).catch(C=>{vi.error("保存失败")})},mathfuncnew:g}),(N,w)=>{const Q=At("el-table-column"),C=At("el-input"),v=At("el-checkbox"),Y=At("el-table"),J=At("el-form-item"),k=At("el-form");return he(),$e("div",BRt,[re("ul",null,[(he(!0),$e(zt,null,Kt(W(l),(E,K)=>(he(),$e("li",{class:gn(["item",{active:W(i)===K}]),key:K,onClick:de=>b(K)},[re("img",{src:E.imgSrc,style:{width:"22px"}},null,8,vRt),Qt(" "+bs(E.name),1)],10,LRt))),128))]),es(re("div",kRt,[M(Y,{data:W(a),border:"",style:{width:"100%"},"header-cell-class-name":U},{default:B(()=>[M(Q,{type:"index",width:"70",label:"编号"}),M(Q,{prop:"name",label:"参数名称"}),M(Q,{prop:"value",label:"参数值"},{default:B(({row:E})=>[M(C,{modelValue:E.value,"onUpdate:modelValue":K=>E.value=K,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(Q,{prop:"flag",label:"启用",width:"100"},{default:B(E=>[M(v,{"false-label":0,"true-label":1,label:!1,modelValue:E.row.flag,"onUpdate:modelValue":K=>E.row.flag=K},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])],512),[[us,W(i)=="0"]]),es(re("div",xRt,[M(wQe,{value:W(d),language:"python"},null,8,["value"])],512),[[us,W(i)=="1"]]),es(re("div",IRt,[M(Y,{data:W(c),border:"",style:{width:"100%",height:"280px"},"header-cell-class-name":U},{default:B(()=>[M(Q,{type:"index",width:"70",label:"编号"}),M(Q,{prop:"name",label:"参数名称"}),M(Q,{prop:"value",label:"参数值"},{default:B(({row:E})=>[M(C,{modelValue:E.value,"onUpdate:modelValue":K=>E.value=K,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(Q,{prop:"flag",label:"启用",width:"100"},{default:B(E=>[M(v,{"false-label":0,"true-label":1,label:!1,modelValue:E.row.flag,"onUpdate:modelValue":K=>E.row.flag=K},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])],512),[[us,W(i)=="2"]]),M(W(Is),{modelValue:W(h),"onUpdate:modelValue":w[4]||(w[4]=E=>Xt(h)?h.value=E:h=E),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",width:"400",class:"dialog_class bgcolor colortext tianjia sel"},{header:B(({titleId:E,titleClass:K})=>[re("div",ERt,[re("h4",{id:E,class:gn(K)},"新建",10,DRt)])]),footer:B(()=>[re("div",JRt,[M(W(Ai),{onClick:w[2]||(w[2]=E=>Xt(h)?h.value=!1:h=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:w[3]||(w[3]=E=>{W(f)(),Xt(h)?h.value=!1:h=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",GRt,[M(k,null,{default:B(()=>[M(J,{label:"code:","label-width":W(u)},{default:B(()=>[M(C,{modelValue:W(m),"onUpdate:modelValue":w[0]||(w[0]=E=>Xt(m)?m.value=E:m=E),maxlength:"100"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(J,{label:"参数名称:","label-width":W(u)},{default:B(()=>[M(C,{modelValue:W(p),"onUpdate:modelValue":w[1]||(w[1]=E=>Xt(p)?p.value=E:p=E),maxlength:"100"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])])}}},xH={__name:"ListSE",props:{isList:Boolean},setup(s,{emit:e}){let t=X("全部设计"),i=X([{label:"全部设计",value:"全部设计"},{label:"可行设计",value:"可行设计"},{label:"不可行设计",value:"不可行设计"},{label:"非错误设计",value:"非错误设计"},{label:"最佳设计",value:"最佳设计"},{label:"改进设计",value:"改进设计"},{label:"错误设计",value:"错误设计"}]),n=X([]),o=X([{label:"x1",value:"x1"},{label:"x2",value:"x2"},{label:"x3",value:"x3"},{label:"x4",value:"x4"}]),r=X([]);const l=(a,d)=>{e("update",a,d)};return ul(()=>{Gr.on("update:datatotableheader",a=>{o.value=a})}),hy(()=>{Gr.off("update:datatotableheader")}),(a,d)=>{const c=At("el-option"),h=At("el-form-item"),u=At("el-checkbox"),m=At("el-checkbox-group"),p=At("el-card"),g=At("el-space"),f=At("el-form");return he(),It(f,null,{default:B(()=>[M(h,{label:"设计集:"},{default:B(()=>[M(W(ln),{modelValue:W(t),"onUpdate:modelValue":d[0]||(d[0]=b=>Xt(t)?t.value=b:t=b),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(i),b=>(he(),It(c,{key:b.value,label:b.label,value:b.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1}),M(h,{label:"选择要在表中显示的一个或者多个变量和响应"}),M(g,{style:{width:"100%"},fill:"","fill-ratio":40},{default:B(()=>[s.isList?An("",!0):(he(),It(p,{key:0,shadow:"hover",style:{height:"150px",overflow:"auto"}},{default:B(()=>[M(m,{modelValue:W(n),"onUpdate:modelValue":d[1]||(d[1]=b=>Xt(n)?n.value=b:n=b),max:1,onChange:d[2]||(d[2]=b=>l("listcbval",W(n)))},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(o),b=>(he(),It(u,{key:b.prop,label:b.prop,style:{display:"block"}},{default:B(()=>[Qt(bs(b.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})),M(p,{shadow:"hover",style:{height:"150px",overflow:"auto"}},{default:B(()=>[M(m,{modelValue:W(r),"onUpdate:modelValue":d[3]||(d[3]=b=>Xt(r)?r.value=b:r=b),onChange:d[4]||(d[4]=b=>l("listcbval2",W(r)))},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(o),b=>(he(),It(u,{key:b.prop,label:b.prop,style:{display:"block"}},{default:B(()=>[Qt(bs(b.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1})}}};const TQe=s=>(n3("data-v-0ac324a5"),s=s(),s3(),s),YRt={class:"XFpdding",style:{height:"510px"}},_Rt=["onClick"],zRt={class:"classtable",style:{"margin-top":"10px"}},ORt={style:{"line-height":"15px"}},jRt={style:{"flex-grow":"1"},"element-loading-text":"拼命加载中..."},PRt={class:"classtable",style:{"margin-top":"10px"}},HRt=TQe(()=>re("span",{class:"collapse-title"},"材料属性",-1)),KRt=TQe(()=>re("span",{class:"collapse-title"},"收敛选项",-1)),qRt={class:"eldesign classtable",style:{"margin-top":"10px"}},$Rt={class:"eldesign classtable",style:{"margin-top":"10px"}},eVt={__name:"TACS",setup(s,{expose:e}){let t=X(),i=X(170),n=X(120),o=X(),r=X(0),l=X(),a=X(),d=X(),c=X([{id:"0",name:"网格文件"},{id:"1",name:"结构参数"},{id:"2",name:"设置参数"},{id:"3",name:"分析参数"}]);const h=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAAAXNSR0IArs4c6QAABCpJREFUaEPtmUtoE0EYx7+ZVPvQ6BYPPkBsQVoQxGRTELyYnrz0oSehB2sv7U0UikeTipcqhSqCtCBWkRZPGtqLekh68AHNbLcoQkFstJK0oBjb2EbN7thvSULS3TxqmzJFB0I2yc7u/zffN99jQ2CLDyKSfofDUUMp9SiK0lGsLqEAZFmeIYTUaJpWq6pqqBgIYQBkWfYQQrwomnPeoyiKcVxoCAHgcDjcNpvNnyE2mrRCdNMBUAyl9DQh5BDn3AEAEiFESgnhnIcIIegeUc75lK7rAUrpPXSdTLHFWiHLAkkzZl2o0Aqkftc0rYdS6l4Rfq/YOQXOK8oKaQCXy3UaAB43Nzev+f7BYBAikQjOCwAArrqPc67iSlNKQzabzXAFTdMkznnq5aCUtiatZHnPYqyQBpBl+TyuHor5mzE6OgqDg4MQDofRPXATDuW7TjJk+le7zqo5Ba2wYQB443A4bECMjY3hR1XTtDO5wqHT6RyilLYXWqxCVthQgJQYBOnq6jLcasVl+nVdv5kJkrJ2IfHJ3/NaoSQAKWH53MrtdkvxeFxKJBJG0NB1Hd+N46RbGXsFvyOEXGSMPbECLimAlVuhaxW58lmnYZSzcseSA2S61cjICMRisTXrT0a5IcaYqUbaNIA1q86Y4PV6MTD8B1jPIq5r7r9pAcaYkZhEGJgYGWOBlQr1PkYxHCldlpsYhbe0tIBeni4iReAwNNCfUaypqlVVNeorS4BAIADd3d3wreGKMMJRSNliCOzTDxAg3bFZAmC8vnH7Lnw/ekEogG3Radj5/hG6U1q3JUBfXx88GHsFsfpzQgGUz7+GqtlnUcZYdd49gO7zXI1A7PBZoQAqwuNQGR5XGWPOvABYSb74XAbLB08JBVA144PtX9RxRVHceQGwK/tA6iB+4KRQAPbp+1C2+DGrpLDcAw0NDfCjthV+7TkmFMCud4NAf0SyHrmYAPx+PzQ2NsJifTsk7IeEApAmewES8Y7MdtUEMDw8DG1tbbBwpBO0qn3CABAtDtLkdWx2GoPBID48MIYJYGBgwGgHo87LwG0VwgDYlubAcCFKnRMTE7lLCY/HA95rvQaASCMjC6fLCEsLdHZ2wp2HPlg40iWSftj+dQp2zPiysrAlQFNTEzwefytcFrZKYpYALpcLXoYSsFTbKpQFKmefQvnc66wkZglQV1cHU7H9oiYxH2MMH4GmhykK2e12mJdOwM+9x4WygFUSs7QAfilwErukKEp/XguIClAdvIrSzqx+QmdyITxLtCSGbeTuN7dMWTinC22FVjJnKYGN/FZoJXMC/LbXCJfEsJWs/PQ0pChK7erQaNoDWMD9kuqFCqFly/PYB5iSWNYewA8rjYyXc/5Xf/KVmphS2p9ZhZpcqNQCSnV9If7oXg/cf4D1rN5GzN3yFvgDeHmLUMPmZkgAAAAASUVORK5CYII=",self.location).href;let u=X(["1","2"]),m=X({proname:"CRM",rho:"2780.0",e:"73.1e9",nu:"0.33",ys:"262.0e6",useffd:1,l2convergence:"1e3",l2convergencerel:"1e3"}),p=X(1),g=X(""),f=X([{code:"thickness",name:"厚度分布",value:"0.005",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""},{code:"thickness",name:"厚度分布",value:"0.003",flag:1,con:""}]),b=X([{code:"mass",name:"结构质量",value:13972.2123,flag:"1"},{code:"ks_vmfailure",name:"KS聚合应力",value:.3337,flag:"1"},{code:"maxdeform",name:"最大变形",value:0,flag:"1"}]),U=X(0),S=X("");const Z=i3(()=>U.value>0&&U.value<=100);let R=X("400px"),y=X(!1),N=uy(null),w=X({lockReconnect:!1,timeout:60*1e3,heartBeatInterval:30*1e3,timeoutObj:null,serverTimeoutObj:null,timeoutnum:null});const Q=Ye=>{U.value=Ye},C=Ye=>{S.value=Ye},v=Ye=>{r.value=Ye},Y=({column:Ye})=>Ye.property==="name"?(console.log("yanse",Ye.property),"header-blue"):Ye.property==="value"?"header-green":Ye.property==="flag"?"header-yellow":"",J=(Ye,mt)=>{l.value=Ye,mt&&(a.value=mt);const Wt={transCode:"MDO0066",pid:l.value,wid:a.value};Dn(Wt).then(Jt=>{Jt.hasOwnProperty("tacsid")&&(k(Jt),Gr.emit("tacsidFromTACS",d),Jt.fid&&Ue(Jt.fid))}).catch(Jt=>{console.log("TACS初始化失败err:",Jt),vi.error("TACS初始化失败")})},k=Ye=>{l.value=Ye.pid,d.value=Ye.tacsid,t.value=Ye.fid,g.value=Ye.fname,m.value.proname=Ye.proname,m.value.rho=Ye.rho,m.value.e=Ye.e,m.value.nu=Ye.nu,m.value.ys=Ye.ys,m.value.useffd=Ye.useffd,m.value.l2convergence=Ye.l2convergence,m.value.l2convergencerel=Ye.l2convergencerel,p.value=Ye.writesolution,b.value=Ye.outParams,E(f,Ye.thickness)},E=(Ye,mt)=>{const Wt=mt.split(",").map(Number);Ye.value.forEach((Jt,Ae)=>{Ae<Wt.length&&(Jt.value=Wt[Ae])})},K=(Ye,mt)=>(console.log("Data:",mt),Array.isArray(mt)?(Ye=mt.map(Wt=>{const Jt=Wt.code||" ",Ae=Wt.name||" ",Yi=Wt.value===null||Wt.value===void 0||Wt.value===""?" ":Wt.value,ci=Wt.value===null||Wt.flag===void 0||Wt.flag===""?" ":Wt.flag;return`${Jt},${Ae},${Yi},${ci}`}).join(";"),Ye):(console.error("Data should be an array"),Ye));e({gettacs:J,gettacsAssign:k,gettacssave:(Ye,mt)=>{mt&&(a.value=mt),l.value=Ye;const Wt={transCode:"MDO0067",pid:l.value,wid:a.value,proname:m.value.proname,rho:m.value.rho,e:m.value.e,nu:m.value.nu,ys:m.value.ys,useffd:m.value.useffd,l2convergence:m.value.l2convergence,l2convergencerel:m.value.l2convergencerel,writesolution:p.value,fid:t.value,fname:g.value,inParams:"",thickness:f.value.map(Jt=>Jt.value).join(","),outParams:K([],b.value)};Dn(Wt).then(Jt=>{vi({message:"保存成功",type:"success"}),J(l.value,a.value)}).catch(Jt=>{vi.error("保存失败")})}});const ee=async Ye=>{y.value=!0;try{const mt=await fetch("https://www.adicn.com/airopt/TransServlet",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channelNo:"service",clientToken:"e47b87eec69545559d1e81e56626da68",transCode:"MDO0072",userId:"5f06c8bc77234f969d13e160b54c27e3",fid:Ye})})}catch(mt){y.value=!1,console.error("请求失败:",mt.response||mt)}},le=async Ye=>{try{const Wt=await(await fetch("https://www.adicn.com/airopt/TransServlet",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channelNo:"service",clientToken:"e47b87eec69545559d1e81e56626da68",transCode:"MDO0062",userId:"5f06c8bc77234f969d13e160b54c27e3",fid:Ye})})).json();console.log("接口返回的数据:",Wt),o.value=Wt,y.value=!1}catch(mt){y.value=!1,console.error("请求失败:",mt.response||mt)}},Fe=Ye=>{setTimeout(()=>{U.value=0},1e3),g.value=Ye.fname,t.value=Ye.bfid,console.log("文件上传成功,bfid:",Ye.bfid,"fname:",Ye.fname),Ue(Ye.bfid)},Ue=Ye=>{var Jt;if(((Jt=N.value)==null?void 0:Jt.readyState)===1)return;const mt="wss://www.adicn.com/airoptwebsocket?projectId="+Ye,Wt=new WebSocket(mt);N.value=Wt,Wt.onopen=ze,Wt.onmessage=Oe,Wt.onerror=Ie,Wt.onclose=at},ze=Ye=>{console.log("bdfWebSocket连接成功",Ye),dt(),ee(t.value)},Oe=Ye=>{try{const mt=JSON.parse(Ye.data);if(console.log("receivedData",mt),mt.status===0){console.log("转换成功,准备关闭"),Yt(),N.value.onclose=null,N.value.onerror=null,N.value.close(1e3,"Normal closure"),N.value=null,le(t.value);return}}catch{Ye.data==="建立服务端连接成功!"?console.log("WebSocket连接已建立"):Ye.data==="服务端已经接收到消息,msg=heartCheck"?console.log("心跳确认"):console.warn("未知的非JSON消息:",Ye.data)}Se()},Ie=Ye=>{console.log("连接错误",Ye),N.close(),je()},at=Ye=>{console.log("断开连接",Ye),Ye.code!==1e3&&je()},je=()=>{var Ye,mt;w.value.lockReconnect||((Ye=N.value)==null?void 0:Ye.readyState)===1||!((mt=adflowvalue.value)!=null&&mt.fid)||(console.log("尝试重连..."),w.value.lockReconnect=!0,clearTimeout(w.value.timeoutnum),w.value.timeoutnum=setTimeout(()=>{var Wt;(!N.value||((Wt=N.value)==null?void 0:Wt.readyState)>1)&&Ue(t.value),w.value.lockReconnect=!1},1e4))},Se=()=>{clearTimeout(w.value.timeoutObj),clearTimeout(w.value.serverTimeoutObj),dt()},dt=()=>{clearTimeout(w.value.timeoutObj),clearTimeout(w.value.serverTimeoutObj),!(!N.value||N.value.readyState!==1)&&(w.value.timeoutObj=setTimeout(()=>{var Ye;((Ye=N.value)==null?void 0:Ye.readyState)===1&&(N.value.send("heartCheck"),w.value.serverTimeoutObj=setTimeout(()=>{var mt;((mt=N.value)==null?void 0:mt.readyState)===1&&N.value.close(1006,"Heartbeat timeout")},w.value.timeout))},w.value.heartBeatInterval))},Yt=()=>{clearTimeout(w.value.timeoutObj),clearTimeout(w.value.serverTimeoutObj),clearTimeout(w.value.timeoutnum),w.value.lockReconnect=!0};return(Ye,mt)=>{const Wt=At("el-input"),Jt=At("el-progress"),Ae=At("el-col"),Yi=At("el-row"),ci=At("el-form-item"),we=At("el-form"),si=At("el-radio"),yn=At("el-radio-group"),bi=At("el-collapse-item"),pe=At("el-collapse"),ie=At("el-table-column"),it=At("el-checkbox"),Ft=At("el-table"),Pe=Dne("loading");return he(),$e("div",YRt,[re("ul",null,[(he(!0),$e(zt,null,Kt(W(c),(Re,vt)=>(he(),$e("li",{class:gn(["item",{active:W(r)===vt}]),key:vt,onClick:Ke=>v(vt)},bs(Re.name),11,_Rt))),128))]),es(re("div",zRt,[M(we,{"label-position":"left"},{default:B(()=>[M(ci,{label:"网格文件:","label-width":W(n)},{default:B(()=>[M(Wt,{modelValue:W(g),"onUpdate:modelValue":mt[0]||(mt[0]=Re=>Xt(g)?g.value=Re:g=Re)},{append:B(()=>[M(xv,{projectId:125,solverType:"exampleSolver",accept:".bdf",upId:"uniqueId1",imgSrc:W(h),name:"点击选择文件",onUpdatePercentage:Q,onUploadSuccess:Fe,onUploadStatus:C},null,8,["imgSrc"])]),_:1},8,["modelValue"]),W(Z)?(he(),It(Yi,{key:0,style:{width:"100%","margin-top":"10px"}},{default:B(()=>[M(Ae,{span:20},{default:B(()=>[M(Jt,{percentage:W(U)},null,8,["percentage"])]),_:1}),M(Ae,{span:4},{default:B(()=>[re("div",ORt,bs(W(S)),1)]),_:1})]),_:1})):An("",!0)]),_:1},8,["label-width"])]),_:1}),es((he(),$e("div",jRt,[M(A3,{data:W(o),height:W(R)},null,8,["data","height"])])),[[Pe,W(y)]])],512),[[us,W(r)=="0"]]),es(re("div",PRt,[M(ci,{label:"分析对象名称:","label-width":W(i)},{default:B(()=>[M(Wt,{modelValue:W(m).proname,"onUpdate:modelValue":mt[1]||(mt[1]=Re=>W(m).proname=Re),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(pe,{modelValue:W(u),"onUpdate:modelValue":mt[9]||(mt[9]=Re=>Xt(u)?u.value=Re:u=Re)},{default:B(()=>[M(bi,{title:"材料属性",name:"1"},{title:B(()=>[HRt]),default:B(()=>[M(ci,{label:"材料密度:","label-width":W(i)},{default:B(()=>[M(Wt,{modelValue:W(m).rho,"onUpdate:modelValue":mt[2]||(mt[2]=Re=>W(m).rho=Re),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(ci,{label:"杨氏模量:","label-width":W(i)},{default:B(()=>[M(Wt,{modelValue:W(m).e,"onUpdate:modelValue":mt[3]||(mt[3]=Re=>W(m).e=Re),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(ci,{label:"泊松比:","label-width":W(i)},{default:B(()=>[M(Wt,{modelValue:W(m).nu,"onUpdate:modelValue":mt[4]||(mt[4]=Re=>W(m).nu=Re),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(ci,{label:"屈服应力:","label-width":W(i)},{default:B(()=>[M(Wt,{modelValue:W(m).ys,"onUpdate:modelValue":mt[5]||(mt[5]=Re=>W(m).ys=Re),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(ci,{label:"启用FFD参数化:","label-width":W(i)},{default:B(()=>[M(yn,{modelValue:W(m).useffd,"onUpdate:modelValue":mt[6]||(mt[6]=Re=>W(m).useffd=Re)},{default:B(()=>[M(si,{label:1},{default:B(()=>[Qt("是")]),_:1}),M(si,{label:0},{default:B(()=>[Qt("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),M(bi,{title:"收敛选项",name:"2"},{title:B(()=>[KRt]),default:B(()=>[M(ci,{label:"绝对收敛参数:","label-width":W(i)},{default:B(()=>[M(Wt,{modelValue:W(m).l2convergence,"onUpdate:modelValue":mt[7]||(mt[7]=Re=>W(m).l2convergence=Re),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(ci,{label:"相对收敛参数:","label-width":W(i)},{default:B(()=>[M(Wt,{modelValue:W(m).l2convergencerel,"onUpdate:modelValue":mt[8]||(mt[8]=Re=>W(m).l2convergencerel=Re),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1},8,["modelValue"])],512),[[us,W(r)=="2"]]),es(re("div",null,[re("div",qRt,[M(Ft,{data:W(f),border:"",style:{width:"100%",height:"450px"}},{default:B(()=>[M(ie,{label:"启用"},{default:B(()=>[M(ie,{type:"index",width:"70",label:"编号"})]),_:1}),M(ie,null,{header:B(()=>[M(it,{"false-label":0,"true-label":1,label:!1,modelValue:W(p),"onUpdate:modelValue":mt[10]||(mt[10]=Re=>Xt(p)?p.value=Re:p=Re)},null,8,["modelValue"])]),default:B(()=>[M(ie,{prop:"value",label:"厚度分布",width:"100"},{default:B(({row:Re})=>[M(Wt,{modelValue:Re.value,"onUpdate:modelValue":vt=>Re.value=vt},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1}),M(ie,null,{default:B(()=>[M(ie,{prop:"con",label:""})]),_:1})]),_:1},8,["data"])])],512),[[us,W(r)=="1"]]),es(re("div",null,[re("div",$Rt,[M(Ft,{data:W(b),border:"",style:{width:"100%"},"header-cell-class-name":Y},{default:B(()=>[M(ie,{type:"index",width:"70",label:"编号"}),M(ie,{prop:"name",label:"参数名称"}),M(ie,{prop:"value",label:"参数值"},{default:B(({row:Re})=>[M(Wt,{modelValue:Re.value,"onUpdate:modelValue":vt=>Re.value=vt},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(ie,{prop:"flag",label:"启用",width:"100"},{default:B(Re=>[M(it,{"false-label":0,"true-label":1,label:!1,modelValue:Re.row.flag,"onUpdate:modelValue":vt=>Re.row.flag=vt},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[us,W(r)=="3"]])])}}},tVt=gp(eVt,[["__scopeId","data-v-0ac324a5"]]),iVt={__name:"Exreport",setup(s){const e=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAZCAYAAAArK+5dAAAAAXNSR0IArs4c6QAAAptJREFUSEu91ltIFFEYB/D/mc1Md90VtotI2nZhgx6MnX3o8hAkXV6EKfAtCiJq8ymQfYh6EYJKfJDdiC6SBqEUQuhGFEEp1BYOnjO7SlAuaEYXsc2kVXd0dU6M5ODWVtYMzePM+f6/832cA0NgwePxeFa4XK7yeDw+8GMcsSAffr8/DMBNKT30z4DP59siCIKXEOLWNM3GOf9MCBkFUEwIiQDIANhEKX27GJnvQBTF416v93CublKpFEZGRh4AqOWcJwRBSOrrOOd2ABsBrFtUd5VSWvMT4Pf7O3p7e6Vfjau1tRUtLS1dqVTqpCzLxpxFUbxGCDmxqC6jaZpHUZQPC+/mO/gToK9Jp9MIBoNQFOWcIAgNqqquBtDEOXcQQooAFADQu2qilJ75a2ChIBqNIhQKjamq2pOrY1VVkUwmaxRFGda/L7mDpZ627u5uvdODlNKO/wvIsix1RiKYnJxa6mZzrhscHERn5F6zNjtzMRaLJYwRtbe3S1WnLkMt3WUK0IuF6XE4+0KNjLFaAwiHw9KxxseYcW81DSybeIeiV82nKaX1BlBXVycF2xLIOPW7Y+7JG38Ne+L2UcbYTQMIBAJSw1OOucISc+kA8j9RFA7fr6SUdhlAdXW1dCNRDi3PYRooeP8E9tEXG2RZHjKA3ZV7pbtfd5gO1wMK33QiPxm3U0qnDMBbsU3qWb7fEsAx0Jbs67qzKuuiFa8XpSF3lSWA8+WVgdizh5uzgMzKCmnCc8ASoFipf8Tk5/PjMEakrtkupcv2mQbI3Axc7MItxtiRLCC9do+kluw0DQjqGJz9l84zxs5mAdPuCmnWUWYasE1/Qf7HaIAxdt0AfD5fqc1m85pO/x7AOZf1I2oAVgXnyrHkt+V3G/wGgT4mKcVKfYkAAAAASUVORK5CYII=",self.location).href;let t=X(90),i=X("pdf");X([]);let n=X("Adobe PDF(*.pdf)");X([{key:"1",label:"表1"},{key:"2",label:"表1"},{key:"3",label:"表1"},{key:"4",label:"表1"}]);let o=X([{label:"Adobe PDF(*.pdf)",value:"pdf"},{label:"Word 97-2003 Document(*.doc)",value:"doc"},{label:"HTML(*.html)",value:"html"},{label:"All Image Files(*.png,*.jpg,*.jpeg,*.gif)",value:"img"}]);return(r,l)=>{const a=At("el-form-item"),d=At("el-radio"),c=At("el-radio-group"),h=At("el-input"),u=At("el-col"),m=At("el-row"),p=At("el-option"),g=At("el-form");return he(),It(g,{"label-position":"left"},{default:B(()=>[M(a,{label:"导出格式","label-width":W(t)},null,8,["label-width"]),M(c,{modelValue:W(i),"onUpdate:modelValue":l[0]||(l[0]=f=>Xt(i)?i.value=f:i=f)},{default:B(()=>[M(d,{value:r.doc},{default:B(()=>[Qt("doc")]),_:1},8,["value"]),M(d,{value:r.pdf},{default:B(()=>[Qt("pdf")]),_:1},8,["value"]),M(d,{value:r.HTML},{default:B(()=>[Qt("HTML")]),_:1},8,["value"]),M(d,{value:r.image},{default:B(()=>[Qt("image")]),_:1},8,["value"])]),_:1},8,["modelValue"]),M(a,{label:"选择文件:","label-width":W(t)},{default:B(()=>[M(m,{style:{width:"100%"}},{default:B(()=>[M(u,{span:24},{default:B(()=>[M(h,{readonly:""})]),_:1}),M(u,{span:1,style:{display:"flex","align-items":"center","margin-left":"-35px"}},{default:B(()=>[M(xv,{projectId:123,solverType:"exampleSolver",accept:"",upId:"uniqueId1",name:"点击选择文件",imgSrc:W(e)},null,8,["imgSrc"])]),_:1})]),_:1})]),_:1},8,["label-width"]),M(a,{label:"选择名称:","label-width":W(t)},{default:B(()=>[M(m,null,{default:B(()=>[M(u,{span:"20"},{default:B(()=>[M(h)]),_:1}),M(u,{span:"4"},{default:B(()=>[M(W(Ai),null,{default:B(()=>[Qt("打开")]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),M(a,{label:"文件类型:","label-width":W(t)},{default:B(()=>[M(W(ln),{modelValue:W(n),"onUpdate:modelValue":l[1]||(l[1]=f=>Xt(n)?n.value=f:n=f)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(o),f=>(he(),It(p,{key:f.value,label:f.label,value:f.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1})}}};var nVt=Object.defineProperty,CQe=s=>{throw TypeError(s)},sVt=(s,e,t)=>e in s?nVt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Rn=(s,e,t)=>sVt(s,typeof e!="symbol"?e+"":e,t),Kle=(s,e,t)=>e.has(s)||CQe("Cannot "+t),A=(s,e,t)=>(Kle(s,e,"read from private field"),t?t.call(s):e.get(s)),O=(s,e,t)=>e.has(s)?CQe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),I=(s,e,t,i)=>(Kle(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),_=(s,e,t)=>(Kle(s,e,"access private method"),t),mc=(s,e,t,i)=>({set _(n){I(s,e,n,t)},get _(){return A(s,e,i)}}),oVt={9306:(s,e,t)=>{var i=t(4901),n=t(6823),o=TypeError;s.exports=function(r){if(i(r))return r;throw new o(n(r)+" is not a function")}},3506:(s,e,t)=>{var i=t(3925),n=String,o=TypeError;s.exports=function(r){if(i(r))return r;throw new o("Can't set "+n(r)+" as a prototype")}},7080:(s,e,t)=>{var i=t(4402).has;s.exports=function(n){return i(n),n}},679:(s,e,t)=>{var i=t(1625),n=TypeError;s.exports=function(o,r){if(i(r,o))return o;throw new n("Incorrect invocation")}},8551:(s,e,t)=>{var i=t(34),n=String,o=TypeError;s.exports=function(r){if(i(r))return r;throw new o(n(r)+" is not an object")}},7811:s=>{s.exports=typeof ArrayBuffer<"u"&&typeof DataView<"u"},7394:(s,e,t)=>{var i=t(4576),n=t(6706),o=t(2195),r=i.ArrayBuffer,l=i.TypeError;s.exports=r&&n(r.prototype,"byteLength","get")||function(a){if(o(a)!=="ArrayBuffer")throw new l("ArrayBuffer expected");return a.byteLength}},3238:(s,e,t)=>{var i=t(4576),n=t(7476),o=t(7394),r=i.ArrayBuffer,l=r&&r.prototype,a=l&&n(l.slice);s.exports=function(d){if(o(d)!==0||!a)return!1;try{return a(d,0,0),!1}catch{return!0}}},5169:(s,e,t)=>{var i=t(3238),n=TypeError;s.exports=function(o){if(i(o))throw new n("ArrayBuffer is detached");return o}},5636:(s,e,t)=>{var i=t(4576),n=t(9504),o=t(6706),r=t(7696),l=t(5169),a=t(7394),d=t(4483),c=t(1548),h=i.structuredClone,u=i.ArrayBuffer,m=i.DataView,p=Math.min,g=u.prototype,f=m.prototype,b=n(g.slice),U=o(g,"resizable","get"),S=o(g,"maxByteLength","get"),Z=n(f.getInt8),R=n(f.setInt8);s.exports=(c||d)&&function(y,N,w){var Q=a(y),C=N===void 0?Q:r(N),v=!U||!U(y),Y;if(l(y),c&&(y=h(y,{transfer:[y]}),Q===C&&(w||v)))return y;if(Q>=C&&(!w||v))Y=b(y,0,C);else{var J=w&&!v&&S?{maxByteLength:S(y)}:void 0;Y=new u(C,J);for(var k=new m(y),E=new m(Y),K=p(C,Q),de=0;de<K;de++)R(E,de,Z(k,de))}return c||d(y),Y}},4644:(s,e,t)=>{var i=t(7811),n=t(3724),o=t(4576),r=t(4901),l=t(34),a=t(9297),d=t(6955),c=t(6823),h=t(6699),u=t(6840),m=t(2106),p=t(1625),g=t(2787),f=t(2967),b=t(8227),U=t(3392),S=t(1181),Z=S.enforce,R=S.get,y=o.Int8Array,N=y&&y.prototype,w=o.Uint8ClampedArray,Q=w&&w.prototype,C=y&&g(y),v=N&&g(N),Y=Object.prototype,J=o.TypeError,k=b("toStringTag"),E=U("TYPED_ARRAY_TAG"),K="TypedArrayConstructor",de=i&&!!f&&d(o.opera)!=="Opera",ee=!1,le,Fe,Ue,ze={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Oe={BigInt64Array:8,BigUint64Array:8},Ie=function(mt){if(!l(mt))return!1;var Wt=d(mt);return Wt==="DataView"||a(ze,Wt)||a(Oe,Wt)},at=function(mt){var Wt=g(mt);if(l(Wt)){var Jt=R(Wt);return Jt&&a(Jt,K)?Jt[K]:at(Wt)}},je=function(mt){if(!l(mt))return!1;var Wt=d(mt);return a(ze,Wt)||a(Oe,Wt)},Se=function(mt){if(je(mt))return mt;throw new J("Target is not a typed array")},dt=function(mt){if(r(mt)&&(!f||p(C,mt)))return mt;throw new J(c(mt)+" is not a typed array constructor")},Yt=function(mt,Wt,Jt,Ae){if(n){if(Jt)for(var Yi in ze){var ci=o[Yi];if(ci&&a(ci.prototype,mt))try{delete ci.prototype[mt]}catch{try{ci.prototype[mt]=Wt}catch{}}}(!v[mt]||Jt)&&u(v,mt,Jt?Wt:de&&N[mt]||Wt,Ae)}},Ye=function(mt,Wt,Jt){var Ae,Yi;if(n){if(f){if(Jt){for(Ae in ze)if(Yi=o[Ae],Yi&&a(Yi,mt))try{delete Yi[mt]}catch{}}if(!C[mt]||Jt)try{return u(C,mt,Jt?Wt:de&&C[mt]||Wt)}catch{}else return}for(Ae in ze)Yi=o[Ae],Yi&&(!Yi[mt]||Jt)&&u(Yi,mt,Wt)}};for(le in ze)Fe=o[le],Ue=Fe&&Fe.prototype,Ue?Z(Ue)[K]=Fe:de=!1;for(le in Oe)Fe=o[le],Ue=Fe&&Fe.prototype,Ue&&(Z(Ue)[K]=Fe);if((!de||!r(C)||C===Function.prototype)&&(C=function(){throw new J("Incorrect invocation")},de))for(le in ze)o[le]&&f(o[le],C);if((!de||!v||v===Y)&&(v=C.prototype,de))for(le in ze)o[le]&&f(o[le].prototype,v);if(de&&g(Q)!==v&&f(Q,v),n&&!a(v,k)){ee=!0,m(v,k,{configurable:!0,get:function(){return l(this)?this[E]:void 0}});for(le in ze)o[le]&&h(o[le],E,le)}s.exports={NATIVE_ARRAY_BUFFER_VIEWS:de,TYPED_ARRAY_TAG:ee&&E,aTypedArray:Se,aTypedArrayConstructor:dt,exportTypedArrayMethod:Yt,exportTypedArrayStaticMethod:Ye,getTypedArrayConstructor:at,isView:Ie,isTypedArray:je,TypedArray:C,TypedArrayPrototype:v}},5370:(s,e,t)=>{var i=t(6198);s.exports=function(n,o,r){for(var l=0,a=arguments.length>2?r:i(o),d=new n(a);a>l;)d[l]=o[l++];return d}},9617:(s,e,t)=>{var i=t(5397),n=t(5610),o=t(6198),r=function(l){return function(a,d,c){var h=i(a),u=o(h);if(u===0)return!l&&-1;var m=n(c,u),p;if(l&&d!==d){for(;u>m;)if(p=h[m++],p!==p)return!0}else for(;u>m;m++)if((l||m in h)&&h[m]===d)return l||m||0;return!l&&-1}};s.exports={includes:r(!0),indexOf:r(!1)}},4527:(s,e,t)=>{var i=t(3724),n=t(4376),o=TypeError,r=Object.getOwnPropertyDescriptor,l=i&&!function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(a){return a instanceof TypeError}}();s.exports=l?function(a,d){if(n(a)&&!r(a,"length").writable)throw new o("Cannot set read only .length");return a.length=d}:function(a,d){return a.length=d}},7680:(s,e,t)=>{var i=t(9504);s.exports=i([].slice)},7628:(s,e,t)=>{var i=t(6198);s.exports=function(n,o){for(var r=i(n),l=new o(r),a=0;a<r;a++)l[a]=n[r-a-1];return l}},9928:(s,e,t)=>{var i=t(6198),n=t(1291),o=RangeError;s.exports=function(r,l,a,d){var c=i(r),h=n(a),u=h<0?c+h:h;if(u>=c||u<0)throw new o("Incorrect index");for(var m=new l(c),p=0;p<c;p++)m[p]=p===u?d:r[p];return m}},6319:(s,e,t)=>{var i=t(8551),n=t(9539);s.exports=function(o,r,l,a){try{return a?r(i(l)[0],l[1]):r(l)}catch(d){n(o,"throw",d)}}},2195:(s,e,t)=>{var i=t(9504),n=i({}.toString),o=i("".slice);s.exports=function(r){return o(n(r),8,-1)}},6955:(s,e,t)=>{var i=t(2140),n=t(4901),o=t(2195),r=t(8227),l=r("toStringTag"),a=Object,d=o(function(){return arguments}())==="Arguments",c=function(h,u){try{return h[u]}catch{}};s.exports=i?o:function(h){var u,m,p;return h===void 0?"Undefined":h===null?"Null":typeof(m=c(u=a(h),l))=="string"?m:d?o(u):(p=o(u))==="Object"&&n(u.callee)?"Arguments":p}},7740:(s,e,t)=>{var i=t(9297),n=t(5031),o=t(7347),r=t(4913);s.exports=function(l,a,d){for(var c=n(a),h=r.f,u=o.f,m=0;m<c.length;m++){var p=c[m];!i(l,p)&&!(d&&i(d,p))&&h(l,p,u(a,p))}}},2211:(s,e,t)=>{var i=t(9039);s.exports=!i(function(){function n(){}return n.prototype.constructor=null,Object.getPrototypeOf(new n)!==n.prototype})},2529:s=>{s.exports=function(e,t){return{value:e,done:t}}},6699:(s,e,t)=>{var i=t(3724),n=t(4913),o=t(6980);s.exports=i?function(r,l,a){return n.f(r,l,o(1,a))}:function(r,l,a){return r[l]=a,r}},6980:s=>{s.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}},4659:(s,e,t)=>{var i=t(3724),n=t(4913),o=t(6980);s.exports=function(r,l,a){i?n.f(r,l,o(0,a)):r[l]=a}},2106:(s,e,t)=>{var i=t(283),n=t(4913);s.exports=function(o,r,l){return l.get&&i(l.get,r,{getter:!0}),l.set&&i(l.set,r,{setter:!0}),n.f(o,r,l)}},6840:(s,e,t)=>{var i=t(4901),n=t(4913),o=t(283),r=t(9433);s.exports=function(l,a,d,c){c||(c={});var h=c.enumerable,u=c.name!==void 0?c.name:a;if(i(d)&&o(d,u,c),c.global)h?l[a]=d:r(a,d);else{try{c.unsafe?l[a]&&(h=!0):delete l[a]}catch{}h?l[a]=d:n.f(l,a,{value:d,enumerable:!1,configurable:!c.nonConfigurable,writable:!c.nonWritable})}return l}},6279:(s,e,t)=>{var i=t(6840);s.exports=function(n,o,r){for(var l in o)i(n,l,o[l],r);return n}},9433:(s,e,t)=>{var i=t(4576),n=Object.defineProperty;s.exports=function(o,r){try{n(i,o,{value:r,configurable:!0,writable:!0})}catch{i[o]=r}return r}},3724:(s,e,t)=>{var i=t(9039);s.exports=!i(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})},4483:(s,e,t)=>{var i=t(4576),n=t(9429),o=t(1548),r=i.structuredClone,l=i.ArrayBuffer,a=i.MessageChannel,d=!1,c,h,u,m;if(o)d=function(p){r(p,{transfer:[p]})};else if(l)try{a||(c=n("worker_threads"),c&&(a=c.MessageChannel)),a&&(h=new a,u=new l(2),m=function(p){h.port1.postMessage(null,[p])},u.byteLength===2&&(m(u),u.byteLength===0&&(d=m)))}catch{}s.exports=d},4055:(s,e,t)=>{var i=t(4576),n=t(34),o=i.document,r=n(o)&&n(o.createElement);s.exports=function(l){return r?o.createElement(l):{}}},6837:s=>{var e=TypeError,t=9007199254740991;s.exports=function(i){if(i>t)throw e("Maximum allowed index exceeded");return i}},5002:s=>{s.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8727:s=>{s.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(s,e,t)=>{var i=t(4215);s.exports=i==="NODE"},2839:(s,e,t)=>{var i=t(4576),n=i.navigator,o=n&&n.userAgent;s.exports=o?String(o):""},9519:(s,e,t)=>{var i=t(4576),n=t(2839),o=i.process,r=i.Deno,l=o&&o.versions||r&&r.version,a=l&&l.v8,d,c;a&&(d=a.split("."),c=d[0]>0&&d[0]<4?1:+(d[0]+d[1])),!c&&n&&(d=n.match(/Edge\/(\d+)/),(!d||d[1]>=74)&&(d=n.match(/Chrome\/(\d+)/),d&&(c=+d[1]))),s.exports=c},4215:(s,e,t)=>{var i=t(4576),n=t(2839),o=t(2195),r=function(l){return n.slice(0,l.length)===l};s.exports=function(){return r("Bun/")?"BUN":r("Cloudflare-Workers")?"CLOUDFLARE":r("Deno/")?"DENO":r("Node.js/")?"NODE":i.Bun&&typeof Bun.version=="string"?"BUN":i.Deno&&typeof Deno.version=="object"?"DENO":o(i.process)==="process"?"NODE":i.window&&i.document?"BROWSER":"REST"}()},8574:(s,e,t)=>{var i=t(9504),n=Error,o=i("".replace),r=function(d){return String(new n(d).stack)}("zxcasd"),l=/\n\s*at [^:]*:[^\n]*/,a=l.test(r);s.exports=function(d,c){if(a&&typeof d=="string"&&!n.prepareStackTrace)for(;c--;)d=o(d,l,"");return d}},6518:(s,e,t)=>{var i=t(4576),n=t(7347).f,o=t(6699),r=t(6840),l=t(9433),a=t(7740),d=t(2796);s.exports=function(c,h){var u=c.target,m=c.global,p=c.stat,g,f,b,U,S,Z;if(m?f=i:p?f=i[u]||l(u,{}):f=i[u]&&i[u].prototype,f)for(b in h){if(S=h[b],c.dontCallGetSet?(Z=n(f,b),U=Z&&Z.value):U=f[b],g=d(m?b:u+(p?".":"#")+b,c.forced),!g&&U!==void 0){if(typeof S==typeof U)continue;a(S,U)}(c.sham||U&&U.sham)&&o(S,"sham",!0),r(f,b,S,c)}}},9039:s=>{s.exports=function(e){try{return!!e()}catch{return!0}}},8745:(s,e,t)=>{var i=t(616),n=Function.prototype,o=n.apply,r=n.call;s.exports=typeof Reflect=="object"&&Reflect.apply||(i?r.bind(o):function(){return r.apply(o,arguments)})},6080:(s,e,t)=>{var i=t(7476),n=t(9306),o=t(616),r=i(i.bind);s.exports=function(l,a){return n(l),a===void 0?l:o?r(l,a):function(){return l.apply(a,arguments)}}},616:(s,e,t)=>{var i=t(9039);s.exports=!i(function(){var n=(function(){}).bind();return typeof n!="function"||n.hasOwnProperty("prototype")})},9565:(s,e,t)=>{var i=t(616),n=Function.prototype.call;s.exports=i?n.bind(n):function(){return n.apply(n,arguments)}},350:(s,e,t)=>{var i=t(3724),n=t(9297),o=Function.prototype,r=i&&Object.getOwnPropertyDescriptor,l=n(o,"name"),a=l&&(function(){}).name==="something",d=l&&(!i||i&&r(o,"name").configurable);s.exports={EXISTS:l,PROPER:a,CONFIGURABLE:d}},6706:(s,e,t)=>{var i=t(9504),n=t(9306);s.exports=function(o,r,l){try{return i(n(Object.getOwnPropertyDescriptor(o,r)[l]))}catch{}}},7476:(s,e,t)=>{var i=t(2195),n=t(9504);s.exports=function(o){if(i(o)==="Function")return n(o)}},9504:(s,e,t)=>{var i=t(616),n=Function.prototype,o=n.call,r=i&&n.bind.bind(o,o);s.exports=i?r:function(l){return function(){return o.apply(l,arguments)}}},9429:(s,e,t)=>{var i=t(4576),n=t(6193);s.exports=function(o){if(n){try{return i.process.getBuiltinModule(o)}catch{}try{return Function('return require("'+o+'")')()}catch{}}}},7751:(s,e,t)=>{var i=t(4576),n=t(4901),o=function(r){return n(r)?r:void 0};s.exports=function(r,l){return arguments.length<2?o(i[r]):i[r]&&i[r][l]}},1767:s=>{s.exports=function(e){return{iterator:e,next:e.next,done:!1}}},8646:(s,e,t)=>{var i=t(9565),n=t(8551),o=t(1767),r=t(851);s.exports=function(l,a){(!a||typeof l!="string")&&n(l);var d=r(l);return o(n(d!==void 0?i(d,l):l))}},851:(s,e,t)=>{var i=t(6955),n=t(5966),o=t(4117),r=t(6269),l=t(8227),a=l("iterator");s.exports=function(d){if(!o(d))return n(d,a)||n(d,"@@iterator")||r[i(d)]}},81:(s,e,t)=>{var i=t(9565),n=t(9306),o=t(8551),r=t(6823),l=t(851),a=TypeError;s.exports=function(d,c){var h=arguments.length<2?l(d):c;if(n(h))return o(i(h,d));throw new a(r(d)+" is not iterable")}},5966:(s,e,t)=>{var i=t(9306),n=t(4117);s.exports=function(o,r){var l=o[r];return n(l)?void 0:i(l)}},3789:(s,e,t)=>{var i=t(9306),n=t(8551),o=t(9565),r=t(1291),l=t(1767),a="Invalid size",d=RangeError,c=TypeError,h=Math.max,u=function(m,p){this.set=m,this.size=h(p,0),this.has=i(m.has),this.keys=i(m.keys)};u.prototype={getIterator:function(){return l(n(o(this.keys,this.set)))},includes:function(m){return o(this.has,this.set,m)}},s.exports=function(m){n(m);var p=+m.size;if(p!==p)throw new c(a);var g=r(p);if(g<0)throw new d(a);return new u(m,g)}},4576:function(s){var e=function(t){return t&&t.Math===Math&&t};s.exports=e(typeof globalThis=="object"&&globalThis)||e(typeof window=="object"&&window)||e(typeof self=="object"&&self)||e(typeof global=="object"&&global)||e(typeof this=="object"&&this)||function(){return this}()||Function("return this")()},9297:(s,e,t)=>{var i=t(9504),n=t(8981),o=i({}.hasOwnProperty);s.exports=Object.hasOwn||function(r,l){return o(n(r),l)}},421:s=>{s.exports={}},397:(s,e,t)=>{var i=t(7751);s.exports=i("document","documentElement")},5917:(s,e,t)=>{var i=t(3724),n=t(9039),o=t(4055);s.exports=!i&&!n(function(){return Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a!==7})},7055:(s,e,t)=>{var i=t(9504),n=t(9039),o=t(2195),r=Object,l=i("".split);s.exports=n(function(){return!r("z").propertyIsEnumerable(0)})?function(a){return o(a)==="String"?l(a,""):r(a)}:r},3167:(s,e,t)=>{var i=t(4901),n=t(34),o=t(2967);s.exports=function(r,l,a){var d,c;return o&&i(d=l.constructor)&&d!==a&&n(c=d.prototype)&&c!==a.prototype&&o(r,c),r}},3706:(s,e,t)=>{var i=t(9504),n=t(4901),o=t(7629),r=i(Function.toString);n(o.inspectSource)||(o.inspectSource=function(l){return r(l)}),s.exports=o.inspectSource},1181:(s,e,t)=>{var i=t(8622),n=t(4576),o=t(34),r=t(6699),l=t(9297),a=t(7629),d=t(6119),c=t(421),h="Object already initialized",u=n.TypeError,m=n.WeakMap,p,g,f,b=function(R){return f(R)?g(R):p(R,{})},U=function(R){return function(y){var N;if(!o(y)||(N=g(y)).type!==R)throw new u("Incompatible receiver, "+R+" required");return N}};if(i||a.state){var S=a.state||(a.state=new m);S.get=S.get,S.has=S.has,S.set=S.set,p=function(R,y){if(S.has(R))throw new u(h);return y.facade=R,S.set(R,y),y},g=function(R){return S.get(R)||{}},f=function(R){return S.has(R)}}else{var Z=d("state");c[Z]=!0,p=function(R,y){if(l(R,Z))throw new u(h);return y.facade=R,r(R,Z,y),y},g=function(R){return l(R,Z)?R[Z]:{}},f=function(R){return l(R,Z)}}s.exports={set:p,get:g,has:f,enforce:b,getterFor:U}},4209:(s,e,t)=>{var i=t(8227),n=t(6269),o=i("iterator"),r=Array.prototype;s.exports=function(l){return l!==void 0&&(n.Array===l||r[o]===l)}},4376:(s,e,t)=>{var i=t(2195);s.exports=Array.isArray||function(n){return i(n)==="Array"}},1108:(s,e,t)=>{var i=t(6955);s.exports=function(n){var o=i(n);return o==="BigInt64Array"||o==="BigUint64Array"}},4901:s=>{var e=typeof document=="object"&&document.all;s.exports=typeof e>"u"&&e!==void 0?function(t){return typeof t=="function"||t===e}:function(t){return typeof t=="function"}},2796:(s,e,t)=>{var i=t(9039),n=t(4901),o=/#|\.prototype\./,r=function(h,u){var m=a[l(h)];return m===c?!0:m===d?!1:n(u)?i(u):!!u},l=r.normalize=function(h){return String(h).replace(o,".").toLowerCase()},a=r.data={},d=r.NATIVE="N",c=r.POLYFILL="P";s.exports=r},4117:s=>{s.exports=function(e){return e==null}},34:(s,e,t)=>{var i=t(4901);s.exports=function(n){return typeof n=="object"?n!==null:i(n)}},3925:(s,e,t)=>{var i=t(34);s.exports=function(n){return i(n)||n===null}},6395:s=>{s.exports=!1},757:(s,e,t)=>{var i=t(7751),n=t(4901),o=t(1625),r=t(7040),l=Object;s.exports=r?function(a){return typeof a=="symbol"}:function(a){var d=i("Symbol");return n(d)&&o(d.prototype,l(a))}},507:(s,e,t)=>{var i=t(9565);s.exports=function(n,o,r){for(var l=r?n:n.iterator,a=n.next,d,c;!(d=i(a,l)).done;)if(c=o(d.value),c!==void 0)return c}},2652:(s,e,t)=>{var i=t(6080),n=t(9565),o=t(8551),r=t(6823),l=t(4209),a=t(6198),d=t(1625),c=t(81),h=t(851),u=t(9539),m=TypeError,p=function(f,b){this.stopped=f,this.result=b},g=p.prototype;s.exports=function(f,b,U){var S=U&&U.that,Z=!!(U&&U.AS_ENTRIES),R=!!(U&&U.IS_RECORD),y=!!(U&&U.IS_ITERATOR),N=!!(U&&U.INTERRUPTED),w=i(b,S),Q,C,v,Y,J,k,E,K=function(ee){return Q&&u(Q,"normal",ee),new p(!0,ee)},de=function(ee){return Z?(o(ee),N?w(ee[0],ee[1],K):w(ee[0],ee[1])):N?w(ee,K):w(ee)};if(R)Q=f.iterator;else if(y)Q=f;else{if(C=h(f),!C)throw new m(r(f)+" is not iterable");if(l(C)){for(v=0,Y=a(f);Y>v;v++)if(J=de(f[v]),J&&d(g,J))return J;return new p(!1)}Q=c(f,C)}for(k=R?f.next:Q.next;!(E=n(k,Q)).done;){try{J=de(E.value)}catch(ee){u(Q,"throw",ee)}if(typeof J=="object"&&J&&d(g,J))return J}return new p(!1)}},9539:(s,e,t)=>{var i=t(9565),n=t(8551),o=t(5966);s.exports=function(r,l,a){var d,c;n(r);try{if(d=o(r,"return"),!d){if(l==="throw")throw a;return a}d=i(d,r)}catch(h){c=!0,d=h}if(l==="throw")throw a;if(c)throw d;return n(d),a}},9462:(s,e,t)=>{var i=t(9565),n=t(2360),o=t(6699),r=t(6279),l=t(8227),a=t(1181),d=t(5966),c=t(7657).IteratorPrototype,h=t(2529),u=t(9539),m=l("toStringTag"),p="IteratorHelper",g="WrapForValidIterator",f=a.set,b=function(Z){var R=a.getterFor(Z?g:p);return r(n(c),{next:function(){var y=R(this);if(Z)return y.nextHandler();try{var N=y.done?void 0:y.nextHandler();return h(N,y.done)}catch(w){throw y.done=!0,w}},return:function(){var y=R(this),N=y.iterator;if(y.done=!0,Z){var w=d(N,"return");return w?i(w,N):h(void 0,!0)}if(y.inner)try{u(y.inner.iterator,"normal")}catch(Q){return u(N,"throw",Q)}return N&&u(N,"normal"),h(void 0,!0)}})},U=b(!0),S=b(!1);o(S,m,"Iterator Helper"),s.exports=function(Z,R){var y=function(N,w){w?(w.iterator=N.iterator,w.next=N.next):w=N,w.type=R?g:p,w.nextHandler=Z,w.counter=0,w.done=!1,f(this,w)};return y.prototype=R?U:S,y}},713:(s,e,t)=>{var i=t(9565),n=t(9306),o=t(8551),r=t(1767),l=t(9462),a=t(6319),d=l(function(){var c=this.iterator,h=o(i(this.next,c)),u=this.done=!!h.done;if(!u)return a(c,this.mapper,[h.value,this.counter++],!0)});s.exports=function(c){return o(this),n(c),new d(r(this),{mapper:c})}},7657:(s,e,t)=>{var i=t(9039),n=t(4901),o=t(34),r=t(2360),l=t(2787),a=t(6840),d=t(8227),c=t(6395),h=d("iterator"),u=!1,m,p,g;[].keys&&(g=[].keys(),"next"in g?(p=l(l(g)),p!==Object.prototype&&(m=p)):u=!0);var f=!o(m)||i(function(){var b={};return m[h].call(b)!==b});f?m={}:c&&(m=r(m)),n(m[h])||a(m,h,function(){return this}),s.exports={IteratorPrototype:m,BUGGY_SAFARI_ITERATORS:u}},6269:s=>{s.exports={}},6198:(s,e,t)=>{var i=t(8014);s.exports=function(n){return i(n.length)}},283:(s,e,t)=>{var i=t(9504),n=t(9039),o=t(4901),r=t(9297),l=t(3724),a=t(350).CONFIGURABLE,d=t(3706),c=t(1181),h=c.enforce,u=c.get,m=String,p=Object.defineProperty,g=i("".slice),f=i("".replace),b=i([].join),U=l&&!n(function(){return p(function(){},"length",{value:8}).length!==8}),S=String(String).split("String"),Z=s.exports=function(R,y,N){g(m(y),0,7)==="Symbol("&&(y="["+f(m(y),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),N&&N.getter&&(y="get "+y),N&&N.setter&&(y="set "+y),(!r(R,"name")||a&&R.name!==y)&&(l?p(R,"name",{value:y,configurable:!0}):R.name=y),U&&N&&r(N,"arity")&&R.length!==N.arity&&p(R,"length",{value:N.arity});try{N&&r(N,"constructor")&&N.constructor?l&&p(R,"prototype",{writable:!1}):R.prototype&&(R.prototype=void 0)}catch{}var w=h(R);return r(w,"source")||(w.source=b(S,typeof y=="string"?y:"")),R};Function.prototype.toString=Z(function(){return o(this)&&u(this).source||d(this)},"toString")},741:s=>{var e=Math.ceil,t=Math.floor;s.exports=Math.trunc||function(i){var n=+i;return(n>0?t:e)(n)}},6043:(s,e,t)=>{var i=t(9306),n=TypeError,o=function(r){var l,a;this.promise=new r(function(d,c){if(l!==void 0||a!==void 0)throw new n("Bad Promise constructor");l=d,a=c}),this.resolve=i(l),this.reject=i(a)};s.exports.f=function(r){return new o(r)}},2603:(s,e,t)=>{var i=t(655);s.exports=function(n,o){return n===void 0?arguments.length<2?"":o:i(n)}},4149:s=>{var e=RangeError;s.exports=function(t){if(t===t)return t;throw new e("NaN is not allowed")}},2360:(s,e,t)=>{var i=t(8551),n=t(6801),o=t(8727),r=t(421),l=t(397),a=t(4055),d=t(6119),c=">",h="<",u="prototype",m="script",p=d("IE_PROTO"),g=function(){},f=function(R){return h+m+c+R+h+"/"+m+c},b=function(R){R.write(f("")),R.close();var y=R.parentWindow.Object;return R=null,y},U=function(){var R=a("iframe"),y="java"+m+":",N;return R.style.display="none",l.appendChild(R),R.src=String(y),N=R.contentWindow.document,N.open(),N.write(f("document.F=Object")),N.close(),N.F},S,Z=function(){try{S=new ActiveXObject("htmlfile")}catch{}Z=typeof document<"u"?document.domain&&S?b(S):U():b(S);for(var R=o.length;R--;)delete Z[u][o[R]];return Z()};r[p]=!0,s.exports=Object.create||function(R,y){var N;return R!==null?(g[u]=i(R),N=new g,g[u]=null,N[p]=R):N=Z(),y===void 0?N:n.f(N,y)}},6801:(s,e,t)=>{var i=t(3724),n=t(8686),o=t(4913),r=t(8551),l=t(5397),a=t(1072);e.f=i&&!n?Object.defineProperties:function(d,c){r(d);for(var h=l(c),u=a(c),m=u.length,p=0,g;m>p;)o.f(d,g=u[p++],h[g]);return d}},4913:(s,e,t)=>{var i=t(3724),n=t(5917),o=t(8686),r=t(8551),l=t(6969),a=TypeError,d=Object.defineProperty,c=Object.getOwnPropertyDescriptor,h="enumerable",u="configurable",m="writable";e.f=i?o?function(p,g,f){if(r(p),g=l(g),r(f),typeof p=="function"&&g==="prototype"&&"value"in f&&m in f&&!f[m]){var b=c(p,g);b&&b[m]&&(p[g]=f.value,f={configurable:u in f?f[u]:b[u],enumerable:h in f?f[h]:b[h],writable:!1})}return d(p,g,f)}:d:function(p,g,f){if(r(p),g=l(g),r(f),n)try{return d(p,g,f)}catch{}if("get"in f||"set"in f)throw new a("Accessors not supported");return"value"in f&&(p[g]=f.value),p}},7347:(s,e,t)=>{var i=t(3724),n=t(9565),o=t(8773),r=t(6980),l=t(5397),a=t(6969),d=t(9297),c=t(5917),h=Object.getOwnPropertyDescriptor;e.f=i?h:function(u,m){if(u=l(u),m=a(m),c)try{return h(u,m)}catch{}if(d(u,m))return r(!n(o.f,u,m),u[m])}},8480:(s,e,t)=>{var i=t(1828),n=t(8727),o=n.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(r){return i(r,o)}},3717:(s,e)=>{e.f=Object.getOwnPropertySymbols},2787:(s,e,t)=>{var i=t(9297),n=t(4901),o=t(8981),r=t(6119),l=t(2211),a=r("IE_PROTO"),d=Object,c=d.prototype;s.exports=l?d.getPrototypeOf:function(h){var u=o(h);if(i(u,a))return u[a];var m=u.constructor;return n(m)&&u instanceof m?m.prototype:u instanceof d?c:null}},1625:(s,e,t)=>{var i=t(9504);s.exports=i({}.isPrototypeOf)},1828:(s,e,t)=>{var i=t(9504),n=t(9297),o=t(5397),r=t(9617).indexOf,l=t(421),a=i([].push);s.exports=function(d,c){var h=o(d),u=0,m=[],p;for(p in h)!n(l,p)&&n(h,p)&&a(m,p);for(;c.length>u;)n(h,p=c[u++])&&(~r(m,p)||a(m,p));return m}},1072:(s,e,t)=>{var i=t(1828),n=t(8727);s.exports=Object.keys||function(o){return i(o,n)}},8773:(s,e)=>{var t={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,n=i&&!t.call({1:2},1);e.f=n?function(o){var r=i(this,o);return!!r&&r.enumerable}:t},2967:(s,e,t)=>{var i=t(6706),n=t(34),o=t(7750),r=t(3506);s.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var l=!1,a={},d;try{d=i(Object.prototype,"__proto__","set"),d(a,[]),l=a instanceof Array}catch{}return function(c,h){return o(c),r(h),n(c)&&(l?d(c,h):c.__proto__=h),c}}():void 0)},4270:(s,e,t)=>{var i=t(9565),n=t(4901),o=t(34),r=TypeError;s.exports=function(l,a){var d,c;if(a==="string"&&n(d=l.toString)&&!o(c=i(d,l))||n(d=l.valueOf)&&!o(c=i(d,l))||a!=="string"&&n(d=l.toString)&&!o(c=i(d,l)))return c;throw new r("Can't convert object to primitive value")}},5031:(s,e,t)=>{var i=t(7751),n=t(9504),o=t(8480),r=t(3717),l=t(8551),a=n([].concat);s.exports=i("Reflect","ownKeys")||function(d){var c=o.f(l(d)),h=r.f;return h?a(c,h(d)):c}},8235:(s,e,t)=>{var i=t(9504),n=t(9297),o=SyntaxError,r=parseInt,l=String.fromCharCode,a=i("".charAt),d=i("".slice),c=i(/./.exec),h={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":`
- `,"\\r":"\r","\\t":" "},u=/^[\da-f]{4}$/i,m=/^[\u0000-\u001F]$/;s.exports=function(p,g){for(var f=!0,b="";g<p.length;){var U=a(p,g);if(U==="\\"){var S=d(p,g,g+2);if(n(h,S))b+=h[S],g+=2;else if(S==="\\u"){g+=2;var Z=d(p,g,g+4);if(!c(u,Z))throw new o("Bad Unicode escape at: "+g);b+=l(r(Z,16)),g+=4}else throw new o('Unknown escape sequence: "'+S+'"')}else if(U==='"'){f=!1,g++;break}else{if(c(m,U))throw new o("Bad control character in string literal at: "+g);b+=U,g++}}if(f)throw new o("Unterminated string at: "+g);return{value:b,end:g}}},1103:s=>{s.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},7750:(s,e,t)=>{var i=t(4117),n=TypeError;s.exports=function(o){if(i(o))throw new n("Can't call method on "+o);return o}},9286:(s,e,t)=>{var i=t(4402),n=t(8469),o=i.Set,r=i.add;s.exports=function(l){var a=new o;return n(l,function(d){r(a,d)}),a}},3440:(s,e,t)=>{var i=t(7080),n=t(4402),o=t(9286),r=t(5170),l=t(3789),a=t(8469),d=t(507),c=n.has,h=n.remove;s.exports=function(u){var m=i(this),p=l(u),g=o(m);return r(m)<=p.size?a(m,function(f){p.includes(f)&&h(g,f)}):d(p.getIterator(),function(f){c(m,f)&&h(g,f)}),g}},4402:(s,e,t)=>{var i=t(9504),n=Set.prototype;s.exports={Set,add:i(n.add),has:i(n.has),remove:i(n.delete),proto:n}},8750:(s,e,t)=>{var i=t(7080),n=t(4402),o=t(5170),r=t(3789),l=t(8469),a=t(507),d=n.Set,c=n.add,h=n.has;s.exports=function(u){var m=i(this),p=r(u),g=new d;return o(m)>p.size?a(p.getIterator(),function(f){h(m,f)&&c(g,f)}):l(m,function(f){p.includes(f)&&c(g,f)}),g}},4449:(s,e,t)=>{var i=t(7080),n=t(4402).has,o=t(5170),r=t(3789),l=t(8469),a=t(507),d=t(9539);s.exports=function(c){var h=i(this),u=r(c);if(o(h)<=u.size)return l(h,function(p){if(u.includes(p))return!1},!0)!==!1;var m=u.getIterator();return a(m,function(p){if(n(h,p))return d(m,"normal",!1)})!==!1}},3838:(s,e,t)=>{var i=t(7080),n=t(5170),o=t(8469),r=t(3789);s.exports=function(l){var a=i(this),d=r(l);return n(a)>d.size?!1:o(a,function(c){if(!d.includes(c))return!1},!0)!==!1}},8527:(s,e,t)=>{var i=t(7080),n=t(4402).has,o=t(5170),r=t(3789),l=t(507),a=t(9539);s.exports=function(d){var c=i(this),h=r(d);if(o(c)<h.size)return!1;var u=h.getIterator();return l(u,function(m){if(!n(c,m))return a(u,"normal",!1)})!==!1}},8469:(s,e,t)=>{var i=t(9504),n=t(507),o=t(4402),r=o.Set,l=o.proto,a=i(l.forEach),d=i(l.keys),c=d(new r).next;s.exports=function(h,u,m){return m?n({iterator:d(h),next:c},u):a(h,u)}},4916:(s,e,t)=>{var i=t(7751),n=function(o){return{size:o,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};s.exports=function(o){var r=i("Set");try{new r()[o](n(0));try{return new r()[o](n(-1)),!1}catch{return!0}}catch{return!1}}},5170:(s,e,t)=>{var i=t(6706),n=t(4402);s.exports=i(n.proto,"size","get")||function(o){return o.size}},3650:(s,e,t)=>{var i=t(7080),n=t(4402),o=t(9286),r=t(3789),l=t(507),a=n.add,d=n.has,c=n.remove;s.exports=function(h){var u=i(this),m=r(h).getIterator(),p=o(u);return l(m,function(g){d(u,g)?c(p,g):a(p,g)}),p}},4204:(s,e,t)=>{var i=t(7080),n=t(4402).add,o=t(9286),r=t(3789),l=t(507);s.exports=function(a){var d=i(this),c=r(a).getIterator(),h=o(d);return l(c,function(u){n(h,u)}),h}},6119:(s,e,t)=>{var i=t(5745),n=t(3392),o=i("keys");s.exports=function(r){return o[r]||(o[r]=n(r))}},7629:(s,e,t)=>{var i=t(6395),n=t(4576),o=t(9433),r="__core-js_shared__",l=s.exports=n[r]||o(r,{});(l.versions||(l.versions=[])).push({version:"3.39.0",mode:i?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(s,e,t)=>{var i=t(7629);s.exports=function(n,o){return i[n]||(i[n]=o||{})}},1548:(s,e,t)=>{var i=t(4576),n=t(9039),o=t(9519),r=t(4215),l=i.structuredClone;s.exports=!!l&&!n(function(){if(r==="DENO"&&o>92||r==="NODE"&&o>94||r==="BROWSER"&&o>97)return!1;var a=new ArrayBuffer(8),d=l(a,{transfer:[a]});return a.byteLength!==0||d.byteLength!==8})},4495:(s,e,t)=>{var i=t(9519),n=t(9039),o=t(4576),r=o.String;s.exports=!!Object.getOwnPropertySymbols&&!n(function(){var l=Symbol("symbol detection");return!r(l)||!(Object(l)instanceof Symbol)||!Symbol.sham&&i&&i<41})},5610:(s,e,t)=>{var i=t(1291),n=Math.max,o=Math.min;s.exports=function(r,l){var a=i(r);return a<0?n(a+l,0):o(a,l)}},5854:(s,e,t)=>{var i=t(2777),n=TypeError;s.exports=function(o){var r=i(o,"number");if(typeof r=="number")throw new n("Can't convert number to bigint");return BigInt(r)}},7696:(s,e,t)=>{var i=t(1291),n=t(8014),o=RangeError;s.exports=function(r){if(r===void 0)return 0;var l=i(r),a=n(l);if(l!==a)throw new o("Wrong length or index");return a}},5397:(s,e,t)=>{var i=t(7055),n=t(7750);s.exports=function(o){return i(n(o))}},1291:(s,e,t)=>{var i=t(741);s.exports=function(n){var o=+n;return o!==o||o===0?0:i(o)}},8014:(s,e,t)=>{var i=t(1291),n=Math.min;s.exports=function(o){var r=i(o);return r>0?n(r,9007199254740991):0}},8981:(s,e,t)=>{var i=t(7750),n=Object;s.exports=function(o){return n(i(o))}},9590:(s,e,t)=>{var i=t(1291),n=RangeError;s.exports=function(o){var r=i(o);if(r<0)throw new n("The argument can't be less than 0");return r}},2777:(s,e,t)=>{var i=t(9565),n=t(34),o=t(757),r=t(5966),l=t(4270),a=t(8227),d=TypeError,c=a("toPrimitive");s.exports=function(h,u){if(!n(h)||o(h))return h;var m=r(h,c),p;if(m){if(u===void 0&&(u="default"),p=i(m,h,u),!n(p)||o(p))return p;throw new d("Can't convert object to primitive value")}return u===void 0&&(u="number"),l(h,u)}},6969:(s,e,t)=>{var i=t(2777),n=t(757);s.exports=function(o){var r=i(o,"string");return n(r)?r:r+""}},2140:(s,e,t)=>{var i=t(8227),n=i("toStringTag"),o={};o[n]="z",s.exports=String(o)==="[object z]"},655:(s,e,t)=>{var i=t(6955),n=String;s.exports=function(o){if(i(o)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return n(o)}},6823:s=>{var e=String;s.exports=function(t){try{return e(t)}catch{return"Object"}}},3392:(s,e,t)=>{var i=t(9504),n=0,o=Math.random(),r=i(1 .toString);s.exports=function(l){return"Symbol("+(l===void 0?"":l)+")_"+r(++n+o,36)}},7040:(s,e,t)=>{var i=t(4495);s.exports=i&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},8686:(s,e,t)=>{var i=t(3724),n=t(9039);s.exports=i&&n(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})},2812:s=>{var e=TypeError;s.exports=function(t,i){if(t<i)throw new e("Not enough arguments");return t}},8622:(s,e,t)=>{var i=t(4576),n=t(4901),o=i.WeakMap;s.exports=n(o)&&/native code/.test(String(o))},8227:(s,e,t)=>{var i=t(4576),n=t(5745),o=t(9297),r=t(3392),l=t(4495),a=t(7040),d=i.Symbol,c=n("wks"),h=a?d.for||d:d&&d.withoutSetter||r;s.exports=function(u){return o(c,u)||(c[u]=l&&o(d,u)?d[u]:h("Symbol."+u)),c[u]}},6573:(s,e,t)=>{var i=t(3724),n=t(2106),o=t(3238),r=ArrayBuffer.prototype;i&&!("detached"in r)&&n(r,"detached",{configurable:!0,get:function(){return o(this)}})},7936:(s,e,t)=>{var i=t(6518),n=t(5636);n&&i({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return n(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(s,e,t)=>{var i=t(6518),n=t(5636);n&&i({target:"ArrayBuffer",proto:!0},{transfer:function(){return n(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(s,e,t)=>{var i=t(6518),n=t(8981),o=t(6198),r=t(4527),l=t(6837),a=t(9039),d=a(function(){return[].push.call({length:4294967296},1)!==4294967297}),c=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(u){return u instanceof TypeError}},h=d||!c();i({target:"Array",proto:!0,arity:1,forced:h},{push:function(u){var m=n(this),p=o(m),g=arguments.length;l(p+g);for(var f=0;f<g;f++)m[p]=arguments[f],p++;return r(m,p),p}})},8111:(s,e,t)=>{var i=t(6518),n=t(4576),o=t(679),r=t(8551),l=t(4901),a=t(2787),d=t(2106),c=t(4659),h=t(9039),u=t(9297),m=t(8227),p=t(7657).IteratorPrototype,g=t(3724),f=t(6395),b="constructor",U="Iterator",S=m("toStringTag"),Z=TypeError,R=n[U],y=f||!l(R)||R.prototype!==p||!h(function(){R({})}),N=function(){if(o(this,p),a(this)===p)throw new Z("Abstract class Iterator not directly constructable")},w=function(Q,C){g?d(p,Q,{configurable:!0,get:function(){return C},set:function(v){if(r(this),this===p)throw new Z("You can't redefine this property");u(this,Q)?this[Q]=v:c(this,Q,v)}}):p[Q]=C};u(p,S)||w(S,U),(y||!u(p,b)||p[b]===Object)&&w(b,N),N.prototype=p,i({global:!0,constructor:!0,forced:y},{Iterator:N})},9314:(s,e,t)=>{var i=t(6518),n=t(9565),o=t(8551),r=t(1767),l=t(4149),a=t(9590),d=t(9462),c=t(6395),h=d(function(){for(var u=this.iterator,m=this.next,p,g;this.remaining;)if(this.remaining--,p=o(n(m,u)),g=this.done=!!p.done,g)return;if(p=o(n(m,u)),g=this.done=!!p.done,!g)return p.value});i({target:"Iterator",proto:!0,real:!0,forced:c},{drop:function(u){o(this);var m=a(l(+u));return new h(r(this),{remaining:m})}})},1148:(s,e,t)=>{var i=t(6518),n=t(2652),o=t(9306),r=t(8551),l=t(1767);i({target:"Iterator",proto:!0,real:!0},{every:function(a){r(this),o(a);var d=l(this),c=0;return!n(d,function(h,u){if(!a(h,c++))return u()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},2489:(s,e,t)=>{var i=t(6518),n=t(9565),o=t(9306),r=t(8551),l=t(1767),a=t(9462),d=t(6319),c=t(6395),h=a(function(){for(var u=this.iterator,m=this.predicate,p=this.next,g,f,b;;){if(g=r(n(p,u)),f=this.done=!!g.done,f)return;if(b=g.value,d(u,m,[b,this.counter++],!0))return b}});i({target:"Iterator",proto:!0,real:!0,forced:c},{filter:function(u){return r(this),o(u),new h(l(this),{predicate:u})}})},531:(s,e,t)=>{var i=t(6518),n=t(9565),o=t(9306),r=t(8551),l=t(1767),a=t(8646),d=t(9462),c=t(9539),h=t(6395),u=d(function(){for(var m=this.iterator,p=this.mapper,g,f;;){if(f=this.inner)try{if(g=r(n(f.next,f.iterator)),!g.done)return g.value;this.inner=null}catch(b){c(m,"throw",b)}if(g=r(n(this.next,m)),this.done=!!g.done)return;try{this.inner=a(p(g.value,this.counter++),!1)}catch(b){c(m,"throw",b)}}});i({target:"Iterator",proto:!0,real:!0,forced:h},{flatMap:function(m){return r(this),o(m),new u(l(this),{mapper:m,inner:null})}})},1701:(s,e,t)=>{var i=t(6518),n=t(713),o=t(6395);i({target:"Iterator",proto:!0,real:!0,forced:o},{map:n})},3579:(s,e,t)=>{var i=t(6518),n=t(2652),o=t(9306),r=t(8551),l=t(1767);i({target:"Iterator",proto:!0,real:!0},{some:function(a){r(this),o(a);var d=l(this),c=0;return n(d,function(h,u){if(a(h,c++))return u()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},1689:(s,e,t)=>{var i=t(6518),n=t(4576),o=t(8745),r=t(7680),l=t(6043),a=t(9306),d=t(1103),c=n.Promise,h=!1,u=!c||!c.try||d(function(){c.try(function(m){h=m===8},8)}).error||!h;i({target:"Promise",stat:!0,forced:u},{try:function(m){var p=arguments.length>1?r(arguments,1):[],g=l.f(this),f=d(function(){return o(a(m),void 0,p)});return(f.error?g.reject:g.resolve)(f.value),g.promise}})},4628:(s,e,t)=>{var i=t(6518),n=t(6043);i({target:"Promise",stat:!0},{withResolvers:function(){var o=n.f(this);return{promise:o.promise,resolve:o.resolve,reject:o.reject}}})},7642:(s,e,t)=>{var i=t(6518),n=t(3440),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("difference")},{difference:n})},8004:(s,e,t)=>{var i=t(6518),n=t(9039),o=t(8750),r=t(4916),l=!r("intersection")||n(function(){return String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))!=="3,2"});i({target:"Set",proto:!0,real:!0,forced:l},{intersection:o})},3853:(s,e,t)=>{var i=t(6518),n=t(4449),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("isDisjointFrom")},{isDisjointFrom:n})},5876:(s,e,t)=>{var i=t(6518),n=t(3838),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("isSubsetOf")},{isSubsetOf:n})},2475:(s,e,t)=>{var i=t(6518),n=t(8527),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("isSupersetOf")},{isSupersetOf:n})},5024:(s,e,t)=>{var i=t(6518),n=t(3650),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("symmetricDifference")},{symmetricDifference:n})},1698:(s,e,t)=>{var i=t(6518),n=t(4204),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("union")},{union:n})},7467:(s,e,t)=>{var i=t(7628),n=t(4644),o=n.aTypedArray,r=n.exportTypedArrayMethod,l=n.getTypedArrayConstructor;r("toReversed",function(){return i(o(this),l(this))})},4732:(s,e,t)=>{var i=t(4644),n=t(9504),o=t(9306),r=t(5370),l=i.aTypedArray,a=i.getTypedArrayConstructor,d=i.exportTypedArrayMethod,c=n(i.TypedArrayPrototype.sort);d("toSorted",function(h){h!==void 0&&o(h);var u=l(this),m=r(a(u),u);return c(m,h)})},9577:(s,e,t)=>{var i=t(9928),n=t(4644),o=t(1108),r=t(1291),l=t(5854),a=n.aTypedArray,d=n.getTypedArrayConstructor,c=n.exportTypedArrayMethod,h=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(u){return u===8}}();c("with",function(u,m){var p=a(this),g=r(u),f=o(p)?l(m):+m;return i(p,d(p),g,f)},!h)},8992:(s,e,t)=>{t(8111)},4743:(s,e,t)=>{t(9314)},3215:(s,e,t)=>{t(1148)},4520:(s,e,t)=>{t(2489)},670:(s,e,t)=>{t(531)},1454:(s,e,t)=>{t(1701)},7550:(s,e,t)=>{t(3579)},8335:(s,e,t)=>{var i=t(6518),n=t(3724),o=t(4576),r=t(7751),l=t(9504),a=t(9565),d=t(4901),c=t(34),h=t(4376),u=t(9297),m=t(655),p=t(6198),g=t(4659),f=t(9039),b=t(8235),U=t(4495),S=o.JSON,Z=o.Number,R=o.SyntaxError,y=S&&S.parse,N=r("Object","keys"),w=Object.getOwnPropertyDescriptor,Q=l("".charAt),C=l("".slice),v=l(/./.exec),Y=l([].push),J=/^\d$/,k=/^[1-9]$/,E=/^[\d-]$/,K=/^[\t\n\r ]$/,de=0,ee=1,le=function(je,Se){je=m(je);var dt=new Oe(je,0),Yt=dt.parse(),Ye=Yt.value,mt=dt.skip(K,Yt.end);if(mt<je.length)throw new R('Unexpected extra character: "'+Q(je,mt)+'" after the parsed data at: '+mt);return d(Se)?Fe({"":Ye},"",Se,Yt):Ye},Fe=function(je,Se,dt,Yt){var Ye=je[Se],mt=Yt&&Ye===Yt.value,Wt=mt&&typeof Yt.source=="string"?{source:Yt.source}:{},Jt,Ae,Yi,ci,we;if(c(Ye)){var si=h(Ye),yn=mt?Yt.nodes:si?[]:{};if(si)for(Jt=yn.length,Yi=p(Ye),ci=0;ci<Yi;ci++)Ue(Ye,ci,Fe(Ye,""+ci,dt,ci<Jt?yn[ci]:void 0));else for(Ae=N(Ye),Yi=p(Ae),ci=0;ci<Yi;ci++)we=Ae[ci],Ue(Ye,we,Fe(Ye,we,dt,u(yn,we)?yn[we]:void 0))}return a(dt,je,Se,Ye,Wt)},Ue=function(je,Se,dt){if(n){var Yt=w(je,Se);if(Yt&&!Yt.configurable)return}dt===void 0?delete je[Se]:g(je,Se,dt)},ze=function(je,Se,dt,Yt){this.value=je,this.end=Se,this.source=dt,this.nodes=Yt},Oe=function(je,Se){this.source=je,this.index=Se};Oe.prototype={fork:function(je){return new Oe(this.source,je)},parse:function(){var je=this.source,Se=this.skip(K,this.index),dt=this.fork(Se),Yt=Q(je,Se);if(v(E,Yt))return dt.number();switch(Yt){case"{":return dt.object();case"[":return dt.array();case'"':return dt.string();case"t":return dt.keyword(!0);case"f":return dt.keyword(!1);case"n":return dt.keyword(null)}throw new R('Unexpected character: "'+Yt+'" at: '+Se)},node:function(je,Se,dt,Yt,Ye){return new ze(Se,Yt,je?null:C(this.source,dt,Yt),Ye)},object:function(){for(var je=this.source,Se=this.index+1,dt=!1,Yt={},Ye={};Se<je.length;){if(Se=this.until(['"',"}"],Se),Q(je,Se)==="}"&&!dt){Se++;break}var mt=this.fork(Se).string(),Wt=mt.value;Se=mt.end,Se=this.until([":"],Se)+1,Se=this.skip(K,Se),mt=this.fork(Se).parse(),g(Ye,Wt,mt),g(Yt,Wt,mt.value),Se=this.until([",","}"],mt.end);var Jt=Q(je,Se);if(Jt===",")dt=!0,Se++;else if(Jt==="}"){Se++;break}}return this.node(ee,Yt,this.index,Se,Ye)},array:function(){for(var je=this.source,Se=this.index+1,dt=!1,Yt=[],Ye=[];Se<je.length;){if(Se=this.skip(K,Se),Q(je,Se)==="]"&&!dt){Se++;break}var mt=this.fork(Se).parse();if(Y(Ye,mt),Y(Yt,mt.value),Se=this.until([",","]"],mt.end),Q(je,Se)===",")dt=!0,Se++;else if(Q(je,Se)==="]"){Se++;break}}return this.node(ee,Yt,this.index,Se,Ye)},string:function(){var je=this.index,Se=b(this.source,this.index+1);return this.node(de,Se.value,je,Se.end)},number:function(){var je=this.source,Se=this.index,dt=Se;if(Q(je,dt)==="-"&&dt++,Q(je,dt)==="0")dt++;else if(v(k,Q(je,dt)))dt=this.skip(J,dt+1);else throw new R("Failed to parse number at: "+dt);if(Q(je,dt)==="."&&(dt=this.skip(J,dt+1)),Q(je,dt)==="e"||Q(je,dt)==="E"){dt++,(Q(je,dt)==="+"||Q(je,dt)==="-")&&dt++;var Yt=dt;if(dt=this.skip(J,dt),Yt===dt)throw new R("Failed to parse number's exponent value at: "+dt)}return this.node(de,Z(C(je,Se,dt)),Se,dt)},keyword:function(je){var Se=""+je,dt=this.index,Yt=dt+Se.length;if(C(this.source,dt,Yt)!==Se)throw new R("Failed to parse value at: "+dt);return this.node(de,je,dt,Yt)},skip:function(je,Se){for(var dt=this.source;Se<dt.length&&v(je,Q(dt,Se));Se++);return Se},until:function(je,Se){Se=this.skip(K,Se);for(var dt=Q(this.source,Se),Yt=0;Yt<je.length;Yt++)if(je[Yt]===dt)return Se;throw new R('Unexpected character: "'+dt+'" at: '+Se)}};var Ie=f(function(){var je="9007199254740993",Se;return y(je,function(dt,Yt,Ye){Se=Ye.source}),Se!==je}),at=U&&!f(function(){return 1/y("-0 ")!==-1/0});i({target:"JSON",stat:!0,forced:Ie},{parse:function(je,Se){return at&&!d(Se)?y(je):le(je,Se)}})},5247:(s,e,t)=>{t(1689)},4979:(s,e,t)=>{var i=t(6518),n=t(4576),o=t(7751),r=t(6980),l=t(4913).f,a=t(9297),d=t(679),c=t(3167),h=t(2603),u=t(5002),m=t(8574),p=t(3724),g=t(6395),f="DOMException",b=o("Error"),U=o(f),S=function(){d(this,Z);var E=arguments.length,K=h(E<1?void 0:arguments[0]),de=h(E<2?void 0:arguments[1],"Error"),ee=new U(K,de),le=new b(K);return le.name=f,l(ee,"stack",r(1,m(le.stack,1))),c(ee,this,S),ee},Z=S.prototype=U.prototype,R="stack"in new b(f),y="stack"in new U(1,2),N=U&&p&&Object.getOwnPropertyDescriptor(n,f),w=!!N&&!(N.writable&&N.configurable),Q=R&&!w&&!y;i({global:!0,constructor:!0,forced:g||Q},{DOMException:Q?S:U});var C=o(f),v=C.prototype;if(v.constructor!==C){g||l(v,"constructor",r(1,C));for(var Y in u)if(a(u,Y)){var J=u[Y],k=J.s;a(C,k)||l(C,k,r(6,J.c))}}},4603:(s,e,t)=>{var i=t(6840),n=t(9504),o=t(655),r=t(2812),l=URLSearchParams,a=l.prototype,d=n(a.append),c=n(a.delete),h=n(a.forEach),u=n([].push),m=new l("a=1&a=2&b=3");m.delete("a",1),m.delete("b",void 0),m+""!="a=2"&&i(a,"delete",function(p){var g=arguments.length,f=g<2?void 0:arguments[1];if(g&&f===void 0)return c(this,p);var b=[];h(this,function(Q,C){u(b,{key:C,value:Q})}),r(g,1);for(var U=o(p),S=o(f),Z=0,R=0,y=!1,N=b.length,w;Z<N;)w=b[Z++],y||w.key===U?(y=!0,c(this,w.key)):R++;for(;R<N;)w=b[R++],w.key===U&&w.value===S||d(this,w.key,w.value)},{enumerable:!0,unsafe:!0})},7566:(s,e,t)=>{var i=t(6840),n=t(9504),o=t(655),r=t(2812),l=URLSearchParams,a=l.prototype,d=n(a.getAll),c=n(a.has),h=new l("a=1");(h.has("a",2)||!h.has("a",void 0))&&i(a,"has",function(u){var m=arguments.length,p=m<2?void 0:arguments[1];if(m&&p===void 0)return c(this,u);var g=d(this,u);r(m,1);for(var f=o(p),b=0;b<g.length;)if(g[b++]===f)return!0;return!1},{enumerable:!0,unsafe:!0})},8721:(s,e,t)=>{var i=t(3724),n=t(9504),o=t(2106),r=URLSearchParams.prototype,l=n(r.forEach);i&&!("size"in r)&&o(r,"size",{get:function(){var a=0;return l(this,function(){a++}),a},configurable:!0,enumerable:!0})}},mfe={};function eo(s){var e=mfe[s];if(e!==void 0)return e.exports;var t=mfe[s]={exports:{}};return oVt[s].call(t.exports,t,t.exports,eo),t.exports}eo.d=(s,e)=>{for(var t in e)eo.o(e,t)&&!eo.o(s,t)&&Object.defineProperty(s,t,{enumerable:!0,get:e[t]})};eo.o=(s,e)=>Object.prototype.hasOwnProperty.call(s,e);var On=globalThis.pdfjsLib={};eo.d(On,{AbortException:()=>KF,AnnotationEditorLayer:()=>A1t,AnnotationEditorParamsType:()=>Xs,AnnotationEditorType:()=>ds,AnnotationEditorUIManager:()=>Fv,AnnotationLayer:()=>a1t,AnnotationMode:()=>MU,ColorPicker:()=>ewe,DOMSVGFactory:()=>rae,DrawLayer:()=>Z1t,FeatureTest:()=>pc,GlobalWorkerOptions:()=>_W,ImageKind:()=>HD,InvalidPDFException:()=>Aie,MissingPDFException:()=>Uv,OPS:()=>Im,OutputScale:()=>nae,PDFDataRangeTransport:()=>SMe,PDFDateString:()=>vQe,PDFWorker:()=>gG,PasswordResponses:()=>dVt,PermissionFlag:()=>aVt,PixelsPerInch:()=>aQ,RenderingCancelledException:()=>eae,TextLayer:()=>Gie,TouchManager:()=>YQe,UnexpectedResponseException:()=>_Y,Util:()=>dn,VerbosityLevel:()=>rO,XfaLayer:()=>VMe,build:()=>GWt,createValidAbsoluteUrl:()=>mVt,fetchData:()=>cO,getDocument:()=>wWt,getFilenameFromUrl:()=>SVt,getPdfFilenameFromUrl:()=>NVt,getXfaPageViewport:()=>RVt,isDataScheme:()=>hO,isPdfFile:()=>tae,noContextMenu:()=>pp,normalizeUnicode:()=>FVt,setLayerDimensions:()=>YN,shadow:()=>Vs,stopEvent:()=>Eh,version:()=>DWt});eo(4114);eo(6573);eo(8100);eo(7936);eo(7467);eo(4732);eo(9577);eo(5247);eo(4979);eo(4603);eo(7566);eo(8721);const Sd=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),BQe=[1,0,0,1,0,0],Fie=[.001,0,0,.001,0,0],rVt=1e7,IH=1.35,Th={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},MU={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},lVt="pdfjs_internal_editor_",ds={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},Xs={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32,HIGHLIGHT_THICKNESS:33,HIGHLIGHT_FREE:34,HIGHLIGHT_SHOW_ALL:35,DRAW_STEP:41},aVt={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},od={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},HD={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},Il={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},kw={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},rO={ERRORS:0,WARNINGS:1,INFOS:5},Im={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93},dVt={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let lO=rO.WARNINGS;function cVt(s){Number.isInteger(s)&&(lO=s)}function hVt(){return lO}function aO(s){lO>=rO.INFOS&&console.log(`Info: ${s}`)}function Hn(s){lO>=rO.WARNINGS&&console.log(`Warning: ${s}`)}function tr(s){throw new Error(s)}function yl(s,e){s||tr(e)}function uVt(s){switch(s==null?void 0:s.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function mVt(s,e=null,t=null){if(!s)return null;try{if(t&&typeof s=="string"){if(t.addDefaultProtocol&&s.startsWith("www.")){const n=s.match(/\./g);(n==null?void 0:n.length)>=2&&(s=`http://${s}`)}if(t.tryConvertEncoding)try{s=UVt(s)}catch{}}const i=e?new URL(s,e):new URL(s);if(uVt(i))return i}catch{}return null}function Vs(s,e,t,i=!1){return Object.defineProperty(s,e,{value:t,enumerable:!i,configurable:!0,writable:!1}),t}const cA=function(){function s(e,t){this.message=e,this.name=t}return s.prototype=new Error,s.constructor=s,s}();class pfe extends cA{constructor(e,t){super(e,"PasswordException"),this.code=t}}class EH extends cA{constructor(e,t){super(e,"UnknownErrorException"),this.details=t}}let Aie=class extends cA{constructor(s){super(s,"InvalidPDFException")}},Uv=class extends cA{constructor(s){super(s,"MissingPDFException")}},_Y=class extends cA{constructor(s,e){super(s,"UnexpectedResponseException"),this.status=e}};class pVt extends cA{constructor(e){super(e,"FormatError")}}let KF=class extends cA{constructor(s){super(s,"AbortException")}};function LQe(s){(typeof s!="object"||(s==null?void 0:s.length)===void 0)&&tr("Invalid argument for bytesToString");const e=s.length,t=8192;if(e<t)return String.fromCharCode.apply(null,s);const i=[];for(let n=0;n<e;n+=t){const o=Math.min(n+t,e),r=s.subarray(n,o);i.push(String.fromCharCode.apply(null,r))}return i.join("")}function dO(s){typeof s!="string"&&tr("Invalid argument for stringToBytes");const e=s.length,t=new Uint8Array(e);for(let i=0;i<e;++i)t[i]=s.charCodeAt(i)&255;return t}function gVt(s){return String.fromCharCode(s>>24&255,s>>16&255,s>>8&255,s&255)}function qle(s){const e=Object.create(null);for(const[t,i]of s)e[t]=i;return e}function fVt(){const s=new Uint8Array(4);return s[0]=1,new Uint32Array(s.buffer,0,1)[0]===1}function bVt(){try{return new Function(""),!0}catch{return!1}}class pc{static get isLittleEndian(){return Vs(this,"isLittleEndian",fVt())}static get isEvalSupported(){return Vs(this,"isEvalSupported",bVt())}static get isOffscreenCanvasSupported(){return Vs(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return Vs(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get platform(){return typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.platform)=="string"?Vs(this,"platform",{isMac:navigator.platform.includes("Mac"),isWindows:navigator.platform.includes("Win"),isFirefox:typeof(navigator==null?void 0:navigator.userAgent)=="string"&&navigator.userAgent.includes("Firefox")}):Vs(this,"platform",{isMac:!1,isWindows:!1,isFirefox:!1})}static get isCSSRoundSupported(){var e,t;return Vs(this,"isCSSRoundSupported",(t=(e=globalThis.CSS)==null?void 0:e.supports)==null?void 0:t.call(e,"width: round(1.5px, 1px)"))}}const DH=Array.from(Array(256).keys(),s=>s.toString(16).padStart(2,"0"));var vA,GH,KI,JH;let dn=(GH=class{static makeHexColor(s,e,t){return`#${DH[s]}${DH[e]}${DH[t]}`}static scaleMinMax(s,e){let t;s[0]?(s[0]<0&&(t=e[0],e[0]=e[2],e[2]=t),e[0]*=s[0],e[2]*=s[0],s[3]<0&&(t=e[1],e[1]=e[3],e[3]=t),e[1]*=s[3],e[3]*=s[3]):(t=e[0],e[0]=e[1],e[1]=t,t=e[2],e[2]=e[3],e[3]=t,s[1]<0&&(t=e[1],e[1]=e[3],e[3]=t),e[1]*=s[1],e[3]*=s[1],s[2]<0&&(t=e[0],e[0]=e[2],e[2]=t),e[0]*=s[2],e[2]*=s[2]),e[0]+=s[4],e[1]+=s[5],e[2]+=s[4],e[3]+=s[5]}static transform(s,e){return[s[0]*e[0]+s[2]*e[1],s[1]*e[0]+s[3]*e[1],s[0]*e[2]+s[2]*e[3],s[1]*e[2]+s[3]*e[3],s[0]*e[4]+s[2]*e[5]+s[4],s[1]*e[4]+s[3]*e[5]+s[5]]}static applyTransform(s,e){const t=s[0]*e[0]+s[1]*e[2]+e[4],i=s[0]*e[1]+s[1]*e[3]+e[5];return[t,i]}static applyInverseTransform(s,e){const t=e[0]*e[3]-e[1]*e[2],i=(s[0]*e[3]-s[1]*e[2]+e[2]*e[5]-e[4]*e[3])/t,n=(-s[0]*e[1]+s[1]*e[0]+e[4]*e[1]-e[5]*e[0])/t;return[i,n]}static getAxialAlignedBoundingBox(s,e){const t=this.applyTransform(s,e),i=this.applyTransform(s.slice(2,4),e),n=this.applyTransform([s[0],s[3]],e),o=this.applyTransform([s[2],s[1]],e);return[Math.min(t[0],i[0],n[0],o[0]),Math.min(t[1],i[1],n[1],o[1]),Math.max(t[0],i[0],n[0],o[0]),Math.max(t[1],i[1],n[1],o[1])]}static inverseTransform(s){const e=s[0]*s[3]-s[1]*s[2];return[s[3]/e,-s[1]/e,-s[2]/e,s[0]/e,(s[2]*s[5]-s[4]*s[3])/e,(s[4]*s[1]-s[5]*s[0])/e]}static singularValueDecompose2dScale(s){const e=[s[0],s[2],s[1],s[3]],t=s[0]*e[0]+s[1]*e[2],i=s[0]*e[1]+s[1]*e[3],n=s[2]*e[0]+s[3]*e[2],o=s[2]*e[1]+s[3]*e[3],r=(t+o)/2,l=Math.sqrt((t+o)**2-4*(t*o-n*i))/2,a=r+l||1,d=r-l||1;return[Math.sqrt(a),Math.sqrt(d)]}static normalizeRect(s){const e=s.slice(0);return s[0]>s[2]&&(e[0]=s[2],e[2]=s[0]),s[1]>s[3]&&(e[1]=s[3],e[3]=s[1]),e}static intersect(s,e){const t=Math.max(Math.min(s[0],s[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(s[0],s[2]),Math.max(e[0],e[2]));if(t>i)return null;const n=Math.max(Math.min(s[1],s[3]),Math.min(e[1],e[3])),o=Math.min(Math.max(s[1],s[3]),Math.max(e[1],e[3]));return n>o?null:[t,n,i,o]}static bezierBoundingBox(s,e,t,i,n,o,r,l,a){return a?(a[0]=Math.min(a[0],s,r),a[1]=Math.min(a[1],e,l),a[2]=Math.max(a[2],s,r),a[3]=Math.max(a[3],e,l)):a=[Math.min(s,r),Math.min(e,l),Math.max(s,r),Math.max(e,l)],_(this,vA,JH).call(this,s,t,n,r,e,i,o,l,3*(-s+3*(t-n)+r),6*(s-2*t+n),3*(t-s),a),_(this,vA,JH).call(this,s,t,n,r,e,i,o,l,3*(-e+3*(i-o)+l),6*(e-2*i+o),3*(i-e),a),a}},vA=new WeakSet,KI=function(s,e,t,i,n,o,r,l,a,d){if(a<=0||a>=1)return;const c=1-a,h=a*a,u=h*a,m=c*(c*(c*s+3*a*e)+3*h*t)+u*i,p=c*(c*(c*n+3*a*o)+3*h*r)+u*l;d[0]=Math.min(d[0],m),d[1]=Math.min(d[1],p),d[2]=Math.max(d[2],m),d[3]=Math.max(d[3],p)},JH=function(s,e,t,i,n,o,r,l,a,d,c,h){if(Math.abs(a)<1e-12){Math.abs(d)>=1e-12&&_(this,vA,KI).call(this,s,e,t,i,n,o,r,l,-c/d,h);return}const u=d**2-4*c*a;if(u<0)return;const m=Math.sqrt(u),p=2*a;_(this,vA,KI).call(this,s,e,t,i,n,o,r,l,(-d+m)/p,h),_(this,vA,KI).call(this,s,e,t,i,n,o,r,l,(-d-m)/p,h)},O(GH,vA),GH);function UVt(s){return decodeURIComponent(escape(s))}let XH=null,gfe=null;function FVt(s){return XH||(XH=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,gfe=new Map([["ſt","ſt"]])),s.replaceAll(XH,(e,t,i)=>t?t.normalize("NFKC"):gfe.get(i))}function AVt(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const s=new Uint8Array(32);return crypto.getRandomValues(s),LQe(s)}const $le="pdfjs_internal_id_";function ZVt(s){return Uint8Array.prototype.toBase64?s.toBase64():btoa(LQe(s))}eo(4628);eo(7642);eo(8004);eo(3853);eo(5876);eo(2475);eo(5024);eo(1698);eo(1454);eo(8992);eo(4743);eo(3215);eo(7550);eo(8335);const Q0="http://www.w3.org/2000/svg";var kA;let aQ=(kA=class{},Rn(kA,"CSS",96),Rn(kA,"PDF",72),Rn(kA,"PDF_TO_CSS_UNITS",kA.CSS/kA.PDF),kA);async function cO(s,e="text"){if(OT(s,document.baseURI)){const t=await fetch(s);if(!t.ok)throw new Error(t.statusText);switch(e){case"arraybuffer":return t.arrayBuffer();case"blob":return t.blob();case"json":return t.json()}return t.text()}return new Promise((t,i)=>{const n=new XMLHttpRequest;n.open("GET",s,!0),n.responseType=e,n.onreadystatechange=()=>{if(n.readyState===XMLHttpRequest.DONE){if(n.status===200||n.status===0){switch(e){case"arraybuffer":case"blob":case"json":t(n.response);return}t(n.responseText);return}i(new Error(n.statusText))}},n.send(null)})}class wk{constructor({viewBox:e,userUnit:t,scale:i,rotation:n,offsetX:o=0,offsetY:r=0,dontFlip:l=!1}){this.viewBox=e,this.userUnit=t,this.scale=i,this.rotation=n,this.offsetX=o,this.offsetY=r,i*=t;const a=(e[2]+e[0])/2,d=(e[3]+e[1])/2;let c,h,u,m;switch(n%=360,n<0&&(n+=360),n){case 180:c=-1,h=0,u=0,m=1;break;case 90:c=0,h=1,u=1,m=0;break;case 270:c=0,h=-1,u=-1,m=0;break;case 0:c=1,h=0,u=0,m=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}l&&(u=-u,m=-m);let p,g,f,b;c===0?(p=Math.abs(d-e[1])*i+o,g=Math.abs(a-e[0])*i+r,f=(e[3]-e[1])*i,b=(e[2]-e[0])*i):(p=Math.abs(a-e[0])*i+o,g=Math.abs(d-e[1])*i+r,f=(e[2]-e[0])*i,b=(e[3]-e[1])*i),this.transform=[c*i,h*i,u*i,m*i,p-c*i*a-u*i*d,g-h*i*a-m*i*d],this.width=f,this.height=b}get rawDims(){const{userUnit:e,viewBox:t}=this,i=t.map(n=>n*e);return Vs(this,"rawDims",{pageWidth:i[2]-i[0],pageHeight:i[3]-i[1],pageX:i[0],pageY:i[1]})}clone({scale:e=this.scale,rotation:t=this.rotation,offsetX:i=this.offsetX,offsetY:n=this.offsetY,dontFlip:o=!1}={}){return new wk({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:e,rotation:t,offsetX:i,offsetY:n,dontFlip:o})}convertToViewportPoint(e,t){return dn.applyTransform([e,t],this.transform)}convertToViewportRectangle(e){const t=dn.applyTransform([e[0],e[1]],this.transform),i=dn.applyTransform([e[2],e[3]],this.transform);return[t[0],t[1],i[0],i[1]]}convertToPdfPoint(e,t){return dn.applyInverseTransform([e,t],this.transform)}}let eae=class extends cA{constructor(s,e=0){super(s,"RenderingCancelledException"),this.extraDelay=e}};function hO(s){const e=s.length;let t=0;for(;t<e&&s[t].trim()==="";)t++;return s.substring(t,t+5).toLowerCase()==="data:"}function tae(s){return typeof s=="string"&&/\.pdf$/i.test(s)}function SVt(s){return[s]=s.split(/[#?]/,1),s.substring(s.lastIndexOf("/")+1)}function NVt(s,e="document.pdf"){if(typeof s!="string")return e;if(hO(s))return Hn('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),e;const t=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/,i=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,n=t.exec(s);let o=i.exec(n[1])||i.exec(n[2])||i.exec(n[3]);if(o&&(o=o[0],o.includes("%")))try{o=i.exec(decodeURIComponent(o))[0]}catch{}return o||e}class ffe{constructor(){Rn(this,"started",Object.create(null)),Rn(this,"times",[])}time(e){e in this.started&&Hn(`Timer is already running for ${e}`),this.started[e]=Date.now()}timeEnd(e){e in this.started||Hn(`Timer has not been started for ${e}`),this.times.push({name:e,start:this.started[e],end:Date.now()}),delete this.started[e]}toString(){const e=[];let t=0;for(const{name:i}of this.times)t=Math.max(i.length,t);for(const{name:i,start:n,end:o}of this.times)e.push(`${i.padEnd(t)} ${o-n}ms
- `);return e.join("")}}function OT(s,e){try{const{protocol:t}=e?new URL(s,e):new URL(s);return t==="http:"||t==="https:"}catch{return!1}}function pp(s){s.preventDefault()}function Eh(s){s.preventDefault(),s.stopPropagation()}var YH,xw;let vQe=(YH=class{static toDateObject(s){if(!s||typeof s!="string")return null;A(this,xw)||I(this,xw,new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const e=A(this,xw).exec(s);if(!e)return null;const t=parseInt(e[1],10);let i=parseInt(e[2],10);i=i>=1&&i<=12?i-1:0;let n=parseInt(e[3],10);n=n>=1&&n<=31?n:1;let o=parseInt(e[4],10);o=o>=0&&o<=23?o:0;let r=parseInt(e[5],10);r=r>=0&&r<=59?r:0;let l=parseInt(e[6],10);l=l>=0&&l<=59?l:0;const a=e[7]||"Z";let d=parseInt(e[8],10);d=d>=0&&d<=23?d:0;let c=parseInt(e[9],10)||0;return c=c>=0&&c<=59?c:0,a==="-"?(o+=d,r+=c):a==="+"&&(o-=d,r-=c),new Date(Date.UTC(t,i,n,o,r,l))}},xw=new WeakMap,O(YH,xw),YH);function RVt(s,{scale:e=1,rotation:t=0}){const{width:i,height:n}=s.attributes.style,o=[0,0,parseInt(i),parseInt(n)];return new wk({viewBox:o,userUnit:1,scale:e,rotation:t})}function iae(s){if(s.startsWith("#")){const e=parseInt(s.slice(1),16);return[(e&16711680)>>16,(e&65280)>>8,e&255]}return s.startsWith("rgb(")?s.slice(4,-1).split(",").map(e=>parseInt(e)):s.startsWith("rgba(")?s.slice(5,-1).split(",").map(e=>parseInt(e)).slice(0,3):(Hn(`Not a valid color format: "${s}"`),[0,0,0])}function VVt(s){const e=document.createElement("span");e.style.visibility="hidden",document.body.append(e);for(const t of s.keys()){e.style.color=t;const i=window.getComputedStyle(e).color;s.set(t,iae(i))}e.remove()}function Ur(s){const{a:e,b:t,c:i,d:n,e:o,f:r}=s.getTransform();return[e,t,i,n,o,r]}function Cp(s){const{a:e,b:t,c:i,d:n,e:o,f:r}=s.getTransform().invertSelf();return[e,t,i,n,o,r]}function YN(s,e,t=!1,i=!0){if(e instanceof wk){const{pageWidth:n,pageHeight:o}=e.rawDims,{style:r}=s,l=pc.isCSSRoundSupported,a=`var(--scale-factor) * ${n}px`,d=`var(--scale-factor) * ${o}px`,c=l?`round(down, ${a}, var(--scale-round-x, 1px))`:`calc(${a})`,h=l?`round(down, ${d}, var(--scale-round-y, 1px))`:`calc(${d})`;!t||e.rotation%180===0?(r.width=c,r.height=h):(r.width=h,r.height=c)}i&&s.setAttribute("data-main-rotation",e.rotation)}let nae=class{constructor(){const s=window.devicePixelRatio||1;this.sx=s,this.sy=s}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}};var fZ,kV,yg,GW,KD,C2,Zie,kQe,bg,bfe,Ufe,zY,xQe,Sie;const qD=class $D{constructor(e){O(this,bg),O(this,fZ,null),O(this,kV,null),O(this,yg),O(this,GW,null),O(this,KD,null),I(this,yg,e),A($D,C2)||I($D,C2,Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button"}))}render(){const e=I(this,fZ,document.createElement("div"));e.classList.add("editToolbar","hidden"),e.setAttribute("role","toolbar");const t=A(this,yg)._uiManager._signal;e.addEventListener("contextmenu",pp,{signal:t}),e.addEventListener("pointerdown",_($D,Zie,kQe),{signal:t});const i=I(this,GW,document.createElement("div"));i.className="buttons",e.append(i);const n=A(this,yg).toolbarPosition;if(n){const{style:o}=e,r=A(this,yg)._uiManager.direction==="ltr"?1-n[0]:n[0];o.insetInlineEnd=`${100*r}%`,o.top=`calc(${100*n[1]}% + var(--editor-toolbar-vert-offset))`}return _(this,bg,xQe).call(this),e}get div(){return A(this,fZ)}hide(){var e;A(this,fZ).classList.add("hidden"),(e=A(this,kV))==null||e.hideDropdown()}show(){var e;A(this,fZ).classList.remove("hidden"),(e=A(this,KD))==null||e.shown()}async addAltText(e){const t=await e.render();_(this,bg,zY).call(this,t),A(this,GW).prepend(t,A(this,bg,Sie)),I(this,KD,e)}addColorPicker(e){I(this,kV,e);const t=e.renderButton();_(this,bg,zY).call(this,t),A(this,GW).prepend(t,A(this,bg,Sie))}remove(){var e;A(this,fZ).remove(),(e=A(this,kV))==null||e.destroy(),I(this,kV,null)}};fZ=new WeakMap,kV=new WeakMap,yg=new WeakMap,GW=new WeakMap,KD=new WeakMap,C2=new WeakMap,Zie=new WeakSet,kQe=function(s){s.stopPropagation()},bg=new WeakSet,bfe=function(s){A(this,yg)._focusEventsAllowed=!1,Eh(s)},Ufe=function(s){A(this,yg)._focusEventsAllowed=!0,Eh(s)},zY=function(s){const e=A(this,yg)._uiManager._signal;s.addEventListener("focusin",_(this,bg,bfe).bind(this),{capture:!0,signal:e}),s.addEventListener("focusout",_(this,bg,Ufe).bind(this),{capture:!0,signal:e}),s.addEventListener("contextmenu",pp,{signal:e})},xQe=function(){const{editorType:s,_uiManager:e}=A(this,yg),t=document.createElement("button");t.className="delete",t.tabIndex=0,t.setAttribute("data-l10n-id",A(qD,C2)[s]),_(this,bg,zY).call(this,t),t.addEventListener("click",i=>{e.delete()},{signal:e._signal}),A(this,GW).append(t)},Sie=function(){const s=document.createElement("div");return s.className="divider",s},O(qD,Zie),O(qD,C2,null);let WVt=qD;var eG,nS,JW,B2,IQe,EQe,Ffe;class yVt{constructor(e){O(this,B2),O(this,eG,null),O(this,nS,null),O(this,JW),I(this,JW,e)}show(e,t,i){const[n,o]=_(this,B2,EQe).call(this,t,i),{style:r}=A(this,nS)||I(this,nS,_(this,B2,IQe).call(this));e.append(A(this,nS)),r.insetInlineEnd=`${100*n}%`,r.top=`calc(${100*o}% + var(--editor-toolbar-vert-offset))`}hide(){A(this,nS).remove()}}eG=new WeakMap,nS=new WeakMap,JW=new WeakMap,B2=new WeakSet,IQe=function(){const s=I(this,nS,document.createElement("div"));s.className="editToolbar",s.setAttribute("role","toolbar"),s.addEventListener("contextmenu",pp,{signal:A(this,JW)._signal});const e=I(this,eG,document.createElement("div"));return e.className="buttons",s.append(e),_(this,B2,Ffe).call(this),s},EQe=function(s,e){let t=0,i=0;for(const n of s){const o=n.y+n.height;if(o<t)continue;const r=n.x+(e?n.width:0);if(o>t){i=r,t=o;continue}e?r>i&&(i=r):r<i&&(i=r)}return[e?1-i:i,t]},Ffe=function(){const s=document.createElement("button");s.className="highlightButton",s.tabIndex=0,s.setAttribute("data-l10n-id","pdfjs-highlight-floating-button1");const e=document.createElement("span");s.append(e),e.className="visuallyHidden",e.setAttribute("data-l10n-id","pdfjs-highlight-floating-button-label");const t=A(this,JW)._signal;s.addEventListener("contextmenu",pp,{signal:t}),s.addEventListener("click",()=>{A(this,JW).highlightSelection("floating_button")},{signal:t}),A(this,eG).append(s)};function OY(s,e,t){for(const i of t)e.addEventListener(i,s[i].bind(s))}var Nie;class QVt{constructor(){O(this,Nie,0)}get id(){return`${lVt}${mc(this,Nie)._++}`}}Nie=new WeakMap;var L2,jY,El,jT,tG;const DQe=class{constructor(){O(this,jT),O(this,L2,AVt()),O(this,jY,0),O(this,El,null)}static get _isSVGFittingCanvas(){const e='data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" style="fill:red;"/></svg>',t=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),i=new Image;i.src=e;const n=i.decode().then(()=>(t.drawImage(i,0,0,1,1,0,0,1,3),new Uint32Array(t.getImageData(0,0,1,1).data.buffer)[0]===0));return Vs(this,"_isSVGFittingCanvas",n)}async getFromFile(e){const{lastModified:t,name:i,size:n,type:o}=e;return _(this,jT,tG).call(this,`${t}_${i}_${n}_${o}`,e)}async getFromUrl(e){return _(this,jT,tG).call(this,e,e)}async getFromBlob(e,t){const i=await t;return _(this,jT,tG).call(this,e,i)}async getFromId(e){A(this,El)||I(this,El,new Map);const t=A(this,El).get(e);if(!t)return null;if(t.bitmap)return t.refCounter+=1,t;if(t.file)return this.getFromFile(t.file);if(t.blobPromise){const{blobPromise:i}=t;return delete t.blobPromise,this.getFromBlob(t.id,i)}return this.getFromUrl(t.url)}getFromCanvas(e,t){A(this,El)||I(this,El,new Map);let i=A(this,El).get(e);if(i!=null&&i.bitmap)return i.refCounter+=1,i;const n=new OffscreenCanvas(t.width,t.height);return n.getContext("2d").drawImage(t,0,0),i={bitmap:n.transferToImageBitmap(),id:`image_${A(this,L2)}_${mc(this,jY)._++}`,refCounter:1,isSvg:!1},A(this,El).set(e,i),A(this,El).set(i.id,i),i}getSvgUrl(e){const t=A(this,El).get(e);return t!=null&&t.isSvg?t.svgUrl:null}deleteId(e){var t;A(this,El)||I(this,El,new Map);const i=A(this,El).get(e);if(!i||(i.refCounter-=1,i.refCounter!==0))return;const{bitmap:n}=i;if(!i.url&&!i.file){const o=new OffscreenCanvas(n.width,n.height);o.getContext("bitmaprenderer").transferFromImageBitmap(n),i.blobPromise=o.convertToBlob()}(t=n.close)==null||t.call(n),i.bitmap=null}isValidId(e){return e.startsWith(`image_${A(this,L2)}_`)}};L2=new WeakMap,jY=new WeakMap,El=new WeakMap,jT=new WeakSet,tG=async function(s,e){A(this,El)||I(this,El,new Map);let t=A(this,El).get(s);if(t===null)return null;if(t!=null&&t.bitmap)return t.refCounter+=1,t;try{t||(t={bitmap:null,id:`image_${A(this,L2)}_${mc(this,jY)._++}`,refCounter:0,isSvg:!1});let i;if(typeof e=="string"?(t.url=e,i=await cO(e,"blob")):e instanceof File?i=t.file=e:e instanceof Blob&&(i=e),i.type==="image/svg+xml"){const n=DQe._isSVGFittingCanvas,o=new FileReader,r=new Image,l=new Promise((a,d)=>{r.onload=()=>{t.bitmap=r,t.isSvg=!0,a()},o.onload=async()=>{const c=t.svgUrl=o.result;r.src=await n?`${c}#svgView(preserveAspectRatio(none))`:c},r.onerror=o.onerror=d});o.readAsDataURL(i),await l}else t.bitmap=await createImageBitmap(i);t.refCounter=1}catch(i){Hn(i),t=null}return A(this,El).set(s,t),t&&A(this,El).set(t.id,t),t};let MVt=DQe;var bl,bZ,iG,br;class wVt{constructor(e=128){O(this,bl,[]),O(this,bZ,!1),O(this,iG),O(this,br,-1),I(this,iG,e)}add({cmd:e,undo:t,post:i,mustExec:n,type:o=NaN,overwriteIfSameType:r=!1,keepUndo:l=!1}){if(n&&e(),A(this,bZ))return;const a={cmd:e,undo:t,post:i,type:o};if(A(this,br)===-1){A(this,bl).length>0&&(A(this,bl).length=0),I(this,br,0),A(this,bl).push(a);return}if(r&&A(this,bl)[A(this,br)].type===o){l&&(a.undo=A(this,bl)[A(this,br)].undo),A(this,bl)[A(this,br)]=a;return}const d=A(this,br)+1;d===A(this,iG)?A(this,bl).splice(0,1):(I(this,br,d),d<A(this,bl).length&&A(this,bl).splice(d)),A(this,bl).push(a)}undo(){if(A(this,br)===-1)return;I(this,bZ,!0);const{undo:e,post:t}=A(this,bl)[A(this,br)];e(),t==null||t(),I(this,bZ,!1),I(this,br,A(this,br)-1)}redo(){if(A(this,br)<A(this,bl).length-1){I(this,br,A(this,br)+1),I(this,bZ,!0);const{cmd:e,post:t}=A(this,bl)[A(this,br)];e(),t==null||t(),I(this,bZ,!1)}}hasSomethingToUndo(){return A(this,br)!==-1}hasSomethingToRedo(){return A(this,br)<A(this,bl).length-1}cleanType(e){if(A(this,br)!==-1){for(let t=A(this,br);t>=0;t--)if(A(this,bl)[t].type!==e){A(this,bl).splice(t+1,A(this,br)-t),I(this,br,t);return}A(this,bl).length=0,I(this,br,-1)}}destroy(){I(this,bl,null)}}bl=new WeakMap,bZ=new WeakMap,iG=new WeakMap,br=new WeakMap;var Rie,GQe;class Tk{constructor(e){O(this,Rie),this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:t}=pc.platform;for(const[i,n,o={}]of e)for(const r of i){const l=r.startsWith("mac+");t&&l?(this.callbacks.set(r.slice(4),{callback:n,options:o}),this.allKeys.add(r.split("+").at(-1))):!t&&!l&&(this.callbacks.set(r,{callback:n,options:o}),this.allKeys.add(r.split("+").at(-1)))}}exec(e,t){if(!this.allKeys.has(t.key))return;const i=this.callbacks.get(_(this,Rie,GQe).call(this,t));if(!i)return;const{callback:n,options:{bubbles:o=!1,args:r=[],checker:l=null}}=i;l&&!l(e,t)||(n.bind(e,...r,t)(),o||Eh(t))}}Rie=new WeakSet,GQe=function(s){s.altKey&&this.buffer.push("alt"),s.ctrlKey&&this.buffer.push("ctrl"),s.metaKey&&this.buffer.push("meta"),s.shiftKey&&this.buffer.push("shift"),this.buffer.push(s.key);const e=this.buffer.join("+");return this.buffer.length=0,e};const JQe=class XQe{get _colors(){const e=new Map([["CanvasText",null],["Canvas",null]]);return VVt(e),Vs(this,"_colors",e)}convert(e){const t=iae(e);if(!window.matchMedia("(forced-colors: active)").matches)return t;for(const[i,n]of this._colors)if(n.every((o,r)=>o===t[r]))return XQe._colorsMapping.get(i);return t}getHexCode(e){const t=this._colors.get(e);return t?dn.makeHexColor(...t):e}};Rn(JQe,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let TVt=JQe;var Iw,hu,sa,nd,Ew,Mb,nV,Um,xA,sV,Dw,oV,F0,Bp,rV,qI,$I,Gw,eE,A0,IA,Jw,EA,Lp,_H,DA,tE,GA,lV,iE,nE,Za,Eo,wb,aV,Xw,sE,JA,Z0,Tb,oE,Fm,dV,mn,rE,zH,Afe,Zfe,lE,Sfe,Nfe,Rfe,OH,Vfe,jH,PH,Wfe,Yd,S0,yfe,Qfe,HH,Mfe,Yw,KH;let Fv=(dV=class{constructor(s,e,t,i,n,o,r,l,a,d,c,h,u){O(this,mn),O(this,Iw,new AbortController),O(this,hu,null),O(this,sa,new Map),O(this,nd,new Map),O(this,Ew,null),O(this,Mb,null),O(this,nV,null),O(this,Um,new wVt),O(this,xA,null),O(this,sV,null),O(this,Dw,0),O(this,oV,new Set),O(this,F0,null),O(this,Bp,null),O(this,rV,new Set),Rn(this,"_editorUndoBar",null),O(this,qI,!1),O(this,$I,!1),O(this,Gw,!1),O(this,eE,null),O(this,A0,null),O(this,IA,null),O(this,Jw,null),O(this,EA,!1),O(this,Lp,null),O(this,_H,new QVt),O(this,DA,!1),O(this,tE,!1),O(this,GA,null),O(this,lV,null),O(this,iE,null),O(this,nE,null),O(this,Za,ds.NONE),O(this,Eo,new Set),O(this,wb,null),O(this,aV,null),O(this,Xw,null),O(this,sE,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1}),O(this,JA,[0,0]),O(this,Z0,null),O(this,Tb,null),O(this,oE,null),O(this,Fm,null);const m=this._signal=A(this,Iw).signal;I(this,Tb,s),I(this,oE,e),I(this,Ew,t),this._eventBus=i,i._on("editingaction",this.onEditingAction.bind(this),{signal:m}),i._on("pagechanging",this.onPageChanging.bind(this),{signal:m}),i._on("scalechanging",this.onScaleChanging.bind(this),{signal:m}),i._on("rotationchanging",this.onRotationChanging.bind(this),{signal:m}),i._on("setpreference",this.onSetPreference.bind(this),{signal:m}),i._on("switchannotationeditorparams",p=>this.updateParams(p.type,p.value),{signal:m}),_(this,mn,Sfe).call(this),_(this,mn,Wfe).call(this),_(this,mn,OH).call(this),I(this,Mb,n.annotationStorage),I(this,eE,n.filterFactory),I(this,aV,o),I(this,Jw,r||null),I(this,qI,l),I(this,$I,a),I(this,Gw,d),I(this,nE,c||null),this.viewParameters={realScale:aQ.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=h||null,this._supportsPinchToZoom=u!==!1}static get _keyboardManager(){const s=dV.prototype,e=o=>A(o,Tb).contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&o.hasSomethingToControl(),t=(o,{target:r})=>{if(r instanceof HTMLInputElement){const{type:l}=r;return l!=="text"&&l!=="number"}return!0},i=this.TRANSLATE_SMALL,n=this.TRANSLATE_BIG;return Vs(this,"_keyboardManager",new Tk([[["ctrl+a","mac+meta+a"],s.selectAll,{checker:t}],[["ctrl+z","mac+meta+z"],s.undo,{checker:t}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],s.redo,{checker:t}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],s.delete,{checker:t}],[["Enter","mac+Enter"],s.addNewEditorFromKeyboard,{checker:(o,{target:r})=>!(r instanceof HTMLButtonElement)&&A(o,Tb).contains(r)&&!o.isEnterHandled}],[[" ","mac+ "],s.addNewEditorFromKeyboard,{checker:(o,{target:r})=>!(r instanceof HTMLButtonElement)&&A(o,Tb).contains(document.activeElement)}],[["Escape","mac+Escape"],s.unselectAll],[["ArrowLeft","mac+ArrowLeft"],s.translateSelectedEditors,{args:[-i,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],s.translateSelectedEditors,{args:[-n,0],checker:e}],[["ArrowRight","mac+ArrowRight"],s.translateSelectedEditors,{args:[i,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],s.translateSelectedEditors,{args:[n,0],checker:e}],[["ArrowUp","mac+ArrowUp"],s.translateSelectedEditors,{args:[0,-i],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],s.translateSelectedEditors,{args:[0,-n],checker:e}],[["ArrowDown","mac+ArrowDown"],s.translateSelectedEditors,{args:[0,i],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],s.translateSelectedEditors,{args:[0,n],checker:e}]]))}destroy(){var s,e,t,i,n;(s=A(this,Fm))==null||s.resolve(),I(this,Fm,null),(e=A(this,Iw))==null||e.abort(),I(this,Iw,null),this._signal=null;for(const o of A(this,nd).values())o.destroy();A(this,nd).clear(),A(this,sa).clear(),A(this,rV).clear(),I(this,hu,null),A(this,Eo).clear(),A(this,Um).destroy(),(t=A(this,Ew))==null||t.destroy(),(i=A(this,Lp))==null||i.hide(),I(this,Lp,null),A(this,A0)&&(clearTimeout(A(this,A0)),I(this,A0,null)),A(this,Z0)&&(clearTimeout(A(this,Z0)),I(this,Z0,null)),(n=this._editorUndoBar)==null||n.destroy()}combinedSignal(s){return AbortSignal.any([this._signal,s.signal])}get mlManager(){return A(this,nE)}get useNewAltTextFlow(){return A(this,$I)}get useNewAltTextWhenAddingImage(){return A(this,Gw)}get hcmFilter(){return Vs(this,"hcmFilter",A(this,aV)?A(this,eE).addHCMFilter(A(this,aV).foreground,A(this,aV).background):"none")}get direction(){return Vs(this,"direction",getComputedStyle(A(this,Tb)).direction)}get highlightColors(){return Vs(this,"highlightColors",A(this,Jw)?new Map(A(this,Jw).split(",").map(s=>s.split("=").map(e=>e.trim()))):null)}get highlightColorNames(){return Vs(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,s=>s.reverse())):null)}setCurrentDrawingSession(s){s?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),I(this,sV,s)}setMainHighlightColorPicker(s){I(this,iE,s)}editAltText(s,e=!1){var t;(t=A(this,Ew))==null||t.editAltText(this,s,e)}switchToMode(s,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:s})}setPreference(s,e){this._eventBus.dispatch("setpreference",{source:this,name:s,value:e})}onSetPreference({name:s,value:e}){switch(s){case"enableNewAltTextWhenAddingImage":I(this,Gw,e);break}}onPageChanging({pageNumber:s}){I(this,Dw,s-1)}focusMainContainer(){A(this,Tb).focus()}findParent(s,e){for(const t of A(this,nd).values()){const{x:i,y:n,width:o,height:r}=t.div.getBoundingClientRect();if(s>=i&&s<=i+o&&e>=n&&e<=n+r)return t}return null}disableUserSelect(s=!1){A(this,oE).classList.toggle("noUserSelect",s)}addShouldRescale(s){A(this,rV).add(s)}removeShouldRescale(s){A(this,rV).delete(s)}onScaleChanging({scale:s}){var e;this.commitOrRemove(),this.viewParameters.realScale=s*aQ.PDF_TO_CSS_UNITS;for(const t of A(this,rV))t.onScaleChanging();(e=A(this,sV))==null||e.onScaleChanging()}onRotationChanging({pagesRotation:s}){this.commitOrRemove(),this.viewParameters.rotation=s}highlightSelection(s=""){const e=document.getSelection();if(!e||e.isCollapsed)return;const{anchorNode:t,anchorOffset:i,focusNode:n,focusOffset:o}=e,r=e.toString(),l=_(this,mn,rE).call(this,e).closest(".textLayer"),a=this.getSelectionBoxes(l);if(!a)return;e.empty();const d=_(this,mn,zH).call(this,l),c=A(this,Za)===ds.NONE,h=()=>{d==null||d.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:s,boxes:a,anchorNode:t,anchorOffset:i,focusNode:n,focusOffset:o,text:r}),c&&this.showAllEditors("highlight",!0,!0)};if(c){this.switchToMode(ds.HIGHLIGHT,h);return}h()}addToAnnotationStorage(s){!s.isEmpty()&&A(this,Mb)&&!A(this,Mb).has(s.id)&&A(this,Mb).setValue(s.id,s)}blur(){if(this.isShiftKeyDown=!1,A(this,EA)&&(I(this,EA,!1),_(this,mn,lE).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:s}=document;for(const e of A(this,Eo))if(e.div.contains(s)){I(this,lV,[e,s]),e._focusEventsAllowed=!1;break}}focus(){if(!A(this,lV))return;const[s,e]=A(this,lV);I(this,lV,null),e.addEventListener("focusin",()=>{s._focusEventsAllowed=!0},{once:!0,signal:this._signal}),e.focus()}addEditListeners(){_(this,mn,OH).call(this),_(this,mn,jH).call(this)}removeEditListeners(){_(this,mn,Vfe).call(this),_(this,mn,PH).call(this)}dragOver(s){for(const{type:e}of s.dataTransfer.items)for(const t of A(this,Bp))if(t.isHandlingMimeForPasting(e)){s.dataTransfer.dropEffect="copy",s.preventDefault();return}}drop(s){for(const e of s.dataTransfer.items)for(const t of A(this,Bp))if(t.isHandlingMimeForPasting(e.type)){t.paste(e,this.currentLayer),s.preventDefault();return}}copy(s){var e;if(s.preventDefault(),(e=A(this,hu))==null||e.commitOrRemove(),!this.hasSelection)return;const t=[];for(const i of A(this,Eo)){const n=i.serialize(!0);n&&t.push(n)}t.length!==0&&s.clipboardData.setData("application/pdfjs",JSON.stringify(t))}cut(s){this.copy(s),this.delete()}async paste(s){s.preventDefault();const{clipboardData:e}=s;for(const n of e.items)for(const o of A(this,Bp))if(o.isHandlingMimeForPasting(n.type)){o.paste(n,this.currentLayer);return}let t=e.getData("application/pdfjs");if(!t)return;try{t=JSON.parse(t)}catch(n){Hn(`paste: "${n.message}".`);return}if(!Array.isArray(t))return;this.unselectAll();const i=this.currentLayer;try{const n=[];for(const l of t){const a=await i.deserialize(l);if(!a)return;n.push(a)}const o=()=>{for(const l of n)_(this,mn,HH).call(this,l);_(this,mn,KH).call(this,n)},r=()=>{for(const l of n)l.remove()};this.addCommands({cmd:o,undo:r,mustExec:!0})}catch(n){Hn(`paste: "${n.message}".`)}}keydown(s){!this.isShiftKeyDown&&s.key==="Shift"&&(this.isShiftKeyDown=!0),A(this,Za)!==ds.NONE&&!this.isEditorHandlingKeyboard&&dV._keyboardManager.exec(this,s)}keyup(s){this.isShiftKeyDown&&s.key==="Shift"&&(this.isShiftKeyDown=!1,A(this,EA)&&(I(this,EA,!1),_(this,mn,lE).call(this,"main_toolbar")))}onEditingAction({name:s}){switch(s){case"undo":case"redo":case"delete":case"selectAll":this[s]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}setEditingState(s){s?(_(this,mn,Nfe).call(this),_(this,mn,jH).call(this),_(this,mn,Yd).call(this,{isEditing:A(this,Za)!==ds.NONE,isEmpty:_(this,mn,Yw).call(this),hasSomethingToUndo:A(this,Um).hasSomethingToUndo(),hasSomethingToRedo:A(this,Um).hasSomethingToRedo(),hasSelectedEditor:!1})):(_(this,mn,Rfe).call(this),_(this,mn,PH).call(this),_(this,mn,Yd).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(s){if(!A(this,Bp)){I(this,Bp,s);for(const e of A(this,Bp))_(this,mn,S0).call(this,e.defaultPropertiesToUpdate)}}getId(){return A(this,_H).id}get currentLayer(){return A(this,nd).get(A(this,Dw))}getLayer(s){return A(this,nd).get(s)}get currentPageIndex(){return A(this,Dw)}addLayer(s){A(this,nd).set(s.pageIndex,s),A(this,DA)?s.enable():s.disable()}removeLayer(s){A(this,nd).delete(s.pageIndex)}async updateMode(s,e=null,t=!1){var i;if(A(this,Za)!==s&&!(A(this,Fm)&&(await A(this,Fm).promise,!A(this,Fm)))){if(I(this,Fm,Promise.withResolvers()),I(this,Za,s),s===ds.NONE){this.setEditingState(!1),_(this,mn,Qfe).call(this),(i=this._editorUndoBar)==null||i.hide(),A(this,Fm).resolve();return}this.setEditingState(!0),await _(this,mn,yfe).call(this),this.unselectAll();for(const n of A(this,nd).values())n.updateMode(s);if(!e){t&&this.addNewEditorFromKeyboard(),A(this,Fm).resolve();return}for(const n of A(this,sa).values())n.annotationElementId===e?(this.setSelected(n),n.enterInEditMode()):n.unselect();A(this,Fm).resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(s){s!==A(this,Za)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:s})}updateParams(s,e){var t;if(A(this,Bp)){switch(s){case Xs.CREATE:this.currentLayer.addNewEditor();return;case Xs.HIGHLIGHT_DEFAULT_COLOR:(t=A(this,iE))==null||t.updateColor(e);break;case Xs.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(A(this,Xw)||I(this,Xw,new Map)).set(s,e),this.showAllEditors("highlight",e);break}for(const i of A(this,Eo))i.updateParams(s,e);for(const i of A(this,Bp))i.updateDefaultParams(s,e)}}showAllEditors(s,e,t=!1){var i;for(const n of A(this,sa).values())n.editorType===s&&n.show(e);(((i=A(this,Xw))==null?void 0:i.get(Xs.HIGHLIGHT_SHOW_ALL))??!0)!==e&&_(this,mn,S0).call(this,[[Xs.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(s=!1){if(A(this,tE)!==s){I(this,tE,s);for(const e of A(this,nd).values())s?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",s)}}getEditors(s){const e=[];for(const t of A(this,sa).values())t.pageIndex===s&&e.push(t);return e}getEditor(s){return A(this,sa).get(s)}addEditor(s){A(this,sa).set(s.id,s)}removeEditor(s){var e;s.div.contains(document.activeElement)&&(A(this,A0)&&clearTimeout(A(this,A0)),I(this,A0,setTimeout(()=>{this.focusMainContainer(),I(this,A0,null)},0))),A(this,sa).delete(s.id),this.unselect(s),(!s.annotationElementId||!A(this,oV).has(s.annotationElementId))&&((e=A(this,Mb))==null||e.remove(s.id))}addDeletedAnnotationElement(s){A(this,oV).add(s.annotationElementId),this.addChangedExistingAnnotation(s),s.deleted=!0}isDeletedAnnotationElement(s){return A(this,oV).has(s)}removeDeletedAnnotationElement(s){A(this,oV).delete(s.annotationElementId),this.removeChangedExistingAnnotation(s),s.deleted=!1}setActiveEditor(s){A(this,hu)!==s&&(I(this,hu,s),s&&_(this,mn,S0).call(this,s.propertiesToUpdate))}updateUI(s){A(this,mn,Mfe)===s&&_(this,mn,S0).call(this,s.propertiesToUpdate)}updateUIForDefaultProperties(s){_(this,mn,S0).call(this,s.defaultPropertiesToUpdate)}toggleSelected(s){if(A(this,Eo).has(s)){A(this,Eo).delete(s),s.unselect(),_(this,mn,Yd).call(this,{hasSelectedEditor:this.hasSelection});return}A(this,Eo).add(s),s.select(),_(this,mn,S0).call(this,s.propertiesToUpdate),_(this,mn,Yd).call(this,{hasSelectedEditor:!0})}setSelected(s){var e;(e=A(this,sV))==null||e.commitOrRemove();for(const t of A(this,Eo))t!==s&&t.unselect();A(this,Eo).clear(),A(this,Eo).add(s),s.select(),_(this,mn,S0).call(this,s.propertiesToUpdate),_(this,mn,Yd).call(this,{hasSelectedEditor:!0})}isSelected(s){return A(this,Eo).has(s)}get firstSelectedEditor(){return A(this,Eo).values().next().value}unselect(s){s.unselect(),A(this,Eo).delete(s),_(this,mn,Yd).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return A(this,Eo).size!==0}get isEnterHandled(){return A(this,Eo).size===1&&this.firstSelectedEditor.isEnterHandled}undo(){var s;A(this,Um).undo(),_(this,mn,Yd).call(this,{hasSomethingToUndo:A(this,Um).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:_(this,mn,Yw).call(this)}),(s=this._editorUndoBar)==null||s.hide()}redo(){A(this,Um).redo(),_(this,mn,Yd).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:A(this,Um).hasSomethingToRedo(),isEmpty:_(this,mn,Yw).call(this)})}addCommands(s){A(this,Um).add(s),_(this,mn,Yd).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:_(this,mn,Yw).call(this)})}cleanUndoStack(s){A(this,Um).cleanType(s)}delete(){var s;this.commitOrRemove();const e=(s=this.currentLayer)==null?void 0:s.endDrawingSession(!0);if(!this.hasSelection&&!e)return;const t=e?[e]:[...A(this,Eo)],i=()=>{var o;(o=this._editorUndoBar)==null||o.show(n,t.length===1?t[0].editorType:t.length);for(const r of t)r.remove()},n=()=>{for(const o of t)_(this,mn,HH).call(this,o)};this.addCommands({cmd:i,undo:n,mustExec:!0})}commitOrRemove(){var s;(s=A(this,hu))==null||s.commitOrRemove()}hasSomethingToControl(){return A(this,hu)||this.hasSelection}selectAll(){for(const s of A(this,Eo))s.commit();_(this,mn,KH).call(this,A(this,sa).values())}unselectAll(){var s;if(!(A(this,hu)&&(A(this,hu).commitOrRemove(),A(this,Za)!==ds.NONE))&&!((s=A(this,sV))!=null&&s.commitOrRemove())&&this.hasSelection){for(const e of A(this,Eo))e.unselect();A(this,Eo).clear(),_(this,mn,Yd).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(s,e,t=!1){if(t||this.commitOrRemove(),!this.hasSelection)return;A(this,JA)[0]+=s,A(this,JA)[1]+=e;const[i,n]=A(this,JA),o=[...A(this,Eo)],r=1e3;A(this,Z0)&&clearTimeout(A(this,Z0)),I(this,Z0,setTimeout(()=>{I(this,Z0,null),A(this,JA)[0]=A(this,JA)[1]=0,this.addCommands({cmd:()=>{for(const l of o)A(this,sa).has(l.id)&&l.translateInPage(i,n)},undo:()=>{for(const l of o)A(this,sa).has(l.id)&&l.translateInPage(-i,-n)},mustExec:!1})},r));for(const l of o)l.translateInPage(s,e)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),I(this,F0,new Map);for(const s of A(this,Eo))A(this,F0).set(s,{savedX:s.x,savedY:s.y,savedPageIndex:s.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!A(this,F0))return!1;this.disableUserSelect(!1);const s=A(this,F0);I(this,F0,null);let e=!1;for(const[{x:i,y:n,pageIndex:o},r]of s)r.newX=i,r.newY=n,r.newPageIndex=o,e||(e=i!==r.savedX||n!==r.savedY||o!==r.savedPageIndex);if(!e)return!1;const t=(i,n,o,r)=>{if(A(this,sa).has(i.id)){const l=A(this,nd).get(r);l?i._setParentAndPosition(l,n,o):(i.pageIndex=r,i.x=n,i.y=o)}};return this.addCommands({cmd:()=>{for(const[i,{newX:n,newY:o,newPageIndex:r}]of s)t(i,n,o,r)},undo:()=>{for(const[i,{savedX:n,savedY:o,savedPageIndex:r}]of s)t(i,n,o,r)},mustExec:!0}),!0}dragSelectedEditors(s,e){if(A(this,F0))for(const t of A(this,F0).keys())t.drag(s,e)}rebuild(s){if(s.parent===null){const e=this.getLayer(s.pageIndex);e?(e.changeParent(s),e.addOrRebuild(s)):(this.addEditor(s),this.addToAnnotationStorage(s),s.rebuild())}else s.parent.addOrRebuild(s)}get isEditorHandlingKeyboard(){var s;return((s=this.getActive())==null?void 0:s.shouldGetKeyboardEvents())||A(this,Eo).size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(s){return A(this,hu)===s}getActive(){return A(this,hu)}getMode(){return A(this,Za)}get imageManager(){return Vs(this,"imageManager",new MVt)}getSelectionBoxes(s){if(!s)return null;const e=document.getSelection();for(let a=0,d=e.rangeCount;a<d;a++)if(!s.contains(e.getRangeAt(a).commonAncestorContainer))return null;const{x:t,y:i,width:n,height:o}=s.getBoundingClientRect();let r;switch(s.getAttribute("data-main-rotation")){case"90":r=(a,d,c,h)=>({x:(d-i)/o,y:1-(a+c-t)/n,width:h/o,height:c/n});break;case"180":r=(a,d,c,h)=>({x:1-(a+c-t)/n,y:1-(d+h-i)/o,width:c/n,height:h/o});break;case"270":r=(a,d,c,h)=>({x:1-(d+h-i)/o,y:(a-t)/n,width:h/o,height:c/n});break;default:r=(a,d,c,h)=>({x:(a-t)/n,y:(d-i)/o,width:c/n,height:h/o});break}const l=[];for(let a=0,d=e.rangeCount;a<d;a++){const c=e.getRangeAt(a);if(!c.collapsed)for(const{x:h,y:u,width:m,height:p}of c.getClientRects())m===0||p===0||l.push(r(h,u,m,p))}return l.length===0?null:l}addChangedExistingAnnotation({annotationElementId:s,id:e}){(A(this,nV)||I(this,nV,new Map)).set(s,e)}removeChangedExistingAnnotation({annotationElementId:s}){var e;(e=A(this,nV))==null||e.delete(s)}renderAnnotationElement(s){var e;const t=(e=A(this,nV))==null?void 0:e.get(s.data.id);if(!t)return;const i=A(this,Mb).getRawValue(t);i&&(A(this,Za)===ds.NONE&&!i.hasBeenModified||i.renderAnnotationElement(s))}},Iw=new WeakMap,hu=new WeakMap,sa=new WeakMap,nd=new WeakMap,Ew=new WeakMap,Mb=new WeakMap,nV=new WeakMap,Um=new WeakMap,xA=new WeakMap,sV=new WeakMap,Dw=new WeakMap,oV=new WeakMap,F0=new WeakMap,Bp=new WeakMap,rV=new WeakMap,qI=new WeakMap,$I=new WeakMap,Gw=new WeakMap,eE=new WeakMap,A0=new WeakMap,IA=new WeakMap,Jw=new WeakMap,EA=new WeakMap,Lp=new WeakMap,_H=new WeakMap,DA=new WeakMap,tE=new WeakMap,GA=new WeakMap,lV=new WeakMap,iE=new WeakMap,nE=new WeakMap,Za=new WeakMap,Eo=new WeakMap,wb=new WeakMap,aV=new WeakMap,Xw=new WeakMap,sE=new WeakMap,JA=new WeakMap,Z0=new WeakMap,Tb=new WeakMap,oE=new WeakMap,Fm=new WeakMap,mn=new WeakSet,rE=function({anchorNode:s}){return s.nodeType===Node.TEXT_NODE?s.parentElement:s},zH=function(s){const{currentLayer:e}=this;if(e.hasTextLayer(s))return e;for(const t of A(this,nd).values())if(t.hasTextLayer(s))return t;return null},Afe=function(){const s=document.getSelection();if(!s||s.isCollapsed)return;const e=_(this,mn,rE).call(this,s).closest(".textLayer"),t=this.getSelectionBoxes(e);t&&(A(this,Lp)||I(this,Lp,new yVt(this)),A(this,Lp).show(e,t,this.direction==="ltr"))},Zfe=function(){var s,e,t;const i=document.getSelection();if(!i||i.isCollapsed){A(this,wb)&&((s=A(this,Lp))==null||s.hide(),I(this,wb,null),_(this,mn,Yd).call(this,{hasSelectedText:!1}));return}const{anchorNode:n}=i;if(n===A(this,wb))return;const o=_(this,mn,rE).call(this,i).closest(".textLayer");if(!o){A(this,wb)&&((e=A(this,Lp))==null||e.hide(),I(this,wb,null),_(this,mn,Yd).call(this,{hasSelectedText:!1}));return}if((t=A(this,Lp))==null||t.hide(),I(this,wb,n),_(this,mn,Yd).call(this,{hasSelectedText:!0}),!(A(this,Za)!==ds.HIGHLIGHT&&A(this,Za)!==ds.NONE)&&(A(this,Za)===ds.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),I(this,EA,this.isShiftKeyDown),!this.isShiftKeyDown)){const r=A(this,Za)===ds.HIGHLIGHT?_(this,mn,zH).call(this,o):null;r==null||r.toggleDrawing();const l=new AbortController,a=this.combinedSignal(l),d=c=>{c.type==="pointerup"&&c.button!==0||(l.abort(),r==null||r.toggleDrawing(!0),c.type==="pointerup"&&_(this,mn,lE).call(this,"main_toolbar"))};window.addEventListener("pointerup",d,{signal:a}),window.addEventListener("blur",d,{signal:a})}},lE=function(s=""){A(this,Za)===ds.HIGHLIGHT?this.highlightSelection(s):A(this,qI)&&_(this,mn,Afe).call(this)},Sfe=function(){document.addEventListener("selectionchange",_(this,mn,Zfe).bind(this),{signal:this._signal})},Nfe=function(){if(A(this,IA))return;I(this,IA,new AbortController);const s=this.combinedSignal(A(this,IA));window.addEventListener("focus",this.focus.bind(this),{signal:s}),window.addEventListener("blur",this.blur.bind(this),{signal:s})},Rfe=function(){var s;(s=A(this,IA))==null||s.abort(),I(this,IA,null)},OH=function(){if(A(this,GA))return;I(this,GA,new AbortController);const s=this.combinedSignal(A(this,GA));window.addEventListener("keydown",this.keydown.bind(this),{signal:s}),window.addEventListener("keyup",this.keyup.bind(this),{signal:s})},Vfe=function(){var s;(s=A(this,GA))==null||s.abort(),I(this,GA,null)},jH=function(){if(A(this,xA))return;I(this,xA,new AbortController);const s=this.combinedSignal(A(this,xA));document.addEventListener("copy",this.copy.bind(this),{signal:s}),document.addEventListener("cut",this.cut.bind(this),{signal:s}),document.addEventListener("paste",this.paste.bind(this),{signal:s})},PH=function(){var s;(s=A(this,xA))==null||s.abort(),I(this,xA,null)},Wfe=function(){const s=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:s}),document.addEventListener("drop",this.drop.bind(this),{signal:s})},Yd=function(s){Object.entries(s).some(([e,t])=>A(this,sE)[e]!==t)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(A(this,sE),s)}),A(this,Za)===ds.HIGHLIGHT&&s.hasSelectedEditor===!1&&_(this,mn,S0).call(this,[[Xs.HIGHLIGHT_FREE,!0]]))},S0=function(s){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:s})},yfe=async function(){if(!A(this,DA)){I(this,DA,!0);const s=[];for(const e of A(this,nd).values())s.push(e.enable());await Promise.all(s);for(const e of A(this,sa).values())e.enable()}},Qfe=function(){if(this.unselectAll(),A(this,DA)){I(this,DA,!1);for(const s of A(this,nd).values())s.disable();for(const s of A(this,sa).values())s.disable()}},HH=function(s){const e=A(this,nd).get(s.pageIndex);e?e.addOrRebuild(s):(this.addEditor(s),this.addToAnnotationStorage(s))},Mfe=function(){let s=null;for(s of A(this,Eo));return s},Yw=function(){if(A(this,sa).size===0)return!0;if(A(this,sa).size===1)for(const s of A(this,sa).values())return s.isEmpty();return!1},KH=function(s){for(const e of A(this,Eo))e.unselect();A(this,Eo).clear();for(const e of s)e.isEmpty()||(A(this,Eo).add(e),e.select());_(this,mn,Yd).call(this,{hasSelectedEditor:this.hasSelection})},Rn(dV,"TRANSLATE_SMALL",1),Rn(dV,"TRANSLATE_BIG",10),dV);var wa,of,jp,v2,Y0,Qu,PT,M0,Bh,Yb,xV,_0,sF,rf,k2,nG;const HT=class _b{constructor(e){O(this,rf),O(this,wa,null),O(this,of,!1),O(this,jp,null),O(this,v2,null),O(this,Y0,null),O(this,Qu,null),O(this,PT,!1),O(this,M0,null),O(this,Bh,null),O(this,Yb,null),O(this,xV,null),O(this,_0,!1),I(this,Bh,e),I(this,_0,e._uiManager.useNewAltTextFlow),A(_b,sF)||I(_b,sF,Object.freeze({added:"pdfjs-editor-new-alt-text-added-button","added-label":"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button","missing-label":"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button","review-label":"pdfjs-editor-new-alt-text-to-review-button-label"}))}static initialize(e){_b._l10n??(_b._l10n=e)}async render(){const e=I(this,jp,document.createElement("button"));e.className="altText",e.tabIndex="0";const t=I(this,v2,document.createElement("span"));e.append(t),A(this,_0)?(e.classList.add("new"),e.setAttribute("data-l10n-id",A(_b,sF).missing),t.setAttribute("data-l10n-id",A(_b,sF)["missing-label"])):(e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button"),t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button-label"));const i=A(this,Bh)._uiManager._signal;e.addEventListener("contextmenu",pp,{signal:i}),e.addEventListener("pointerdown",o=>o.stopPropagation(),{signal:i});const n=o=>{o.preventDefault(),A(this,Bh)._uiManager.editAltText(A(this,Bh)),A(this,_0)&&A(this,Bh)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:A(this,rf,k2)}})};return e.addEventListener("click",n,{capture:!0,signal:i}),e.addEventListener("keydown",o=>{o.target===e&&o.key==="Enter"&&(I(this,PT,!0),n(o))},{signal:i}),await _(this,rf,nG).call(this),e}finish(){A(this,jp)&&(A(this,jp).focus({focusVisible:A(this,PT)}),I(this,PT,!1))}isEmpty(){return A(this,_0)?A(this,wa)===null:!A(this,wa)&&!A(this,of)}hasData(){return A(this,_0)?A(this,wa)!==null||!!A(this,Yb):this.isEmpty()}get guessedText(){return A(this,Yb)}async setGuessedText(e){A(this,wa)===null&&(I(this,Yb,e),I(this,xV,await _b._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:e})),_(this,rf,nG).call(this))}toggleAltTextBadge(e=!1){var t;if(!A(this,_0)||A(this,wa)){(t=A(this,M0))==null||t.remove(),I(this,M0,null);return}if(!A(this,M0)){const i=I(this,M0,document.createElement("div"));i.className="noAltTextBadge",A(this,Bh).div.append(i)}A(this,M0).classList.toggle("hidden",!e)}serialize(e){let t=A(this,wa);return!e&&A(this,Yb)===t&&(t=A(this,xV)),{altText:t,decorative:A(this,of),guessedText:A(this,Yb),textWithDisclaimer:A(this,xV)}}get data(){return{altText:A(this,wa),decorative:A(this,of)}}set data({altText:e,decorative:t,guessedText:i,textWithDisclaimer:n,cancel:o=!1}){i&&(I(this,Yb,i),I(this,xV,n)),!(A(this,wa)===e&&A(this,of)===t)&&(o||(I(this,wa,e),I(this,of,t)),_(this,rf,nG).call(this))}toggle(e=!1){A(this,jp)&&(!e&&A(this,Qu)&&(clearTimeout(A(this,Qu)),I(this,Qu,null)),A(this,jp).disabled=!e)}shown(){A(this,Bh)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:A(this,rf,k2)}})}destroy(){var e,t;(e=A(this,jp))==null||e.remove(),I(this,jp,null),I(this,v2,null),I(this,Y0,null),(t=A(this,M0))==null||t.remove(),I(this,M0,null)}};wa=new WeakMap,of=new WeakMap,jp=new WeakMap,v2=new WeakMap,Y0=new WeakMap,Qu=new WeakMap,PT=new WeakMap,M0=new WeakMap,Bh=new WeakMap,Yb=new WeakMap,xV=new WeakMap,_0=new WeakMap,sF=new WeakMap,rf=new WeakSet,k2=function(){return A(this,wa)&&"added"||A(this,wa)===null&&this.guessedText&&"review"||"missing"},nG=async function(){var s,e,t;const i=A(this,jp);if(!i)return;if(A(this,_0)){if(i.classList.toggle("done",!!A(this,wa)),i.setAttribute("data-l10n-id",A(HT,sF)[A(this,rf,k2)]),(s=A(this,v2))==null||s.setAttribute("data-l10n-id",A(HT,sF)[`${A(this,rf,k2)}-label`]),!A(this,wa)){(e=A(this,Y0))==null||e.remove();return}}else{if(!A(this,wa)&&!A(this,of)){i.classList.remove("done"),(t=A(this,Y0))==null||t.remove();return}i.classList.add("done"),i.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let n=A(this,Y0);if(!n){I(this,Y0,n=document.createElement("span")),n.className="tooltip",n.setAttribute("role","tooltip"),n.id=`alt-text-tooltip-${A(this,Bh).id}`;const r=100,l=A(this,Bh)._uiManager._signal;l.addEventListener("abort",()=>{clearTimeout(A(this,Qu)),I(this,Qu,null)},{once:!0}),i.addEventListener("mouseenter",()=>{I(this,Qu,setTimeout(()=>{I(this,Qu,null),A(this,Y0).classList.add("show"),A(this,Bh)._reportTelemetry({action:"alt_text_tooltip"})},r))},{signal:l}),i.addEventListener("mouseleave",()=>{var a;A(this,Qu)&&(clearTimeout(A(this,Qu)),I(this,Qu,null)),(a=A(this,Y0))==null||a.classList.remove("show")},{signal:l})}A(this,of)?n.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(n.removeAttribute("data-l10n-id"),n.textContent=A(this,wa)),n.parentNode||i.append(n);const o=A(this,Bh).getImageForAltText();o==null||o.setAttribute("aria-describedby",n.id)},O(HT,sF,null),Rn(HT,"_l10n",null);let wfe=HT;var aE,cV,dE,cE,hE,uE,mE,_w,Cb,hV,XA,uV,Tfe,Cfe,qH,$H;let YQe=($H=class{constructor({container:s,isPinchingDisabled:e=null,isPinchingStopped:t=null,onPinchStart:i=null,onPinching:n=null,onPinchEnd:o=null,signal:r}){O(this,uV),O(this,aE),O(this,cV,!1),O(this,dE,null),O(this,cE),O(this,hE),O(this,uE),O(this,mE),O(this,_w),O(this,Cb,null),O(this,hV),O(this,XA,null),I(this,aE,s),I(this,dE,t),I(this,cE,e),I(this,hE,i),I(this,uE,n),I(this,mE,o),I(this,hV,new AbortController),I(this,_w,AbortSignal.any([r,A(this,hV).signal])),s.addEventListener("touchstart",_(this,uV,Tfe).bind(this),{passive:!1,signal:A(this,_w)})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return Vs(this,"MIN_TOUCH_DISTANCE_TO_PINCH",35/(window.devicePixelRatio||1))}destroy(){var s;(s=A(this,hV))==null||s.abort(),I(this,hV,null)}},aE=new WeakMap,cV=new WeakMap,dE=new WeakMap,cE=new WeakMap,hE=new WeakMap,uE=new WeakMap,mE=new WeakMap,_w=new WeakMap,Cb=new WeakMap,hV=new WeakMap,XA=new WeakMap,uV=new WeakSet,Tfe=function(s){var e,t,i;if((e=A(this,cE))!=null&&e.call(this)||s.touches.length<2)return;if(!A(this,XA)){I(this,XA,new AbortController);const r=AbortSignal.any([A(this,_w),A(this,XA).signal]),l=A(this,aE),a={signal:r,passive:!1};l.addEventListener("touchmove",_(this,uV,Cfe).bind(this),a),l.addEventListener("touchend",_(this,uV,qH).bind(this),a),l.addEventListener("touchcancel",_(this,uV,qH).bind(this),a),(t=A(this,hE))==null||t.call(this)}if(Eh(s),s.touches.length!==2||(i=A(this,dE))!=null&&i.call(this)){I(this,Cb,null);return}let[n,o]=s.touches;n.identifier>o.identifier&&([n,o]=[o,n]),I(this,Cb,{touch0X:n.screenX,touch0Y:n.screenY,touch1X:o.screenX,touch1Y:o.screenY})},Cfe=function(s){var e;if(!A(this,Cb)||s.touches.length!==2)return;let[t,i]=s.touches;t.identifier>i.identifier&&([t,i]=[i,t]);const{screenX:n,screenY:o}=t,{screenX:r,screenY:l}=i,a=A(this,Cb),{touch0X:d,touch0Y:c,touch1X:h,touch1Y:u}=a,m=h-d,p=u-c,g=r-n,f=l-o,b=Math.hypot(g,f)||1,U=Math.hypot(m,p)||1;if(!A(this,cV)&&Math.abs(U-b)<=$H.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(a.touch0X=n,a.touch0Y=o,a.touch1X=r,a.touch1Y=l,s.preventDefault(),!A(this,cV)){I(this,cV,!0);return}const S=[(n+r)/2,(o+l)/2];(e=A(this,uE))==null||e.call(this,S,U,b)},qH=function(s){var e;A(this,XA).abort(),I(this,XA,null),(e=A(this,mE))==null||e.call(this),A(this,Cb)&&(s.preventDefault(),I(this,Cb,null),I(this,cV,!1))},$H);var IV,og,Fr,KT,UZ,sG,EV,md,DV,oU,VS,PY,XW,hd,oG,GV,oF,w0,qT,$T,gu,sS,rG,Vie,oo,Wie,HY,yie,pE,_Qe,Bfe,e4,gE,Qie,zQe,OQe,jQe,Mie,PQe,wie,HQe,KQe,qQe,Tie,x2;const $r=class Sa{constructor(e){O(this,oo),O(this,IV,null),O(this,og,null),O(this,Fr,null),O(this,KT,!1),O(this,UZ,null),O(this,sG,""),O(this,EV,!1),O(this,md,null),O(this,DV,null),O(this,oU,null),O(this,VS,null),O(this,PY,""),O(this,XW,!1),O(this,hd,null),O(this,oG,!1),O(this,GV,!1),O(this,oF,!1),O(this,w0,null),O(this,qT,0),O(this,$T,0),O(this,gu,null),O(this,sS,null),Rn(this,"_editToolbar",null),Rn(this,"_initialOptions",Object.create(null)),Rn(this,"_initialData",null),Rn(this,"_isVisible",!0),Rn(this,"_uiManager",null),Rn(this,"_focusEventsAllowed",!0),O(this,rG,!1),O(this,Vie,Sa._zIndex++),this.parent=e.parent,this.id=e.id,this.width=this.height=null,this.pageIndex=e.parent.pageIndex,this.name=e.name,this.div=null,this._uiManager=e.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=e.isCentered,this._structTreeParentId=null;const{rotation:t,rawDims:{pageWidth:i,pageHeight:n,pageX:o,pageY:r}}=this.parent.viewport;this.rotation=t,this.pageRotation=(360+t-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[i,n],this.pageTranslation=[o,r];const[l,a]=this.parentDimensions;this.x=e.x/l,this.y=e.y/a,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const e=Sa.prototype._resizeWithKeyboard,t=Fv.TRANSLATE_SMALL,i=Fv.TRANSLATE_BIG;return Vs(this,"_resizerKeyboardManager",new Tk([[["ArrowLeft","mac+ArrowLeft"],e,{args:[-t,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e,{args:[-i,0]}],[["ArrowRight","mac+ArrowRight"],e,{args:[t,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e,{args:[i,0]}],[["ArrowUp","mac+ArrowUp"],e,{args:[0,-t]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e,{args:[0,-i]}],[["ArrowDown","mac+ArrowDown"],e,{args:[0,t]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e,{args:[0,i]}],[["Escape","mac+Escape"],Sa.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get isDrawer(){return!1}static get _defaultLineColor(){return Vs(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(e){const t=new CVt({id:e.parent.getNextId(),parent:e.parent,uiManager:e._uiManager});t.annotationElementId=e.annotationElementId,t.deleted=!0,t._uiManager.addToAnnotationStorage(t)}static initialize(e,t){if(Sa._l10n??(Sa._l10n=e),Sa._l10nResizer||(Sa._l10nResizer=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"})),Sa._borderLineWidth!==-1)return;const i=getComputedStyle(document.documentElement);Sa._borderLineWidth=parseFloat(i.getPropertyValue("--outline-width"))||0}static updateDefaultParams(e,t){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(e){return!1}static paste(e,t){tr("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return A(this,rG)}set _isDraggable(e){var t;I(this,rG,e),(t=this.div)==null||t.classList.toggle("draggable",e)}get isEnterHandled(){return!0}center(){const[e,t]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*t/(e*2),this.y+=this.width*e/(t*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*t/(e*2),this.y-=this.width*e/(t*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(e){this._uiManager.addCommands(e)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=A(this,Vie)}setParent(e){e!==null?(this.pageIndex=e.pageIndex,this.pageDimensions=e.pageDimensions):_(this,oo,x2).call(this),this.parent=e}focusin(e){this._focusEventsAllowed&&(A(this,XW)?I(this,XW,!1):this.parent.setSelected(this))}focusout(e){var t;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const i=e.relatedTarget;i!=null&&i.closest(`#${this.id}`)||(e.preventDefault(),(t=this.parent)!=null&&t.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(e,t,i,n){const[o,r]=this.parentDimensions;[i,n]=this.screenToPageTranslation(i,n),this.x=(e+i)/o,this.y=(t+n)/r,this.fixAndSetPosition()}translate(e,t){_(this,oo,Wie).call(this,this.parentDimensions,e,t)}translateInPage(e,t){A(this,hd)||I(this,hd,[this.x,this.y,this.width,this.height]),_(this,oo,Wie).call(this,this.pageDimensions,e,t),this.div.scrollIntoView({block:"nearest"})}drag(e,t){A(this,hd)||I(this,hd,[this.x,this.y,this.width,this.height]);const{div:i,parentDimensions:[n,o]}=this;if(this.x+=e/n,this.y+=t/o,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:h,y:u}=this.div.getBoundingClientRect();this.parent.findNewParent(this,h,u)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:r,y:l}=this;const[a,d]=this.getBaseTranslation();r+=a,l+=d;const{style:c}=i;c.left=`${(100*r).toFixed(2)}%`,c.top=`${(100*l).toFixed(2)}%`,this._onTranslating(r,l),i.scrollIntoView({block:"nearest"})}_onTranslating(e,t){}_onTranslated(e,t){}get _hasBeenMoved(){return!!A(this,hd)&&(A(this,hd)[0]!==this.x||A(this,hd)[1]!==this.y)}get _hasBeenResized(){return!!A(this,hd)&&(A(this,hd)[2]!==this.width||A(this,hd)[3]!==this.height)}getBaseTranslation(){const[e,t]=this.parentDimensions,{_borderLineWidth:i}=Sa,n=i/e,o=i/t;switch(this.rotation){case 90:return[-n,o];case 180:return[n,o];case 270:return[n,-o];default:return[-n,-o]}}get _mustFixPosition(){return!0}fixAndSetPosition(e=this.rotation){const{div:{style:t},pageDimensions:[i,n]}=this;let{x:o,y:r,width:l,height:a}=this;if(l*=i,a*=n,o*=i,r*=n,this._mustFixPosition)switch(e){case 0:o=Math.max(0,Math.min(i-l,o)),r=Math.max(0,Math.min(n-a,r));break;case 90:o=Math.max(0,Math.min(i-a,o)),r=Math.min(n,Math.max(l,r));break;case 180:o=Math.min(i,Math.max(l,o)),r=Math.min(n,Math.max(a,r));break;case 270:o=Math.min(i,Math.max(a,o)),r=Math.max(0,Math.min(n-l,r));break}this.x=o/=i,this.y=r/=n;const[d,c]=this.getBaseTranslation();o+=d,r+=c,t.left=`${(100*o).toFixed(2)}%`,t.top=`${(100*r).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(e,t){var i;return _(i=Sa,HY,yie).call(i,e,t,this.parentRotation)}pageTranslationToScreen(e,t){var i;return _(i=Sa,HY,yie).call(i,e,t,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:e,pageDimensions:[t,i]}=this;return[t*e,i*e]}setDims(e,t){const[i,n]=this.parentDimensions,{style:o}=this.div;o.width=`${(100*e/i).toFixed(2)}%`,A(this,EV)||(o.height=`${(100*t/n).toFixed(2)}%`)}fixDims(){const{style:e}=this.div,{height:t,width:i}=e,n=i.endsWith("%"),o=!A(this,EV)&&t.endsWith("%");if(n&&o)return;const[r,l]=this.parentDimensions;n||(e.width=`${(100*parseFloat(i)/r).toFixed(2)}%`),!A(this,EV)&&!o&&(e.height=`${(100*parseFloat(t)/l).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}_onResized(){}static _round(e){return Math.round(e*1e4)/1e4}_onResizing(){}altTextFinish(){var e;(e=A(this,Fr))==null||e.finish()}async addEditToolbar(){return this._editToolbar||A(this,GV)?this._editToolbar:(this._editToolbar=new WVt(this),this.div.append(this._editToolbar.render()),A(this,Fr)&&await this._editToolbar.addAltText(A(this,Fr)),this._editToolbar)}removeEditToolbar(){var e;this._editToolbar&&(this._editToolbar.remove(),this._editToolbar=null,(e=A(this,Fr))==null||e.destroy())}addContainer(e){var t;const i=(t=this._editToolbar)==null?void 0:t.div;i?i.before(e):this.div.append(e)}getClientDimensions(){return this.div.getBoundingClientRect()}async addAltTextButton(){A(this,Fr)||(wfe.initialize(Sa._l10n),I(this,Fr,new wfe(this)),A(this,IV)&&(A(this,Fr).data=A(this,IV),I(this,IV,null)),await this.addEditToolbar())}get altTextData(){var e;return(e=A(this,Fr))==null?void 0:e.data}set altTextData(e){A(this,Fr)&&(A(this,Fr).data=e)}get guessedAltText(){var e;return(e=A(this,Fr))==null?void 0:e.guessedText}async setGuessedAltText(e){var t;await((t=A(this,Fr))==null?void 0:t.setGuessedText(e))}serializeAltText(e){var t;return(t=A(this,Fr))==null?void 0:t.serialize(e)}hasAltText(){return!!A(this,Fr)&&!A(this,Fr).isEmpty()}hasAltTextData(){var e;return((e=A(this,Fr))==null?void 0:e.hasData())??!1}render(){var e;this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.tabIndex=A(this,KT)?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground(),_(this,oo,wie).call(this);const[t,i]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*i/t).toFixed(2)}%`,this.div.style.maxHeight=`${(100*t/i).toFixed(2)}%`);const[n,o]=this.getInitialTranslation();return this.translate(n,o),OY(this,this.div,["pointerdown"]),this.isResizable&&this._uiManager._supportsPinchToZoom&&(A(this,sS)||I(this,sS,new YQe({container:this.div,isPinchingDisabled:()=>!this.isSelected,onPinchStart:_(this,oo,zQe).bind(this),onPinching:_(this,oo,OQe).bind(this),onPinchEnd:_(this,oo,jQe).bind(this),signal:this._uiManager._signal}))),(e=this._uiManager._editorUndoBar)==null||e.hide(),this.div}pointerdown(e){const{isMac:t}=pc.platform;if(e.button!==0||e.ctrlKey&&t){e.preventDefault();return}if(I(this,XW,!0),this._isDraggable){_(this,oo,PQe).call(this,e);return}_(this,oo,Mie).call(this,e)}get isSelected(){return this._uiManager.isSelected(this)}_onStartDragging(){}_onStopDragging(){}moveInDOM(){A(this,w0)&&clearTimeout(A(this,w0)),I(this,w0,setTimeout(()=>{var e;I(this,w0,null),(e=this.parent)==null||e.moveEditorInDOM(this)},0))}_setParentAndPosition(e,t,i){e.changeParent(this),this.x=t,this.y=i,this.fixAndSetPosition(),this._onTranslated()}getRect(e,t,i=this.rotation){const n=this.parentScale,[o,r]=this.pageDimensions,[l,a]=this.pageTranslation,d=e/n,c=t/n,h=this.x*o,u=this.y*r,m=this.width*o,p=this.height*r;switch(i){case 0:return[h+d+l,r-u-c-p+a,h+d+m+l,r-u-c+a];case 90:return[h+c+l,r-u+d+a,h+c+p+l,r-u+d+m+a];case 180:return[h-d-m+l,r-u+c+a,h-d+l,r-u+c+p+a];case 270:return[h-c-p+l,r-u-d-m+a,h-c+l,r-u-d+a];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(e,t){const[i,n,o,r]=e,l=o-i,a=r-n;switch(this.rotation){case 0:return[i,t-r,l,a];case 90:return[i,t-n,a,l];case 180:return[o,t-n,l,a];case 270:return[o,t-r,a,l];default:throw new Error("Invalid rotation")}}onceAdded(e){}isEmpty(){return!1}enableEditMode(){I(this,GV,!0)}disableEditMode(){I(this,GV,!1)}isInEditMode(){return A(this,GV)}shouldGetKeyboardEvents(){return A(this,oF)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:e,left:t,bottom:i,right:n}=this.getClientDimensions(),{innerHeight:o,innerWidth:r}=window;return t<r&&n>0&&e<o&&i>0}rebuild(){_(this,oo,wie).call(this)}rotate(e){}resize(){}serializeDeleted(){var e;return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:((e=this._initialData)==null?void 0:e.popupRef)||""}}serialize(e=!1,t=null){tr("An editor must be serializable")}static async deserialize(e,t,i){const n=new this.prototype.constructor({parent:t,id:t.getNextId(),uiManager:i});n.rotation=e.rotation,I(n,IV,e.accessibilityData);const[o,r]=n.pageDimensions,[l,a,d,c]=n.getRectInCurrentCoords(e.rect,r);return n.x=l/o,n.y=a/r,n.width=d/o,n.height=c/r,n}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){var e,t;if((e=A(this,VS))==null||e.abort(),I(this,VS,null),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),A(this,w0)&&(clearTimeout(A(this,w0)),I(this,w0,null)),_(this,oo,x2).call(this),this.removeEditToolbar(),A(this,gu)){for(const i of A(this,gu).values())clearTimeout(i);I(this,gu,null)}this.parent=null,(t=A(this,sS))==null||t.destroy(),I(this,sS,null)}get isResizable(){return!1}makeResizable(){this.isResizable&&(_(this,oo,_Qe).call(this),A(this,md).classList.remove("hidden"),OY(this,this.div,["keydown"]))}get toolbarPosition(){return null}keydown(e){if(!this.isResizable||e.target!==this.div||e.key!=="Enter")return;this._uiManager.setSelected(this),I(this,oU,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const t=A(this,md).children;if(!A(this,og)){I(this,og,Array.from(t));const r=_(this,oo,HQe).bind(this),l=_(this,oo,KQe).bind(this),a=this._uiManager._signal;for(const d of A(this,og)){const c=d.getAttribute("data-resizer-name");d.setAttribute("role","spinbutton"),d.addEventListener("keydown",r,{signal:a}),d.addEventListener("blur",l,{signal:a}),d.addEventListener("focus",_(this,oo,qQe).bind(this,c),{signal:a}),d.setAttribute("data-l10n-id",Sa._l10nResizer[c])}}const i=A(this,og)[0];let n=0;for(const r of t){if(r===i)break;n++}const o=(360-this.rotation+this.parentRotation)%360/90*(A(this,og).length/4);if(o!==n){if(o<n)for(let l=0;l<n-o;l++)A(this,md).append(A(this,md).firstChild);else if(o>n)for(let l=0;l<o-n;l++)A(this,md).firstChild.before(A(this,md).lastChild);let r=0;for(const l of t){const a=A(this,og)[r++].getAttribute("data-resizer-name");l.setAttribute("data-l10n-id",Sa._l10nResizer[a])}}_(this,oo,Tie).call(this,0),I(this,oF,!0),A(this,md).firstChild.focus({focusVisible:!0}),e.preventDefault(),e.stopImmediatePropagation()}_resizeWithKeyboard(e,t){A(this,oF)&&_(this,oo,Qie).call(this,A(this,PY),{deltaX:e,deltaY:t,fromKeyboard:!0})}_stopResizingWithKeyboard(){_(this,oo,x2).call(this),this.div.focus()}select(){var e,t,i;if(this.makeResizable(),(e=this.div)==null||e.classList.add("selectedEditor"),!this._editToolbar){this.addEditToolbar().then(()=>{var n,o;(n=this.div)!=null&&n.classList.contains("selectedEditor")&&((o=this._editToolbar)==null||o.show())});return}(t=this._editToolbar)==null||t.show(),(i=A(this,Fr))==null||i.toggleAltTextBadge(!1)}unselect(){var e,t,i,n,o;(e=A(this,md))==null||e.classList.add("hidden"),(t=this.div)==null||t.classList.remove("selectedEditor"),(i=this.div)!=null&&i.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),(n=this._editToolbar)==null||n.hide(),(o=A(this,Fr))==null||o.toggleAltTextBadge(!0)}updateParams(e,t){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return A(this,oG)}set isEditing(e){I(this,oG,e),this.parent&&(e?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(e,t){I(this,EV,!0);const i=e/t,{style:n}=this.div;n.aspectRatio=i,n.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(e,t=!1){if(t){A(this,gu)||I(this,gu,new Map);const{action:i}=e;let n=A(this,gu).get(i);n&&clearTimeout(n),n=setTimeout(()=>{this._reportTelemetry(e),A(this,gu).delete(i),A(this,gu).size===0&&I(this,gu,null)},Sa._telemetryTimeout),A(this,gu).set(i,n);return}e.type||(e.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:e}})}show(e=this._isVisible){this.div.classList.toggle("hidden",!e),this._isVisible=e}enable(){this.div&&(this.div.tabIndex=0),I(this,KT,!1)}disable(){this.div&&(this.div.tabIndex=-1),I(this,KT,!0)}renderAnnotationElement(e){let t=e.container.querySelector(".annotationContent");if(!t)t=document.createElement("div"),t.classList.add("annotationContent",this.editorType),e.container.prepend(t);else if(t.nodeName==="CANVAS"){const i=t;t=document.createElement("div"),t.classList.add("annotationContent",this.editorType),i.before(t)}return t}resetAnnotationElement(e){const{firstChild:t}=e.container;(t==null?void 0:t.nodeName)==="DIV"&&t.classList.contains("annotationContent")&&t.remove()}};IV=new WeakMap,og=new WeakMap,Fr=new WeakMap,KT=new WeakMap,UZ=new WeakMap,sG=new WeakMap,EV=new WeakMap,md=new WeakMap,DV=new WeakMap,oU=new WeakMap,VS=new WeakMap,PY=new WeakMap,XW=new WeakMap,hd=new WeakMap,oG=new WeakMap,GV=new WeakMap,oF=new WeakMap,w0=new WeakMap,qT=new WeakMap,$T=new WeakMap,gu=new WeakMap,sS=new WeakMap,rG=new WeakMap,Vie=new WeakMap,oo=new WeakSet,Wie=function([s,e],t,i){[t,i]=this.screenToPageTranslation(t,i),this.x+=t/s,this.y+=i/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()},HY=new WeakSet,yie=function(s,e,t){switch(t){case 90:return[e,-s];case 180:return[-s,-e];case 270:return[-e,s];default:return[s,e]}},pE=function(s){switch(s){case 90:{const[e,t]=this.pageDimensions;return[0,-e/t,t/e,0]}case 180:return[-1,0,0,-1];case 270:{const[e,t]=this.pageDimensions;return[0,e/t,-t/e,0]}default:return[1,0,0,1]}},_Qe=function(){if(A(this,md))return;I(this,md,document.createElement("div")),A(this,md).classList.add("resizers");const s=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const t of s){const i=document.createElement("div");A(this,md).append(i),i.classList.add("resizer",t),i.setAttribute("data-resizer-name",t),i.addEventListener("pointerdown",_(this,oo,Bfe).bind(this,t),{signal:e}),i.addEventListener("contextmenu",pp,{signal:e}),i.tabIndex=-1}this.div.prepend(A(this,md))},Bfe=function(s,e){var t;e.preventDefault();const{isMac:i}=pc.platform;if(e.button!==0||e.ctrlKey&&i)return;(t=A(this,Fr))==null||t.toggle(!1);const n=this._isDraggable;this._isDraggable=!1,I(this,DV,[e.screenX,e.screenY]);const o=new AbortController,r=this._uiManager.combinedSignal(o);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",_(this,oo,Qie).bind(this,s),{passive:!0,capture:!0,signal:r}),window.addEventListener("touchmove",Eh,{passive:!1,signal:r}),window.addEventListener("contextmenu",pp,{signal:r}),I(this,oU,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const l=this.parent.div.style.cursor,a=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const d=()=>{var c;o.abort(),this.parent.togglePointerEvents(!0),(c=A(this,Fr))==null||c.toggle(!0),this._isDraggable=n,this.parent.div.style.cursor=l,this.div.style.cursor=a,_(this,oo,gE).call(this)};window.addEventListener("pointerup",d,{signal:r}),window.addEventListener("blur",d,{signal:r})},e4=function(s,e,t,i){this.width=t,this.height=i,this.x=s,this.y=e;const[n,o]=this.parentDimensions;this.setDims(n*t,o*i),this.fixAndSetPosition(),this._onResized()},gE=function(){if(!A(this,oU))return;const{savedX:s,savedY:e,savedWidth:t,savedHeight:i}=A(this,oU);I(this,oU,null);const n=this.x,o=this.y,r=this.width,l=this.height;n===s&&o===e&&r===t&&l===i||this.addCommands({cmd:_(this,oo,e4).bind(this,n,o,r,l),undo:_(this,oo,e4).bind(this,s,e,t,i),mustExec:!0})},Qie=function(s,e){const[t,i]=this.parentDimensions,n=this.x,o=this.y,r=this.width,l=this.height,a=$r.MIN_SIZE/t,d=$r.MIN_SIZE/i,c=_(this,oo,pE).call(this,this.rotation),h=(E,K)=>[c[0]*E+c[2]*K,c[1]*E+c[3]*K],u=_(this,oo,pE).call(this,360-this.rotation),m=(E,K)=>[u[0]*E+u[2]*K,u[1]*E+u[3]*K];let p,g,f=!1,b=!1;switch(s){case"topLeft":f=!0,p=(E,K)=>[0,0],g=(E,K)=>[E,K];break;case"topMiddle":p=(E,K)=>[E/2,0],g=(E,K)=>[E/2,K];break;case"topRight":f=!0,p=(E,K)=>[E,0],g=(E,K)=>[0,K];break;case"middleRight":b=!0,p=(E,K)=>[E,K/2],g=(E,K)=>[0,K/2];break;case"bottomRight":f=!0,p=(E,K)=>[E,K],g=(E,K)=>[0,0];break;case"bottomMiddle":p=(E,K)=>[E/2,K],g=(E,K)=>[E/2,0];break;case"bottomLeft":f=!0,p=(E,K)=>[0,K],g=(E,K)=>[E,0];break;case"middleLeft":b=!0,p=(E,K)=>[0,K/2],g=(E,K)=>[E,K/2];break}const U=p(r,l),S=g(r,l);let Z=h(...S);const R=$r._round(n+Z[0]),y=$r._round(o+Z[1]);let N=1,w=1,Q,C;if(e.fromKeyboard)({deltaX:Q,deltaY:C}=e);else{const{screenX:E,screenY:K}=e,[de,ee]=A(this,DV);[Q,C]=this.screenToPageTranslation(E-de,K-ee),A(this,DV)[0]=E,A(this,DV)[1]=K}if([Q,C]=m(Q/t,C/i),f){const E=Math.hypot(r,l);N=w=Math.max(Math.min(Math.hypot(S[0]-U[0]-Q,S[1]-U[1]-C)/E,1/r,1/l),a/r,d/l)}else b?N=Math.max(a,Math.min(1,Math.abs(S[0]-U[0]-Q)))/r:w=Math.max(d,Math.min(1,Math.abs(S[1]-U[1]-C)))/l;const v=$r._round(r*N),Y=$r._round(l*w);Z=h(...g(v,Y));const J=R-Z[0],k=y-Z[1];A(this,hd)||I(this,hd,[this.x,this.y,this.width,this.height]),this.width=v,this.height=Y,this.x=J,this.y=k,this.setDims(t*v,i*Y),this.fixAndSetPosition(),this._onResizing()},zQe=function(){var s;I(this,oU,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height}),(s=A(this,Fr))==null||s.toggle(!1),this.parent.togglePointerEvents(!1)},OQe=function(s,e,t){let i=.7*(t/e)+1-.7;if(i===1)return;const n=_(this,oo,pE).call(this,this.rotation),o=(Z,R)=>[n[0]*Z+n[2]*R,n[1]*Z+n[3]*R],[r,l]=this.parentDimensions,a=this.x,d=this.y,c=this.width,h=this.height,u=$r.MIN_SIZE/r,m=$r.MIN_SIZE/l;i=Math.max(Math.min(i,1/c,1/h),u/c,m/h);const p=$r._round(c*i),g=$r._round(h*i);if(p===c&&g===h)return;A(this,hd)||I(this,hd,[a,d,c,h]);const f=o(c/2,h/2),b=$r._round(a+f[0]),U=$r._round(d+f[1]),S=o(p/2,g/2);this.x=b-S[0],this.y=U-S[1],this.width=p,this.height=g,this.setDims(r*p,l*g),this.fixAndSetPosition(),this._onResizing()},jQe=function(){var s;(s=A(this,Fr))==null||s.toggle(!0),this.parent.togglePointerEvents(!0),_(this,oo,gE).call(this)},Mie=function(s){const{isMac:e}=pc.platform;s.ctrlKey&&!e||s.shiftKey||s.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)},PQe=function(s){const{isSelected:e}=this;this._uiManager.setUpDragSession();let t=!1;const i=new AbortController,n=this._uiManager.combinedSignal(i),o={capture:!0,passive:!1,signal:n},r=a=>{i.abort(),I(this,UZ,null),I(this,XW,!1),this._uiManager.endDragSession()||_(this,oo,Mie).call(this,a),t&&this._onStopDragging()};e&&(I(this,qT,s.clientX),I(this,$T,s.clientY),I(this,UZ,s.pointerId),I(this,sG,s.pointerType),window.addEventListener("pointermove",a=>{t||(t=!0,this._onStartDragging());const{clientX:d,clientY:c,pointerId:h}=a;if(h!==A(this,UZ)){Eh(a);return}const[u,m]=this.screenToPageTranslation(d-A(this,qT),c-A(this,$T));I(this,qT,d),I(this,$T,c),this._uiManager.dragSelectedEditors(u,m)},o),window.addEventListener("touchmove",Eh,o),window.addEventListener("pointerdown",a=>{a.pointerType===A(this,sG)&&(A(this,sS)||a.isPrimary)&&r(a),Eh(a)},o));const l=a=>{if(!A(this,UZ)||A(this,UZ)===a.pointerId){r(a);return}Eh(a)};window.addEventListener("pointerup",l,{signal:n}),window.addEventListener("blur",l,{signal:n})},wie=function(){if(A(this,VS)||!this.div)return;I(this,VS,new AbortController);const s=this._uiManager.combinedSignal(A(this,VS));this.div.addEventListener("focusin",this.focusin.bind(this),{signal:s}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:s})},HQe=function(s){$r._resizerKeyboardManager.exec(this,s)},KQe=function(s){var e;A(this,oF)&&((e=s.relatedTarget)==null?void 0:e.parentNode)!==A(this,md)&&_(this,oo,x2).call(this)},qQe=function(s){I(this,PY,A(this,oF)?s:"")},Tie=function(s){if(A(this,og))for(const e of A(this,og))e.tabIndex=s},x2=function(){I(this,oF,!1),_(this,oo,Tie).call(this,-1),_(this,oo,gE).call(this)},O($r,HY),Rn($r,"_l10n",null),Rn($r,"_l10nResizer",null),Rn($r,"_borderLineWidth",-1),Rn($r,"_colorManager",new TVt),Rn($r,"_zIndex",1),Rn($r,"_telemetryTimeout",1e3);let rl=$r;class CVt extends rl{constructor(e){super(e),this.annotationElementId=e.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const Lfe=3285377520,uu=4294901760,vp=65535;class $Qe{constructor(e){this.h1=e?e&4294967295:Lfe,this.h2=e?e&4294967295:Lfe}update(e){let t,i;if(typeof e=="string"){t=new Uint8Array(e.length*2),i=0;for(let g=0,f=e.length;g<f;g++){const b=e.charCodeAt(g);b<=255?t[i++]=b:(t[i++]=b>>>8,t[i++]=b&255)}}else if(ArrayBuffer.isView(e))t=e.slice(),i=t.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const n=i>>2,o=i-n*4,r=new Uint32Array(t.buffer,0,n);let l=0,a=0,d=this.h1,c=this.h2;const h=3432918353,u=461845907,m=h&vp,p=u&vp;for(let g=0;g<n;g++)g&1?(l=r[g],l=l*h&uu|l*m&vp,l=l<<15|l>>>17,l=l*u&uu|l*p&vp,d^=l,d=d<<13|d>>>19,d=d*5+3864292196):(a=r[g],a=a*h&uu|a*m&vp,a=a<<15|a>>>17,a=a*u&uu|a*p&vp,c^=a,c=c<<13|c>>>19,c=c*5+3864292196);switch(l=0,o){case 3:l^=t[n*4+2]<<16;case 2:l^=t[n*4+1]<<8;case 1:l^=t[n*4],l=l*h&uu|l*m&vp,l=l<<15|l>>>17,l=l*u&uu|l*p&vp,n&1?d^=l:c^=l}this.h1=d,this.h2=c}hexdigest(){let e=this.h1,t=this.h2;return e^=t>>>1,e=e*3981806797&uu|e*36045&vp,t=t*4283543511&uu|((t<<16|e>>>16)*2950163797&uu)>>>16,e^=t>>>1,e=e*444984403&uu|e*60499&vp,t=t*3301882366&uu|((t<<16|e>>>16)*3120437893&uu)>>>16,e^=t>>>1,(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}const Cie=Object.freeze({map:null,hash:"",transfer:void 0});var $1,JV,Na,Bie,eMe;class sae{constructor(){O(this,Bie),O(this,$1,!1),O(this,JV,null),O(this,Na,new Map),this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(e,t){const i=A(this,Na).get(e);return i===void 0?t:Object.assign(t,i)}getRawValue(e){return A(this,Na).get(e)}remove(e){if(A(this,Na).delete(e),A(this,Na).size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function"){for(const t of A(this,Na).values())if(t instanceof rl)return;this.onAnnotationEditor(null)}}setValue(e,t){const i=A(this,Na).get(e);let n=!1;if(i!==void 0)for(const[o,r]of Object.entries(t))i[o]!==r&&(n=!0,i[o]=r);else n=!0,A(this,Na).set(e,t);n&&_(this,Bie,eMe).call(this),t instanceof rl&&typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(t.constructor._type)}has(e){return A(this,Na).has(e)}getAll(){return A(this,Na).size>0?qle(A(this,Na)):null}setAll(e){for(const[t,i]of Object.entries(e))this.setValue(t,i)}get size(){return A(this,Na).size}resetModified(){A(this,$1)&&(I(this,$1,!1),typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new tMe(this)}get serializable(){if(A(this,Na).size===0)return Cie;const e=new Map,t=new $Qe,i=[],n=Object.create(null);let o=!1;for(const[r,l]of A(this,Na)){const a=l instanceof rl?l.serialize(!1,n):l;a&&(e.set(r,a),t.update(`${r}:${JSON.stringify(a)}`),o||(o=!!a.bitmap))}if(o)for(const r of e.values())r.bitmap&&i.push(r.bitmap);return e.size>0?{map:e,hash:t.hexdigest(),transfer:i}:Cie}get editorStats(){let e=null;const t=new Map;for(const i of A(this,Na).values()){if(!(i instanceof rl))continue;const n=i.telemetryFinalData;if(!n)continue;const{type:o}=n;t.has(o)||t.set(o,Object.getPrototypeOf(i).constructor),e||(e=Object.create(null));const r=e[o]||(e[o]=new Map);for(const[l,a]of Object.entries(n)){if(l==="type")continue;let d=r.get(l);d||(d=new Map,r.set(l,d));const c=d.get(a)??0;d.set(a,c+1)}}for(const[i,n]of t)e[i]=n.computeTelemetryFinalData(e[i]);return e}resetModifiedIds(){I(this,JV,null)}get modifiedIds(){if(A(this,JV))return A(this,JV);const e=[];for(const t of A(this,Na).values())!(t instanceof rl)||!t.annotationElementId||!t.serialize()||e.push(t.annotationElementId);return I(this,JV,{ids:new Set(e),hash:e.join(",")})}}$1=new WeakMap,JV=new WeakMap,Na=new WeakMap,Bie=new WeakSet,eMe=function(){A(this,$1)||(I(this,$1,!0),typeof this.onSetModified=="function"&&this.onSetModified())};var lG;class tMe extends sae{constructor(e){super(),O(this,lG);const{map:t,hash:i,transfer:n}=e.serializable,o=structuredClone(t,n?{transfer:n}:null);I(this,lG,{map:o,hash:i,transfer:n})}get print(){tr("Should not call PrintAnnotationStorage.print")}get serializable(){return A(this,lG)}get modifiedIds(){return Vs(this,"modifiedIds",{ids:new Set,hash:""})}}lG=new WeakMap;var eC;class BVt{constructor({ownerDocument:e=globalThis.document,styleElement:t=null}){O(this,eC,new Set),this._document=e,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(e){this.nativeFontFaces.add(e),this._document.fonts.add(e)}removeNativeFontFace(e){this.nativeFontFaces.delete(e),this._document.fonts.delete(e)}insertRule(e){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const t=this.styleElement.sheet;t.insertRule(e,t.cssRules.length)}clear(){for(const e of this.nativeFontFaces)this._document.fonts.delete(e);this.nativeFontFaces.clear(),A(this,eC).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:e,_inspectFont:t}){if(!(!e||A(this,eC).has(e.loadedName))){if(yl(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:i,src:n,style:o}=e,r=new FontFace(i,n,o);this.addNativeFontFace(r);try{await r.load(),A(this,eC).add(i),t==null||t(e)}catch{Hn(`Cannot load system font: ${e.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(r)}return}tr("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(e){if(e.attached||e.missingFile&&!e.systemFontInfo)return;if(e.attached=!0,e.systemFontInfo){await this.loadSystemFont(e);return}if(this.isFontLoadingAPISupported){const i=e.createNativeFontFace();if(i){this.addNativeFontFace(i);try{await i.loaded}catch(n){throw Hn(`Failed to load font '${i.family}': '${n}'.`),e.disableFontFace=!0,n}}return}const t=e.createFontFaceRule();if(t){if(this.insertRule(t),this.isSyncFontLoadingSupported)return;await new Promise(i=>{const n=this._queueLoadingCallback(i);this._prepareFontLoadEvent(e,n)})}}get isFontLoadingAPISupported(){var e;const t=!!((e=this._document)!=null&&e.fonts);return Vs(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){let e=!1;return(Sd||typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.userAgent)=="string"&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(e=!0),Vs(this,"isSyncFontLoadingSupported",e)}_queueLoadingCallback(e){function t(){for(yl(!n.done,"completeRequest() cannot be called twice."),n.done=!0;i.length>0&&i[0].done;){const o=i.shift();setTimeout(o.callback,0)}}const{loadingRequests:i}=this,n={done:!1,complete:t,callback:e};return i.push(n),n}get _loadTestFont(){const e=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return Vs(this,"_loadTestFont",e)}_prepareFontLoadEvent(e,t){function i(S,Z){return S.charCodeAt(Z)<<24|S.charCodeAt(Z+1)<<16|S.charCodeAt(Z+2)<<8|S.charCodeAt(Z+3)&255}function n(S,Z,R,y){const N=S.substring(0,Z),w=S.substring(Z+R);return N+y+w}let o,r;const l=this._document.createElement("canvas");l.width=1,l.height=1;const a=l.getContext("2d");let d=0;function c(S,Z){if(++d>30){Hn("Load test font never loaded."),Z();return}if(a.font="30px "+S,a.fillText(".",0,20),a.getImageData(0,0,1,1).data[3]>0){Z();return}setTimeout(c.bind(null,S,Z))}const h=`lt${Date.now()}${this.loadTestFontId++}`;let u=this._loadTestFont;u=n(u,976,h.length,h);const m=16,p=1482184792;let g=i(u,m);for(o=0,r=h.length-3;o<r;o+=4)g=g-p+i(h,o)|0;o<h.length&&(g=g-p+i(h+"XXX",o)|0),u=n(u,m,4,gVt(g));const f=`url(data:font/opentype;base64,${btoa(u)});`,b=`@font-face {font-family:"${h}";src:${f}}`;this.insertRule(b);const U=this._document.createElement("div");U.style.visibility="hidden",U.style.width=U.style.height="10px",U.style.position="absolute",U.style.top=U.style.left="0px";for(const S of[e.loadedName,h]){const Z=this._document.createElement("span");Z.textContent="Hi",Z.style.fontFamily=S,U.append(Z)}this._document.body.append(U),c(h,()=>{U.remove(),t.complete()})}}eC=new WeakMap;class LVt{constructor(e,{disableFontFace:t=!1,fontExtraProperties:i=!1,inspectFont:n=null}){this.compiledGlyphs=Object.create(null);for(const o in e)this[o]=e[o];this.disableFontFace=t===!0,this.fontExtraProperties=i===!0,this._inspectFont=n}createNativeFontFace(){var e;if(!this.data||this.disableFontFace)return null;let t;if(!this.cssFontInfo)t=new FontFace(this.loadedName,this.data,{});else{const i={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(i.style=`oblique ${this.cssFontInfo.italicAngle}deg`),t=new FontFace(this.cssFontInfo.fontFamily,this.data,i)}return(e=this._inspectFont)==null||e.call(this,this),t}createFontFaceRule(){var e;if(!this.data||this.disableFontFace)return null;const t=`url(data:${this.mimetype};base64,${ZVt(this.data)});`;let i;if(!this.cssFontInfo)i=`@font-face {font-family:"${this.loadedName}";src:${t}}`;else{let n=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(n+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),i=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${n}src:${t}}`}return(e=this._inspectFont)==null||e.call(this,this,t),i}getPathGenerator(e,t){if(this.compiledGlyphs[t]!==void 0)return this.compiledGlyphs[t];const i=this.loadedName+"_path_"+t;let n;try{n=e.get(i)}catch(r){Hn(`getPathGenerator - ignoring character: "${r}".`)}const o=new Path2D(n||"");return this.fontExtraProperties||e.delete(i),this.compiledGlyphs[t]=o}}const fE={DATA:1,ERROR:2},Al={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function vfe(){}function Bc(s){if(s instanceof KF||s instanceof Aie||s instanceof Uv||s instanceof pfe||s instanceof _Y||s instanceof EH)return s;switch(s instanceof Error||typeof s=="object"&&s!==null||tr('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),s.name){case"AbortException":return new KF(s.message);case"InvalidPDFException":return new Aie(s.message);case"MissingPDFException":return new Uv(s.message);case"PasswordException":return new pfe(s.message,s.code);case"UnexpectedResponseException":return new _Y(s.message,s.status);case"UnknownErrorException":return new EH(s.message,s.details)}return new EH(s.message,s.toString())}var tC,rU,iMe,kfe,xfe,bE;class iC{constructor(e,t,i){O(this,rU),O(this,tC,new AbortController),this.sourceName=e,this.targetName=t,this.comObj=i,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),i.addEventListener("message",_(this,rU,iMe).bind(this),{signal:A(this,tC).signal})}on(e,t){const i=this.actionHandler;if(i[e])throw new Error(`There is already an actionName called "${e}"`);i[e]=t}send(e,t,i){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},i)}sendWithPromise(e,t,i){const n=this.callbackId++,o=Promise.withResolvers();this.callbackCapabilities[n]=o;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},i)}catch(r){o.reject(r)}return o.promise}sendWithStream(e,t,i,n){const o=this.streamId++,r=this.sourceName,l=this.targetName,a=this.comObj;return new ReadableStream({start:d=>{const c=Promise.withResolvers();return this.streamControllers[o]={controller:d,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},a.postMessage({sourceName:r,targetName:l,action:e,streamId:o,data:t,desiredSize:d.desiredSize},n),c.promise},pull:d=>{const c=Promise.withResolvers();return this.streamControllers[o].pullCall=c,a.postMessage({sourceName:r,targetName:l,stream:Al.PULL,streamId:o,desiredSize:d.desiredSize}),c.promise},cancel:d=>{yl(d instanceof Error,"cancel must have a valid reason");const c=Promise.withResolvers();return this.streamControllers[o].cancelCall=c,this.streamControllers[o].isClosed=!0,a.postMessage({sourceName:r,targetName:l,stream:Al.CANCEL,streamId:o,reason:Bc(d)}),c.promise}},i)}destroy(){var e;(e=A(this,tC))==null||e.abort(),I(this,tC,null)}}tC=new WeakMap,rU=new WeakSet,iMe=function({data:s}){if(s.targetName!==this.sourceName)return;if(s.stream){_(this,rU,xfe).call(this,s);return}if(s.callback){const t=s.callbackId,i=this.callbackCapabilities[t];if(!i)throw new Error(`Cannot resolve callback ${t}`);if(delete this.callbackCapabilities[t],s.callback===fE.DATA)i.resolve(s.data);else if(s.callback===fE.ERROR)i.reject(Bc(s.reason));else throw new Error("Unexpected callback case");return}const e=this.actionHandler[s.action];if(!e)throw new Error(`Unknown action from worker: ${s.action}`);if(s.callbackId){const t=this.sourceName,i=s.sourceName,n=this.comObj;Promise.try(e,s.data).then(function(o){n.postMessage({sourceName:t,targetName:i,callback:fE.DATA,callbackId:s.callbackId,data:o})},function(o){n.postMessage({sourceName:t,targetName:i,callback:fE.ERROR,callbackId:s.callbackId,reason:Bc(o)})});return}if(s.streamId){_(this,rU,kfe).call(this,s);return}e(s.data)},kfe=function(s){const e=s.streamId,t=this.sourceName,i=s.sourceName,n=this.comObj,o=this,r=this.actionHandler[s.action],l={enqueue(a,d=1,c){if(this.isCancelled)return;const h=this.desiredSize;this.desiredSize-=d,h>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),n.postMessage({sourceName:t,targetName:i,stream:Al.ENQUEUE,streamId:e,chunk:a},c)},close(){this.isCancelled||(this.isCancelled=!0,n.postMessage({sourceName:t,targetName:i,stream:Al.CLOSE,streamId:e}),delete o.streamSinks[e])},error(a){yl(a instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,n.postMessage({sourceName:t,targetName:i,stream:Al.ERROR,streamId:e,reason:Bc(a)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:s.desiredSize,ready:null};l.sinkCapability.resolve(),l.ready=l.sinkCapability.promise,this.streamSinks[e]=l,Promise.try(r,s.data,l).then(function(){n.postMessage({sourceName:t,targetName:i,stream:Al.START_COMPLETE,streamId:e,success:!0})},function(a){n.postMessage({sourceName:t,targetName:i,stream:Al.START_COMPLETE,streamId:e,reason:Bc(a)})})},xfe=function(s){const e=s.streamId,t=this.sourceName,i=s.sourceName,n=this.comObj,o=this.streamControllers[e],r=this.streamSinks[e];switch(s.stream){case Al.START_COMPLETE:s.success?o.startCall.resolve():o.startCall.reject(Bc(s.reason));break;case Al.PULL_COMPLETE:s.success?o.pullCall.resolve():o.pullCall.reject(Bc(s.reason));break;case Al.PULL:if(!r){n.postMessage({sourceName:t,targetName:i,stream:Al.PULL_COMPLETE,streamId:e,success:!0});break}r.desiredSize<=0&&s.desiredSize>0&&r.sinkCapability.resolve(),r.desiredSize=s.desiredSize,Promise.try(r.onPull||vfe).then(function(){n.postMessage({sourceName:t,targetName:i,stream:Al.PULL_COMPLETE,streamId:e,success:!0})},function(a){n.postMessage({sourceName:t,targetName:i,stream:Al.PULL_COMPLETE,streamId:e,reason:Bc(a)})});break;case Al.ENQUEUE:if(yl(o,"enqueue should have stream controller"),o.isClosed)break;o.controller.enqueue(s.chunk);break;case Al.CLOSE:if(yl(o,"close should have stream controller"),o.isClosed)break;o.isClosed=!0,o.controller.close(),_(this,rU,bE).call(this,o,e);break;case Al.ERROR:yl(o,"error should have stream controller"),o.controller.error(Bc(s.reason)),_(this,rU,bE).call(this,o,e);break;case Al.CANCEL_COMPLETE:s.success?o.cancelCall.resolve():o.cancelCall.reject(Bc(s.reason)),_(this,rU,bE).call(this,o,e);break;case Al.CANCEL:if(!r)break;const l=Bc(s.reason);Promise.try(r.onCancel||vfe,l).then(function(){n.postMessage({sourceName:t,targetName:i,stream:Al.CANCEL_COMPLETE,streamId:e,success:!0})},function(a){n.postMessage({sourceName:t,targetName:i,stream:Al.CANCEL_COMPLETE,streamId:e,reason:Bc(a)})}),r.sinkCapability.reject(l),r.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}},bE=async function(s,e){var t,i,n;await Promise.allSettled([(t=s.startCall)==null?void 0:t.promise,(i=s.pullCall)==null?void 0:i.promise,(n=s.cancelCall)==null?void 0:n.promise]),delete this.streamControllers[e]};var aG;class nMe{constructor({enableHWA:e=!1}){O(this,aG,!1),I(this,aG,e)}create(e,t){if(e<=0||t<=0)throw new Error("Invalid canvas size");const i=this._createCanvas(e,t);return{canvas:i,context:i.getContext("2d",{willReadFrequently:!A(this,aG)})}}reset(e,t,i){if(!e.canvas)throw new Error("Canvas is not specified");if(t<=0||i<=0)throw new Error("Invalid canvas size");e.canvas.width=t,e.canvas.height=i}destroy(e){if(!e.canvas)throw new Error("Canvas is not specified");e.canvas.width=0,e.canvas.height=0,e.canvas=null,e.context=null}_createCanvas(e,t){tr("Abstract method `_createCanvas` called.")}}aG=new WeakMap;class vVt extends nMe{constructor({ownerDocument:e=globalThis.document,enableHWA:t=!1}){super({enableHWA:t}),this._document=e}_createCanvas(e,t){const i=this._document.createElement("canvas");return i.width=e,i.height=t,i}}class sMe{constructor({baseUrl:e=null,isCompressed:t=!0}){this.baseUrl=e,this.isCompressed=t}async fetch({name:e}){if(!this.baseUrl)throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");if(!e)throw new Error("CMap name must be specified.");const t=this.baseUrl+e+(this.isCompressed?".bcmap":"");return this._fetch(t).then(i=>({cMapData:i,isCompressed:this.isCompressed})).catch(i=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${t}`)})}async _fetch(e){tr("Abstract method `_fetch` called.")}}class oMe extends sMe{async _fetch(e){const t=await cO(e,this.isCompressed?"arraybuffer":"text");return t instanceof ArrayBuffer?new Uint8Array(t):dO(t)}}eo(4520);class rMe{addFilter(e){return"none"}addHCMFilter(e,t){return"none"}addAlphaFilter(e){return"none"}addLuminosityFilter(e){return"none"}addHighlightHCMFilter(e,t,i,n,o){return"none"}destroy(e=!1){}}var XV,ey,wU,zb,jd,WS,YV,pn,rd,nC,YW,dG,_V,lMe,Lie,zV,zw,sC,vie,oC;class kVt extends rMe{constructor({docId:e,ownerDocument:t=globalThis.document}){super(),O(this,pn),O(this,XV),O(this,ey),O(this,wU),O(this,zb),O(this,jd),O(this,WS),O(this,YV,0),I(this,zb,e),I(this,jd,t)}addFilter(e){if(!e)return"none";let t=A(this,pn,rd).get(e);if(t)return t;const[i,n,o]=_(this,pn,dG).call(this,e),r=e.length===1?i:`${i}${n}${o}`;if(t=A(this,pn,rd).get(r),t)return A(this,pn,rd).set(e,t),t;const l=`g_${A(this,zb)}_transfer_map_${mc(this,YV)._++}`,a=_(this,pn,_V).call(this,l);A(this,pn,rd).set(e,a),A(this,pn,rd).set(r,a);const d=_(this,pn,zV).call(this,l);return _(this,pn,sC).call(this,i,n,o,d),a}addHCMFilter(e,t){var i;const n=`${e}-${t}`,o="base";let r=A(this,pn,nC).get(o);if((r==null?void 0:r.key)===n||(r?((i=r.filter)==null||i.remove(),r.key=n,r.url="none",r.filter=null):(r={key:n,url:"none",filter:null},A(this,pn,nC).set(o,r)),!e||!t))return r.url;const l=_(this,pn,oC).call(this,e);e=dn.makeHexColor(...l);const a=_(this,pn,oC).call(this,t);if(t=dn.makeHexColor(...a),A(this,pn,YW).style.color="",e==="#000000"&&t==="#ffffff"||e===t)return r.url;const d=new Array(256);for(let p=0;p<=255;p++){const g=p/255;d[p]=g<=.03928?g/12.92:((g+.055)/1.055)**2.4}const c=d.join(","),h=`g_${A(this,zb)}_hcm_filter`,u=r.filter=_(this,pn,zV).call(this,h);_(this,pn,sC).call(this,c,c,c,u),_(this,pn,Lie).call(this,u);const m=(p,g)=>{const f=l[p]/255,b=a[p]/255,U=new Array(g+1);for(let S=0;S<=g;S++)U[S]=f+S/g*(b-f);return U.join(",")};return _(this,pn,sC).call(this,m(0,5),m(1,5),m(2,5),u),r.url=_(this,pn,_V).call(this,h),r.url}addAlphaFilter(e){let t=A(this,pn,rd).get(e);if(t)return t;const[i]=_(this,pn,dG).call(this,[e]),n=`alpha_${i}`;if(t=A(this,pn,rd).get(n),t)return A(this,pn,rd).set(e,t),t;const o=`g_${A(this,zb)}_alpha_map_${mc(this,YV)._++}`,r=_(this,pn,_V).call(this,o);A(this,pn,rd).set(e,r),A(this,pn,rd).set(n,r);const l=_(this,pn,zV).call(this,o);return _(this,pn,vie).call(this,i,l),r}addLuminosityFilter(e){let t=A(this,pn,rd).get(e||"luminosity");if(t)return t;let i,n;if(e?([i]=_(this,pn,dG).call(this,[e]),n=`luminosity_${i}`):n="luminosity",t=A(this,pn,rd).get(n),t)return A(this,pn,rd).set(e,t),t;const o=`g_${A(this,zb)}_luminosity_map_${mc(this,YV)._++}`,r=_(this,pn,_V).call(this,o);A(this,pn,rd).set(e,r),A(this,pn,rd).set(n,r);const l=_(this,pn,zV).call(this,o);return _(this,pn,lMe).call(this,l),e&&_(this,pn,vie).call(this,i,l),r}addHighlightHCMFilter(e,t,i,n,o){var r;const l=`${t}-${i}-${n}-${o}`;let a=A(this,pn,nC).get(e);if((a==null?void 0:a.key)===l||(a?((r=a.filter)==null||r.remove(),a.key=l,a.url="none",a.filter=null):(a={key:l,url:"none",filter:null},A(this,pn,nC).set(e,a)),!t||!i))return a.url;const[d,c]=[t,i].map(_(this,pn,oC).bind(this));let h=Math.round(.2126*d[0]+.7152*d[1]+.0722*d[2]),u=Math.round(.2126*c[0]+.7152*c[1]+.0722*c[2]),[m,p]=[n,o].map(_(this,pn,oC).bind(this));u<h&&([h,u,m,p]=[u,h,p,m]),A(this,pn,YW).style.color="";const g=(U,S,Z)=>{const R=new Array(256),y=(u-h)/Z,N=U/255,w=(S-U)/(255*Z);let Q=0;for(let C=0;C<=Z;C++){const v=Math.round(h+C*y),Y=N+C*w;for(let J=Q;J<=v;J++)R[J]=Y;Q=v+1}for(let C=Q;C<256;C++)R[C]=R[Q-1];return R.join(",")},f=`g_${A(this,zb)}_hcm_${e}_filter`,b=a.filter=_(this,pn,zV).call(this,f);return _(this,pn,Lie).call(this,b),_(this,pn,sC).call(this,g(m[0],p[0],5),g(m[1],p[1],5),g(m[2],p[2],5),b),a.url=_(this,pn,_V).call(this,f),a.url}destroy(e=!1){var t,i,n,o;e&&(t=A(this,WS))!=null&&t.size||((i=A(this,wU))==null||i.parentNode.parentNode.remove(),I(this,wU,null),(n=A(this,ey))==null||n.clear(),I(this,ey,null),(o=A(this,WS))==null||o.clear(),I(this,WS,null),I(this,YV,0))}}XV=new WeakMap,ey=new WeakMap,wU=new WeakMap,zb=new WeakMap,jd=new WeakMap,WS=new WeakMap,YV=new WeakMap,pn=new WeakSet,rd=function(){return A(this,ey)||I(this,ey,new Map)},nC=function(){return A(this,WS)||I(this,WS,new Map)},YW=function(){if(!A(this,wU)){const s=A(this,jd).createElement("div"),{style:e}=s;e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const t=A(this,jd).createElementNS(Q0,"svg");t.setAttribute("width",0),t.setAttribute("height",0),I(this,wU,A(this,jd).createElementNS(Q0,"defs")),s.append(t),t.append(A(this,wU)),A(this,jd).body.append(s)}return A(this,wU)},dG=function(s){if(s.length===1){const l=s[0],a=new Array(256);for(let c=0;c<256;c++)a[c]=l[c]/255;const d=a.join(",");return[d,d,d]}const[e,t,i]=s,n=new Array(256),o=new Array(256),r=new Array(256);for(let l=0;l<256;l++)n[l]=e[l]/255,o[l]=t[l]/255,r[l]=i[l]/255;return[n.join(","),o.join(","),r.join(",")]},_V=function(s){if(A(this,XV)===void 0){I(this,XV,"");const e=A(this,jd).URL;e!==A(this,jd).baseURI&&(hO(e)?Hn('#createUrl: ignore "data:"-URL for performance reasons.'):I(this,XV,e.split("#",1)[0]))}return`url(${A(this,XV)}#${s})`},lMe=function(s){const e=A(this,jd).createElementNS(Q0,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),s.append(e)},Lie=function(s){const e=A(this,jd).createElementNS(Q0,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),s.append(e)},zV=function(s){const e=A(this,jd).createElementNS(Q0,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",s),A(this,pn,YW).append(e),e},zw=function(s,e,t){const i=A(this,jd).createElementNS(Q0,e);i.setAttribute("type","discrete"),i.setAttribute("tableValues",t),s.append(i)},sC=function(s,e,t,i){const n=A(this,jd).createElementNS(Q0,"feComponentTransfer");i.append(n),_(this,pn,zw).call(this,n,"feFuncR",s),_(this,pn,zw).call(this,n,"feFuncG",e),_(this,pn,zw).call(this,n,"feFuncB",t)},vie=function(s,e){const t=A(this,jd).createElementNS(Q0,"feComponentTransfer");e.append(t),_(this,pn,zw).call(this,t,"feFuncA",s)},oC=function(s){return A(this,pn,YW).style.color=s,iae(getComputedStyle(A(this,pn,YW)).getPropertyValue("color"))};class aMe{constructor({baseUrl:e=null}){this.baseUrl=e}async fetch({filename:e}){if(!this.baseUrl)throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");if(!e)throw new Error("Font filename must be specified.");const t=`${this.baseUrl}${e}`;return this._fetch(t).catch(i=>{throw new Error(`Unable to load font data at: ${t}`)})}async _fetch(e){tr("Abstract method `_fetch` called.")}}class dMe extends aMe{async _fetch(e){const t=await cO(e,"arraybuffer");return new Uint8Array(t)}}if(Sd){let s;try{const e=process.getBuiltinModule("module").createRequire(import.meta.url);try{s=e("@napi-rs/canvas")}catch(t){Hn(`Cannot load "@napi-rs/canvas" package: "${t}".`)}}catch(e){Hn(`Cannot access the \`require\` function: "${e}".`)}globalThis.DOMMatrix||(s!=null&&s.DOMMatrix?globalThis.DOMMatrix=s.DOMMatrix:Hn("Cannot polyfill `DOMMatrix`, rendering may be broken.")),globalThis.ImageData||(s!=null&&s.ImageData?globalThis.ImageData=s.ImageData:Hn("Cannot polyfill `ImageData`, rendering may be broken.")),globalThis.Path2D||(s!=null&&s.Path2D?globalThis.Path2D=s.Path2D:Hn("Cannot polyfill `Path2D`, rendering may be broken."))}async function cMe(s){const e=await process.getBuiltinModule("fs").promises.readFile(s);return new Uint8Array(e)}class xVt extends rMe{}class IVt extends nMe{_createCanvas(e,t){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(e,t)}}class EVt extends sMe{async _fetch(e){return cMe(e)}}class DVt extends aMe{async _fetch(e){return cMe(e)}}const bd={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function kie(s,e){if(!e)return;const t=e[2]-e[0],i=e[3]-e[1],n=new Path2D;n.rect(e[0],e[1],t,i),s.clip(n)}class oae{getPattern(){tr("Abstract method `getPattern` called.")}}class GVt extends oae{constructor(e){super(),this._type=e[1],this._bbox=e[2],this._colorStops=e[3],this._p0=e[4],this._p1=e[5],this._r0=e[6],this._r1=e[7],this.matrix=null}_createGradient(e){let t;this._type==="axial"?t=e.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):this._type==="radial"&&(t=e.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const i of this._colorStops)t.addColorStop(i[0],i[1]);return t}getPattern(e,t,i,n){let o;if(n===bd.STROKE||n===bd.FILL){const r=t.current.getClippedPathBoundingBox(n,Ur(e))||[0,0,0,0],l=Math.ceil(r[2]-r[0])||1,a=Math.ceil(r[3]-r[1])||1,d=t.cachedCanvases.getCanvas("pattern",l,a),c=d.context;c.clearRect(0,0,c.canvas.width,c.canvas.height),c.beginPath(),c.rect(0,0,c.canvas.width,c.canvas.height),c.translate(-r[0],-r[1]),i=dn.transform(i,[1,0,0,1,r[0],r[1]]),c.transform(...t.baseTransform),this.matrix&&c.transform(...this.matrix),kie(c,this._bbox),c.fillStyle=this._createGradient(c),c.fill(),o=e.createPattern(d.canvas,"no-repeat");const h=new DOMMatrix(i);o.setTransform(h)}else kie(e,this._bbox),o=this._createGradient(e);return o}}function t4(s,e,t,i,n,o,r,l){const a=e.coords,d=e.colors,c=s.data,h=s.width*4;let u;a[t+1]>a[i+1]&&(u=t,t=i,i=u,u=o,o=r,r=u),a[i+1]>a[n+1]&&(u=i,i=n,n=u,u=r,r=l,l=u),a[t+1]>a[i+1]&&(u=t,t=i,i=u,u=o,o=r,r=u);const m=(a[t]+e.offsetX)*e.scaleX,p=(a[t+1]+e.offsetY)*e.scaleY,g=(a[i]+e.offsetX)*e.scaleX,f=(a[i+1]+e.offsetY)*e.scaleY,b=(a[n]+e.offsetX)*e.scaleX,U=(a[n+1]+e.offsetY)*e.scaleY;if(p>=U)return;const S=d[o],Z=d[o+1],R=d[o+2],y=d[r],N=d[r+1],w=d[r+2],Q=d[l],C=d[l+1],v=d[l+2],Y=Math.round(p),J=Math.round(U);let k,E,K,de,ee,le,Fe,Ue;for(let ze=Y;ze<=J;ze++){if(ze<f){const Se=ze<p?0:(p-ze)/(p-f);k=m-(m-g)*Se,E=S-(S-y)*Se,K=Z-(Z-N)*Se,de=R-(R-w)*Se}else{let Se;ze>U?Se=1:f===U?Se=0:Se=(f-ze)/(f-U),k=g-(g-b)*Se,E=y-(y-Q)*Se,K=N-(N-C)*Se,de=w-(w-v)*Se}let Oe;ze<p?Oe=0:ze>U?Oe=1:Oe=(p-ze)/(p-U),ee=m-(m-b)*Oe,le=S-(S-Q)*Oe,Fe=Z-(Z-C)*Oe,Ue=R-(R-v)*Oe;const Ie=Math.round(Math.min(k,ee)),at=Math.round(Math.max(k,ee));let je=h*ze+Ie*4;for(let Se=Ie;Se<=at;Se++)Oe=(k-Se)/(k-ee),Oe<0?Oe=0:Oe>1&&(Oe=1),c[je++]=E-(E-le)*Oe|0,c[je++]=K-(K-Fe)*Oe|0,c[je++]=de-(de-Ue)*Oe|0,c[je++]=255}}function JVt(s,e,t){const i=e.coords,n=e.colors;let o,r;switch(e.type){case"lattice":const l=e.verticesPerRow,a=Math.floor(i.length/l)-1,d=l-1;for(o=0;o<a;o++){let c=o*l;for(let h=0;h<d;h++,c++)t4(s,t,i[c],i[c+1],i[c+l],n[c],n[c+1],n[c+l]),t4(s,t,i[c+l+1],i[c+1],i[c+l],n[c+l+1],n[c+1],n[c+l])}break;case"triangles":for(o=0,r=i.length;o<r;o+=3)t4(s,t,i[o],i[o+1],i[o+2],n[o],n[o+1],n[o+2]);break;default:throw new Error("illegal figure")}}class XVt extends oae{constructor(e){super(),this._coords=e[2],this._colors=e[3],this._figures=e[4],this._bounds=e[5],this._bbox=e[7],this._background=e[8],this.matrix=null}_createMeshCanvas(e,t,i){const n=Math.floor(this._bounds[0]),o=Math.floor(this._bounds[1]),r=Math.ceil(this._bounds[2])-n,l=Math.ceil(this._bounds[3])-o,a=Math.min(Math.ceil(Math.abs(r*e[0]*1.1)),3e3),d=Math.min(Math.ceil(Math.abs(l*e[1]*1.1)),3e3),c=r/a,h=l/d,u={coords:this._coords,colors:this._colors,offsetX:-n,offsetY:-o,scaleX:1/c,scaleY:1/h},m=a+2*2,p=d+2*2,g=i.getCanvas("mesh",m,p),f=g.context,b=f.createImageData(a,d);if(t){const U=b.data;for(let S=0,Z=U.length;S<Z;S+=4)U[S]=t[0],U[S+1]=t[1],U[S+2]=t[2],U[S+3]=255}for(const U of this._figures)JVt(b,U,u);return f.putImageData(b,2,2),{canvas:g.canvas,offsetX:n-2*c,offsetY:o-2*h,scaleX:c,scaleY:h}}getPattern(e,t,i,n){kie(e,this._bbox);let o;if(n===bd.SHADING)o=dn.singularValueDecompose2dScale(Ur(e));else if(o=dn.singularValueDecompose2dScale(t.baseTransform),this.matrix){const l=dn.singularValueDecompose2dScale(this.matrix);o=[o[0]*l[0],o[1]*l[1]]}const r=this._createMeshCanvas(o,n===bd.SHADING?null:this._background,t.cachedCanvases);return n!==bd.SHADING&&(e.setTransform(...t.baseTransform),this.matrix&&e.transform(...this.matrix)),e.translate(r.offsetX,r.offsetY),e.scale(r.scaleX,r.scaleY),e.createPattern(r.canvas,"no-repeat")}}class YVt extends oae{getPattern(){return"hotpink"}}function _Vt(s){switch(s[0]){case"RadialAxial":return new GVt(s);case"Mesh":return new XVt(s);case"Dummy":return new YVt}throw new Error(`Unknown IR type: ${s[0]}`)}const Ife={COLORED:1,UNCOLORED:2},hMe=class uMe{constructor(e,t,i,n,o){this.operatorList=e[2],this.matrix=e[3],this.bbox=e[4],this.xstep=e[5],this.ystep=e[6],this.paintType=e[7],this.tilingType=e[8],this.color=t,this.ctx=i,this.canvasGraphicsFactory=n,this.baseTransform=o}createPatternCanvas(e){const{bbox:t,operatorList:i,paintType:n,tilingType:o,color:r,canvasGraphicsFactory:l}=this;let{xstep:a,ystep:d}=this;a=Math.abs(a),d=Math.abs(d),aO("TilingType: "+o);const c=t[0],h=t[1],u=t[2],m=t[3],p=u-c,g=m-h,f=dn.singularValueDecompose2dScale(this.matrix),b=dn.singularValueDecompose2dScale(this.baseTransform),U=f[0]*b[0],S=f[1]*b[1];let Z=p,R=g,y=!1,N=!1;const w=Math.ceil(a*U),Q=Math.ceil(d*S),C=Math.ceil(p*U),v=Math.ceil(g*S);w>=C?Z=a:y=!0,Q>=v?R=d:N=!0;const Y=this.getSizeAndScale(Z,this.ctx.canvas.width,U),J=this.getSizeAndScale(R,this.ctx.canvas.height,S),k=e.cachedCanvases.getCanvas("pattern",Y.size,J.size),E=k.context,K=l.createCanvasGraphics(E);if(K.groupLevel=e.groupLevel,this.setFillAndStrokeStyleToContext(K,n,r),E.translate(-Y.scale*c,-J.scale*h),K.transform(Y.scale,0,0,J.scale,0,0),E.save(),this.clipBbox(K,c,h,u,m),K.baseTransform=Ur(K.ctx),K.executeOperatorList(i),K.endDrawing(),E.restore(),y||N){const de=k.canvas;y&&(Z=a),N&&(R=d);const ee=this.getSizeAndScale(Z,this.ctx.canvas.width,U),le=this.getSizeAndScale(R,this.ctx.canvas.height,S),Fe=ee.size,Ue=le.size,ze=e.cachedCanvases.getCanvas("pattern-workaround",Fe,Ue),Oe=ze.context,Ie=y?Math.floor(p/a):0,at=N?Math.floor(g/d):0;for(let je=0;je<=Ie;je++)for(let Se=0;Se<=at;Se++)Oe.drawImage(de,Fe*je,Ue*Se,Fe,Ue,0,0,Fe,Ue);return{canvas:ze.canvas,scaleX:ee.scale,scaleY:le.scale,offsetX:c,offsetY:h}}return{canvas:k.canvas,scaleX:Y.scale,scaleY:J.scale,offsetX:c,offsetY:h}}getSizeAndScale(e,t,i){const n=Math.max(uMe.MAX_PATTERN_SIZE,t);let o=Math.ceil(e*i);return o>=n?o=n:i=o/e,{scale:i,size:o}}clipBbox(e,t,i,n,o){const r=n-t,l=o-i;e.ctx.rect(t,i,r,l),e.current.updateRectMinMax(Ur(e.ctx),[t,i,n,o]),e.clip(),e.endPath()}setFillAndStrokeStyleToContext(e,t,i){const n=e.ctx,o=e.current;switch(t){case Ife.COLORED:const r=this.ctx;n.fillStyle=r.fillStyle,n.strokeStyle=r.strokeStyle,o.fillColor=r.fillStyle,o.strokeColor=r.strokeStyle;break;case Ife.UNCOLORED:const l=dn.makeHexColor(i[0],i[1],i[2]);n.fillStyle=l,n.strokeStyle=l,o.fillColor=l,o.strokeColor=l;break;default:throw new pVt(`Unsupported paint type: ${t}`)}}getPattern(e,t,i,n){let o=i;n!==bd.SHADING&&(o=dn.transform(o,t.baseTransform),this.matrix&&(o=dn.transform(o,this.matrix)));const r=this.createPatternCanvas(t);let l=new DOMMatrix(o);l=l.translate(r.offsetX,r.offsetY),l=l.scale(1/r.scaleX,1/r.scaleY);const a=e.createPattern(r.canvas,"repeat");return a.setTransform(l),a}};Rn(hMe,"MAX_PATTERN_SIZE",3e3);let zVt=hMe;function OVt({src:s,srcPos:e=0,dest:t,width:i,height:n,nonBlackColor:o=4294967295,inverseDecode:r=!1}){const l=pc.isLittleEndian?4278190080:255,[a,d]=r?[o,l]:[l,o],c=i>>3,h=i&7,u=s.length;t=new Uint32Array(t.buffer);let m=0;for(let p=0;p<n;p++){for(const f=e+c;e<f;e++){const b=e<u?s[e]:255;t[m++]=b&128?d:a,t[m++]=b&64?d:a,t[m++]=b&32?d:a,t[m++]=b&16?d:a,t[m++]=b&8?d:a,t[m++]=b&4?d:a,t[m++]=b&2?d:a,t[m++]=b&1?d:a}if(h===0)continue;const g=e<u?s[e++]:255;for(let f=0;f<h;f++)t[m++]=g&1<<7-f?d:a}return{srcPos:e,destPos:m}}const Efe=16,Dfe=100,jVt=15,Gfe=10,Jfe=1e3,vc=16;function PVt(s,e){if(s._removeMirroring)throw new Error("Context is already forwarding operations.");s.__originalSave=s.save,s.__originalRestore=s.restore,s.__originalRotate=s.rotate,s.__originalScale=s.scale,s.__originalTranslate=s.translate,s.__originalTransform=s.transform,s.__originalSetTransform=s.setTransform,s.__originalResetTransform=s.resetTransform,s.__originalClip=s.clip,s.__originalMoveTo=s.moveTo,s.__originalLineTo=s.lineTo,s.__originalBezierCurveTo=s.bezierCurveTo,s.__originalRect=s.rect,s.__originalClosePath=s.closePath,s.__originalBeginPath=s.beginPath,s._removeMirroring=()=>{s.save=s.__originalSave,s.restore=s.__originalRestore,s.rotate=s.__originalRotate,s.scale=s.__originalScale,s.translate=s.__originalTranslate,s.transform=s.__originalTransform,s.setTransform=s.__originalSetTransform,s.resetTransform=s.__originalResetTransform,s.clip=s.__originalClip,s.moveTo=s.__originalMoveTo,s.lineTo=s.__originalLineTo,s.bezierCurveTo=s.__originalBezierCurveTo,s.rect=s.__originalRect,s.closePath=s.__originalClosePath,s.beginPath=s.__originalBeginPath,delete s._removeMirroring},s.save=function(){e.save(),this.__originalSave()},s.restore=function(){e.restore(),this.__originalRestore()},s.translate=function(t,i){e.translate(t,i),this.__originalTranslate(t,i)},s.scale=function(t,i){e.scale(t,i),this.__originalScale(t,i)},s.transform=function(t,i,n,o,r,l){e.transform(t,i,n,o,r,l),this.__originalTransform(t,i,n,o,r,l)},s.setTransform=function(t,i,n,o,r,l){e.setTransform(t,i,n,o,r,l),this.__originalSetTransform(t,i,n,o,r,l)},s.resetTransform=function(){e.resetTransform(),this.__originalResetTransform()},s.rotate=function(t){e.rotate(t),this.__originalRotate(t)},s.clip=function(t){e.clip(t),this.__originalClip(t)},s.moveTo=function(t,i){e.moveTo(t,i),this.__originalMoveTo(t,i)},s.lineTo=function(t,i){e.lineTo(t,i),this.__originalLineTo(t,i)},s.bezierCurveTo=function(t,i,n,o,r,l){e.bezierCurveTo(t,i,n,o,r,l),this.__originalBezierCurveTo(t,i,n,o,r,l)},s.rect=function(t,i,n,o){e.rect(t,i,n,o),this.__originalRect(t,i,n,o)},s.closePath=function(){e.closePath(),this.__originalClosePath()},s.beginPath=function(){e.beginPath(),this.__originalBeginPath()}}class HVt{constructor(e){this.canvasFactory=e,this.cache=Object.create(null)}getCanvas(e,t,i){let n;return this.cache[e]!==void 0?(n=this.cache[e],this.canvasFactory.reset(n,t,i)):(n=this.canvasFactory.create(t,i),this.cache[e]=n),n}delete(e){delete this.cache[e]}clear(){for(const e in this.cache){const t=this.cache[e];this.canvasFactory.destroy(t),delete this.cache[e]}}}function UE(s,e,t,i,n,o,r,l,a,d){const[c,h,u,m,p,g]=Ur(s);if(h===0&&u===0){const U=r*c+p,S=Math.round(U),Z=l*m+g,R=Math.round(Z),y=(r+a)*c+p,N=Math.abs(Math.round(y)-S)||1,w=(l+d)*m+g,Q=Math.abs(Math.round(w)-R)||1;return s.setTransform(Math.sign(c),0,0,Math.sign(m),S,R),s.drawImage(e,t,i,n,o,0,0,N,Q),s.setTransform(c,h,u,m,p,g),[N,Q]}if(c===0&&m===0){const U=l*u+p,S=Math.round(U),Z=r*h+g,R=Math.round(Z),y=(l+d)*u+p,N=Math.abs(Math.round(y)-S)||1,w=(r+a)*h+g,Q=Math.abs(Math.round(w)-R)||1;return s.setTransform(0,Math.sign(h),Math.sign(u),0,S,R),s.drawImage(e,t,i,n,o,0,0,Q,N),s.setTransform(c,h,u,m,p,g),[Q,N]}s.drawImage(e,t,i,n,o,r,l,a,d);const f=Math.hypot(c,h),b=Math.hypot(u,m);return[f*a,b*d]}function KVt(s){const{width:e,height:t}=s;if(e>Jfe||t>Jfe)return null;const i=1e3,n=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),o=e+1;let r=new Uint8Array(o*(t+1)),l,a,d;const c=e+7&-8;let h=new Uint8Array(c*t),u=0;for(const f of s.data){let b=128;for(;b>0;)h[u++]=f&b?0:255,b>>=1}let m=0;for(u=0,h[u]!==0&&(r[0]=1,++m),a=1;a<e;a++)h[u]!==h[u+1]&&(r[a]=h[u]?2:1,++m),u++;for(h[u]!==0&&(r[a]=2,++m),l=1;l<t;l++){u=l*c,d=l*o,h[u-c]!==h[u]&&(r[d]=h[u]?1:8,++m);let f=(h[u]?4:0)+(h[u-c]?8:0);for(a=1;a<e;a++)f=(f>>2)+(h[u+1]?4:0)+(h[u-c+1]?8:0),n[f]&&(r[d+a]=n[f],++m),u++;if(h[u-c]!==h[u]&&(r[d+a]=h[u]?2:4,++m),m>i)return null}for(u=c*(t-1),d=l*o,h[u]!==0&&(r[d]=8,++m),a=1;a<e;a++)h[u]!==h[u+1]&&(r[d+a]=h[u]?4:8,++m),u++;if(h[u]!==0&&(r[d+a]=4,++m),m>i)return null;const p=new Int32Array([0,o,-1,0,-o,0,0,0,1]),g=new Path2D;for(l=0;m&&l<=t;l++){let f=l*o;const b=f+e;for(;f<b&&!r[f];)f++;if(f===b)continue;g.moveTo(f%o,l);const U=f;let S=r[f];do{const Z=p[S];do f+=Z;while(!r[f]);const R=r[f];R!==5&&R!==10?(S=R,r[f]=0):(S=R&51*S>>4,r[f]&=S>>2|S<<2),g.lineTo(f%o,f/o|0),r[f]||--m}while(U!==f);--l}return h=null,r=null,function(f){f.save(),f.scale(1/e,-1/t),f.translate(0,-t),f.fill(g),f.beginPath(),f.restore()}}class Xfe{constructor(e,t){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=BQe,this.textMatrixScale=1,this.fontMatrix=Fie,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=od.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.patternStroke=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,e,t])}clone(){const e=Object.create(this);return e.clipBox=this.clipBox.slice(),e}setCurrentPoint(e,t){this.x=e,this.y=t}updatePathMinMax(e,t,i){[t,i]=dn.applyTransform([t,i],e),this.minX=Math.min(this.minX,t),this.minY=Math.min(this.minY,i),this.maxX=Math.max(this.maxX,t),this.maxY=Math.max(this.maxY,i)}updateRectMinMax(e,t){const i=dn.applyTransform(t,e),n=dn.applyTransform(t.slice(2),e),o=dn.applyTransform([t[0],t[3]],e),r=dn.applyTransform([t[2],t[1]],e);this.minX=Math.min(this.minX,i[0],n[0],o[0],r[0]),this.minY=Math.min(this.minY,i[1],n[1],o[1],r[1]),this.maxX=Math.max(this.maxX,i[0],n[0],o[0],r[0]),this.maxY=Math.max(this.maxY,i[1],n[1],o[1],r[1])}updateScalingPathMinMax(e,t){dn.scaleMinMax(e,t),this.minX=Math.min(this.minX,t[0]),this.minY=Math.min(this.minY,t[1]),this.maxX=Math.max(this.maxX,t[2]),this.maxY=Math.max(this.maxY,t[3])}updateCurvePathMinMax(e,t,i,n,o,r,l,a,d,c){const h=dn.bezierBoundingBox(t,i,n,o,r,l,a,d,c);c||this.updateRectMinMax(e,h)}getPathBoundingBox(e=bd.FILL,t=null){const i=[this.minX,this.minY,this.maxX,this.maxY];if(e===bd.STROKE){t||tr("Stroke bounding box must include transform.");const n=dn.singularValueDecompose2dScale(t),o=n[0]*this.lineWidth/2,r=n[1]*this.lineWidth/2;i[0]-=o,i[1]-=r,i[2]+=o,i[3]+=r}return i}updateClipFromPath(){const e=dn.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(e||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(e){this.clipBox=e,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(e=bd.FILL,t=null){return dn.intersect(this.clipBox,this.getPathBoundingBox(e,t))}}function Yfe(s,e){if(e instanceof ImageData){s.putImageData(e,0,0);return}const t=e.height,i=e.width,n=t%vc,o=(t-n)/vc,r=n===0?o:o+1,l=s.createImageData(i,vc);let a=0,d;const c=e.data,h=l.data;let u,m,p,g;if(e.kind===HD.GRAYSCALE_1BPP){const f=c.byteLength,b=new Uint32Array(h.buffer,0,h.byteLength>>2),U=b.length,S=i+7>>3,Z=4294967295,R=pc.isLittleEndian?4278190080:255;for(u=0;u<r;u++){for(p=u<o?vc:n,d=0,m=0;m<p;m++){const y=f-a;let N=0;const w=y>S?i:y*8-7,Q=w&-8;let C=0,v=0;for(;N<Q;N+=8)v=c[a++],b[d++]=v&128?Z:R,b[d++]=v&64?Z:R,b[d++]=v&32?Z:R,b[d++]=v&16?Z:R,b[d++]=v&8?Z:R,b[d++]=v&4?Z:R,b[d++]=v&2?Z:R,b[d++]=v&1?Z:R;for(;N<w;N++)C===0&&(v=c[a++],C=128),b[d++]=v&C?Z:R,C>>=1}for(;d<U;)b[d++]=0;s.putImageData(l,0,u*vc)}}else if(e.kind===HD.RGBA_32BPP){for(m=0,g=i*vc*4,u=0;u<o;u++)h.set(c.subarray(a,a+g)),a+=g,s.putImageData(l,0,m),m+=vc;u<r&&(g=i*n*4,h.set(c.subarray(a,a+g)),s.putImageData(l,0,m))}else if(e.kind===HD.RGB_24BPP)for(p=vc,g=i*p,u=0;u<r;u++){for(u>=o&&(p=n,g=i*p),d=0,m=g;m--;)h[d++]=c[a++],h[d++]=c[a++],h[d++]=c[a++],h[d++]=255;s.putImageData(l,0,u*vc)}else throw new Error(`bad image kind: ${e.kind}`)}function _fe(s,e){if(e.bitmap){s.drawImage(e.bitmap,0,0);return}const t=e.height,i=e.width,n=t%vc,o=(t-n)/vc,r=n===0?o:o+1,l=s.createImageData(i,vc);let a=0;const d=e.data,c=l.data;for(let h=0;h<r;h++){const u=h<o?vc:n;({srcPos:a}=OVt({src:d,srcPos:a,dest:c,width:i,height:u,nonBlackColor:0})),s.putImageData(l,0,h*vc)}}function Ow(s,e){const t=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font","filter"];for(const i of t)s[i]!==void 0&&(e[i]=s[i]);s.setLineDash!==void 0&&(e.setLineDash(s.getLineDash()),e.lineDashOffset=s.lineDashOffset)}function FE(s){if(s.strokeStyle=s.fillStyle="#000000",s.fillRule="nonzero",s.globalAlpha=1,s.lineWidth=1,s.lineCap="butt",s.lineJoin="miter",s.miterLimit=10,s.globalCompositeOperation="source-over",s.font="10px sans-serif",s.setLineDash!==void 0&&(s.setLineDash([]),s.lineDashOffset=0),!Sd){const{filter:e}=s;e!=="none"&&e!==""&&(s.filter="none")}}function zfe(s,e){if(e)return!0;const t=dn.singularValueDecompose2dScale(s);t[0]=Math.fround(t[0]),t[1]=Math.fround(t[1]);const i=Math.fround((globalThis.devicePixelRatio||1)*aQ.PDF_TO_CSS_UNITS);return t[0]<=i&&t[1]<=i}const qVt=["butt","round","square"],$Vt=["miter","round","bevel"],eWt={},Ofe={};var Ob,xie,Iie,Eie;const tWt=class mMe{constructor(e,t,i,n,o,{optionalContentConfig:r,markedContentStack:l=null},a,d){O(this,Ob),this.ctx=e,this.current=new Xfe(this.ctx.canvas.width,this.ctx.canvas.height),this.stateStack=[],this.pendingClip=null,this.pendingEOFill=!1,this.res=null,this.xobjs=null,this.commonObjs=t,this.objs=i,this.canvasFactory=n,this.filterFactory=o,this.groupStack=[],this.processingType3=null,this.baseTransform=null,this.baseTransformStack=[],this.groupLevel=0,this.smaskStack=[],this.smaskCounter=0,this.tempSMask=null,this.suspendedCtx=null,this.contentVisible=!0,this.markedContentStack=l||[],this.optionalContentConfig=r,this.cachedCanvases=new HVt(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=a,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.pageColors=d,this._cachedScaleForStroking=[-1,0],this._cachedGetSinglePixelWidth=null,this._cachedBitmapsMap=new Map}getObject(e,t=null){return typeof e=="string"?e.startsWith("g_")?this.commonObjs.get(e):this.objs.get(e):t}beginDrawing({transform:e,viewport:t,transparency:i=!1,background:n=null}){const o=this.ctx.canvas.width,r=this.ctx.canvas.height,l=this.ctx.fillStyle;if(this.ctx.fillStyle=n||"#ffffff",this.ctx.fillRect(0,0,o,r),this.ctx.fillStyle=l,i){const a=this.cachedCanvases.getCanvas("transparent",o,r);this.compositeCtx=this.ctx,this.transparentCanvas=a.canvas,this.ctx=a.context,this.ctx.save(),this.ctx.transform(...Ur(this.compositeCtx))}this.ctx.save(),FE(this.ctx),e&&(this.ctx.transform(...e),this.outputScaleX=e[0],this.outputScaleY=e[0]),this.ctx.transform(...t.transform),this.viewportScale=t.scale,this.baseTransform=Ur(this.ctx)}executeOperatorList(e,t,i,n){const o=e.argsArray,r=e.fnArray;let l=t||0;const a=o.length;if(a===l)return l;const d=a-l>Gfe&&typeof i=="function",c=d?Date.now()+jVt:0;let h=0;const u=this.commonObjs,m=this.objs;let p;for(;;){if(n!==void 0&&l===n.nextBreakPoint)return n.breakIt(l,i),l;if(p=r[l],p!==Im.dependency)this[p].apply(this,o[l]);else for(const g of o[l]){const f=g.startsWith("g_")?u:m;if(!f.has(g))return f.get(g,i),l}if(l++,l===a)return l;if(d&&++h>Gfe){if(Date.now()>c)return i(),l;h=0}}}endDrawing(){_(this,Ob,xie).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const e of this._cachedBitmapsMap.values()){for(const t of e.values())typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement&&(t.width=t.height=0);e.clear()}this._cachedBitmapsMap.clear(),_(this,Ob,Iie).call(this)}_scaleImage(e,t){const i=e.width??e.displayWidth,n=e.height??e.displayHeight;let o=Math.max(Math.hypot(t[0],t[1]),1),r=Math.max(Math.hypot(t[2],t[3]),1),l=i,a=n,d="prescale1",c,h;for(;o>2&&l>1||r>2&&a>1;){let u=l,m=a;o>2&&l>1&&(u=l>=16384?Math.floor(l/2)-1||1:Math.ceil(l/2),o/=l/u),r>2&&a>1&&(m=a>=16384?Math.floor(a/2)-1||1:Math.ceil(a)/2,r/=a/m),c=this.cachedCanvases.getCanvas(d,u,m),h=c.context,h.clearRect(0,0,u,m),h.drawImage(e,0,0,l,a,0,0,u,m),e=c.canvas,l=u,a=m,d=d==="prescale1"?"prescale2":"prescale1"}return{img:e,paintWidth:l,paintHeight:a}}_createMaskCanvas(e){const t=this.ctx,{width:i,height:n}=e,o=this.current.fillColor,r=this.current.patternFill,l=Ur(t);let a,d,c,h;if((e.bitmap||e.data)&&e.count>1){const w=e.bitmap||e.data.buffer;d=JSON.stringify(r?l:[l.slice(0,4),o]),a=this._cachedBitmapsMap.get(w),a||(a=new Map,this._cachedBitmapsMap.set(w,a));const Q=a.get(d);if(Q&&!r){const C=Math.round(Math.min(l[0],l[2])+l[4]),v=Math.round(Math.min(l[1],l[3])+l[5]);return{canvas:Q,offsetX:C,offsetY:v}}c=Q}c||(h=this.cachedCanvases.getCanvas("maskCanvas",i,n),_fe(h.context,e));let u=dn.transform(l,[1/i,0,0,-1/n,0,0]);u=dn.transform(u,[1,0,0,1,0,-n]);const[m,p,g,f]=dn.getAxialAlignedBoundingBox([0,0,i,n],u),b=Math.round(g-m)||1,U=Math.round(f-p)||1,S=this.cachedCanvases.getCanvas("fillCanvas",b,U),Z=S.context,R=m,y=p;Z.translate(-R,-y),Z.transform(...u),c||(c=this._scaleImage(h.canvas,Cp(Z)),c=c.img,a&&r&&a.set(d,c)),Z.imageSmoothingEnabled=zfe(Ur(Z),e.interpolate),UE(Z,c,0,0,c.width,c.height,0,0,i,n),Z.globalCompositeOperation="source-in";const N=dn.transform(Cp(Z),[1,0,0,1,-R,-y]);return Z.fillStyle=r?o.getPattern(t,this,N,bd.FILL):o,Z.fillRect(0,0,i,n),a&&!r&&(this.cachedCanvases.delete("fillCanvas"),a.set(d,S.canvas)),{canvas:S.canvas,offsetX:Math.round(R),offsetY:Math.round(y)}}setLineWidth(e){e!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=e,this.ctx.lineWidth=e}setLineCap(e){this.ctx.lineCap=qVt[e]}setLineJoin(e){this.ctx.lineJoin=$Vt[e]}setMiterLimit(e){this.ctx.miterLimit=e}setDash(e,t){const i=this.ctx;i.setLineDash!==void 0&&(i.setLineDash(e),i.lineDashOffset=t)}setRenderingIntent(e){}setFlatness(e){}setGState(e){for(const[t,i]of e)switch(t){case"LW":this.setLineWidth(i);break;case"LC":this.setLineCap(i);break;case"LJ":this.setLineJoin(i);break;case"ML":this.setMiterLimit(i);break;case"D":this.setDash(i[0],i[1]);break;case"RI":this.setRenderingIntent(i);break;case"FL":this.setFlatness(i);break;case"Font":this.setFont(i[0],i[1]);break;case"CA":this.current.strokeAlpha=i;break;case"ca":this.current.fillAlpha=i,this.ctx.globalAlpha=i;break;case"BM":this.ctx.globalCompositeOperation=i;break;case"SMask":this.current.activeSMask=i?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(i);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const e=this.inSMaskMode;this.current.activeSMask&&!e?this.beginSMaskMode():!this.current.activeSMask&&e&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const e=this.ctx.canvas.width,t=this.ctx.canvas.height,i="smaskGroupAt"+this.groupLevel,n=this.cachedCanvases.getCanvas(i,e,t);this.suspendedCtx=this.ctx,this.ctx=n.context;const o=this.ctx;o.setTransform(...Ur(this.suspendedCtx)),Ow(this.suspendedCtx,o),PVt(o,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),Ow(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(e){if(!this.current.activeSMask)return;e?(e[0]=Math.floor(e[0]),e[1]=Math.floor(e[1]),e[2]=Math.ceil(e[2]),e[3]=Math.ceil(e[3])):e=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const t=this.current.activeSMask,i=this.suspendedCtx;this.composeSMask(i,t,this.ctx,e),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(e,t,i,n){const o=n[0],r=n[1],l=n[2]-o,a=n[3]-r;l===0||a===0||(this.genericComposeSMask(t.context,i,l,a,t.subtype,t.backdrop,t.transferMap,o,r,t.offsetX,t.offsetY),e.save(),e.globalAlpha=1,e.globalCompositeOperation="source-over",e.setTransform(1,0,0,1,0,0),e.drawImage(i.canvas,0,0),e.restore())}genericComposeSMask(e,t,i,n,o,r,l,a,d,c,h){let u=e.canvas,m=a-c,p=d-h;if(r){const f=dn.makeHexColor(...r);if(m<0||p<0||m+i>u.width||p+n>u.height){const b=this.cachedCanvases.getCanvas("maskExtension",i,n),U=b.context;U.drawImage(u,-m,-p),U.globalCompositeOperation="destination-atop",U.fillStyle=f,U.fillRect(0,0,i,n),U.globalCompositeOperation="source-over",u=b.canvas,m=p=0}else{e.save(),e.globalAlpha=1,e.setTransform(1,0,0,1,0,0);const b=new Path2D;b.rect(m,p,i,n),e.clip(b),e.globalCompositeOperation="destination-atop",e.fillStyle=f,e.fillRect(m,p,i,n),e.restore()}}t.save(),t.globalAlpha=1,t.setTransform(1,0,0,1,0,0),o==="Alpha"&&l?t.filter=this.filterFactory.addAlphaFilter(l):o==="Luminosity"&&(t.filter=this.filterFactory.addLuminosityFilter(l));const g=new Path2D;g.rect(a,d,i,n),t.clip(g),t.globalCompositeOperation="destination-in",t.drawImage(u,m,p,i,n,a,d,i,n),t.restore()}save(){this.inSMaskMode?(Ow(this.ctx,this.suspendedCtx),this.suspendedCtx.save()):this.ctx.save();const e=this.current;this.stateStack.push(e),this.current=e.clone()}restore(){this.stateStack.length===0&&this.inSMaskMode&&this.endSMaskMode(),this.stateStack.length!==0&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),Ow(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(e,t,i,n,o,r){this.ctx.transform(e,t,i,n,o,r),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(e,t,i){const n=this.ctx,o=this.current;let r=o.x,l=o.y,a,d;const c=Ur(n),h=c[0]===0&&c[3]===0||c[1]===0&&c[2]===0,u=h?i.slice(0):null;for(let m=0,p=0,g=e.length;m<g;m++)switch(e[m]|0){case Im.rectangle:r=t[p++],l=t[p++];const f=t[p++],b=t[p++],U=r+f,S=l+b;n.moveTo(r,l),f===0||b===0?n.lineTo(U,S):(n.lineTo(U,l),n.lineTo(U,S),n.lineTo(r,S)),h||o.updateRectMinMax(c,[r,l,U,S]),n.closePath();break;case Im.moveTo:r=t[p++],l=t[p++],n.moveTo(r,l),h||o.updatePathMinMax(c,r,l);break;case Im.lineTo:r=t[p++],l=t[p++],n.lineTo(r,l),h||o.updatePathMinMax(c,r,l);break;case Im.curveTo:a=r,d=l,r=t[p+4],l=t[p+5],n.bezierCurveTo(t[p],t[p+1],t[p+2],t[p+3],r,l),o.updateCurvePathMinMax(c,a,d,t[p],t[p+1],t[p+2],t[p+3],r,l,u),p+=6;break;case Im.curveTo2:a=r,d=l,n.bezierCurveTo(r,l,t[p],t[p+1],t[p+2],t[p+3]),o.updateCurvePathMinMax(c,a,d,r,l,t[p],t[p+1],t[p+2],t[p+3],u),r=t[p+2],l=t[p+3],p+=4;break;case Im.curveTo3:a=r,d=l,r=t[p+2],l=t[p+3],n.bezierCurveTo(t[p],t[p+1],r,l,r,l),o.updateCurvePathMinMax(c,a,d,t[p],t[p+1],r,l,r,l,u),p+=4;break;case Im.closePath:n.closePath();break}h&&o.updateScalingPathMinMax(c,u),o.setCurrentPoint(r,l)}closePath(){this.ctx.closePath()}stroke(e=!0){const t=this.ctx,i=this.current.strokeColor;t.globalAlpha=this.current.strokeAlpha,this.contentVisible&&(typeof i=="object"&&i!=null&&i.getPattern?(t.save(),t.strokeStyle=i.getPattern(t,this,Cp(t),bd.STROKE),this.rescaleAndStroke(!1),t.restore()):this.rescaleAndStroke(!0)),e&&this.consumePath(this.current.getClippedPathBoundingBox()),t.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath(),this.stroke()}fill(e=!0){const t=this.ctx,i=this.current.fillColor,n=this.current.patternFill;let o=!1;n&&(t.save(),t.fillStyle=i.getPattern(t,this,Cp(t),bd.FILL),o=!0);const r=this.current.getClippedPathBoundingBox();this.contentVisible&&r!==null&&(this.pendingEOFill?(t.fill("evenodd"),this.pendingEOFill=!1):t.fill()),o&&t.restore(),e&&this.consumePath(r)}eoFill(){this.pendingEOFill=!0,this.fill()}fillStroke(){this.fill(!1),this.stroke(!1),this.consumePath()}eoFillStroke(){this.pendingEOFill=!0,this.fillStroke()}closeFillStroke(){this.closePath(),this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0,this.closePath(),this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=eWt}eoClip(){this.pendingClip=Ofe}beginText(){this.current.textMatrix=BQe,this.current.textMatrixScale=1,this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}endText(){const e=this.pendingTextPaths,t=this.ctx;if(e===void 0){t.beginPath();return}const i=new Path2D,n=t.getTransform().invertSelf();for(const{transform:o,x:r,y:l,fontSize:a,path:d}of e)i.addPath(d,new DOMMatrix(o).preMultiplySelf(n).translate(r,l).scale(a,-a));t.clip(i),t.beginPath(),delete this.pendingTextPaths}setCharSpacing(e){this.current.charSpacing=e}setWordSpacing(e){this.current.wordSpacing=e}setHScale(e){this.current.textHScale=e/100}setLeading(e){this.current.leading=-e}setFont(e,t){var i;const n=this.commonObjs.get(e),o=this.current;if(!n)throw new Error(`Can't find font for ${e}`);if(o.fontMatrix=n.fontMatrix||Fie,(o.fontMatrix[0]===0||o.fontMatrix[3]===0)&&Hn("Invalid font matrix for font "+e),t<0?(t=-t,o.fontDirection=-1):o.fontDirection=1,this.current.font=n,this.current.fontSize=t,n.isType3Font)return;const r=n.loadedName||"sans-serif",l=((i=n.systemFontInfo)==null?void 0:i.css)||`"${r}", ${n.fallbackName}`;let a="normal";n.black?a="900":n.bold&&(a="bold");const d=n.italic?"italic":"normal";let c=t;t<Efe?c=Efe:t>Dfe&&(c=Dfe),this.current.fontSizeScale=t/c,this.ctx.font=`${d} ${a} ${c}px ${l}`}setTextRenderingMode(e){this.current.textRenderingMode=e}setTextRise(e){this.current.textRise=e}moveText(e,t){this.current.x=this.current.lineX+=e,this.current.y=this.current.lineY+=t}setLeadingMoveText(e,t){this.setLeading(-t),this.moveText(e,t)}setTextMatrix(e,t,i,n,o,r){this.current.textMatrix=[e,t,i,n,o,r],this.current.textMatrixScale=Math.hypot(e,t),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(e,t,i,n,o){const r=this.ctx,l=this.current,a=l.font,d=l.textRenderingMode,c=l.fontSize/l.fontSizeScale,h=d&od.FILL_STROKE_MASK,u=!!(d&od.ADD_TO_PATH_FLAG),m=l.patternFill&&!a.missingFile,p=l.patternStroke&&!a.missingFile;let g;if((a.disableFontFace||u||m||p)&&(g=a.getPathGenerator(this.commonObjs,e)),a.disableFontFace||m||p){if(r.save(),r.translate(t,i),r.scale(c,-c),h===od.FILL||h===od.FILL_STROKE)if(n){const f=r.getTransform();r.setTransform(...n),r.fill(_(this,Ob,Eie).call(this,g,f,n))}else r.fill(g);if(h===od.STROKE||h===od.FILL_STROKE)if(o){const f=r.getTransform();r.setTransform(...o),r.stroke(_(this,Ob,Eie).call(this,g,f,o))}else r.lineWidth/=c,r.stroke(g);r.restore()}else(h===od.FILL||h===od.FILL_STROKE)&&r.fillText(e,t,i),(h===od.STROKE||h===od.FILL_STROKE)&&r.strokeText(e,t,i);u&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:Ur(r),x:t,y:i,fontSize:c,path:g})}get isFontSubpixelAAEnabled(){const{context:e}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);e.scale(1.5,1),e.fillText("I",0,10);const t=e.getImageData(0,0,10,10).data;let i=!1;for(let n=3;n<t.length;n+=4)if(t[n]>0&&t[n]<255){i=!0;break}return Vs(this,"isFontSubpixelAAEnabled",i)}showText(e){const t=this.current,i=t.font;if(i.isType3Font)return this.showType3Text(e);const n=t.fontSize;if(n===0)return;const o=this.ctx,r=t.fontSizeScale,l=t.charSpacing,a=t.wordSpacing,d=t.fontDirection,c=t.textHScale*d,h=e.length,u=i.vertical,m=u?1:-1,p=i.defaultVMetrics,g=n*t.fontMatrix[0],f=t.textRenderingMode===od.FILL&&!i.disableFontFace&&!t.patternFill;o.save(),o.transform(...t.textMatrix),o.translate(t.x,t.y+t.textRise),d>0?o.scale(c,-1):o.scale(c,1);let b,U;if(t.patternFill){o.save();const N=t.fillColor.getPattern(o,this,Cp(o),bd.FILL);b=Ur(o),o.restore(),o.fillStyle=N}if(t.patternStroke){o.save();const N=t.strokeColor.getPattern(o,this,Cp(o),bd.STROKE);U=Ur(o),o.restore(),o.strokeStyle=N}let S=t.lineWidth;const Z=t.textMatrixScale;if(Z===0||S===0){const N=t.textRenderingMode&od.FILL_STROKE_MASK;(N===od.STROKE||N===od.FILL_STROKE)&&(S=this.getSinglePixelWidth())}else S/=Z;if(r!==1&&(o.scale(r,r),S/=r),o.lineWidth=S,i.isInvalidPDFjsFont){const N=[];let w=0;for(const Q of e)N.push(Q.unicode),w+=Q.width;o.fillText(N.join(""),0,0),t.x+=w*g*c,o.restore(),this.compose();return}let R=0,y;for(y=0;y<h;++y){const N=e[y];if(typeof N=="number"){R+=m*N*n/1e3;continue}let w=!1;const Q=(N.isSpace?a:0)+l,C=N.fontChar,v=N.accent;let Y,J,k=N.width;if(u){const K=N.vmetric||p,de=-(N.vmetric?K[1]:k*.5)*g,ee=K[2]*g;k=K?-K[0]:k,Y=de/r,J=(R+ee)/r}else Y=R/r,J=0;if(i.remeasure&&k>0){const K=o.measureText(C).width*1e3/n*r;if(k<K&&this.isFontSubpixelAAEnabled){const de=k/K;w=!0,o.save(),o.scale(de,1),Y/=de}else k!==K&&(Y+=(k-K)/2e3*n/r)}if(this.contentVisible&&(N.isInFont||i.missingFile)){if(f&&!v)o.fillText(C,Y,J);else if(this.paintChar(C,Y,J,b,U),v){const K=Y+n*v.offset.x/r,de=J-n*v.offset.y/r;this.paintChar(v.fontChar,K,de,b,U)}}const E=u?k*g-Q*d:k*g+Q*d;R+=E,w&&o.restore()}u?t.y-=R:t.x+=R*c,o.restore(),this.compose()}showType3Text(e){const t=this.ctx,i=this.current,n=i.font,o=i.fontSize,r=i.fontDirection,l=n.vertical?1:-1,a=i.charSpacing,d=i.wordSpacing,c=i.textHScale*r,h=i.fontMatrix||Fie,u=e.length,m=i.textRenderingMode===od.INVISIBLE;let p,g,f,b;if(!(m||o===0)){for(this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,t.save(),t.transform(...i.textMatrix),t.translate(i.x,i.y),t.scale(c,r),p=0;p<u;++p){if(g=e[p],typeof g=="number"){b=l*g*o/1e3,this.ctx.translate(b,0),i.x+=b*c;continue}const U=(g.isSpace?d:0)+a,S=n.charProcOperatorList[g.operatorListId];if(!S){Hn(`Type3 character "${g.operatorListId}" is not available.`);continue}this.contentVisible&&(this.processingType3=g,this.save(),t.scale(o,o),t.transform(...h),this.executeOperatorList(S),this.restore()),f=dn.applyTransform([g.width,0],h)[0]*o+U,t.translate(f,0),i.x+=f*c}t.restore(),this.processingType3=null}}setCharWidth(e,t){}setCharWidthAndBounds(e,t,i,n,o,r){this.ctx.rect(i,n,o-i,r-n),this.ctx.clip(),this.endPath()}getColorN_Pattern(e){let t;if(e[0]==="TilingPattern"){const i=e[1],n=this.baseTransform||Ur(this.ctx),o={createCanvasGraphics:r=>new mMe(r,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};t=new zVt(e,i,this.ctx,o,n)}else t=this._getPattern(e[1],e[2]);return t}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments),this.current.patternStroke=!0}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(e,t,i){this.ctx.strokeStyle=this.current.strokeColor=dn.makeHexColor(e,t,i),this.current.patternStroke=!1}setStrokeTransparent(){this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(e,t,i){this.ctx.fillStyle=this.current.fillColor=dn.makeHexColor(e,t,i),this.current.patternFill=!1}setFillTransparent(){this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1}_getPattern(e,t=null){let i;return this.cachedPatterns.has(e)?i=this.cachedPatterns.get(e):(i=_Vt(this.getObject(e)),this.cachedPatterns.set(e,i)),t&&(i.matrix=t),i}shadingFill(e){if(!this.contentVisible)return;const t=this.ctx;this.save();const i=this._getPattern(e);t.fillStyle=i.getPattern(t,this,Cp(t),bd.SHADING);const n=Cp(t);if(n){const{width:o,height:r}=t.canvas,[l,a,d,c]=dn.getAxialAlignedBoundingBox([0,0,o,r],n);this.ctx.fillRect(l,a,d-l,c-a)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){tr("Should not call beginInlineImage")}beginImageData(){tr("Should not call beginImageData")}paintFormXObjectBegin(e,t){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),e&&this.transform(...e),this.baseTransform=Ur(this.ctx),t)){const i=t[2]-t[0],n=t[3]-t[1];this.ctx.rect(t[0],t[1],i,n),this.current.updateRectMinMax(Ur(this.ctx),t),this.clip(),this.endPath()}}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(e){if(!this.contentVisible)return;this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const t=this.ctx;e.isolated||aO("TODO: Support non-isolated groups."),e.knockout&&Hn("Knockout groups not supported.");const i=Ur(t);if(e.matrix&&t.transform(...e.matrix),!e.bbox)throw new Error("Bounding box is required.");let n=dn.getAxialAlignedBoundingBox(e.bbox,Ur(t));const o=[0,0,t.canvas.width,t.canvas.height];n=dn.intersect(n,o)||[0,0,0,0];const r=Math.floor(n[0]),l=Math.floor(n[1]),a=Math.max(Math.ceil(n[2])-r,1),d=Math.max(Math.ceil(n[3])-l,1);this.current.startNewPathAndClipBox([0,0,a,d]);let c="groupAt"+this.groupLevel;e.smask&&(c+="_smask_"+this.smaskCounter++%2);const h=this.cachedCanvases.getCanvas(c,a,d),u=h.context;u.translate(-r,-l),u.transform(...i),e.smask?this.smaskStack.push({canvas:h.canvas,context:u,offsetX:r,offsetY:l,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null,startTransformInverse:null}):(t.setTransform(1,0,0,1,0,0),t.translate(r,l),t.save()),Ow(t,u),this.ctx=u,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(t),this.groupLevel++}endGroup(e){if(!this.contentVisible)return;this.groupLevel--;const t=this.ctx,i=this.groupStack.pop();if(this.ctx=i,this.ctx.imageSmoothingEnabled=!1,e.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{this.ctx.restore();const n=Ur(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...n);const o=dn.getAxialAlignedBoundingBox([0,0,t.canvas.width,t.canvas.height],n);this.ctx.drawImage(t.canvas,0,0),this.ctx.restore(),this.compose(o)}}beginAnnotation(e,t,i,n,o){if(_(this,Ob,xie).call(this),FE(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),t){const r=t[2]-t[0],l=t[3]-t[1];if(o&&this.annotationCanvasMap){i=i.slice(),i[4]-=t[0],i[5]-=t[1],t=t.slice(),t[0]=t[1]=0,t[2]=r,t[3]=l;const[a,d]=dn.singularValueDecompose2dScale(Ur(this.ctx)),{viewportScale:c}=this,h=Math.ceil(r*this.outputScaleX*c),u=Math.ceil(l*this.outputScaleY*c);this.annotationCanvas=this.canvasFactory.create(h,u);const{canvas:m,context:p}=this.annotationCanvas;this.annotationCanvasMap.set(e,m),this.annotationCanvas.savedCtx=this.ctx,this.ctx=p,this.ctx.save(),this.ctx.setTransform(a,0,0,-d,0,l*d),FE(this.ctx)}else FE(this.ctx),this.endPath(),this.ctx.rect(t[0],t[1],r,l),this.ctx.clip(),this.ctx.beginPath()}this.current=new Xfe(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...i),this.transform(...n)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),_(this,Ob,Iie).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(e){if(!this.contentVisible)return;const t=e.count;e=this.getObject(e.data,e),e.count=t;const i=this.ctx,n=this.processingType3;if(n&&(n.compiled===void 0&&(n.compiled=KVt(e)),n.compiled)){n.compiled(i);return}const o=this._createMaskCanvas(e),r=o.canvas;i.save(),i.setTransform(1,0,0,1,0,0),i.drawImage(r,o.offsetX,o.offsetY),i.restore(),this.compose()}paintImageMaskXObjectRepeat(e,t,i=0,n=0,o,r){if(!this.contentVisible)return;e=this.getObject(e.data,e);const l=this.ctx;l.save();const a=Ur(l);l.transform(t,i,n,o,0,0);const d=this._createMaskCanvas(e);l.setTransform(1,0,0,1,d.offsetX-a[4],d.offsetY-a[5]);for(let c=0,h=r.length;c<h;c+=2){const u=dn.transform(a,[t,i,n,o,r[c],r[c+1]]),[m,p]=dn.applyTransform([0,0],u);l.drawImage(d.canvas,m,p)}l.restore(),this.compose()}paintImageMaskXObjectGroup(e){if(!this.contentVisible)return;const t=this.ctx,i=this.current.fillColor,n=this.current.patternFill;for(const o of e){const{data:r,width:l,height:a,transform:d}=o,c=this.cachedCanvases.getCanvas("maskCanvas",l,a),h=c.context;h.save();const u=this.getObject(r,o);_fe(h,u),h.globalCompositeOperation="source-in",h.fillStyle=n?i.getPattern(h,this,Cp(t),bd.FILL):i,h.fillRect(0,0,l,a),h.restore(),t.save(),t.transform(...d),t.scale(1,-1),UE(t,c.canvas,0,0,l,a,0,-1,1,1),t.restore()}this.compose()}paintImageXObject(e){if(!this.contentVisible)return;const t=this.getObject(e);if(!t){Hn("Dependent image isn't ready yet");return}this.paintInlineImageXObject(t)}paintImageXObjectRepeat(e,t,i,n){if(!this.contentVisible)return;const o=this.getObject(e);if(!o){Hn("Dependent image isn't ready yet");return}const r=o.width,l=o.height,a=[];for(let d=0,c=n.length;d<c;d+=2)a.push({transform:[t,0,0,i,n[d],n[d+1]],x:0,y:0,w:r,h:l});this.paintInlineImageXObjectGroup(o,a)}applyTransferMapsToCanvas(e){return this.current.transferMaps!=="none"&&(e.filter=this.current.transferMaps,e.drawImage(e.canvas,0,0),e.filter="none"),e.canvas}applyTransferMapsToBitmap(e){if(this.current.transferMaps==="none")return e.bitmap;const{bitmap:t,width:i,height:n}=e,o=this.cachedCanvases.getCanvas("inlineImage",i,n),r=o.context;return r.filter=this.current.transferMaps,r.drawImage(t,0,0),r.filter="none",o.canvas}paintInlineImageXObject(e){if(!this.contentVisible)return;const t=e.width,i=e.height,n=this.ctx;if(this.save(),!Sd){const{filter:l}=n;l!=="none"&&l!==""&&(n.filter="none")}n.scale(1/t,-1/i);let o;if(e.bitmap)o=this.applyTransferMapsToBitmap(e);else if(typeof HTMLElement=="function"&&e instanceof HTMLElement||!e.data)o=e;else{const l=this.cachedCanvases.getCanvas("inlineImage",t,i).context;Yfe(l,e),o=this.applyTransferMapsToCanvas(l)}const r=this._scaleImage(o,Cp(n));n.imageSmoothingEnabled=zfe(Ur(n),e.interpolate),UE(n,r.img,0,0,r.paintWidth,r.paintHeight,0,-i,t,i),this.compose(),this.restore()}paintInlineImageXObjectGroup(e,t){if(!this.contentVisible)return;const i=this.ctx;let n;if(e.bitmap)n=e.bitmap;else{const o=e.width,r=e.height,l=this.cachedCanvases.getCanvas("inlineImage",o,r).context;Yfe(l,e),n=this.applyTransferMapsToCanvas(l)}for(const o of t)i.save(),i.transform(...o.transform),i.scale(1,-1),UE(i,n,o.x,o.y,o.w,o.h,0,-1,1,1),i.restore();this.compose()}paintSolidColorImageMask(){this.contentVisible&&(this.ctx.fillRect(0,0,1,1),this.compose())}markPoint(e){}markPointProps(e,t){}beginMarkedContent(e){this.markedContentStack.push({visible:!0})}beginMarkedContentProps(e,t){e==="OC"?this.markedContentStack.push({visible:this.optionalContentConfig.isVisible(t)}):this.markedContentStack.push({visible:!0}),this.contentVisible=this.isContentVisible()}endMarkedContent(){this.markedContentStack.pop(),this.contentVisible=this.isContentVisible()}beginCompat(){}endCompat(){}consumePath(e){const t=this.current.isEmptyClip();this.pendingClip&&this.current.updateClipFromPath(),this.pendingClip||this.compose(e);const i=this.ctx;this.pendingClip&&(t||(this.pendingClip===Ofe?i.clip("evenodd"):i.clip()),this.pendingClip=null),this.current.startNewPathAndClipBox(this.current.clipBox),i.beginPath()}getSinglePixelWidth(){if(!this._cachedGetSinglePixelWidth){const e=Ur(this.ctx);if(e[1]===0&&e[2]===0)this._cachedGetSinglePixelWidth=1/Math.min(Math.abs(e[0]),Math.abs(e[3]));else{const t=Math.abs(e[0]*e[3]-e[2]*e[1]),i=Math.hypot(e[0],e[2]),n=Math.hypot(e[1],e[3]);this._cachedGetSinglePixelWidth=Math.max(i,n)/t}}return this._cachedGetSinglePixelWidth}getScaleForStroking(){if(this._cachedScaleForStroking[0]===-1){const{lineWidth:e}=this.current,{a:t,b:i,c:n,d:o}=this.ctx.getTransform();let r,l;if(i===0&&n===0){const a=Math.abs(t),d=Math.abs(o);if(a===d)if(e===0)r=l=1/a;else{const c=a*e;r=l=c<1?1/c:1}else if(e===0)r=1/a,l=1/d;else{const c=a*e,h=d*e;r=c<1?1/c:1,l=h<1?1/h:1}}else{const a=Math.abs(t*o-i*n),d=Math.hypot(t,i),c=Math.hypot(n,o);if(e===0)r=c/a,l=d/a;else{const h=e*a;r=c>h?c/h:1,l=d>h?d/h:1}}this._cachedScaleForStroking[0]=r,this._cachedScaleForStroking[1]=l}return this._cachedScaleForStroking}rescaleAndStroke(e){const{ctx:t}=this,{lineWidth:i}=this.current,[n,o]=this.getScaleForStroking();if(t.lineWidth=i||1,n===1&&o===1){t.stroke();return}const r=t.getLineDash();if(e&&t.save(),t.scale(n,o),r.length>0){const l=Math.max(n,o);t.setLineDash(r.map(a=>a/l)),t.lineDashOffset/=l}t.stroke(),e&&t.restore()}isContentVisible(){for(let e=this.markedContentStack.length-1;e>=0;e--)if(!this.markedContentStack[e].visible)return!1;return!0}};Ob=new WeakSet,xie=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},Iie=function(){if(this.pageColors){const s=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(s!=="none"){const e=this.ctx.filter;this.ctx.filter=s,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=e}}},Eie=function(s,e,t){const i=new Path2D;return i.addPath(s,new DOMMatrix(t).invertSelf().multiplySelf(e)),i};let cG=tWt;for(const s in Im)cG.prototype[s]!==void 0&&(cG.prototype[Im[s]]=cG.prototype[s]);var AE,ZE,SE;let _W=(AE=class{static get workerPort(){return A(this,ZE)}static set workerPort(s){if(!(typeof Worker<"u"&&s instanceof Worker)&&s!==null)throw new Error("Invalid `workerPort` type.");I(this,ZE,s)}static get workerSrc(){return A(this,SE)}static set workerSrc(s){if(typeof s!="string")throw new Error("Invalid `workerSrc` type.");I(this,SE,s)}},ZE=new WeakMap,SE=new WeakMap,O(AE,ZE,null),O(AE,SE,""),AE);var OV,hG;class iWt{constructor({parsedData:e,rawData:t}){O(this,OV),O(this,hG),I(this,OV,e),I(this,hG,t)}getRaw(){return A(this,hG)}get(e){return A(this,OV).get(e)??null}getAll(){return qle(A(this,OV))}has(e){return A(this,OV).has(e)}}OV=new WeakMap,hG=new WeakMap;const jV=Symbol("INTERNAL");var uG,mG,pG,rC;class nWt{constructor(e,{name:t,intent:i,usage:n,rbGroups:o}){O(this,uG,!1),O(this,mG,!1),O(this,pG,!1),O(this,rC,!0),I(this,uG,!!(e&Th.DISPLAY)),I(this,mG,!!(e&Th.PRINT)),this.name=t,this.intent=i,this.usage=n,this.rbGroups=o}get visible(){if(A(this,pG))return A(this,rC);if(!A(this,rC))return!1;const{print:e,view:t}=this.usage;return A(this,uG)?(t==null?void 0:t.viewState)!=="OFF":A(this,mG)?(e==null?void 0:e.printState)!=="OFF":!0}_setVisible(e,t,i=!1){e!==jV&&tr("Internal method `_setVisible` called."),I(this,pG,i),I(this,rC,t)}}uG=new WeakMap,mG=new WeakMap,pG=new WeakMap,rC=new WeakMap;var FZ,Jo,lC,aC,KY,Die;class sWt{constructor(e,t=Th.DISPLAY){if(O(this,KY),O(this,FZ,null),O(this,Jo,new Map),O(this,lC,null),O(this,aC,null),this.renderingIntent=t,this.name=null,this.creator=null,e!==null){this.name=e.name,this.creator=e.creator,I(this,aC,e.order);for(const i of e.groups)A(this,Jo).set(i.id,new nWt(t,i));if(e.baseState==="OFF")for(const i of A(this,Jo).values())i._setVisible(jV,!1);for(const i of e.on)A(this,Jo).get(i)._setVisible(jV,!0);for(const i of e.off)A(this,Jo).get(i)._setVisible(jV,!1);I(this,lC,this.getHash())}}isVisible(e){if(A(this,Jo).size===0)return!0;if(!e)return aO("Optional content group not defined."),!0;if(e.type==="OCG")return A(this,Jo).has(e.id)?A(this,Jo).get(e.id).visible:(Hn(`Optional content group not found: ${e.id}`),!0);if(e.type==="OCMD"){if(e.expression)return _(this,KY,Die).call(this,e.expression);if(!e.policy||e.policy==="AnyOn"){for(const t of e.ids){if(!A(this,Jo).has(t))return Hn(`Optional content group not found: ${t}`),!0;if(A(this,Jo).get(t).visible)return!0}return!1}else if(e.policy==="AllOn"){for(const t of e.ids){if(!A(this,Jo).has(t))return Hn(`Optional content group not found: ${t}`),!0;if(!A(this,Jo).get(t).visible)return!1}return!0}else if(e.policy==="AnyOff"){for(const t of e.ids){if(!A(this,Jo).has(t))return Hn(`Optional content group not found: ${t}`),!0;if(!A(this,Jo).get(t).visible)return!0}return!1}else if(e.policy==="AllOff"){for(const t of e.ids){if(!A(this,Jo).has(t))return Hn(`Optional content group not found: ${t}`),!0;if(A(this,Jo).get(t).visible)return!1}return!0}return Hn(`Unknown optional content policy ${e.policy}.`),!0}return Hn(`Unknown group type ${e.type}.`),!0}setVisibility(e,t=!0,i=!0){var n;const o=A(this,Jo).get(e);if(!o){Hn(`Optional content group not found: ${e}`);return}if(i&&t&&o.rbGroups.length)for(const r of o.rbGroups)for(const l of r)l!==e&&((n=A(this,Jo).get(l))==null||n._setVisible(jV,!1,!0));o._setVisible(jV,!!t,!0),I(this,FZ,null)}setOCGState({state:e,preserveRB:t}){let i;for(const n of e){switch(n){case"ON":case"OFF":case"Toggle":i=n;continue}const o=A(this,Jo).get(n);if(o)switch(i){case"ON":this.setVisibility(n,!0,t);break;case"OFF":this.setVisibility(n,!1,t);break;case"Toggle":this.setVisibility(n,!o.visible,t);break}}I(this,FZ,null)}get hasInitialVisibility(){return A(this,lC)===null||this.getHash()===A(this,lC)}getOrder(){return A(this,Jo).size?A(this,aC)?A(this,aC).slice():[...A(this,Jo).keys()]:null}getGroups(){return A(this,Jo).size>0?qle(A(this,Jo)):null}getGroup(e){return A(this,Jo).get(e)||null}getHash(){if(A(this,FZ)!==null)return A(this,FZ);const e=new $Qe;for(const[t,i]of A(this,Jo))e.update(`${t}:${i.visible}`);return I(this,FZ,e.hexdigest())}}FZ=new WeakMap,Jo=new WeakMap,lC=new WeakMap,aC=new WeakMap,KY=new WeakSet,Die=function(s){const e=s.length;if(e<2)return!0;const t=s[0];for(let i=1;i<e;i++){const n=s[i];let o;if(Array.isArray(n))o=_(this,KY,Die).call(this,n);else if(A(this,Jo).has(n))o=A(this,Jo).get(n).visible;else return Hn(`Optional content group not found: ${n}`),!0;switch(t){case"And":if(!o)return!1;break;case"Or":if(o)return!0;break;case"Not":return!o;default:return!0}}return t==="And"};class oWt{constructor(e,{disableRange:t=!1,disableStream:i=!1}){yl(e,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');const{length:n,initialData:o,progressiveDone:r,contentDispositionFilename:l}=e;if(this._queuedChunks=[],this._progressiveDone=r,this._contentDispositionFilename=l,(o==null?void 0:o.length)>0){const a=o instanceof Uint8Array&&o.byteLength===o.buffer.byteLength?o.buffer:new Uint8Array(o).buffer;this._queuedChunks.push(a)}this._pdfDataRangeTransport=e,this._isStreamingSupported=!i,this._isRangeSupported=!t,this._contentLength=n,this._fullRequestReader=null,this._rangeReaders=[],e.addRangeListener((a,d)=>{this._onReceiveData({begin:a,chunk:d})}),e.addProgressListener((a,d)=>{this._onProgress({loaded:a,total:d})}),e.addProgressiveReadListener(a=>{this._onReceiveData({chunk:a})}),e.addProgressiveDoneListener(()=>{this._onProgressiveDone()}),e.transportReady()}_onReceiveData({begin:e,chunk:t}){const i=t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength?t.buffer:new Uint8Array(t).buffer;if(e===void 0)this._fullRequestReader?this._fullRequestReader._enqueue(i):this._queuedChunks.push(i);else{const n=this._rangeReaders.some(function(o){return o._begin!==e?!1:(o._enqueue(i),!0)});yl(n,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var e;return((e=this._fullRequestReader)==null?void 0:e._loaded)??0}_onProgress(e){var t,i,n,o;e.total===void 0?(i=(t=this._rangeReaders[0])==null?void 0:t.onProgress)==null||i.call(t,{loaded:e.loaded}):(o=(n=this._fullRequestReader)==null?void 0:n.onProgress)==null||o.call(n,{loaded:e.loaded,total:e.total})}_onProgressiveDone(){var e;(e=this._fullRequestReader)==null||e.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(e){const t=this._rangeReaders.indexOf(e);t>=0&&this._rangeReaders.splice(t,1)}getFullReader(){yl(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const e=this._queuedChunks;return this._queuedChunks=null,new rWt(this,e,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const i=new lWt(this,e,t);return this._pdfDataRangeTransport.requestDataRange(e,t),this._rangeReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeReaders.slice(0))i.cancel(e);this._pdfDataRangeTransport.abort()}}class rWt{constructor(e,t,i=!1,n=null){this._stream=e,this._done=i||!1,this._filename=tae(n)?n:null,this._queuedChunks=t||[],this._loaded=0;for(const o of this._queuedChunks)this._loaded+=o.byteLength;this._requests=[],this._headersReady=Promise.resolve(),e._fullRequestReader=this,this.onProgress=null}_enqueue(e){this._done||(this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunks.push(e),this._loaded+=e.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class lWt{constructor(e,t,i){this._stream=e,this._begin=t,this._end=i,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(e){if(!this._done){if(this._requests.length===0)this._queuedChunk=e;else{this._requests.shift().resolve({value:e,done:!1});for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function aWt(s){let e=!0,t=i("filename\\*","i").exec(s);if(t){t=t[1];let c=l(t);return c=unescape(c),c=a(c),c=d(c),o(c)}if(t=r(s),t){const c=d(t);return o(c)}if(t=i("filename","i").exec(s),t){t=t[1];let c=l(t);return c=d(c),o(c)}function i(c,h){return new RegExp("(?:^|;)\\s*"+c+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',h)}function n(c,h){if(c){if(!/^[\x00-\xFF]+$/.test(h))return h;try{const u=new TextDecoder(c,{fatal:!0}),m=dO(h);h=u.decode(m),e=!1}catch{}}return h}function o(c){return e&&/[\x80-\xff]/.test(c)&&(c=n("utf-8",c),e&&(c=n("iso-8859-1",c))),c}function r(c){const h=[];let u;const m=i("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(u=m.exec(c))!==null;){let[,g,f,b]=u;if(g=parseInt(g,10),g in h){if(g===0)break;continue}h[g]=[f,b]}const p=[];for(let g=0;g<h.length&&g in h;++g){let[f,b]=h[g];b=l(b),f&&(b=unescape(b),g===0&&(b=a(b))),p.push(b)}return p.join("")}function l(c){if(c.startsWith('"')){const h=c.slice(1).split('\\"');for(let u=0;u<h.length;++u){const m=h[u].indexOf('"');m!==-1&&(h[u]=h[u].slice(0,m),h.length=u+1),h[u]=h[u].replaceAll(/\\(.)/g,"$1")}c=h.join('"')}return c}function a(c){const h=c.indexOf("'");if(h===-1)return c;const u=c.slice(0,h),m=c.slice(h+1).replace(/^[^']*'/,"");return n(u,m)}function d(c){return!c.startsWith("=?")||/[\x00-\x19\x80-\xff]/.test(c)?c:c.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g,function(h,u,m,p){if(m==="q"||m==="Q")return p=p.replaceAll("_"," "),p=p.replaceAll(/=([0-9a-fA-F]{2})/g,function(g,f){return String.fromCharCode(parseInt(f,16))}),n(u,p);try{p=atob(p)}catch{}return n(u,p)})}return""}function pMe(s,e){const t=new Headers;if(!s||!e||typeof e!="object")return t;for(const i in e){const n=e[i];n!==void 0&&t.append(i,n)}return t}function uO(s){try{return new URL(s).origin}catch{}return null}function gMe({responseHeaders:s,isHttp:e,rangeChunkSize:t,disableRange:i}){const n={allowRangeRequests:!1,suggestedLength:void 0},o=parseInt(s.get("Content-Length"),10);return!Number.isInteger(o)||(n.suggestedLength=o,o<=2*t)||i||!e||s.get("Accept-Ranges")!=="bytes"||(s.get("Content-Encoding")||"identity")!=="identity"||(n.allowRangeRequests=!0),n}function fMe(s){const e=s.get("Content-Disposition");if(e){let t=aWt(e);if(t.includes("%"))try{t=decodeURIComponent(t)}catch{}if(tae(t))return t}return null}function mO(s,e){return s===404||s===0&&e.startsWith("file:")?new Uv('Missing PDF "'+e+'".'):new _Y(`Unexpected server response (${s}) while retrieving PDF "${e}".`,s)}function bMe(s){return s===200||s===206}function UMe(s,e,t){return{method:"GET",headers:s,signal:t.signal,mode:"cors",credentials:e?"include":"same-origin",redirect:"follow"}}function FMe(s){return s instanceof Uint8Array?s.buffer:s instanceof ArrayBuffer?s:(Hn(`getArrayBuffer - unexpected data format: ${s}`),new Uint8Array(s).buffer)}class jfe{constructor(e){Rn(this,"_responseOrigin",null),this.source=e,this.isHttp=/^https?:/i.test(e.url),this.headers=pMe(this.isHttp,e.httpHeaders),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var e;return((e=this._fullRequestReader)==null?void 0:e._loaded)??0}getFullReader(){return yl(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new dWt(this),this._fullRequestReader}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const i=new cWt(this,e,t);return this._rangeRequestReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeRequestReaders.slice(0))i.cancel(e)}}class dWt{constructor(e){this._stream=e,this._reader=null,this._loaded=0,this._filename=null;const t=e.source;this._withCredentials=t.withCredentials||!1,this._contentLength=t.length,this._headersCapability=Promise.withResolvers(),this._disableRange=t.disableRange||!1,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!t.disableStream,this._isRangeSupported=!t.disableRange;const i=new Headers(e.headers),n=t.url;fetch(n,UMe(i,this._withCredentials,this._abortController)).then(o=>{if(e._responseOrigin=uO(o.url),!bMe(o.status))throw mO(o.status,n);this._reader=o.body.getReader(),this._headersCapability.resolve();const r=o.headers,{allowRangeRequests:l,suggestedLength:a}=gMe({responseHeaders:r,isHttp:e.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=l,this._contentLength=a||this._contentLength,this._filename=fMe(r),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new KF("Streaming is disabled."))}).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;await this._headersCapability.promise;const{value:t,done:i}=await this._reader.read();return i?{value:t,done:i}:(this._loaded+=t.byteLength,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded,total:this._contentLength}),{value:FMe(t),done:!1})}cancel(e){var t;(t=this._reader)==null||t.cancel(e),this._abortController.abort()}}class cWt{constructor(e,t,i){this._stream=e,this._reader=null,this._loaded=0;const n=e.source;this._withCredentials=n.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!n.disableStream,this._abortController=new AbortController;const o=new Headers(e.headers);o.append("Range",`bytes=${t}-${i-1}`);const r=n.url;fetch(r,UMe(o,this._withCredentials,this._abortController)).then(l=>{const a=uO(l.url);if(a!==e._responseOrigin)throw new Error(`Expected range response-origin "${a}" to match "${e._responseOrigin}".`);if(!bMe(l.status))throw mO(l.status,r);this._readCapability.resolve(),this._reader=l.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;await this._readCapability.promise;const{value:t,done:i}=await this._reader.read();return i?{value:t,done:i}:(this._loaded+=t.byteLength,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded}),{value:FMe(t),done:!1})}cancel(e){var t;(t=this._reader)==null||t.cancel(e),this._abortController.abort()}}const i4=200,n4=206;function hWt(s){const e=s.response;return typeof e!="string"?e:dO(e).buffer}class uWt{constructor({url:e,httpHeaders:t,withCredentials:i}){Rn(this,"_responseOrigin",null),this.url=e,this.isHttp=/^https?:/i.test(e),this.headers=pMe(this.isHttp,t),this.withCredentials=i||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}request(e){const t=new XMLHttpRequest,i=this.currXhrId++,n=this.pendingRequests[i]={xhr:t};t.open("GET",this.url),t.withCredentials=this.withCredentials;for(const[o,r]of this.headers)t.setRequestHeader(o,r);return this.isHttp&&"begin"in e&&"end"in e?(t.setRequestHeader("Range",`bytes=${e.begin}-${e.end-1}`),n.expectedStatus=n4):n.expectedStatus=i4,t.responseType="arraybuffer",yl(e.onError,"Expected `onError` callback to be provided."),t.onerror=()=>{e.onError(t.status)},t.onreadystatechange=this.onStateChange.bind(this,i),t.onprogress=this.onProgress.bind(this,i),n.onHeadersReceived=e.onHeadersReceived,n.onDone=e.onDone,n.onError=e.onError,n.onProgress=e.onProgress,t.send(null),i}onProgress(e,t){var i;const n=this.pendingRequests[e];n&&((i=n.onProgress)==null||i.call(n,t))}onStateChange(e,t){const i=this.pendingRequests[e];if(!i)return;const n=i.xhr;if(n.readyState>=2&&i.onHeadersReceived&&(i.onHeadersReceived(),delete i.onHeadersReceived),n.readyState!==4||!(e in this.pendingRequests))return;if(delete this.pendingRequests[e],n.status===0&&this.isHttp){i.onError(n.status);return}const o=n.status||i4;if(!(o===i4&&i.expectedStatus===n4)&&o!==i.expectedStatus){i.onError(n.status);return}const r=hWt(n);if(o===n4){const l=n.getResponseHeader("Content-Range"),a=/bytes (\d+)-(\d+)\/(\d+)/.exec(l);a?i.onDone({begin:parseInt(a[1],10),chunk:r}):(Hn('Missing or invalid "Content-Range" header.'),i.onError(0))}else r?i.onDone({begin:0,chunk:r}):i.onError(n.status)}getRequestXhr(e){return this.pendingRequests[e].xhr}isPendingRequest(e){return e in this.pendingRequests}abortRequest(e){const t=this.pendingRequests[e].xhr;delete this.pendingRequests[e],t.abort()}}class mWt{constructor(e){this._source=e,this._manager=new uWt(e),this._rangeChunkSize=e.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(e){const t=this._rangeRequestReaders.indexOf(e);t>=0&&this._rangeRequestReaders.splice(t,1)}getFullReader(){return yl(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new pWt(this._manager,this._source),this._fullRequestReader}getRangeReader(e,t){const i=new gWt(this._manager,e,t);return i.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeRequestReaders.slice(0))i.cancel(e)}}class pWt{constructor(e,t){this._manager=e,this._url=t.url,this._fullRequestId=e.request({onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._headersCapability=Promise.withResolvers(),this._disableRange=t.disableRange||!1,this._contentLength=t.length,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const e=this._fullRequestId,t=this._manager.getRequestXhr(e);this._manager._responseOrigin=uO(t.responseURL);const i=t.getAllResponseHeaders(),n=new Headers(i?i.trimStart().replace(/[^\S ]+$/,"").split(/[\r\n]+/).map(l=>{const[a,...d]=l.split(": ");return[a,d.join(": ")]}):[]),{allowRangeRequests:o,suggestedLength:r}=gMe({responseHeaders:n,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});o&&(this._isRangeSupported=!0),this._contentLength=r||this._contentLength,this._filename=fMe(n),this._isRangeSupported&&this._manager.abortRequest(e),this._headersCapability.resolve()}_onDone(e){if(e&&(this._requests.length>0?this._requests.shift().resolve({value:e.chunk,done:!1}):this._cachedChunks.push(e.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(e){this._storedError=mO(e,this._url),this._headersCapability.reject(this._storedError);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(e){var t;(t=this.onProgress)==null||t.call(this,{loaded:e.loaded,total:e.lengthComputable?e.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersCapability.promise}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this._headersCapability.reject(e);for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class gWt{constructor(e,t,i){this._manager=e,this._url=e.url,this._requestId=e.request({begin:t,end:i,onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_onHeadersReceived(){var e;const t=uO((e=this._manager.getRequestXhr(this._requestId))==null?void 0:e.responseURL);t!==this._manager._responseOrigin&&(this._storedError=new Error(`Expected range response-origin "${t}" to match "${this._manager._responseOrigin}".`),this._onError(0))}_close(){var e;(e=this.onClosed)==null||e.call(this,this)}_onDone(e){const t=e.chunk;this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunk=t,this._done=!0;for(const i of this._requests)i.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(e){this._storedError??(this._storedError=mO(e,this._url));for(const t of this._requests)t.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(e){var t;this.isStreamingSupported||(t=this.onProgress)==null||t.call(this,{loaded:e.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const fWt=/^[a-z][a-z0-9\-+.]+:/i;function bWt(s){if(fWt.test(s))return new URL(s);const e=process.getBuiltinModule("url");return new URL(e.pathToFileURL(s))}class UWt{constructor(e){this.source=e,this.url=bWt(e.url),yl(this.url.protocol==="file:","PDFNodeStream only supports file:// URLs."),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var e;return((e=this._fullRequestReader)==null?void 0:e._loaded)??0}getFullReader(){return yl(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=new FWt(this),this._fullRequestReader}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const i=new AWt(this,e,t);return this._rangeRequestReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeRequestReaders.slice(0))i.cancel(e)}}class FWt{constructor(e){this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null;const t=e.source;this._contentLength=t.length,this._loaded=0,this._filename=null,this._disableRange=t.disableRange||!1,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!t.disableStream,this._isRangeSupported=!t.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers();const i=process.getBuiltinModule("fs");i.promises.lstat(this._url).then(n=>{this._contentLength=n.size,this._setReadableStream(i.createReadStream(this._url)),this._headersCapability.resolve()},n=>{n.code==="ENOENT"&&(n=new Uv(`Missing PDF "${this._url}".`)),this._storedError=n,this._headersCapability.reject(n)})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();return t===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=t.length,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(t).buffer,done:!1})}cancel(e){if(!this._readableStream){this._error(e);return}this._readableStream.destroy(e)}_error(e){this._storedError=e,this._readCapability.resolve()}_setReadableStream(e){this._readableStream=e,e.on("readable",()=>{this._readCapability.resolve()}),e.on("end",()=>{e.destroy(),this._done=!0,this._readCapability.resolve()}),e.on("error",t=>{this._error(t)}),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new KF("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class AWt{constructor(e,t,i){this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const n=e.source;this._isStreamingSupported=!n.disableStream;const o=process.getBuiltinModule("fs");this._setReadableStream(o.createReadStream(this._url,{start:t,end:i-1}))}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();return t===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=t.length,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded}),{value:new Uint8Array(t).buffer,done:!1})}cancel(e){if(!this._readableStream){this._error(e);return}this._readableStream.destroy(e)}_error(e){this._storedError=e,this._readCapability.resolve()}_setReadableStream(e){this._readableStream=e,e.on("readable",()=>{this._readCapability.resolve()}),e.on("end",()=>{e.destroy(),this._done=!0,this._readCapability.resolve()}),e.on("error",t=>{this._error(t)}),this._storedError&&this._readableStream.destroy(this._storedError)}}const ZWt=1e5,Rc=30,SWt=.8;var Pfe,YA,Ah,NE,RE,_A,Bb,VE,WE,mV,jw,Pw,zA,Hw,yE,Kw,pV,QE,ME,kl,gV,fV,wE,OA,qw,bV,Hfe,Kfe,s4,N0,TE,o4,qfe,$fe;let Gie=(kl=class{constructor({textContentSource:s,container:e,viewport:t}){O(this,bV),O(this,YA,Promise.withResolvers()),O(this,Ah,null),O(this,NE,!1),O(this,RE,!!((Pfe=globalThis.FontInspector)!=null&&Pfe.enabled)),O(this,_A,null),O(this,Bb,null),O(this,VE,0),O(this,WE,0),O(this,mV,null),O(this,jw,null),O(this,Pw,0),O(this,zA,0),O(this,Hw,Object.create(null)),O(this,yE,[]),O(this,Kw,null),O(this,pV,[]),O(this,QE,new WeakMap),O(this,ME,null);var i;if(s instanceof ReadableStream)I(this,Kw,s);else if(typeof s=="object")I(this,Kw,new ReadableStream({start(a){a.enqueue(s),a.close()}}));else throw new Error('No "textContentSource" parameter specified.');I(this,Ah,I(this,jw,e)),I(this,zA,t.scale*(globalThis.devicePixelRatio||1)),I(this,Pw,t.rotation),I(this,Bb,{div:null,properties:null,ctx:null});const{pageWidth:n,pageHeight:o,pageX:r,pageY:l}=t.rawDims;I(this,ME,[1,0,0,-1,-r,l+o]),I(this,WE,n),I(this,VE,o),_(i=kl,N0,qfe).call(i),YN(e,t),A(this,YA).promise.finally(()=>{A(kl,qw).delete(this),I(this,Bb,null),I(this,Hw,null)}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:s,isFirefox:e}=pc.platform;return Vs(this,"fontFamilyMap",new Map([["sans-serif",`${s&&e?"Calibri, ":""}sans-serif`],["monospace",`${s&&e?"Lucida Console, ":""}monospace`]]))}render(){const s=()=>{A(this,mV).read().then(({value:e,done:t})=>{if(t){A(this,YA).resolve();return}A(this,_A)??I(this,_A,e.lang),Object.assign(A(this,Hw),e.styles),_(this,bV,Hfe).call(this,e.items),s()},A(this,YA).reject)};return I(this,mV,A(this,Kw).getReader()),A(kl,qw).add(this),s(),A(this,YA).promise}update({viewport:s,onBefore:e=null}){var t;const i=s.scale*(globalThis.devicePixelRatio||1),n=s.rotation;if(n!==A(this,Pw)&&(e==null||e(),I(this,Pw,n),YN(A(this,jw),{rotation:n})),i!==A(this,zA)){e==null||e(),I(this,zA,i);const o={div:null,properties:null,ctx:_(t=kl,N0,TE).call(t,A(this,_A))};for(const r of A(this,pV))o.properties=A(this,QE).get(r),o.div=r,_(this,bV,s4).call(this,o)}}cancel(){var s;const e=new KF("TextLayer task cancelled.");(s=A(this,mV))==null||s.cancel(e).catch(()=>{}),I(this,mV,null),A(this,YA).reject(e)}get textDivs(){return A(this,pV)}get textContentItemsStr(){return A(this,yE)}static cleanup(){if(!(A(this,qw).size>0)){A(this,gV).clear();for(const{canvas:s}of A(this,fV).values())s.remove();A(this,fV).clear()}}},YA=new WeakMap,Ah=new WeakMap,NE=new WeakMap,RE=new WeakMap,_A=new WeakMap,Bb=new WeakMap,VE=new WeakMap,WE=new WeakMap,mV=new WeakMap,jw=new WeakMap,Pw=new WeakMap,zA=new WeakMap,Hw=new WeakMap,yE=new WeakMap,Kw=new WeakMap,pV=new WeakMap,QE=new WeakMap,ME=new WeakMap,gV=new WeakMap,fV=new WeakMap,wE=new WeakMap,OA=new WeakMap,qw=new WeakMap,bV=new WeakSet,Hfe=function(s){var e,t;if(A(this,NE))return;(t=A(this,Bb)).ctx??(t.ctx=_(e=kl,N0,TE).call(e,A(this,_A)));const i=A(this,pV),n=A(this,yE);for(const o of s){if(i.length>ZWt){Hn("Ignoring additional textDivs for performance reasons."),I(this,NE,!0);return}if(o.str===void 0){if(o.type==="beginMarkedContentProps"||o.type==="beginMarkedContent"){const r=A(this,Ah);I(this,Ah,document.createElement("span")),A(this,Ah).classList.add("markedContent"),o.id!==null&&A(this,Ah).setAttribute("id",`${o.id}`),r.append(A(this,Ah))}else o.type==="endMarkedContent"&&I(this,Ah,A(this,Ah).parentNode);continue}n.push(o.str),_(this,bV,Kfe).call(this,o)}},Kfe=function(s){var e;const t=document.createElement("span"),i={angle:0,canvasWidth:0,hasText:s.str!=="",hasEOL:s.hasEOL,fontSize:0};A(this,pV).push(t);const n=dn.transform(A(this,ME),s.transform);let o=Math.atan2(n[1],n[0]);const r=A(this,Hw)[s.fontName];r.vertical&&(o+=Math.PI/2);let l=A(this,RE)&&r.fontSubstitution||r.fontFamily;l=kl.fontFamilyMap.get(l)||l;const a=Math.hypot(n[2],n[3]),d=a*_(e=kl,N0,$fe).call(e,l,A(this,_A));let c,h;o===0?(c=n[4],h=n[5]-d):(c=n[4]+d*Math.sin(o),h=n[5]-d*Math.cos(o));const u="calc(var(--scale-factor)*",m=t.style;A(this,Ah)===A(this,jw)?(m.left=`${(100*c/A(this,WE)).toFixed(2)}%`,m.top=`${(100*h/A(this,VE)).toFixed(2)}%`):(m.left=`${u}${c.toFixed(2)}px)`,m.top=`${u}${h.toFixed(2)}px)`),m.fontSize=`${u}${(A(kl,OA)*a).toFixed(2)}px)`,m.fontFamily=l,i.fontSize=a,t.setAttribute("role","presentation"),t.textContent=s.str,t.dir=s.dir,A(this,RE)&&(t.dataset.fontName=r.fontSubstitutionLoadedName||s.fontName),o!==0&&(i.angle=o*(180/Math.PI));let p=!1;if(s.str.length>1)p=!0;else if(s.str!==" "&&s.transform[0]!==s.transform[3]){const g=Math.abs(s.transform[0]),f=Math.abs(s.transform[3]);g!==f&&Math.max(g,f)/Math.min(g,f)>1.5&&(p=!0)}if(p&&(i.canvasWidth=r.vertical?s.height:s.width),A(this,QE).set(t,i),A(this,Bb).div=t,A(this,Bb).properties=i,_(this,bV,s4).call(this,A(this,Bb)),i.hasText&&A(this,Ah).append(t),i.hasEOL){const g=document.createElement("br");g.setAttribute("role","presentation"),A(this,Ah).append(g)}},s4=function(s){var e;const{div:t,properties:i,ctx:n}=s,{style:o}=t;let r="";if(A(kl,OA)>1&&(r=`scale(${1/A(kl,OA)})`),i.canvasWidth!==0&&i.hasText){const{fontFamily:l}=o,{canvasWidth:a,fontSize:d}=i;_(e=kl,N0,o4).call(e,n,d*A(this,zA),l);const{width:c}=n.measureText(t.textContent);c>0&&(r=`scaleX(${a*A(this,zA)/c}) ${r}`)}i.angle!==0&&(r=`rotate(${i.angle}deg) ${r}`),r.length>0&&(o.transform=r)},N0=new WeakSet,TE=function(s=null){let e=A(this,fV).get(s||(s=""));if(!e){const t=document.createElement("canvas");t.className="hiddenCanvasElement",t.lang=s,document.body.append(t),e=t.getContext("2d",{alpha:!1,willReadFrequently:!0}),A(this,fV).set(s,e),A(this,wE).set(e,{size:0,family:""})}return e},o4=function(s,e,t){const i=A(this,wE).get(s);e===i.size&&t===i.family||(s.font=`${e}px ${t}`,i.size=e,i.family=t)},qfe=function(){if(A(this,OA)!==null)return;const s=document.createElement("div");s.style.opacity=0,s.style.lineHeight=1,s.style.fontSize="1px",s.style.position="absolute",s.textContent="X",document.body.append(s),I(this,OA,s.getBoundingClientRect().height),s.remove()},$fe=function(s,e){const t=A(this,gV).get(s);if(t)return t;const i=_(this,N0,TE).call(this,e);i.canvas.width=i.canvas.height=Rc,_(this,N0,o4).call(this,i,Rc,s);const n=i.measureText("");let o=n.fontBoundingBoxAscent,r=Math.abs(n.fontBoundingBoxDescent);if(o){const d=o/(o+r);return A(this,gV).set(s,d),i.canvas.width=i.canvas.height=0,d}i.strokeStyle="red",i.clearRect(0,0,Rc,Rc),i.strokeText("g",0,0);let l=i.getImageData(0,0,Rc,Rc).data;r=0;for(let d=l.length-1-3;d>=0;d-=4)if(l[d]>0){r=Math.ceil(d/4/Rc);break}i.clearRect(0,0,Rc,Rc),i.strokeText("A",0,Rc),l=i.getImageData(0,0,Rc,Rc).data,o=0;for(let d=0,c=l.length;d<c;d+=4)if(l[d]>0){o=Rc-Math.floor(d/4/Rc);break}i.canvas.width=i.canvas.height=0;const a=o?o/(o+r):SWt;return A(this,gV).set(s,a),a},O(kl,N0),O(kl,gV,new Map),O(kl,fV,new Map),O(kl,wE,new WeakMap),O(kl,OA,null),O(kl,qw,new Set),kl);class Av{static textContent(e){const t=[],i={items:t,styles:Object.create(null)};function n(o){var r;if(!o)return;let l=null;const a=o.name;if(a==="#text")l=o.value;else if(Av.shouldBuildText(a))(r=o==null?void 0:o.attributes)!=null&&r.textContent?l=o.attributes.textContent:o.value&&(l=o.value);else return;if(l!==null&&t.push({str:l}),!!o.children)for(const d of o.children)n(d)}return n(e),i}static shouldBuildText(e){return!(e==="textarea"||e==="input"||e==="option"||e==="select")}}const NWt=65536,RWt=100,VWt=5e3,WWt=Sd?IVt:vVt,yWt=Sd?EVt:oMe,QWt=Sd?xVt:kVt,MWt=Sd?DVt:dMe;function wWt(s={}){typeof s=="string"||s instanceof URL?s={url:s}:(s instanceof ArrayBuffer||ArrayBuffer.isView(s))&&(s={data:s});const e=new BWt,{docId:t}=e,i=s.url?TWt(s.url):null,n=s.data?CWt(s.data):null,o=s.httpHeaders||null,r=s.withCredentials===!0,l=s.password??null,a=s.range instanceof SMe?s.range:null,d=Number.isInteger(s.rangeChunkSize)&&s.rangeChunkSize>0?s.rangeChunkSize:NWt;let c=s.worker instanceof gG?s.worker:null;const h=s.verbosity,u=typeof s.docBaseUrl=="string"&&!hO(s.docBaseUrl)?s.docBaseUrl:null,m=typeof s.cMapUrl=="string"?s.cMapUrl:null,p=s.cMapPacked!==!1,g=s.CMapReaderFactory||yWt,f=typeof s.standardFontDataUrl=="string"?s.standardFontDataUrl:null,b=s.StandardFontDataFactory||MWt,U=s.stopAtErrors!==!0,S=Number.isInteger(s.maxImageSize)&&s.maxImageSize>-1?s.maxImageSize:-1,Z=s.isEvalSupported!==!1,R=typeof s.isOffscreenCanvasSupported=="boolean"?s.isOffscreenCanvasSupported:!Sd,y=typeof s.isImageDecoderSupported=="boolean"?s.isImageDecoderSupported:!Sd&&(pc.platform.isFirefox||!globalThis.chrome),N=Number.isInteger(s.canvasMaxAreaInBytes)?s.canvasMaxAreaInBytes:-1,w=typeof s.disableFontFace=="boolean"?s.disableFontFace:Sd,Q=s.fontExtraProperties===!0,C=s.enableXfa===!0,v=s.ownerDocument||globalThis.document,Y=s.disableRange===!0,J=s.disableStream===!0,k=s.disableAutoFetch===!0,E=s.pdfBug===!0,K=s.CanvasFactory||WWt,de=s.FilterFactory||QWt,ee=s.enableHWA===!0,le=a?a.length:s.length??NaN,Fe=typeof s.useSystemFonts=="boolean"?s.useSystemFonts:!Sd&&!w,Ue=typeof s.useWorkerFetch=="boolean"?s.useWorkerFetch:g===oMe&&b===dMe&&m&&f&&OT(m,document.baseURI)&&OT(f,document.baseURI),ze=null;cVt(h);const Oe={canvasFactory:new K({ownerDocument:v,enableHWA:ee}),filterFactory:new de({docId:t,ownerDocument:v}),cMapReaderFactory:Ue?null:new g({baseUrl:m,isCompressed:p}),standardFontDataFactory:Ue?null:new b({baseUrl:f})};if(!c){const je={verbosity:h,port:_W.workerPort};c=je.port?gG.fromPort(je):new gG(je),e._worker=c}const Ie={docId:t,apiVersion:"4.10.38",data:n,password:l,disableAutoFetch:k,rangeChunkSize:d,length:le,docBaseUrl:u,enableXfa:C,evaluatorOptions:{maxImageSize:S,disableFontFace:w,ignoreErrors:U,isEvalSupported:Z,isOffscreenCanvasSupported:R,isImageDecoderSupported:y,canvasMaxAreaInBytes:N,fontExtraProperties:Q,useSystemFonts:Fe,cMapUrl:Ue?m:null,standardFontDataUrl:Ue?f:null}},at={disableFontFace:w,fontExtraProperties:Q,ownerDocument:v,pdfBug:E,styleElement:ze,loadingParams:{disableAutoFetch:k,enableXfa:C}};return c.promise.then(function(){if(e.destroyed)throw new Error("Loading aborted");if(c.destroyed)throw new Error("Worker was destroyed");const je=c.messageHandler.sendWithPromise("GetDocRequest",Ie,n?[n.buffer]:null);let Se;if(a)Se=new oWt(a,{disableRange:Y,disableStream:J});else if(!n){if(!i)throw new Error("getDocument - no `url` parameter provided.");let dt;if(Sd)if(OT(i)){if(typeof fetch>"u"||typeof Response>"u"||!("body"in Response.prototype))throw new Error("getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.");dt=jfe}else dt=UWt;else dt=OT(i)?jfe:mWt;Se=new dt({url:i,length:le,httpHeaders:o,withCredentials:r,rangeChunkSize:d,disableRange:Y,disableStream:J})}return je.then(dt=>{if(e.destroyed)throw new Error("Loading aborted");if(c.destroyed)throw new Error("Worker was destroyed");const Yt=new iC(t,dt,c.port),Ye=new xWt(Yt,e,Se,at,Oe);e._transport=Ye,Yt.send("Ready",null)})}).catch(e._capability.reject),e}function TWt(s){if(s instanceof URL)return s.href;try{return new URL(s,window.location).href}catch{if(Sd&&typeof s=="string")return s}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function CWt(s){if(Sd&&typeof Buffer<"u"&&s instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(s instanceof Uint8Array&&s.byteLength===s.buffer.byteLength)return s;if(typeof s=="string")return dO(s);if(s instanceof ArrayBuffer||ArrayBuffer.isView(s)||typeof s=="object"&&!isNaN(s==null?void 0:s.length))return new Uint8Array(s);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function ebe(s){return typeof s=="object"&&Number.isInteger(s==null?void 0:s.num)&&s.num>=0&&Number.isInteger(s==null?void 0:s.gen)&&s.gen>=0}var Jie;const AMe=class ZMe{constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId=`d${mc(ZMe,Jie)._++}`,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}async destroy(){var e,t,i,n;this.destroyed=!0;try{(e=this._worker)!=null&&e.port&&(this._worker._pendingDestroy=!0),await((t=this._transport)==null?void 0:t.destroy())}catch(o){throw(i=this._worker)!=null&&i.port&&delete this._worker._pendingDestroy,o}this._transport=null,(n=this._worker)==null||n.destroy(),this._worker=null}};Jie=new WeakMap,O(AMe,Jie,0);let BWt=AMe,SMe=class{constructor(s,e,t=!1,i=null){this.length=s,this.initialData=e,this.progressiveDone=t,this.contentDispositionFilename=i,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(s){this._rangeListeners.push(s)}addProgressListener(s){this._progressListeners.push(s)}addProgressiveReadListener(s){this._progressiveReadListeners.push(s)}addProgressiveDoneListener(s){this._progressiveDoneListeners.push(s)}onDataRange(s,e){for(const t of this._rangeListeners)t(s,e)}onDataProgress(s,e){this._readyCapability.promise.then(()=>{for(const t of this._progressListeners)t(s,e)})}onDataProgressiveRead(s){this._readyCapability.promise.then(()=>{for(const e of this._progressiveReadListeners)e(s)})}onDataProgressiveDone(){this._readyCapability.promise.then(()=>{for(const s of this._progressiveDoneListeners)s()})}transportReady(){this._readyCapability.resolve()}requestDataRange(s,e){tr("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}};class LWt{constructor(e,t){this._pdfInfo=e,this._transport=t}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return Vs(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(e){return this._transport.getPage(e)}getPageIndex(e){return this._transport.getPageIndex(e)}getDestinations(){return this._transport.getDestinations()}getDestination(e){return this._transport.getDestination(e)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:e="display"}={}){const{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getOptionalContentConfig(t)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(e=!1){return this._transport.startCleanup(e||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(e){return this._transport.cachedPageNumber(e)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}var AZ,TU,rg,zW,qY;class vWt{constructor(e,t,i,n=!1){O(this,rg),O(this,AZ,null),O(this,TU,!1),this._pageIndex=e,this._pageInfo=t,this._transport=i,this._stats=n?new ffe:null,this._pdfBug=n,this.commonObjs=i.commonObjs,this.objs=new NMe,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:e,rotation:t=this.rotate,offsetX:i=0,offsetY:n=0,dontFlip:o=!1}={}){return new wk({viewBox:this.view,userUnit:this.userUnit,scale:e,rotation:t,offsetX:i,offsetY:n,dontFlip:o})}getAnnotations({intent:e="display"}={}){const{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getAnnotations(this._pageIndex,t)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return Vs(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){var e;return((e=this._transport._htmlForXfa)==null?void 0:e.children[this._pageIndex])||null}render({canvasContext:e,viewport:t,intent:i="display",annotationMode:n=MU.ENABLE,transform:o=null,background:r=null,optionalContentConfigPromise:l=null,annotationCanvasMap:a=null,pageColors:d=null,printAnnotationStorage:c=null,isEditing:h=!1}){var u,m;(u=this._stats)==null||u.time("Overall");const p=this._transport.getRenderingIntent(i,n,c,h),{renderingIntent:g,cacheKey:f}=p;I(this,TU,!1),_(this,rg,qY).call(this),l||(l=this._transport.getOptionalContentConfig(g));let b=this._intentStates.get(f);b||(b=Object.create(null),this._intentStates.set(f,b)),b.streamReaderCancelTimeout&&(clearTimeout(b.streamReaderCancelTimeout),b.streamReaderCancelTimeout=null);const U=!!(g&Th.PRINT);b.displayReadyCapability||(b.displayReadyCapability=Promise.withResolvers(),b.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(m=this._stats)==null||m.time("Page Request"),this._pumpOperatorList(p));const S=y=>{var N;b.renderTasks.delete(Z),(this._maybeCleanupAfterRender||U)&&I(this,TU,!0),_(this,rg,zW).call(this,!U),y?(Z.capability.reject(y),this._abortOperatorList({intentState:b,reason:y instanceof Error?y:new Error(y)})):Z.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),(N=globalThis.Stats)!=null&&N.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},Z=new EWt({callback:S,params:{canvasContext:e,viewport:t,transform:o,background:r},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:a,operatorList:b.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!U,pdfBug:this._pdfBug,pageColors:d});(b.renderTasks||(b.renderTasks=new Set)).add(Z);const R=Z.task;return Promise.all([b.displayReadyCapability.promise,l]).then(([y,N])=>{var w;if(this.destroyed){S();return}if((w=this._stats)==null||w.time("Rendering"),!(N.renderingIntent&g))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");Z.initializeGraphics({transparency:y,optionalContentConfig:N}),Z.operatorListChanged()}).catch(S),R}getOperatorList({intent:e="display",annotationMode:t=MU.ENABLE,printAnnotationStorage:i=null,isEditing:n=!1}={}){var o;function r(){a.operatorList.lastChunk&&(a.opListReadCapability.resolve(a.operatorList),a.renderTasks.delete(d))}const l=this._transport.getRenderingIntent(e,t,i,n,!0);let a=this._intentStates.get(l.cacheKey);a||(a=Object.create(null),this._intentStates.set(l.cacheKey,a));let d;return a.opListReadCapability||(d=Object.create(null),d.operatorListChanged=r,a.opListReadCapability=Promise.withResolvers(),(a.renderTasks||(a.renderTasks=new Set)).add(d),a.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(o=this._stats)==null||o.time("Page Request"),this._pumpOperatorList(l)),a.opListReadCapability.promise}streamTextContent({includeMarkedContent:e=!1,disableNormalization:t=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:e===!0,disableNormalization:t===!0},{highWaterMark:100,size(i){return i.items.length}})}getTextContent(e={}){if(this._transport._htmlForXfa)return this.getXfa().then(i=>Av.textContent(i));const t=this.streamTextContent(e);return new Promise(function(i,n){function o(){r.read().then(function({value:a,done:d}){if(d){i(l);return}l.lang??(l.lang=a.lang),Object.assign(l.styles,a.styles),l.items.push(...a.items),o()},n)}const r=t.getReader(),l={items:[],styles:Object.create(null),lang:null};o()})}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const e=[];for(const t of this._intentStates.values())if(this._abortOperatorList({intentState:t,reason:new Error("Page was destroyed."),force:!0}),!t.opListReadCapability)for(const i of t.renderTasks)e.push(i.completed),i.cancel();return this.objs.clear(),I(this,TU,!1),_(this,rg,qY).call(this),Promise.all(e)}cleanup(e=!1){I(this,TU,!0);const t=_(this,rg,zW).call(this,!1);return e&&t&&this._stats&&(this._stats=new ffe),t}_startRenderPage(e,t){var i,n;const o=this._intentStates.get(t);o&&((i=this._stats)==null||i.timeEnd("Page Request"),(n=o.displayReadyCapability)==null||n.resolve(e))}_renderPageChunk(e,t){for(let i=0,n=e.length;i<n;i++)t.operatorList.fnArray.push(e.fnArray[i]),t.operatorList.argsArray.push(e.argsArray[i]);t.operatorList.lastChunk=e.lastChunk,t.operatorList.separateAnnots=e.separateAnnots;for(const i of t.renderTasks)i.operatorListChanged();e.lastChunk&&_(this,rg,zW).call(this,!0)}_pumpOperatorList({renderingIntent:e,cacheKey:t,annotationStorageSerializable:i,modifiedIds:n}){const{map:o,transfer:r}=i,l=this._transport.messageHandler.sendWithStream("GetOperatorList",{pageIndex:this._pageIndex,intent:e,cacheKey:t,annotationStorage:o,modifiedIds:n},r).getReader(),a=this._intentStates.get(t);a.streamReader=l;const d=()=>{l.read().then(({value:c,done:h})=>{if(h){a.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(c,a),d())},c=>{if(a.streamReader=null,!this._transport.destroyed){if(a.operatorList){a.operatorList.lastChunk=!0;for(const h of a.renderTasks)h.operatorListChanged();_(this,rg,zW).call(this,!0)}if(a.displayReadyCapability)a.displayReadyCapability.reject(c);else if(a.opListReadCapability)a.opListReadCapability.reject(c);else throw c}})};d()}_abortOperatorList({intentState:e,reason:t,force:i=!1}){if(e.streamReader){if(e.streamReaderCancelTimeout&&(clearTimeout(e.streamReaderCancelTimeout),e.streamReaderCancelTimeout=null),!i){if(e.renderTasks.size>0)return;if(t instanceof eae){let n=RWt;t.extraDelay>0&&t.extraDelay<1e3&&(n+=t.extraDelay),e.streamReaderCancelTimeout=setTimeout(()=>{e.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:e,reason:t,force:!0})},n);return}}if(e.streamReader.cancel(new KF(t.message)).catch(()=>{}),e.streamReader=null,!this._transport.destroyed){for(const[n,o]of this._intentStates)if(o===e){this._intentStates.delete(n);break}this.cleanup()}}}get stats(){return this._stats}}AZ=new WeakMap,TU=new WeakMap,rg=new WeakSet,zW=function(s=!1){if(_(this,rg,qY).call(this),!A(this,TU)||this.destroyed)return!1;if(s)return I(this,AZ,setTimeout(()=>{I(this,AZ,null),_(this,rg,zW).call(this,!1)},VWt)),!1;for(const{renderTasks:e,operatorList:t}of this._intentStates.values())if(e.size>0||!t.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),I(this,TU,!1),!0},qY=function(){A(this,AZ)&&(clearTimeout(A(this,AZ)),I(this,AZ,null))};var jb,Xie;class kWt{constructor(){O(this,jb,new Map),O(this,Xie,Promise.resolve())}postMessage(e,t){const i={data:structuredClone(e,t?{transfer:t}:null)};A(this,Xie).then(()=>{for(const[n]of A(this,jb))n.call(this,i)})}addEventListener(e,t,i=null){let n=null;if((i==null?void 0:i.signal)instanceof AbortSignal){const{signal:o}=i;if(o.aborted){Hn("LoopbackPort - cannot use an `aborted` signal.");return}const r=()=>this.removeEventListener(e,t);n=()=>o.removeEventListener("abort",r),o.addEventListener("abort",r)}A(this,jb).set(t,n)}removeEventListener(e,t){const i=A(this,jb).get(t);i==null||i(),A(this,jb).delete(t)}terminate(){for(const[,e]of A(this,jb))e==null||e();A(this,jb).clear()}}jb=new WeakMap,Xie=new WeakMap;var yr,r4,UV,jA,$w,CE,eT,BE;let gG=(yr=class{constructor({name:s=null,port:e=null,verbosity:t=hVt()}={}){O(this,$w);var i;if(this.name=s,this.destroyed=!1,this.verbosity=t,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,e){if((i=A(yr,jA))!=null&&i.has(e))throw new Error("Cannot use more than one PDFWorker per port.");(A(yr,jA)||I(yr,jA,new WeakMap)).set(e,this),this._initializeFromPort(e);return}this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(s){this._port=s,this._messageHandler=new iC("main","worker",s),this._messageHandler.on("ready",function(){}),_(this,$w,CE).call(this)}_initialize(){if(A(yr,UV)||A(yr,eT,BE)){this._setupFakeWorker();return}let{workerSrc:s}=yr;try{yr._isSameOrigin(window.location.href,s)||(s=yr._createCDNWrapper(new URL(s,window.location).href));const e=new Worker(s,{type:"module"}),t=new iC("main","worker",e),i=()=>{n.abort(),t.destroy(),e.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},n=new AbortController;e.addEventListener("error",()=>{this._webWorker||i()},{signal:n.signal}),t.on("test",r=>{if(n.abort(),this.destroyed||!r){i();return}this._messageHandler=t,this._port=e,this._webWorker=e,_(this,$w,CE).call(this)}),t.on("ready",r=>{if(n.abort(),this.destroyed){i();return}try{o()}catch{this._setupFakeWorker()}});const o=()=>{const r=new Uint8Array;t.send("test",r,[r.buffer])};o();return}catch{aO("The worker has been disabled.")}this._setupFakeWorker()}_setupFakeWorker(){A(yr,UV)||(Hn("Setting up fake worker."),I(yr,UV,!0)),yr._setupFakeWorkerGlobal.then(s=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const e=new kWt;this._port=e;const t=`fake${mc(yr,r4)._++}`,i=new iC(t+"_worker",t,e);s.setup(i,e),this._messageHandler=new iC(t,t+"_worker",e),_(this,$w,CE).call(this)}).catch(s=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${s.message}".`))})}destroy(){var s,e,t;this.destroyed=!0,(s=this._webWorker)==null||s.terminate(),this._webWorker=null,(e=A(yr,jA))==null||e.delete(this._port),this._port=null,(t=this._messageHandler)==null||t.destroy(),this._messageHandler=null}static fromPort(s){var e;if(!(s!=null&&s.port))throw new Error("PDFWorker.fromPort - invalid method signature.");const t=(e=A(this,jA))==null?void 0:e.get(s.port);if(t){if(t._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return t}return new yr(s)}static get workerSrc(){if(_W.workerSrc)return _W.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return Vs(this,"_setupFakeWorkerGlobal",(async()=>A(this,eT,BE)?A(this,eT,BE):(await ii(()=>import(this.workerSrc),[],import.meta.url)).WorkerMessageHandler)())}},r4=new WeakMap,UV=new WeakMap,jA=new WeakMap,$w=new WeakSet,CE=function(){this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})},eT=new WeakSet,BE=function(){var s;try{return((s=globalThis.pdfjsWorker)==null?void 0:s.WorkerMessageHandler)||null}catch{return null}},O(yr,eT),O(yr,r4,0),O(yr,UV,!1),O(yr,jA),Sd&&(I(yr,UV,!0),_W.workerSrc||(_W.workerSrc="./pdf.worker.mjs")),yr._isSameOrigin=(s,e)=>{let t;try{if(t=new URL(s),!t.origin||t.origin==="null")return!1}catch{return!1}const i=new URL(e,t);return t.origin===i.origin},yr._createCDNWrapper=s=>{const e=`await import("${s}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))},yr);var CU,T0,dC,cC,Pb,PV,hC;class xWt{constructor(e,t,i,n,o){O(this,PV),O(this,CU,new Map),O(this,T0,new Map),O(this,dC,new Map),O(this,cC,new Map),O(this,Pb,null),this.messageHandler=e,this.loadingTask=t,this.commonObjs=new NMe,this.fontLoader=new BVt({ownerDocument:n.ownerDocument,styleElement:n.styleElement}),this.loadingParams=n.loadingParams,this._params=n,this.canvasFactory=o.canvasFactory,this.filterFactory=o.filterFactory,this.cMapReaderFactory=o.cMapReaderFactory,this.standardFontDataFactory=o.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=i,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.setupMessageHandler()}get annotationStorage(){return Vs(this,"annotationStorage",new sae)}getRenderingIntent(e,t=MU.ENABLE,i=null,n=!1,o=!1){let r=Th.DISPLAY,l=Cie;switch(e){case"any":r=Th.ANY;break;case"display":break;case"print":r=Th.PRINT;break;default:Hn(`getRenderingIntent - invalid intent: ${e}`)}const a=r&Th.PRINT&&i instanceof tMe?i:this.annotationStorage;switch(t){case MU.DISABLE:r+=Th.ANNOTATIONS_DISABLE;break;case MU.ENABLE:break;case MU.ENABLE_FORMS:r+=Th.ANNOTATIONS_FORMS;break;case MU.ENABLE_STORAGE:r+=Th.ANNOTATIONS_STORAGE,l=a.serializable;break;default:Hn(`getRenderingIntent - invalid annotationMode: ${t}`)}n&&(r+=Th.IS_EDITING),o&&(r+=Th.OPLIST);const{ids:d,hash:c}=a.modifiedIds,h=[r,l.hash,c];return{renderingIntent:r,cacheKey:h.join("_"),annotationStorageSerializable:l,modifiedIds:d}}destroy(){var e;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),(e=A(this,Pb))==null||e.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const n of A(this,T0).values())t.push(n._destroy());A(this,T0).clear(),A(this,dC).clear(),A(this,cC).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const i=this.messageHandler.sendWithPromise("Terminate",null);return t.push(i),Promise.all(t).then(()=>{var n,o;this.commonObjs.clear(),this.fontLoader.clear(),A(this,CU).clear(),this.filterFactory.destroy(),Gie.cleanup(),(n=this._networkStream)==null||n.cancelAllRequests(new KF("Worker was terminated.")),(o=this.messageHandler)==null||o.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:e,loadingTask:t}=this;e.on("GetReader",(i,n)=>{yl(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=o=>{this._lastProgress={loaded:o.loaded,total:o.total}},n.onPull=()=>{this._fullReader.read().then(function({value:o,done:r}){if(r){n.close();return}yl(o instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),n.enqueue(new Uint8Array(o),1,[o])}).catch(o=>{n.error(o)})},n.onCancel=o=>{this._fullReader.cancel(o),n.ready.catch(r=>{if(!this.destroyed)throw r})}}),e.on("ReaderHeadersReady",async i=>{var n;await this._fullReader.headersReady;const{isStreamingSupported:o,isRangeSupported:r,contentLength:l}=this._fullReader;return(!o||!r)&&(this._lastProgress&&((n=t.onProgress)==null||n.call(t,this._lastProgress)),this._fullReader.onProgress=a=>{var d;(d=t.onProgress)==null||d.call(t,{loaded:a.loaded,total:a.total})}),{isStreamingSupported:o,isRangeSupported:r,contentLength:l}}),e.on("GetRangeReader",(i,n)=>{yl(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const o=this._networkStream.getRangeReader(i.begin,i.end);if(!o){n.close();return}n.onPull=()=>{o.read().then(function({value:r,done:l}){if(l){n.close();return}yl(r instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),n.enqueue(new Uint8Array(r),1,[r])}).catch(r=>{n.error(r)})},n.onCancel=r=>{o.cancel(r),n.ready.catch(l=>{if(!this.destroyed)throw l})}}),e.on("GetDoc",({pdfInfo:i})=>{this._numPages=i.numPages,this._htmlForXfa=i.htmlForXfa,delete i.htmlForXfa,t._capability.resolve(new LWt(i,this))}),e.on("DocException",i=>{t._capability.reject(Bc(i))}),e.on("PasswordRequest",i=>{I(this,Pb,Promise.withResolvers());try{if(!t.onPassword)throw Bc(i);const n=o=>{o instanceof Error?A(this,Pb).reject(o):A(this,Pb).resolve({password:o})};t.onPassword(n,i.code)}catch(n){A(this,Pb).reject(n)}return A(this,Pb).promise}),e.on("DataLoaded",i=>{var n;(n=t.onProgress)==null||n.call(t,{loaded:i.length,total:i.length}),this.downloadInfoCapability.resolve(i)}),e.on("StartRenderPage",i=>{this.destroyed||A(this,T0).get(i.pageIndex)._startRenderPage(i.transparency,i.cacheKey)}),e.on("commonobj",([i,n,o])=>{var r;if(this.destroyed||this.commonObjs.has(i))return null;switch(n){case"Font":const{disableFontFace:l,fontExtraProperties:a,pdfBug:d}=this._params;if("error"in o){const m=o.error;Hn(`Error during font loading: ${m}`),this.commonObjs.resolve(i,m);break}const c=d&&(r=globalThis.FontInspector)!=null&&r.enabled?(m,p)=>globalThis.FontInspector.fontAdded(m,p):null,h=new LVt(o,{disableFontFace:l,fontExtraProperties:a,inspectFont:c});this.fontLoader.bind(h).catch(()=>e.sendWithPromise("FontFallback",{id:i})).finally(()=>{!a&&h.data&&(h.data=null),this.commonObjs.resolve(i,h)});break;case"CopyLocalImage":const{imageRef:u}=o;yl(u,"The imageRef must be defined.");for(const m of A(this,T0).values())for(const[,p]of m.objs)if((p==null?void 0:p.ref)===u)return p.dataLen?(this.commonObjs.resolve(i,structuredClone(p)),p.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(i,o);break;default:throw new Error(`Got unknown common object type ${n}`)}return null}),e.on("obj",([i,n,o,r])=>{var l;if(this.destroyed)return;const a=A(this,T0).get(n);if(!a.objs.has(i)){if(a._intentStates.size===0){(l=r==null?void 0:r.bitmap)==null||l.close();return}switch(o){case"Image":a.objs.resolve(i,r),(r==null?void 0:r.dataLen)>rVt&&(a._maybeCleanupAfterRender=!0);break;case"Pattern":a.objs.resolve(i,r);break;default:throw new Error(`Got unknown object type ${o}`)}}}),e.on("DocProgress",i=>{var n;this.destroyed||(n=t.onProgress)==null||n.call(t,{loaded:i.loaded,total:i.total})}),e.on("FetchBuiltInCMap",async i=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.cMapReaderFactory)throw new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.");return this.cMapReaderFactory.fetch(i)}),e.on("FetchStandardFontData",async i=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.standardFontDataFactory)throw new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.");return this.standardFontDataFactory.fetch(i)})}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var e;this.annotationStorage.size<=0&&Hn("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfer:i}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:((e=this._fullReader)==null?void 0:e.filename)??null},i).finally(()=>{this.annotationStorage.resetModified()})}getPage(e){if(!Number.isInteger(e)||e<=0||e>this._numPages)return Promise.reject(new Error("Invalid page request."));const t=e-1,i=A(this,dC).get(t);if(i)return i;const n=this.messageHandler.sendWithPromise("GetPage",{pageIndex:t}).then(o=>{if(this.destroyed)throw new Error("Transport destroyed");o.refStr&&A(this,cC).set(o.refStr,e);const r=new vWt(t,o,this,this._params.pdfBug);return A(this,T0).set(t,r),r});return A(this,dC).set(t,n),n}getPageIndex(e){return ebe(e)?this.messageHandler.sendWithPromise("GetPageIndex",{num:e.num,gen:e.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(e,t){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:e,intent:t})}getFieldObjects(){return _(this,PV,hC).call(this,"GetFieldObjects")}hasJSActions(){return _(this,PV,hC).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(e){return typeof e!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:e})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return _(this,PV,hC).call(this,"GetDocJSActions")}getPageJSActions(e){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:e})}getStructTree(e){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:e})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(e){return _(this,PV,hC).call(this,"GetOptionalContentConfig").then(t=>new sWt(t,e))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const e="GetMetadata",t=A(this,CU).get(e);if(t)return t;const i=this.messageHandler.sendWithPromise(e,null).then(n=>{var o,r;return{info:n[0],metadata:n[1]?new iWt(n[1]):null,contentDispositionFilename:((o=this._fullReader)==null?void 0:o.filename)??null,contentLength:((r=this._fullReader)==null?void 0:r.contentLength)??null}});return A(this,CU).set(e,i),i}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(e=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of A(this,T0).values())if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`);this.commonObjs.clear(),e||this.fontLoader.clear(),A(this,CU).clear(),this.filterFactory.destroy(!0),Gie.cleanup()}}cachedPageNumber(e){if(!ebe(e))return null;const t=e.gen===0?`${e.num}R`:`${e.num}R${e.gen}`;return A(this,cC).get(t)??null}}CU=new WeakMap,T0=new WeakMap,dC=new WeakMap,cC=new WeakMap,Pb=new WeakMap,PV=new WeakSet,hC=function(s,e=null){const t=A(this,CU).get(s);if(t)return t;const i=this.messageHandler.sendWithPromise(s,e);return A(this,CU).set(s,i),i};const uC=Symbol("INITIAL_DATA");var Fu,fG,Yie;class NMe{constructor(){O(this,fG),O(this,Fu,Object.create(null))}get(e,t=null){if(t){const n=_(this,fG,Yie).call(this,e);return n.promise.then(()=>t(n.data)),null}const i=A(this,Fu)[e];if(!i||i.data===uC)throw new Error(`Requesting object that isn't resolved yet ${e}.`);return i.data}has(e){const t=A(this,Fu)[e];return!!t&&t.data!==uC}delete(e){const t=A(this,Fu)[e];return!t||t.data===uC?!1:(delete A(this,Fu)[e],!0)}resolve(e,t=null){const i=_(this,fG,Yie).call(this,e);i.data=t,i.resolve()}clear(){var e;for(const t in A(this,Fu)){const{data:i}=A(this,Fu)[t];(e=i==null?void 0:i.bitmap)==null||e.close()}I(this,Fu,Object.create(null))}*[Symbol.iterator](){for(const e in A(this,Fu)){const{data:t}=A(this,Fu)[e];t!==uC&&(yield[e,t])}}}Fu=new WeakMap,fG=new WeakSet,Yie=function(s){var e;return(e=A(this,Fu))[s]||(e[s]={...Promise.withResolvers(),data:uC})};var ZZ;class IWt{constructor(e){O(this,ZZ,null),I(this,ZZ,e),this.onContinue=null}get promise(){return A(this,ZZ).capability.promise}cancel(e=0){A(this,ZZ).cancel(null,e)}get separateAnnots(){const{separateAnnots:e}=A(this,ZZ).operatorList;if(!e)return!1;const{annotationCanvasMap:t}=A(this,ZZ);return e.form||e.canvas&&(t==null?void 0:t.size)>0}}ZZ=new WeakMap;var SZ,OW;const RMe=class mC{constructor({callback:e,params:t,objs:i,commonObjs:n,annotationCanvasMap:o,operatorList:r,pageIndex:l,canvasFactory:a,filterFactory:d,useRequestAnimationFrame:c=!1,pdfBug:h=!1,pageColors:u=null}){O(this,SZ,null),this.callback=e,this.params=t,this.objs=i,this.commonObjs=n,this.annotationCanvasMap=o,this.operatorListIdx=null,this.operatorList=r,this._pageIndex=l,this.canvasFactory=a,this.filterFactory=d,this._pdfBug=h,this.pageColors=u,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=c===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new IWt(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=t.canvasContext.canvas}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:e=!1,optionalContentConfig:t}){var i,n;if(this.cancelled)return;if(this._canvas){if(A(mC,OW).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");A(mC,OW).add(this._canvas)}this._pdfBug&&(i=globalThis.StepperManager)!=null&&i.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{canvasContext:o,viewport:r,transform:l,background:a}=this.params;this.gfx=new cG(o,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:t},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:l,viewport:r,transparency:e,background:a}),this.operatorListIdx=0,this.graphicsReady=!0,(n=this.graphicsReadyCallback)==null||n.call(this)}cancel(e=null,t=0){var i;this.running=!1,this.cancelled=!0,(i=this.gfx)==null||i.endDrawing(),A(this,SZ)&&(window.cancelAnimationFrame(A(this,SZ)),I(this,SZ,null)),A(mC,OW).delete(this._canvas),this.callback(e||new eae(`Rendering cancelled, page ${this._pageIndex+1}`,t))}operatorListChanged(){var e;if(!this.graphicsReady){this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound);return}(e=this.stepper)==null||e.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?I(this,SZ,window.requestAnimationFrame(()=>{I(this,SZ,null),this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),A(mC,OW).delete(this._canvas),this.callback())))}};SZ=new WeakMap,OW=new WeakMap,O(RMe,OW,new WeakSet);let EWt=RMe;const DWt="4.10.38",GWt="f9bea397f";eo(670);function tbe(s){return Math.floor(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0")}function tT(s){return Math.max(0,Math.min(255,255*s))}class ibe{static CMYK_G([e,t,i,n]){return["G",1-Math.min(1,.3*e+.59*i+.11*t+n)]}static G_CMYK([e]){return["CMYK",0,0,0,1-e]}static G_RGB([e]){return["RGB",e,e,e]}static G_rgb([e]){return e=tT(e),[e,e,e]}static G_HTML([e]){const t=tbe(e);return`#${t}${t}${t}`}static RGB_G([e,t,i]){return["G",.3*e+.59*t+.11*i]}static RGB_rgb(e){return e.map(tT)}static RGB_HTML(e){return`#${e.map(tbe).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([e,t,i,n]){return["RGB",1-Math.min(1,e+n),1-Math.min(1,i+n),1-Math.min(1,t+n)]}static CMYK_rgb([e,t,i,n]){return[tT(1-Math.min(1,e+n)),tT(1-Math.min(1,i+n)),tT(1-Math.min(1,t+n))]}static CMYK_HTML(e){const t=this.CMYK_RGB(e).slice(1);return this.RGB_HTML(t)}static RGB_CMYK([e,t,i]){const n=1-e,o=1-t,r=1-i,l=Math.min(n,o,r);return["CMYK",n,o,r,l]}}class JWt{create(e,t,i=!1){if(e<=0||t<=0)throw new Error("Invalid SVG dimensions");const n=this._createSVG("svg:svg");return n.setAttribute("version","1.1"),i||(n.setAttribute("width",`${e}px`),n.setAttribute("height",`${t}px`)),n.setAttribute("preserveAspectRatio","none"),n.setAttribute("viewBox",`0 0 ${e} ${t}`),n}createElement(e){if(typeof e!="string")throw new Error("Invalid SVG element type");return this._createSVG(e)}_createSVG(e){tr("Abstract method `_createSVG` called.")}}let rae=class extends JWt{_createSVG(s){return document.createElementNS(Q0,s)}},VMe=class{static setupStorage(s,e,t,i,n){const o=i.getValue(e,{value:null});switch(t.name){case"textarea":if(o.value!==null&&(s.textContent=o.value),n==="print")break;s.addEventListener("input",r=>{i.setValue(e,{value:r.target.value})});break;case"input":if(t.attributes.type==="radio"||t.attributes.type==="checkbox"){if(o.value===t.attributes.xfaOn?s.setAttribute("checked",!0):o.value===t.attributes.xfaOff&&s.removeAttribute("checked"),n==="print")break;s.addEventListener("change",r=>{i.setValue(e,{value:r.target.checked?r.target.getAttribute("xfaOn"):r.target.getAttribute("xfaOff")})})}else{if(o.value!==null&&s.setAttribute("value",o.value),n==="print")break;s.addEventListener("input",r=>{i.setValue(e,{value:r.target.value})})}break;case"select":if(o.value!==null){s.setAttribute("value",o.value);for(const r of t.children)r.attributes.value===o.value?r.attributes.selected=!0:r.attributes.hasOwnProperty("selected")&&delete r.attributes.selected}s.addEventListener("input",r=>{const l=r.target.options,a=l.selectedIndex===-1?"":l[l.selectedIndex].value;i.setValue(e,{value:a})});break}}static setAttributes({html:s,element:e,storage:t=null,intent:i,linkService:n}){const{attributes:o}=e,r=s instanceof HTMLAnchorElement;o.type==="radio"&&(o.name=`${o.name}-${i}`);for(const[l,a]of Object.entries(o))if(a!=null)switch(l){case"class":a.length&&s.setAttribute(l,a.join(" "));break;case"dataId":break;case"id":s.setAttribute("data-element-id",a);break;case"style":Object.assign(s.style,a);break;case"textContent":s.textContent=a;break;default:(!r||l!=="href"&&l!=="newWindow")&&s.setAttribute(l,a)}r&&n.addLinkAttributes(s,o.href,o.newWindow),t&&o.dataId&&this.setupStorage(s,o.dataId,e,t)}static render(s){var e,t;const i=s.annotationStorage,n=s.linkService,o=s.xfaHtml,r=s.intent||"display",l=document.createElement(o.name);o.attributes&&this.setAttributes({html:l,element:o,intent:r,linkService:n});const a=r!=="richText",d=s.div;if(d.append(l),s.viewport){const u=`matrix(${s.viewport.transform.join(",")})`;d.style.transform=u}a&&d.setAttribute("class","xfaLayer xfaFont");const c=[];if(o.children.length===0){if(o.value){const u=document.createTextNode(o.value);l.append(u),a&&Av.shouldBuildText(o.name)&&c.push(u)}return{textDivs:c}}const h=[[o,-1,l]];for(;h.length>0;){const[u,m,p]=h.at(-1);if(m+1===u.children.length){h.pop();continue}const g=u.children[++h.at(-1)[1]];if(g===null)continue;const{name:f}=g;if(f==="#text"){const U=document.createTextNode(g.value);c.push(U),p.append(U);continue}const b=(e=g==null?void 0:g.attributes)!=null&&e.xmlns?document.createElementNS(g.attributes.xmlns,f):document.createElement(f);if(p.append(b),g.attributes&&this.setAttributes({html:b,element:g,storage:i,intent:r,linkService:n}),((t=g.children)==null?void 0:t.length)>0)h.push([g,-1,b]);else if(g.value){const U=document.createTextNode(g.value);a&&Av.shouldBuildText(f)&&c.push(U),b.append(U)}}for(const u of d.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))u.setAttribute("readOnly",!0);return{textDivs:c}}static update(s){const e=`matrix(${s.viewport.transform.join(",")})`;s.div.style.transform=e,s.div.hidden=!1}};const Ck=1e3,XWt=9,_N=new WeakSet;function qF(s){return{width:s[2]-s[0],height:s[3]-s[1]}}class YWt{static create(e){switch(e.data.annotationType){case Il.LINK:return new MMe(e);case Il.TEXT:return new zWt(e);case Il.WIDGET:switch(e.data.fieldType){case"Tx":return new OWt(e);case"Btn":return e.data.radioButton?new wMe(e):e.data.checkBox?new PWt(e):new HWt(e);case"Ch":return new KWt(e);case"Sig":return new jWt(e)}return new uR(e);case Il.POPUP:return new zie(e);case Il.FREETEXT:return new BMe(e);case Il.LINE:return new $Wt(e);case Il.SQUARE:return new e1t(e);case Il.CIRCLE:return new t1t(e);case Il.POLYLINE:return new LMe(e);case Il.CARET:return new n1t(e);case Il.INK:return new lae(e);case Il.POLYGON:return new i1t(e);case Il.HIGHLIGHT:return new vMe(e);case Il.UNDERLINE:return new s1t(e);case Il.SQUIGGLY:return new o1t(e);case Il.STRIKEOUT:return new r1t(e);case Il.STAMP:return new kMe(e);case Il.FILEATTACHMENT:return new l1t(e);default:return new ql(e)}}}var NZ,pC,gC,bG,_ie;const _Wt=class WMe{constructor(e,{isRenderable:t=!1,ignoreBorder:i=!1,createQuadrilaterals:n=!1}={}){O(this,bG),O(this,NZ,null),O(this,pC,!1),O(this,gC,null),this.isRenderable=t,this.data=e.data,this.layer=e.layer,this.linkService=e.linkService,this.downloadManager=e.downloadManager,this.imageResourcesPath=e.imageResourcesPath,this.renderForms=e.renderForms,this.svgFactory=e.svgFactory,this.annotationStorage=e.annotationStorage,this.enableScripting=e.enableScripting,this.hasJSActions=e.hasJSActions,this._fieldObjects=e.fieldObjects,this.parent=e.parent,t&&(this.container=this._createContainer(i)),n&&this._createQuadrilaterals()}static _hasPopupData({titleObj:e,contentsObj:t,richText:i}){return!!(e!=null&&e.str||t!=null&&t.str||i!=null&&i.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return WMe._hasPopupData(this.data)}updateEdited(e){var t;if(!this.container)return;A(this,NZ)||I(this,NZ,{rect:this.data.rect.slice(0)});const{rect:i}=e;i&&_(this,bG,_ie).call(this,i),(t=A(this,gC))==null||t.popup.updateEdited(e)}resetEdited(){var e;A(this,NZ)&&(_(this,bG,_ie).call(this,A(this,NZ).rect),(e=A(this,gC))==null||e.popup.resetEdited(),I(this,NZ,null))}_createContainer(e){const{data:t,parent:{page:i,viewport:n}}=this,o=document.createElement("section");o.setAttribute("data-annotation-id",t.id),this instanceof uR||(o.tabIndex=Ck);const{style:r}=o;if(r.zIndex=this.parent.zIndex++,t.alternativeText&&(o.title=t.alternativeText),t.noRotate&&o.classList.add("norotate"),!t.rect||this instanceof zie){const{rotation:g}=t;return!t.hasOwnCanvas&&g!==0&&this.setRotation(g,o),o}const{width:l,height:a}=qF(t.rect);if(!e&&t.borderStyle.width>0){r.borderWidth=`${t.borderStyle.width}px`;const g=t.borderStyle.horizontalCornerRadius,f=t.borderStyle.verticalCornerRadius;if(g>0||f>0){const U=`calc(${g}px * var(--scale-factor)) / calc(${f}px * var(--scale-factor))`;r.borderRadius=U}else if(this instanceof wMe){const U=`calc(${l}px * var(--scale-factor)) / calc(${a}px * var(--scale-factor))`;r.borderRadius=U}switch(t.borderStyle.style){case kw.SOLID:r.borderStyle="solid";break;case kw.DASHED:r.borderStyle="dashed";break;case kw.BEVELED:Hn("Unimplemented border style: beveled");break;case kw.INSET:Hn("Unimplemented border style: inset");break;case kw.UNDERLINE:r.borderBottomStyle="solid";break}const b=t.borderColor||null;b?(I(this,pC,!0),r.borderColor=dn.makeHexColor(b[0]|0,b[1]|0,b[2]|0)):r.borderWidth=0}const d=dn.normalizeRect([t.rect[0],i.view[3]-t.rect[1]+i.view[1],t.rect[2],i.view[3]-t.rect[3]+i.view[1]]),{pageWidth:c,pageHeight:h,pageX:u,pageY:m}=n.rawDims;r.left=`${100*(d[0]-u)/c}%`,r.top=`${100*(d[1]-m)/h}%`;const{rotation:p}=t;return t.hasOwnCanvas||p===0?(r.width=`${100*l/c}%`,r.height=`${100*a/h}%`):this.setRotation(p,o),o}setRotation(e,t=this.container){if(!this.data.rect)return;const{pageWidth:i,pageHeight:n}=this.parent.viewport.rawDims,{width:o,height:r}=qF(this.data.rect);let l,a;e%180===0?(l=100*o/i,a=100*r/n):(l=100*r/i,a=100*o/n),t.style.width=`${l}%`,t.style.height=`${a}%`,t.setAttribute("data-main-rotation",(360-e)%360)}get _commonActions(){const e=(t,i,n)=>{const o=n.detail[t],r=o[0],l=o.slice(1);n.target.style[i]=ibe[`${r}_HTML`](l),this.annotationStorage.setValue(this.data.id,{[i]:ibe[`${r}_rgb`](l)})};return Vs(this,"_commonActions",{display:t=>{const{display:i}=t.detail,n=i%2===1;this.container.style.visibility=n?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:n,noPrint:i===1||i===2})},print:t=>{this.annotationStorage.setValue(this.data.id,{noPrint:!t.detail.print})},hidden:t=>{const{hidden:i}=t.detail;this.container.style.visibility=i?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:i,noView:i})},focus:t=>{setTimeout(()=>t.target.focus({preventScroll:!1}),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.target.disabled=t.detail.readonly},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:t=>{e("bgColor","backgroundColor",t)},fillColor:t=>{e("fillColor","backgroundColor",t)},fgColor:t=>{e("fgColor","color",t)},textColor:t=>{e("textColor","color",t)},borderColor:t=>{e("borderColor","borderColor",t)},strokeColor:t=>{e("strokeColor","borderColor",t)},rotation:t=>{const i=t.detail.rotation;this.setRotation(i),this.annotationStorage.setValue(this.data.id,{rotation:i})}})}_dispatchEventFromSandbox(e,t){const i=this._commonActions;for(const n of Object.keys(t.detail)){const o=e[n]||i[n];o==null||o(t)}}_setDefaultPropertiesFromJS(e){if(!this.enableScripting)return;const t=this.annotationStorage.getRawValue(this.data.id);if(!t)return;const i=this._commonActions;for(const[n,o]of Object.entries(t)){const r=i[n];if(r){const l={detail:{[n]:o},target:e};r(l),delete t[n]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:e}=this.data;if(!e)return;const[t,i,n,o]=this.data.rect.map(g=>Math.fround(g));if(e.length===8){const[g,f,b,U]=e.subarray(2,6);if(n===g&&o===f&&t===b&&i===U)return}const{style:r}=this.container;let l;if(A(this,pC)){const{borderColor:g,borderWidth:f}=r;r.borderWidth=0,l=["url('data:image/svg+xml;utf8,",'<svg xmlns="http://www.w3.org/2000/svg"',' preserveAspectRatio="none" viewBox="0 0 1 1">',`<g fill="transparent" stroke="${g}" stroke-width="${f}">`],this.container.classList.add("hasBorder")}const a=n-t,d=o-i,{svgFactory:c}=this,h=c.createElement("svg");h.classList.add("quadrilateralsContainer"),h.setAttribute("width",0),h.setAttribute("height",0);const u=c.createElement("defs");h.append(u);const m=c.createElement("clipPath"),p=`clippath_${this.data.id}`;m.setAttribute("id",p),m.setAttribute("clipPathUnits","objectBoundingBox"),u.append(m);for(let g=2,f=e.length;g<f;g+=8){const b=e[g],U=e[g+1],S=e[g+2],Z=e[g+3],R=c.createElement("rect"),y=(S-t)/a,N=(o-U)/d,w=(b-S)/a,Q=(U-Z)/d;R.setAttribute("x",y),R.setAttribute("y",N),R.setAttribute("width",w),R.setAttribute("height",Q),m.append(R),l==null||l.push(`<rect vector-effect="non-scaling-stroke" x="${y}" y="${N}" width="${w}" height="${Q}"/>`)}A(this,pC)&&(l.push("</g></svg>')"),r.backgroundImage=l.join("")),this.container.append(h),this.container.style.clipPath=`url(#${p})`}_createPopup(){const{data:e}=this,t=I(this,gC,new zie({data:{color:e.color,titleObj:e.titleObj,modificationDate:e.modificationDate,contentsObj:e.contentsObj,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation},parent:this.parent,elements:[this]}));this.parent.div.append(t.render())}render(){tr("Abstract method `AnnotationElement.render` called")}_getElementsByName(e,t=null){const i=[];if(this._fieldObjects){const n=this._fieldObjects[e];if(n)for(const{page:o,id:r,exportValues:l}of n){if(o===-1||r===t)continue;const a=typeof l=="string"?l:null,d=document.querySelector(`[data-element-id="${r}"]`);if(d&&!_N.has(d)){Hn(`_getElementsByName - element not allowed: ${r}`);continue}i.push({id:r,exportValue:a,domElement:d})}return i}for(const n of document.getElementsByName(e)){const{exportValue:o}=n,r=n.getAttribute("data-element-id");r!==t&&_N.has(n)&&i.push({id:r,exportValue:o,domElement:n})}return i}show(){var e;this.container&&(this.container.hidden=!1),(e=this.popup)==null||e.maybeShow()}hide(){var e;this.container&&(this.container.hidden=!0),(e=this.popup)==null||e.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const e=this.getElementsToTriggerPopup();if(Array.isArray(e))for(const t of e)t.classList.add("highlightArea");else e.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:e,data:{id:t}}=this;this.container.addEventListener("dblclick",()=>{var i;(i=this.linkService.eventBus)==null||i.dispatch("switchannotationeditormode",{source:this,mode:e,editId:t})})}};NZ=new WeakMap,pC=new WeakMap,gC=new WeakMap,bG=new WeakSet,_ie=function(s){const{container:{style:e},data:{rect:t,rotation:i},parent:{viewport:{rawDims:{pageWidth:n,pageHeight:o,pageX:r,pageY:l}}}}=this;t==null||t.splice(0,4,...s);const{width:a,height:d}=qF(s);e.left=`${100*(s[0]-r)/n}%`,e.top=`${100*(o-s[3]+l)/o}%`,i===0?(e.width=`${100*a/n}%`,e.height=`${100*d/o}%`):this.setRotation(i)};let ql=_Wt;var lg,yS,yMe,QMe;class MMe extends ql{constructor(e,t=null){super(e,{isRenderable:!0,ignoreBorder:!!(t!=null&&t.ignoreBorder),createQuadrilaterals:!0}),O(this,lg),this.isTooltipOnly=e.data.isTooltipOnly}render(){const{data:e,linkService:t}=this,i=document.createElement("a");i.setAttribute("data-element-id",e.id);let n=!1;return e.url?(t.addLinkAttributes(i,e.url,e.newWindow),n=!0):e.action?(this._bindNamedAction(i,e.action),n=!0):e.attachment?(_(this,lg,yMe).call(this,i,e.attachment,e.attachmentDest),n=!0):e.setOCGState?(_(this,lg,QMe).call(this,i,e.setOCGState),n=!0):e.dest?(this._bindLink(i,e.dest),n=!0):(e.actions&&(e.actions.Action||e.actions["Mouse Up"]||e.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(i,e),n=!0),e.resetForm?(this._bindResetFormAction(i,e.resetForm),n=!0):this.isTooltipOnly&&!n&&(this._bindLink(i,""),n=!0)),this.container.classList.add("linkAnnotation"),n&&this.container.append(i),this.container}_bindLink(e,t){e.href=this.linkService.getDestinationHash(t),e.onclick=()=>(t&&this.linkService.goToDestination(t),!1),(t||t==="")&&_(this,lg,yS).call(this)}_bindNamedAction(e,t){e.href=this.linkService.getAnchorUrl(""),e.onclick=()=>(this.linkService.executeNamedAction(t),!1),_(this,lg,yS).call(this)}_bindJSAction(e,t){e.href=this.linkService.getAnchorUrl("");const i=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const n of Object.keys(t.actions)){const o=i.get(n);o&&(e[o]=()=>{var r;return(r=this.linkService.eventBus)==null||r.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t.id,name:n}}),!1})}e.onclick||(e.onclick=()=>!1),_(this,lg,yS).call(this)}_bindResetFormAction(e,t){const i=e.onclick;if(i||(e.href=this.linkService.getAnchorUrl("")),_(this,lg,yS).call(this),!this._fieldObjects){Hn('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),i||(e.onclick=()=>!1);return}e.onclick=()=>{var n;i==null||i();const{fields:o,refs:r,include:l}=t,a=[];if(o.length!==0||r.length!==0){const h=new Set(r);for(const u of o){const m=this._fieldObjects[u]||[];for(const{id:p}of m)h.add(p)}for(const u of Object.values(this._fieldObjects))for(const m of u)h.has(m.id)===l&&a.push(m)}else for(const h of Object.values(this._fieldObjects))a.push(...h);const d=this.annotationStorage,c=[];for(const h of a){const{id:u}=h;switch(c.push(u),h.type){case"text":{const p=h.defaultValue||"";d.setValue(u,{value:p});break}case"checkbox":case"radiobutton":{const p=h.defaultValue===h.exportValues;d.setValue(u,{value:p});break}case"combobox":case"listbox":{const p=h.defaultValue||"";d.setValue(u,{value:p});break}default:continue}const m=document.querySelector(`[data-element-id="${u}"]`);if(m){if(!_N.has(m)){Hn(`_bindResetFormAction - element not allowed: ${u}`);continue}}else continue;m.dispatchEvent(new Event("resetform"))}return this.enableScripting&&((n=this.linkService.eventBus)==null||n.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:c,name:"ResetForm"}})),!1}}}lg=new WeakSet,yS=function(){this.container.setAttribute("data-internal-link","")},yMe=function(s,e,t=null){s.href=this.linkService.getAnchorUrl(""),e.description&&(s.title=e.description),s.onclick=()=>{var i;return(i=this.downloadManager)==null||i.openOrDownloadData(e.content,e.filename,t),!1},_(this,lg,yS).call(this)},QMe=function(s,e){s.href=this.linkService.getAnchorUrl(""),s.onclick=()=>(this.linkService.executeSetOCGState(e),!1),_(this,lg,yS).call(this)};class zWt extends ql{constructor(e){super(e,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const e=document.createElement("img");return e.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",e.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),e.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(e),this.container}}class uR extends ql{render(){return this.container}showElementAndHideCanvas(e){var t;this.data.hasOwnCanvas&&(((t=e.previousSibling)==null?void 0:t.nodeName)==="CANVAS"&&(e.previousSibling.hidden=!0),e.hidden=!1)}_getKeyModifier(e){return pc.platform.isMac?e.metaKey:e.ctrlKey}_setEventListener(e,t,i,n,o){i.includes("mouse")?e.addEventListener(i,r=>{var l;(l=this.linkService.eventBus)==null||l.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:o(r),shift:r.shiftKey,modifier:this._getKeyModifier(r)}})}):e.addEventListener(i,r=>{var l;if(i==="blur"){if(!t.focused||!r.relatedTarget)return;t.focused=!1}else if(i==="focus"){if(t.focused)return;t.focused=!0}o&&((l=this.linkService.eventBus)==null||l.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:o(r)}}))})}_setEventListeners(e,t,i,n){var o,r,l;for(const[a,d]of i)(d==="Action"||(o=this.data.actions)!=null&&o[d])&&((d==="Focus"||d==="Blur")&&(t||(t={focused:!1})),this._setEventListener(e,t,a,d,n),d==="Focus"&&!((r=this.data.actions)!=null&&r.Blur)?this._setEventListener(e,t,"blur","Blur",null):d==="Blur"&&!((l=this.data.actions)!=null&&l.Focus)&&this._setEventListener(e,t,"focus","Focus",null))}_setBackgroundColor(e){const t=this.data.backgroundColor||null;e.style.backgroundColor=t===null?"transparent":dn.makeHexColor(t[0],t[1],t[2])}_setTextStyle(e){const t=["left","center","right"],{fontColor:i}=this.data.defaultAppearanceData,n=this.data.defaultAppearanceData.fontSize||XWt,o=e.style;let r;const l=2,a=d=>Math.round(10*d)/10;if(this.data.multiLine){const d=Math.abs(this.data.rect[3]-this.data.rect[1]-l),c=Math.round(d/(IH*n))||1,h=d/c;r=Math.min(n,a(h/IH))}else{const d=Math.abs(this.data.rect[3]-this.data.rect[1]-l);r=Math.min(n,a(d/IH))}o.fontSize=`calc(${r}px * var(--scale-factor))`,o.color=dn.makeHexColor(i[0],i[1],i[2]),this.data.textAlignment!==null&&(o.textAlign=t[this.data.textAlignment])}_setRequired(e,t){t?e.setAttribute("required",!0):e.removeAttribute("required"),e.setAttribute("aria-required",t)}}class OWt extends uR{constructor(e){const t=e.renderForms||e.data.hasOwnCanvas||!e.data.hasAppearance&&!!e.data.fieldValue;super(e,{isRenderable:t})}setPropertyOnSiblings(e,t,i,n){const o=this.annotationStorage;for(const r of this._getElementsByName(e.name,e.id))r.domElement&&(r.domElement[t]=i),o.setValue(r.id,{[n]:i})}render(){var e,t;const i=this.annotationStorage,n=this.data.id;this.container.classList.add("textWidgetAnnotation");let o=null;if(this.renderForms){const r=i.getValue(n,{value:this.data.fieldValue});let l=r.value||"";const a=i.getValue(n,{charLimit:this.data.maxLen}).charLimit;a&&l.length>a&&(l=l.slice(0,a));let d=r.formattedValue||((e=this.data.textContent)==null?void 0:e.join(`
- `))||null;d&&this.data.comb&&(d=d.replaceAll(/\s+/g,""));const c={userValue:l,formattedValue:d,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(o=document.createElement("textarea"),o.textContent=d??l,this.data.doNotScroll&&(o.style.overflowY="hidden")):(o=document.createElement("input"),o.type="text",o.setAttribute("value",d??l),this.data.doNotScroll&&(o.style.overflowX="hidden")),this.data.hasOwnCanvas&&(o.hidden=!0),_N.add(o),o.setAttribute("data-element-id",n),o.disabled=this.data.readOnly,o.name=this.data.fieldName,o.tabIndex=Ck,this._setRequired(o,this.data.required),a&&(o.maxLength=a),o.addEventListener("input",u=>{i.setValue(n,{value:u.target.value}),this.setPropertyOnSiblings(o,"value",u.target.value,"value"),c.formattedValue=null}),o.addEventListener("resetform",u=>{const m=this.data.defaultFieldValue??"";o.value=c.userValue=m,c.formattedValue=null});let h=u=>{const{formattedValue:m}=c;m!=null&&(u.target.value=m),u.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){o.addEventListener("focus",m=>{var p;if(c.focused)return;const{target:g}=m;c.userValue&&(g.value=c.userValue),c.lastCommittedValue=g.value,c.commitKey=1,(p=this.data.actions)!=null&&p.Focus||(c.focused=!0)}),o.addEventListener("updatefromsandbox",m=>{this.showElementAndHideCanvas(m.target);const p={value(g){c.userValue=g.detail.value??"",i.setValue(n,{value:c.userValue.toString()}),g.target.value=c.userValue},formattedValue(g){const{formattedValue:f}=g.detail;c.formattedValue=f,f!=null&&g.target!==document.activeElement&&(g.target.value=f),i.setValue(n,{formattedValue:f})},selRange(g){g.target.setSelectionRange(...g.detail.selRange)},charLimit:g=>{var f;const{charLimit:b}=g.detail,{target:U}=g;if(b===0){U.removeAttribute("maxLength");return}U.setAttribute("maxLength",b);let S=c.userValue;!S||S.length<=b||(S=S.slice(0,b),U.value=c.userValue=S,i.setValue(n,{value:S}),(f=this.linkService.eventBus)==null||f.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:S,willCommit:!0,commitKey:1,selStart:U.selectionStart,selEnd:U.selectionEnd}}))}};this._dispatchEventFromSandbox(p,m)}),o.addEventListener("keydown",m=>{var p;c.commitKey=1;let g=-1;if(m.key==="Escape"?g=0:m.key==="Enter"&&!this.data.multiLine?g=2:m.key==="Tab"&&(c.commitKey=3),g===-1)return;const{value:f}=m.target;c.lastCommittedValue!==f&&(c.lastCommittedValue=f,c.userValue=f,(p=this.linkService.eventBus)==null||p.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:f,willCommit:!0,commitKey:g,selStart:m.target.selectionStart,selEnd:m.target.selectionEnd}}))});const u=h;h=null,o.addEventListener("blur",m=>{var p,g;if(!c.focused||!m.relatedTarget)return;(p=this.data.actions)!=null&&p.Blur||(c.focused=!1);const{value:f}=m.target;c.userValue=f,c.lastCommittedValue!==f&&((g=this.linkService.eventBus)==null||g.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:f,willCommit:!0,commitKey:c.commitKey,selStart:m.target.selectionStart,selEnd:m.target.selectionEnd}})),u(m)}),(t=this.data.actions)!=null&&t.Keystroke&&o.addEventListener("beforeinput",m=>{var p;c.lastCommittedValue=null;const{data:g,target:f}=m,{value:b,selectionStart:U,selectionEnd:S}=f;let Z=U,R=S;switch(m.inputType){case"deleteWordBackward":{const y=b.substring(0,U).match(/\w*[^\w]*$/);y&&(Z-=y[0].length);break}case"deleteWordForward":{const y=b.substring(U).match(/^[^\w]*\w*/);y&&(R+=y[0].length);break}case"deleteContentBackward":U===S&&(Z-=1);break;case"deleteContentForward":U===S&&(R+=1);break}m.preventDefault(),(p=this.linkService.eventBus)==null||p.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:b,change:g||"",willCommit:!1,selStart:Z,selEnd:R}})}),this._setEventListeners(o,c,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],m=>m.target.value)}if(h&&o.addEventListener("blur",h),this.data.comb){const u=(this.data.rect[2]-this.data.rect[0])/a;o.classList.add("comb"),o.style.letterSpacing=`calc(${u}px * var(--scale-factor) - 1ch)`}}else o=document.createElement("div"),o.textContent=this.data.fieldValue,o.style.verticalAlign="middle",o.style.display="table-cell",this.data.hasOwnCanvas&&(o.hidden=!0);return this._setTextStyle(o),this._setBackgroundColor(o),this._setDefaultPropertiesFromJS(o),this.container.append(o),this.container}}class jWt extends uR{constructor(e){super(e,{isRenderable:!!e.data.hasOwnCanvas})}}class PWt extends uR{constructor(e){super(e,{isRenderable:e.renderForms})}render(){const e=this.annotationStorage,t=this.data,i=t.id;let n=e.getValue(i,{value:t.exportValue===t.fieldValue}).value;typeof n=="string"&&(n=n!=="Off",e.setValue(i,{value:n})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const o=document.createElement("input");return _N.add(o),o.setAttribute("data-element-id",i),o.disabled=t.readOnly,this._setRequired(o,this.data.required),o.type="checkbox",o.name=t.fieldName,n&&o.setAttribute("checked",!0),o.setAttribute("exportValue",t.exportValue),o.tabIndex=Ck,o.addEventListener("change",r=>{const{name:l,checked:a}=r.target;for(const d of this._getElementsByName(l,i)){const c=a&&d.exportValue===t.exportValue;d.domElement&&(d.domElement.checked=c),e.setValue(d.id,{value:c})}e.setValue(i,{value:a})}),o.addEventListener("resetform",r=>{const l=t.defaultFieldValue||"Off";r.target.checked=l===t.exportValue}),this.enableScripting&&this.hasJSActions&&(o.addEventListener("updatefromsandbox",r=>{const l={value(a){a.target.checked=a.detail.value!=="Off",e.setValue(i,{value:a.target.checked})}};this._dispatchEventFromSandbox(l,r)}),this._setEventListeners(o,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],r=>r.target.checked)),this._setBackgroundColor(o),this._setDefaultPropertiesFromJS(o),this.container.append(o),this.container}}class wMe extends uR{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const e=this.annotationStorage,t=this.data,i=t.id;let n=e.getValue(i,{value:t.fieldValue===t.buttonValue}).value;if(typeof n=="string"&&(n=n!==t.buttonValue,e.setValue(i,{value:n})),n)for(const r of this._getElementsByName(t.fieldName,i))e.setValue(r.id,{value:!1});const o=document.createElement("input");if(_N.add(o),o.setAttribute("data-element-id",i),o.disabled=t.readOnly,this._setRequired(o,this.data.required),o.type="radio",o.name=t.fieldName,n&&o.setAttribute("checked",!0),o.tabIndex=Ck,o.addEventListener("change",r=>{const{name:l,checked:a}=r.target;for(const d of this._getElementsByName(l,i))e.setValue(d.id,{value:!1});e.setValue(i,{value:a})}),o.addEventListener("resetform",r=>{const l=t.defaultFieldValue;r.target.checked=l!=null&&l===t.buttonValue}),this.enableScripting&&this.hasJSActions){const r=t.buttonValue;o.addEventListener("updatefromsandbox",l=>{const a={value:d=>{const c=r===d.detail.value;for(const h of this._getElementsByName(d.target.name)){const u=c&&h.id===i;h.domElement&&(h.domElement.checked=u),e.setValue(h.id,{value:u})}}};this._dispatchEventFromSandbox(a,l)}),this._setEventListeners(o,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],l=>l.target.checked)}return this._setBackgroundColor(o),this._setDefaultPropertiesFromJS(o),this.container.append(o),this.container}}class HWt extends MMe{constructor(e){super(e,{ignoreBorder:e.data.hasAppearance})}render(){const e=super.render();e.classList.add("buttonWidgetAnnotation","pushButton");const t=e.lastChild;return this.enableScripting&&this.hasJSActions&&t&&(this._setDefaultPropertiesFromJS(t),t.addEventListener("updatefromsandbox",i=>{this._dispatchEventFromSandbox({},i)})),e}}class KWt extends uR{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const e=this.annotationStorage,t=this.data.id,i=e.getValue(t,{value:this.data.fieldValue}),n=document.createElement("select");_N.add(n),n.setAttribute("data-element-id",t),n.disabled=this.data.readOnly,this._setRequired(n,this.data.required),n.name=this.data.fieldName,n.tabIndex=Ck;let o=this.data.combo&&this.data.options.length>0;this.data.combo||(n.size=this.data.options.length,this.data.multiSelect&&(n.multiple=!0)),n.addEventListener("resetform",c=>{const h=this.data.defaultFieldValue;for(const u of n.options)u.selected=u.value===h});for(const c of this.data.options){const h=document.createElement("option");h.textContent=c.displayValue,h.value=c.exportValue,i.value.includes(c.exportValue)&&(h.setAttribute("selected",!0),o=!1),n.append(h)}let r=null;if(o){const c=document.createElement("option");c.value=" ",c.setAttribute("hidden",!0),c.setAttribute("selected",!0),n.prepend(c),r=()=>{c.remove(),n.removeEventListener("input",r),r=null},n.addEventListener("input",r)}const l=c=>{const h=c?"value":"textContent",{options:u,multiple:m}=n;return m?Array.prototype.filter.call(u,p=>p.selected).map(p=>p[h]):u.selectedIndex===-1?null:u[u.selectedIndex][h]};let a=l(!1);const d=c=>{const h=c.target.options;return Array.prototype.map.call(h,u=>({displayValue:u.textContent,exportValue:u.value}))};return this.enableScripting&&this.hasJSActions?(n.addEventListener("updatefromsandbox",c=>{const h={value(u){r==null||r();const m=u.detail.value,p=new Set(Array.isArray(m)?m:[m]);for(const g of n.options)g.selected=p.has(g.value);e.setValue(t,{value:l(!0)}),a=l(!1)},multipleSelection(u){n.multiple=!0},remove(u){const m=n.options,p=u.detail.remove;m[p].selected=!1,n.remove(p),m.length>0&&Array.prototype.findIndex.call(m,g=>g.selected)===-1&&(m[0].selected=!0),e.setValue(t,{value:l(!0),items:d(u)}),a=l(!1)},clear(u){for(;n.length!==0;)n.remove(0);e.setValue(t,{value:null,items:[]}),a=l(!1)},insert(u){const{index:m,displayValue:p,exportValue:g}=u.detail.insert,f=n.children[m],b=document.createElement("option");b.textContent=p,b.value=g,f?f.before(b):n.append(b),e.setValue(t,{value:l(!0),items:d(u)}),a=l(!1)},items(u){const{items:m}=u.detail;for(;n.length!==0;)n.remove(0);for(const p of m){const{displayValue:g,exportValue:f}=p,b=document.createElement("option");b.textContent=g,b.value=f,n.append(b)}n.options.length>0&&(n.options[0].selected=!0),e.setValue(t,{value:l(!0),items:d(u)}),a=l(!1)},indices(u){const m=new Set(u.detail.indices);for(const p of u.target.options)p.selected=m.has(p.index);e.setValue(t,{value:l(!0)}),a=l(!1)},editable(u){u.target.disabled=!u.detail.editable}};this._dispatchEventFromSandbox(h,c)}),n.addEventListener("input",c=>{var h;const u=l(!0),m=l(!1);e.setValue(t,{value:u}),c.preventDefault(),(h=this.linkService.eventBus)==null||h.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:a,change:m,changeEx:u,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(n,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],c=>c.target.value)):n.addEventListener("input",function(c){e.setValue(t,{value:l(!0)})}),this.data.combo&&this._setTextStyle(n),this._setBackgroundColor(n),this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}}class zie extends ql{constructor(e){const{data:t,elements:i}=e;super(e,{isRenderable:ql._hasPopupData(t)}),this.elements=i,this.popup=null}render(){this.container.classList.add("popupAnnotation");const e=this.popup=new qWt({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),t=[];for(const i of this.elements)i.popup=e,i.container.ariaHasPopup="dialog",t.push(i.data.id),i.addHighlightArea();return this.container.setAttribute("aria-controls",t.map(i=>`${$le}${i}`).join(",")),this.container}}var I2,Oie,jie,E2,HV,tl,lU,fC,$Y,e_,D2,Hb,Pp,BU,t_,LU,UG,RZ,KV,Gl,FG,l4,nbe,TMe,CMe,sbe,i_,n_,Pie;class qWt{constructor({container:e,color:t,elements:i,titleObj:n,modificationDate:o,contentsObj:r,richText:l,parent:a,rect:d,parentRect:c,open:h}){O(this,Gl),O(this,I2,_(this,Gl,CMe).bind(this)),O(this,Oie,_(this,Gl,Pie).bind(this)),O(this,jie,_(this,Gl,n_).bind(this)),O(this,E2,_(this,Gl,i_).bind(this)),O(this,HV,null),O(this,tl,null),O(this,lU,null),O(this,fC,null),O(this,$Y,null),O(this,e_,null),O(this,D2,null),O(this,Hb,!1),O(this,Pp,null),O(this,BU,null),O(this,t_,null),O(this,LU,null),O(this,UG,null),O(this,RZ,null),O(this,KV,!1);var u;I(this,tl,e),I(this,UG,n),I(this,lU,r),I(this,LU,l),I(this,e_,a),I(this,HV,t),I(this,t_,d),I(this,D2,c),I(this,$Y,i),I(this,fC,vQe.toDateObject(o)),this.trigger=i.flatMap(m=>m.getElementsToTriggerPopup());for(const m of this.trigger)m.addEventListener("click",A(this,E2)),m.addEventListener("mouseenter",A(this,jie)),m.addEventListener("mouseleave",A(this,Oie)),m.classList.add("popupTriggerArea");for(const m of i)(u=m.container)==null||u.addEventListener("keydown",A(this,I2));A(this,tl).hidden=!0,h&&_(this,Gl,i_).call(this)}render(){if(A(this,Pp))return;const e=I(this,Pp,document.createElement("div"));if(e.className="popup",A(this,HV)){const o=e.style.outlineColor=dn.makeHexColor(...A(this,HV));CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?e.style.backgroundColor=`color-mix(in srgb, ${o} 30%, white)`:e.style.backgroundColor=dn.makeHexColor(...A(this,HV).map(r=>Math.floor(.7*(255-r)+r)))}const t=document.createElement("span");t.className="header";const i=document.createElement("h1");if(t.append(i),{dir:i.dir,str:i.textContent}=A(this,UG),e.append(t),A(this,fC)){const o=document.createElement("span");o.classList.add("popupDate"),o.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),o.setAttribute("data-l10n-args",JSON.stringify({dateObj:A(this,fC).valueOf()})),t.append(o)}const n=A(this,Gl,FG);if(n)VMe.render({xfaHtml:n,intent:"richText",div:e}),e.lastChild.classList.add("richText","popupContent");else{const o=this._formatContents(A(this,lU));e.append(o)}A(this,tl).append(e)}_formatContents({str:e,dir:t}){const i=document.createElement("p");i.classList.add("popupContent"),i.dir=t;const n=e.split(/(?:\r\n?|\n)/);for(let o=0,r=n.length;o<r;++o){const l=n[o];i.append(document.createTextNode(l)),o<r-1&&i.append(document.createElement("br"))}return i}updateEdited({rect:e,popupContent:t}){var i;A(this,RZ)||I(this,RZ,{contentsObj:A(this,lU),richText:A(this,LU)}),e&&I(this,BU,null),t&&(I(this,LU,_(this,Gl,TMe).call(this,t)),I(this,lU,null)),(i=A(this,Pp))==null||i.remove(),I(this,Pp,null)}resetEdited(){var e;A(this,RZ)&&({contentsObj:mc(this,lU)._,richText:mc(this,LU)._}=A(this,RZ),I(this,RZ,null),(e=A(this,Pp))==null||e.remove(),I(this,Pp,null),I(this,BU,null))}forceHide(){I(this,KV,this.isVisible),A(this,KV)&&(A(this,tl).hidden=!0)}maybeShow(){A(this,KV)&&(A(this,Pp)||_(this,Gl,n_).call(this),I(this,KV,!1),A(this,tl).hidden=!1)}get isVisible(){return A(this,tl).hidden===!1}}I2=new WeakMap,Oie=new WeakMap,jie=new WeakMap,E2=new WeakMap,HV=new WeakMap,tl=new WeakMap,lU=new WeakMap,fC=new WeakMap,$Y=new WeakMap,e_=new WeakMap,D2=new WeakMap,Hb=new WeakMap,Pp=new WeakMap,BU=new WeakMap,t_=new WeakMap,LU=new WeakMap,UG=new WeakMap,RZ=new WeakMap,KV=new WeakMap,Gl=new WeakSet,FG=function(){const s=A(this,LU),e=A(this,lU);return s!=null&&s.str&&(!(e!=null&&e.str)||e.str===s.str)&&A(this,LU).html||null},l4=function(){var s,e,t;return((t=(e=(s=A(this,Gl,FG))==null?void 0:s.attributes)==null?void 0:e.style)==null?void 0:t.fontSize)||0},nbe=function(){var s,e,t;return((t=(e=(s=A(this,Gl,FG))==null?void 0:s.attributes)==null?void 0:e.style)==null?void 0:t.color)||null},TMe=function(s){const e=[],t={str:s,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:e}]}},i={style:{color:A(this,Gl,nbe),fontSize:A(this,Gl,l4)?`calc(${A(this,Gl,l4)}px * var(--scale-factor))`:""}};for(const n of s.split(`
- `))e.push({name:"span",value:n,attributes:i});return t},CMe=function(s){s.altKey||s.shiftKey||s.ctrlKey||s.metaKey||(s.key==="Enter"||s.key==="Escape"&&A(this,Hb))&&_(this,Gl,i_).call(this)},sbe=function(){if(A(this,BU)!==null)return;const{page:{view:s},viewport:{rawDims:{pageWidth:e,pageHeight:t,pageX:i,pageY:n}}}=A(this,e_);let o=!!A(this,D2),r=o?A(this,D2):A(this,t_);for(const u of A(this,$Y))if(!r||dn.intersect(u.data.rect,r)!==null){r=u.data.rect,o=!0;break}const l=dn.normalizeRect([r[0],s[3]-r[1]+s[1],r[2],s[3]-r[3]+s[1]]),a=o?r[2]-r[0]+5:0,d=l[0]+a,c=l[1];I(this,BU,[100*(d-i)/e,100*(c-n)/t]);const{style:h}=A(this,tl);h.left=`${A(this,BU)[0]}%`,h.top=`${A(this,BU)[1]}%`},i_=function(){I(this,Hb,!A(this,Hb)),A(this,Hb)?(_(this,Gl,n_).call(this),A(this,tl).addEventListener("click",A(this,E2)),A(this,tl).addEventListener("keydown",A(this,I2))):(_(this,Gl,Pie).call(this),A(this,tl).removeEventListener("click",A(this,E2)),A(this,tl).removeEventListener("keydown",A(this,I2)))},n_=function(){A(this,Pp)||this.render(),this.isVisible?A(this,Hb)&&A(this,tl).classList.add("focused"):(_(this,Gl,sbe).call(this),A(this,tl).hidden=!1,A(this,tl).style.zIndex=parseInt(A(this,tl).style.zIndex)+1e3)},Pie=function(){A(this,tl).classList.remove("focused"),!(A(this,Hb)||!this.isVisible)&&(A(this,tl).hidden=!0,A(this,tl).style.zIndex=parseInt(A(this,tl).style.zIndex)-1e3)};class BMe extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.textContent=e.data.textContent,this.textPosition=e.data.textPosition,this.annotationEditorType=ds.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const e=document.createElement("div");e.classList.add("annotationTextContent"),e.setAttribute("role","comment");for(const t of this.textContent){const i=document.createElement("span");i.textContent=t,e.append(i)}this.container.append(e)}return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var AG;class $Wt extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),O(this,AG,null)}render(){this.container.classList.add("lineAnnotation");const e=this.data,{width:t,height:i}=qF(e.rect),n=this.svgFactory.create(t,i,!0),o=I(this,AG,this.svgFactory.createElement("svg:line"));return o.setAttribute("x1",e.rect[2]-e.lineCoordinates[0]),o.setAttribute("y1",e.rect[3]-e.lineCoordinates[1]),o.setAttribute("x2",e.rect[2]-e.lineCoordinates[2]),o.setAttribute("y2",e.rect[3]-e.lineCoordinates[3]),o.setAttribute("stroke-width",e.borderStyle.width||1),o.setAttribute("stroke","transparent"),o.setAttribute("fill","transparent"),n.append(o),this.container.append(n),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return A(this,AG)}addHighlightArea(){this.container.classList.add("highlightArea")}}AG=new WeakMap;var ZG;class e1t extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),O(this,ZG,null)}render(){this.container.classList.add("squareAnnotation");const e=this.data,{width:t,height:i}=qF(e.rect),n=this.svgFactory.create(t,i,!0),o=e.borderStyle.width,r=I(this,ZG,this.svgFactory.createElement("svg:rect"));return r.setAttribute("x",o/2),r.setAttribute("y",o/2),r.setAttribute("width",t-o),r.setAttribute("height",i-o),r.setAttribute("stroke-width",o||1),r.setAttribute("stroke","transparent"),r.setAttribute("fill","transparent"),n.append(r),this.container.append(n),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return A(this,ZG)}addHighlightArea(){this.container.classList.add("highlightArea")}}ZG=new WeakMap;var SG;class t1t extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),O(this,SG,null)}render(){this.container.classList.add("circleAnnotation");const e=this.data,{width:t,height:i}=qF(e.rect),n=this.svgFactory.create(t,i,!0),o=e.borderStyle.width,r=I(this,SG,this.svgFactory.createElement("svg:ellipse"));return r.setAttribute("cx",t/2),r.setAttribute("cy",i/2),r.setAttribute("rx",t/2-o/2),r.setAttribute("ry",i/2-o/2),r.setAttribute("stroke-width",o||1),r.setAttribute("stroke","transparent"),r.setAttribute("fill","transparent"),n.append(r),this.container.append(n),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return A(this,SG)}addHighlightArea(){this.container.classList.add("highlightArea")}}SG=new WeakMap;var NG;class LMe extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),O(this,NG,null),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:e,vertices:t,borderStyle:i,popupRef:n}}=this;if(!t)return this.container;const{width:o,height:r}=qF(e),l=this.svgFactory.create(o,r,!0);let a=[];for(let c=0,h=t.length;c<h;c+=2){const u=t[c]-e[0],m=e[3]-t[c+1];a.push(`${u},${m}`)}a=a.join(" ");const d=I(this,NG,this.svgFactory.createElement(this.svgElementName));return d.setAttribute("points",a),d.setAttribute("stroke-width",i.width||1),d.setAttribute("stroke","transparent"),d.setAttribute("fill","transparent"),l.append(d),this.container.append(l),!n&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return A(this,NG)}addHighlightArea(){this.container.classList.add("highlightArea")}}NG=new WeakMap;class i1t extends LMe{constructor(e){super(e),this.containerClassName="polygonAnnotation",this.svgElementName="svg:polygon"}}class n1t extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("caretAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}var RG,qV,VG,Hie;class lae extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),O(this,VG),O(this,RG,null),O(this,qV,[]),this.containerClassName="inkAnnotation",this.svgElementName="svg:polyline",this.annotationEditorType=this.data.it==="InkHighlight"?ds.HIGHLIGHT:ds.INK}render(){this.container.classList.add(this.containerClassName);const{data:{rect:e,rotation:t,inkLists:i,borderStyle:n,popupRef:o}}=this,{transform:r,width:l,height:a}=_(this,VG,Hie).call(this,t,e),d=this.svgFactory.create(l,a,!0),c=I(this,RG,this.svgFactory.createElement("svg:g"));d.append(c),c.setAttribute("stroke-width",n.width||1),c.setAttribute("stroke-linecap","round"),c.setAttribute("stroke-linejoin","round"),c.setAttribute("stroke-miterlimit",10),c.setAttribute("stroke","transparent"),c.setAttribute("fill","transparent"),c.setAttribute("transform",r);for(let h=0,u=i.length;h<u;h++){const m=this.svgFactory.createElement(this.svgElementName);A(this,qV).push(m),m.setAttribute("points",i[h].join(",")),c.append(m)}return!o&&this.hasPopupData&&this._createPopup(),this.container.append(d),this._editOnDoubleClick(),this.container}updateEdited(e){super.updateEdited(e);const{thickness:t,points:i,rect:n}=e,o=A(this,RG);if(t>=0&&o.setAttribute("stroke-width",t||1),i)for(let r=0,l=A(this,qV).length;r<l;r++)A(this,qV)[r].setAttribute("points",i[r].join(","));if(n){const{transform:r,width:l,height:a}=_(this,VG,Hie).call(this,this.data.rotation,n);o.parentElement.setAttribute("viewBox",`0 0 ${l} ${a}`),o.setAttribute("transform",r)}}getElementsToTriggerPopup(){return A(this,qV)}addHighlightArea(){this.container.classList.add("highlightArea")}}RG=new WeakMap,qV=new WeakMap,VG=new WeakSet,Hie=function(s,e){switch(s){case 90:return{transform:`rotate(90) translate(${-e[0]},${e[1]}) scale(1,-1)`,width:e[3]-e[1],height:e[2]-e[0]};case 180:return{transform:`rotate(180) translate(${-e[2]},${e[1]}) scale(1,-1)`,width:e[2]-e[0],height:e[3]-e[1]};case 270:return{transform:`rotate(270) translate(${-e[2]},${e[3]}) scale(1,-1)`,width:e[3]-e[1],height:e[2]-e[0]};default:return{transform:`translate(${-e[0]},${e[3]}) scale(1,-1)`,width:e[2]-e[0],height:e[3]-e[1]}}};class vMe extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0}),this.annotationEditorType=ds.HIGHLIGHT}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("highlightAnnotation"),this._editOnDoubleClick(),this.container}}class s1t extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("underlineAnnotation"),this.container}}class o1t extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("squigglyAnnotation"),this.container}}class r1t extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("strikeoutAnnotation"),this.container}}class kMe extends ql{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.annotationEditorType=ds.STAMP}render(){return this.container.classList.add("stampAnnotation"),this.container.setAttribute("role","img"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var WG,yG,Kie;class l1t extends ql{constructor(e){var t;super(e,{isRenderable:!0}),O(this,yG),O(this,WG,null);const{file:i}=this.data;this.filename=i.filename,this.content=i.content,(t=this.linkService.eventBus)==null||t.dispatch("fileattachmentannotation",{source:this,...i})}render(){this.container.classList.add("fileAttachmentAnnotation");const{container:e,data:t}=this;let i;t.hasAppearance||t.fillAlpha===0?i=document.createElement("div"):(i=document.createElement("img"),i.src=`${this.imageResourcesPath}annotation-${/paperclip/i.test(t.name)?"paperclip":"pushpin"}.svg`,t.fillAlpha&&t.fillAlpha<1&&(i.style=`filter: opacity(${Math.round(t.fillAlpha*100)}%);`)),i.addEventListener("dblclick",_(this,yG,Kie).bind(this)),I(this,WG,i);const{isMac:n}=pc.platform;return e.addEventListener("keydown",o=>{o.key==="Enter"&&(n?o.metaKey:o.ctrlKey)&&_(this,yG,Kie).call(this)}),!t.popupRef&&this.hasPopupData?this._createPopup():i.classList.add("popupTriggerArea"),e.append(i),e}getElementsToTriggerPopup(){return A(this,WG)}addHighlightArea(){this.container.classList.add("highlightArea")}}WG=new WeakMap,yG=new WeakSet,Kie=function(){var s;(s=this.downloadManager)==null||s.openOrDownloadData(this.content,this.filename)};var LE,FV,AV,vE,iT,obe,a4,rbe;let a1t=(rbe=class{constructor({div:s,accessibilityManager:e,annotationCanvasMap:t,annotationEditorUIManager:i,page:n,viewport:o,structTreeLayer:r}){O(this,iT),O(this,LE,null),O(this,FV,null),O(this,AV,new Map),O(this,vE,null),this.div=s,I(this,LE,e),I(this,FV,t),I(this,vE,r||null),this.page=n,this.viewport=o,this.zIndex=0,this._annotationEditorUIManager=i}hasEditableAnnotations(){return A(this,AV).size>0}async render(s){var e;const{annotations:t}=s,i=this.div;YN(i,this.viewport);const n=new Map,o={data:null,layer:i,linkService:s.linkService,downloadManager:s.downloadManager,imageResourcesPath:s.imageResourcesPath||"",renderForms:s.renderForms!==!1,svgFactory:new rae,annotationStorage:s.annotationStorage||new sae,enableScripting:s.enableScripting===!0,hasJSActions:s.hasJSActions,fieldObjects:s.fieldObjects,parent:this,elements:null};for(const r of t){if(r.noHTML)continue;const l=r.annotationType===Il.POPUP;if(l){const c=n.get(r.id);if(!c)continue;o.elements=c}else{const{width:c,height:h}=qF(r.rect);if(c<=0||h<=0)continue}o.data=r;const a=YWt.create(o);if(!a.isRenderable)continue;if(!l&&r.popupRef){const c=n.get(r.popupRef);c?c.push(a):n.set(r.popupRef,[a])}const d=a.render();r.hidden&&(d.style.visibility="hidden"),await _(this,iT,obe).call(this,d,r.id),a._isEditable&&(A(this,AV).set(a.data.id,a),(e=this._annotationEditorUIManager)==null||e.renderAnnotationElement(a))}_(this,iT,a4).call(this)}update({viewport:s}){const e=this.div;this.viewport=s,YN(e,{rotation:s.rotation}),_(this,iT,a4).call(this),e.hidden=!1}getEditableAnnotations(){return Array.from(A(this,AV).values())}getEditableAnnotation(s){return A(this,AV).get(s)}},LE=new WeakMap,FV=new WeakMap,AV=new WeakMap,vE=new WeakMap,iT=new WeakSet,obe=async function(s,e){var t,i;const n=s.firstChild||s,o=n.id=`${$le}${e}`,r=await((t=A(this,vE))==null?void 0:t.getAriaAttributes(o));if(r)for(const[l,a]of r)n.setAttribute(l,a);this.div.append(s),(i=A(this,LE))==null||i.moveElementInDOM(this.div,s,n,!1)},a4=function(){if(!A(this,FV))return;const s=this.div;for(const[e,t]of A(this,FV)){const i=s.querySelector(`[data-annotation-id="${e}"]`);if(!i)continue;t.className="annotationContent";const{firstChild:n}=i;n?n.nodeName==="CANVAS"?n.replaceWith(t):n.classList.contains("annotationContent")?n.after(t):n.before(t):i.append(t)}A(this,FV).clear()},rbe);const QG=/\r\n?|\n/g;var ag,Mu,MG,$V,wu,Wh,xMe,IMe,EMe,s_,QS,o_,wG,DMe,qie,GMe;const C0=class Ra extends rl{constructor(e){super({...e,name:"freeTextEditor"}),O(this,Wh),O(this,ag),O(this,Mu,""),O(this,MG,`${this.id}-editor`),O(this,$V,null),O(this,wu),I(this,ag,e.color||Ra._defaultColor||rl._defaultLineColor),I(this,wu,e.fontSize||Ra._defaultFontSize)}static get _keyboardManager(){const e=Ra.prototype,t=o=>o.isEmpty(),i=Fv.TRANSLATE_SMALL,n=Fv.TRANSLATE_BIG;return Vs(this,"_keyboardManager",new Tk([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],e.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],e.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],e._translateEmpty,{args:[-i,0],checker:t}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e._translateEmpty,{args:[-n,0],checker:t}],[["ArrowRight","mac+ArrowRight"],e._translateEmpty,{args:[i,0],checker:t}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e._translateEmpty,{args:[n,0],checker:t}],[["ArrowUp","mac+ArrowUp"],e._translateEmpty,{args:[0,-i],checker:t}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e._translateEmpty,{args:[0,-n],checker:t}],[["ArrowDown","mac+ArrowDown"],e._translateEmpty,{args:[0,i],checker:t}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e._translateEmpty,{args:[0,n],checker:t}]]))}static initialize(e,t){rl.initialize(e,t);const i=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(i.getPropertyValue("--freetext-padding"))}static updateDefaultParams(e,t){switch(e){case Xs.FREETEXT_SIZE:Ra._defaultFontSize=t;break;case Xs.FREETEXT_COLOR:Ra._defaultColor=t;break}}updateParams(e,t){switch(e){case Xs.FREETEXT_SIZE:_(this,Wh,xMe).call(this,t);break;case Xs.FREETEXT_COLOR:_(this,Wh,IMe).call(this,t);break}}static get defaultPropertiesToUpdate(){return[[Xs.FREETEXT_SIZE,Ra._defaultFontSize],[Xs.FREETEXT_COLOR,Ra._defaultColor||rl._defaultLineColor]]}get propertiesToUpdate(){return[[Xs.FREETEXT_SIZE,A(this,wu)],[Xs.FREETEXT_COLOR,A(this,ag)]]}_translateEmpty(e,t){this._uiManager.translateSelectedEditors(e,t,!0)}getInitialTranslation(){const e=this.parentScale;return[-Ra._internalPadding*e,-(Ra._internalPadding+A(this,wu))*e]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(this.isInEditMode())return;this.parent.setEditingState(!1),this.parent.updateToolbar(ds.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),I(this,$V,new AbortController);const e=this._uiManager.combinedSignal(A(this,$V));this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:e}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:e}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:e}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:e}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:e})}disableEditMode(){var e;this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",A(this,MG)),this._isDraggable=!0,(e=A(this,$V))==null||e.abort(),I(this,$V,null),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"))}focusin(e){this._focusEventsAllowed&&(super.focusin(e),e.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(e){var t;this.width||(this.enableEditMode(),e&&this.editorDiv.focus(),(t=this._initialOptions)!=null&&t.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const e=A(this,Mu),t=I(this,Mu,_(this,Wh,EMe).call(this).trimEnd());if(e===t)return;const i=n=>{if(I(this,Mu,n),!n){this.remove();return}_(this,Wh,wG).call(this),this._uiManager.rebuild(this),_(this,Wh,s_).call(this)};this.addCommands({cmd:()=>{i(t)},undo:()=>{i(e)},mustExec:!1}),_(this,Wh,s_).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(e){this.enterInEditMode()}keydown(e){e.target===this.div&&e.key==="Enter"&&(this.enterInEditMode(),e.preventDefault())}editorDivKeydown(e){Ra._keyboardManager.exec(this,e)}editorDivFocus(e){this.isEditing=!0}editorDivBlur(e){this.isEditing=!1}editorDivInput(e){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let e,t;this.width&&(e=this.x,t=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",A(this,MG)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:i}=this.editorDiv;if(i.fontSize=`calc(${A(this,wu)}px * var(--scale-factor))`,i.color=A(this,ag),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),OY(this,this.div,["dblclick","keydown"]),this.width){const[n,o]=this.parentDimensions;if(this.annotationElementId){const{position:r}=this._initialData;let[l,a]=this.getInitialTranslation();[l,a]=this.pageTranslationToScreen(l,a);const[d,c]=this.pageDimensions,[h,u]=this.pageTranslation;let m,p;switch(this.rotation){case 0:m=e+(r[0]-h)/d,p=t+this.height-(r[1]-u)/c;break;case 90:m=e+(r[0]-h)/d,p=t-(r[1]-u)/c,[l,a]=[a,-l];break;case 180:m=e-this.width+(r[0]-h)/d,p=t-(r[1]-u)/c,[l,a]=[-l,-a];break;case 270:m=e+(r[0]-h-this.height*c)/d,p=t+(r[1]-u-this.width*d)/c,[l,a]=[-a,l];break}this.setAt(m*n,p*o,l,a)}else this.setAt(e*n,t*o,this.width*n,this.height*o);_(this,Wh,wG).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(e){var t,i,n;const o=e.clipboardData||window.clipboardData,{types:r}=o;if(r.length===1&&r[0]==="text/plain")return;e.preventDefault();const l=_(t=Ra,QS,qie).call(t,o.getData("text")||"").replaceAll(QG,`
- `);if(!l)return;const a=window.getSelection();if(!a.rangeCount)return;this.editorDiv.normalize(),a.deleteFromDocument();const d=a.getRangeAt(0);if(!l.includes(`
- `)){d.insertNode(document.createTextNode(l)),this.editorDiv.normalize(),a.collapseToStart();return}const{startContainer:c,startOffset:h}=d,u=[],m=[];if(c.nodeType===Node.TEXT_NODE){const f=c.parentElement;if(m.push(c.nodeValue.slice(h).replaceAll(QG,"")),f!==this.editorDiv){let b=u;for(const U of this.editorDiv.childNodes){if(U===f){b=m;continue}b.push(_(i=Ra,QS,o_).call(i,U))}}u.push(c.nodeValue.slice(0,h).replaceAll(QG,""))}else if(c===this.editorDiv){let f=u,b=0;for(const U of this.editorDiv.childNodes)b++===h&&(f=m),f.push(_(n=Ra,QS,o_).call(n,U))}I(this,Mu,`${u.join(`
- `)}${l}${m.join(`
- `)}`),_(this,Wh,wG).call(this);const p=new Range;let g=u.reduce((f,b)=>f+b.length,0);for(const{firstChild:f}of this.editorDiv.childNodes)if(f.nodeType===Node.TEXT_NODE){const b=f.nodeValue.length;if(g<=b){p.setStart(f,g),p.setEnd(f,g);break}g-=b}a.removeAllRanges(),a.addRange(p)}get contentDiv(){return this.editorDiv}static async deserialize(e,t,i){var n;let o=null;if(e instanceof BMe){const{data:{defaultAppearanceData:{fontSize:l,fontColor:a},rect:d,rotation:c,id:h,popupRef:u},textContent:m,textPosition:p,parent:{page:{pageNumber:g}}}=e;if(!m||m.length===0)return null;o=e={annotationType:ds.FREETEXT,color:Array.from(a),fontSize:l,value:m.join(`
- `),position:p,pageIndex:g-1,rect:d.slice(0),rotation:c,id:h,deleted:!1,popupRef:u}}const r=await super.deserialize(e,t,i);return I(r,wu,e.fontSize),I(r,ag,dn.makeHexColor(...e.color)),I(r,Mu,_(n=Ra,QS,qie).call(n,e.value)),r.annotationElementId=e.id||null,r._initialData=o,r}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const t=Ra._internalPadding*this.parentScale,i=this.getRect(t,t),n=rl._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:A(this,ag)),o={annotationType:ds.FREETEXT,color:n,fontSize:A(this,wu),value:_(this,Wh,DMe).call(this),pageIndex:this.pageIndex,rect:i,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return e?o:this.annotationElementId&&!_(this,Wh,GMe).call(this,o)?null:(o.id=this.annotationElementId,o)}renderAnnotationElement(e){const t=super.renderAnnotationElement(e);if(this.deleted)return t;const{style:i}=t;i.fontSize=`calc(${A(this,wu)}px * var(--scale-factor))`,i.color=A(this,ag),t.replaceChildren();for(const o of A(this,Mu).split(`
- `)){const r=document.createElement("div");r.append(o?document.createTextNode(o):document.createElement("br")),t.append(r)}const n=Ra._internalPadding*this.parentScale;return e.updateEdited({rect:this.getRect(n,n),popupContent:A(this,Mu)}),t}resetAnnotationElement(e){super.resetAnnotationElement(e),e.resetEdited()}};ag=new WeakMap,Mu=new WeakMap,MG=new WeakMap,$V=new WeakMap,wu=new WeakMap,Wh=new WeakSet,xMe=function(s){const e=i=>{this.editorDiv.style.fontSize=`calc(${i}px * var(--scale-factor))`,this.translate(0,-(i-A(this,wu))*this.parentScale),I(this,wu,i),_(this,Wh,s_).call(this)},t=A(this,wu);this.addCommands({cmd:e.bind(this,s),undo:e.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Xs.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},IMe=function(s){const e=i=>{I(this,ag,this.editorDiv.style.color=i)},t=A(this,ag);this.addCommands({cmd:e.bind(this,s),undo:e.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Xs.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},EMe=function(){var s;const e=[];this.editorDiv.normalize();let t=null;for(const i of this.editorDiv.childNodes)(t==null?void 0:t.nodeType)===Node.TEXT_NODE&&i.nodeName==="BR"||(e.push(_(s=C0,QS,o_).call(s,i)),t=i);return e.join(`
- `)},s_=function(){const[s,e]=this.parentDimensions;let t;if(this.isAttachedToDOM)t=this.div.getBoundingClientRect();else{const{currentLayer:i,div:n}=this,o=n.style.display,r=n.classList.contains("hidden");n.classList.remove("hidden"),n.style.display="hidden",i.div.append(this.div),t=n.getBoundingClientRect(),n.remove(),n.style.display=o,n.classList.toggle("hidden",r)}this.rotation%180===this.parentRotation%180?(this.width=t.width/s,this.height=t.height/e):(this.width=t.height/s,this.height=t.width/e),this.fixAndSetPosition()},QS=new WeakSet,o_=function(s){return(s.nodeType===Node.TEXT_NODE?s.nodeValue:s.innerText).replaceAll(QG,"")},wG=function(){if(this.editorDiv.replaceChildren(),!!A(this,Mu))for(const s of A(this,Mu).split(`
- `)){const e=document.createElement("div");e.append(s?document.createTextNode(s):document.createElement("br")),this.editorDiv.append(e)}},DMe=function(){return A(this,Mu).replaceAll(" "," ")},qie=function(s){return s.replaceAll(" "," ")},GMe=function(s){const{value:e,fontSize:t,color:i,pageIndex:n}=this._initialData;return this._hasBeenMoved||s.value!==e||s.fontSize!==t||s.color.some((o,r)=>o!==i[r])||s.pageIndex!==n},O(C0,QS),Rn(C0,"_freeTextDefaultContent",""),Rn(C0,"_internalPadding",0),Rn(C0,"_defaultColor",null),Rn(C0,"_defaultFontSize",10),Rn(C0,"_type","freetext"),Rn(C0,"_editorType",ds.FREETEXT);let d1t=C0;class Ei{toSVGPath(){tr("Abstract method `toSVGPath` must be implemented.")}get box(){tr("Abstract getter `box` must be implemented.")}serialize(e,t){tr("Abstract method `serialize` must be implemented.")}static _rescale(e,t,i,n,o,r){r||(r=new Float32Array(e.length));for(let l=0,a=e.length;l<a;l+=2)r[l]=t+e[l]*n,r[l+1]=i+e[l+1]*o;return r}static _rescaleAndSwap(e,t,i,n,o,r){r||(r=new Float32Array(e.length));for(let l=0,a=e.length;l<a;l+=2)r[l]=t+e[l+1]*n,r[l+1]=i+e[l]*o;return r}static _translate(e,t,i,n){n||(n=new Float32Array(e.length));for(let o=0,r=e.length;o<r;o+=2)n[o]=t+e[o],n[o+1]=i+e[o+1];return n}static svgRound(e){return Math.round(e*1e4)}static _normalizePoint(e,t,i,n,o){switch(o){case 90:return[1-t/i,e/n];case 180:return[1-e/i,1-t/n];case 270:return[t/i,1-e/n];default:return[e/i,t/n]}}static _normalizePagePoint(e,t,i){switch(i){case 90:return[1-t,e];case 180:return[1-e,1-t];case 270:return[t,1-e];default:return[e,t]}}static createBezierPoints(e,t,i,n,o,r){return[(e+5*i)/6,(t+5*n)/6,(5*i+o)/6,(5*n+r)/6,(i+o)/2,(n+r)/2]}}Rn(Ei,"PRECISION",1e-4);var Lu,dg,G2,J2,B0,Qs,ty,iy,TG,CG,X2,bC,VZ,BG,d4,$ie,vu,nT,JMe,XMe,YMe,_Me,zMe,OMe;const eW=class ene{constructor({x:e,y:t},i,n,o,r,l=0){O(this,vu),O(this,Lu),O(this,dg,[]),O(this,G2),O(this,J2),O(this,B0,[]),O(this,Qs,new Float32Array(18)),O(this,ty),O(this,iy),O(this,TG),O(this,CG),O(this,X2),O(this,bC),O(this,VZ,[]),I(this,Lu,i),I(this,bC,o*n),I(this,J2,r),A(this,Qs).set([NaN,NaN,NaN,NaN,e,t],6),I(this,G2,l),I(this,CG,A(ene,BG)*n),I(this,TG,A(ene,$ie)*n),I(this,X2,n),A(this,VZ).push(e,t)}isEmpty(){return isNaN(A(this,Qs)[8])}add({x:e,y:t}){var i;I(this,ty,e),I(this,iy,t);const[n,o,r,l]=A(this,Lu);let[a,d,c,h]=A(this,Qs).subarray(8,12);const u=e-c,m=t-h,p=Math.hypot(u,m);if(p<A(this,TG))return!1;const g=p-A(this,CG),f=g/p,b=f*u,U=f*m;let S=a,Z=d;a=c,d=h,c+=b,h+=U,(i=A(this,VZ))==null||i.push(e,t);const R=-U/g,y=b/g,N=R*A(this,bC),w=y*A(this,bC);return A(this,Qs).set(A(this,Qs).subarray(2,8),0),A(this,Qs).set([c+N,h+w],4),A(this,Qs).set(A(this,Qs).subarray(14,18),12),A(this,Qs).set([c-N,h-w],16),isNaN(A(this,Qs)[6])?(A(this,B0).length===0&&(A(this,Qs).set([a+N,d+w],2),A(this,B0).push(NaN,NaN,NaN,NaN,(a+N-n)/r,(d+w-o)/l),A(this,Qs).set([a-N,d-w],14),A(this,dg).push(NaN,NaN,NaN,NaN,(a-N-n)/r,(d-w-o)/l)),A(this,Qs).set([S,Z,a,d,c,h],6),!this.isEmpty()):(A(this,Qs).set([S,Z,a,d,c,h],6),Math.abs(Math.atan2(Z-d,S-a)-Math.atan2(U,b))<Math.PI/2?([a,d,c,h]=A(this,Qs).subarray(2,6),A(this,B0).push(NaN,NaN,NaN,NaN,((a+c)/2-n)/r,((d+h)/2-o)/l),[a,d,S,Z]=A(this,Qs).subarray(14,18),A(this,dg).push(NaN,NaN,NaN,NaN,((S+a)/2-n)/r,((Z+d)/2-o)/l),!0):([S,Z,a,d,c,h]=A(this,Qs).subarray(0,6),A(this,B0).push(((S+5*a)/6-n)/r,((Z+5*d)/6-o)/l,((5*a+c)/6-n)/r,((5*d+h)/6-o)/l,((a+c)/2-n)/r,((d+h)/2-o)/l),[c,h,a,d,S,Z]=A(this,Qs).subarray(12,18),A(this,dg).push(((S+5*a)/6-n)/r,((Z+5*d)/6-o)/l,((5*a+c)/6-n)/r,((5*d+h)/6-o)/l,((a+c)/2-n)/r,((d+h)/2-o)/l),!0))}toSVGPath(){if(this.isEmpty())return"";const e=A(this,B0),t=A(this,dg);if(isNaN(A(this,Qs)[6])&&!this.isEmpty())return _(this,vu,JMe).call(this);const i=[];i.push(`M${e[4]} ${e[5]}`);for(let n=6;n<e.length;n+=6)isNaN(e[n])?i.push(`L${e[n+4]} ${e[n+5]}`):i.push(`C${e[n]} ${e[n+1]} ${e[n+2]} ${e[n+3]} ${e[n+4]} ${e[n+5]}`);_(this,vu,YMe).call(this,i);for(let n=t.length-6;n>=6;n-=6)isNaN(t[n])?i.push(`L${t[n+4]} ${t[n+5]}`):i.push(`C${t[n]} ${t[n+1]} ${t[n+2]} ${t[n+3]} ${t[n+4]} ${t[n+5]}`);return _(this,vu,XMe).call(this,i),i.join(" ")}newFreeDrawOutline(e,t,i,n,o,r){return new HMe(e,t,i,n,o,r)}getOutlines(){var e;const t=A(this,B0),i=A(this,dg),n=A(this,Qs),[o,r,l,a]=A(this,Lu),d=new Float32Array((((e=A(this,VZ))==null?void 0:e.length)??0)+2);for(let u=0,m=d.length-2;u<m;u+=2)d[u]=(A(this,VZ)[u]-o)/l,d[u+1]=(A(this,VZ)[u+1]-r)/a;if(d[d.length-2]=(A(this,ty)-o)/l,d[d.length-1]=(A(this,iy)-r)/a,isNaN(n[6])&&!this.isEmpty())return _(this,vu,_Me).call(this,d);const c=new Float32Array(A(this,B0).length+24+A(this,dg).length);let h=t.length;for(let u=0;u<h;u+=2){if(isNaN(t[u])){c[u]=c[u+1]=NaN;continue}c[u]=t[u],c[u+1]=t[u+1]}h=_(this,vu,OMe).call(this,c,h);for(let u=i.length-6;u>=6;u-=6)for(let m=0;m<6;m+=2){if(isNaN(i[u+m])){c[h]=c[h+1]=NaN,h+=2;continue}c[h]=i[u+m],c[h+1]=i[u+m+1],h+=2}return _(this,vu,zMe).call(this,c,h),this.newFreeDrawOutline(c,d,A(this,Lu),A(this,X2),A(this,G2),A(this,J2))}};Lu=new WeakMap,dg=new WeakMap,G2=new WeakMap,J2=new WeakMap,B0=new WeakMap,Qs=new WeakMap,ty=new WeakMap,iy=new WeakMap,TG=new WeakMap,CG=new WeakMap,X2=new WeakMap,bC=new WeakMap,VZ=new WeakMap,BG=new WeakMap,d4=new WeakMap,$ie=new WeakMap,vu=new WeakSet,nT=function(){const s=A(this,Qs).subarray(4,6),e=A(this,Qs).subarray(16,18),[t,i,n,o]=A(this,Lu);return[(A(this,ty)+(s[0]-e[0])/2-t)/n,(A(this,iy)+(s[1]-e[1])/2-i)/o,(A(this,ty)+(e[0]-s[0])/2-t)/n,(A(this,iy)+(e[1]-s[1])/2-i)/o]},JMe=function(){const[s,e,t,i]=A(this,Lu),[n,o,r,l]=_(this,vu,nT).call(this);return`M${(A(this,Qs)[2]-s)/t} ${(A(this,Qs)[3]-e)/i} L${(A(this,Qs)[4]-s)/t} ${(A(this,Qs)[5]-e)/i} L${n} ${o} L${r} ${l} L${(A(this,Qs)[16]-s)/t} ${(A(this,Qs)[17]-e)/i} L${(A(this,Qs)[14]-s)/t} ${(A(this,Qs)[15]-e)/i} Z`},XMe=function(s){const e=A(this,dg);s.push(`L${e[4]} ${e[5]} Z`)},YMe=function(s){const[e,t,i,n]=A(this,Lu),o=A(this,Qs).subarray(4,6),r=A(this,Qs).subarray(16,18),[l,a,d,c]=_(this,vu,nT).call(this);s.push(`L${(o[0]-e)/i} ${(o[1]-t)/n} L${l} ${a} L${d} ${c} L${(r[0]-e)/i} ${(r[1]-t)/n}`)},_Me=function(s){const e=A(this,Qs),[t,i,n,o]=A(this,Lu),[r,l,a,d]=_(this,vu,nT).call(this),c=new Float32Array(36);return c.set([NaN,NaN,NaN,NaN,(e[2]-t)/n,(e[3]-i)/o,NaN,NaN,NaN,NaN,(e[4]-t)/n,(e[5]-i)/o,NaN,NaN,NaN,NaN,r,l,NaN,NaN,NaN,NaN,a,d,NaN,NaN,NaN,NaN,(e[16]-t)/n,(e[17]-i)/o,NaN,NaN,NaN,NaN,(e[14]-t)/n,(e[15]-i)/o],0),this.newFreeDrawOutline(c,s,A(this,Lu),A(this,X2),A(this,G2),A(this,J2))},zMe=function(s,e){const t=A(this,dg);return s.set([NaN,NaN,NaN,NaN,t[4],t[5]],e),e+=6},OMe=function(s,e){const t=A(this,Qs).subarray(4,6),i=A(this,Qs).subarray(16,18),[n,o,r,l]=A(this,Lu),[a,d,c,h]=_(this,vu,nT).call(this);return s.set([NaN,NaN,NaN,NaN,(t[0]-n)/r,(t[1]-o)/l,NaN,NaN,NaN,NaN,a,d,NaN,NaN,NaN,NaN,c,h,NaN,NaN,NaN,NaN,(i[0]-n)/r,(i[1]-o)/l],e),e+=24},O(eW,BG,8),O(eW,d4,2),O(eW,$ie,A(eW,BG)+A(eW,d4));let jMe=eW;var UC,jW,vU,LG,fu,vG,Zl,tne,PMe;class HMe extends Ei{constructor(e,t,i,n,o,r){super(),O(this,tne),O(this,UC),O(this,jW,new Float32Array(4)),O(this,vU),O(this,LG),O(this,fu),O(this,vG),O(this,Zl),I(this,Zl,e),I(this,fu,t),I(this,UC,i),I(this,vG,n),I(this,vU,o),I(this,LG,r),this.lastPoint=[NaN,NaN],_(this,tne,PMe).call(this,r);const[l,a,d,c]=A(this,jW);for(let h=0,u=e.length;h<u;h+=2)e[h]=(e[h]-l)/d,e[h+1]=(e[h+1]-a)/c;for(let h=0,u=t.length;h<u;h+=2)t[h]=(t[h]-l)/d,t[h+1]=(t[h+1]-a)/c}toSVGPath(){const e=[`M${A(this,Zl)[4]} ${A(this,Zl)[5]}`];for(let t=6,i=A(this,Zl).length;t<i;t+=6){if(isNaN(A(this,Zl)[t])){e.push(`L${A(this,Zl)[t+4]} ${A(this,Zl)[t+5]}`);continue}e.push(`C${A(this,Zl)[t]} ${A(this,Zl)[t+1]} ${A(this,Zl)[t+2]} ${A(this,Zl)[t+3]} ${A(this,Zl)[t+4]} ${A(this,Zl)[t+5]}`)}return e.push("Z"),e.join(" ")}serialize([e,t,i,n],o){const r=i-e,l=n-t;let a,d;switch(o){case 0:a=Ei._rescale(A(this,Zl),e,n,r,-l),d=Ei._rescale(A(this,fu),e,n,r,-l);break;case 90:a=Ei._rescaleAndSwap(A(this,Zl),e,t,r,l),d=Ei._rescaleAndSwap(A(this,fu),e,t,r,l);break;case 180:a=Ei._rescale(A(this,Zl),i,t,-r,l),d=Ei._rescale(A(this,fu),i,t,-r,l);break;case 270:a=Ei._rescaleAndSwap(A(this,Zl),i,n,-r,-l),d=Ei._rescaleAndSwap(A(this,fu),i,n,-r,-l);break}return{outline:Array.from(a),points:[Array.from(d)]}}get box(){return A(this,jW)}newOutliner(e,t,i,n,o,r=0){return new jMe(e,t,i,n,o,r)}getNewOutline(e,t){const[i,n,o,r]=A(this,jW),[l,a,d,c]=A(this,UC),h=o*d,u=r*c,m=i*d+l,p=n*c+a,g=this.newOutliner({x:A(this,fu)[0]*h+m,y:A(this,fu)[1]*u+p},A(this,UC),A(this,vG),e,A(this,LG),t??A(this,vU));for(let f=2;f<A(this,fu).length;f+=2)g.add({x:A(this,fu)[f]*h+m,y:A(this,fu)[f+1]*u+p});return g.getOutlines()}}UC=new WeakMap,jW=new WeakMap,vU=new WeakMap,LG=new WeakMap,fu=new WeakMap,vG=new WeakMap,Zl=new WeakMap,tne=new WeakSet,PMe=function(s){const e=A(this,Zl);let t=e[4],i=e[5],n=t,o=i,r=t,l=i,a=t,d=i;const c=s?Math.max:Math.min;for(let u=6,m=e.length;u<m;u+=6){if(isNaN(e[u]))n=Math.min(n,e[u+4]),o=Math.min(o,e[u+5]),r=Math.max(r,e[u+4]),l=Math.max(l,e[u+5]),d<e[u+5]?(a=e[u+4],d=e[u+5]):d===e[u+5]&&(a=c(a,e[u+4]));else{const p=dn.bezierBoundingBox(t,i,...e.slice(u,u+6));n=Math.min(n,p[0]),o=Math.min(o,p[1]),r=Math.max(r,p[2]),l=Math.max(l,p[3]),d<p[3]?(a=p[2],d=p[3]):d===p[3]&&(a=c(a,p[2]))}t=e[u+4],i=e[u+5]}const h=A(this,jW);h[0]=n-A(this,vU),h[1]=o-A(this,vU),h[2]=r-n+2*A(this,vU),h[3]=l-o+2*A(this,vU),this.lastPoint=[a,d]};var r_,l_,WZ,_p,Ug,KMe,kE,qMe,$Me,ine;class nne{constructor(e,t=0,i=0,n=!0){O(this,Ug),O(this,r_),O(this,l_),O(this,WZ,[]),O(this,_p,[]);let o=1/0,r=-1/0,l=1/0,a=-1/0;const d=10**-4;for(const{x:f,y:b,width:U,height:S}of e){const Z=Math.floor((f-t)/d)*d,R=Math.ceil((f+U+t)/d)*d,y=Math.floor((b-t)/d)*d,N=Math.ceil((b+S+t)/d)*d,w=[Z,y,N,!0],Q=[R,y,N,!1];A(this,WZ).push(w,Q),o=Math.min(o,Z),r=Math.max(r,R),l=Math.min(l,y),a=Math.max(a,N)}const c=r-o+2*i,h=a-l+2*i,u=o-i,m=l-i,p=A(this,WZ).at(n?-1:-2),g=[p[0],p[2]];for(const f of A(this,WZ)){const[b,U,S]=f;f[0]=(b-u)/c,f[1]=(U-m)/h,f[2]=(S-m)/h}I(this,r_,new Float32Array([u,m,c,h])),I(this,l_,g)}getOutlines(){A(this,WZ).sort((t,i)=>t[0]-i[0]||t[1]-i[1]||t[2]-i[2]);const e=[];for(const t of A(this,WZ))t[3]?(e.push(..._(this,Ug,ine).call(this,t)),_(this,Ug,qMe).call(this,t)):(_(this,Ug,$Me).call(this,t),e.push(..._(this,Ug,ine).call(this,t)));return _(this,Ug,KMe).call(this,e)}}r_=new WeakMap,l_=new WeakMap,WZ=new WeakMap,_p=new WeakMap,Ug=new WeakSet,KMe=function(s){const e=[],t=new Set;for(const o of s){const[r,l,a]=o;e.push([r,l,o],[r,a,o])}e.sort((o,r)=>o[1]-r[1]||o[0]-r[0]);for(let o=0,r=e.length;o<r;o+=2){const l=e[o][2],a=e[o+1][2];l.push(a),a.push(l),t.add(l),t.add(a)}const i=[];let n;for(;t.size>0;){const o=t.values().next().value;let[r,l,a,d,c]=o;t.delete(o);let h=r,u=l;for(n=[r,a],i.push(n);;){let m;if(t.has(d))m=d;else if(t.has(c))m=c;else break;t.delete(m),[r,l,a,d,c]=m,h!==r&&(n.push(h,u,r,u===l?l:a),h=r),u=u===l?a:l}n.push(h,u)}return new c1t(i,A(this,r_),A(this,l_))},kE=function(s){const e=A(this,_p);let t=0,i=e.length-1;for(;t<=i;){const n=t+i>>1,o=e[n][0];if(o===s)return n;o<s?t=n+1:i=n-1}return i+1},qMe=function([,s,e]){const t=_(this,Ug,kE).call(this,s);A(this,_p).splice(t,0,[s,e])},$Me=function([,s,e]){const t=_(this,Ug,kE).call(this,s);for(let i=t;i<A(this,_p).length;i++){const[n,o]=A(this,_p)[i];if(n!==s)break;if(n===s&&o===e){A(this,_p).splice(i,1);return}}for(let i=t-1;i>=0;i--){const[n,o]=A(this,_p)[i];if(n!==s)break;if(n===s&&o===e){A(this,_p).splice(i,1);return}}},ine=function(s){const[e,t,i]=s,n=[[e,t,i]],o=_(this,Ug,kE).call(this,i);for(let r=0;r<o;r++){const[l,a]=A(this,_p)[r];for(let d=0,c=n.length;d<c;d++){const[,h,u]=n[d];if(!(a<=h||u<=l)){if(h>=l){if(u>a)n[d][1]=a;else{if(c===1)return[];n.splice(d,1),d--,c--}continue}n[d][2]=l,u>a&&n.push([e,a,u])}}}return n};var kG,FC;class c1t extends Ei{constructor(e,t,i){super(),O(this,kG),O(this,FC),I(this,FC,e),I(this,kG,t),this.lastPoint=i}toSVGPath(){const e=[];for(const t of A(this,FC)){let[i,n]=t;e.push(`M${i} ${n}`);for(let o=2;o<t.length;o+=2){const r=t[o],l=t[o+1];r===i?(e.push(`V${l}`),n=l):l===n&&(e.push(`H${r}`),i=r)}e.push("Z")}return e.join(" ")}serialize([e,t,i,n],o){const r=[],l=i-e,a=n-t;for(const d of A(this,FC)){const c=new Array(d.length);for(let h=0;h<d.length;h+=2)c[h]=e+d[h]*l,c[h+1]=n-d[h+1]*a;r.push(c)}return r}get box(){return A(this,kG)}get classNamesForOutlining(){return["highlightOutline"]}}kG=new WeakMap,FC=new WeakMap;class sne extends jMe{newFreeDrawOutline(e,t,i,n,o,r){return new h1t(e,t,i,n,o,r)}}class h1t extends HMe{newOutliner(e,t,i,n,o,r=0){return new sne(e,t,i,n,o,r)}}var kp,ZV,sT,oa,xE,oT,IE,EE,PA,xp,rT,Zh,lT,kr,c4,h4,u4,HA,lbe,Lb;let ewe=(Zh=class{constructor({editor:s=null,uiManager:e=null}){O(this,kr),O(this,kp,null),O(this,ZV,null),O(this,sT),O(this,oa,null),O(this,xE,!1),O(this,oT,!1),O(this,IE,null),O(this,EE),O(this,PA,null),O(this,xp,null),O(this,rT);var t;s?(I(this,oT,!1),I(this,rT,Xs.HIGHLIGHT_COLOR),I(this,IE,s)):(I(this,oT,!0),I(this,rT,Xs.HIGHLIGHT_DEFAULT_COLOR)),I(this,xp,(s==null?void 0:s._uiManager)||e),I(this,EE,A(this,xp)._eventBus),I(this,sT,(s==null?void 0:s.color)||((t=A(this,xp))==null?void 0:t.highlightColors.values().next().value)||"#FFFF98"),A(Zh,lT)||I(Zh,lT,Object.freeze({blue:"pdfjs-editor-colorpicker-blue",green:"pdfjs-editor-colorpicker-green",pink:"pdfjs-editor-colorpicker-pink",red:"pdfjs-editor-colorpicker-red",yellow:"pdfjs-editor-colorpicker-yellow"}))}static get _keyboardManager(){return Vs(this,"_keyboardManager",new Tk([[["Escape","mac+Escape"],Zh.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],Zh.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],Zh.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],Zh.prototype._moveToPrevious],[["Home","mac+Home"],Zh.prototype._moveToBeginning],[["End","mac+End"],Zh.prototype._moveToEnd]]))}renderButton(){const s=I(this,kp,document.createElement("button"));s.className="colorPicker",s.tabIndex="0",s.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),s.setAttribute("aria-haspopup",!0);const e=A(this,xp)._signal;s.addEventListener("click",_(this,kr,HA).bind(this),{signal:e}),s.addEventListener("keydown",_(this,kr,u4).bind(this),{signal:e});const t=I(this,ZV,document.createElement("span"));return t.className="swatch",t.setAttribute("aria-hidden",!0),t.style.backgroundColor=A(this,sT),s.append(t),s}renderMainDropdown(){const s=I(this,oa,_(this,kr,c4).call(this));return s.setAttribute("aria-orientation","horizontal"),s.setAttribute("aria-labelledby","highlightColorPickerLabel"),s}_colorSelectFromKeyboard(s){if(s.target===A(this,kp)){_(this,kr,HA).call(this,s);return}const e=s.target.getAttribute("data-color");e&&_(this,kr,h4).call(this,e,s)}_moveToNext(s){var e,t;if(!A(this,kr,Lb)){_(this,kr,HA).call(this,s);return}if(s.target===A(this,kp)){(e=A(this,oa).firstChild)==null||e.focus();return}(t=s.target.nextSibling)==null||t.focus()}_moveToPrevious(s){var e,t;if(s.target===((e=A(this,oa))==null?void 0:e.firstChild)||s.target===A(this,kp)){A(this,kr,Lb)&&this._hideDropdownFromKeyboard();return}A(this,kr,Lb)||_(this,kr,HA).call(this,s),(t=s.target.previousSibling)==null||t.focus()}_moveToBeginning(s){var e;if(!A(this,kr,Lb)){_(this,kr,HA).call(this,s);return}(e=A(this,oa).firstChild)==null||e.focus()}_moveToEnd(s){var e;if(!A(this,kr,Lb)){_(this,kr,HA).call(this,s);return}(e=A(this,oa).lastChild)==null||e.focus()}hideDropdown(){var s,e;(s=A(this,oa))==null||s.classList.add("hidden"),(e=A(this,PA))==null||e.abort(),I(this,PA,null)}_hideDropdownFromKeyboard(){var s;if(!A(this,oT)){if(!A(this,kr,Lb)){(s=A(this,IE))==null||s.unselect();return}this.hideDropdown(),A(this,kp).focus({preventScroll:!0,focusVisible:A(this,xE)})}}updateColor(s){if(A(this,ZV)&&(A(this,ZV).style.backgroundColor=s),!A(this,oa))return;const e=A(this,xp).highlightColors.values();for(const t of A(this,oa).children)t.setAttribute("aria-selected",e.next().value===s)}destroy(){var s,e;(s=A(this,kp))==null||s.remove(),I(this,kp,null),I(this,ZV,null),(e=A(this,oa))==null||e.remove(),I(this,oa,null)}},kp=new WeakMap,ZV=new WeakMap,sT=new WeakMap,oa=new WeakMap,xE=new WeakMap,oT=new WeakMap,IE=new WeakMap,EE=new WeakMap,PA=new WeakMap,xp=new WeakMap,rT=new WeakMap,lT=new WeakMap,kr=new WeakSet,c4=function(){const s=document.createElement("div"),e=A(this,xp)._signal;s.addEventListener("contextmenu",pp,{signal:e}),s.className="dropdown",s.role="listbox",s.setAttribute("aria-multiselectable",!1),s.setAttribute("aria-orientation","vertical"),s.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");for(const[t,i]of A(this,xp).highlightColors){const n=document.createElement("button");n.tabIndex="0",n.role="option",n.setAttribute("data-color",i),n.title=t,n.setAttribute("data-l10n-id",A(Zh,lT)[t]);const o=document.createElement("span");n.append(o),o.className="swatch",o.style.backgroundColor=i,n.setAttribute("aria-selected",i===A(this,sT)),n.addEventListener("click",_(this,kr,h4).bind(this,i),{signal:e}),s.append(n)}return s.addEventListener("keydown",_(this,kr,u4).bind(this),{signal:e}),s},h4=function(s,e){e.stopPropagation(),A(this,EE).dispatch("switchannotationeditorparams",{source:this,type:A(this,rT),value:s})},u4=function(s){Zh._keyboardManager.exec(this,s)},HA=function(s){if(A(this,kr,Lb)){this.hideDropdown();return}if(I(this,xE,s.detail===0),A(this,PA)||(I(this,PA,new AbortController),window.addEventListener("pointerdown",_(this,kr,lbe).bind(this),{signal:A(this,xp).combinedSignal(A(this,PA))})),A(this,oa)){A(this,oa).classList.remove("hidden");return}const e=I(this,oa,_(this,kr,c4).call(this));A(this,kp).append(e)},lbe=function(s){var e;(e=A(this,oa))!=null&&e.contains(s.target)||this.hideDropdown()},Lb=function(){return A(this,oa)&&!A(this,oa).classList.contains("hidden")},O(Zh,lT,null),Zh);var Y2,a_,rF,PW,_2,yh,d_,c_,ny,vm,Wu,pd,z2,lF,$d,AC,Jm,xG,To,one,h_,twe,iwe,abe,rne,yZ,pf,sy,nwe,IG,O2,swe,owe,rwe,lwe,awe;const yc=class ld extends rl{constructor(e){super({...e,name:"highlightEditor"}),O(this,To),O(this,Y2,null),O(this,a_,0),O(this,rF),O(this,PW,null),O(this,_2,null),O(this,yh,null),O(this,d_,null),O(this,c_,0),O(this,ny,null),O(this,vm,null),O(this,Wu,null),O(this,pd,!1),O(this,z2,null),O(this,lF),O(this,$d,null),O(this,AC,""),O(this,Jm),O(this,xG,""),this.color=e.color||ld._defaultColor,I(this,Jm,e.thickness||ld._defaultThickness),I(this,lF,e.opacity||ld._defaultOpacity),I(this,rF,e.boxes||null),I(this,xG,e.methodOfCreation||""),I(this,AC,e.text||""),this._isDraggable=!1,e.highlightId>-1?(I(this,pd,!0),_(this,To,h_).call(this,e),_(this,To,yZ).call(this)):A(this,rF)&&(I(this,Y2,e.anchorNode),I(this,a_,e.anchorOffset),I(this,d_,e.focusNode),I(this,c_,e.focusOffset),_(this,To,one).call(this),_(this,To,yZ).call(this),this.rotate(this.rotation))}static get _keyboardManager(){const e=ld.prototype;return Vs(this,"_keyboardManager",new Tk([[["ArrowLeft","mac+ArrowLeft"],e._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],e._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],e._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],e._moveCaret,{args:[3]}]]))}get telemetryInitialData(){return{action:"added",type:A(this,pd)?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:A(this,Jm),methodOfCreation:A(this,xG)}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.highlightColorNames.get(this.color)}}static computeTelemetryFinalData(e){return{numberOfColors:e.get("color").size}}static initialize(e,t){var i;rl.initialize(e,t),ld._defaultColor||(ld._defaultColor=((i=t.highlightColors)==null?void 0:i.values().next().value)||"#fff066")}static updateDefaultParams(e,t){switch(e){case Xs.HIGHLIGHT_DEFAULT_COLOR:ld._defaultColor=t;break;case Xs.HIGHLIGHT_THICKNESS:ld._defaultThickness=t;break}}translateInPage(e,t){}get toolbarPosition(){return A(this,z2)}updateParams(e,t){switch(e){case Xs.HIGHLIGHT_COLOR:_(this,To,twe).call(this,t);break;case Xs.HIGHLIGHT_THICKNESS:_(this,To,iwe).call(this,t);break}}static get defaultPropertiesToUpdate(){return[[Xs.HIGHLIGHT_DEFAULT_COLOR,ld._defaultColor],[Xs.HIGHLIGHT_THICKNESS,ld._defaultThickness]]}get propertiesToUpdate(){return[[Xs.HIGHLIGHT_COLOR,this.color||ld._defaultColor],[Xs.HIGHLIGHT_THICKNESS,A(this,Jm)||ld._defaultThickness],[Xs.HIGHLIGHT_FREE,A(this,pd)]]}async addEditToolbar(){const e=await super.addEditToolbar();return e?(this._uiManager.highlightColors&&(I(this,_2,new ewe({editor:this})),e.addColorPicker(A(this,_2))),e):null}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(_(this,To,O2).call(this))}getBaseTranslation(){return[0,0]}getRect(e,t){return super.getRect(e,t,_(this,To,O2).call(this))}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),e&&this.div.focus()}remove(){_(this,To,rne).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(_(this,To,yZ).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){var t;let i=!1;this.parent&&!e?_(this,To,rne).call(this):e&&(_(this,To,yZ).call(this,e),i=!this.parent&&((t=this.div)==null?void 0:t.classList.contains("selectedEditor"))),super.setParent(e),this.show(this._isVisible),i&&this.select()}rotate(e){var t,i,n;const{drawLayer:o}=this.parent;let r;A(this,pd)?(e=(e-this.rotation+360)%360,r=_(t=ld,pf,sy).call(t,A(this,vm).box,e)):r=_(i=ld,pf,sy).call(i,[this.x,this.y,this.width,this.height],e),o.updateProperties(A(this,Wu),{bbox:r,root:{"data-main-rotation":e}}),o.updateProperties(A(this,$d),{bbox:_(n=ld,pf,sy).call(n,A(this,yh).box,e),root:{"data-main-rotation":e}})}render(){if(this.div)return this.div;const e=super.render();A(this,AC)&&(e.setAttribute("aria-label",A(this,AC)),e.setAttribute("role","mark")),A(this,pd)?e.classList.add("free"):this.div.addEventListener("keydown",_(this,To,nwe).bind(this),{signal:this._uiManager._signal});const t=I(this,ny,document.createElement("div"));e.append(t),t.setAttribute("aria-hidden","true"),t.className="internal",t.style.clipPath=A(this,PW);const[i,n]=this.parentDimensions;return this.setDims(this.width*i,this.height*n),OY(this,A(this,ny),["pointerover","pointerleave"]),this.enableEditing(),e}pointerover(){var e;this.isSelected||(e=this.parent)==null||e.drawLayer.updateProperties(A(this,$d),{rootClass:{hovered:!0}})}pointerleave(){var e;this.isSelected||(e=this.parent)==null||e.drawLayer.updateProperties(A(this,$d),{rootClass:{hovered:!1}})}_moveCaret(e){switch(this.parent.unselect(this),e){case 0:case 2:_(this,To,IG).call(this,!0);break;case 1:case 3:_(this,To,IG).call(this,!1);break}}select(){var e;super.select(),A(this,$d)&&((e=this.parent)==null||e.drawLayer.updateProperties(A(this,$d),{rootClass:{hovered:!1,selected:!0}}))}unselect(){var e;super.unselect(),A(this,$d)&&((e=this.parent)==null||e.drawLayer.updateProperties(A(this,$d),{rootClass:{selected:!1}}),A(this,pd)||_(this,To,IG).call(this,!1))}get _mustFixPosition(){return!A(this,pd)}show(e=this._isVisible){super.show(e),this.parent&&(this.parent.drawLayer.updateProperties(A(this,Wu),{rootClass:{hidden:!e}}),this.parent.drawLayer.updateProperties(A(this,$d),{rootClass:{hidden:!e}}))}static startHighlighting(e,t,{target:i,x:n,y:o}){const{x:r,y:l,width:a,height:d}=i.getBoundingClientRect(),c=new AbortController,h=e.combinedSignal(c),u=m=>{c.abort(),_(this,pf,lwe).call(this,e,m)};window.addEventListener("blur",u,{signal:h}),window.addEventListener("pointerup",u,{signal:h}),window.addEventListener("pointerdown",Eh,{capture:!0,passive:!1,signal:h}),window.addEventListener("contextmenu",pp,{signal:h}),i.addEventListener("pointermove",_(this,pf,rwe).bind(this,e),{signal:h}),this._freeHighlight=new sne({x:n,y:o},[r,l,a,d],e.scale,this._defaultThickness/2,t,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static async deserialize(e,t,i){var n,o,r,l;let a=null;if(e instanceof vMe){const{data:{quadPoints:U,rect:S,rotation:Z,id:R,color:y,opacity:N,popupRef:w},parent:{page:{pageNumber:Q}}}=e;a=e={annotationType:ds.HIGHLIGHT,color:Array.from(y),opacity:N,quadPoints:U,boxes:null,pageIndex:Q-1,rect:S.slice(0),rotation:Z,id:R,deleted:!1,popupRef:w}}else if(e instanceof lae){const{data:{inkLists:U,rect:S,rotation:Z,id:R,color:y,borderStyle:{rawWidth:N},popupRef:w},parent:{page:{pageNumber:Q}}}=e;a=e={annotationType:ds.HIGHLIGHT,color:Array.from(y),thickness:N,inkLists:U,boxes:null,pageIndex:Q-1,rect:S.slice(0),rotation:Z,id:R,deleted:!1,popupRef:w}}const{color:d,quadPoints:c,inkLists:h,opacity:u}=e,m=await super.deserialize(e,t,i);m.color=dn.makeHexColor(...d),I(m,lF,u||1),h&&I(m,Jm,e.thickness),m.annotationElementId=e.id||null,m._initialData=a;const[p,g]=m.pageDimensions,[f,b]=m.pageTranslation;if(c){const U=I(m,rF,[]);for(let S=0;S<c.length;S+=8)U.push({x:(c[S]-f)/p,y:1-(c[S+1]-b)/g,width:(c[S+2]-c[S])/p,height:(c[S+1]-c[S+5])/g});_(n=m,To,one).call(n),_(o=m,To,yZ).call(o),m.rotate(m.rotation)}else if(h){I(m,pd,!0);const U=h[0],S={x:U[0]-f,y:g-(U[1]-b)},Z=new sne(S,[0,0,p,g],1,A(m,Jm)/2,!0,.001);for(let N=0,w=U.length;N<w;N+=2)S.x=U[N]-f,S.y=g-(U[N+1]-b),Z.add(S);const{id:R,clipPathId:y}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:m.color,"fill-opacity":m._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:Z.toSVGPath()}},!0,!0);_(r=m,To,h_).call(r,{highlightOutlines:Z.getOutlines(),highlightId:R,clipPathId:y}),_(l=m,To,yZ).call(l)}return m}serialize(e=!1){if(this.isEmpty()||e)return null;if(this.deleted)return this.serializeDeleted();const t=this.getRect(0,0),i=rl._colorManager.convert(this.color),n={annotationType:ds.HIGHLIGHT,color:i,opacity:A(this,lF),thickness:A(this,Jm),quadPoints:_(this,To,swe).call(this),outlines:_(this,To,owe).call(this,t),pageIndex:this.pageIndex,rect:t,rotation:_(this,To,O2).call(this),structTreeParentId:this._structTreeParentId};return this.annotationElementId&&!_(this,To,awe).call(this,n)?null:(n.id=this.annotationElementId,n)}renderAnnotationElement(e){return e.updateEdited({rect:this.getRect(0,0)}),null}static canCreateNewEmptyEditor(){return!1}};Y2=new WeakMap,a_=new WeakMap,rF=new WeakMap,PW=new WeakMap,_2=new WeakMap,yh=new WeakMap,d_=new WeakMap,c_=new WeakMap,ny=new WeakMap,vm=new WeakMap,Wu=new WeakMap,pd=new WeakMap,z2=new WeakMap,lF=new WeakMap,$d=new WeakMap,AC=new WeakMap,Jm=new WeakMap,xG=new WeakMap,To=new WeakSet,one=function(){const s=new nne(A(this,rF),.001);I(this,vm,s.getOutlines()),[this.x,this.y,this.width,this.height]=A(this,vm).box;const e=new nne(A(this,rF),.0025,.001,this._uiManager.direction==="ltr");I(this,yh,e.getOutlines());const{lastPoint:t}=A(this,yh);I(this,z2,[(t[0]-this.x)/this.width,(t[1]-this.y)/this.height])},h_=function({highlightOutlines:s,highlightId:e,clipPathId:t}){var i,n;if(I(this,vm,s),I(this,yh,s.getNewOutline(A(this,Jm)/2+1.5,.0025)),e>=0)I(this,Wu,e),I(this,PW,t),this.parent.drawLayer.finalizeDraw(e,{bbox:s.box,path:{d:s.toSVGPath()}}),I(this,$d,this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:A(this,yh).box,path:{d:A(this,yh).toSVGPath()}},!0));else if(this.parent){const c=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(A(this,Wu),{bbox:_(i=yc,pf,sy).call(i,A(this,vm).box,(c-this.rotation+360)%360),path:{d:s.toSVGPath()}}),this.parent.drawLayer.updateProperties(A(this,$d),{bbox:_(n=yc,pf,sy).call(n,A(this,yh).box,c),path:{d:A(this,yh).toSVGPath()}})}const[o,r,l,a]=s.box;switch(this.rotation){case 0:this.x=o,this.y=r,this.width=l,this.height=a;break;case 90:{const[c,h]=this.parentDimensions;this.x=r,this.y=1-o,this.width=l*h/c,this.height=a*c/h;break}case 180:this.x=1-o,this.y=1-r,this.width=l,this.height=a;break;case 270:{const[c,h]=this.parentDimensions;this.x=1-r,this.y=o,this.width=l*h/c,this.height=a*c/h;break}}const{lastPoint:d}=A(this,yh);I(this,z2,[(d[0]-o)/l,(d[1]-r)/a])},twe=function(s){const e=(n,o)=>{var r,l;this.color=n,I(this,lF,o),(r=this.parent)==null||r.drawLayer.updateProperties(A(this,Wu),{root:{fill:n,"fill-opacity":o}}),(l=A(this,_2))==null||l.updateColor(n)},t=this.color,i=A(this,lF);this.addCommands({cmd:e.bind(this,s,yc._defaultOpacity),undo:e.bind(this,t,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Xs.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(s)},!0)},iwe=function(s){const e=A(this,Jm),t=i=>{I(this,Jm,i),_(this,To,abe).call(this,i)};this.addCommands({cmd:t.bind(this,s),undo:t.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Xs.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:s},!0)},abe=function(s){if(!A(this,pd))return;_(this,To,h_).call(this,{highlightOutlines:A(this,vm).getNewOutline(s/2)}),this.fixAndSetPosition();const[e,t]=this.parentDimensions;this.setDims(this.width*e,this.height*t)},rne=function(){A(this,Wu)===null||!this.parent||(this.parent.drawLayer.remove(A(this,Wu)),I(this,Wu,null),this.parent.drawLayer.remove(A(this,$d)),I(this,$d,null))},yZ=function(s=this.parent){A(this,Wu)===null&&({id:mc(this,Wu)._,clipPathId:mc(this,PW)._}=s.drawLayer.draw({bbox:A(this,vm).box,root:{viewBox:"0 0 1 1",fill:this.color,"fill-opacity":A(this,lF)},rootClass:{highlight:!0,free:A(this,pd)},path:{d:A(this,vm).toSVGPath()}},!1,!0),I(this,$d,s.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:A(this,pd)},bbox:A(this,yh).box,path:{d:A(this,yh).toSVGPath()}},A(this,pd))),A(this,ny)&&(A(this,ny).style.clipPath=A(this,PW)))},pf=new WeakSet,sy=function([s,e,t,i],n){switch(n){case 90:return[1-e-i,s,i,t];case 180:return[1-s-t,1-e-i,t,i];case 270:return[e,1-s-t,i,t]}return[s,e,t,i]},nwe=function(s){yc._keyboardManager.exec(this,s)},IG=function(s){if(!A(this,Y2))return;const e=window.getSelection();s?e.setPosition(A(this,Y2),A(this,a_)):e.setPosition(A(this,d_),A(this,c_))},O2=function(){return A(this,pd)?this.rotation:0},swe=function(){if(A(this,pd))return null;const[s,e]=this.pageDimensions,[t,i]=this.pageTranslation,n=A(this,rF),o=new Float32Array(n.length*8);let r=0;for(const{x:l,y:a,width:d,height:c}of n){const h=l*s+t,u=(1-a)*e+i;o[r]=o[r+4]=h,o[r+1]=o[r+3]=u,o[r+2]=o[r+6]=h+d*s,o[r+5]=o[r+7]=u-c*e,r+=8}return o},owe=function(s){return A(this,vm).serialize(s,_(this,To,O2).call(this))},rwe=function(s,e){this._freeHighlight.add(e)&&s.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})},lwe=function(s,e){this._freeHighlight.isEmpty()?s.drawLayer.remove(this._freeHighlightId):s.createAndAddNewEditor(e,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},awe=function(s){const{color:e}=this._initialData;return s.color.some((t,i)=>t!==e[i])},O(yc,pf),Rn(yc,"_defaultColor",null),Rn(yc,"_defaultOpacity",1),Rn(yc,"_defaultThickness",12),Rn(yc,"_type","highlight"),Rn(yc,"_editorType",ds.HIGHLIGHT),Rn(yc,"_freeHighlightId",-1),Rn(yc,"_freeHighlight",null),Rn(yc,"_freeHighlightClipId","");let dbe=yc;var tW;class u1t{constructor(){O(this,tW,Object.create(null))}updateProperty(e,t){this[e]=t,this.updateSVGProperty(e,t)}updateProperties(e){if(e)for(const[t,i]of Object.entries(e))this.updateProperty(t,i)}updateSVGProperty(e,t){A(this,tW)[e]=t}toSVGProperties(){const e=A(this,tW);return I(this,tW,Object.create(null)),{root:e}}reset(){I(this,tW,Object.create(null))}updateAll(e=this){this.updateProperties(e)}clone(){tr("Not implemented")}}tW=new WeakMap;var yu,ZC,Qa,HW,KW,aU,dU,cU,qW,hr,lne,m4,ane,SC,cbe,EG,j2,iW;const bu=class Cn extends rl{constructor(e){super(e),O(this,hr),O(this,yu,null),O(this,ZC),Rn(this,"_drawId",null),I(this,ZC,e.mustBeCommitted||!1),e.drawOutlines&&(_(this,hr,lne).call(this,e),_(this,hr,SC).call(this))}static _mergeSVGProperties(e,t){const i=new Set(Object.keys(e));for(const[n,o]of Object.entries(t))i.has(n)?Object.assign(e[n],o):e[n]=o;return e}static getDefaultDrawingOptions(e){tr("Not implemented")}static get typesMap(){tr("Not implemented")}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(e,t){const i=this.typesMap.get(e);i&&this._defaultDrawingOptions.updateProperty(i,t),this._currentParent&&(A(Cn,Qa).updateProperty(i,t),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(e,t){const i=this.constructor.typesMap.get(e);i&&this._updateProperty(e,i,t)}static get defaultPropertiesToUpdate(){const e=[],t=this._defaultDrawingOptions;for(const[i,n]of this.typesMap)e.push([i,t[n]]);return e}get propertiesToUpdate(){const e=[],{_drawingOptions:t}=this;for(const[i,n]of this.constructor.typesMap)e.push([i,t[n]]);return e}_updateProperty(e,t,i){const n=this._drawingOptions,o=n[t],r=l=>{var a;n.updateProperty(t,l);const d=A(this,yu).updateProperty(t,l);d&&_(this,hr,j2).call(this,d),(a=this.parent)==null||a.drawLayer.updateProperties(this._drawId,n.toSVGProperties())};this.addCommands({cmd:r.bind(this,i),undo:r.bind(this,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:e,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,Cn._mergeSVGProperties(A(this,yu).getPathResizingSVGProperties(_(this,hr,EG).call(this)),{bbox:_(this,hr,iW).call(this)}))}_onResized(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,Cn._mergeSVGProperties(A(this,yu).getPathResizedSVGProperties(_(this,hr,EG).call(this)),{bbox:_(this,hr,iW).call(this)}))}_onTranslating(e,t){var i;(i=this.parent)==null||i.drawLayer.updateProperties(this._drawId,{bbox:_(this,hr,iW).call(this,e,t)})}_onTranslated(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,Cn._mergeSVGProperties(A(this,yu).getPathTranslatedSVGProperties(_(this,hr,EG).call(this),this.parentDimensions),{bbox:_(this,hr,iW).call(this)}))}_onStartDragging(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,A(this,ZC)&&(I(this,ZC,!1),this.commit(),this.parent.setSelected(this),e&&this.isOnScreen&&this.div.focus())}remove(){_(this,hr,ane).call(this),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(_(this,hr,SC).call(this),_(this,hr,j2).call(this,A(this,yu).box),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){var t;let i=!1;this.parent&&!e?(this._uiManager.removeShouldRescale(this),_(this,hr,ane).call(this)):e&&(this._uiManager.addShouldRescale(this),_(this,hr,SC).call(this,e),i=!this.parent&&((t=this.div)==null?void 0:t.classList.contains("selectedEditor"))),super.setParent(e),i&&this.select()}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,Cn._mergeSVGProperties({bbox:_(this,hr,iW).call(this)},A(this,yu).updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&_(this,hr,j2).call(this,A(this,yu).updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;const e=super.render();e.classList.add("draw");const t=document.createElement("div");e.append(t),t.setAttribute("aria-hidden","true"),t.className="internal";const[i,n]=this.parentDimensions;return this.setDims(this.width*i,this.height*n),this._uiManager.addShouldRescale(this),this.disableEditing(),e}static createDrawerInstance(e,t,i,n,o){tr("Not implemented")}static startDrawing(e,t,i,n){var o;const{target:r,offsetX:l,offsetY:a,pointerId:d,pointerType:c}=n;if(A(Cn,dU)&&A(Cn,dU)!==c)return;const{viewport:{rotation:h}}=e,{width:u,height:m}=r.getBoundingClientRect(),p=I(Cn,HW,new AbortController),g=e.combinedSignal(p);if(A(Cn,aU)||I(Cn,aU,d),A(Cn,dU)??I(Cn,dU,c),window.addEventListener("pointerup",f=>{var b;A(Cn,aU)===f.pointerId?this._endDraw(f):(b=A(Cn,cU))==null||b.delete(f.pointerId)},{signal:g}),window.addEventListener("pointercancel",f=>{var b;A(Cn,aU)===f.pointerId?this._currentParent.endDrawingSession():(b=A(Cn,cU))==null||b.delete(f.pointerId)},{signal:g}),window.addEventListener("pointerdown",f=>{A(Cn,dU)===f.pointerType&&((A(Cn,cU)||I(Cn,cU,new Set)).add(f.pointerId),A(Cn,Qa).isCancellable()&&(A(Cn,Qa).removeLastElement(),A(Cn,Qa).isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:g}),window.addEventListener("contextmenu",pp,{signal:g}),r.addEventListener("pointermove",this._drawMove.bind(this),{signal:g}),r.addEventListener("touchmove",f=>{f.timeStamp===A(Cn,qW)&&Eh(f)},{signal:g}),e.toggleDrawing(),(o=t._editorUndoBar)==null||o.hide(),A(Cn,Qa)){e.drawLayer.updateProperties(this._currentDrawId,A(Cn,Qa).startNew(l,a,u,m,h));return}t.updateUIForDefaultProperties(this),I(Cn,Qa,this.createDrawerInstance(l,a,u,m,h)),I(Cn,KW,this.getDefaultDrawingOptions()),this._currentParent=e,{id:this._currentDrawId}=e.drawLayer.draw(this._mergeSVGProperties(A(Cn,KW).toSVGProperties(),A(Cn,Qa).defaultSVGProperties),!0,!1)}static _drawMove(e){var t;if(I(Cn,qW,-1),!A(Cn,Qa))return;const{offsetX:i,offsetY:n,pointerId:o}=e;if(A(Cn,aU)===o){if(((t=A(Cn,cU))==null?void 0:t.size)>=1){this._endDraw(e);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,A(Cn,Qa).add(i,n)),I(Cn,qW,e.timeStamp),Eh(e)}}static _cleanup(e){e&&(this._currentDrawId=-1,this._currentParent=null,I(Cn,Qa,null),I(Cn,KW,null),I(Cn,dU,null),I(Cn,qW,NaN)),A(Cn,HW)&&(A(Cn,HW).abort(),I(Cn,HW,null),I(Cn,aU,NaN),I(Cn,cU,null))}static _endDraw(e){const t=this._currentParent;if(t){if(t.toggleDrawing(!0),this._cleanup(!1),e&&t.drawLayer.updateProperties(this._currentDrawId,A(Cn,Qa).end(e.offsetX,e.offsetY)),this.supportMultipleDrawings){const i=A(Cn,Qa),n=this._currentDrawId,o=i.getLastElement();t.addCommands({cmd:()=>{t.drawLayer.updateProperties(n,i.setLastElement(o))},undo:()=>{t.drawLayer.updateProperties(n,i.removeLastElement())},mustExec:!1,type:Xs.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(e){const t=this._currentParent;if(!t)return null;if(t.toggleDrawing(!0),t.cleanUndoStack(Xs.DRAW_STEP),!A(Cn,Qa).isEmpty()){const{pageDimensions:[i,n],scale:o}=t,r=t.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:A(Cn,Qa).getOutlines(i*o,n*o,o,this._INNER_MARGIN),drawingOptions:A(Cn,KW),mustBeCommitted:!e});return this._cleanup(!0),r}return t.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(e){}static deserializeDraw(e,t,i,n,o,r){tr("Not implemented")}static async deserialize(e,t,i){var n,o;const{rawDims:{pageWidth:r,pageHeight:l,pageX:a,pageY:d}}=t.viewport,c=this.deserializeDraw(a,d,r,l,this._INNER_MARGIN,e),h=await super.deserialize(e,t,i);return h.createDrawingOptions(e),_(n=h,hr,lne).call(n,{drawOutlines:c}),_(o=h,hr,SC).call(o),h.onScaleChanging(),h.rotate(),h}serializeDraw(e){const[t,i]=this.pageTranslation,[n,o]=this.pageDimensions;return A(this,yu).serialize([t,i,n,o],e)}renderAnnotationElement(e){return e.updateEdited({rect:this.getRect(0,0)}),null}static canCreateNewEmptyEditor(){return!1}};yu=new WeakMap,ZC=new WeakMap,Qa=new WeakMap,HW=new WeakMap,KW=new WeakMap,aU=new WeakMap,dU=new WeakMap,cU=new WeakMap,qW=new WeakMap,hr=new WeakSet,lne=function({drawOutlines:s,drawId:e,drawingOptions:t}){I(this,yu,s),this._drawingOptions||(this._drawingOptions=t),e>=0?(this._drawId=e,this.parent.drawLayer.finalizeDraw(e,s.defaultProperties)):this._drawId=_(this,hr,m4).call(this,s,this.parent),_(this,hr,j2).call(this,s.box)},m4=function(s,e){const{id:t}=e.drawLayer.draw(bu._mergeSVGProperties(this._drawingOptions.toSVGProperties(),s.defaultSVGProperties),!1,!1);return t},ane=function(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())},SC=function(s=this.parent){if(!(this._drawId!==null&&this.parent===s)){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,s.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=_(this,hr,m4).call(this,A(this,yu),s)}},cbe=function([s,e,t,i]){const{parentDimensions:[n,o],rotation:r}=this;switch(r){case 90:return[e,1-s,t*(o/n),i*(n/o)];case 180:return[1-s,1-e,t,i];case 270:return[1-e,s,t*(o/n),i*(n/o)];default:return[s,e,t,i]}},EG=function(){const{x:s,y:e,width:t,height:i,parentDimensions:[n,o],rotation:r}=this;switch(r){case 90:return[1-e,s,t*(n/o),i*(o/n)];case 180:return[1-s,1-e,t,i];case 270:return[e,1-s,t*(n/o),i*(o/n)];default:return[s,e,t,i]}},j2=function(s){if([this.x,this.y,this.width,this.height]=_(this,hr,cbe).call(this,s),this.div){this.fixAndSetPosition();const[e,t]=this.parentDimensions;this.setDims(this.width*e,this.height*t)}this._onResized()},iW=function(){const{x:s,y:e,width:t,height:i,rotation:n,parentRotation:o,parentDimensions:[r,l]}=this;switch((n*4+o)/90){case 1:return[1-e-i,s,i,t];case 2:return[1-s-t,1-e-i,t,i];case 3:return[e,1-s-t,i,t];case 4:return[s,e-t*(r/l),i*(l/r),t*(r/l)];case 5:return[1-e,s,t*(r/l),i*(l/r)];case 6:return[1-s-i*(l/r),1-e,i*(l/r),t*(r/l)];case 7:return[e-t*(r/l),1-s-i*(l/r),t*(r/l),i*(l/r)];case 8:return[s-t,e-i,t,i];case 9:return[1-e,s-t,i,t];case 10:return[1-s,1-e,t,i];case 11:return[e-i,1-s,i,t];case 12:return[s-i*(l/r),e,i*(l/r),t*(r/l)];case 13:return[1-e-t*(r/l),s-i*(l/r),t*(r/l),i*(l/r)];case 14:return[1-s,1-e-t*(r/l),i*(l/r),t*(r/l)];case 15:return[e,1-s,t*(r/l),i*(l/r)];default:return[s,e,t,i]}},Rn(bu,"_currentDrawId",-1),Rn(bu,"_currentParent",null),O(bu,Qa,null),O(bu,HW,null),O(bu,KW,null),O(bu,aU,NaN),O(bu,dU,null),O(bu,cU,null),O(bu,qW,NaN),Rn(bu,"_INNER_MARGIN",3);let m1t=bu;var L0,Va,Wa,$W,NC,Qc,ya,Mm,nW,e1,t1,RC,DG;class p1t{constructor(e,t,i,n,o,r){O(this,RC),O(this,L0,new Float64Array(6)),O(this,Va),O(this,Wa),O(this,$W),O(this,NC),O(this,Qc),O(this,ya,""),O(this,Mm,0),O(this,nW,new mwe),O(this,e1),O(this,t1),I(this,e1,i),I(this,t1,n),I(this,$W,o),I(this,NC,r),[e,t]=_(this,RC,DG).call(this,e,t);const l=I(this,Va,[NaN,NaN,NaN,NaN,e,t]);I(this,Qc,[e,t]),I(this,Wa,[{line:l,points:A(this,Qc)}]),A(this,L0).set(l,0)}updateProperty(e,t){e==="stroke-width"&&I(this,NC,t)}isEmpty(){return!A(this,Wa)||A(this,Wa).length===0}isCancellable(){return A(this,Qc).length<=10}add(e,t){[e,t]=_(this,RC,DG).call(this,e,t);const[i,n,o,r]=A(this,L0).subarray(2,6),l=e-o,a=t-r;return Math.hypot(A(this,e1)*l,A(this,t1)*a)<=2?null:(A(this,Qc).push(e,t),isNaN(i)?(A(this,L0).set([o,r,e,t],2),A(this,Va).push(NaN,NaN,NaN,NaN,e,t),{path:{d:this.toSVGPath()}}):(isNaN(A(this,L0)[0])&&A(this,Va).splice(6,6),A(this,L0).set([i,n,o,r,e,t],0),A(this,Va).push(...Ei.createBezierPoints(i,n,o,r,e,t)),{path:{d:this.toSVGPath()}}))}end(e,t){return this.add(e,t)||(A(this,Qc).length===2?{path:{d:this.toSVGPath()}}:null)}startNew(e,t,i,n,o){I(this,e1,i),I(this,t1,n),I(this,$W,o),[e,t]=_(this,RC,DG).call(this,e,t);const r=I(this,Va,[NaN,NaN,NaN,NaN,e,t]);I(this,Qc,[e,t]);const l=A(this,Wa).at(-1);return l&&(l.line=new Float32Array(l.line),l.points=new Float32Array(l.points)),A(this,Wa).push({line:r,points:A(this,Qc)}),A(this,L0).set(r,0),I(this,Mm,0),this.toSVGPath(),null}getLastElement(){return A(this,Wa).at(-1)}setLastElement(e){return A(this,Wa)?(A(this,Wa).push(e),I(this,Va,e.line),I(this,Qc,e.points),I(this,Mm,0),{path:{d:this.toSVGPath()}}):A(this,nW).setLastElement(e)}removeLastElement(){if(!A(this,Wa))return A(this,nW).removeLastElement();A(this,Wa).pop(),I(this,ya,"");for(let e=0,t=A(this,Wa).length;e<t;e++){const{line:i,points:n}=A(this,Wa)[e];I(this,Va,i),I(this,Qc,n),I(this,Mm,0),this.toSVGPath()}return{path:{d:A(this,ya)}}}toSVGPath(){const e=Ei.svgRound(A(this,Va)[4]),t=Ei.svgRound(A(this,Va)[5]);if(A(this,Qc).length===2)return I(this,ya,`${A(this,ya)} M ${e} ${t} Z`),A(this,ya);if(A(this,Qc).length<=6){const n=A(this,ya).lastIndexOf("M");I(this,ya,`${A(this,ya).slice(0,n)} M ${e} ${t}`),I(this,Mm,6)}if(A(this,Qc).length===4){const n=Ei.svgRound(A(this,Va)[10]),o=Ei.svgRound(A(this,Va)[11]);return I(this,ya,`${A(this,ya)} L ${n} ${o}`),I(this,Mm,12),A(this,ya)}const i=[];A(this,Mm)===0&&(i.push(`M ${e} ${t}`),I(this,Mm,6));for(let n=A(this,Mm),o=A(this,Va).length;n<o;n+=6){const[r,l,a,d,c,h]=A(this,Va).slice(n,n+6).map(Ei.svgRound);i.push(`C${r} ${l} ${a} ${d} ${c} ${h}`)}return I(this,ya,A(this,ya)+i.join(" ")),I(this,Mm,A(this,Va).length),A(this,ya)}getOutlines(e,t,i,n){const o=A(this,Wa).at(-1);return o.line=new Float32Array(o.line),o.points=new Float32Array(o.points),A(this,nW).build(A(this,Wa),e,t,i,A(this,$W),A(this,NC),n),I(this,L0,null),I(this,Va,null),I(this,Wa,null),I(this,ya,null),A(this,nW)}get defaultSVGProperties(){return{root:{viewBox:"0 0 10000 10000"},rootClass:{draw:!0},bbox:[0,0,1,1]}}}L0=new WeakMap,Va=new WeakMap,Wa=new WeakMap,$W=new WeakMap,NC=new WeakMap,Qc=new WeakMap,ya=new WeakMap,Mm=new WeakMap,nW=new WeakMap,e1=new WeakMap,t1=new WeakMap,RC=new WeakSet,DG=function(s,e){return Ei._normalizePoint(s,e,A(this,e1),A(this,t1),A(this,$W))};var Lc,GG,u_,Au,lf,af,P2,H2,K2,Lh,gf,dwe,cwe,hwe;const g1t=class uwe extends Ei{constructor(){super(...arguments),O(this,Lh),O(this,Lc),O(this,GG,0),O(this,u_),O(this,Au),O(this,lf),O(this,af),O(this,P2),O(this,H2),O(this,K2)}build(e,t,i,n,o,r,l){I(this,lf,t),I(this,af,i),I(this,P2,n),I(this,H2,o),I(this,K2,r),I(this,u_,l??0),I(this,Au,e),_(this,Lh,cwe).call(this)}setLastElement(e){return A(this,Au).push(e),{path:{d:this.toSVGPath()}}}removeLastElement(){return A(this,Au).pop(),{path:{d:this.toSVGPath()}}}toSVGPath(){const e=[];for(const{line:t}of A(this,Au)){if(e.push(`M${Ei.svgRound(t[4])} ${Ei.svgRound(t[5])}`),t.length===6){e.push("Z");continue}if(t.length===12){e.push(`L${Ei.svgRound(t[10])} ${Ei.svgRound(t[11])}`);continue}for(let i=6,n=t.length;i<n;i+=6){const[o,r,l,a,d,c]=t.subarray(i,i+6).map(Ei.svgRound);e.push(`C${o} ${r} ${l} ${a} ${d} ${c}`)}}return e.join("")}serialize([e,t,i,n],o){const r=[],l=[],[a,d,c,h]=_(this,Lh,dwe).call(this);let u,m,p,g,f,b,U,S,Z;switch(A(this,H2)){case 0:Z=Ei._rescale,u=e,m=t+n,p=i,g=-n,f=e+a*i,b=t+(1-d-h)*n,U=e+(a+c)*i,S=t+(1-d)*n;break;case 90:Z=Ei._rescaleAndSwap,u=e,m=t,p=i,g=n,f=e+d*i,b=t+a*n,U=e+(d+h)*i,S=t+(a+c)*n;break;case 180:Z=Ei._rescale,u=e+i,m=t,p=-i,g=n,f=e+(1-a-c)*i,b=t+d*n,U=e+(1-a)*i,S=t+(d+h)*n;break;case 270:Z=Ei._rescaleAndSwap,u=e+i,m=t+n,p=-i,g=-n,f=e+(1-d-h)*i,b=t+(1-a-c)*n,U=e+(1-d)*i,S=t+(1-a)*n;break}for(const{line:R,points:y}of A(this,Au))r.push(Z(R,u,m,p,g,o?new Array(R.length):null)),l.push(Z(y,u,m,p,g,o?new Array(y.length):null));return{lines:r,points:l,rect:[f,b,U,S]}}static deserialize(e,t,i,n,o,{paths:{lines:r,points:l},rotation:a,thickness:d}){const c=[];let h,u,m,p,g;switch(a){case 0:g=Ei._rescale,h=-e/i,u=t/n+1,m=1/i,p=-1/n;break;case 90:g=Ei._rescaleAndSwap,h=-t/n,u=-e/i,m=1/n,p=1/i;break;case 180:g=Ei._rescale,h=e/i+1,u=-t/n,m=-1/i,p=1/n;break;case 270:g=Ei._rescaleAndSwap,h=t/n+1,u=e/i+1,m=-1/n,p=-1/i;break}if(!r){r=[];for(const b of l){const U=b.length;if(U===2){r.push(new Float32Array([NaN,NaN,NaN,NaN,b[0],b[1]]));continue}if(U===4){r.push(new Float32Array([NaN,NaN,NaN,NaN,b[0],b[1],NaN,NaN,NaN,NaN,b[2],b[3]]));continue}const S=new Float32Array(3*(U-2));r.push(S);let[Z,R,y,N]=b.subarray(0,4);S.set([NaN,NaN,NaN,NaN,Z,R],0);for(let w=4;w<U;w+=2){const Q=b[w],C=b[w+1];S.set(Ei.createBezierPoints(Z,R,y,N,Q,C),(w-2)*3),[Z,R,y,N]=[y,N,Q,C]}}}for(let b=0,U=r.length;b<U;b++)c.push({line:g(r[b].map(S=>S??NaN),h,u,m,p),points:g(l[b].map(S=>S??NaN),h,u,m,p)});const f=new uwe;return f.build(c,i,n,1,a,d,o),f}get box(){return A(this,Lc)}updateProperty(e,t){return e==="stroke-width"?_(this,Lh,hwe).call(this,t):null}updateParentDimensions([e,t],i){const[n,o]=_(this,Lh,gf).call(this);I(this,lf,e),I(this,af,t),I(this,P2,i);const[r,l]=_(this,Lh,gf).call(this),a=r-n,d=l-o,c=A(this,Lc);return c[0]-=a,c[1]-=d,c[2]+=2*a,c[3]+=2*d,c}updateRotation(e){return I(this,GG,e),{path:{transform:this.rotationTransform}}}get viewBox(){return A(this,Lc).map(Ei.svgRound).join(" ")}get defaultProperties(){const[e,t]=A(this,Lc);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${Ei.svgRound(e)} ${Ei.svgRound(t)}`}}}get rotationTransform(){const[,,e,t]=A(this,Lc);let i=0,n=0,o=0,r=0,l=0,a=0;switch(A(this,GG)){case 90:n=t/e,o=-e/t,l=e;break;case 180:i=-1,r=-1,l=e,a=t;break;case 270:n=-t/e,o=e/t,a=t;break;default:return""}return`matrix(${i} ${n} ${o} ${r} ${Ei.svgRound(l)} ${Ei.svgRound(a)})`}getPathResizingSVGProperties([e,t,i,n]){const[o,r]=_(this,Lh,gf).call(this),[l,a,d,c]=A(this,Lc);if(Math.abs(d-o)<=Ei.PRECISION||Math.abs(c-r)<=Ei.PRECISION){const g=e+i/2-(l+d/2),f=t+n/2-(a+c/2);return{path:{"transform-origin":`${Ei.svgRound(e)} ${Ei.svgRound(t)}`,transform:`${this.rotationTransform} translate(${g} ${f})`}}}const h=(i-2*o)/(d-2*o),u=(n-2*r)/(c-2*r),m=d/i,p=c/n;return{path:{"transform-origin":`${Ei.svgRound(l)} ${Ei.svgRound(a)}`,transform:`${this.rotationTransform} scale(${m} ${p}) translate(${Ei.svgRound(o)} ${Ei.svgRound(r)}) scale(${h} ${u}) translate(${Ei.svgRound(-o)} ${Ei.svgRound(-r)})`}}}getPathResizedSVGProperties([e,t,i,n]){const[o,r]=_(this,Lh,gf).call(this),l=A(this,Lc),[a,d,c,h]=l;if(l[0]=e,l[1]=t,l[2]=i,l[3]=n,Math.abs(c-o)<=Ei.PRECISION||Math.abs(h-r)<=Ei.PRECISION){const f=e+i/2-(a+c/2),b=t+n/2-(d+h/2);for(const{line:U,points:S}of A(this,Au))Ei._translate(U,f,b,U),Ei._translate(S,f,b,S);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${Ei.svgRound(e)} ${Ei.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}const u=(i-2*o)/(c-2*o),m=(n-2*r)/(h-2*r),p=-u*(a+o)+e+o,g=-m*(d+r)+t+r;if(u!==1||m!==1||p!==0||g!==0)for(const{line:f,points:b}of A(this,Au))Ei._rescale(f,p,g,u,m,f),Ei._rescale(b,p,g,u,m,b);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${Ei.svgRound(e)} ${Ei.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([e,t],i){const[n,o]=i,r=A(this,Lc),l=e-r[0],a=t-r[1];if(A(this,lf)===n&&A(this,af)===o)for(const{line:d,points:c}of A(this,Au))Ei._translate(d,l,a,d),Ei._translate(c,l,a,c);else{const d=A(this,lf)/n,c=A(this,af)/o;I(this,lf,n),I(this,af,o);for(const{line:h,points:u}of A(this,Au))Ei._rescale(h,l,a,d,c,h),Ei._rescale(u,l,a,d,c,u);r[2]*=d,r[3]*=c}return r[0]=e,r[1]=t,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${Ei.svgRound(e)} ${Ei.svgRound(t)}`}}}get defaultSVGProperties(){const e=A(this,Lc);return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${Ei.svgRound(e[0])} ${Ei.svgRound(e[1])}`,transform:this.rotationTransform||null},bbox:e}}};Lc=new WeakMap,GG=new WeakMap,u_=new WeakMap,Au=new WeakMap,lf=new WeakMap,af=new WeakMap,P2=new WeakMap,H2=new WeakMap,K2=new WeakMap,Lh=new WeakSet,gf=function(s=A(this,K2)){const e=A(this,u_)+s/2*A(this,P2);return A(this,H2)%180===0?[e/A(this,lf),e/A(this,af)]:[e/A(this,af),e/A(this,lf)]},dwe=function(){const[s,e,t,i]=A(this,Lc),[n,o]=_(this,Lh,gf).call(this,0);return[s+n,e+o,t-2*n,i-2*o]},cwe=function(){const s=I(this,Lc,new Float32Array([1/0,1/0,-1/0,-1/0]));for(const{line:i}of A(this,Au)){if(i.length<=12){for(let r=4,l=i.length;r<l;r+=6){const[a,d]=i.subarray(r,r+2);s[0]=Math.min(s[0],a),s[1]=Math.min(s[1],d),s[2]=Math.max(s[2],a),s[3]=Math.max(s[3],d)}continue}let n=i[4],o=i[5];for(let r=6,l=i.length;r<l;r+=6){const[a,d,c,h,u,m]=i.subarray(r,r+6);dn.bezierBoundingBox(n,o,a,d,c,h,u,m,s),n=u,o=m}}const[e,t]=_(this,Lh,gf).call(this);s[0]=Math.min(1,Math.max(0,s[0]-e)),s[1]=Math.min(1,Math.max(0,s[1]-t)),s[2]=Math.min(1,Math.max(0,s[2]+e)),s[3]=Math.min(1,Math.max(0,s[3]+t)),s[2]-=s[0],s[3]-=s[1]},hwe=function(s){const[e,t]=_(this,Lh,gf).call(this);I(this,K2,s);const[i,n]=_(this,Lh,gf).call(this),[o,r]=[i-e,n-t],l=A(this,Lc);return l[0]-=o,l[1]-=r,l[2]+=2*o,l[3]+=2*r,l};let mwe=g1t;var VC;const f1t=class pwe extends u1t{constructor(e){super(),O(this,VC),I(this,VC,e),super.updateProperties({fill:"none",stroke:rl._defaultLineColor,"stroke-opacity":1,"stroke-width":1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-miterlimit":10})}updateSVGProperty(e,t){e==="stroke-width"&&(t??(t=this["stroke-width"]),t*=A(this,VC).realScale),super.updateSVGProperty(e,t)}clone(){const e=new pwe(A(this,VC));return e.updateAll(this),e}};VC=new WeakMap;let b1t=f1t;var dne,gwe;const JG=class fwe extends m1t{constructor(e){super({...e,name:"inkEditor"}),O(this,dne),this._willKeepAspectRatio=!0}static initialize(e,t){rl.initialize(e,t),this._defaultDrawingOptions=new b1t(t.viewParameters)}static getDefaultDrawingOptions(e){const t=this._defaultDrawingOptions.clone();return t.updateProperties(e),t}static get supportMultipleDrawings(){return!0}static get typesMap(){return Vs(this,"typesMap",new Map([[Xs.INK_THICKNESS,"stroke-width"],[Xs.INK_COLOR,"stroke"],[Xs.INK_OPACITY,"stroke-opacity"]]))}static createDrawerInstance(e,t,i,n,o){return new p1t(e,t,i,n,o,this._defaultDrawingOptions["stroke-width"])}static deserializeDraw(e,t,i,n,o,r){return mwe.deserialize(e,t,i,n,o,r)}static async deserialize(e,t,i){let n=null;if(e instanceof lae){const{data:{inkLists:r,rect:l,rotation:a,id:d,color:c,opacity:h,borderStyle:{rawWidth:u},popupRef:m},parent:{page:{pageNumber:p}}}=e;n=e={annotationType:ds.INK,color:Array.from(c),thickness:u,opacity:h,paths:{points:r},boxes:null,pageIndex:p-1,rect:l.slice(0),rotation:a,id:d,deleted:!1,popupRef:m}}const o=await super.deserialize(e,t,i);return o.annotationElementId=e.id||null,o._initialData=n,o}onScaleChanging(){if(!this.parent)return;super.onScaleChanging();const{_drawId:e,_drawingOptions:t,parent:i}=this;t.updateSVGProperty("stroke-width"),i.drawLayer.updateProperties(e,t.toSVGProperties())}static onScaleChangingWhenDrawing(){const e=this._currentParent;e&&(super.onScaleChangingWhenDrawing(),this._defaultDrawingOptions.updateSVGProperty("stroke-width"),e.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}createDrawingOptions({color:e,thickness:t,opacity:i}){this._drawingOptions=fwe.getDefaultDrawingOptions({stroke:dn.makeHexColor(...e),"stroke-width":t,"stroke-opacity":i})}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const{lines:t,points:i,rect:n}=this.serializeDraw(e),{_drawingOptions:{stroke:o,"stroke-opacity":r,"stroke-width":l}}=this,a={annotationType:ds.INK,color:rl._colorManager.convert(o),opacity:r,thickness:l,paths:{lines:t,points:i},pageIndex:this.pageIndex,rect:n,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return e?a:this.annotationElementId&&!_(this,dne,gwe).call(this,a)?null:(a.id=this.annotationElementId,a)}renderAnnotationElement(e){const{points:t,rect:i}=this.serializeDraw(!1);return e.updateEdited({rect:i,thickness:this._drawingOptions["stroke-width"],points:t}),null}};dne=new WeakSet,gwe=function(s){const{color:e,thickness:t,opacity:i,pageIndex:n}=this._initialData;return this._hasBeenMoved||this._hasBeenResized||s.color.some((o,r)=>o!==e[r])||s.thickness!==t||s.opacity!==i||s.pageIndex!==n},Rn(JG,"_type","ink"),Rn(JG,"_editorType",ds.INK),Rn(JG,"_defaultDrawingOptions",null);let U1t=JG;var Ir,ud,oS,aF,MS,WC,ff,v0,ku,q2,Ar,aT,dT,XG,cne,m_,hne,YG,bwe;const _G=class extends rl{constructor(e){super({...e,name:"stampEditor"}),O(this,Ar),O(this,Ir,null),O(this,ud,null),O(this,oS,null),O(this,aF,null),O(this,MS,null),O(this,WC,""),O(this,ff,null),O(this,v0,null),O(this,ku,!1),O(this,q2,!1),I(this,aF,e.bitmapUrl),I(this,MS,e.bitmapFile)}static initialize(e,t){rl.initialize(e,t)}static get supportedTypes(){return Vs(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map(e=>`image/${e}`))}static get supportedTypesStr(){return Vs(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(e){return this.supportedTypes.includes(e)}static paste(e,t){t.pasteEditor(ds.STAMP,{bitmapFile:e.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){var e;return{type:"stamp",hasAltText:!!((e=this.altTextData)!=null&&e.altText)}}static computeTelemetryFinalData(e){const t=e.get("hasAltText");return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}async mlGuessAltText(e=null,t=!0){if(this.hasAltTextData())return null;const{mlManager:i}=this._uiManager;if(!i)throw new Error("No ML.");if(!await i.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:n,width:o,height:r}=e||this.copyCanvas(null,null,!0).imageData,l=await i.guess({name:"altText",request:{data:n,width:o,height:r,channels:n.length/(o*r)}});if(!l)throw new Error("No response from the AI service.");if(l.error)throw new Error("Error from the AI service.");if(l.cancel)return null;if(!l.output)throw new Error("No valid response from the AI service.");const a=l.output;return await this.setGuessedAltText(a),t&&!this.hasAltTextData()&&(this.altTextData={alt:a,decorative:!1}),a}remove(){var e;A(this,ud)&&(I(this,Ir,null),this._uiManager.imageManager.deleteId(A(this,ud)),(e=A(this,ff))==null||e.remove(),I(this,ff,null),A(this,v0)&&(clearTimeout(A(this,v0)),I(this,v0,null))),super.remove()}rebuild(){if(!this.parent){A(this,ud)&&_(this,Ar,XG).call(this);return}super.rebuild(),this.div!==null&&(A(this,ud)&&A(this,ff)===null&&_(this,Ar,XG).call(this),this.isAttachedToDOM||this.parent.add(this))}onceAdded(e){this._isDraggable=!0,e&&this.div.focus()}isEmpty(){return!(A(this,oS)||A(this,Ir)||A(this,aF)||A(this,MS)||A(this,ud))}get isResizable(){return!0}render(){if(this.div)return this.div;let e,t;if(this.width&&(e=this.x,t=this.y),super.render(),this.div.hidden=!0,this.div.setAttribute("role","figure"),this.addAltTextButton(),A(this,Ir)?_(this,Ar,cne).call(this):_(this,Ar,XG).call(this),this.width&&!this.annotationElementId){const[i,n]=this.parentDimensions;this.setAt(e*i,t*n,this.width*i,this.height*n)}return this._uiManager.addShouldRescale(this),this.div}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(A(this,v0)!==null&&clearTimeout(A(this,v0)),I(this,v0,setTimeout(()=>{I(this,v0,null),_(this,Ar,hne).call(this)},200)))}copyCanvas(e,t,i=!1){var n;e||(e=224);const{width:o,height:r}=A(this,Ir),l=new nae;let a=A(this,Ir),d=o,c=r,h=null;if(t){if(o>t||r>t){const N=Math.min(t/o,t/r);d=Math.floor(o*N),c=Math.floor(r*N)}h=document.createElement("canvas");const m=h.width=Math.ceil(d*l.sx),p=h.height=Math.ceil(c*l.sy);A(this,ku)||(a=_(this,Ar,m_).call(this,m,p));const g=h.getContext("2d");g.filter=this._uiManager.hcmFilter;let f="white",b="#cfcfd8";this._uiManager.hcmFilter!=="none"?b="black":(n=window.matchMedia)!=null&&n.call(window,"(prefers-color-scheme: dark)").matches&&(f="#8f8f9d",b="#42414d");const U=15,S=U*l.sx,Z=U*l.sy,R=new OffscreenCanvas(S*2,Z*2),y=R.getContext("2d");y.fillStyle=f,y.fillRect(0,0,S*2,Z*2),y.fillStyle=b,y.fillRect(0,0,S,Z),y.fillRect(S,Z,S,Z),g.fillStyle=g.createPattern(R,"repeat"),g.fillRect(0,0,m,p),g.drawImage(a,0,0,a.width,a.height,0,0,m,p)}let u=null;if(i){let m,p;if(l.symmetric&&a.width<e&&a.height<e)m=a.width,p=a.height;else if(a=A(this,Ir),o>e||r>e){const f=Math.min(e/o,e/r);m=Math.floor(o*f),p=Math.floor(r*f),A(this,ku)||(a=_(this,Ar,m_).call(this,m,p))}const g=new OffscreenCanvas(m,p).getContext("2d",{willReadFrequently:!0});g.drawImage(a,0,0,a.width,a.height,0,0,m,p),u={width:m,height:p,data:g.getImageData(0,0,m,p).data}}return{canvas:h,width:d,height:c,imageData:u}}getImageForAltText(){return A(this,ff)}static async deserialize(e,t,i){var n;let o=null;if(e instanceof kMe){const{data:{rect:g,rotation:f,id:b,structParent:U,popupRef:S},container:Z,parent:{page:{pageNumber:R}}}=e,y=Z.querySelector("canvas"),N=i.imageManager.getFromCanvas(Z.id,y);y.remove();const w=((n=await t._structTree.getAriaAttributes(`${$le}${b}`))==null?void 0:n.get("aria-label"))||"";o=e={annotationType:ds.STAMP,bitmapId:N.id,bitmap:N.bitmap,pageIndex:R-1,rect:g.slice(0),rotation:f,id:b,deleted:!1,accessibilityData:{decorative:!1,altText:w},isSvg:!1,structParent:U,popupRef:S}}const r=await super.deserialize(e,t,i),{rect:l,bitmap:a,bitmapUrl:d,bitmapId:c,isSvg:h,accessibilityData:u}=e;c&&i.imageManager.isValidId(c)?(I(r,ud,c),a&&I(r,Ir,a)):I(r,aF,d),I(r,ku,h);const[m,p]=r.pageDimensions;return r.width=(l[2]-l[0])/m,r.height=(l[3]-l[1])/p,r.annotationElementId=e.id||null,u&&(r.altTextData=u),r._initialData=o,I(r,q2,!!o),r}serialize(e=!1,t=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const i={annotationType:ds.STAMP,bitmapId:A(this,ud),pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:A(this,ku),structTreeParentId:this._structTreeParentId};if(e)return i.bitmapUrl=_(this,Ar,YG).call(this,!0),i.accessibilityData=this.serializeAltText(!0),i;const{decorative:n,altText:o}=this.serializeAltText(!1);if(!n&&o&&(i.accessibilityData={type:"Figure",alt:o}),this.annotationElementId){const l=_(this,Ar,bwe).call(this,i);if(l.isSame)return null;l.isSameAltText?delete i.accessibilityData:i.accessibilityData.structParent=this._initialData.structParent??-1}if(i.id=this.annotationElementId,t===null)return i;t.stamps||(t.stamps=new Map);const r=A(this,ku)?(i.rect[2]-i.rect[0])*(i.rect[3]-i.rect[1]):null;if(!t.stamps.has(A(this,ud)))t.stamps.set(A(this,ud),{area:r,serialized:i}),i.bitmap=_(this,Ar,YG).call(this,!1);else if(A(this,ku)){const l=t.stamps.get(A(this,ud));r>l.area&&(l.area=r,l.serialized.bitmap.close(),l.serialized.bitmap=_(this,Ar,YG).call(this,!1))}return i}renderAnnotationElement(e){return e.updateEdited({rect:this.getRect(0,0)}),null}};Ir=new WeakMap,ud=new WeakMap,oS=new WeakMap,aF=new WeakMap,MS=new WeakMap,WC=new WeakMap,ff=new WeakMap,v0=new WeakMap,ku=new WeakMap,q2=new WeakMap,Ar=new WeakSet,aT=function(s,e=!1){if(!s){this.remove();return}I(this,Ir,s.bitmap),e||(I(this,ud,s.id),I(this,ku,s.isSvg)),s.file&&I(this,WC,s.file.name),_(this,Ar,cne).call(this)},dT=function(){if(I(this,oS,null),this._uiManager.enableWaiting(!1),!!A(this,ff)){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&A(this,Ir)){this._editToolbar.hide(),this._uiManager.editAltText(this,!0);return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&A(this,Ir)){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}},XG=function(){if(A(this,ud)){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(A(this,ud)).then(t=>_(this,Ar,aT).call(this,t,!0)).finally(()=>_(this,Ar,dT).call(this));return}if(A(this,aF)){const t=A(this,aF);I(this,aF,null),this._uiManager.enableWaiting(!0),I(this,oS,this._uiManager.imageManager.getFromUrl(t).then(i=>_(this,Ar,aT).call(this,i)).finally(()=>_(this,Ar,dT).call(this)));return}if(A(this,MS)){const t=A(this,MS);I(this,MS,null),this._uiManager.enableWaiting(!0),I(this,oS,this._uiManager.imageManager.getFromFile(t).then(i=>_(this,Ar,aT).call(this,i)).finally(()=>_(this,Ar,dT).call(this)));return}const s=document.createElement("input");s.type="file",s.accept=_G.supportedTypesStr;const e=this._uiManager._signal;I(this,oS,new Promise(t=>{s.addEventListener("change",async()=>{if(!s.files||s.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const i=await this._uiManager.imageManager.getFromFile(s.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),_(this,Ar,aT).call(this,i)}t()},{signal:e}),s.addEventListener("cancel",()=>{this.remove(),t()},{signal:e})}).finally(()=>_(this,Ar,dT).call(this))),s.click()},cne=function(){var s;const{div:e}=this;let{width:t,height:i}=A(this,Ir);const[n,o]=this.pageDimensions,r=.75;if(this.width)t=this.width*n,i=this.height*o;else if(t>r*n||i>r*o){const c=Math.min(r*n/t,r*o/i);t*=c,i*=c}const[l,a]=this.parentDimensions;this.setDims(t*l/n,i*a/o),this._uiManager.enableWaiting(!1);const d=I(this,ff,document.createElement("canvas"));d.setAttribute("role","img"),this.addContainer(d),this.width=t/n,this.height=i/o,(s=this._initialOptions)!=null&&s.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),_(this,Ar,hne).call(this),A(this,q2)||(this.parent.addUndoableEditor(this),I(this,q2,!0)),this._reportTelemetry({action:"inserted_image"}),A(this,WC)&&d.setAttribute("aria-label",A(this,WC))},m_=function(s,e){const{width:t,height:i}=A(this,Ir);let n=t,o=i,r=A(this,Ir);for(;n>2*s||o>2*e;){const l=n,a=o;n>2*s&&(n=n>=16384?Math.floor(n/2)-1:Math.ceil(n/2)),o>2*e&&(o=o>=16384?Math.floor(o/2)-1:Math.ceil(o/2));const d=new OffscreenCanvas(n,o);d.getContext("2d").drawImage(r,0,0,l,a,0,0,n,o),r=d.transferToImageBitmap()}return r},hne=function(){const[s,e]=this.parentDimensions,{width:t,height:i}=this,n=new nae,o=Math.ceil(t*s*n.sx),r=Math.ceil(i*e*n.sy),l=A(this,ff);if(!l||l.width===o&&l.height===r)return;l.width=o,l.height=r;const a=A(this,ku)?A(this,Ir):_(this,Ar,m_).call(this,o,r),d=l.getContext("2d");d.filter=this._uiManager.hcmFilter,d.drawImage(a,0,0,a.width,a.height,0,0,o,r)},YG=function(s){if(s){if(A(this,ku)){const t=this._uiManager.imageManager.getSvgUrl(A(this,ud));if(t)return t}const e=document.createElement("canvas");return{width:e.width,height:e.height}=A(this,Ir),e.getContext("2d").drawImage(A(this,Ir),0,0),e.toDataURL()}if(A(this,ku)){const[e,t]=this.pageDimensions,i=Math.round(this.width*e*aQ.PDF_TO_CSS_UNITS),n=Math.round(this.height*t*aQ.PDF_TO_CSS_UNITS),o=new OffscreenCanvas(i,n);return o.getContext("2d").drawImage(A(this,Ir),0,0,A(this,Ir).width,A(this,Ir).height,0,0,i,n),o.transferToImageBitmap()}return structuredClone(A(this,Ir))},bwe=function(s){var e;const{pageIndex:t,accessibilityData:{altText:i}}=this._initialData,n=s.pageIndex===t,o=(((e=s.accessibilityData)==null?void 0:e.alt)||"")===i;return{isSame:!this._hasBeenMoved&&!this._hasBeenResized&&n&&o,isSameAltText:o}},Rn(_G,"_type","stamp"),Rn(_G,"_editorType",ds.STAMP);let F1t=_G;var SV,cT,R0,KA,vb,Am,qA,hT,NV,Ip,kb,_d,xb,rn,Zm,$A,xl,hbe,Ep,p4,g4,DE;let A1t=(Zm=class{constructor({uiManager:s,pageIndex:e,div:t,structTreeLayer:i,accessibilityManager:n,annotationLayer:o,drawLayer:r,textLayer:l,viewport:a,l10n:d}){O(this,xl),O(this,SV),O(this,cT,!1),O(this,R0,null),O(this,KA,null),O(this,vb,null),O(this,Am,new Map),O(this,qA,!1),O(this,hT,!1),O(this,NV,!1),O(this,Ip,null),O(this,kb,null),O(this,_d,null),O(this,xb,null),O(this,rn);const c=[...A(Zm,$A).values()];if(!Zm._initialized){Zm._initialized=!0;for(const h of c)h.initialize(d,s)}s.registerEditorTypes(c),I(this,rn,s),this.pageIndex=e,this.div=t,I(this,SV,n),I(this,R0,o),this.viewport=a,I(this,_d,l),this.drawLayer=r,this._structTree=i,A(this,rn).addLayer(this)}get isEmpty(){return A(this,Am).size===0}get isInvisible(){return this.isEmpty&&A(this,rn).getMode()===ds.NONE}updateToolbar(s){A(this,rn).updateToolbar(s)}updateMode(s=A(this,rn).getMode()){switch(_(this,xl,DE).call(this),s){case ds.NONE:this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case ds.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case ds.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:e}=this.div;for(const t of A(Zm,$A).values())e.toggle(`${t._type}Editing`,s===t._editorType);this.div.hidden=!1}hasTextLayer(s){var e;return s===((e=A(this,_d))==null?void 0:e.div)}setEditingState(s){A(this,rn).setEditingState(s)}addCommands(s){A(this,rn).addCommands(s)}cleanUndoStack(s){A(this,rn).cleanUndoStack(s)}toggleDrawing(s=!1){this.div.classList.toggle("drawing",!s)}togglePointerEvents(s=!1){this.div.classList.toggle("disabled",!s)}toggleAnnotationLayerPointerEvents(s=!1){var e;(e=A(this,R0))==null||e.div.classList.toggle("disabled",!s)}async enable(){I(this,NV,!0),this.div.tabIndex=0,this.togglePointerEvents(!0);const s=new Set;for(const t of A(this,Am).values())t.enableEditing(),t.show(!0),t.annotationElementId&&(A(this,rn).removeChangedExistingAnnotation(t),s.add(t.annotationElementId));if(!A(this,R0)){I(this,NV,!1);return}const e=A(this,R0).getEditableAnnotations();for(const t of e){if(t.hide(),A(this,rn).isDeletedAnnotationElement(t.data.id)||s.has(t.data.id))continue;const i=await this.deserialize(t);i&&(this.addOrRebuild(i),i.enableEditing())}I(this,NV,!1)}disable(){var s;I(this,hT,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1);const e=new Map,t=new Map;for(const n of A(this,Am).values())if(n.disableEditing(),!!n.annotationElementId){if(n.serialize()!==null){e.set(n.annotationElementId,n);continue}else t.set(n.annotationElementId,n);(s=this.getEditableAnnotation(n.annotationElementId))==null||s.show(),n.remove()}if(A(this,R0)){const n=A(this,R0).getEditableAnnotations();for(const o of n){const{id:r}=o.data;if(A(this,rn).isDeletedAnnotationElement(r))continue;let l=t.get(r);if(l){l.resetAnnotationElement(o),l.show(!1),o.show();continue}l=e.get(r),l&&(A(this,rn).addChangedExistingAnnotation(l),l.renderAnnotationElement(o)&&l.show(!1)),o.show()}}_(this,xl,DE).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:i}=this.div;for(const n of A(Zm,$A).values())i.remove(`${n._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),I(this,hT,!1)}getEditableAnnotation(s){var e;return((e=A(this,R0))==null?void 0:e.getEditableAnnotation(s))||null}setActiveEditor(s){A(this,rn).getActive()!==s&&A(this,rn).setActiveEditor(s)}enableTextSelection(){var s;if(this.div.tabIndex=-1,(s=A(this,_d))!=null&&s.div&&!A(this,xb)){I(this,xb,new AbortController);const e=A(this,rn).combinedSignal(A(this,xb));A(this,_d).div.addEventListener("pointerdown",_(this,xl,hbe).bind(this),{signal:e}),A(this,_d).div.classList.add("highlighting")}}disableTextSelection(){var s;this.div.tabIndex=0,(s=A(this,_d))!=null&&s.div&&A(this,xb)&&(A(this,xb).abort(),I(this,xb,null),A(this,_d).div.classList.remove("highlighting"))}enableClick(){if(A(this,KA))return;I(this,KA,new AbortController);const s=A(this,rn).combinedSignal(A(this,KA));this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:s});const e=this.pointerup.bind(this);this.div.addEventListener("pointerup",e,{signal:s}),this.div.addEventListener("pointercancel",e,{signal:s})}disableClick(){var s;(s=A(this,KA))==null||s.abort(),I(this,KA,null)}attach(s){A(this,Am).set(s.id,s);const{annotationElementId:e}=s;e&&A(this,rn).isDeletedAnnotationElement(e)&&A(this,rn).removeDeletedAnnotationElement(s)}detach(s){var e;A(this,Am).delete(s.id),(e=A(this,SV))==null||e.removePointerInTextLayer(s.contentDiv),!A(this,hT)&&s.annotationElementId&&A(this,rn).addDeletedAnnotationElement(s)}remove(s){this.detach(s),A(this,rn).removeEditor(s),s.div.remove(),s.isAttachedToDOM=!1}changeParent(s){var e;s.parent!==this&&(s.parent&&s.annotationElementId&&(A(this,rn).addDeletedAnnotationElement(s.annotationElementId),rl.deleteAnnotationElement(s),s.annotationElementId=null),this.attach(s),(e=s.parent)==null||e.detach(s),s.setParent(this),s.div&&s.isAttachedToDOM&&(s.div.remove(),this.div.append(s.div)))}add(s){if(!(s.parent===this&&s.isAttachedToDOM)){if(this.changeParent(s),A(this,rn).addEditor(s),this.attach(s),!s.isAttachedToDOM){const e=s.render();this.div.append(e),s.isAttachedToDOM=!0}s.fixAndSetPosition(),s.onceAdded(!A(this,NV)),A(this,rn).addToAnnotationStorage(s),s._reportTelemetry(s.telemetryInitialData)}}moveEditorInDOM(s){var e;if(!s.isAttachedToDOM)return;const{activeElement:t}=document;s.div.contains(t)&&!A(this,vb)&&(s._focusEventsAllowed=!1,I(this,vb,setTimeout(()=>{I(this,vb,null),s.div.contains(document.activeElement)?s._focusEventsAllowed=!0:(s.div.addEventListener("focusin",()=>{s._focusEventsAllowed=!0},{once:!0,signal:A(this,rn)._signal}),t.focus())},0))),s._structTreeParentId=(e=A(this,SV))==null?void 0:e.moveElementInDOM(this.div,s.div,s.contentDiv,!0)}addOrRebuild(s){s.needsToBeRebuilt()?(s.parent||(s.parent=this),s.rebuild(),s.show()):this.add(s)}addUndoableEditor(s){const e=()=>s._uiManager.rebuild(s),t=()=>{s.remove()};this.addCommands({cmd:e,undo:t,mustExec:!1})}getNextId(){return A(this,rn).getId()}combinedSignal(s){return A(this,rn).combinedSignal(s)}canCreateNewEmptyEditor(){var s;return(s=A(this,xl,Ep))==null?void 0:s.canCreateNewEmptyEditor()}pasteEditor(s,e){A(this,rn).updateToolbar(s),A(this,rn).updateMode(s);const{offsetX:t,offsetY:i}=_(this,xl,g4).call(this),n=this.getNextId(),o=_(this,xl,p4).call(this,{parent:this,id:n,x:t,y:i,uiManager:A(this,rn),isCentered:!0,...e});o&&this.add(o)}async deserialize(s){var e;return await((e=A(Zm,$A).get(s.annotationType??s.annotationEditorType))==null?void 0:e.deserialize(s,this,A(this,rn)))||null}createAndAddNewEditor(s,e,t={}){const i=this.getNextId(),n=_(this,xl,p4).call(this,{parent:this,id:i,x:s.offsetX,y:s.offsetY,uiManager:A(this,rn),isCentered:e,...t});return n&&this.add(n),n}addNewEditor(){this.createAndAddNewEditor(_(this,xl,g4).call(this),!0)}setSelected(s){A(this,rn).setSelected(s)}toggleSelected(s){A(this,rn).toggleSelected(s)}unselect(s){A(this,rn).unselect(s)}pointerup(s){var e;const{isMac:t}=pc.platform;if(!(s.button!==0||s.ctrlKey&&t)&&s.target===this.div&&A(this,qA)&&(I(this,qA,!1),!((e=A(this,xl,Ep))!=null&&e.isDrawer&&A(this,xl,Ep).supportMultipleDrawings))){if(!A(this,cT)){I(this,cT,!0);return}if(A(this,rn).getMode()===ds.STAMP){A(this,rn).unselectAll();return}this.createAndAddNewEditor(s,!1)}}pointerdown(s){var e;if(A(this,rn).getMode()===ds.HIGHLIGHT&&this.enableTextSelection(),A(this,qA)){I(this,qA,!1);return}const{isMac:t}=pc.platform;if(s.button!==0||s.ctrlKey&&t||s.target!==this.div)return;if(I(this,qA,!0),(e=A(this,xl,Ep))!=null&&e.isDrawer){this.startDrawingSession(s);return}const i=A(this,rn).getActive();I(this,cT,!i||i.isEmpty())}startDrawingSession(s){if(this.div.focus(),A(this,Ip)){A(this,xl,Ep).startDrawing(this,A(this,rn),!1,s);return}A(this,rn).setCurrentDrawingSession(this),I(this,Ip,new AbortController);const e=A(this,rn).combinedSignal(A(this,Ip));this.div.addEventListener("blur",({relatedTarget:t})=>{t&&!this.div.contains(t)&&(I(this,kb,null),this.commitOrRemove())},{signal:e}),A(this,xl,Ep).startDrawing(this,A(this,rn),!1,s)}pause(s){if(s){const{activeElement:e}=document;this.div.contains(e)&&I(this,kb,e);return}A(this,kb)&&setTimeout(()=>{var e;(e=A(this,kb))==null||e.focus(),I(this,kb,null)},0)}endDrawingSession(s=!1){return A(this,Ip)?(A(this,rn).setCurrentDrawingSession(null),A(this,Ip).abort(),I(this,Ip,null),I(this,kb,null),A(this,xl,Ep).endDrawing(s)):null}findNewParent(s,e,t){const i=A(this,rn).findParent(e,t);return i===null||i===this?!1:(i.changeParent(s),!0)}commitOrRemove(){return A(this,Ip)?(this.endDrawingSession(),!0):!1}onScaleChanging(){A(this,Ip)&&A(this,xl,Ep).onScaleChangingWhenDrawing(this)}destroy(){var s,e;this.commitOrRemove(),((s=A(this,rn).getActive())==null?void 0:s.parent)===this&&(A(this,rn).commitOrRemove(),A(this,rn).setActiveEditor(null)),A(this,vb)&&(clearTimeout(A(this,vb)),I(this,vb,null));for(const t of A(this,Am).values())(e=A(this,SV))==null||e.removePointerInTextLayer(t.contentDiv),t.setParent(null),t.isAttachedToDOM=!1,t.div.remove();this.div=null,A(this,Am).clear(),A(this,rn).removeLayer(this)}render({viewport:s}){this.viewport=s,YN(this.div,s);for(const e of A(this,rn).getEditors(this.pageIndex))this.add(e),e.rebuild();this.updateMode()}update({viewport:s}){A(this,rn).commitOrRemove(),_(this,xl,DE).call(this);const e=this.viewport.rotation,t=s.rotation;if(this.viewport=s,YN(this.div,{rotation:t}),e!==t)for(const i of A(this,Am).values())i.rotate(t)}get pageDimensions(){const{pageWidth:s,pageHeight:e}=this.viewport.rawDims;return[s,e]}get scale(){return A(this,rn).viewParameters.realScale}},SV=new WeakMap,cT=new WeakMap,R0=new WeakMap,KA=new WeakMap,vb=new WeakMap,Am=new WeakMap,qA=new WeakMap,hT=new WeakMap,NV=new WeakMap,Ip=new WeakMap,kb=new WeakMap,_d=new WeakMap,xb=new WeakMap,rn=new WeakMap,$A=new WeakMap,xl=new WeakSet,hbe=function(s){A(this,rn).unselectAll();const{target:e}=s;if(e===A(this,_d).div||(e.getAttribute("role")==="img"||e.classList.contains("endOfContent"))&&A(this,_d).div.contains(e)){const{isMac:t}=pc.platform;if(s.button!==0||s.ctrlKey&&t)return;A(this,rn).showAllEditors("highlight",!0,!0),A(this,_d).div.classList.add("free"),this.toggleDrawing(),dbe.startHighlighting(this,A(this,rn).direction==="ltr",{target:A(this,_d).div,x:s.x,y:s.y}),A(this,_d).div.addEventListener("pointerup",()=>{A(this,_d).div.classList.remove("free"),this.toggleDrawing(!0)},{once:!0,signal:A(this,rn)._signal}),s.preventDefault()}},Ep=function(){return A(Zm,$A).get(A(this,rn).getMode())},p4=function(s){const e=A(this,xl,Ep);return e?new e.prototype.constructor(s):null},g4=function(){const{x:s,y:e,width:t,height:i}=this.div.getBoundingClientRect(),n=Math.max(0,s),o=Math.max(0,e),r=Math.min(window.innerWidth,s+t),l=Math.min(window.innerHeight,e+i),a=(n+r)/2-s,d=(o+l)/2-e,[c,h]=this.viewport.rotation%180===0?[a,d]:[d,a];return{offsetX:c,offsetY:h}},DE=function(){for(const s of A(this,Am).values())s.isEmpty()&&s.remove()},Rn(Zm,"_initialized",!1),O(Zm,$A,new Map([d1t,U1t,F1t,dbe].map(s=>[s._editorType,s]))),Zm);var Dp,GE,Vc,RV,f4,sd,ube,eZ,b4,mbe,U4;let Z1t=(sd=class{constructor({pageIndex:s}){O(this,eZ),O(this,Dp,null),O(this,GE,0),O(this,Vc,new Map),O(this,RV,new Map),this.pageIndex=s}setParent(s){if(!A(this,Dp)){I(this,Dp,s);return}if(A(this,Dp)!==s){if(A(this,Vc).size>0)for(const e of A(this,Vc).values())e.remove(),s.append(e);I(this,Dp,s)}}static get _svgFactory(){return Vs(this,"_svgFactory",new rae)}draw(s,e=!1,t=!1){const i=mc(this,GE)._++,n=_(this,eZ,b4).call(this),o=sd._svgFactory.createElement("defs");n.append(o);const r=sd._svgFactory.createElement("path");o.append(r);const l=`path_p${this.pageIndex}_${i}`;r.setAttribute("id",l),r.setAttribute("vector-effect","non-scaling-stroke"),e&&A(this,RV).set(i,r);const a=t?_(this,eZ,mbe).call(this,o,l):null,d=sd._svgFactory.createElement("use");return n.append(d),d.setAttribute("href",`#${l}`),this.updateProperties(n,s),A(this,Vc).set(i,n),{id:i,clipPathId:`url(#${a})`}}drawOutline(s,e){const t=mc(this,GE)._++,i=_(this,eZ,b4).call(this),n=sd._svgFactory.createElement("defs");i.append(n);const o=sd._svgFactory.createElement("path");n.append(o);const r=`path_p${this.pageIndex}_${t}`;o.setAttribute("id",r),o.setAttribute("vector-effect","non-scaling-stroke");let l;if(e){const c=sd._svgFactory.createElement("mask");n.append(c),l=`mask_p${this.pageIndex}_${t}`,c.setAttribute("id",l),c.setAttribute("maskUnits","objectBoundingBox");const h=sd._svgFactory.createElement("rect");c.append(h),h.setAttribute("width","1"),h.setAttribute("height","1"),h.setAttribute("fill","white");const u=sd._svgFactory.createElement("use");c.append(u),u.setAttribute("href",`#${r}`),u.setAttribute("stroke","none"),u.setAttribute("fill","black"),u.setAttribute("fill-rule","nonzero"),u.classList.add("mask")}const a=sd._svgFactory.createElement("use");i.append(a),a.setAttribute("href",`#${r}`),l&&a.setAttribute("mask",`url(#${l})`);const d=a.cloneNode();return i.append(d),a.classList.add("mainOutline"),d.classList.add("secondaryOutline"),this.updateProperties(i,s),A(this,Vc).set(t,i),t}finalizeDraw(s,e){A(this,RV).delete(s),this.updateProperties(s,e)}updateProperties(s,e){var t;if(!e)return;const{root:i,bbox:n,rootClass:o,path:r}=e,l=typeof s=="number"?A(this,Vc).get(s):s;if(l){if(i&&_(this,eZ,U4).call(this,l,i),n&&_(t=sd,f4,ube).call(t,l,n),o){const{classList:a}=l;for(const[d,c]of Object.entries(o))a.toggle(d,c)}if(r){const a=l.firstChild.firstChild;_(this,eZ,U4).call(this,a,r)}}}updateParent(s,e){if(e===this)return;const t=A(this,Vc).get(s);t&&(A(e,Dp).append(t),A(this,Vc).delete(s),A(e,Vc).set(s,t))}remove(s){A(this,RV).delete(s),A(this,Dp)!==null&&(A(this,Vc).get(s).remove(),A(this,Vc).delete(s))}destroy(){I(this,Dp,null);for(const s of A(this,Vc).values())s.remove();A(this,Vc).clear(),A(this,RV).clear()}},Dp=new WeakMap,GE=new WeakMap,Vc=new WeakMap,RV=new WeakMap,f4=new WeakSet,ube=function(s,[e,t,i,n]){const{style:o}=s;o.top=`${100*t}%`,o.left=`${100*e}%`,o.width=`${100*i}%`,o.height=`${100*n}%`},eZ=new WeakSet,b4=function(){const s=sd._svgFactory.create(1,1,!0);return A(this,Dp).append(s),s.setAttribute("aria-hidden",!0),s},mbe=function(s,e){const t=sd._svgFactory.createElement("clipPath");s.append(t);const i=`clip_${e}`;t.setAttribute("id",i),t.setAttribute("clipPathUnits","objectBoundingBox");const n=sd._svgFactory.createElement("use");return t.append(n),n.setAttribute("href",`#${e}`),n.classList.add("clip"),i},U4=function(s,e){for(const[t,i]of Object.entries(e))i===null?s.removeAttribute(t):s.setAttribute(t,i)},O(sd,f4),sd);globalThis.pdfjsTestingUtils={HighlightOutliner:nne};On.AbortException;On.AnnotationEditorLayer;On.AnnotationEditorParamsType;On.AnnotationEditorType;On.AnnotationEditorUIManager;var S1t=On.AnnotationLayer;On.AnnotationMode;On.ColorPicker;On.DOMSVGFactory;On.DrawLayer;On.FeatureTest;var F4=On.GlobalWorkerOptions;On.ImageKind;On.InvalidPDFException;On.MissingPDFException;On.OPS;On.OutputScale;On.PDFDataRangeTransport;On.PDFDateString;On.PDFWorker;var N1t=On.PasswordResponses;On.PermissionFlag;On.PixelsPerInch;On.RenderingCancelledException;var R1t=On.TextLayer;On.TouchManager;On.UnexpectedResponseException;On.Util;On.VerbosityLevel;On.XfaLayer;On.build;On.createValidAbsoluteUrl;On.fetchData;var V1t=On.getDocument;On.getFilenameFromUrl;On.getPdfFilenameFromUrl;On.getXfaPageViewport;On.isDataScheme;On.isPdfFile;On.noContextMenu;On.normalizeUnicode;On.setLayerDimensions;On.shadow;On.stopEvent;On.version;const W1t="data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17OTMwNjooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2OihlLHQsaSk9Pnt2YXIgYT1pKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODA6KGUsdCxpKT0+e3ZhciBhPWkoNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjc5OihlLHQsaSk9Pnt2YXIgYT1pKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDg1NTE6KGUsdCxpKT0+e3ZhciBhPWkoMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSw3ODExOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzM5NDooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNjcwNikscz1pKDIxOTUpLG49YS5BcnJheUJ1ZmZlcixvPWEuVHlwZUVycm9yO2UuZXhwb3J0cz1uJiZyKG4ucHJvdG90eXBlLCJieXRlTGVuZ3RoIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe2lmKCJBcnJheUJ1ZmZlciIhPT1zKGUpKXRocm93IG5ldyBvKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwzMjM4OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg3NDc2KSxzPWkoNzM5NCksbj1hLkFycmF5QnVmZmVyLG89biYmbi5wcm90b3R5cGUsZz1vJiZyKG8uc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigwIT09cyhlKSlyZXR1cm4hMTtpZighZylyZXR1cm4hMTt0cnl7ZyhlLDAsMCk7cmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITB9fX0sNTE2OTooZSx0LGkpPT57dmFyIGE9aSgzMjM4KSxyPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoYShlKSl0aHJvdyBuZXcgcigiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtyZXR1cm4gZX19LDU2MzY6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDk1MDQpLHM9aSg2NzA2KSxuPWkoNzY5Niksbz1pKDUxNjkpLGc9aSg3Mzk0KSxjPWkoNDQ4MyksbD1pKDE1NDgpLGg9YS5zdHJ1Y3R1cmVkQ2xvbmUsQz1hLkFycmF5QnVmZmVyLFE9YS5EYXRhVmlldyxFPU1hdGgubWluLHU9Qy5wcm90b3R5cGUsZD1RLnByb3RvdHlwZSxmPXIodS5zbGljZSkscD1zKHUsInJlc2l6YWJsZSIsImdldCIpLG09cyh1LCJtYXhCeXRlTGVuZ3RoIiwiZ2V0IikseT1yKGQuZ2V0SW50OCksdz1yKGQuc2V0SW50OCk7ZS5leHBvcnRzPShsfHxjKSYmZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHI9ZyhlKSxzPXZvaWQgMD09PXQ/cjpuKHQpLHU9IXB8fCFwKGUpO28oZSk7aWYobCl7ZT1oKGUse3RyYW5zZmVyOltlXX0pO2lmKHI9PT1zJiYoaXx8dSkpcmV0dXJuIGV9aWYocj49cyYmKCFpfHx1KSlhPWYoZSwwLHMpO2Vsc2V7dmFyIGQ9aSYmIXUmJm0/e21heEJ5dGVMZW5ndGg6bShlKX06dm9pZCAwO2E9bmV3IEMocyxkKTtmb3IodmFyIGI9bmV3IFEoZSksRD1uZXcgUShhKSxTPUUocyxyKSxrPTA7azxTO2srKyl3KEQsayx5KGIsaykpfWx8fGMoZSk7cmV0dXJuIGF9fSw0NjQ0OihlLHQsaSk9Pnt2YXIgYSxyLHMsbj1pKDc4MTEpLG89aSgzNzI0KSxnPWkoNDU3NiksYz1pKDQ5MDEpLGw9aSgzNCksaD1pKDkyOTcpLEM9aSg2OTU1KSxRPWkoNjgyMyksRT1pKDY2OTkpLHU9aSg2ODQwKSxkPWkoMjEwNiksZj1pKDE2MjUpLHA9aSgyNzg3KSxtPWkoMjk2NykseT1pKDgyMjcpLHc9aSgzMzkyKSxiPWkoMTE4MSksRD1iLmVuZm9yY2UsUz1iLmdldCxrPWcuSW50OEFycmF5LFI9ayYmay5wcm90b3R5cGUsTj1nLlVpbnQ4Q2xhbXBlZEFycmF5LEc9TiYmTi5wcm90b3R5cGUsTT1rJiZwKGspLFU9UiYmcChSKSx4PU9iamVjdC5wcm90b3R5cGUsTD1nLlR5cGVFcnJvcixIPXkoInRvU3RyaW5nVGFnIiksSj13KCJUWVBFRF9BUlJBWV9UQUciKSx2PSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLFk9biYmISFtJiYiT3BlcmEiIT09QyhnLm9wZXJhKSxLPSExLFQ9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxxPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7aWYobCh0KSl7dmFyIGk9Uyh0KTtyZXR1cm4gaSYmaChpLHYpP2lbdl06Z2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKHQpfX0saXNUeXBlZEFycmF5PWZ1bmN0aW9uKGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIGgoVCx0KXx8aChxLHQpfTtmb3IoYSBpbiBUKShzPShyPWdbYV0pJiZyLnByb3RvdHlwZSk/RChzKVt2XT1yOlk9ITE7Zm9yKGEgaW4gcSkocz0ocj1nW2FdKSYmci5wcm90b3R5cGUpJiYoRChzKVt2XT1yKTtpZighWXx8IWMoTSl8fE09PT1GdW5jdGlvbi5wcm90b3R5cGUpe009ZnVuY3Rpb24gVHlwZWRBcnJheSgpe3Rocm93IG5ldyBMKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfTtpZihZKWZvcihhIGluIFQpZ1thXSYmbShnW2FdLE0pfWlmKCFZfHwhVXx8VT09PXgpe1U9TS5wcm90b3R5cGU7aWYoWSlmb3IoYSBpbiBUKWdbYV0mJm0oZ1thXS5wcm90b3R5cGUsVSl9WSYmcChHKSE9PVUmJm0oRyxVKTtpZihvJiYhaChVLEgpKXtLPSEwO2QoVSxILHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyk/dGhpc1tKXTp2b2lkIDB9fSk7Zm9yKGEgaW4gVClnW2FdJiZFKGdbYV0sSixhKX1lLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6WSxUWVBFRF9BUlJBWV9UQUc6SyYmSixhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihpc1R5cGVkQXJyYXkoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IEwoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKGMoZSkmJighbXx8ZihNLGUpKSlyZXR1cm4gZTt0aHJvdyBuZXcgTChRKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQsaSxhKXtpZihvKXtpZihpKWZvcih2YXIgciBpbiBUKXt2YXIgcz1nW3JdO2lmKHMmJmgocy5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBzLnByb3RvdHlwZVtlXX1jYXRjaChpKXt0cnl7cy5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1VW2VdJiYhaXx8dShVLGUsaT90OlkmJlJbZV18fHQsYSl9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYSxyO2lmKG8pe2lmKG0pe2lmKGkpZm9yKGEgaW4gVClpZigocj1nW2FdKSYmaChyLGUpKXRyeXtkZWxldGUgcltlXX1jYXRjaChlKXt9aWYoTVtlXSYmIWkpcmV0dXJuO3RyeXtyZXR1cm4gdShNLGUsaT90OlkmJk1bZV18fHQpfWNhdGNoKGUpe319Zm9yKGEgaW4gVCkhKHI9Z1thXSl8fHJbZV0mJiFpfHx1KHIsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcixpc1ZpZXc6ZnVuY3Rpb24gaXNWaWV3KGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGgoVCx0KXx8aChxLHQpfSxpc1R5cGVkQXJyYXksVHlwZWRBcnJheTpNLFR5cGVkQXJyYXlQcm90b3R5cGU6VX19LDUzNzA6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHI9MCxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9pOmEodCksbj1uZXcgZShzKTtzPnI7KW5bcl09dFtyKytdO3JldHVybiBufX0sOTYxNzooZSx0LGkpPT57dmFyIGE9aSg1Mzk3KSxyPWkoNTYxMCkscz1pKDYxOTgpLGNyZWF0ZU1ldGhvZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxpLG4pe3ZhciBvPWEodCksZz1zKG8pO2lmKDA9PT1nKXJldHVybiFlJiYtMTt2YXIgYyxsPXIobixnKTtpZihlJiZpIT1pKXtmb3IoO2c+bDspaWYoKGM9b1tsKytdKSE9YylyZXR1cm4hMH1lbHNlIGZvcig7Zz5sO2wrKylpZigoZXx8bCBpbiBvKSYmb1tsXT09PWkpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpjcmVhdGVNZXRob2QoITApLGluZGV4T2Y6Y3JlYXRlTWV0aG9kKCExKX19LDQ1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQzNzYpLHM9VHlwZUVycm9yLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWEmJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7ZS5leHBvcnRzPW8/ZnVuY3Rpb24oZSx0KXtpZihyKGUpJiYhbihlLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBuZXcgcygiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiBlLmxlbmd0aD10fTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD10fX0sNzY4MDooZSx0LGkpPT57dmFyIGE9aSg5NTA0KTtlLmV4cG9ydHM9YShbXS5zbGljZSl9LDc2Mjg6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPWEoZSkscj1uZXcgdChpKSxzPTA7czxpO3MrKylyW3NdPWVbaS1zLTFdO3JldHVybiByfX0sOTkyODooZSx0LGkpPT57dmFyIGE9aSg2MTk4KSxyPWkoMTI5MSkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxuKXt2YXIgbz1hKGUpLGc9cihpKSxjPWc8MD9vK2c6ZztpZihjPj1vfHxjPDApdGhyb3cgbmV3IHMoIkluY29ycmVjdCBpbmRleCIpO2Zvcih2YXIgbD1uZXcgdChvKSxoPTA7aDxvO2grKylsW2hdPWg9PT1jP246ZVtoXTtyZXR1cm4gbH19LDYzMTk6KGUsdCxpKT0+e3ZhciBhPWkoODU1MSkscj1pKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxzKXt0cnl7cmV0dXJuIHM/dChhKGkpWzBdLGlbMV0pOnQoaSl9Y2F0Y2godCl7cihlLCJ0aHJvdyIsdCl9fX0sMjE5NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWEoe30udG9TdHJpbmcpLHM9YSgiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzKHIoZSksOCwtMSl9fSw2OTU1OihlLHQsaSk9Pnt2YXIgYT1pKDIxNDApLHI9aSg0OTAxKSxzPWkoMjE5NSksbj1pKDgyMjcpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGc9IkFyZ3VtZW50cyI9PT1zKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7ZS5leHBvcnRzPWE/czpmdW5jdGlvbihlKXt2YXIgdCxpLGE7cmV0dXJuIHZvaWQgMD09PWU/IlVuZGVmaW5lZCI6bnVsbD09PWU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoaT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChlKXt9fSh0PW8oZSksbikpP2k6Zz9zKHQpOiJPYmplY3QiPT09KGE9cyh0KSkmJnIodC5jYWxsZWUpPyJBcmd1bWVudHMiOmF9fSw3NzQwOihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg1MDMxKSxzPWkoNzM0Nyksbj1pKDQ5MTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciBvPXIodCksZz1uLmYsYz1zLmYsbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgaD1vW2xdO2EoZSxoKXx8aSYmYShpLGgpfHxnKGUsaCxjKHQsaCkpfX19LDIyMTE6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbDtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKSE9PUYucHJvdG90eXBlfSkpfSwyNTI5OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fX0sNjY5OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1hP2Z1bmN0aW9uKGUsdCxpKXtyZXR1cm4gci5mKGUsdCxzKDEsaSkpfTpmdW5jdGlvbihlLHQsaSl7ZVt0XT1pO3JldHVybiBlfX0sNjk4MDplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sNDY1OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7YT9yLmYoZSx0LHMoMCxpKSk6ZVt0XT1pfX0sMjEwNjooZSx0LGkpPT57dmFyIGE9aSgyODMpLHI9aSg0OTEzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2kuZ2V0JiZhKGkuZ2V0LHQse2dldHRlcjohMH0pO2kuc2V0JiZhKGkuc2V0LHQse3NldHRlcjohMH0pO3JldHVybiByLmYoZSx0LGkpfX0sNjg0MDooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNDkxMykscz1pKDI4Myksbj1pKDk0MzMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtvfHwobz17fSk7dmFyIGc9by5lbnVtZXJhYmxlLGM9dm9pZCAwIT09by5uYW1lP28ubmFtZTp0O2EoaSkmJnMoaSxjLG8pO2lmKG8uZ2xvYmFsKWc/ZVt0XT1pOm4odCxpKTtlbHNle3RyeXtvLnVuc2FmZT9lW3RdJiYoZz0hMCk6ZGVsZXRlIGVbdF19Y2F0Y2goZSl7fWc/ZVt0XT1pOnIuZihlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IW8ubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFvLm5vbldyaXRhYmxlfSl9cmV0dXJuIGV9fSw2Mjc5OihlLHQsaSk9Pnt2YXIgYT1pKDY4NDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciByIGluIHQpYShlLHIsdFtyXSxpKTtyZXR1cm4gZX19LDk0MzM6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e3IoYSxlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKGkpe2FbZV09dH1yZXR1cm4gdH19LDM3MjQ6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSw0NDgzOihlLHQsaSk9Pnt2YXIgYSxyLHMsbixvPWkoNDU3NiksZz1pKDk0MjkpLGM9aSgxNTQ4KSxsPW8uc3RydWN0dXJlZENsb25lLGg9by5BcnJheUJ1ZmZlcixDPW8uTWVzc2FnZUNoYW5uZWwsUT0hMTtpZihjKVE9ZnVuY3Rpb24oZSl7bChlLHt0cmFuc2ZlcjpbZV19KX07ZWxzZSBpZihoKXRyeXtDfHwoYT1nKCJ3b3JrZXJfdGhyZWFkcyIpKSYmKEM9YS5NZXNzYWdlQ2hhbm5lbCk7aWYoQyl7cj1uZXcgQztzPW5ldyBoKDIpO249ZnVuY3Rpb24oZSl7ci5wb3J0MS5wb3N0TWVzc2FnZShudWxsLFtlXSl9O2lmKDI9PT1zLmJ5dGVMZW5ndGgpe24ocyk7MD09PXMuYnl0ZUxlbmd0aCYmKFE9bil9fX1jYXRjaChlKXt9ZS5leHBvcnRzPVF9LDQwNTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDM0KSxzPWEuZG9jdW1lbnQsbj1yKHMpJiZyKHMuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuP3MuY3JlYXRlRWxlbWVudChlKTp7fX19LDY4Mzc6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT45MDA3MTk5MjU0NzQwOTkxKXRocm93IHQoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO3JldHVybiBlfX0sNTAwMjplPT57ZS5leHBvcnRzPXtJbmRleFNpemVFcnJvcjp7czoiSU5ERVhfU0laRV9FUlIiLGM6MSxtOjF9LERPTVN0cmluZ1NpemVFcnJvcjp7czoiRE9NU1RSSU5HX1NJWkVfRVJSIixjOjIsbTowfSxIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6e3M6IkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsYzozLG06MX0sV3JvbmdEb2N1bWVudEVycm9yOntzOiJXUk9OR19ET0NVTUVOVF9FUlIiLGM6NCxtOjF9LEludmFsaWRDaGFyYWN0ZXJFcnJvcjp7czoiSU5WQUxJRF9DSEFSQUNURVJfRVJSIixjOjUsbToxfSxOb0RhdGFBbGxvd2VkRXJyb3I6e3M6Ik5PX0RBVEFfQUxMT1dFRF9FUlIiLGM6NixtOjB9LE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOntzOiJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLGM6NyxtOjF9LE5vdEZvdW5kRXJyb3I6e3M6Ik5PVF9GT1VORF9FUlIiLGM6OCxtOjF9LE5vdFN1cHBvcnRlZEVycm9yOntzOiJOT1RfU1VQUE9SVEVEX0VSUiIsYzo5LG06MX0sSW5Vc2VBdHRyaWJ1dGVFcnJvcjp7czoiSU5VU0VfQVRUUklCVVRFX0VSUiIsYzoxMCxtOjF9LEludmFsaWRTdGF0ZUVycm9yOntzOiJJTlZBTElEX1NUQVRFX0VSUiIsYzoxMSxtOjF9LFN5bnRheEVycm9yOntzOiJTWU5UQVhfRVJSIixjOjEyLG06MX0sSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOntzOiJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLGM6MTMsbToxfSxOYW1lc3BhY2VFcnJvcjp7czoiTkFNRVNQQUNFX0VSUiIsYzoxNCxtOjF9LEludmFsaWRBY2Nlc3NFcnJvcjp7czoiSU5WQUxJRF9BQ0NFU1NfRVJSIixjOjE1LG06MX0sVmFsaWRhdGlvbkVycm9yOntzOiJWQUxJREFUSU9OX0VSUiIsYzoxNixtOjB9LFR5cGVNaXNtYXRjaEVycm9yOntzOiJUWVBFX01JU01BVENIX0VSUiIsYzoxNyxtOjF9LFNlY3VyaXR5RXJyb3I6e3M6IlNFQ1VSSVRZX0VSUiIsYzoxOCxtOjF9LE5ldHdvcmtFcnJvcjp7czoiTkVUV09SS19FUlIiLGM6MTksbToxfSxBYm9ydEVycm9yOntzOiJBQk9SVF9FUlIiLGM6MjAsbToxfSxVUkxNaXNtYXRjaEVycm9yOntzOiJVUkxfTUlTTUFUQ0hfRVJSIixjOjIxLG06MX0sUXVvdGFFeGNlZWRlZEVycm9yOntzOiJRVU9UQV9FWENFRURFRF9FUlIiLGM6MjIsbToxfSxUaW1lb3V0RXJyb3I6e3M6IlRJTUVPVVRfRVJSIixjOjIzLG06MX0sSW52YWxpZE5vZGVUeXBlRXJyb3I6e3M6IklOVkFMSURfTk9ERV9UWVBFX0VSUiIsYzoyNCxtOjF9LERhdGFDbG9uZUVycm9yOntzOiJEQVRBX0NMT05FX0VSUiIsYzoyNSxtOjF9fX0sODcyNzplPT57ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LDYxOTM6KGUsdCxpKT0+e3ZhciBhPWkoNDIxNSk7ZS5leHBvcnRzPSJOT0RFIj09PWF9LDI4Mzk6KGUsdCxpKT0+e3ZhciBhPWkoNDU3NikubmF2aWdhdG9yLHI9YSYmYS51c2VyQWdlbnQ7ZS5leHBvcnRzPXI/U3RyaW5nKHIpOiIifSw5NTE5OihlLHQsaSk9Pnt2YXIgYSxyLHM9aSg0NTc2KSxuPWkoMjgzOSksbz1zLnByb2Nlc3MsZz1zLkRlbm8sYz1vJiZvLnZlcnNpb25zfHxnJiZnLnZlcnNpb24sbD1jJiZjLnY4O2wmJihyPShhPWwuc3BsaXQoIi4iKSlbMF0+MCYmYVswXTw0PzE6KyhhWzBdK2FbMV0pKTshciYmbiYmKCEoYT1uLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8YVsxXT49NzQpJiYoYT1uLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocj0rYVsxXSk7ZS5leHBvcnRzPXJ9LDQyMTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDI4MzkpLHM9aSgyMTk1KSx1c2VyQWdlbnRTdGFydHNXaXRoPWZ1bmN0aW9uKGUpe3JldHVybiByLnNsaWNlKDAsZS5sZW5ndGgpPT09ZX07ZS5leHBvcnRzPXVzZXJBZ2VudFN0YXJ0c1dpdGgoIkJ1bi8iKT8iQlVOIjp1c2VyQWdlbnRTdGFydHNXaXRoKCJDbG91ZGZsYXJlLVdvcmtlcnMiKT8iQ0xPVURGTEFSRSI6dXNlckFnZW50U3RhcnRzV2l0aCgiRGVuby8iKT8iREVOTyI6dXNlckFnZW50U3RhcnRzV2l0aCgiTm9kZS5qcy8iKT8iTk9ERSI6YS5CdW4mJiJzdHJpbmciPT10eXBlb2YgQnVuLnZlcnNpb24/IkJVTiI6YS5EZW5vJiYib2JqZWN0Ij09dHlwZW9mIERlbm8udmVyc2lvbj8iREVOTyI6InByb2Nlc3MiPT09cyhhLnByb2Nlc3MpPyJOT0RFIjphLndpbmRvdyYmYS5kb2N1bWVudD8iQlJPV1NFUiI6IlJFU1QifSw4NTc0OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9RXJyb3Iscz1hKCIiLnJlcGxhY2UpLG49U3RyaW5nKG5ldyByKCJ6eGNhc2QiKS5zdGFjayksbz0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGc9by50ZXN0KG4pO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGcmJiJzdHJpbmciPT10eXBlb2YgZSYmIXIucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDt0LS07KWU9cyhlLG8sIiIpO3JldHVybiBlfX0sNjUxODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNzM0NykuZixzPWkoNjY5OSksbj1pKDY4NDApLG89aSg5NDMzKSxnPWkoNzc0MCksYz1pKDI3OTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpLGwsaCxDLFEsRT1lLnRhcmdldCx1PWUuZ2xvYmFsLGQ9ZS5zdGF0O2lmKGk9dT9hOmQ/YVtFXXx8byhFLHt9KTphW0VdJiZhW0VdLnByb3RvdHlwZSlmb3IobCBpbiB0KXtDPXRbbF07aD1lLmRvbnRDYWxsR2V0U2V0PyhRPXIoaSxsKSkmJlEudmFsdWU6aVtsXTtpZighYyh1P2w6RSsoZD8iLiI6IiMiKStsLGUuZm9yY2VkKSYmdm9pZCAwIT09aCl7aWYodHlwZW9mIEM9PXR5cGVvZiBoKWNvbnRpbnVlO2coQyxoKX0oZS5zaGFtfHxoJiZoLnNoYW0pJiZzKEMsInNoYW0iLCEwKTtuKGksbCxDLGUpfX19LDkwMzk6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sODc0NTooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5hcHBseSxuPXIuY2FsbDtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwoYT9uLmJpbmQocyk6ZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseShzLGFyZ3VtZW50cyl9KX0sNjA4MDooZSx0LGkpPT57dmFyIGE9aSg3NDc2KSxyPWkoOTMwNikscz1pKDYxNiksbj1hKGEuYmluZCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cihlKTtyZXR1cm4gdm9pZCAwPT09dD9lOnM/bihlLHQpOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LDYxNjooZSx0LGkpPT57dmFyIGE9aSg5MDM5KTtlLmV4cG9ydHM9IWEoKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LDk1NjU6KGUsdCxpKT0+e3ZhciBhPWkoNjE2KSxyPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO2UuZXhwb3J0cz1hP3IuYmluZChyKTpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsYXJndW1lbnRzKX19LDM1MDooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTI5Nykscz1GdW5jdGlvbi5wcm90b3R5cGUsbj1hJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89cihzLCJuYW1lIiksZz1vJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uIHNvbWV0aGluZygpe30ubmFtZSxjPW8mJighYXx8YSYmbihzLCJuYW1lIikuY29uZmlndXJhYmxlKTtlLmV4cG9ydHM9e0VYSVNUUzpvLFBST1BFUjpnLENPTkZJR1VSQUJMRTpjfX0sNjcwNjooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTMwNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt0cnl7cmV0dXJuIGEocihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdClbaV0pKX1jYXRjaChlKXt9fX0sNzQ3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KSxyPWkoOTUwNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJGdW5jdGlvbiI9PT1hKGUpKXJldHVybiByKGUpfX0sOTUwNDooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5jYWxsLG49YSYmci5iaW5kLmJpbmQocyxzKTtlLmV4cG9ydHM9YT9uOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzLmFwcGx5KGUsYXJndW1lbnRzKX19fSw5NDI5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg2MTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocil7dHJ5e3JldHVybiBhLnByb2Nlc3MuZ2V0QnVpbHRpbk1vZHVsZShlKX1jYXRjaChlKXt9dHJ5e3JldHVybiBGdW5jdGlvbigncmV0dXJuIHJlcXVpcmUoIicrZSsnIiknKSgpfWNhdGNoKGUpe319fX0sNzc1MTooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8oaT1hW2VdLHIoaSk/aTp2b2lkIDApOmFbZV0mJmFbZV1bdF07dmFyIGl9fSwxNzY3OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJue2l0ZXJhdG9yOmUsbmV4dDplLm5leHQsZG9uZTohMX19fSw4NTE6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1pKDU5NjYpLHM9aSg0MTE3KSxuPWkoNjI2OSksbz1pKDgyMjcpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighcyhlKSlyZXR1cm4gcihlLG8pfHxyKGUsIkBAaXRlcmF0b3IiKXx8blthKGUpXX19LDgxOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSg5MzA2KSxzPWkoODU1MSksbj1pKDY4MjMpLG89aSg4NTEpLGc9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8Mj9vKGUpOnQ7aWYocihpKSlyZXR1cm4gcyhhKGksZSkpO3Rocm93IG5ldyBnKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKX19LDU5NjY6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1pKDQxMTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOmEoaSl9fSwzNzg5OihlLHQsaSk9Pnt2YXIgYT1pKDkzMDYpLHI9aSg4NTUxKSxzPWkoOTU2NSksbj1pKDEyOTEpLG89aSgxNzY3KSxnPSJJbnZhbGlkIHNpemUiLGM9UmFuZ2VFcnJvcixsPVR5cGVFcnJvcixoPU1hdGgubWF4LFNldFJlY29yZD1mdW5jdGlvbihlLHQpe3RoaXMuc2V0PWU7dGhpcy5zaXplPWgodCwwKTt0aGlzLmhhcz1hKGUuaGFzKTt0aGlzLmtleXM9YShlLmtleXMpfTtTZXRSZWNvcmQucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBvKHIocyh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBzKHRoaXMuaGFzLHRoaXMuc2V0LGUpfX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3IoZSk7dmFyIHQ9K2Uuc2l6ZTtpZih0IT10KXRocm93IG5ldyBsKGcpO3ZhciBpPW4odCk7aWYoaTwwKXRocm93IG5ldyBjKGcpO3JldHVybiBuZXcgU2V0UmVjb3JkKGUsaSl9fSw0NTc2OmZ1bmN0aW9uKGUpe3ZhciBjaGVjaz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX07ZS5leHBvcnRzPWNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB0aGlzJiZ0aGlzKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sOTI5NzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoODk4MSkscz1hKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24gaGFzT3duKGUsdCl7cmV0dXJuIHMocihlKSx0KX19LDQyMTplPT57ZS5leHBvcnRzPXt9fSwzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSk7ZS5leHBvcnRzPWEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDU5MTc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpLHM9aSg0MDU1KTtlLmV4cG9ydHM9IWEmJiFyKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sNzA1NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTAzOSkscz1pKDIxOTUpLG49T2JqZWN0LG89YSgiIi5zcGxpdCk7ZS5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIW4oInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09PXMoZSk/byhlLCIiKTpuKGUpfTpufSwzMTY3OihlLHQsaSk9Pnt2YXIgYT1pKDQ5MDEpLHI9aSgzNCkscz1pKDI5NjcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dmFyIG4sbztzJiZhKG49dC5jb25zdHJ1Y3RvcikmJm4hPT1pJiZyKG89bi5wcm90b3R5cGUpJiZvIT09aS5wcm90b3R5cGUmJnMoZSxvKTtyZXR1cm4gZX19LDM3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDQ5MDEpLHM9aSg3NjI5KSxuPWEoRnVuY3Rpb24udG9TdHJpbmcpO3Iocy5pbnNwZWN0U291cmNlKXx8KHMuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pO2UuZXhwb3J0cz1zLmluc3BlY3RTb3VyY2V9LDExODE6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoODYyMiksbz1pKDQ1NzYpLGc9aSgzNCksYz1pKDY2OTkpLGw9aSg5Mjk3KSxoPWkoNzYyOSksQz1pKDYxMTkpLFE9aSg0MjEpLEU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIix1PW8uVHlwZUVycm9yLGQ9by5XZWFrTWFwO2lmKG58fGguc3RhdGUpe3ZhciBmPWguc3RhdGV8fChoLnN0YXRlPW5ldyBkKTtmLmdldD1mLmdldDtmLmhhcz1mLmhhcztmLnNldD1mLnNldDthPWZ1bmN0aW9uKGUsdCl7aWYoZi5oYXMoZSkpdGhyb3cgbmV3IHUoRSk7dC5mYWNhZGU9ZTtmLnNldChlLHQpO3JldHVybiB0fTtyPWZ1bmN0aW9uKGUpe3JldHVybiBmLmdldChlKXx8e319O3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuaGFzKGUpfX1lbHNle3ZhciBwPUMoInN0YXRlIik7UVtwXT0hMDthPWZ1bmN0aW9uKGUsdCl7aWYobChlLHApKXRocm93IG5ldyB1KEUpO3QuZmFjYWRlPWU7YyhlLHAsdCk7cmV0dXJuIHR9O3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxwKT9lW3BdOnt9fTtzPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUscCl9fWUuZXhwb3J0cz17c2V0OmEsZ2V0OnIsaGFzOnMsZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9yKGUpOmEoZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk7aWYoIWcodCl8fChpPXIodCkpLnR5cGUhPT1lKXRocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrZSsiIHJlcXVpcmVkIik7cmV0dXJuIGl9fX19LDQyMDk6KGUsdCxpKT0+e3ZhciBhPWkoODIyNykscj1pKDYyNjkpLHM9YSgiaXRlcmF0b3IiKSxuPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihyLkFycmF5PT09ZXx8bltzXT09PWUpfX0sNDM3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24gaXNBcnJheShlKXtyZXR1cm4iQXJyYXkiPT09YShlKX19LDExMDg6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09dHx8IkJpZ1VpbnQ2NEFycmF5Ij09PXR9fSw0OTAxOmU9Pnt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7ZS5leHBvcnRzPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT10fTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDI3OTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSkscj1pKDQ5MDEpLHM9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT1vW24oZSldO3JldHVybiBpPT09Y3x8aSE9PWcmJihyKHQpP2EodCk6ISF0KX0sbj1pc0ZvcmNlZC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHMsIi4iKS50b0xvd2VyQ2FzZSgpfSxvPWlzRm9yY2VkLmRhdGE9e30sZz1pc0ZvcmNlZC5OQVRJVkU9Ik4iLGM9aXNGb3JjZWQuUE9MWUZJTEw9IlAiO2UuZXhwb3J0cz1pc0ZvcmNlZH0sNDExNzplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfX0sMzQ6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTphKGUpfX0sMzkyNTooZSx0LGkpPT57dmFyIGE9aSgzNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfHxudWxsPT09ZX19LDYzOTU6ZT0+e2UuZXhwb3J0cz0hMX0sNzU3OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg0OTAxKSxzPWkoMTYyNSksbj1pKDcwNDApLG89T2JqZWN0O2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU3ltYm9sIik7cmV0dXJuIHIodCkmJnModC5wcm90b3R5cGUsbyhlKSl9fSw1MDc6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHIscyxuPWk/ZTplLml0ZXJhdG9yLG89ZS5uZXh0OyEocj1hKG8sbikpLmRvbmU7KWlmKHZvaWQgMCE9PShzPXQoci52YWx1ZSkpKXJldHVybiBzfX0sMjY1MjooZSx0LGkpPT57dmFyIGE9aSg2MDgwKSxyPWkoOTU2NSkscz1pKDg1NTEpLG49aSg2ODIzKSxvPWkoNDIwOSksZz1pKDYxOTgpLGM9aSgxNjI1KSxsPWkoODEpLGg9aSg4NTEpLEM9aSg5NTM5KSxRPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZTt0aGlzLnJlc3VsdD10fSxFPVJlc3VsdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgdSxkLGYscCxtLHksdyxiPWkmJmkudGhhdCxEPSEoIWl8fCFpLkFTX0VOVFJJRVMpLFM9ISghaXx8IWkuSVNfUkVDT1JEKSxrPSEoIWl8fCFpLklTX0lURVJBVE9SKSxSPSEoIWl8fCFpLklOVEVSUlVQVEVEKSxOPWEodCxiKSxzdG9wPWZ1bmN0aW9uKGUpe3UmJkModSwibm9ybWFsIixlKTtyZXR1cm4gbmV3IFJlc3VsdCghMCxlKX0sY2FsbEZuPWZ1bmN0aW9uKGUpe2lmKEQpe3MoZSk7cmV0dXJuIFI/TihlWzBdLGVbMV0sc3RvcCk6TihlWzBdLGVbMV0pfXJldHVybiBSP04oZSxzdG9wKTpOKGUpfTtpZihTKXU9ZS5pdGVyYXRvcjtlbHNlIGlmKGspdT1lO2Vsc2V7aWYoIShkPWgoZSkpKXRocm93IG5ldyBRKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGQpKXtmb3IoZj0wLHA9ZyhlKTtwPmY7ZisrKWlmKChtPWNhbGxGbihlW2ZdKSkmJmMoRSxtKSlyZXR1cm4gbTtyZXR1cm4gbmV3IFJlc3VsdCghMSl9dT1sKGUsZCl9eT1TP2UubmV4dDp1Lm5leHQ7Zm9yKDshKHc9cih5LHUpKS5kb25lOyl7dHJ5e209Y2FsbEZuKHcudmFsdWUpfWNhdGNoKGUpe0ModSwidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgbSYmbSYmYyhFLG0pKXJldHVybiBtfXJldHVybiBuZXcgUmVzdWx0KCExKX19LDk1Mzk6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDg1NTEpLHM9aSg1OTY2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG87cihlKTt0cnl7aWYoIShuPXMoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBpO3JldHVybiBpfW49YShuLGUpfWNhdGNoKGUpe289ITA7bj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IGk7aWYobyl0aHJvdyBuO3Iobik7cmV0dXJuIGl9fSw5NDYyOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgyMzYwKSxzPWkoNjY5OSksbj1pKDYyNzkpLG89aSg4MjI3KSxnPWkoMTE4MSksYz1pKDU5NjYpLGw9aSg3NjU3KS5JdGVyYXRvclByb3RvdHlwZSxoPWkoMjUyOSksQz1pKDk1MzkpLFE9bygidG9TdHJpbmdUYWciKSxFPSJJdGVyYXRvckhlbHBlciIsdT0iV3JhcEZvclZhbGlkSXRlcmF0b3IiLGQ9Zy5zZXQsY3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZT1mdW5jdGlvbihlKXt2YXIgdD1nLmdldHRlckZvcihlP3U6RSk7cmV0dXJuIG4ocihsKSx7bmV4dDpmdW5jdGlvbiBuZXh0KCl7dmFyIGk9dCh0aGlzKTtpZihlKXJldHVybiBpLm5leHRIYW5kbGVyKCk7dHJ5e3ZhciBhPWkuZG9uZT92b2lkIDA6aS5uZXh0SGFuZGxlcigpO3JldHVybiBoKGEsaS5kb25lKX1jYXRjaChlKXtpLmRvbmU9ITA7dGhyb3cgZX19LHJldHVybjpmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscj1pLml0ZXJhdG9yO2kuZG9uZT0hMDtpZihlKXt2YXIgcz1jKHIsInJldHVybiIpO3JldHVybiBzP2EocyxyKTpoKHZvaWQgMCwhMCl9aWYoaS5pbm5lcil0cnl7QyhpLmlubmVyLml0ZXJhdG9yLCJub3JtYWwiKX1jYXRjaChlKXtyZXR1cm4gQyhyLCJ0aHJvdyIsZSl9ciYmQyhyLCJub3JtYWwiKTtyZXR1cm4gaCh2b2lkIDAsITApfX0pfSxmPWNyZWF0ZUl0ZXJhdG9yUHJveHlQcm90b3R5cGUoITApLHA9Y3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZSghMSk7cyhwLFEsIkl0ZXJhdG9yIEhlbHBlciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWZ1bmN0aW9uIEl0ZXJhdG9yKGksYSl7aWYoYSl7YS5pdGVyYXRvcj1pLml0ZXJhdG9yO2EubmV4dD1pLm5leHR9ZWxzZSBhPWk7YS50eXBlPXQ/dTpFO2EubmV4dEhhbmRsZXI9ZTthLmNvdW50ZXI9MDthLmRvbmU9ITE7ZCh0aGlzLGEpfTtpLnByb3RvdHlwZT10P2Y6cDtyZXR1cm4gaX19LDcxMzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoOTMwNikscz1pKDg1NTEpLG49aSgxNzY3KSxvPWkoOTQ2MiksZz1pKDYzMTkpLGM9bygoZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZXJhdG9yLHQ9cyhhKHRoaXMubmV4dCxlKSk7aWYoISh0aGlzLmRvbmU9ISF0LmRvbmUpKXJldHVybiBnKGUsdGhpcy5tYXBwZXIsW3QudmFsdWUsdGhpcy5jb3VudGVyKytdLCEwKX0pKTtlLmV4cG9ydHM9ZnVuY3Rpb24gbWFwKGUpe3ModGhpcyk7cihlKTtyZXR1cm4gbmV3IGMobih0aGlzKSx7bWFwcGVyOmV9KX19LDc2NTc6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoOTAzOSksbz1pKDQ5MDEpLGc9aSgzNCksYz1pKDIzNjApLGw9aSgyNzg3KSxoPWkoNjg0MCksQz1pKDgyMjcpLFE9aSg2Mzk1KSxFPUMoIml0ZXJhdG9yIiksdT0hMTtbXS5rZXlzJiYoIm5leHQiaW4ocz1bXS5rZXlzKCkpPyhyPWwobChzKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGE9cik6dT0hMCk7IWcoYSl8fG4oKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGFbRV0uY2FsbChlKSE9PWV9KSk/YT17fTpRJiYoYT1jKGEpKTtvKGFbRV0pfHxoKGEsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTtlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOmEsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzp1fX0sNjI2OTplPT57ZS5leHBvcnRzPXt9fSw2MTk4OihlLHQsaSk9Pnt2YXIgYT1pKDgwMTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShlLmxlbmd0aCl9fSwyODM6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkwMzkpLHM9aSg0OTAxKSxuPWkoOTI5Nyksbz1pKDM3MjQpLGc9aSgzNTApLkNPTkZJR1VSQUJMRSxjPWkoMzcwNiksbD1pKDExODEpLGg9bC5lbmZvcmNlLEM9bC5nZXQsUT1TdHJpbmcsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1hKCIiLnNsaWNlKSxkPWEoIiIucmVwbGFjZSksZj1hKFtdLmpvaW4pLHA9byYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1FKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLG09U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHk9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXsiU3ltYm9sKCI9PT11KFEodCksMCw3KSYmKHQ9IlsiK2QoUSh0KSwvXlN5bWJvbFwoKFteKV0qKVwpLiokLywiJDEiKSsiXSIpO2kmJmkuZ2V0dGVyJiYodD0iZ2V0ICIrdCk7aSYmaS5zZXR0ZXImJih0PSJzZXQgIit0KTsoIW4oZSwibmFtZSIpfHxnJiZlLm5hbWUhPT10KSYmKG8/RShlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCk7cCYmaSYmbihpLCJhcml0eSIpJiZlLmxlbmd0aCE9PWkuYXJpdHkmJkUoZSwibGVuZ3RoIix7dmFsdWU6aS5hcml0eX0pO3RyeXtpJiZuKGksImNvbnN0cnVjdG9yIikmJmkuY29uc3RydWN0b3I/byYmRShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIGE9aChlKTtuKGEsInNvdXJjZSIpfHwoYS5zb3VyY2U9ZihtLCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSk7cmV0dXJuIGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz15KChmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZDKHRoaXMpLnNvdXJjZXx8Yyh0aGlzKX0pLCJ0b1N0cmluZyIpfSw3NDE6ZT0+e3ZhciB0PU1hdGguY2VpbCxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uIHRydW5jKGUpe3ZhciBhPStlO3JldHVybihhPjA/aTp0KShhKX19LDYwNDM6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1UeXBlRXJyb3IsUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oZSl7dmFyIHQsaTt0aGlzLnByb21pc2U9bmV3IGUoKGZ1bmN0aW9uKGUsYSl7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09aSl0aHJvdyBuZXcgcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWU7aT1hfSkpO3RoaXMucmVzb2x2ZT1hKHQpO3RoaXMucmVqZWN0PWEoaSl9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoZSl9fSwyNjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6YShlKX19LDIzNjA6KGUsdCxpKT0+e3ZhciBhLHI9aSg4NTUxKSxzPWkoNjgwMSksbj1pKDg3MjcpLG89aSg0MjEpLGc9aSgzOTcpLGM9aSg0MDU1KSxsPWkoNjExOSksaD0icHJvdG90eXBlIixDPSJzY3JpcHQiLFE9bCgiSUVfUFJPVE8iKSxFbXB0eUNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSxzY3JpcHRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK0MrIj4iK2UrIjwvIitDKyI+In0sTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWD1mdW5jdGlvbihlKXtlLndyaXRlKHNjcmlwdFRhZygiIikpO2UuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7ZT1udWxsO3JldHVybiB0fSxOdWxsUHJvdG9PYmplY3Q9ZnVuY3Rpb24oKXt0cnl7YT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaChlKXt9TnVsbFByb3RvT2JqZWN0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZhP051bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk6ZnVuY3Rpb24oKXt2YXIgZSx0PWMoImlmcmFtZSIpLGk9ImphdmEiK0MrIjoiO3Quc3R5bGUuZGlzcGxheT0ibm9uZSI7Zy5hcHBlbmRDaGlsZCh0KTt0LnNyYz1TdHJpbmcoaSk7KGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7ZS53cml0ZShzY3JpcHRUYWcoImRvY3VtZW50LkY9T2JqZWN0IikpO2UuY2xvc2UoKTtyZXR1cm4gZS5GfSgpOk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk7Zm9yKHZhciBlPW4ubGVuZ3RoO2UtLTspZGVsZXRlIE51bGxQcm90b09iamVjdFtoXVtuW2VdXTtyZXR1cm4gTnVsbFByb3RvT2JqZWN0KCl9O29bUV09ITA7ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZShlLHQpe3ZhciBpO2lmKG51bGwhPT1lKXtFbXB0eUNvbnN0cnVjdG9yW2hdPXIoZSk7aT1uZXcgRW1wdHlDb25zdHJ1Y3RvcjtFbXB0eUNvbnN0cnVjdG9yW2hdPW51bGw7aVtRXT1lfWVsc2UgaT1OdWxsUHJvdG9PYmplY3QoKTtyZXR1cm4gdm9pZCAwPT09dD9pOnMuZihpLHQpfX0sNjgwMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoODY4Nikscz1pKDQ5MTMpLG49aSg4NTUxKSxvPWkoNTM5NyksZz1pKDEwNzIpO3QuZj1hJiYhcj9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7bihlKTtmb3IodmFyIGksYT1vKHQpLHI9Zyh0KSxjPXIubGVuZ3RoLGw9MDtjPmw7KXMuZihlLGk9cltsKytdLGFbaV0pO3JldHVybiBlfX0sNDkxMzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNTkxNykscz1pKDg2ODYpLG49aSg4NTUxKSxvPWkoNjk2OSksZz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGg9ImVudW1lcmFibGUiLEM9ImNvbmZpZ3VyYWJsZSIsUT0id3JpdGFibGUiO3QuZj1hP3M/ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGkpe24oZSk7dD1vKHQpO24oaSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIGkmJlEgaW4gaSYmIWlbUV0pe3ZhciBhPWwoZSx0KTtpZihhJiZhW1FdKXtlW3RdPWkudmFsdWU7aT17Y29uZmlndXJhYmxlOkMgaW4gaT9pW0NdOmFbQ10sZW51bWVyYWJsZTpoIGluIGk/aVtoXTphW2hdLHdyaXRhYmxlOiExfX19cmV0dXJuIGMoZSx0LGkpfTpjOmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsdCxpKXtuKGUpO3Q9byh0KTtuKGkpO2lmKHIpdHJ5e3JldHVybiBjKGUsdCxpKX1jYXRjaChlKXt9aWYoImdldCJpbiBpfHwic2V0ImluIGkpdGhyb3cgbmV3IGcoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7InZhbHVlImluIGkmJihlW3RdPWkudmFsdWUpO3JldHVybiBlfX0sNzM0NzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTU2NSkscz1pKDg3NzMpLG49aSg2OTgwKSxvPWkoNTM5NyksZz1pKDY5NjkpLGM9aSg5Mjk3KSxsPWkoNTkxNyksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1hP2g6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7ZT1vKGUpO3Q9Zyh0KTtpZihsKXRyeXtyZXR1cm4gaChlLHQpfWNhdGNoKGUpe31pZihjKGUsdCkpcmV0dXJuIG4oIXIocy5mLGUsdCksZVt0XSl9fSw4NDgwOihlLHQsaSk9Pnt2YXIgYT1pKDE4MjgpLHI9aSg4NzI3KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKXtyZXR1cm4gYShlLHIpfX0sMzcxNzooZSx0KT0+e3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwyNzg3OihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg0OTAxKSxzPWkoODk4MSksbj1pKDYxMTkpLG89aSgyMjExKSxnPW4oIklFX1BST1RPIiksYz1PYmplY3QsbD1jLnByb3RvdHlwZTtlLmV4cG9ydHM9bz9jLmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0PXMoZSk7aWYoYSh0LGcpKXJldHVybiB0W2ddO3ZhciBpPXQuY29uc3RydWN0b3I7cmV0dXJuIHIoaSkmJnQgaW5zdGFuY2VvZiBpP2kucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBjP2w6bnVsbH19LDE2MjU6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCk7ZS5leHBvcnRzPWEoe30uaXNQcm90b3R5cGVPZil9LDE4Mjg6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkyOTcpLHM9aSg1Mzk3KSxuPWkoOTYxNykuaW5kZXhPZixvPWkoNDIxKSxnPWEoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksYT1zKGUpLGM9MCxsPVtdO2ZvcihpIGluIGEpIXIobyxpKSYmcihhLGkpJiZnKGwsaSk7Zm9yKDt0Lmxlbmd0aD5jOylyKGEsaT10W2MrK10pJiYofm4obCxpKXx8ZyhsLGkpKTtyZXR1cm4gbH19LDEwNzI6KGUsdCxpKT0+e3ZhciBhPWkoMTgyOCkscj1pKDg3MjcpO2UuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ga2V5cyhlKXtyZXR1cm4gYShlLHIpfX0sODc3MzooZSx0KT0+e3ZhciBpPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixyPWEmJiFpLmNhbGwoezE6Mn0sMSk7dC5mPXI/ZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoZSl7dmFyIHQ9YSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTppfSwyOTY3OihlLHQsaSk9Pnt2YXIgYT1pKDY3MDYpLHI9aSgzNCkscz1pKDc3NTApLG49aSgzNTA2KTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxpPXt9O3RyeXsoZT1hKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShpLFtdKTt0PWkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKGksYSl7cyhpKTtuKGEpO2lmKCFyKGkpKXJldHVybiBpO3Q/ZShpLGEpOmkuX19wcm90b19fPWE7cmV0dXJuIGl9fSgpOnZvaWQgMCl9LDQyNzA6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDQ5MDEpLHM9aSgzNCksbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksbztpZigic3RyaW5nIj09PXQmJnIoaT1lLnRvU3RyaW5nKSYmIXMobz1hKGksZSkpKXJldHVybiBvO2lmKHIoaT1lLnZhbHVlT2YpJiYhcyhvPWEoaSxlKSkpcmV0dXJuIG87aWYoInN0cmluZyIhPT10JiZyKGk9ZS50b1N0cmluZykmJiFzKG89YShpLGUpKSlyZXR1cm4gbzt0aHJvdyBuZXcgbigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw1MDMxOihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg5NTA0KSxzPWkoODQ4MCksbj1pKDM3MTcpLG89aSg4NTUxKSxnPXIoW10uY29uY2F0KTtlLmV4cG9ydHM9YSgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24gb3duS2V5cyhlKXt2YXIgdD1zLmYobyhlKSksaT1uLmY7cmV0dXJuIGk/Zyh0LGkoZSkpOnR9fSwxMTAzOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTplKCl9fWNhdGNoKGUpe3JldHVybntlcnJvcjohMCx2YWx1ZTplfX19fSw3OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPWEodGhpcyksdD0iIjtlLmhhc0luZGljZXMmJih0Kz0iZCIpO2UuZ2xvYmFsJiYodCs9ImciKTtlLmlnbm9yZUNhc2UmJih0Kz0iaSIpO2UubXVsdGlsaW5lJiYodCs9Im0iKTtlLmRvdEFsbCYmKHQrPSJzIik7ZS51bmljb2RlJiYodCs9InUiKTtlLnVuaWNvZGVTZXRzJiYodCs9InYiKTtlLnN0aWNreSYmKHQrPSJ5Iik7cmV0dXJuIHR9fSw3NzUwOihlLHQsaSk9Pnt2YXIgYT1pKDQxMTcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXRocm93IG5ldyByKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sOTI4NjooZSx0LGkpPT57dmFyIGE9aSg0NDAyKSxyPWkoODQ2OSkscz1hLlNldCxuPWEuYWRkO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcztyKGUsKGZ1bmN0aW9uKGUpe24odCxlKX0pKTtyZXR1cm4gdH19LDM0NDA6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLHM9aSg5Mjg2KSxuPWkoNTE3MCksbz1pKDM3ODkpLGc9aSg4NDY5KSxjPWkoNTA3KSxsPXIuaGFzLGg9ci5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIGRpZmZlcmVuY2UoZSl7dmFyIHQ9YSh0aGlzKSxpPW8oZSkscj1zKHQpO24odCk8PWkuc2l6ZT9nKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmgocixlKX0pKTpjKGkuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7bCh0LGUpJiZoKHIsZSl9KSk7cmV0dXJuIHJ9fSw0NDAyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6YShyLmFkZCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sODc1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDUxNzApLG49aSgzNzg5KSxvPWkoODQ2OSksZz1pKDUwNyksYz1yLlNldCxsPXIuYWRkLGg9ci5oYXM7ZS5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbihlKXt2YXIgdD1hKHRoaXMpLGk9bihlKSxyPW5ldyBjO3ModCk+aS5zaXplP2coaS5nZXRJdGVyYXRvcigpLChmdW5jdGlvbihlKXtoKHQsZSkmJmwocixlKX0pKTpvKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmwocixlKX0pKTtyZXR1cm4gcn19LDQ0NDk6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg4NDY5KSxnPWkoNTA3KSxjPWkoOTUzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8PWkuc2l6ZSlyZXR1cm4hMSE9PW8odCwoZnVuY3Rpb24oZSl7aWYoaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKTt2YXIgbD1pLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1nKGwsKGZ1bmN0aW9uKGUpe2lmKHIodCxlKSlyZXR1cm4gYyhsLCJub3JtYWwiLCExKX0pKX19LDM4Mzg6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDUxNzApLHM9aSg4NDY5KSxuPWkoMzc4OSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzU3Vic2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7cmV0dXJuIShyKHQpPmkuc2l6ZSkmJiExIT09cyh0LChmdW5jdGlvbihlKXtpZighaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKX19LDg1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg1MDcpLGc9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdXBlcnNldE9mKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8aS5zaXplKXJldHVybiExO3ZhciBjPWkuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PW8oYywoZnVuY3Rpb24oZSl7aWYoIXIodCxlKSlyZXR1cm4gZyhjLCJub3JtYWwiLCExKX0pKX19LDg0Njk6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDUwNykscz1pKDQ0MDIpLG49cy5TZXQsbz1zLnByb3RvLGc9YShvLmZvckVhY2gpLGM9YShvLmtleXMpLGw9YyhuZXcgbikubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpP3Ioe2l0ZXJhdG9yOmMoZSksbmV4dDpsfSx0KTpnKGUsdCl9fSw0OTE2OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLGNyZWF0ZVNldExpa2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoIlNldCIpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoMCkpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoLTEpKTtyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMH19Y2F0Y2goZSl7cmV0dXJuITF9fX0sNTE3MDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDQwMik7ZS5leHBvcnRzPWEoci5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfX0sMzY1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDkyODYpLG49aSgzNzg5KSxvPWkoNTA3KSxnPXIuYWRkLGM9ci5oYXMsbD1yLnJlbW92ZTtlLmV4cG9ydHM9ZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShlKXt2YXIgdD1hKHRoaXMpLGk9bihlKS5nZXRJdGVyYXRvcigpLHI9cyh0KTtvKGksKGZ1bmN0aW9uKGUpe2ModCxlKT9sKHIsZSk6ZyhyLGUpfSkpO3JldHVybiByfX0sNDIwNDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuYWRkLHM9aSg5Mjg2KSxuPWkoMzc4OSksbz1pKDUwNyk7ZS5leHBvcnRzPWZ1bmN0aW9uIHVuaW9uKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLmdldEl0ZXJhdG9yKCksZz1zKHQpO28oaSwoZnVuY3Rpb24oZSl7cihnLGUpfSkpO3JldHVybiBnfX0sNjExOTooZSx0LGkpPT57dmFyIGE9aSg1NzQ1KSxyPWkoMzM5Mikscz1hKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzW2VdfHwoc1tlXT1yKGUpKX19LDc2Mjk6KGUsdCxpKT0+e3ZhciBhPWkoNjM5NSkscj1pKDQ1NzYpLHM9aSg5NDMzKSxuPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZS5leHBvcnRzPXJbbl18fHMobix7fSk7KG8udmVyc2lvbnN8fChvLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjoiMy4zOS4wIixtb2RlOmE/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM5LjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sNTc0NTooZSx0LGkpPT57dmFyIGE9aSg3NjI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYVtlXXx8KGFbZV09dHx8e30pfX0sMTU0ODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoOTAzOSkscz1pKDk1MTkpLG49aSg0MjE1KSxvPWEuc3RydWN0dXJlZENsb25lO2UuZXhwb3J0cz0hIW8mJiFyKChmdW5jdGlvbigpe2lmKCJERU5PIj09PW4mJnM+OTJ8fCJOT0RFIj09PW4mJnM+OTR8fCJCUk9XU0VSIj09PW4mJnM+OTcpcmV0dXJuITE7dmFyIGU9bmV3IEFycmF5QnVmZmVyKDgpLHQ9byhlLHt0cmFuc2ZlcjpbZV19KTtyZXR1cm4gMCE9PWUuYnl0ZUxlbmd0aHx8OCE9PXQuYnl0ZUxlbmd0aH0pKX0sNDQ5NTooZSx0LGkpPT57dmFyIGE9aSg5NTE5KSxyPWkoOTAzOSkscz1pKDQ1NzYpLlN0cmluZztlLmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhcigoZnVuY3Rpb24oKXt2YXIgZT1TeW1ib2woInN5bWJvbCBkZXRlY3Rpb24iKTtyZXR1cm4hcyhlKXx8IShPYmplY3QoZSlpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmYSYmYTw0MX0pKX0sNTYxMDooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPU1hdGgubWF4LHM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9YShlKTtyZXR1cm4gaTwwP3IoaSt0LDApOnMoaSx0KX19LDU4NTQ6KGUsdCxpKT0+e3ZhciBhPWkoMjc3Nykscj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSwibnVtYmVyIik7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyByKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTtyZXR1cm4gQmlnSW50KHQpfX0sNzY5NjooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPWkoODAxNCkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PWEoZSksaT1yKHQpO2lmKHQhPT1pKXRocm93IG5ldyBzKCJXcm9uZyBsZW5ndGggb3IgaW5kZXgiKTtyZXR1cm4gaX19LDUzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzA1NSkscj1pKDc3NTApO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShyKGUpKX19LDEyOTE6KGUsdCxpKT0+e3ZhciBhPWkoNzQxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6YSh0KX19LDgwMTQ6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4gdD4wP3IodCw5MDA3MTk5MjU0NzQwOTkxKTowfX0sODk4MTooZSx0LGkpPT57dmFyIGE9aSg3NzUwKSxyPU9iamVjdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoYShlKSl9fSwyNzc3OihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgzNCkscz1pKDc1Nyksbj1pKDU5NjYpLG89aSg0MjcwKSxnPWkoODIyNyksYz1UeXBlRXJyb3IsbD1nKCJ0b1ByaW1pdGl2ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFyKGUpfHxzKGUpKXJldHVybiBlO3ZhciBpLGc9bihlLGwpO2lmKGcpe3ZvaWQgMD09PXQmJih0PSJkZWZhdWx0Iik7aT1hKGcsZSx0KTtpZighcihpKXx8cyhpKSlyZXR1cm4gaTt0aHJvdyBuZXcgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9dm9pZCAwPT09dCYmKHQ9Im51bWJlciIpO3JldHVybiBvKGUsdCl9fSw2OTY5OihlLHQsaSk9Pnt2YXIgYT1pKDI3NzcpLHI9aSg3NTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUsInN0cmluZyIpO3JldHVybiByKHQpP3Q6dCsiIn19LDIxNDA6KGUsdCxpKT0+e3ZhciBhPXt9O2FbaSg4MjI3KSgidG9TdHJpbmdUYWciKV09InoiO2UuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcoYSl9LDY1NTooZSx0LGkpPT57dmFyIGE9aSg2OTU1KSxyPVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIlN5bWJvbCI9PT1hKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIHIoZSl9fSw2ODIzOmU9Pnt2YXIgdD1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdChlKX1jYXRjaChlKXtyZXR1cm4iT2JqZWN0In19fSwzMzkyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9MCxzPU1hdGgucmFuZG9tKCksbj1hKDEuLnRvU3RyaW5nKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1lPyIiOmUpKyIpXyIrbigrK3IrcywzNil9fSw3MDQwOihlLHQsaSk9Pnt2YXIgYT1pKDQ0OTUpO2UuZXhwb3J0cz1hJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSw4Njg2OihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg5MDM5KTtlLmV4cG9ydHM9YSYmcigoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpfSwyODEyOmU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsaSl7aWYoZTxpKXRocm93IG5ldyB0KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiBlfX0sODYyMjooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSkscz1hLldlYWtNYXA7ZS5leHBvcnRzPXIocykmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcocykpfSw4MjI3OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg1NzQ1KSxzPWkoOTI5Nyksbj1pKDMzOTIpLG89aSg0NDk1KSxnPWkoNzA0MCksYz1hLlN5bWJvbCxsPXIoIndrcyIpLGg9Zz9jLmZvcnx8YzpjJiZjLndpdGhvdXRTZXR0ZXJ8fG47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3MobCxlKXx8KGxbZV09byYmcyhjLGUpP2NbZV06aCgiU3ltYm9sLiIrZSkpO3JldHVybiBsW2VdfX0sNjU3MzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoMjEwNikscz1pKDMyMzgpLG49QXJyYXlCdWZmZXIucHJvdG90eXBlO2EmJiEoImRldGFjaGVkImluIG4pJiZyKG4sImRldGFjaGVkIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbiBkZXRhY2hlZCgpe3JldHVybiBzKHRoaXMpfX0pfSw3OTM2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg1NjM2KTtyJiZhKHt0YXJnZXQ6IkFycmF5QnVmZmVyIixwcm90bzohMH0se3RyYW5zZmVyVG9GaXhlZExlbmd0aDpmdW5jdGlvbiB0cmFuc2ZlclRvRml4ZWRMZW5ndGgoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMSl9fSl9LDgxMDA6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDU2MzYpO3ImJmEoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXI6ZnVuY3Rpb24gdHJhbnNmZXIoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMCl9fSl9LDQxMTQ6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg5ODEpLHM9aSg2MTk4KSxuPWkoNDUyNyksbz1pKDY4MzcpO2Eoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGFyaXR5OjEsZm9yY2VkOmkoOTAzOSkoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5NjcyOTchPT1bXS5wdXNoLmNhbGwoe2xlbmd0aDo0Mjk0OTY3Mjk2fSwxKX0pKXx8IWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5wdXNoKCl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpfSx7cHVzaDpmdW5jdGlvbiBwdXNoKGUpe3ZhciB0PXIodGhpcyksaT1zKHQpLGE9YXJndW1lbnRzLmxlbmd0aDtvKGkrYSk7Zm9yKHZhciBnPTA7ZzxhO2crKyl7dFtpXT1hcmd1bWVudHNbZ107aSsrfW4odCxpKTtyZXR1cm4gaX19KX0sODExMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDY3OSksbj1pKDg1NTEpLG89aSg0OTAxKSxnPWkoMjc4NyksYz1pKDIxMDYpLGw9aSg0NjU5KSxoPWkoOTAzOSksQz1pKDkyOTcpLFE9aSg4MjI3KSxFPWkoNzY1NykuSXRlcmF0b3JQcm90b3R5cGUsdT1pKDM3MjQpLGQ9aSg2Mzk1KSxmPSJjb25zdHJ1Y3RvciIscD0iSXRlcmF0b3IiLG09USgidG9TdHJpbmdUYWciKSx5PVR5cGVFcnJvcix3PXJbcF0sYj1kfHwhbyh3KXx8dy5wcm90b3R5cGUhPT1FfHwhaCgoZnVuY3Rpb24oKXt3KHt9KX0pKSxEPWZ1bmN0aW9uIEl0ZXJhdG9yKCl7cyh0aGlzLEUpO2lmKGcodGhpcyk9PT1FKXRocm93IG5ldyB5KCJBYnN0cmFjdCBjbGFzcyBJdGVyYXRvciBub3QgZGlyZWN0bHkgY29uc3RydWN0YWJsZSIpfSxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yPWZ1bmN0aW9uKGUsdCl7dT9jKEUsZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24odCl7bih0aGlzKTtpZih0aGlzPT09RSl0aHJvdyBuZXcgeSgiWW91IGNhbid0IHJlZGVmaW5lIHRoaXMgcHJvcGVydHkiKTtDKHRoaXMsZSk/dGhpc1tlXT10OmwodGhpcyxlLHQpfX0pOkVbZV09dH07QyhFLG0pfHxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yKG0scCk7IWImJkMoRSxmKSYmRVtmXSE9PU9iamVjdHx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihmLEQpO0QucHJvdG90eXBlPUU7YSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpifSx7SXRlcmF0b3I6RH0pfSwxMTQ4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZXZlcnk6ZnVuY3Rpb24gZXZlcnkoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiFyKHQsKGZ1bmN0aW9uKHQsYSl7aWYoIWUodCxpKyspKXJldHVybiBhKCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KX0sMjQ4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoOTU2NSkscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1pKDk0NjIpLGM9aSg2MzE5KSxsPWkoNjM5NSksaD1nKChmdW5jdGlvbigpe2Zvcih2YXIgZSx0LGk9dGhpcy5pdGVyYXRvcixhPXRoaXMucHJlZGljYXRlLHM9dGhpcy5uZXh0Ozspe2U9bihyKHMsaSkpO2lmKHRoaXMuZG9uZT0hIWUuZG9uZSlyZXR1cm47dD1lLnZhbHVlO2lmKGMoaSxhLFt0LHRoaXMuY291bnRlcisrXSwhMCkpcmV0dXJuIHR9fSkpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmx9LHtmaWx0ZXI6ZnVuY3Rpb24gZmlsdGVyKGUpe24odGhpcyk7cyhlKTtyZXR1cm4gbmV3IGgobyh0aGlzKSx7cHJlZGljYXRlOmV9KX19KX0sMTE2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZmluZDpmdW5jdGlvbiBmaW5kKGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyZXR1cm4gcih0LChmdW5jdGlvbih0LGEpe2lmKGUodCxpKyspKXJldHVybiBhKHQpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnJlc3VsdH19KX0sNzU4ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se2ZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaChlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPTA7cih0LChmdW5jdGlvbih0KXtlKHQsaSsrKX0pLHtJU19SRUNPUkQ6ITB9KX19KX0sMTcwMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNzEzKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDppKDYzOTUpfSx7bWFwOnJ9KX0sODIzNzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1UeXBlRXJyb3I7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3JlZHVjZTpmdW5jdGlvbiByZWR1Y2UoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT1hcmd1bWVudHMubGVuZ3RoPDIsYT1pP3ZvaWQgMDphcmd1bWVudHNbMV0sYz0wO3IodCwoZnVuY3Rpb24odCl7aWYoaSl7aT0hMTthPXR9ZWxzZSBhPWUoYSx0LGMpO2MrK30pLHtJU19SRUNPUkQ6ITB9KTtpZihpKXRocm93IG5ldyBnKCJSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlIik7cmV0dXJuIGF9fSl9LDM1Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDI2NTIpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHtzb21lOmZ1bmN0aW9uIHNvbWUoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiByKHQsKGZ1bmN0aW9uKHQsYSl7aWYoZSh0LGkrKykpcmV0dXJuIGEoKX0pLHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5zdG9wcGVkfX0pfSwxODA2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTUxKSxzPWkoMjY1Miksbj1pKDE3NjcpLG89W10ucHVzaDthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7dG9BcnJheTpmdW5jdGlvbiB0b0FycmF5KCl7dmFyIGU9W107cyhuKHIodGhpcykpLG8se3RoYXQ6ZSxJU19SRUNPUkQ6ITB9KTtyZXR1cm4gZX19KX0sMTY4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDg3NDUpLG49aSg3NjgwKSxvPWkoNjA0MyksZz1pKDkzMDYpLGM9aSgxMTAzKSxsPXIuUHJvbWlzZSxoPSExO2Eoe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6IWx8fCFsLnRyeXx8YygoZnVuY3Rpb24oKXtsLnRyeSgoZnVuY3Rpb24oZSl7aD04PT09ZX0pLDgpfSkpLmVycm9yfHwhaH0se3RyeTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjE/bihhcmd1bWVudHMsMSk6W10saT1vLmYodGhpcyksYT1jKChmdW5jdGlvbigpe3JldHVybiBzKGcoZSksdm9pZCAwLHQpfSkpOyhhLmVycm9yP2kucmVqZWN0OmkucmVzb2x2ZSkoYS52YWx1ZSk7cmV0dXJuIGkucHJvbWlzZX19KX0sNDYyODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNjA0Myk7YSh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwfSx7d2l0aFJlc29sdmVyczpmdW5jdGlvbiB3aXRoUmVzb2x2ZXJzKCl7dmFyIGU9ci5mKHRoaXMpO3JldHVybntwcm9taXNlOmUucHJvbWlzZSxyZXNvbHZlOmUucmVzb2x2ZSxyZWplY3Q6ZS5yZWplY3R9fX0pfSw5NDc5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSgzNzI0KSxzPWkoMjEwNiksbj1pKDc5NzkpLG89aSg5MDM5KSxnPWEuUmVnRXhwLGM9Zy5wcm90b3R5cGU7ciYmbygoZnVuY3Rpb24oKXt2YXIgZT0hMDt0cnl7ZygiLiIsImQiKX1jYXRjaCh0KXtlPSExfXZhciB0PXt9LGk9IiIsYT1lPyJkZ2ltc3kiOiJnaW1zeSIsYWRkR2V0dGVyPWZ1bmN0aW9uKGUsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OmZ1bmN0aW9uKCl7aSs9YTtyZXR1cm4hMH19KX0scj17ZG90QWxsOiJzIixnbG9iYWw6ImciLGlnbm9yZUNhc2U6ImkiLG11bHRpbGluZToibSIsc3RpY2t5OiJ5In07ZSYmKHIuaGFzSW5kaWNlcz0iZCIpO2Zvcih2YXIgcyBpbiByKWFkZEdldHRlcihzLHJbc10pO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsImZsYWdzIikuZ2V0LmNhbGwodCkhPT1hfHxpIT09YX0pKSYmcyhjLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6bn0pfSw3NjQyOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzNDQwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImRpZmZlcmVuY2UiKX0se2RpZmZlcmVuY2U6cn0pfSw4MDA0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg5MDM5KSxzPWkoODc1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpbnRlcnNlY3Rpb24iKXx8cigoZnVuY3Rpb24oKXtyZXR1cm4iMywyIiE9PVN0cmluZyhBcnJheS5mcm9tKG5ldyBTZXQoWzEsMiwzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsMl0pKSkpfSkpfSx7aW50ZXJzZWN0aW9uOnN9KX0sMzg1MzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDQ0OSk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpc0Rpc2pvaW50RnJvbSIpfSx7aXNEaXNqb2ludEZyb206cn0pfSw1ODc2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzODM4KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3Vic2V0T2YiKX0se2lzU3Vic2V0T2Y6cn0pfSwyNDc1OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTI3KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3VwZXJzZXRPZiIpfSx7aXNTdXBlcnNldE9mOnJ9KX0sNTAyNDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMzY1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJzeW1tZXRyaWNEaWZmZXJlbmNlIil9LHtzeW1tZXRyaWNEaWZmZXJlbmNlOnJ9KX0sMTY5ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDIwNCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJ1bmlvbiIpfSx7dW5pb246cn0pfSw3NDY3OihlLHQsaSk9Pnt2YXIgYT1pKDc2MjgpLHI9aSg0NjQ0KSxzPXIuYVR5cGVkQXJyYXksbj1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Qsbz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtuKCJ0b1JldmVyc2VkIiwoZnVuY3Rpb24gdG9SZXZlcnNlZCgpe3JldHVybiBhKHModGhpcyksbyh0aGlzKSl9KSl9LDQ3MzI6KGUsdCxpKT0+e3ZhciBhPWkoNDY0NCkscj1pKDk1MDQpLHM9aSg5MzA2KSxuPWkoNTM3MCksbz1hLmFUeXBlZEFycmF5LGc9YS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsYz1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsbD1yKGEuVHlwZWRBcnJheVByb3RvdHlwZS5zb3J0KTtjKCJ0b1NvcnRlZCIsKGZ1bmN0aW9uIHRvU29ydGVkKGUpe3ZvaWQgMCE9PWUmJnMoZSk7dmFyIHQ9byh0aGlzKSxpPW4oZyh0KSx0KTtyZXR1cm4gbChpLGUpfSkpfSw5NTc3OihlLHQsaSk9Pnt2YXIgYT1pKDk5MjgpLHI9aSg0NjQ0KSxzPWkoMTEwOCksbj1pKDEyOTEpLG89aSg1ODU0KSxnPXIuYVR5cGVkQXJyYXksYz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixsPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxoPSEhZnVuY3Rpb24oKXt0cnl7bmV3IEludDhBcnJheSgxKS53aXRoKDIse3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyA4fX0pfWNhdGNoKGUpe3JldHVybiA4PT09ZX19KCk7bCgid2l0aCIse3dpdGg6ZnVuY3Rpb24oZSx0KXt2YXIgaT1nKHRoaXMpLHI9bihlKSxsPXMoaSk/byh0KTordDtyZXR1cm4gYShpLGMoaSkscixsKX19LndpdGgsIWgpfSw4OTkyOihlLHQsaSk9PntpKDgxMTEpfSwzMjE1OihlLHQsaSk9PntpKDExNDgpfSw0NTIwOihlLHQsaSk9PntpKDI0ODkpfSwyNTc3OihlLHQsaSk9PntpKDExNil9LDM5NDk6KGUsdCxpKT0+e2koNzU4OCl9LDE0NTQ6KGUsdCxpKT0+e2koMTcwMSl9LDg4NzI6KGUsdCxpKT0+e2koODIzNyl9LDc1NTA6KGUsdCxpKT0+e2koMzU3OSl9LDE3OTU6KGUsdCxpKT0+e2koMTgwNil9LDUyNDc6KGUsdCxpKT0+e2koMTY4OSl9LDQ5Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ1NzYpLHM9aSg3NzUxKSxuPWkoNjk4MCksbz1pKDQ5MTMpLmYsZz1pKDkyOTcpLGM9aSg2NzkpLGw9aSgzMTY3KSxoPWkoMjYwMyksQz1pKDUwMDIpLFE9aSg4NTc0KSxFPWkoMzcyNCksdT1pKDYzOTUpLGQ9IkRPTUV4Y2VwdGlvbiIsZj1zKCJFcnJvciIpLHA9cyhkKSxtPWZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpe2ModGhpcyx5KTt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9aChlPDE/dm9pZCAwOmFyZ3VtZW50c1swXSksaT1oKGU8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLGE9bmV3IHAodCxpKSxyPW5ldyBmKHQpO3IubmFtZT1kO28oYSwic3RhY2siLG4oMSxRKHIuc3RhY2ssMSkpKTtsKGEsdGhpcyxtKTtyZXR1cm4gYX0seT1tLnByb3RvdHlwZT1wLnByb3RvdHlwZSx3PSJzdGFjayJpbiBuZXcgZihkKSxiPSJzdGFjayJpbiBuZXcgcCgxLDIpLEQ9cCYmRSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGQpLFM9ISghRHx8RC53cml0YWJsZSYmRC5jb25maWd1cmFibGUpLGs9dyYmIVMmJiFiO2Eoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6dXx8a30se0RPTUV4Y2VwdGlvbjprP206cH0pO3ZhciBSPXMoZCksTj1SLnByb3RvdHlwZTtpZihOLmNvbnN0cnVjdG9yIT09Uil7dXx8byhOLCJjb25zdHJ1Y3RvciIsbigxLFIpKTtmb3IodmFyIEcgaW4gQylpZihnKEMsRykpe3ZhciBNPUNbR10sVT1NLnM7ZyhSLFUpfHxvKFIsVSxuKDYsTS5jKSl9fX0sMzYxMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDIxMDYpLG49aSgzNzI0KSxvPVR5cGVFcnJvcixnPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjPXIuc2VsZiE9PXI7dHJ5e2lmKG4pe3ZhciBsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iociwic2VsZiIpOyFjJiZsJiZsLmdldCYmbC5lbnVtZXJhYmxlfHxzKHIsInNlbGYiLHtnZXQ6ZnVuY3Rpb24gc2VsZigpe3JldHVybiByfSxzZXQ6ZnVuY3Rpb24gc2VsZihlKXtpZih0aGlzIT09cil0aHJvdyBuZXcgbygiSWxsZWdhbCBpbnZvY2F0aW9uIik7ZyhyLCJzZWxmIix7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfWVsc2UgYSh7Z2xvYmFsOiEwLHNpbXBsZTohMCxmb3JjZWQ6Y30se3NlbGY6cn0pfWNhdGNoKGUpe319LDQ2MDM6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCkscj1pKDk1MDQpLHM9aSg2NTUpLG49aSgyODEyKSxvPVVSTFNlYXJjaFBhcmFtcyxnPW8ucHJvdG90eXBlLGM9cihnLmFwcGVuZCksbD1yKGcuZGVsZXRlKSxoPXIoZy5mb3JFYWNoKSxDPXIoW10ucHVzaCksUT1uZXcgbygiYT0xJmE9MiZiPTMiKTtRLmRlbGV0ZSgiYSIsMSk7US5kZWxldGUoImIiLHZvaWQgMCk7USsiIiE9ImE9MiImJmEoZywiZGVsZXRlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWkpcmV0dXJuIGwodGhpcyxlKTt2YXIgYT1bXTtoKHRoaXMsKGZ1bmN0aW9uKGUsdCl7QyhhLHtrZXk6dCx2YWx1ZTplfSl9KSk7bih0LDEpO2Zvcih2YXIgcixvPXMoZSksZz1zKGkpLFE9MCxFPTAsdT0hMSxkPWEubGVuZ3RoO1E8ZDspe3I9YVtRKytdO2lmKHV8fHIua2V5PT09byl7dT0hMDtsKHRoaXMsci5rZXkpfWVsc2UgRSsrfWZvcig7RTxkOykocj1hW0UrK10pLmtleT09PW8mJnIudmFsdWU9PT1nfHxjKHRoaXMsci5rZXksci52YWx1ZSl9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sNzU2NjooZSx0LGkpPT57dmFyIGE9aSg2ODQwKSxyPWkoOTUwNCkscz1pKDY1NSksbj1pKDI4MTIpLG89VVJMU2VhcmNoUGFyYW1zLGc9by5wcm90b3R5cGUsYz1yKGcuZ2V0QWxsKSxsPXIoZy5oYXMpLGg9bmV3IG8oImE9MSIpOyFoLmhhcygiYSIsMikmJmguaGFzKCJhIix2b2lkIDApfHxhKGcsImhhcyIsKGZ1bmN0aW9uIGhhcyhlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGk9dDwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYodCYmdm9pZCAwPT09aSlyZXR1cm4gbCh0aGlzLGUpO3ZhciBhPWModGhpcyxlKTtuKHQsMSk7Zm9yKHZhciByPXMoaSksbz0wO288YS5sZW5ndGg7KWlmKGFbbysrXT09PXIpcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sODcyMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTUwNCkscz1pKDIxMDYpLG49VVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSxvPXIobi5mb3JFYWNoKTthJiYhKCJzaXplImluIG4pJiZzKG4sInNpemUiLHtnZXQ6ZnVuY3Rpb24gc2l6ZSgpe3ZhciBlPTA7byh0aGlzLChmdW5jdGlvbigpe2UrK30pKTtyZXR1cm4gZX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX19LHQ9e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhpKXt2YXIgYT10W2ldO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEuZXhwb3J0czt2YXIgcj10W2ldPXtleHBvcnRzOnt9fTtlW2ldLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pO3JldHVybiByLmV4cG9ydHN9X193ZWJwYWNrX3JlcXVpcmVfXy5kPShlLHQpPT57Zm9yKHZhciBpIGluIHQpX193ZWJwYWNrX3JlcXVpcmVfXy5vKHQsaSkmJiFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSxpKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSx7ZW51bWVyYWJsZTohMCxnZXQ6dFtpXX0pfTtfX3dlYnBhY2tfcmVxdWlyZV9fLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpO3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gZ2xvYmFsVGhpcy5wZGZqc1dvcmtlciA9IHt9O19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLHtXb3JrZXJNZXNzYWdlSGFuZGxlcjooKT0+V29ya2VyTWVzc2FnZUhhbmRsZXJ9KTtfX3dlYnBhY2tfcmVxdWlyZV9fKDQxMTQpLF9fd2VicGFja19yZXF1aXJlX18oNjU3MyksX193ZWJwYWNrX3JlcXVpcmVfXyg4MTAwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc5MzYpLF9fd2VicGFja19yZXF1aXJlX18oNDYyOCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NjQyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDgwMDQpLF9fd2VicGFja19yZXF1aXJlX18oMzg1MyksX193ZWJwYWNrX3JlcXVpcmVfXyg1ODc2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NzUpLF9fd2VicGFja19yZXF1aXJlX18oNTAyNCksX193ZWJwYWNrX3JlcXVpcmVfXygxNjk4KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc0NjcpLF9fd2VicGFja19yZXF1aXJlX18oNDczMiksX193ZWJwYWNrX3JlcXVpcmVfXyg5NTc3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg5OTIpLF9fd2VicGFja19yZXF1aXJlX18oMTQ1NCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTUwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNTI0NyksX193ZWJwYWNrX3JlcXVpcmVfXyg0OTc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2MDMpLF9fd2VicGFja19yZXF1aXJlX18oNzU2NiksX193ZWJwYWNrX3JlcXVpcmVfXyg4NzIxKTtjb25zdCBpPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSxhPVsxLDAsMCwxLDAsMF0scj1bLjAwMSwwLDAsLjAwMSwwLDBdLHM9MS4zNSxuPS4zNSxvPS4yNTkyNTkyNTkyNTkyNTkyNCxnPTEsYz0yLGw9NCxoPTgsQz0xNixRPTY0LEU9MTI4LHU9MjU2LGQ9InBkZmpzX2ludGVybmFsX2VkaXRvcl8iLGY9MyxwPTksbT0xMyx5PTE1LHc9e1BSSU5UOjQsTU9ESUZZX0NPTlRFTlRTOjgsQ09QWToxNixNT0RJRllfQU5OT1RBVElPTlM6MzIsRklMTF9JTlRFUkFDVElWRV9GT1JNUzoyNTYsQ09QWV9GT1JfQUNDRVNTSUJJTElUWTo1MTIsQVNTRU1CTEU6MTAyNCxQUklOVF9ISUdIX1FVQUxJVFk6MjA0OH0sYj0wLEQ9NCxTPTEsaz0yLFI9MyxOPTEsRz0yLE09MyxVPTQseD01LEw9NixIPTcsSj04LHY9OSxZPTEwLEs9MTEsVD0xMixxPTEzLE89MTQsVz0xNSxqPTE2LFg9MTcsVj0yMCxaPSJHcm91cCIsXz0iUiIsej0xLCQ9MixBQT00LGVBPTE2LHRBPTMyLGlBPTEyOCxhQT01MTIsckE9MSxzQT0yLG5BPTQwOTYsb0E9ODE5MixnQT0zMjc2OCxJQT02NTUzNixjQT0xMzEwNzIsbEE9MTA0ODU3NixoQT0yMDk3MTUyLENBPTgzODg2MDgsQkE9MTY3NzcyMTYsUUE9MSxFQT0yLHVBPTMsZEE9NCxmQT01LHBBPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifSxtQT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In0seUE9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifSx3QT0xLGJBPTUsREE9MSxGQT0yLFNBPTMsa0E9NCxSQT01LE5BPTYsR0E9NyxNQT04LFVBPTkseEE9MTAsTEE9MTEsSEE9MTIsSkE9MTMsdkE9MTQsWUE9MTUsS0E9MTYsVEE9MTcscUE9MTgsT0E9MTksUEE9MjAsV0E9MjEsakE9MjIsWEE9MjMsVkE9MjQsWkE9MjUsX0E9MjYsekE9MjcsJEE9MjgsQWU9MjksZWU9MzAsdGU9MzEsaWU9MzIsYWU9MzMscmU9MzQsc2U9MzUsbmU9MzYsb2U9MzcsZ2U9MzgsSWU9MzksY2U9NDAsbGU9NDEsaGU9NDIsQ2U9NDMsQmU9NDQsUWU9NDUsRWU9NDYsdWU9NDcsZGU9NDgsZmU9NDkscGU9NTAsbWU9NTEseWU9NTIsd2U9NTMsYmU9NTQsRGU9NTUsRmU9NTYsU2U9NTcsa2U9NTgsUmU9NTksTmU9NjAsR2U9NjEsTWU9NjIsVWU9NjMseGU9NjQsTGU9NjUsSGU9NjYsSmU9NjcsdmU9NjgsWWU9NjksS2U9NzAsVGU9NzEscWU9NzIsT2U9NzMsUGU9NzQsV2U9NzUsamU9NzYsWGU9NzcsVmU9ODAsWmU9ODEsX2U9ODMsemU9ODQsJGU9ODUsQXQ9ODYsZXQ9ODcsdHQ9ODgsaXQ9ODksYXQ9OTAscnQ9OTEsc3Q9OTIsbnQ9OTMsb3Q9MSxndD0yO2xldCBJdD13QTtmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBJdH1mdW5jdGlvbiBpbmZvKGUpe0l0Pj1iQSYmY29uc29sZS5sb2coYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe0l0Pj13QSYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxpPW51bGwpe2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihpJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGkuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGkudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IGE9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShhKSlyZXR1cm4gYX1jYXRjaHt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxpLGE9ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohYSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gaX1jb25zdCBjdD1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLm1lc3NhZ2U9ZTt0aGlzLm5hbWU9dH1CYXNlRXhjZXB0aW9uLnByb3RvdHlwZT1uZXcgRXJyb3I7QmFzZUV4Y2VwdGlvbi5jb25zdHJ1Y3Rvcj1CYXNlRXhjZXB0aW9uO3JldHVybiBCYXNlRXhjZXB0aW9ufSgpO2NsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX1jbGFzcyBJbnZhbGlkUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiTWlzc2luZ1BERkV4Y2VwdGlvbiIpfX1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIpO3RoaXMuc3RhdHVzPXR9fWNsYXNzIEZvcm1hdEVycm9yIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRm9ybWF0RXJyb3IiKX19Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT04MTkyO2lmKHQ8aSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IGE9W107Zm9yKGxldCByPTA7cjx0O3IrPWkpe2NvbnN0IHM9TWF0aC5taW4ocitpLHQpLG49ZS5zdWJhcnJheShyLHMpO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoZSl7InN0cmluZyIhPXR5cGVvZiBlJiZ1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7KythKWlbYV09MjU1JmUuY2hhckNvZGVBdChhKTtyZXR1cm4gaX1mdW5jdGlvbiBzdHJpbmczMihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfXN0YXRpYyBnZXQgaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlRGVjb2Rlcil9c3RhdGljIGdldCBwbGF0Zm9ybSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcj8ucGxhdGZvcm0/c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJXaW4iKSxpc0ZpcmVmb3g6InN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3I/LnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiRmlyZWZveCIpfSk6c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6ITEsaXNXaW5kb3dzOiExLGlzRmlyZWZveDohMX0pfXN0YXRpYyBnZXQgaXNDU1NSb3VuZFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNDU1NSb3VuZFN1cHBvcnRlZCIsZ2xvYmFsVGhpcy5DU1M/LnN1cHBvcnRzPy4oIndpZHRoOiByb3VuZCgxLjVweCwgMXB4KSIpKX19Y29uc3QgbHQ9QXJyYXkuZnJvbShBcnJheSgyNTYpLmtleXMoKSwoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxpKXtyZXR1cm5gIyR7bHRbZV19JHtsdFt0XX0ke2x0W2ldfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGk7aWYoZVswXSl7aWYoZVswXTwwKXtpPXRbMF07dFswXT10WzJdO3RbMl09aX10WzBdKj1lWzBdO3RbMl0qPWVbMF07aWYoZVszXTwwKXtpPXRbMV07dFsxXT10WzNdO3RbM109aX10WzFdKj1lWzNdO3RbM10qPWVbM119ZWxzZXtpPXRbMF07dFswXT10WzFdO3RbMV09aTtpPXRbMl07dFsyXT10WzNdO3RbM109aTtpZihlWzFdPDApe2k9dFsxXTt0WzFdPXRbM107dFszXT1pfXRbMV0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2k9dFswXTt0WzBdPXRbMl07dFsyXT1pfXRbMF0qPWVbMl07dFsyXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNV07dFsyXSs9ZVs0XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGk9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvaSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvaV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgaT10aGlzLmFwcGx5VHJhbnNmb3JtKGUsdCksYT10aGlzLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxyPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCkscz10aGlzLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1pbihpWzFdLGFbMV0sclsxXSxzWzFdKSxNYXRoLm1heChpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1heChpWzFdLGFbMV0sclsxXSxzWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGk9ZVswXSp0WzBdK2VbMV0qdFsyXSxhPWVbMF0qdFsxXStlWzFdKnRbM10scj1lWzJdKnRbMF0rZVszXSp0WzJdLHM9ZVsyXSp0WzFdK2VbM10qdFszXSxuPShpK3MpLzIsbz1NYXRoLnNxcnQoKGkrcykqKjItNCooaSpzLXIqYSkpLzIsZz1uK298fDEsYz1uLW98fDE7cmV0dXJuW01hdGguc3FydChnKSxNYXRoLnNxcnQoYyldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBpPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSksYT1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGk+YSlyZXR1cm4gbnVsbDtjb25zdCByPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSkscz1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiByPnM/bnVsbDpbaSxyLGEsc119c3RhdGljI0EoZSx0LGksYSxyLHMsbixvLGcsYyl7aWYoZzw9MHx8Zz49MSlyZXR1cm47Y29uc3QgbD0xLWcsaD1nKmcsQz1oKmcsUT1sKihsKihsKmUrMypnKnQpKzMqaCppKStDKmEsRT1sKihsKihsKnIrMypnKnMpKzMqaCpuKStDKm87Y1swXT1NYXRoLm1pbihjWzBdLFEpO2NbMV09TWF0aC5taW4oY1sxXSxFKTtjWzJdPU1hdGgubWF4KGNbMl0sUSk7Y1szXT1NYXRoLm1heChjWzNdLEUpfXN0YXRpYyNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihNYXRoLmFicyhnKTwxZS0xMil7TWF0aC5hYnMoYyk+PTFlLTEyJiZ0aGlzLiNBKGUsdCxpLGEscixzLG4sbywtbC9jLGgpO3JldHVybn1jb25zdCBDPWMqKjItNCpsKmc7aWYoQzwwKXJldHVybjtjb25zdCBRPU1hdGguc3FydChDKSxFPTIqZzt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMrUSkvRSxoKTt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMtUSkvRSxoKX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LGksYSxyLHMsbixvLGcpe2lmKGcpe2dbMF09TWF0aC5taW4oZ1swXSxlLG4pO2dbMV09TWF0aC5taW4oZ1sxXSx0LG8pO2dbMl09TWF0aC5tYXgoZ1syXSxlLG4pO2dbM109TWF0aC5tYXgoZ1szXSx0LG8pfWVsc2UgZz1bTWF0aC5taW4oZSxuKSxNYXRoLm1pbih0LG8pLE1hdGgubWF4KGUsbiksTWF0aC5tYXgodCxvKV07dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooaS1yKS1lK24pLDYqKGUtMippK3IpLDMqKGktZSksZyk7dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooYS1zKS10K28pLDYqKHQtMiphK3MpLDMqKGEtdCksZyk7cmV0dXJuIGd9fWNvbnN0IGh0PVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1BERlN0cmluZyhlKXtpZihlWzBdPj0iw68iKXtsZXQgdDtpZigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0pe3Q9InV0Zi0xNmJlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIGlmKCLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXSl7dD0idXRmLTE2bGUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2Uiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBpPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLGE9c3RyaW5nVG9CeXRlcyhlKSxyPWkuZGVjb2RlKGEpO3JldHVybiByLmluY2x1ZGVzKCIbIik/ci5yZXBsYWNlQWxsKC9ceDFiW15ceDFiXSooPzpceDFifCQpL2csIiIpOnJ9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGkpO2lmKDI3PT09cil7Zm9yKDsrK2k8YSYmMjchPT1lLmNoYXJDb2RlQXQoaSk7KTtjb250aW51ZX1jb25zdCBzPWh0W3JdO3QucHVzaChzP1N0cmluZy5mcm9tQ2hhckNvZGUocyk6ZS5jaGFyQXQoaSkpfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyhlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKWlmKGVbaV0hPT10W2ldKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7cmV0dXJuW2UuZ2V0VVRDRnVsbFllYXIoKS50b1N0cmluZygpLChlLmdldFVUQ01vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpXS5qb2luKCIiKX1sZXQgQ3Q9bnVsbCxCdD1udWxsO2Z1bmN0aW9uIHRvSGV4VXRpbChlKXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUudG9IZXg/ZS50b0hleCgpOkFycmF5LmZyb20oZSwoZT0+bHRbZV0pKS5qb2luKCIiKX1fX3dlYnBhY2tfcmVxdWlyZV9fKDMyMTUpO2NvbnN0IFF0PVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIiksRXQ9U3ltYm9sKCJFT0YiKTtsZXQgdXQ9T2JqZWN0LmNyZWF0ZShudWxsKSxkdD1PYmplY3QuY3JlYXRlKG51bGwpLGZ0PU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBkdFtlXXx8PW5ldyBOYW1lKGUpfX1jbGFzcyBDbWR7Y29uc3RydWN0b3IoZSl7dGhpcy5jbWQ9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiB1dFtlXXx8PW5ldyBDbWQoZSl9fWNvbnN0IHB0PWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gcHR9O2NsYXNzIERpY3R7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9tYXA9bmV3IE1hcDt0aGlzLnhyZWY9ZTt0aGlzLm9iaklkPW51bGw7dGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITE7dGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPXB0fWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWFzeW5jIGdldEFzeW5jKGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaEFzeW5jKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOmF9Z2V0QXJyYXkoZSx0LGkpe2xldCBhPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcC5nZXQoaSkpfWEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKGE9dGhpcy54cmVmLmZldGNoKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KGEpKXthPWEuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspYVtlXWluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhW2VdPXRoaXMueHJlZi5mZXRjaChhW2VdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSl9cmV0dXJuIGF9Z2V0UmF3KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfWdldEtleXMoKXtyZXR1cm5bLi4udGhpcy5fbWFwLmtleXMoKV19Z2V0UmF3VmFsdWVzKCl7cmV0dXJuWy4uLnRoaXMuX21hcC52YWx1ZXMoKV19c2V0KGUsdCl7dGhpcy5fbWFwLnNldChlLHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtlLHQgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2godCx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dF19c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmk9ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHI9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZS5fbWFwKXtsZXQgZT1yLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO3Iuc2V0KHQsZSl9ZWxzZSBpZighKGkmJmEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2goYSl9Zm9yKGNvbnN0W3QsaV1vZiByKXtpZigxPT09aS5sZW5ndGh8fCEoaVswXWluc3RhbmNlb2YgRGljdCkpe2EuX21hcC5zZXQodCxpWzBdKTtjb250aW51ZX1jb25zdCByPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGkpZm9yKGNvbnN0W3QsaV1vZiBlLl9tYXApci5fbWFwLmhhcyh0KXx8ci5fbWFwLnNldCh0LGkpO3Iuc2l6ZT4wJiZhLl9tYXAuc2V0KHQscil9ci5jbGVhcigpO3JldHVybiBhLnNpemU+MD9hOkRpY3QuZW1wdHl9Y2xvbmUoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5nZXRLZXlzKCkpZS5zZXQodCx0aGlzLmdldFJhdyh0KSk7cmV0dXJuIGV9ZGVsZXRlKGUpe2RlbGV0ZSB0aGlzLl9tYXBbZV19fWNsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZnJvbVN0cmluZyhlKXtjb25zdCB0PWZ0W2VdO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT0vXihcZCspUihcZCopJC8uZXhlYyhlKTtyZXR1cm4gaSYmIjAiIT09aVsxXT9mdFtlXT1uZXcgUmVmKHBhcnNlSW50KGlbMV0pLGlbMl0/cGFyc2VJbnQoaVsyXSk6MCk6bnVsbH1zdGF0aWMgZ2V0KGUsdCl7Y29uc3QgaT0wPT09dD9gJHtlfVJgOmAke2V9UiR7dH1gO3JldHVybiBmdFtpXXx8PW5ldyBSZWYoZSx0KX19Y2xhc3MgUmVmU2V0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fc2V0PW5ldyBTZXQoZT8uX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX1jbGFzcyBSZWZTZXRDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX21hcC5zaXplfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlLnRvU3RyaW5nKCkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHQpfXB1dEFsaWFzKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdGhpcy5nZXQodCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX21hcC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfSp2YWx1ZXMoKXt5aWVsZCp0aGlzLl9tYXAudmFsdWVzKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtyZXR1cm4gdGhpcy5nZXRCeXRlcyhlLHQpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBhc3luY0dldEJ5dGVzYCBjYWxsZWQiKX1nZXQgaXNBc3luYygpe3JldHVybiExfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiExfWFzeW5jIGdldFRyYW5zZmVyYWJsZUltYWdlKCl7cmV0dXJuIG51bGx9cGVla0J5dGUoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpOy0xIT09ZSYmdGhpcy5wb3MtLTtyZXR1cm4gZX1wZWVrQnl0ZXMoZSl7Y29uc3QgdD10aGlzLmdldEJ5dGVzKGUpO3RoaXMucG9zLT10Lmxlbmd0aDtyZXR1cm4gdH1nZXRVaW50MTYoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpLHQ9dGhpcy5nZXRCeXRlKCk7cmV0dXJuLTE9PT1lfHwtMT09PXQ/LTE6KGU8PDgpK3R9Z2V0SW50MzIoKXtyZXR1cm4odGhpcy5nZXRCeXRlKCk8PDI0KSsodGhpcy5nZXRCeXRlKCk8PDE2KSsodGhpcy5nZXRCeXRlKCk8PDgpK3RoaXMuZ2V0Qnl0ZSgpfWdldEJ5dGVSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVSYW5nZWAgY2FsbGVkIil9Z2V0U3RyaW5nKGUpe3JldHVybiBieXRlc1RvU3RyaW5nKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fWNvbnN0IG10PS9eWzEtOV1cLlxkJC8seXQ9MioqMzEtMTtmdW5jdGlvbiBnZXRMb29rdXBUYWJsZUZhY3RvcnkoZSl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2UodCk7ZT1udWxsfXJldHVybiB0fX1jbGFzcyBNaXNzaW5nRGF0YUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX1jbGFzcyBQYXJzZXJFT0ZFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZkVudHJ5RXhjZXB0aW9uIil9fWNsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBhcnJheUJ1ZmZlcnNUb0J5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaSs9ZVthXS5ieXRlTGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbaV0pO2Euc2V0KHQscik7cis9dC5ieXRlTGVuZ3RofXJldHVybiBhfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6YT0hMH0pe2xldCByO2NvbnN0IHM9bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFzLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZzLnB1dChlLm9iaklkKTtjb25zdCBuPWk/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1uKXtpZihhKXJldHVybiBuOyhyfHw9W10pLnB1c2gobil9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIHJ9Y29uc3Qgd3Q9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgaT0iTSIucmVwZWF0KGUvMWUzfDApK3d0W2UlMWUzLzEwMHwwXSt3dFsxMCsoZSUxMDAvMTB8MCldK3d0WzIwK2UlMTBdO3JldHVybiB0P2kudG9Mb3dlckNhc2UoKTppfWZ1bmN0aW9uIGxvZzIoZSl7cmV0dXJuIGU+MD9NYXRoLmNlaWwoTWF0aC5sb2cyKGUpKTowfWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIHJlYWRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX1mdW5jdGlvbiBpc051bWJlckFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/KG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4ibnVtYmVyIj09dHlwZW9mIGUpKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJigwPT09ZS5sZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgZVswXSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT97bmFtZTppWzFdLHBvczpwYXJzZUludChpWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPDMzfHxyPjEyNnx8MzU9PT1yfHw0MD09PXJ8fDQxPT09cnx8NjA9PT1yfHw2Mj09PXJ8fDkxPT09cnx8OTM9PT1yfHwxMjM9PT1yfHwxMjU9PT1yfHw0Nz09PXJ8fDM3PT09cil7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKGAjJHtyLnRvU3RyaW5nKDE2KX1gKTtpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfWZ1bmN0aW9uIF9jb2xsZWN0SlMoZSx0LGksYSl7aWYoIWUpcmV0dXJuO2xldCByPW51bGw7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMoZSkpcmV0dXJuO3I9ZTthLnB1dChyKTtlPXQuZmV0Y2goZSl9aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKV9jb2xsZWN0SlMocix0LGksYSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgYTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hPXQuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB0JiYoYT10KTthJiY9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiZpLnB1c2goYSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsaSxhKX1yJiZhLnJlbW92ZShyKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihyKWZvcihsZXQgdD1yLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBzPXJbdF07aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygcy5nZXRLZXlzKCkpe2NvbnN0IHI9aVt0XTtpZighciljb250aW51ZTtjb25zdCBuPVtdO19jb2xsZWN0SlMocy5nZXRSYXcodCksZSxuLG5ldyBSZWZTZXQpO24ubGVuZ3RoPjAmJihhW3JdPW4pfX1pZih0LmhhcygiQSIpKXtjb25zdCBpPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGksbmV3IFJlZlNldCk7aS5sZW5ndGg+MCYmKGEuQWN0aW9uPWkpfXJldHVybiBvYmplY3RTaXplKGEpPjA/YTpudWxsfWNvbnN0IGJ0PXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUuY29kZVBvaW50QXQodCk7aT41NTI5NSYmKGk8NTczNDR8fGk+NjU1MzMpJiZ0Kys7eWllbGQgaX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgaT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KGEpO2lmKDMyPD1yJiZyPD0xMjYpe2NvbnN0IHM9YnRbcl07aWYocyl7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKHMpO2k9YSsxfX1lbHNle2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChgJiN4JHtyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtyPjU1Mjk1JiYocjw1NzM0NHx8cj42NTUzMykmJmErKztpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGk9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGkmJmlbMV09PT1pWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHtpWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7aVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGkgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChpKXx8IS9eW1x3LVxcXSskLy50ZXN0KGkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTppLGZvbnRXZWlnaHQ6YSxpdGFsaWNBbmdsZTpyfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGksITApKXJldHVybiExO2NvbnN0IHM9YT9hLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHMpP3M6IjQwMCI7Y29uc3Qgbj1wYXJzZUZsb2F0KHIpO2UuaXRhbGljQW5nbGU9aXNOYU4obil8fG48LTkwfHxuPjkwPyIxNCI6ci50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtpLGFdb2YgZSl7aWYoIWkuc3RhcnRzV2l0aChkKSljb250aW51ZTtsZXQgZT10LmdldChhLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoYS5wYWdlSW5kZXgsZSl9ZS5wdXNoKGEpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gZnVuY3Rpb24gaXNBc2NpaShlKXtyZXR1cm4vXltceDAwLVx4N0ZdKiQvLnRlc3QoZSl9KGUpP2U6c3RyaW5nVG9VVEYxNlN0cmluZyhlLCEwKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2SGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKTt0LnB1c2gobHRbYT4+OCYyNTVdLGx0WzI1NSZhXSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IGk9W107dCYmaS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY2hhckNvZGVBdCh0KTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmYSkpfXJldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxpKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsaV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsaV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19ZnVuY3Rpb24gZ2V0U2l6ZUluQnl0ZXMoZSl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmNlaWwoTWF0aC5sb2cyKDErZSkpLzgpfWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCtpfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9YX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGk9dGhpcy5wb3MsYT10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShpLGEpO2xldCByPWkrZTtyPmEmJihyPWEpO3RoaXMucG9zPXI7cmV0dXJuIHQuc3ViYXJyYXkoaSxyKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGkpfX1jbGFzcyBTdHJpbmdTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoc3RyaW5nVG9CeXRlcyhlKSl9fWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fWNsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1pO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxpPXRoaXMubnVtQ2h1bmtzO3Q8aTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBpPXRoaXMuY2h1bmtTaXplO2lmKGUlaSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCBhPWUrdC5ieXRlTGVuZ3RoO2lmKGElaSE9MCYmYSE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7YX1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCByPU1hdGguZmxvb3IoZS9pKSxzPU1hdGguZmxvb3IoKGEtMSkvaSkrMTtmb3IobGV0IGU9cjtlPHM7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGk9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCBhPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWk7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgaT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGk+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCByPWk7cjxhOysrcilpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgaT0wO2k8dDsrK2kpe2NvbnN0IGE9KGUraSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhhKSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxpPXRoaXMucG9zLGE9dGhpcy5lbmQ7aWYoIWUpe2E+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxhKTtyZXR1cm4gdC5zdWJhcnJheShpLGEpfWxldCByPWkrZTtyPmEmJihyPWEpO3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxyKTt0aGlzLnBvcz1yO3JldHVybiB0LnN1YmFycmF5KGkscil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksaT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLGE9W107Zm9yKGxldCBlPXQ7ZTxpOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxhLnB1c2goZSk7cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IGE9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07YS5wb3M9YS5zdGFydD1lO2EuZW5kPWUrdHx8dGhpcy5lbmQ7YS5kaWN0PWk7cmV0dXJuIGF9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgaT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTtpLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoaS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgYT1bXSxyPTA7cmV0dXJuIG5ldyBQcm9taXNlKCgoZSx0KT0+e2NvbnN0IHJlYWRDaHVuaz0oe3ZhbHVlOnMsZG9uZTpufSk9Pnt0cnl7aWYobil7Y29uc3QgdD1hcnJheUJ1ZmZlcnNUb0J5dGVzKGEpO2E9bnVsbDtlKHQpO3JldHVybn1yKz1zLmJ5dGVMZW5ndGg7aS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6cn0pO2EucHVzaChzKTtpLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07aS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkudGhlbigodD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD10aGlzLmN1cnJSZXF1ZXN0SWQrKyxpPW5ldyBTZXQ7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LnNldCh0LGkpO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fGkuYWRkKHQpO2lmKDA9PT1pLnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGE9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsYSk7Y29uc3Qgcj1bXTtmb3IoY29uc3QgZSBvZiBpKXtsZXQgaT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFpKXtpPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxpKTtyLnB1c2goZSl9aS5wdXNoKHQpfWlmKHIubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhyKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxpPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxpKS5jYXRjaChhLnJlamVjdCl9fXJldHVybiBhLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgaT10aGlzLmdldEJlZ2luQ2h1bmsoZSksYT10aGlzLmdldEVuZENodW5rKHQpLHI9W107Zm9yKGxldCBlPWk7ZTxhOysrZSlyLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mocil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGkuYmVnaW4pLGE9dGhpcy5nZXRFbmRDaHVuayhpLmVuZCk7Zm9yKGxldCBpPWU7aTxhOysraSl0LmluY2x1ZGVzKGkpfHx0LnB1c2goaSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgaT0tMSxhPS0xO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzOysrcil7Y29uc3Qgcz1lW3JdO2k8MCYmKGk9cyk7aWYoYT49MCYmYSsxIT09cyl7dC5wdXNoKHtiZWdpbkNodW5rOmksZW5kQ2h1bms6YSsxfSk7aT1zfXIrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6aSxlbmRDaHVuazpzKzF9KTthPXN9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssaT12b2lkIDA9PT1lLmJlZ2luLGE9aT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLHI9YSt0LmJ5dGVMZW5ndGgscz1NYXRoLmZsb29yKGEvdGhpcy5jaHVua1NpemUpLG49cjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChyL3RoaXMuY2h1bmtTaXplKTtpZihpKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9cn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEoYSx0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9cztlPG47KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoaSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goaSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhuKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbT8uY2FuY2VsQWxsUmVxdWVzdHMoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QudmFsdWVzKCkpdC5yZWplY3QoZSl9fV9fd2VicGFja19yZXF1aXJlX18oNDUyMCksX193ZWJwYWNrX3JlcXVpcmVfXyg5NDc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI1NzcpLF9fd2VicGFja19yZXF1aXJlX18oODg3Mik7Y2xhc3MgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGksMCk7cmV0dXJuIGl9Z2V0UmdiSXRlbShlLHQsaSxhKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsaSxhLHIscyxuLG8sZyl7Y29uc3QgYz10Kmk7bGV0IGw9bnVsbDtjb25zdCBoPTE8PG4sQz1pIT09cnx8dCE9PWE7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKG4pKWw9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZjPmgmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9bjw9OD9uZXcgVWludDhBcnJheShoKTpuZXcgVWludDE2QXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoO2UrKyl0W2VdPWU7Y29uc3QgaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypoKTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsaCxpLDAsbiwwKTtpZihDKXtsPW5ldyBVaW50OEFycmF5KDMqYyk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGM7Kyt0KXtjb25zdCBhPTMqb1t0XTtsW2UrK109aVthXTtsW2UrK109aVthKzFdO2xbZSsrXT1pW2ErMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGM7KythKXtjb25zdCByPTMqb1thXTtlW3QrK109aVtyXTtlW3QrK109aVtyKzFdO2VbdCsrXT1pW3IrMl07dCs9Z319fWVsc2UgaWYoQyl7bD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypjKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsYyxsLDAsbiwwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxhKnMsZSwwLG4sZyk7aWYobClpZihDKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsaSxhLHIscyxuKXtuPTEhPT1uPzA6bjtjb25zdCBvPWkvcixnPWEvcztsZXQgYyxsPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkociksQz0zKmk7Zm9yKGxldCBlPTA7ZTxyO2UrKyloW2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IGE9TWF0aC5mbG9vcihpKmcpKkM7Zm9yKGxldCBpPTA7aTxyO2krKyl7Yz1hK2hbaV07dFtsKytdPWVbYysrXTt0W2wrK109ZVtjKytdO3RbbCsrXT1lW2MrK107bCs9bn19fShsLGUsdCxpLGEscixnKTtlbHNle2xldCB0PTAsaT0wO2ZvcihsZXQgcj0wLG49YSpzO3I8bjtyKyspe2VbdCsrXT1sW2krK107ZVt0KytdPWxbaSsrXTtlW3QrK109bFtpKytdO3QrPWd9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgX2NhY2hlKGUsdCxpLGEpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkQ29sb3JTcGFjZSIgYXJndW1lbnQuJyk7bGV0IHIscztpZihlIGluc3RhbmNlb2YgUmVmKXtzPWU7ZT10LmZldGNoKGUpfWUgaW5zdGFuY2VvZiBOYW1lJiYocj1lLm5hbWUpOyhyfHxzKSYmaS5zZXQocixzLGEpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGkpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGE9aS5nZXRCeVJlZihlKTtpZihhKXJldHVybiBhO3RyeXtlPXQuZmV0Y2goZSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGV9fWlmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWkuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmk9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSl7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixzKTtyZXR1cm4gc31zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczppPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pe2NvbnN0IHM9dGhpcy5nZXRDYWNoZWQoZSx0LHIpO2lmKHMpcmV0dXJuIHM7Y29uc3Qgbj10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixuKTtyZXR1cm4gbn1zdGF0aWMgX3BhcnNlKGUsdCxpPW51bGwsYSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIlBhdHRlcm4iOnJldHVybiBuZXcgUGF0dGVybkNTKG51bGwpO2RlZmF1bHQ6aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9aS5nZXQoIkNvbG9yU3BhY2UiKTtpZihyIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBOYW1lKXJldHVybiB0aGlzLl9wYXJzZShzLHQsaSxhKTtlPXM7YnJlYWt9fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCk7cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5fWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9dC5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbixvLGcsYyxsO3N3aXRjaChyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIkNhbEdyYXkiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2w9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MoZyxjLGwpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtsPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgaD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGcsYyxsLGgpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IEM9dC5mZXRjaElmUmVmKGVbMV0pLmRpY3Q7bj1DLmdldCgiTiIpO2NvbnN0IFE9Qy5nZXQoIkFsdGVybmF0ZSIpO2lmKFEpe2NvbnN0IGU9dGhpcy5fcGFyc2UoUSx0LGksYSk7aWYoZS5udW1Db21wcz09PW4pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1uKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtpZigzPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtpZig0PT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpvPWVbMV18fG51bGw7byYmKG89dGhpcy5fcGFyc2Uobyx0LGksYSkpO3JldHVybiBuZXcgUGF0dGVybkNTKG8pO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpvPXRoaXMuX3BhcnNlKGVbMV0sdCxpLGEpO2NvbnN0IEU9TWF0aC5tYXgoMCxNYXRoLm1pbih0LmZldGNoSWZSZWYoZVsyXSksMjU1KSksdT10LmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBJbmRleGVkQ1MobyxFLHUpO2Nhc2UiU2VwYXJhdGlvbiI6Y2FzZSJEZXZpY2VOIjpjb25zdCBkPXQuZmV0Y2hJZlJlZihlWzFdKTtuPUFycmF5LmlzQXJyYXkoZCk/ZC5sZW5ndGg6MTtvPXRoaXMuX3BhcnNlKGVbMl0sdCxpLGEpO2NvbnN0IGY9YS5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhuLG8sZik7Y2FzZSJMYWIiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHA9cy5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGcsYyxwKTtkZWZhdWx0Ondhcm4oYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7cn1gKTtyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXl9fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApO3JldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMip0IT09ZS5sZW5ndGgpe3dhcm4oIlRoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgiKTtyZXR1cm4hMH1mb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBnZXQgc2luZ2xldG9ucygpe3JldHVybiBzaGFkb3codGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX0sZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfSxnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9LGdldCBjbXlrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19KX19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1pO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxyLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHIsMCxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMudGludEZuLGc9dGhpcy5iYXNlLGM9MS8oKDE8PHMpLTEpLGw9Zy5udW1Db21wcyxoPWcudXNlc1plcm9Ub09uZVJhbmdlLEM9KGcuaXNQYXNzdGhyb3VnaCg4KXx8IWgpJiYwPT09bjtsZXQgUT1DP3I6MDtjb25zdCBFPUM/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkobCppKSx1PXRoaXMubnVtQ29tcHMsZD1uZXcgRmxvYXQzMkFycmF5KHUpLGY9bmV3IEZsb2F0MzJBcnJheShsKTtsZXQgcCxtO2ZvcihwPTA7cDxpO3ArKyl7Zm9yKG09MDttPHU7bSsrKWRbbV09ZVt0KytdKmM7byhkLDAsZiwwKTtpZihoKWZvcihtPTA7bTxsO20rKylFW1ErK109MjU1KmZbbV07ZWxzZXtnLmdldFJnYkl0ZW0oZiwwLEUsUSk7USs9bH19Q3x8Zy5nZXRSZ2JCdWZmZXIoRSwwLGksYSxyLDgsbil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTtjb25zdCBhPWUubnVtQ29tcHMqKHQrMSk7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkoYSk7aWYoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9aS5nZXRCeXRlcyhhKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2l9YCk7Zm9yKGxldCBlPTA7ZTxhOysrZSl0aGlzLmxvb2t1cFtlXT0yNTUmaS5jaGFyQ29kZUF0KGUpfX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHI9dGhpcy5iYXNlLm51bUNvbXBzLHM9ZVt0XSpyO3RoaXMuYmFzZS5nZXRSZ2JCdWZmZXIodGhpcy5sb29rdXAscywxLGksYSw4LDApfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMuYmFzZSxnPW8ubnVtQ29tcHMsYz1vLmdldE91dHB1dExlbmd0aChnLG4pLGw9dGhpcy5sb29rdXA7Zm9yKGxldCBzPTA7czxpOysrcyl7Y29uc3QgaT1lW3QrK10qZztvLmdldFJnYkJ1ZmZlcihsLGksMSxhLHIsOCxuKTtyKz1jfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcyx0KX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyIT09ZS5sZW5ndGgpe3dhcm4oIkRlY29kZSBtYXAgbGVuZ3RoIGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MSl7d2FybigiQml0cyBwZXIgY29tcG9uZW50IGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9cmV0dXJuIDA9PT1lWzBdJiZlWzFdPT09KDE8PHQpLTF9fWNsYXNzIERldmljZUdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlR3JheSIsMSl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPTI1NSplW3RdO2lbYV09aVthKzFdPWlbYSsyXT1yfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2NvbnN0IHQ9byplW2crK107YVtjKytdPXQ7YVtjKytdPXQ7YVtjKytdPXQ7Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIERldmljZVJnYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0IiLDMpfWdldFJnYkl0ZW0oZSx0LGksYSl7aVthXT0yNTUqZVt0XTtpW2ErMV09MjU1KmVbdCsxXTtpW2ErMl09MjU1KmVbdCsyXX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7aWYoOD09PXMmJjA9PT1uKXthLnNldChlLnN1YmFycmF5KHQsdCszKmkpLHIpO3JldHVybn1jb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107YVtjKytdPW8qZVtnKytdO2MrPW59fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX19Y2xhc3MgRGV2aWNlUmdiYUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0JBIiw0KX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gNCplfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfWZpbGxSZ2IoZSx0LGksYSxyLHMsbixvLGcpe2khPT1yfHx0IT09YT9mdW5jdGlvbiByZXNpemVSZ2JhSW1hZ2UoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz1pL3IsZz1hL3M7bGV0IGM9MDtjb25zdCBsPW5ldyBVaW50MTZBcnJheShyKTtpZigxPT09bil7Zm9yKGxldCBlPTA7ZTxyO2UrKylsW2VdPU1hdGguZmxvb3IoZSpvKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksbj1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLGg9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCB0PWEuc3ViYXJyYXkoTWF0aC5mbG9vcihlKmcpKmkpO2ZvcihsZXQgZT0wO2U8cjtlKyspbltjKytdfD10W2xbZV1dJmh9fWVsc2V7Y29uc3QgYT00LG49aSphO2ZvcihsZXQgZT0wO2U8cjtlKyspbFtlXT1NYXRoLmZsb29yKGUqbykqYTtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdCBhPWUuc3ViYXJyYXkoTWF0aC5mbG9vcihpKmcpKm4pO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IGk9bFtlXTt0W2MrK109YVtpXTt0W2MrK109YVtpKzFdO3RbYysrXT1hW2krMl19fX19KG8sZSx0LGksYSxyLGcpOmZ1bmN0aW9uIGNvcHlSZ2JhSW1hZ2UoZSx0LGkpe2lmKDE9PT1pKXtjb25zdCBpPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksYT1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLHI9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspYVtlXXw9aVtlXSZyfWVsc2V7bGV0IGk9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz00KXt0W2krK109ZVthXTt0W2krK109ZVthKzFdO3RbaSsrXT1lW2ErMl19fX0obyxlLGcpfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz1lW3RdKmksbj1lW3QrMV0qaSxvPWVbdCsyXSppLGc9ZVt0KzNdKmk7YVtyXT0yNTUrcyooLTQuMzg3MzMyMzg0NjA5OTg4KnMrNTQuNDg2MTUxOTQxODkxNzYqbisxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpnLTI4NS4yMzMxMDI2MTM3MDA0KStuKigxLjcxNDk3NjM0NzczNjIxMzQqbi01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmctNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqZysxNy41MTE5MjcwODQxODEzKStnKigtMjEuODYxMjIxNDc0NjM2MDUqZy0xODkuNDgxODA4MzU5MjI3NDcpO2FbcisxXT0yNTUrcyooOC44NDEwNDE0MjIwMzYxNDkqcys2MC4xMTgwMjcwNDU1OTczNjYqbis2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipnLTc5LjI5NzA4NDQ4MTY1NDgpK24qKC0xNS4zMTAzNjEzMDY5Njc4MTcqbisxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqZy0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqZy0yNC44Njc0MTU4MjU1NTg3OCkrZyooLTIwLjczNzMyNTQ3MTE4MTAzNCpnLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtyKzJdPTI1NStzKiguODg0MjUyMjQzMDAwMzI5NipzKzguMDc4Njc3NTAzMTEyOTI4Km4rMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqZy0xNC4xODM1NzY3OTk2NzMyODYpK24qKDEwLjQ5NTkzMjczNDMyMDcyKm4rNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqZy0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpnLTE5My41ODIwOTM1Njg2MTUwNSkrZyooLTIyLjMzODE2ODA3MzA5ODg2KmctMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LDEsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxpO3MrKyl7dGhpcy4jdChlLHQsbyxhLHIpO3QrPTQ7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9aXx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jdChlLHQsaSxhLHIpe2NvbnN0IHM9KGVbdF0qcikqKnRoaXMuRyxuPXRoaXMuWVcqcyxvPU1hdGgubWF4KDI5NS44Km4qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7aVthXT1vO2lbYSsxXT1vO2lbYSsyXT1vfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsaSxhLDEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0aGlzLiN0KGUsdCxhLHIsbyk7dCs9MTtyKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2k9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNhPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjcj1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyNzPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI249bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNnPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI0k9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtyLHMsbl09dGhpcy53aGl0ZVBvaW50PWUsW28sZyxjXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPWl8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHI8MHx8bjwwfHwxIT09cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8ZzwwfHxjPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2d9LCAke2N9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I2MoZSx0LGkpe2lbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07aVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtpWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSNsKGUsdCxpKXtpWzBdPTEqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xKnRbMl0vZVsyXX0jaChlLHQsaSl7aVswXT0uOTUwNDcqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jQyhlKXtyZXR1cm4gZTw9LjAwMzEzMDg/dGhpcy4jQigwLDEsMTIuOTIqZSk6ZT49Ljk5NTU0NTI1PzE6dGhpcy4jQigwLDEsMS4wNTUqZSoqKDEvMi40KS0uMDU1KX0jQihlLHQsaSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxpKSl9I1EoZSl7cmV0dXJuIGU8MD8tdGhpcy4jUSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNJfSNFKGUsdCxpKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtpWzBdPXRbMF07aVsxXT10WzFdO2lbMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiNRKDApLHI9KDEtYSkvKDEtdGhpcy4jUShlWzBdKSkscz0xLXIsbj0oMS1hKS8oMS10aGlzLiNRKGVbMV0pKSxvPTEtbixnPSgxLWEpLygxLXRoaXMuI1EoZVsyXSkpLGM9MS1nO2lbMF09dFswXSpyK3M7aVsxXT10WzFdKm4rbztpWzJdPXRbMl0qZytjfSN1KGUsdCxpKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jbChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSNkKGUsdCxpKXtjb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jaChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLiNCKDAsMSxlW3RdKnIpLG49dGhpcy4jQigwLDEsZVt0KzFdKnIpLG89dGhpcy4jQigwLDEsZVt0KzJdKnIpLGc9MT09PXM/MTpzKip0aGlzLkdSLGM9MT09PW4/MTpuKip0aGlzLkdHLGw9MT09PW8/MTpvKip0aGlzLkdCLGg9dGhpcy5NWEEqZyt0aGlzLk1YQipjK3RoaXMuTVhDKmwsQz10aGlzLk1ZQSpnK3RoaXMuTVlCKmMrdGhpcy5NWUMqbCxRPXRoaXMuTVpBKmcrdGhpcy5NWkIqYyt0aGlzLk1aQypsLEU9Q2FsUkdCQ1MuI287RVswXT1oO0VbMV09QztFWzJdPVE7Y29uc3QgdT1DYWxSR0JDUy4jZzt0aGlzLiN1KHRoaXMud2hpdGVQb2ludCxFLHUpO2NvbnN0IGQ9Q2FsUkdCQ1MuI287dGhpcy4jRSh0aGlzLmJsYWNrUG9pbnQsdSxkKTtjb25zdCBmPUNhbFJHQkNTLiNnO3RoaXMuI2QoQ2FsUkdCQ1MuI3MsZCxmKTtjb25zdCBwPUNhbFJHQkNTLiNvO3RoaXMuI2MoQ2FsUkdCQ1MuI3IsZixwKTtpW2FdPTI1NSp0aGlzLiNDKHBbMF0pO2lbYSsxXT0yNTUqdGhpcy4jQyhwWzFdKTtpW2ErMl09MjU1KnRoaXMuI0MocFsyXSl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3RoaXMuI3QoZSx0LGEscixvKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jZihlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3AoZSx0LGksYSl7cmV0dXJuIGkrZSooYS1pKS90fSN0KGUsdCxpLGEscil7bGV0IHM9ZVt0XSxuPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWkpe3M9dGhpcy4jcChzLGksMCwxMDApO249dGhpcy4jcChuLGksdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNwKG8saSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1uPnRoaXMuYW1heD9uPXRoaXMuYW1heDpuPHRoaXMuYW1pbiYmKG49dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBnPShzKzE2KS8xMTYsYz1nK24vNTAwLGw9Zy1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jZihjKSxDPXRoaXMuWVcqdGhpcy4jZihnKSxRPXRoaXMuWlcqdGhpcy4jZihsKTtsZXQgRSx1LGQ7aWYodGhpcy5aVzwxKXtFPTMuMTMzOSpoKy0xLjYxNypDKy0uNDkwNipRO3U9LS45Nzg1KmgrMS45MTYqQysuMDMzMypRO2Q9LjA3MipoKy0uMjI5KkMrMS40MDU3KlF9ZWxzZXtFPTMuMjQwNipoKy0xLjUzNzIqQystLjQ5ODYqUTt1PS0uOTY4OSpoKzEuODc1OCpDKy4wNDE1KlE7ZD0uMDU1NypoKy0uMjA0KkMrMS4wNTcqUX1hW3JdPTI1NSpNYXRoLnNxcnQoRSk7YVtyKzFdPTI1NSpNYXRoLnNxcnQodSk7YVtyKzJdPTI1NSpNYXRoLnNxcnQoZCl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCwhMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPSgxPDxzKS0xO2ZvcihsZXQgcz0wO3M8aTtzKyspe3RoaXMuI3QoZSx0LG8sYSxyKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDM5NDkpO2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGk9MDtmb3IobGV0IGE9MDthPD10O2ErKylpPWk8PDh8ZVthXTtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZSguLi5lLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gYWRkSGV4KGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcj1pO3I+PTA7ci0tKXthKz1lW3JdK3Rbcl07ZVtyXT0yNTUmYTthPj49OH19ZnVuY3Rpb24gaW5jSGV4KGUsdCl7bGV0IGk9MTtmb3IobGV0IGE9dDthPj0wJiZpPjA7YS0tKXtpKz1lW2FdO2VbYV09MjU1Jmk7aT4+PTh9fWNvbnN0IER0PTE2O2NsYXNzIEJpbmFyeUNNYXBTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5idWZmZXI9ZTt0aGlzLnBvcz0wO3RoaXMuZW5kPWUubGVuZ3RoO3RoaXMudG1wQnVmPW5ldyBVaW50OEFycmF5KDE5KX1yZWFkQnl0ZSgpe3JldHVybiB0aGlzLnBvcz49dGhpcy5lbmQ/LTE6dGhpcy5idWZmZXJbdGhpcy5wb3MrK119cmVhZE51bWJlcigpe2xldCBlLHQ9MDtkb3tjb25zdCBpPXRoaXMucmVhZEJ5dGUoKTtpZihpPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmaSk7dD10PDw3fDEyNyZpfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgaTtjb25zdCBhPXRoaXMudG1wQnVmO2xldCByPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtpPSEoMTI4JmUpO2FbcisrXT0xMjcmZX13aGlsZSghaSk7bGV0IHM9dCxuPTAsbz0wO2Zvcig7cz49MDspe2Zvcig7bzw4JiZhLmxlbmd0aD4wOyl7bnw9YVstLXJdPDxvO28rPTd9ZVtzXT0yNTUmbjtzLS07bj4+PTg7by09OH19cmVhZEhleFNpZ25lZChlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2NvbnN0IGk9MSZlW3RdPzI1NTowO2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspe2E9KDEmYSk8PDh8ZVtyXTtlW3JdPWE+PjFeaX19cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX1jbGFzcyBCaW5hcnlDTWFwUmVhZGVye2FzeW5jIHByb2Nlc3MoZSx0LGkpe2NvbnN0IGE9bmV3IEJpbmFyeUNNYXBTdHJlYW0oZSkscj1hLnJlYWRCeXRlKCk7dC52ZXJ0aWNhbD0hISgxJnIpO2xldCBzPW51bGw7Y29uc3Qgbj1uZXcgVWludDhBcnJheShEdCksbz1uZXcgVWludDhBcnJheShEdCksZz1uZXcgVWludDhBcnJheShEdCksYz1uZXcgVWludDhBcnJheShEdCksbD1uZXcgVWludDhBcnJheShEdCk7bGV0IGgsQztmb3IoOyhDPWEucmVhZEJ5dGUoKSk+PTA7KXtjb25zdCBlPUM+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZDKXtjYXNlIDA6YS5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnM9YS5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3QgaT0hISgxNiZDKSxyPTE1JkM7aWYocisxPkR0KXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IFE9MSxFPWEucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpfWJyZWFrO2Nhc2UgMTphLnJlYWRIZXgobixyKTthLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxuLHIpO2EucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTthLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6YS5yZWFkSGV4KGcscik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChnLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChnLHIpO2lmKCFpKXthLnJlYWRIZXhOdW1iZXIobCxyKTthZGRIZXgoZyxsLHIpfWg9YS5yZWFkU2lnbmVkKCkrKGgrMSk7dC5tYXBPbmUoaGV4VG9JbnQoZyxyKSxoKX1icmVhaztjYXNlIDM6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTtoPWEucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2lmKGkpbi5zZXQobyk7ZWxzZXthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpfWEucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4sciksaGV4VG9JbnQobyxyKSxoKX1icmVhaztjYXNlIDQ6YS5yZWFkSGV4KGcsUSk7YS5yZWFkSGV4KGMscik7dC5tYXBPbmUoaGV4VG9JbnQoZyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxRKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKGwsUSk7YWRkSGV4KGcsbCxRKX1pbmNIZXgoYyxyKTthLnJlYWRIZXhTaWduZWQobCxyKTthZGRIZXgoYyxsLHIpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7Y2FzZSA1OmEucmVhZEhleChuLFEpO2EucmVhZEhleE51bWJlcihvLFEpO2FkZEhleChvLG4sUSk7YS5yZWFkSGV4KGMscik7dC5tYXBCZlJhbmdlKGhleFRvSW50KG4sUSksaGV4VG9JbnQobyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxRKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4sUSk7YWRkSGV4KG4sbyxRKX1hLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcz9pKHMpOnR9fWNvbnN0IEZ0PW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDt0aGlzLnBvcz0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5lb2Y9ITE7dGhpcy5idWZmZXI9RnQ7dGhpcy5taW5CdWZmZXJMZW5ndGg9NTEyO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IGk9dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDtpPGU7KWkqPTI7Y29uc3QgYT1uZXcgVWludDhBcnJheShpKTthLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9YX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSx0PW51bGwpe2NvbnN0IGk9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIoaStlKTthPWkrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2sodCk7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aDthPnImJihhPXIpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKHQpO2E9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkoaSxhKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0PW51bGwpe2lmKCF0aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKXJldHVybiB0aGlzLmdldEJ5dGVzKGUsdCk7Y29uc3QgaT1hd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIHRoaXMuZGVjb2RlSW1hZ2UoaSx0KX1yZXNldCgpe3RoaXMucG9zPTB9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3QgaT1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9aSYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxpKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7ZT1lLmZpbHRlcigoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKTtsZXQgaT0wO2Zvcihjb25zdCB0IG9mIGUpaSs9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIoaSk7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBpO3RyeXtpPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWEraS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGksYSk7dGhpcy5idWZmZXJMZW5ndGg9cn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBpPXQuZ2V0QmFzZVN0cmVhbXMoKTtpJiZlLnB1c2goLi4uaSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7bGV0IGEscjtpZigxMjI9PT10KXthPXRoaXMuZW5zdXJlQnVmZmVyKGkrNCk7Zm9yKHI9MDtyPDQ7KytyKWFbaStyXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3Iocj0xO3I8NTsrK3Ipe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7c1tyXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31hPXRoaXMuZW5zdXJlQnVmZmVyKGkrci0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9ci0xO2lmKHI8NSl7Zm9yKDtyPDU7KytyKXNbcl09MTE3O3RoaXMuZW9mPSEwfWxldCBuPTA7Zm9yKHI9MDtyPDU7KytyKW49ODUqbisoc1tyXS0zMyk7Zm9yKHI9MztyPj0wOy0tcil7YVtpK3JdPTI1NSZuO24+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsaT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYocjwwKXI9ZTtlbHNle2lbYSsrXT1yPDw0fGU7cj0tMX19aWYocj49MCYmdGhpcy5lb2Ype2lbYSsrXT1yPDw0O3I9LTF9dGhpcy5maXJzdERpZ2l0PXI7dGhpcy5idWZmZXJMZW5ndGg9YX19Y29uc3QgU3Q9LTEsa3Q9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0sUnQ9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxOdD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sR3Q9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0sTXQ9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sVXQ9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGk7Zm9yKDswPT09KGk9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09aSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGk9dGhpcy5jb2x1bW5zO2xldCBhLHIscyxuLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgcyxvLGc7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iobj0wO3Rbbl08aTsrK24pZVtuXT10W25dO2VbbisrXT1pO2Vbbl09aTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDthPTA7cj0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108aTspe3M9dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChzKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbYSsxXSxyKTtlW2ErMV08aSYmKGErPTIpO2JyZWFrO2Nhc2UgMTpzPW89MDtpZihyKXtkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtkb3tvKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KX1lbHNle2Rve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO2Rve28rPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3RbdGhpcy5jb2RpbmdQb3NdPGkmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFecik7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVthXSszLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMixyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2FdKzEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVthXSxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTMscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTIscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSBTdDp0aGlzLl9hZGRQaXhlbHMoaSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGksMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO3I9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGk7KXtzPTA7aWYocilkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtlbHNlIGRve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3JePTF9fWxldCBjPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe3M9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7cyE9PVN0JiYxIT09czspe3RoaXMuX2VhdEJpdHMoMSk7cz10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1zOyl7dGhpcy5fZWF0Qml0cygxKTtzPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09cyl7dGhpcy5fZWF0Qml0cygxMik7Yz0hMH1lbHNlIHM9PT1TdCYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZjJiZ0aGlzLmJ5dGVBbGlnbil7cz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PXMpe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihuPTA7bjw0Oysrbil7cz10aGlzLl9sb29rQml0cygxMik7MSE9PXMmJmluZm8oImJhZCBydGMgY29kZTogIitzKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtzPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihzPT09U3Qpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKHM+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZzKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108aSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtzPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPnMpe288PD1zOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtcyk7dGhpcy5vdXRwdXRCaXRzLT1zO3M9MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO3MtPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYocz4wKXtvPDw9cztzPTB9fX13aGlsZShzKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgaT10aGlzLmNvZGluZ0xpbmU7bGV0IGE9dGhpcy5jb2RpbmdQb3M7aWYoZT5pW2FdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmYV50JiYrK2E7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGk9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+aVthXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJmFedCYmKythO2lbYV09ZX1lbHNlIGlmKGU8aVthXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDthPjAmJmU8aVthLTFdOyktLWE7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2ZpbmRUYWJsZUNvZGUoZSx0LGksYSl7Y29uc3Qgcj1hfHwwO2ZvcihsZXQgYT1lO2E8PXQ7KythKXtsZXQgZT10aGlzLl9sb29rQml0cyhhKTtpZihlPT09U3QpcmV0dXJuWyEwLDEsITFdO2E8dCYmKGU8PD10LWEpO2lmKCFyfHxlPj1yKXtjb25zdCB0PWlbZS1yXTtpZih0WzBdPT09YSl7dGhpcy5fZWF0Qml0cyhhKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9a3RbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxrdCk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIFN0fV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09U3QpcmV0dXJuIDE7ZT10Pj41P050W3Q+PjNdOlJ0W3RdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxOdCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIsUnQpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PVN0KXJldHVybiAxO3Q9ZT4+Nz8hKGU+PjkpJiZlPj43P010WyhlPj4xKS02NF06VXRbZT4+N106R3RbZV07aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LFV0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLE10LDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxHdCk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP1N0OnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7aSBpbnN0YW5jZW9mIERpY3R8fChpPURpY3QuZW1wdHkpO2NvbnN0IGE9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGEse0s6aS5nZXQoIksiKSxFbmRPZkxpbmU6aS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246aS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmkuZ2V0KCJDb2x1bW5zIiksUm93czppLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6aS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTppLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgeHQ9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxMdD1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxIdD1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEp0PVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSx2dD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGk9ZS5nZXRCeXRlKCksYT1lLmdldEJ5dGUoKTtpZigtMT09PWl8fC0xPT09YSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDghPSgxNSZpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKCgoaTw8OCkrYSklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDMyJmEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBpPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBpPy5zdWJhcnJheSgwLGUpfHx0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt0aGlzLnN0ci5yZXNldCgpO2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoKTt0cnl7Y29uc3R7cmVhZGFibGU6dCx3cml0YWJsZTppfT1uZXcgRGVjb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLGE9aS5nZXRXcml0ZXIoKTthd2FpdCBhLnJlYWR5O2Eud3JpdGUoZSkudGhlbigoYXN5bmMoKT0+e2F3YWl0IGEucmVhZHk7YXdhaXQgYS5jbG9zZSgpfSkpLmNhdGNoKCgoKT0+e30pKTtjb25zdCByPVtdO2xldCBzPTA7Zm9yIGF3YWl0KGNvbnN0IGUgb2YgdCl7ci5wdXNoKGUpO3MrPWUuYnl0ZUxlbmd0aH1jb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2Ygcil7bi5zZXQoZSxvKTtvKz1lLmJ5dGVMZW5ndGh9cmV0dXJuIG59Y2F0Y2h7dGhpcy5zdHI9bmV3IFN0cmVhbShlLDIsZS5sZW5ndGgsdGhpcy5zdHIuZGljdCk7dGhpcy5yZXNldCgpO3JldHVybiBudWxsfX1nZXQgaXNBc3luYygpe3JldHVybiEwfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cjtsZXQgaSxhPXRoaXMuY29kZVNpemUscj10aGlzLmNvZGVCdWY7Zm9yKDthPGU7KXtpZigtMT09PShpPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtyfD1pPDxhO2ErPTh9aT1yJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1yPj5lO3RoaXMuY29kZVNpemU9YS09ZTtyZXR1cm4gaX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsaT1lWzBdLGE9ZVsxXTtsZXQgcixzPXRoaXMuY29kZVNpemUsbj10aGlzLmNvZGVCdWY7Zm9yKDtzPGEmJi0xIT09KHI9dC5nZXRCeXRlKCkpOyl7bnw9cjw8cztzKz04fWNvbnN0IG89aVtuJigxPDxhKS0xXSxnPW8+PjE2LGM9NjU1MzUmbztpZihnPDF8fHM8Zyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9bj4+Zzt0aGlzLmNvZGVTaXplPXMtZztyZXR1cm4gY31nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpLGE9MDtmb3IoaT0wO2k8dDsrK2kpZVtpXT5hJiYoYT1lW2ldKTtjb25zdCByPTE8PGEscz1uZXcgSW50MzJBcnJheShyKTtmb3IobGV0IG49MSxvPTAsZz0yO248PWE7KytuLG88PD0xLGc8PD0xKWZvcihsZXQgYT0wO2E8dDsrK2EpaWYoZVthXT09PW4pe2xldCBlPTAsdD1vO2ZvcihpPTA7aTxuOysraSl7ZT1lPDwxfDEmdDt0Pj49MX1mb3IoaT1lO2k8cjtpKz1nKXNbaV09bjw8MTZ8YTsrK299cmV0dXJuW3MsYV19I20oZSl7aW5mbyhlKTt0aGlzLmVvZj0hMH1yZWFkQmxvY2soKXtsZXQgZSx0LGk7Y29uc3QgYT10aGlzLnN0cjt0cnl7dD10aGlzLmdldEJpdHMoMyl9Y2F0Y2goZSl7dGhpcy4jbShlLm1lc3NhZ2UpO3JldHVybn0xJnQmJih0aGlzLmVvZj0hMCk7dD4+PTE7aWYoMD09PXQpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1pfD10PDw4O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgcj10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1yfD10PDw4O2lmKHIhPT0oNjU1MzUmfmkpJiYoMCE9PWl8fDAhPT1yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLG49cytpO2U9dGhpcy5lbnN1cmVCdWZmZXIobik7dGhpcy5idWZmZXJMZW5ndGg9bjtpZigwPT09aSktMT09PWEucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9YS5nZXRCeXRlcyhpKTtlLnNldCh0LHMpO3QubGVuZ3RoPGkmJih0aGlzLmVvZj0hMCl9cmV0dXJufWxldCByLHM7aWYoMT09PXQpe3I9SnQ7cz12dH1lbHNle2lmKDIhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsdD10aGlzLmdldEJpdHMoNSkrMSxhPXRoaXMuZ2V0Qml0cyg0KSs0LG49bmV3IFVpbnQ4QXJyYXkoeHQubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288YTsrK28pblt4dFtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGc9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShuKTtpPTA7bz0wO2NvbnN0IGM9ZSt0LGw9bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGgsQyxRO2Zvcig7bzxjOyl7Y29uc3QgZT10aGlzLmdldENvZGUoZyk7aWYoMTY9PT1lKXtoPTI7Qz0zO1E9aX1lbHNlIGlmKDE3PT09ZSl7aD0zO0M9MztRPWk9MH1lbHNle2lmKDE4IT09ZSl7bFtvKytdPWk9ZTtjb250aW51ZX1oPTc7Qz0xMTtRPWk9MH1sZXQgdD10aGlzLmdldEJpdHMoaCkrQztmb3IoO3QtLSA+MDspbFtvKytdPVF9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoMCxlKSk7cz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoZSxjKSl9fWU9dGhpcy5idWZmZXI7bGV0IG49ZT9lLmxlbmd0aDowLG89dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgdD10aGlzLmdldENvZGUocik7aWYodDwyNTYpe2lmKG8rMT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKzEpO249ZS5sZW5ndGh9ZVtvKytdPXQ7Y29udGludWV9aWYoMjU2PT09dCl7dGhpcy5idWZmZXJMZW5ndGg9bztyZXR1cm59dC09MjU3O3Q9THRbdF07bGV0IGE9dD4+MTY7YT4wJiYoYT10aGlzLmdldEJpdHMoYSkpO2k9KDY1NTM1JnQpK2E7dD10aGlzLmdldENvZGUocyk7dD1IdFt0XTthPXQ+PjE2O2E+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKTtjb25zdCBnPSg2NTUzNSZ0KSthO2lmKG8raT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvK2kpO249ZS5sZW5ndGh9Zm9yKGxldCB0PTA7dDxpOysrdCwrK28pZVtvXT1lW28tZ119fX1jb25zdCBZdD1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTtjbGFzcyBBcml0aG1ldGljRGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kYXRhPWU7dGhpcy5icD10O3RoaXMuZGF0YUVuZD1pO3RoaXMuY2hpZ2g9ZVt0XTt0aGlzLmNsb3c9MDt0aGlzLmJ5dGVJbigpO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8NyY2NTUzNXx0aGlzLmNsb3c+PjkmMTI3O3RoaXMuY2xvdz10aGlzLmNsb3c8PDcmNjU1MzU7dGhpcy5jdC09Nzt0aGlzLmE9MzI3Njh9Ynl0ZUluKCl7Y29uc3QgZT10aGlzLmRhdGE7bGV0IHQ9dGhpcy5icDtpZigyNTU9PT1lW3RdKWlmKGVbdCsxXT4xNDMpe3RoaXMuY2xvdys9NjUyODA7dGhpcy5jdD04fWVsc2V7dCsrO3RoaXMuY2xvdys9ZVt0XTw8OTt0aGlzLmN0PTc7dGhpcy5icD10fWVsc2V7dCsrO3RoaXMuY2xvdys9dDx0aGlzLmRhdGFFbmQ/ZVt0XTw8ODo2NTI4MDt0aGlzLmN0PTg7dGhpcy5icD10fWlmKHRoaXMuY2xvdz42NTUzNSl7dGhpcy5jaGlnaCs9dGhpcy5jbG93Pj4xNjt0aGlzLmNsb3cmPTY1NTM1fX1yZWFkQml0KGUsdCl7bGV0IGk9ZVt0XT4+MSxhPTEmZVt0XTtjb25zdCByPVl0W2ldLHM9ci5xZTtsZXQgbixvPXRoaXMuYS1zO2lmKHRoaXMuY2hpZ2g8cylpZihvPHMpe289cztuPWE7aT1yLm5tcHN9ZWxzZXtvPXM7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXt0aGlzLmNoaWdoLT1zO2lmKDMyNzY4Jm8pe3RoaXMuYT1vO3JldHVybiBhfWlmKG88cyl7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXtuPWE7aT1yLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO288PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoISgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1pPDwxfGE7cmV0dXJuIG59fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsaSl7Y29uc3QgYT1lLmdldENvbnRleHRzKHQpO2xldCByPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IHM9MDtzPGU7cysrKXtjb25zdCBlPWkucmVhZEJpdChhLHIpO3I9cjwyNTY/cjw8MXxlOjUxMSYocjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IHM9cmVhZEJpdHMoMSksbj1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7bGV0IG87MD09PXM/bz1uOm4+MCYmKG89LW4pO3JldHVybiBvPj0tMjE0NzQ4MzY0OCYmbzw9eXQ/bzpudWxsfWZ1bmN0aW9uIGRlY29kZUlBSUQoZSx0LGkpe2NvbnN0IGE9ZS5nZXRDb250ZXh0cygiSUFJRCIpO2xldCByPTE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cj1yPDwxfHQucmVhZEJpdChhLHIpfXJldHVybiBpPDMxP3ImKDE8PGkpLTE6MjE0NzQ4MzY0NyZyfWNvbnN0IEt0PVsiU3ltYm9sRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZVRleHRSZWdpb24iLG51bGwsIkltbWVkaWF0ZVRleHRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiUGF0dGVybkRpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbiIsIkludGVybWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsIlBhZ2VJbmZvcm1hdGlvbiIsIkVuZE9mUGFnZSIsIkVuZE9mU3RyaXBlIiwiRW5kT2ZGaWxlIiwiUHJvZmlsZXMiLCJUYWJsZXMiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiRXh0ZW5zaW9uIl0sVHQ9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLHF0PVt7Y29kaW5nOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4Oi0xLHk6MX0se3g6MCx5OjF9LHt4OjEseToxfV19LHtjb2Rpbmc6W3t4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4OjAseToxfSx7eDoxLHk6MX1dfV0sT3Q9WzM5NzE3LDE5NDEsMjI5LDQwNV0sUHQ9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsaSxhLHIscyxuLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxpLCExKX1pZigwPT09YSYmIXMmJiFyJiY0PT09bi5sZW5ndGgmJjM9PT1uWzBdLngmJi0xPT09blswXS55JiYtMz09PW5bMV0ueCYmLTE9PT1uWzFdLnkmJjI9PT1uWzJdLngmJi0yPT09blsyXS55JiYtMj09PW5bM10ueCYmLTI9PT1uWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsaSl7Y29uc3QgYT1pLmRlY29kZXIscj1pLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxzPVtdO2xldCBuLG8sZyxjLGwsaCxDO2ZvcihvPTA7bzx0O28rKyl7bD1zW29dPW5ldyBVaW50OEFycmF5KGUpO2g9bzwxP2w6c1tvLTFdO0M9bzwyP2w6c1tvLTJdO249Q1swXTw8MTN8Q1sxXTw8MTJ8Q1syXTw8MTF8aFswXTw8N3xoWzFdPDw2fGhbMl08PDV8aFszXTw8NDtmb3IoZz0wO2c8ZTtnKyspe2xbZ109Yz1hLnJlYWRCaXQocixuKTtuPSgzMTczNSZuKTw8MXwoZyszPGU/Q1tnKzNdPDwxMTowKXwoZys0PGU/aFtnKzRdPDw0OjApfGN9fXJldHVybiBzfSh0LGksbyk7Y29uc3QgZz0hIXMsYz1UdFthXS5jb25jYXQobik7Yy5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLnktdC55fHxlLngtdC54fSkpO2NvbnN0IGw9Yy5sZW5ndGgsaD1uZXcgSW50OEFycmF5KGwpLEM9bmV3IEludDhBcnJheShsKSxRPVtdO2xldCBFLHUsZD0wLGY9MCxwPTAsbT0wO2Zvcih1PTA7dTxsO3UrKyl7aFt1XT1jW3VdLng7Q1t1XT1jW3VdLnk7Zj1NYXRoLm1pbihmLGNbdV0ueCk7cD1NYXRoLm1heChwLGNbdV0ueCk7bT1NYXRoLm1pbihtLGNbdV0ueSk7dTxsLTEmJmNbdV0ueT09PWNbdSsxXS55JiZjW3VdLng9PT1jW3UrMV0ueC0xP2R8PTE8PGwtMS11OlEucHVzaCh1KX1jb25zdCB5PVEubGVuZ3RoLHc9bmV3IEludDhBcnJheSh5KSxiPW5ldyBJbnQ4QXJyYXkoeSksRD1uZXcgVWludDE2QXJyYXkoeSk7Zm9yKEU9MDtFPHk7RSsrKXt1PVFbRV07d1tFXT1jW3VdLng7YltFXT1jW3VdLnk7RFtFXT0xPDxsLTEtdX1jb25zdCBTPS1mLGs9LW0sUj10LXAsTj1PdFthXTtsZXQgRz1uZXcgVWludDhBcnJheSh0KTtjb25zdCBNPVtdLFU9by5kZWNvZGVyLHg9by5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIik7bGV0IEwsSCxKLHYsWSxLPTAsVD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspe2lmKHIpe0tePVUucmVhZEJpdCh4LE4pO2lmKEspe00ucHVzaChHKTtjb250aW51ZX19Rz1uZXcgVWludDhBcnJheShHKTtNLnB1c2goRyk7Zm9yKEw9MDtMPHQ7TCsrKXtpZihnJiZzW2VdW0xdKXtHW0xdPTA7Y29udGludWV9aWYoTD49UyYmTDxSJiZlPj1rKXtUPVQ8PDEmZDtmb3IodT0wO3U8eTt1Kyspe0g9ZStiW3VdO0o9TCt3W3VdO3Y9TVtIXVtKXTtpZih2KXt2PURbdV07VHw9dn19fWVsc2V7VD0wO1k9bC0xO2Zvcih1PTA7dTxsO3UrKyxZLS0pe0o9TCtoW3VdO2lmKEo+PTAmJko8dCl7SD1lK0NbdV07aWYoSD49MCl7dj1NW0hdW0pdO3YmJihUfD12PDxZKX19fX1jb25zdCBpPVUucmVhZEJpdCh4LFQpO0dbTF09aX19cmV0dXJuIE19ZnVuY3Rpb24gZGVjb2RlUmVmaW5lbWVudChlLHQsaSxhLHIscyxuLG8sZyl7bGV0IGM9cXRbaV0uY29kaW5nOzA9PT1pJiYoYz1jLmNvbmNhdChbb1swXV0pKTtjb25zdCBsPWMubGVuZ3RoLGg9bmV3IEludDMyQXJyYXkobCksQz1uZXcgSW50MzJBcnJheShsKTtsZXQgUTtmb3IoUT0wO1E8bDtRKyspe2hbUV09Y1tRXS54O0NbUV09Y1tRXS55fWxldCBFPXF0W2ldLnJlZmVyZW5jZTswPT09aSYmKEU9RS5jb25jYXQoW29bMV1dKSk7Y29uc3QgdT1FLmxlbmd0aCxkPW5ldyBJbnQzMkFycmF5KHUpLGY9bmV3IEludDMyQXJyYXkodSk7Zm9yKFE9MDtRPHU7USsrKXtkW1FdPUVbUV0ueDtmW1FdPUVbUV0ueX1jb25zdCBwPWFbMF0ubGVuZ3RoLG09YS5sZW5ndGgseT1QdFtpXSx3PVtdLGI9Zy5kZWNvZGVyLEQ9Zy5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdSIik7bGV0IFM9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtpZihuKXtTXj1iLnJlYWRCaXQoRCx5KTtpZihTKXRocm93IG5ldyBKYmlnMkVycm9yKCJwcmVkaWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKX1jb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO3cucHVzaCh0KTtmb3IobGV0IG49MDtuPGU7bisrKXtsZXQgbyxnLGM9MDtmb3IoUT0wO1E8bDtRKyspe289aStDW1FdO2c9bitoW1FdO288MHx8ZzwwfHxnPj1lP2M8PD0xOmM9Yzw8MXx3W29dW2ddfWZvcihRPTA7UTx1O1ErKyl7bz1pK2ZbUV0tcztnPW4rZFtRXS1yO288MHx8bz49bXx8ZzwwfHxnPj1wP2M8PD0xOmM9Yzw8MXxhW29dW2ddfWNvbnN0IEU9Yi5yZWFkQml0KEQsYyk7dFtuXT1FfX1yZXR1cm4gd31mdW5jdGlvbiBkZWNvZGVUZXh0UmVnaW9uKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoLEMsUSxFLHUsZCxmLHApe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBtPVtdO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXt3PW5ldyBVaW50OEFycmF5KGkpO2lmKHIpZm9yKGxldCBlPTA7ZTxpO2UrKyl3W2VdPXI7bS5wdXNoKHcpfWNvbnN0IGI9ZC5kZWNvZGVyLEQ9ZC5jb250ZXh0Q2FjaGU7bGV0IFM9ZT8tUS50YWJsZURlbHRhVC5kZWNvZGUocCk6LWRlY29kZUludGVnZXIoRCwiSUFEVCIsYiksaz0wO3k9MDtmb3IoO3k8czspe1MrPWU/US50YWJsZURlbHRhVC5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQURUIixiKTtrKz1lP1EudGFibGVGaXJzdFMuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFGUyIsYik7bGV0IGE9aztmb3IoOzspe2xldCByPTA7bj4xJiYocj1lP3AucmVhZEJpdHMoZik6ZGVjb2RlSW50ZWdlcihELCJJQUlUIixiKSk7Y29uc3Qgcz1uKlMrcixrPWU/US5zeW1ib2xJRFRhYmxlLmRlY29kZShwKTpkZWNvZGVJQUlEKEQsYixnKSxSPXQmJihlP3AucmVhZEJpdCgpOmRlY29kZUludGVnZXIoRCwiSUFSSSIsYikpO2xldCBOPW9ba10sRz1OWzBdLmxlbmd0aCxNPU4ubGVuZ3RoO2lmKFIpe2NvbnN0IGU9ZGVjb2RlSW50ZWdlcihELCJJQVJEVyIsYiksdD1kZWNvZGVJbnRlZ2VyKEQsIklBUkRIIixiKTtHKz1lO00rPXQ7Tj1kZWNvZGVSZWZpbmVtZW50KEcsTSxFLE4sKGU+PjEpK2RlY29kZUludGVnZXIoRCwiSUFSRFgiLGIpLCh0Pj4xKStkZWNvZGVJbnRlZ2VyKEQsIklBUkRZIixiKSwhMSx1LGQpfWxldCBVPTA7Yz8xJmg/VT1NLTE6YSs9TS0xOmg+MT9hKz1HLTE6VT1HLTE7Y29uc3QgeD1zLSgxJmg/MDpNLTEpLEw9YS0oMiZoP0ctMTowKTtsZXQgSCxKLHY7aWYoYylmb3IoSD0wO0g8TTtIKyspe3c9bVtMK0hdO2lmKCF3KWNvbnRpbnVlO3Y9TltIXTtjb25zdCBlPU1hdGgubWluKGkteCxHKTtzd2l0Y2goQyl7Y2FzZSAwOmZvcihKPTA7SjxlO0orKyl3W3grSl18PXZbSl07YnJlYWs7Y2FzZSAyOmZvcihKPTA7SjxlO0orKyl3W3grSl1ePXZbSl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtDfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWVsc2UgZm9yKEo9MDtKPE07SisrKXt3PW1beCtKXTtpZih3KXt2PU5bSl07c3dpdGNoKEMpe2Nhc2UgMDpmb3IoSD0wO0g8RztIKyspd1tMK0hdfD12W0hdO2JyZWFrO2Nhc2UgMjpmb3IoSD0wO0g8RztIKyspd1tMK0hdXj12W0hdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7Q30gaXMgbm90IHN1cHBvcnRlZGApfX19eSsrO2NvbnN0IFk9ZT9RLnRhYmxlRGVsdGFTLmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRFMiLGIpO2lmKG51bGw9PT1ZKWJyZWFrO2ErPVUrWStsfX1yZXR1cm4gbX1mdW5jdGlvbiByZWFkU2VnbWVudEhlYWRlcihlLHQpe2NvbnN0IGk9e307aS5udW1iZXI9cmVhZFVpbnQzMihlLHQpO2NvbnN0IGE9ZVt0KzRdLHI9NjMmYTtpZighS3Rbcl0pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgc2VnbWVudCB0eXBlOiAiK3IpO2kudHlwZT1yO2kudHlwZU5hbWU9S3Rbcl07aS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmYSk7Y29uc3Qgcz0hISg2NCZhKSxuPWVbdCs1XTtsZXQgbz1uPj41Jjc7Y29uc3QgZz1bMzEmbl07bGV0IGM9dCs2O2lmKDc9PT1uKXtvPTUzNjg3MDkxMSZyZWFkVWludDMyKGUsYy0xKTtjKz0zO2xldCB0PW8rNz4+MztnWzBdPWVbYysrXTtmb3IoOy0tdD4wOylnLnB1c2goZVtjKytdKX1lbHNlIGlmKDU9PT1ufHw2PT09bil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2kucmV0YWluQml0cz1nO2xldCBsPTQ7aS5udW1iZXI8PTI1Nj9sPTE6aS5udW1iZXI8PTY1NTM2JiYobD0yKTtjb25zdCBoPVtdO2xldCBDLFE7Zm9yKEM9MDtDPG87QysrKXtsZXQgdDt0PTE9PT1sP2VbY106Mj09PWw/cmVhZFVpbnQxNihlLGMpOnJlYWRVaW50MzIoZSxjKTtoLnB1c2godCk7Yys9bH1pLnJlZmVycmVkVG89aDtpZihzKXtpLnBhZ2VBc3NvY2lhdGlvbj1yZWFkVWludDMyKGUsYyk7Yys9NH1lbHNlIGkucGFnZUFzc29jaWF0aW9uPWVbYysrXTtpLmxlbmd0aD1yZWFkVWludDMyKGUsYyk7Yys9NDtpZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpe2lmKDM4IT09cil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLGMpLGE9ISEoMSZlW2MrV3RdKSxyPTYscz1uZXcgVWludDhBcnJheShyKTtpZighYSl7c1swXT0yNTU7c1sxXT0xNzJ9c1syXT10LmhlaWdodD4+PjI0JjI1NTtzWzNdPXQuaGVpZ2h0Pj4xNiYyNTU7c1s0XT10LmhlaWdodD4+OCYyNTU7c1s1XT0yNTUmdC5oZWlnaHQ7Zm9yKEM9YyxRPWUubGVuZ3RoO0M8UTtDKyspe2xldCB0PTA7Zm9yKDt0PHImJnNbdF09PT1lW0MrdF07KXQrKztpZih0PT09cil7aS5sZW5ndGg9QytyO2JyZWFrfX1pZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNlZ21lbnQgZW5kIHdhcyBub3QgZm91bmQiKX19aS5oZWFkZXJFbmQ9YztyZXR1cm4gaX1mdW5jdGlvbiByZWFkU2VnbWVudHMoZSx0LGksYSl7Y29uc3Qgcj1bXTtsZXQgcz1pO2Zvcig7czxhOyl7Y29uc3QgaT1yZWFkU2VnbWVudEhlYWRlcih0LHMpO3M9aS5oZWFkZXJFbmQ7Y29uc3QgYT17aGVhZGVyOmksZGF0YTp0fTtpZighZS5yYW5kb21BY2Nlc3Mpe2Euc3RhcnQ9cztzKz1pLmxlbmd0aDthLmVuZD1zfXIucHVzaChhKTtpZig1MT09PWkudHlwZSlicmVha31pZihlLnJhbmRvbUFjY2Vzcylmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3JbZV0uc3RhcnQ9cztzKz1yW2VdLmhlYWRlci5sZW5ndGg7cltlXS5lbmQ9c31yZXR1cm4gcn1mdW5jdGlvbiByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsdCl7cmV0dXJue3dpZHRoOnJlYWRVaW50MzIoZSx0KSxoZWlnaHQ6cmVhZFVpbnQzMihlLHQrNCkseDpyZWFkVWludDMyKGUsdCs4KSx5OnJlYWRVaW50MzIoZSx0KzEyKSxjb21iaW5hdGlvbk9wZXJhdG9yOjcmZVt0KzE2XX19Y29uc3QgV3Q9MTc7ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnQoZSx0KXtjb25zdCBpPWUuaGVhZGVyLGE9ZS5kYXRhLHI9ZS5lbmQ7bGV0IHMsbixvLGcsYz1lLnN0YXJ0O3N3aXRjaChpLnR5cGUpe2Nhc2UgMDpjb25zdCBlPXt9LHQ9cmVhZFVpbnQxNihhLGMpO2UuaHVmZm1hbj0hISgxJnQpO2UucmVmaW5lbWVudD0hISgyJnQpO2UuaHVmZm1hbkRIU2VsZWN0b3I9dD4+MiYzO2UuaHVmZm1hbkRXU2VsZWN0b3I9dD4+NCYzO2UuYml0bWFwU2l6ZVNlbGVjdG9yPXQ+PjYmMTtlLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I9dD4+NyYxO2UuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQ9ISEoMjU2JnQpO2UuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkPSEhKDUxMiZ0KTtlLnRlbXBsYXRlPXQ+PjEwJjM7ZS5yZWZpbmVtZW50VGVtcGxhdGU9dD4+MTImMTtjKz0yO2lmKCFlLmh1ZmZtYW4pe2c9MD09PWUudGVtcGxhdGU/NDoxO249W107Zm9yKG89MDtvPGc7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZS5hdD1ufWlmKGUucmVmaW5lbWVudCYmIWUucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWUucmVmaW5lbWVudEF0PW59ZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtlLm51bWJlck9mTmV3U3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtlLGkubnVtYmVyLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSA2OmNhc2UgNzpjb25zdCBsPXt9O2wuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9V3Q7Y29uc3QgaD1yZWFkVWludDE2KGEsYyk7Yys9MjtsLmh1ZmZtYW49ISEoMSZoKTtsLnJlZmluZW1lbnQ9ISEoMiZoKTtsLmxvZ1N0cmlwU2l6ZT1oPj4yJjM7bC5zdHJpcFNpemU9MTw8bC5sb2dTdHJpcFNpemU7bC5yZWZlcmVuY2VDb3JuZXI9aD4+NCYzO2wudHJhbnNwb3NlZD0hISg2NCZoKTtsLmNvbWJpbmF0aW9uT3BlcmF0b3I9aD4+NyYzO2wuZGVmYXVsdFBpeGVsVmFsdWU9aD4+OSYxO2wuZHNPZmZzZXQ9aDw8MTc+PjI3O2wucmVmaW5lbWVudFRlbXBsYXRlPWg+PjE1JjE7aWYobC5odWZmbWFuKXtjb25zdCBlPXJlYWRVaW50MTYoYSxjKTtjKz0yO2wuaHVmZm1hbkZTPTMmZTtsLmh1ZmZtYW5EUz1lPj4yJjM7bC5odWZmbWFuRFQ9ZT4+NCYzO2wuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7bC5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMztsLmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKGwucmVmaW5lbWVudCYmIWwucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWwucmVmaW5lbWVudEF0PW59bC5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtsLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSAxNjpjb25zdCBDPXt9LFE9YVtjKytdO0MubW1yPSEhKDEmUSk7Qy50ZW1wbGF0ZT1RPj4xJjM7Qy5wYXR0ZXJuV2lkdGg9YVtjKytdO0MucGF0dGVybkhlaWdodD1hW2MrK107Qy5tYXhQYXR0ZXJuSW5kZXg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7cz1bQyxpLm51bWJlcixhLGMscl07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IEU9e307RS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz1XdDtjb25zdCB1PWFbYysrXTtFLm1tcj0hISgxJnUpO0UudGVtcGxhdGU9dT4+MSYzO0UuZW5hYmxlU2tpcD0hISg4JnUpO0UuY29tYmluYXRpb25PcGVyYXRvcj11Pj40Jjc7RS5kZWZhdWx0UGl4ZWxWYWx1ZT11Pj43JjE7RS5ncmlkV2lkdGg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkSGVpZ2h0PXJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZE9mZnNldFg9NDI5NDk2NzI5NSZyZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRPZmZzZXRZPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkVmVjdG9yWD1yZWFkVWludDE2KGEsYyk7Yys9MjtFLmdyaWRWZWN0b3JZPXJlYWRVaW50MTYoYSxjKTtjKz0yO3M9W0UsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDM4OmNhc2UgMzk6Y29uc3QgZD17fTtkLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPVd0O2NvbnN0IGY9YVtjKytdO2QubW1yPSEhKDEmZik7ZC50ZW1wbGF0ZT1mPj4xJjM7ZC5wcmVkaWN0aW9uPSEhKDgmZik7aWYoIWQubW1yKXtnPTA9PT1kLnRlbXBsYXRlPzQ6MTtuPVtdO2ZvcihvPTA7bzxnO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWQuYXQ9bn1zPVtkLGEsYyxyXTticmVhaztjYXNlIDQ4OmNvbnN0IHA9e3dpZHRoOnJlYWRVaW50MzIoYSxjKSxoZWlnaHQ6cmVhZFVpbnQzMihhLGMrNCkscmVzb2x1dGlvblg6cmVhZFVpbnQzMihhLGMrOCkscmVzb2x1dGlvblk6cmVhZFVpbnQzMihhLGMrMTIpfTs0Mjk0OTY3Mjk1PT09cC5oZWlnaHQmJmRlbGV0ZSBwLmhlaWdodDtjb25zdCBtPWFbYysxNl07cmVhZFVpbnQxNihhLGMrMTcpO3AubG9zc2xlc3M9ISEoMSZtKTtwLnJlZmluZW1lbnQ9ISEoMiZtKTtwLmRlZmF1bHRQaXhlbFZhbHVlPW0+PjImMTtwLmNvbWJpbmF0aW9uT3BlcmF0b3I9bT4+MyYzO3AucmVxdWlyZXNCdWZmZXI9ISEoMzImbSk7cC5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU9ISEoNjQmbSk7cz1bcF07YnJlYWs7Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA2MjpicmVhaztjYXNlIDUzOnM9W2kubnVtYmVyLGEsYyxyXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzZWdtZW50IHR5cGUgJHtpLnR5cGVOYW1lfSgke2kudHlwZX0pIGlzIG5vdCBpbXBsZW1lbnRlZGApfWNvbnN0IGw9Im9uIitpLnR5cGVOYW1lO2wgaW4gdCYmdFtsXS5hcHBseSh0LHMpfWZ1bmN0aW9uIHByb2Nlc3NTZWdtZW50cyhlLHQpe2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylwcm9jZXNzU2VnbWVudChlW2ldLHQpfWNsYXNzIFNpbXBsZVNlZ21lbnRWaXNpdG9ye29uUGFnZUluZm9ybWF0aW9uKGUpe3RoaXMuY3VycmVudFBhZ2VJbmZvPWU7Y29uc3QgdD1lLndpZHRoKzc+PjMsaT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCplLmhlaWdodCk7ZS5kZWZhdWx0UGl4ZWxWYWx1ZSYmaS5maWxsKDI1NSk7dGhpcy5idWZmZXI9aX1kcmF3Qml0bWFwKGUsdCl7Y29uc3QgaT10aGlzLmN1cnJlbnRQYWdlSW5mbyxhPWUud2lkdGgscj1lLmhlaWdodCxzPWkud2lkdGgrNz4+MyxuPWkuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlP2UuY29tYmluYXRpb25PcGVyYXRvcjppLmNvbWJpbmF0aW9uT3BlcmF0b3Isbz10aGlzLmJ1ZmZlcixnPTEyOD4+KDcmZS54KTtsZXQgYyxsLGgsQyxRPWUueSpzKyhlLng+PjMpO3N3aXRjaChuKXtjYXNlIDA6Zm9yKGM9MDtjPHI7YysrKXtoPWc7Qz1RO2ZvcihsPTA7bDxhO2wrKyl7dFtjXVtsXSYmKG9bQ118PWgpO2g+Pj0xO2lmKCFoKXtoPTEyODtDKyt9fVErPXN9YnJlYWs7Y2FzZSAyOmZvcihjPTA7YzxyO2MrKyl7aD1nO0M9UTtmb3IobD0wO2w8YTtsKyspe3RbY11bbF0mJihvW0NdXj1oKTtoPj49MTtpZighaCl7aD0xMjg7QysrfX1RKz1zfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7bn0gaXMgbm90IHN1cHBvcnRlZGApfX1vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oZSx0LGksYSl7Y29uc3Qgcj1lLmluZm8scz1uZXcgRGVjb2RpbmdDb250ZXh0KHQsaSxhKSxuPWRlY29kZUJpdG1hcChlLm1tcixyLndpZHRoLHIuaGVpZ2h0LGUudGVtcGxhdGUsZS5wcmVkaWN0aW9uLG51bGwsZS5hdCxzKTt0aGlzLmRyYXdCaXRtYXAocixuKX1vbkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25TeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzKXtsZXQgbixvO2lmKGUuaHVmZm1hbil7bj1mdW5jdGlvbiBnZXRTeW1ib2xEaWN0aW9uYXJ5SHVmZm1hblRhYmxlcyhlLHQsaSl7bGV0IGEscixzLG4sbz0wO3N3aXRjaChlLmh1ZmZtYW5ESFNlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOmE9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5ESFNlbGVjdG9yKzQpO2JyZWFrO2Nhc2UgMzphPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBESCBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EV1NlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOnI9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EV1NlbGVjdG9yKzIpO2JyZWFrO2Nhc2UgMzpyPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVyBzZWxlY3RvciIpfWlmKGUuYml0bWFwU2l6ZVNlbGVjdG9yKXtzPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrfWVsc2Ugcz1nZXRTdGFuZGFyZFRhYmxlKDEpO249ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yP2dldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk6Z2V0U3RhbmRhcmRUYWJsZSgxKTtyZXR1cm57dGFibGVEZWx0YUhlaWdodDphLHRhYmxlRGVsdGFXaWR0aDpyLHRhYmxlQml0bWFwU2l6ZTpzLHRhYmxlQWdncmVnYXRlSW5zdGFuY2VzOm59fShlLGksdGhpcy5jdXN0b21UYWJsZXMpO289bmV3IFJlYWRlcihhLHIscyl9bGV0IGc9dGhpcy5zeW1ib2xzO2d8fCh0aGlzLnN5bWJvbHM9Zz17fSk7Y29uc3QgYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bmV3IERlY29kaW5nQ29udGV4dChhLHIscyk7Z1t0XT1mdW5jdGlvbiBkZWNvZGVTeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJzeW1ib2wgcmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IEM9W107bGV0IFE9MCxFPWxvZzIoaS5sZW5ndGgrYSk7Y29uc3QgdT1sLmRlY29kZXIsZD1sLmNvbnRleHRDYWNoZTtsZXQgZixwO2lmKGUpe2Y9Z2V0U3RhbmRhcmRUYWJsZSgxKTtwPVtdO0U9TWF0aC5tYXgoRSwxKX1mb3IoO0MubGVuZ3RoPGE7KXtRKz1lP3MudGFibGVEZWx0YUhlaWdodC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURIIix1KTtsZXQgYT0wLHI9MDtjb25zdCBmPWU/cC5sZW5ndGg6MDtmb3IoOzspe2NvbnN0IGY9ZT9zLnRhYmxlRGVsdGFXaWR0aC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURXIix1KTtpZihudWxsPT09ZilicmVhazthKz1mO3IrPWE7bGV0IG07aWYodCl7Y29uc3Qgcj1kZWNvZGVJbnRlZ2VyKGQsIklBQUkiLHUpO2lmKHI+MSltPWRlY29kZVRleHRSZWdpb24oZSx0LGEsUSwwLHIsMSxpLmNvbmNhdChDKSxFLDAsMCwxLDAscyxnLGMsbCwwLGgpO2Vsc2V7Y29uc3QgZT1kZWNvZGVJQUlEKGQsdSxFKSx0PWRlY29kZUludGVnZXIoZCwiSUFSRFgiLHUpLHI9ZGVjb2RlSW50ZWdlcihkLCJJQVJEWSIsdSk7bT1kZWNvZGVSZWZpbmVtZW50KGEsUSxnLGU8aS5sZW5ndGg/aVtlXTpDW2UtaS5sZW5ndGhdLHQsciwhMSxjLGwpfUMucHVzaChtKX1lbHNlIGlmKGUpcC5wdXNoKGEpO2Vsc2V7bT1kZWNvZGVCaXRtYXAoITEsYSxRLG4sITEsbnVsbCxvLGwpO0MucHVzaChtKX19aWYoZSYmIXQpe2NvbnN0IGU9cy50YWJsZUJpdG1hcFNpemUuZGVjb2RlKGgpO2guYnl0ZUFsaWduKCk7bGV0IHQ7aWYoMD09PWUpdD1yZWFkVW5jb21wcmVzc2VkQml0bWFwKGgscixRKTtlbHNle2NvbnN0IGk9aC5lbmQsYT1oLnBvc2l0aW9uK2U7aC5lbmQ9YTt0PWRlY29kZU1NUkJpdG1hcChoLHIsUSwhMSk7aC5lbmQ9aTtoLnBvc2l0aW9uPWF9Y29uc3QgaT1wLmxlbmd0aDtpZihmPT09aS0xKUMucHVzaCh0KTtlbHNle2xldCBlLGEscixzLG4sbz0wO2ZvcihlPWY7ZTxpO2UrKyl7cz1wW2VdO3I9bytzO249W107Zm9yKGE9MDthPFE7YSsrKW4ucHVzaCh0W2FdLnN1YmFycmF5KG8scikpO0MucHVzaChuKTtvPXJ9fX19Y29uc3QgbT1bXSx5PVtdO2xldCB3LGIsRD0hMTtjb25zdCBTPWkubGVuZ3RoK2E7Zm9yKDt5Lmxlbmd0aDxTOyl7bGV0IHQ9ZT9mLmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBRVgiLHUpO2Zvcig7dC0tOyl5LnB1c2goRCk7RD0hRH1mb3Iodz0wLGI9aS5sZW5ndGg7dzxiO3crKyl5W3ddJiZtLnB1c2goaVt3XSk7Zm9yKGxldCBlPTA7ZTxhO3crKyxlKyspeVt3XSYmbS5wdXNoKENbZV0pO3JldHVybiBtfShlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LGMsZS5udW1iZXJPZk5ld1N5bWJvbHMsZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scyxuLGUudGVtcGxhdGUsZS5hdCxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxsLG8pfW9uSW1tZWRpYXRlVGV4dFJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9ZS5pbmZvO2xldCBuLG87Y29uc3QgZz10aGlzLnN5bWJvbHMsYz1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bG9nMihjLmxlbmd0aCk7aWYoZS5odWZmbWFuKXtvPW5ldyBSZWFkZXIoaSxhLHIpO249ZnVuY3Rpb24gZ2V0VGV4dFJlZ2lvbkh1ZmZtYW5UYWJsZXMoZSx0LGksYSxyKXtjb25zdCBzPVtdO2ZvcihsZXQgZT0wO2U8PTM0O2UrKyl7Y29uc3QgdD1yLnJlYWRCaXRzKDQpO3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSl9Y29uc3Qgbj1uZXcgSHVmZm1hblRhYmxlKHMsITEpO3MubGVuZ3RoPTA7Zm9yKGxldCBlPTA7ZTxhOyl7Y29uc3QgdD1uLmRlY29kZShyKTtpZih0Pj0zMil7bGV0IGksYSxuO3N3aXRjaCh0KXtjYXNlIDMyOmlmKDA9PT1lKXRocm93IG5ldyBKYmlnMkVycm9yKCJubyBwcmV2aW91cyB2YWx1ZSBpbiBzeW1ib2wgSUQgdGFibGUiKTthPXIucmVhZEJpdHMoMikrMztpPXNbZS0xXS5wcmVmaXhMZW5ndGg7YnJlYWs7Y2FzZSAzMzphPXIucmVhZEJpdHMoMykrMztpPTA7YnJlYWs7Y2FzZSAzNDphPXIucmVhZEJpdHMoNykrMTE7aT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgY29kZSBsZW5ndGggaW4gc3ltYm9sIElEIHRhYmxlIil9Zm9yKG49MDtuPGE7bisrKXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLGksMCwwXSkpO2UrK319ZWxzZXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpO2UrK319ci5ieXRlQWxpZ24oKTtjb25zdCBvPW5ldyBIdWZmbWFuVGFibGUocywhMSk7bGV0IGcsYyxsLGg9MDtzd2l0Y2goZS5odWZmbWFuRlMpe2Nhc2UgMDpjYXNlIDE6Zz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkZTKzYpO2JyZWFrO2Nhc2UgMzpnPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBGUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EUyl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Yz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRTKzgpO2JyZWFrO2Nhc2UgMzpjPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EVCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6bD1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRUKzExKTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUoaCx0LGkpO2grKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFQgc2VsZWN0b3IiKX1pZihlLnJlZmluZW1lbnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm57c3ltYm9sSURUYWJsZTpvLHRhYmxlRmlyc3RTOmcsdGFibGVEZWx0YVM6Yyx0YWJsZURlbHRhVDpsfX0oZSx0LHRoaXMuY3VzdG9tVGFibGVzLGMubGVuZ3RoLG8pfWNvbnN0IGg9bmV3IERlY29kaW5nQ29udGV4dChpLGEsciksQz1kZWNvZGVUZXh0UmVnaW9uKGUuaHVmZm1hbixlLnJlZmluZW1lbnQscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMsZS5zdHJpcFNpemUsYyxsLGUudHJhbnNwb3NlZCxlLmRzT2Zmc2V0LGUucmVmZXJlbmNlQ29ybmVyLGUuY29tYmluYXRpb25PcGVyYXRvcixuLGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGgsZS5sb2dTdHJpcFNpemUsbyk7dGhpcy5kcmF3Qml0bWFwKHMsQyl9b25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlVGV4dFJlZ2lvbiguLi5hcmd1bWVudHMpfW9uUGF0dGVybkRpY3Rpb25hcnkoZSx0LGksYSxyKXtsZXQgcz10aGlzLnBhdHRlcm5zO3N8fCh0aGlzLnBhdHRlcm5zPXM9e30pO2NvbnN0IG49bmV3IERlY29kaW5nQ29udGV4dChpLGEscik7c1t0XT1mdW5jdGlvbiBkZWNvZGVQYXR0ZXJuRGljdGlvbmFyeShlLHQsaSxhLHIscyl7Y29uc3Qgbj1bXTtpZighZSl7bi5wdXNoKHt4Oi10LHk6MH0pOzA9PT1yJiZuLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3Qgbz1kZWNvZGVCaXRtYXAoZSwoYSsxKSp0LGksciwhMSxudWxsLG4scyksZz1bXTtmb3IobGV0IGU9MDtlPD1hO2UrKyl7Y29uc3QgYT1bXSxyPXQqZSxzPXIrdDtmb3IobGV0IGU9MDtlPGk7ZSsrKWEucHVzaChvW2VdLnN1YmFycmF5KHIscykpO2cucHVzaChhKX1yZXR1cm4gZ30oZS5tbXIsZS5wYXR0ZXJuV2lkdGgsZS5wYXR0ZXJuSGVpZ2h0LGUubWF4UGF0dGVybkluZGV4LGUudGVtcGxhdGUsbil9b25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5wYXR0ZXJuc1t0WzBdXSxuPWUuaW5mbyxvPW5ldyBEZWNvZGluZ0NvbnRleHQoaSxhLHIpLGc9ZnVuY3Rpb24gZGVjb2RlSGFsZnRvbmVSZWdpb24oZSx0LGksYSxyLHMsbixvLGcsYyxsLGgsQyxRLEUpe2lmKG4pdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNraXAgaXMgbm90IHN1cHBvcnRlZCIpO2lmKDAhPT1vKXRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAiJHtvfSIgaXMgbm90IHN1cHBvcnRlZCBpbiBoYWxmdG9uZSByZWdpb25gKTtjb25zdCB1PVtdO2xldCBkLGYscDtmb3IoZD0wO2Q8cjtkKyspe3A9bmV3IFVpbnQ4QXJyYXkoYSk7aWYocylmb3IoZj0wO2Y8YTtmKyspcFtmXT1zO3UucHVzaChwKX1jb25zdCBtPXQubGVuZ3RoLHk9dFswXSx3PXlbMF0ubGVuZ3RoLGI9eS5sZW5ndGgsRD1sb2cyKG0pLFM9W107aWYoIWUpe1MucHVzaCh7eDppPD0xPzM6Mix5Oi0xfSk7MD09PWkmJlMucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBrPVtdO2xldCBSLE4sRyxNLFUseCxMLEgsSix2LFk7ZSYmKFI9bmV3IFJlYWRlcihFLmRhdGEsRS5zdGFydCxFLmVuZCkpO2ZvcihkPUQtMTtkPj0wO2QtLSl7Tj1lP2RlY29kZU1NUkJpdG1hcChSLGcsYywhMCk6ZGVjb2RlQml0bWFwKCExLGcsYyxpLCExLG51bGwsUyxFKTtrW2RdPU59Zm9yKEc9MDtHPGM7RysrKWZvcihNPTA7TTxnO00rKyl7VT0wO3g9MDtmb3IoZj1ELTE7Zj49MDtmLS0pe1VePWtbZl1bR11bTV07eHw9VTw8Zn1MPXRbeF07SD1sK0cqUStNKkM+Pjg7Sj1oK0cqQy1NKlE+Pjg7aWYoSD49MCYmSCt3PD1hJiZKPj0wJiZKK2I8PXIpZm9yKGQ9MDtkPGI7ZCsrKXtZPXVbSitkXTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKVlbSCtmXXw9dltmXX1lbHNle2xldCBlLHQ7Zm9yKGQ9MDtkPGI7ZCsrKXt0PUorZDtpZighKHQ8MHx8dD49cikpe1k9dVt0XTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKXtlPUgrZjtlPj0wJiZlPGEmJihZW2VdfD12W2ZdKX19fX19cmV0dXJuIHV9KGUubW1yLHMsZS50ZW1wbGF0ZSxuLndpZHRoLG4uaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5lbmFibGVTa2lwLGUuY29tYmluYXRpb25PcGVyYXRvcixlLmdyaWRXaWR0aCxlLmdyaWRIZWlnaHQsZS5ncmlkT2Zmc2V0WCxlLmdyaWRPZmZzZXRZLGUuZ3JpZFZlY3RvclgsZS5ncmlkVmVjdG9yWSxvKTt0aGlzLmRyYXdCaXRtYXAobixnKX1vbkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oLi4uYXJndW1lbnRzKX1vblRhYmxlcyhlLHQsaSxhKXtsZXQgcj10aGlzLmN1c3RvbVRhYmxlcztyfHwodGhpcy5jdXN0b21UYWJsZXM9cj17fSk7cltlXT1mdW5jdGlvbiBkZWNvZGVUYWJsZXNTZWdtZW50KGUsdCxpKXtjb25zdCBhPWVbdF0scj00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzEpLHM9NDI5NDk2NzI5NSZyZWFkVWludDMyKGUsdCs1KSxuPW5ldyBSZWFkZXIoZSx0KzksaSksbz0xKyhhPj4xJjcpLGc9MSsoYT4+NCY3KSxjPVtdO2xldCBsLGgsQz1yO2Rve2w9bi5yZWFkQml0cyhvKTtoPW4ucmVhZEJpdHMoZyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbQyxsLGgsMF0pKTtDKz0xPDxofXdoaWxlKEM8cyk7bD1uLnJlYWRCaXRzKG8pO2MucHVzaChuZXcgSHVmZm1hbkxpbmUoW3ItMSxsLDMyLDAsImxvd2VyIl0pKTtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbcyxsLDMyLDBdKSk7aWYoMSZhKXtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbbCwwXSkpfXJldHVybiBuZXcgSHVmZm1hblRhYmxlKGMsITEpfSh0LGksYSl9fWNsYXNzIEh1ZmZtYW5MaW5le2NvbnN0cnVjdG9yKGUpe2lmKDI9PT1lLmxlbmd0aCl7dGhpcy5pc09PQj0hMDt0aGlzLnJhbmdlTG93PTA7dGhpcy5wcmVmaXhMZW5ndGg9ZVswXTt0aGlzLnJhbmdlTGVuZ3RoPTA7dGhpcy5wcmVmaXhDb2RlPWVbMV07dGhpcy5pc0xvd2VyUmFuZ2U9ITF9ZWxzZXt0aGlzLmlzT09CPSExO3RoaXMucmFuZ2VMb3c9ZVswXTt0aGlzLnByZWZpeExlbmd0aD1lWzFdO3RoaXMucmFuZ2VMZW5ndGg9ZVsyXTt0aGlzLnByZWZpeENvZGU9ZVszXTt0aGlzLmlzTG93ZXJSYW5nZT0ibG93ZXIiPT09ZVs0XX19fWNsYXNzIEh1ZmZtYW5UcmVlTm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNoaWxkcmVuPVtdO2lmKGUpe3RoaXMuaXNMZWFmPSEwO3RoaXMucmFuZ2VMZW5ndGg9ZS5yYW5nZUxlbmd0aDt0aGlzLnJhbmdlTG93PWUucmFuZ2VMb3c7dGhpcy5pc0xvd2VyUmFuZ2U9ZS5pc0xvd2VyUmFuZ2U7dGhpcy5pc09PQj1lLmlzT09CfWVsc2UgdGhpcy5pc0xlYWY9ITF9YnVpbGRUcmVlKGUsdCl7Y29uc3QgaT1lLnByZWZpeENvZGU+PnQmMTtpZih0PD0wKXRoaXMuY2hpbGRyZW5baV09bmV3IEh1ZmZtYW5UcmVlTm9kZShlKTtlbHNle2xldCBhPXRoaXMuY2hpbGRyZW5baV07YXx8KHRoaXMuY2hpbGRyZW5baV09YT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpKTthLmJ1aWxkVHJlZShlLHQtMSl9fWRlY29kZU5vZGUoZSl7aWYodGhpcy5pc0xlYWYpe2lmKHRoaXMuaXNPT0IpcmV0dXJuIG51bGw7Y29uc3QgdD1lLnJlYWRCaXRzKHRoaXMucmFuZ2VMZW5ndGgpO3JldHVybiB0aGlzLnJhbmdlTG93Kyh0aGlzLmlzTG93ZXJSYW5nZT8tdDp0KX1jb25zdCB0PXRoaXMuY2hpbGRyZW5bZS5yZWFkQml0KCldO2lmKCF0KXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gZGF0YSIpO3JldHVybiB0LmRlY29kZU5vZGUoZSl9fWNsYXNzIEh1ZmZtYW5UYWJsZXtjb25zdHJ1Y3RvcihlLHQpe3R8fHRoaXMuYXNzaWduUHJlZml4Q29kZXMoZSk7dGhpcy5yb290Tm9kZT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1lW3RdO2kucHJlZml4TGVuZ3RoPjAmJnRoaXMucm9vdE5vZGUuYnVpbGRUcmVlKGksaS5wcmVmaXhMZW5ndGgtMSl9fWRlY29kZShlKXtyZXR1cm4gdGhpcy5yb290Tm9kZS5kZWNvZGVOb2RlKGUpfWFzc2lnblByZWZpeENvZGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MDtmb3IobGV0IGE9MDthPHQ7YSsrKWk9TWF0aC5tYXgoaSxlW2FdLnByZWZpeExlbmd0aCk7Y29uc3QgYT1uZXcgVWludDMyQXJyYXkoaSsxKTtmb3IobGV0IGk9MDtpPHQ7aSsrKWFbZVtpXS5wcmVmaXhMZW5ndGhdKys7bGV0IHIscyxuLG89MSxnPTA7YVswXT0wO2Zvcig7bzw9aTspe2c9ZythW28tMV08PDE7cj1nO3M9MDtmb3IoO3M8dDspe249ZVtzXTtpZihuLnByZWZpeExlbmd0aD09PW8pe24ucHJlZml4Q29kZT1yO3IrK31zKyt9bysrfX19Y29uc3QganQ9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxpPWp0W2VdO2lmKGkpcmV0dXJuIGk7c3dpdGNoKGUpe2Nhc2UgMTp0PVtbMCwxLDQsMF0sWzE2LDIsOCwyXSxbMjcyLDMsMTYsNl0sWzY1ODA4LDMsMzIsN11dO2JyZWFrO2Nhc2UgMjp0PVtbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFs3NSw2LDMyLDYyXSxbNiw2M11dO2JyZWFrO2Nhc2UgMzp0PVtbLTI1Niw4LDgsMjU0XSxbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFstMjU3LDgsMzIsMjU1LCJsb3dlciJdLFs3NSw3LDMyLDEyNl0sWzYsNjJdXTticmVhaztjYXNlIDQ6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbNzYsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgNTp0PVtbLTI1NSw3LDgsMTI2XSxbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFstMjU2LDcsMzIsMTI3LCJsb3dlciJdLFs3Niw2LDMyLDYyXV07YnJlYWs7Y2FzZSA2OnQ9W1stMjA0OCw1LDEwLDI4XSxbLTEwMjQsNCw5LDhdLFstNTEyLDQsOCw5XSxbLTI1Niw0LDcsMTBdLFstMTI4LDUsNiwyOV0sWy02NCw1LDUsMzBdLFstMzIsNCw1LDExXSxbMCwyLDcsMF0sWzEyOCwzLDcsMl0sWzI1NiwzLDgsM10sWzUxMiw0LDksMTJdLFsxMDI0LDQsMTAsMTNdLFstMjA0OSw2LDMyLDYyLCJsb3dlciJdLFsyMDQ4LDYsMzIsNjNdXTticmVhaztjYXNlIDc6dD1bWy0xMDI0LDQsOSw4XSxbLTUxMiwzLDgsMF0sWy0yNTYsNCw3LDldLFstMTI4LDUsNiwyNl0sWy02NCw1LDUsMjddLFstMzIsNCw1LDEwXSxbMCw0LDUsMTFdLFszMiw1LDUsMjhdLFs2NCw1LDYsMjldLFsxMjgsNCw3LDEyXSxbMjU2LDMsOCwxXSxbNTEyLDMsOSwyXSxbMTAyNCwzLDEwLDNdLFstMTAyNSw1LDMyLDMwLCJsb3dlciJdLFsyMDQ4LDUsMzIsMzFdXTticmVhaztjYXNlIDg6dD1bWy0xNSw4LDMsMjUyXSxbLTcsOSwxLDUwOF0sWy01LDgsMSwyNTNdLFstMyw5LDAsNTA5XSxbLTIsNywwLDEyNF0sWy0xLDQsMCwxMF0sWzAsMiwxLDBdLFsyLDUsMCwyNl0sWzMsNiwwLDU4XSxbNCwzLDQsNF0sWzIwLDYsMSw1OV0sWzIyLDQsNCwxMV0sWzM4LDQsNSwxMl0sWzcwLDUsNiwyN10sWzEzNCw1LDcsMjhdLFsyNjIsNiw3LDYwXSxbMzkwLDcsOCwxMjVdLFs2NDYsNiwxMCw2MV0sWy0xNiw5LDMyLDUxMCwibG93ZXIiXSxbMTY3MCw5LDMyLDUxMV0sWzIsMV1dO2JyZWFrO2Nhc2UgOTp0PVtbLTMxLDgsNCwyNTJdLFstMTUsOSwyLDUwOF0sWy0xMSw4LDIsMjUzXSxbLTcsOSwxLDUwOV0sWy01LDcsMSwxMjRdLFstMyw0LDEsMTBdLFstMSwzLDEsMl0sWzEsMywxLDNdLFszLDUsMSwyNl0sWzUsNiwxLDU4XSxbNywzLDUsNF0sWzM5LDYsMiw1OV0sWzQzLDQsNSwxMV0sWzc1LDQsNiwxMl0sWzEzOSw1LDcsMjddLFsyNjcsNSw4LDI4XSxbNTIzLDYsOCw2MF0sWzc3OSw3LDksMTI1XSxbMTI5MSw2LDExLDYxXSxbLTMyLDksMzIsNTEwLCJsb3dlciJdLFszMzM5LDksMzIsNTExXSxbMiwwXV07YnJlYWs7Y2FzZSAxMDp0PVtbLTIxLDcsNCwxMjJdLFstNSw4LDAsMjUyXSxbLTQsNywwLDEyM10sWy0zLDUsMCwyNF0sWy0yLDIsMiwwXSxbMiw1LDAsMjVdLFszLDYsMCw1NF0sWzQsNywwLDEyNF0sWzUsOCwwLDI1M10sWzYsMiw2LDFdLFs3MCw1LDUsMjZdLFsxMDIsNiw1LDU1XSxbMTM0LDYsNiw1Nl0sWzE5OCw2LDcsNTddLFszMjYsNiw4LDU4XSxbNTgyLDYsOSw1OV0sWzEwOTQsNiwxMCw2MF0sWzIxMTgsNywxMSwxMjVdLFstMjIsOCwzMiwyNTQsImxvd2VyIl0sWzQxNjYsOCwzMiwyNTVdLFsyLDJdXTticmVhaztjYXNlIDExOnQ9W1sxLDEsMCwwXSxbMiwyLDEsMl0sWzQsNCwwLDEyXSxbNSw0LDEsMTNdLFs3LDUsMSwyOF0sWzksNSwyLDI5XSxbMTMsNiwyLDYwXSxbMTcsNywyLDEyMl0sWzIxLDcsMywxMjNdLFsyOSw3LDQsMTI0XSxbNDUsNyw1LDEyNV0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDEyOnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywxLDZdLFs1LDUsMCwyOF0sWzYsNSwxLDI5XSxbOCw2LDEsNjBdLFsxMCw3LDAsMTIyXSxbMTEsNywxLDEyM10sWzEzLDcsMiwxMjRdLFsxNyw3LDMsMTI1XSxbMjUsNyw0LDEyNl0sWzQxLDgsNSwyNTRdLFs3Myw4LDMyLDI1NV1dO2JyZWFrO2Nhc2UgMTM6dD1bWzEsMSwwLDBdLFsyLDMsMCw0XSxbMyw0LDAsMTJdLFs0LDUsMCwyOF0sWzUsNCwxLDEzXSxbNywzLDMsNV0sWzE1LDYsMSw1OF0sWzE3LDYsMiw1OV0sWzIxLDYsMyw2MF0sWzI5LDYsNCw2MV0sWzQ1LDYsNSw2Ml0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDE0OnQ9W1stMiwzLDAsNF0sWy0xLDMsMCw1XSxbMCwxLDAsMF0sWzEsMywwLDZdLFsyLDMsMCw3XV07YnJlYWs7Y2FzZSAxNTp0PVtbLTI0LDcsNCwxMjRdLFstOCw2LDIsNjBdLFstNCw1LDEsMjhdLFstMiw0LDAsMTJdLFstMSwzLDAsNF0sWzAsMSwwLDBdLFsxLDMsMCw1XSxbMiw0LDAsMTNdLFszLDUsMSwyOV0sWzUsNiwyLDYxXSxbOSw3LDQsMTI1XSxbLTI1LDcsMzIsMTI2LCJsb3dlciJdLFsyNSw3LDMyLDEyN11dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHN0YW5kYXJkIHRhYmxlIEIuJHtlfSBkb2VzIG5vdCBleGlzdGApfWZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl0W2VdPW5ldyBIdWZmbWFuTGluZSh0W2VdKTtpPW5ldyBIdWZmbWFuVGFibGUodCwhMCk7anRbZV09aTtyZXR1cm4gaX1jbGFzcyBSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuZGF0YT1lO3RoaXMuc3RhcnQ9dDt0aGlzLmVuZD1pO3RoaXMucG9zaXRpb249dDt0aGlzLnNoaWZ0PS0xO3RoaXMuY3VycmVudEJ5dGU9MH1yZWFkQml0KCl7aWYodGhpcy5zaGlmdDwwKXtpZih0aGlzLnBvc2l0aW9uPj10aGlzLmVuZCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiZW5kIG9mIGRhdGEgd2hpbGUgcmVhZGluZyBiaXQiKTt0aGlzLmN1cnJlbnRCeXRlPXRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdO3RoaXMuc2hpZnQ9N31jb25zdCBlPXRoaXMuY3VycmVudEJ5dGU+PnRoaXMuc2hpZnQmMTt0aGlzLnNoaWZ0LS07cmV0dXJuIGV9cmVhZEJpdHMoZSl7bGV0IHQsaT0wO2Zvcih0PWUtMTt0Pj0wO3QtLSlpfD10aGlzLnJlYWRCaXQoKTw8dDtyZXR1cm4gaX1ieXRlQWxpZ24oKXt0aGlzLnNoaWZ0PS0xfW5leHQoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5lbmQ/LTE6dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK119fWZ1bmN0aW9uIGdldEN1c3RvbUh1ZmZtYW5UYWJsZShlLHQsaSl7bGV0IGE9MDtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9aVt0W3JdXTtpZihzKXtpZihlPT09YSlyZXR1cm4gczthKyt9fXRocm93IG5ldyBKYmlnMkVycm9yKCJjYW4ndCBmaW5kIGN1c3RvbSBIdWZmbWFuIHRhYmxlIil9ZnVuY3Rpb24gcmVhZFVuY29tcHJlc3NlZEJpdG1hcChlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO2EucHVzaChpKTtmb3IobGV0IGE9MDthPHQ7YSsrKWlbYV09ZS5yZWFkQml0KCk7ZS5ieXRlQWxpZ24oKX1yZXR1cm4gYX1mdW5jdGlvbiBkZWNvZGVNTVJCaXRtYXAoZSx0LGksYSl7Y29uc3Qgcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGUse0s6LTEsQ29sdW1uczp0LFJvd3M6aSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOmF9KSxzPVtdO2xldCBuLG89ITE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtzLnB1c2goZSk7bGV0IGk9LTE7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYoaTwwKXtuPXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1uKXtuPTA7bz0hMH1pPTd9ZVthXT1uPj5pJjE7aS0tfX1pZihhJiYhbyl7Y29uc3QgZT01O2ZvcihsZXQgdD0wO3Q8ZSYmLTEhPT1yLnJlYWROZXh0Q2hhcigpO3QrKyk7fXJldHVybiBzfWNsYXNzIEpiaWcySW1hZ2V7cGFyc2VDaHVua3MoZSl7cmV0dXJuIGZ1bmN0aW9uIHBhcnNlSmJpZzJDaHVua3MoZSl7Y29uc3QgdD1uZXcgU2ltcGxlU2VnbWVudFZpc2l0b3I7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV07cHJvY2Vzc1NlZ21lbnRzKHJlYWRTZWdtZW50cyh7fSxhLmRhdGEsYS5zdGFydCxhLmVuZCksdCl9cmV0dXJuIHQuYnVmZmVyfShlKX1wYXJzZShlKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZDogSmJpZzJJbWFnZS5wYXJzZSIpfX1jbGFzcyBKYmlnMlN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7Y29uc3QgdD1uZXcgSmJpZzJJbWFnZSxpPVtdO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKTtpLnB1c2goe2RhdGE6dCxzdGFydDowLGVuZDp0Lmxlbmd0aH0pfX1pLnB1c2goe2RhdGE6ZSxzdGFydDowLGVuZDplLmxlbmd0aH0pO2NvbnN0IGE9dC5wYXJzZUNodW5rcyhpKSxyPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cjtlKyspYVtlXV49MjU1O3RoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSBTOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIGs6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLGRlc3RQb3M6YT0wLHdpZHRoOnIsaGVpZ2h0OnN9KXtsZXQgbj0wO2NvbnN0IG89cipzKjMsZz1vPj4yLGM9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLHQsZyk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT00Mjc4MTkwMDgwfGU7aVthKzFdPWU+Pj4yNHx0PDw4fDQyNzgxOTAwODA7aVthKzJdPXQ+Pj4xNnxyPDwxNnw0Mjc4MTkwMDgwO2lbYSszXT1yPj4+OHw0Mjc4MTkwMDgwfWZvcihsZXQgcj00Km4scz10K287cjxzO3IrPTMpaVthKytdPWVbcl18ZVtyKzFdPDw4fGVbcisyXTw8MTZ8NDI3ODE5MDA4MH1lbHNle2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT0yNTV8ZTtpW2ErMV09ZTw8MjR8dD4+Pjh8MjU1O2lbYSsyXT10PDwxNnxyPj4+MTZ8MjU1O2lbYSszXT1yPDw4fDI1NX1mb3IobGV0IHI9NCpuLHM9dCtvO3I8cztyKz0zKWlbYSsrXT1lW3JdPDwyNHxlW3IrMV08PDE2fGVbcisyXTw8OHwyNTV9cmV0dXJue3NyY1Bvczp0K28sZGVzdFBvczphfX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLHdpZHRoOmEsaGVpZ2h0OnIsbm9uQmxhY2tDb2xvcjpzPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpuPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbZyxjXT1uP1tzLG9dOltvLHNdLGw9YT4+MyxoPTcmYSxDPWUubGVuZ3RoO2k9bmV3IFVpbnQzMkFycmF5KGkuYnVmZmVyKTtsZXQgUT0wO2ZvcihsZXQgYT0wO2E8cjthKyspe2Zvcihjb25zdCBhPXQrbDt0PGE7dCsrKXtjb25zdCBhPXQ8Qz9lW3RdOjI1NTtpW1ErK109MTI4JmE/YzpnO2lbUSsrXT02NCZhP2M6ZztpW1ErK109MzImYT9jOmc7aVtRKytdPTE2JmE/YzpnO2lbUSsrXT04JmE/YzpnO2lbUSsrXT00JmE/YzpnO2lbUSsrXT0yJmE/YzpnO2lbUSsrXT0xJmE/YzpnfWlmKDA9PT1oKWNvbnRpbnVlO2NvbnN0IGE9dDxDP2VbdCsrXToyNTU7Zm9yKGxldCBlPTA7ZTxoO2UrKylpW1ErK109YSYxPDw3LWU/YzpnfXJldHVybntzcmNQb3M6dCxkZXN0UG9zOlF9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IFh0PW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksVnQ9NDAxNyxadD03OTksX3Q9MzQwNix6dD0yMjc2LCR0PTE1NjcsQWk9Mzc4NCxlaT01NzkzLHRpPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgaSxhLHI9MCxzPTE2O2Zvcig7cz4wJiYhZVtzLTFdOylzLS07Y29uc3Qgbj1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxnPW5bMF07Zm9yKGk9MDtpPHM7aSsrKXtmb3IoYT0wO2E8ZVtpXTthKyspe2c9bi5wb3AoKTtnLmNoaWxkcmVuW2cuaW5kZXhdPXRbcl07Zm9yKDtnLmluZGV4PjA7KWc9bi5wb3AoKTtnLmluZGV4Kys7bi5wdXNoKGcpO2Zvcig7bi5sZW5ndGg8PWk7KXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99cisrfWlmKGkrMTxzKXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99fXJldHVybiBuWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxpKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCtpKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxpLGEscixzLG4sbyxnLGM9ITEpe2NvbnN0IGw9aS5tY3VzUGVyTGluZSxoPWkucHJvZ3Jlc3NpdmUsQz10O2xldCBRPTAsRT0wO2Z1bmN0aW9uIHJlYWRCaXQoKXtpZihFPjApe0UtLTtyZXR1cm4gUT4+RSYxfVE9ZVt0KytdO2lmKDI1NT09PVEpe2NvbnN0IGE9ZVt0KytdO2lmKGEpe2lmKDIyMD09PWEmJmMpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQrPTIpO3QrPTI7aWYoYT4wJiZhIT09aS5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixhKX1lbHNlIGlmKDIxNz09PWEpe2lmKGMpe2NvbnN0IGU9cCooOD09PWkucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKGkuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KFE8PDh8YSkudG9TdHJpbmcoMTYpfWApfX1FPTc7cmV0dXJuIFE+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IHU9MDtsZXQgZCxmPTA7bGV0IHA9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGksYSxyKXtjb25zdCBzPWklbDtwPShpL2x8MCkqZS52K2E7Y29uc3Qgbj1zKmUuaCtyO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHAsbikpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxpKXtwPWkvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3QgYT1pJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxwLGEpKX1jb25zdCBtPWEubGVuZ3RoO2xldCB5LHcsYixELFMsaztrPWg/MD09PXM/MD09PW8/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTw8ZztlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWF9OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGd9OjA9PT1vP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZih1PjApe3UtLTtyZXR1cm59bGV0IGk9cztjb25zdCBhPW47Zm9yKDtpPD1hOyl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHI9MTUmYSxzPWE+PjQ7aWYoMD09PXIpe2lmKHM8MTUpe3U9cmVjZWl2ZShzKSsoMTw8cyktMTticmVha31pKz0xNjtjb250aW51ZX1pKz1zO2NvbnN0IG49WHRbaV07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKHIpKigxPDxnKTtpKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgaT1zO2NvbnN0IGE9bjtsZXQgcixvLGM9MDtmb3IoO2k8PWE7KXtjb25zdCBhPXQrWHRbaV0scz1lLmJsb2NrRGF0YVthXTwwPy0xOjE7c3dpdGNoKGYpe2Nhc2UgMDpvPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cj0xNSZvO2M9bz4+NDtpZigwPT09cilpZihjPDE1KXt1PXJlY2VpdmUoYykrKDE8PGMpO2Y9NH1lbHNle2M9MTY7Zj0xfWVsc2V7aWYoMSE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtkPXJlY2VpdmVBbmRFeHRlbmQocik7Zj1jPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW2FdKWUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpO2Vsc2V7Yy0tOzA9PT1jJiYoZj0yPT09Zj8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9cyoocmVhZEJpdCgpPDxnKTtlbHNle2UuYmxvY2tEYXRhW2FdPWQ8PGc7Zj0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVthXSYmKGUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpKX1pKyt9aWYoND09PWYpe3UtLTswPT09dSYmKGY9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWE7bGV0IHI9MTtmb3IoO3I8NjQ7KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksYT0xNSZpLHM9aT4+NDtpZigwPT09YSl7aWYoczwxNSlicmVhaztyKz0xNjtjb250aW51ZX1yKz1zO2NvbnN0IG49WHRbcl07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKGEpO3IrK319O2xldCBSLE49MDtjb25zdCBHPTE9PT1tP2FbMF0uYmxvY2tzUGVyTGluZSphWzBdLmJsb2Nrc1BlckNvbHVtbjpsKmkubWN1c1BlckNvbHVtbjtsZXQgTSxVO2Zvcig7Tjw9Rzspe2NvbnN0IGk9cj9NYXRoLm1pbihHLU4scik6RztpZihpPjApe2Zvcih3PTA7dzxtO3crKylhW3ddLnByZWQ9MDt1PTA7aWYoMT09PW0pe3k9YVswXTtmb3IoUz0wO1M8aTtTKyspe2RlY29kZUJsb2NrKHksayxOKTtOKyt9fWVsc2UgZm9yKFM9MDtTPGk7UysrKXtmb3Iodz0wO3c8bTt3Kyspe3k9YVt3XTtNPXkuaDtVPXkudjtmb3IoYj0wO2I8VTtiKyspZm9yKEQ9MDtEPE07RCsrKWRlY29kZU1jdSh5LGssTixiLEQpfU4rK319RT0wO1I9ZmluZE5leHRGaWxlTWFya2VyKGUsdCk7aWYoIVIpYnJlYWs7aWYoUi5pbnZhbGlkKXt3YXJuKGBkZWNvZGVTY2FuIC0gJHtpPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUifSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7Ui5pbnZhbGlkfWApO3Q9Ui5vZmZzZXR9aWYoIShSLm1hcmtlcj49NjU0ODgmJlIubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1DfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsaSl7Y29uc3QgYT1lLnF1YW50aXphdGlvblRhYmxlLHI9ZS5ibG9ja0RhdGE7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkLGYscCxtLHksdztpZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe1E9clt0K2VdO0U9clt0K2UrMV07dT1yW3QrZSsyXTtkPXJbdCtlKzNdO2Y9clt0K2UrNF07cD1yW3QrZSs1XTttPXJbdCtlKzZdO3k9clt0K2UrN107USo9YVtlXTtpZihFfHV8ZHxmfHB8bXx5KXtFKj1hW2UrMV07dSo9YVtlKzJdO2QqPWFbZSszXTtmKj1hW2UrNF07cCo9YVtlKzVdO20qPWFbZSs2XTt5Kj1hW2UrN107cz1laSpRKzEyOD4+ODtuPWVpKmYrMTI4Pj44O289dTtnPW07Yz10aSooRS15KSsxMjg+Pjg7Qz10aSooRSt5KSsxMjg+Pjg7bD1kPDw0O2g9cDw8NDtzPXMrbisxPj4xO249cy1uO3c9bypBaStnKiR0KzEyOD4+ODtvPW8qJHQtZypBaSsxMjg+Pjg7Zz13O2M9YytoKzE+PjE7aD1jLWg7Qz1DK2wrMT4+MTtsPUMtbDtzPXMrZysxPj4xO2c9cy1nO249bitvKzE+PjE7bz1uLW87dz1jKnp0K0MqX3QrMjA0OD4+MTI7Yz1jKl90LUMqenQrMjA0OD4+MTI7Qz13O3c9bCpadCtoKlZ0KzIwNDg+PjEyO2w9bCpWdC1oKlp0KzIwNDg+PjEyO2g9dztpW2VdPXMrQztpW2UrN109cy1DO2lbZSsxXT1uK2g7aVtlKzZdPW4taDtpW2UrMl09bytsO2lbZSs1XT1vLWw7aVtlKzNdPWcrYztpW2UrNF09Zy1jfWVsc2V7dz1laSpRKzUxMj4+MTA7aVtlXT13O2lbZSsxXT13O2lbZSsyXT13O2lbZSszXT13O2lbZSs0XT13O2lbZSs1XT13O2lbZSs2XT13O2lbZSs3XT13fX1mb3IobGV0IGU9MDtlPDg7KytlKXtRPWlbZV07RT1pW2UrOF07dT1pW2UrMTZdO2Q9aVtlKzI0XTtmPWlbZSszMl07cD1pW2UrNDBdO209aVtlKzQ4XTt5PWlbZSs1Nl07aWYoRXx1fGR8ZnxwfG18eSl7cz1laSpRKzIwNDg+PjEyO249ZWkqZisyMDQ4Pj4xMjtvPXU7Zz1tO2M9dGkqKEUteSkrMjA0OD4+MTI7Qz10aSooRSt5KSsyMDQ4Pj4xMjtsPWQ7aD1wO3M9NDExMisocytuKzE+PjEpO249cy1uO3c9bypBaStnKiR0KzIwNDg+PjEyO289byokdC1nKkFpKzIwNDg+PjEyO2c9dztjPWMraCsxPj4xO2g9Yy1oO0M9QytsKzE+PjE7bD1DLWw7cz1zK2crMT4+MTtnPXMtZztuPW4rbysxPj4xO289bi1vO3c9Yyp6dCtDKl90KzIwNDg+PjEyO2M9YypfdC1DKnp0KzIwNDg+PjEyO0M9dzt3PWwqWnQraCpWdCsyMDQ4Pj4xMjtsPWwqVnQtaCpadCsyMDQ4Pj4xMjtoPXc7UT1zK0M7eT1zLUM7RT1uK2g7bT1uLWg7dT1vK2w7cD1vLWw7ZD1nK2M7Zj1nLWM7UTwxNj9RPTA6UT49NDA4MD9RPTI1NTpRPj49NDtFPDE2P0U9MDpFPj00MDgwP0U9MjU1OkU+Pj00O3U8MTY/dT0wOnU+PTQwODA/dT0yNTU6dT4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7bTwxNj9tPTA6bT49NDA4MD9tPTI1NTptPj49NDt5PDE2P3k9MDp5Pj00MDgwP3k9MjU1Onk+Pj00O3JbdCtlXT1RO3JbdCtlKzhdPUU7clt0K2UrMTZdPXU7clt0K2UrMjRdPWQ7clt0K2UrMzJdPWY7clt0K2UrNDBdPXA7clt0K2UrNDhdPW07clt0K2UrNTZdPXl9ZWxzZXt3PWVpKlErODE5Mj4+MTQ7dz13PC0yMDQwPzA6dz49MjAyND8yNTU6dysyMDU2Pj40O3JbdCtlXT13O3JbdCtlKzhdPXc7clt0K2UrMTZdPXc7clt0K2UrMjRdPXc7clt0K2UrMzJdPXc7clt0K2UrNDBdPXc7clt0K2UrNDhdPXc7clt0K2UrNTZdPXd9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBpPXQuYmxvY2tzUGVyTGluZSxhPXQuYmxvY2tzUGVyQ29sdW1uLHI9bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8YTtlKyspZm9yKGxldCBhPTA7YTxpO2ErKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLGEpLHIpfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGk9dCl7Y29uc3QgYT1lLmxlbmd0aC0xO2xldCByPWk8dD9pOnQ7aWYodD49YSlyZXR1cm4gbnVsbDtjb25zdCBzPXJlYWRVaW50MTYoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG49cmVhZFVpbnQxNihlLHIpO2Zvcig7IShuPj02NTQ3MiYmbjw9NjU1MzQpOyl7aWYoKytyPj1hKXJldHVybiBudWxsO249cmVhZFVpbnQxNihlLHIpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpuLG9mZnNldDpyfX1mdW5jdGlvbiBwcmVwYXJlQ29tcG9uZW50cyhlKXtjb25zdCB0PU1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgvZS5tYXhIKSxpPU1hdGguY2VpbChlLnNjYW5MaW5lcy84L2UubWF4Vik7Zm9yKGNvbnN0IGEgb2YgZS5jb21wb25lbnRzKXtjb25zdCByPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84KSphLmgvZS5tYXhIKSxzPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zY2FuTGluZXMvOCkqYS52L2UubWF4Viksbj10KmEuaCxvPTY0KihpKmEudikqKG4rMSk7YS5ibG9ja0RhdGE9bmV3IEludDE2QXJyYXkobyk7YS5ibG9ja3NQZXJMaW5lPXI7YS5ibG9ja3NQZXJDb2x1bW49c31lLm1jdXNQZXJMaW5lPXQ7ZS5tY3VzUGVyQ29sdW1uPWl9ZnVuY3Rpb24gcmVhZERhdGFCbG9jayhlLHQpe2NvbnN0IGk9cmVhZFVpbnQxNihlLHQpO2xldCBhPSh0Kz0yKStpLTI7Y29uc3Qgcj1maW5kTmV4dEZpbGVNYXJrZXIoZSxhLHQpO2lmKHI/LmludmFsaWQpe3dhcm4oInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIityLmludmFsaWQpO2E9ci5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KHQsYSk7cmV0dXJue2FwcERhdGE6cyxuZXdPZmZzZXQ6dCs9cy5sZW5ndGh9fWZ1bmN0aW9uIHNraXBEYXRhKGUsdCl7Y29uc3QgaT1yZWFkVWludDE2KGUsdCksYT0odCs9MikraS0yLHI9ZmluZE5leHRGaWxlTWFya2VyKGUsYSx0KTtyZXR1cm4gcj8uaW52YWxpZD9yLm9mZnNldDphfWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1zdGF0aWMgY2FuVXNlSW1hZ2VEZWNvZGVyKGUsdD0tMSl7bGV0IGk9MCxhPW51bGwscj1yZWFkVWludDE2KGUsaSk7aSs9MjtpZig2NTQ5NiE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiU09JIG5vdCBmb3VuZCIpO3I9cmVhZFVpbnQxNihlLGkpO2krPTI7QTpmb3IoOzY1NDk3IT09cjspe3N3aXRjaChyKXtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDphPWVbaSs3XTticmVhayBBO2Nhc2UgNjU1MzU6MjU1IT09ZVtpXSYmaS0tfWk9c2tpcERhdGEoZSxpKTtyPXJlYWRVaW50MTYoZSxpKTtpKz0yfXJldHVybiA0IT09YSYmKDMhPT1hfHwwIT09dCl9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2xldCBpLGEscj0wLHM9bnVsbCxuPW51bGwsbz0wO2NvbnN0IGc9W10sYz1bXSxsPVtdO2xldCBoPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09aCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7aD1yZWFkVWludDE2KGUscik7cis9MjtBOmZvcig7NjU0OTchPT1oOyl7bGV0IEMsUSxFO3N3aXRjaChoKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3R7YXBwRGF0YTp1LG5ld09mZnNldDpkfT1yZWFkRGF0YUJsb2NrKGUscik7cj1kOzY1NTA0PT09aCYmNzQ9PT11WzBdJiY3MD09PXVbMV0mJjczPT09dVsyXSYmNzA9PT11WzNdJiYwPT09dVs0XSYmKHM9e3ZlcnNpb246e21ham9yOnVbNV0sbWlub3I6dVs2XX0sZGVuc2l0eVVuaXRzOnVbN10seERlbnNpdHk6dVs4XTw8OHx1WzldLHlEZW5zaXR5OnVbMTBdPDw4fHVbMTFdLHRodW1iV2lkdGg6dVsxMl0sdGh1bWJIZWlnaHQ6dVsxM10sdGh1bWJEYXRhOnUuc3ViYXJyYXkoMTQsMTQrMyp1WzEyXSp1WzEzXSl9KTs2NTUxOD09PWgmJjY1PT09dVswXSYmMTAwPT09dVsxXSYmMTExPT09dVsyXSYmOTg9PT11WzNdJiYxMDE9PT11WzRdJiYobj17dmVyc2lvbjp1WzVdPDw4fHVbNl0sZmxhZ3MwOnVbN108PDh8dVs4XSxmbGFnczE6dVs5XTw8OHx1WzEwXSx0cmFuc2Zvcm1Db2RlOnVbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBmPXJlYWRVaW50MTYoZSxyKTtyKz0yO2NvbnN0IHA9ZityLTI7bGV0IG07Zm9yKDtyPHA7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoUT0wO1E8NjQ7USsrKXttPVh0W1FdO2lbbV09cmVhZFVpbnQxNihlLHIpO3IrPTJ9fWVsc2UgZm9yKFE9MDtRPDY0O1ErKyl7bT1YdFtRXTtpW21dPWVbcisrXX1nWzE1JnRdPWl9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoaSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtyKz0yO2k9e307aS5leHRlbmRlZD02NTQ3Mz09PWg7aS5wcm9ncmVzc2l2ZT02NTQ3ND09PWg7aS5wcmVjaXNpb249ZVtyKytdO2NvbnN0IHk9cmVhZFVpbnQxNihlLHIpO3IrPTI7aS5zY2FuTGluZXM9dHx8eTtpLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxyKTtyKz0yO2kuY29tcG9uZW50cz1bXTtpLmNvbXBvbmVudElkcz17fTtjb25zdCB3PWVbcisrXTtsZXQgYj0wLEQ9MDtmb3IoQz0wO0M8dztDKyspe2NvbnN0IHQ9ZVtyXSxhPWVbcisxXT4+NCxzPTE1JmVbcisxXTtiPGEmJihiPWEpO0Q8cyYmKEQ9cyk7Y29uc3Qgbj1lW3IrMl07RT1pLmNvbXBvbmVudHMucHVzaCh7aDphLHY6cyxxdWFudGl6YXRpb25JZDpuLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTtpLmNvbXBvbmVudElkc1t0XT1FLTE7cis9M31pLm1heEg9YjtpLm1heFY9RDtwcmVwYXJlQ29tcG9uZW50cyhpKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IFM9cmVhZFVpbnQxNihlLHIpO3IrPTI7Zm9yKEM9MjtDPFM7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgYT0wO2ZvcihRPTA7UTwxNjtRKysscisrKWErPWlbUV09ZVtyXTtjb25zdCBzPW5ldyBVaW50OEFycmF5KGEpO2ZvcihRPTA7UTxhO1ErKyxyKyspc1tRXT1lW3JdO0MrPTE3K2E7KHQ+PjQ/YzpsKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShpLHMpfWJyZWFrO2Nhc2UgNjU1MDE6cis9MjthPXJlYWRVaW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3Qgaz0xPT0rK28mJiF0O3IrPTI7Y29uc3QgUj1lW3IrK10sTj1bXTtmb3IoQz0wO0M8UjtDKyspe2NvbnN0IHQ9ZVtyKytdLGE9aS5jb21wb25lbnRJZHNbdF0scz1pLmNvbXBvbmVudHNbYV07cy5pbmRleD10O2NvbnN0IG49ZVtyKytdO3MuaHVmZm1hblRhYmxlREM9bFtuPj40XTtzLmh1ZmZtYW5UYWJsZUFDPWNbMTUmbl07Ti5wdXNoKHMpfWNvbnN0IEc9ZVtyKytdLE09ZVtyKytdLFU9ZVtyKytdO3RyeXtyKz1kZWNvZGVTY2FuKGUscixpLE4sYSxHLE0sVT4+NCwxNSZVLGspfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgQX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6cis9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbcl0mJnItLTticmVhaztkZWZhdWx0OmNvbnN0IHg9ZmluZE5leHRGaWxlTWFya2VyKGUsci0yLHItMyk7aWYoeD8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIit4LmludmFsaWQpO3I9eC5vZmZzZXQ7YnJlYWt9aWYoIXh8fHI+PWUubGVuZ3RoLTEpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBBfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK2gudG9TdHJpbmcoMTYpKX1oPXJlYWRVaW50MTYoZSxyKTtyKz0yfWlmKCFpKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1pLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWkuc2NhbkxpbmVzO3RoaXMuamZpZj1zO3RoaXMuYWRvYmU9bjt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgaS5jb21wb25lbnRzKXtjb25zdCB0PWdbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvaS5tYXhILHNjYWxlWTplLnYvaS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxpPSExKXtjb25zdCBhPXRoaXMud2lkdGgvZSxyPXRoaXMuaGVpZ2h0L3Q7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkPTA7Y29uc3QgZj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHA9ZSp0KmYsbT1uZXcgVWludDhDbGFtcGVkQXJyYXkocCkseT1uZXcgVWludDMyQXJyYXkoZSksdz00Mjk0OTY3Mjg4O2xldCBiO2ZvcihoPTA7aDxmO2grKyl7cz10aGlzLmNvbXBvbmVudHNbaF07bj1zLnNjYWxlWCphO289cy5zY2FsZVkqcjtkPWg7dT1zLm91dHB1dDtnPXMuYmxvY2tzUGVyTGluZSsxPDwzO2lmKG4hPT1iKXtmb3IoYz0wO2M8ZTtjKyspe0M9MHxjKm47eVtjXT0oQyZ3KTw8M3w3JkN9Yj1ufWZvcihsPTA7bDx0O2wrKyl7Qz0wfGwqbztFPWcqKEMmdyl8KDcmQyk8PDM7Zm9yKGM9MDtjPGU7YysrKXttW2RdPXVbRSt5W2NdXTtkKz1mfX19bGV0IEQ9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2l8fDQhPT1mfHxEfHwoRD1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoRClmb3IoaD0wO2g8cDspZm9yKEM9MCxRPTA7QzxmO0MrKyxoKyssUSs9MiltW2hdPShtW2hdKkRbUV0+PjgpK0RbUSsxXTtyZXR1cm4gbX1nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxpLGE7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7cis9Myl7dD1lW3JdO2k9ZVtyKzFdO2E9ZVtyKzJdO2Vbcl09dC0xNzkuNDU2KzEuNDAyKmE7ZVtyKzFdPXQrMTM1LjQ1OS0uMzQ0KmktLjcxNCphO2VbcisyXT10LTIyNi44MTYrMS43NzIqaX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgaT0wLGE9MCxyPWUubGVuZ3RoO2k8cjtpKz0zLGErPTQpe2NvbnN0IHI9ZVtpXSxzPWVbaSsxXSxuPWVbaSsyXTt0W2FdPXItMTc5LjQ1NisxLjQwMipuO3RbYSsxXT1yKzEzNS40NTktLjM0NCpzLS43MTQqbjt0W2ErMl09ci0yMjYuODE2KzEuNzcyKnM7dFthKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxpLGEscixzPTA7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bis9NCl7dD1lW25dO2k9ZVtuKzFdO2E9ZVtuKzJdO3I9ZVtuKzNdO2VbcysrXT1pKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSppKy4wMDA0MzcxMzA0NzU5MjYyMzIqYS01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqci0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrYSooLS4wMDA5NTc5NjQzNzg0NDU3NzMqYSsuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3KnIrMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypyKy40ODM1NzA4ODQ1MTI2NSkrciooLS4wMDAzMzYxOTcxNzc2MTgzOTQqcisuNDg0NzkxNTYxNDkwNzc2KTtlW3MrK109MTA3LjI2ODAzOTM5NzcyNCtpKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmktLjAwMDY0MDk5MjAxODI5Nzk0NSphKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3KnItLjE3NjQ5MTc5MjQ2Mjg3NSkrYSooLS4wMDA3NzgyNjk5NDE1MTM2ODMqYSsuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKnItLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4KnIrLjI1ODAyOTEwMjA2ODQ1KStyKigtLjAwMDMxODkxMzExNzU4ODMyOCpyLS4yMTM3NDI0MDAzMjM2NjUpO2VbcysrXT1pKigtLjAwMDU3MDExNTE5Njk3MzY3NyppLTI2MzQwOTA1MTAwNDU4OWUtMTkqYSsuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipyKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NythKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSphLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKnItLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3KnIrLjExNjkzNTAyMDQ2NTE0NSkrciooLS4wMDAzNDM1MzE5OTY1MTA1NTUqcisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAscyl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTQpe2NvbnN0IGk9ZVt0XSxhPWVbdCsxXSxyPWVbdCsyXSxzPWVbdCszXTtlW3RdPWEqKC02NjA2MzU2Njk0MjAzNjRlLTE5KmErLjAwMDQzNzEzMDQ3NTkyNjIzMipyLTU0MDgwNjEwMDY0NTk5ZS0xOCppKy4wMDA0ODQ0OTc5NzEyMDI4MSpzLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCtyKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MypyKy4wMDA4MTcwNzY5MTEzNDY2MjUqaS0uMDA0NzcyNzE0MDU0MDg3NDcqcysxLjUzMzgwMjUzMjIxNzM0KStpKiguMDAwOTYxMjUwMTg0MTMwNjg4KmktLjAwMjY2MjU3MzMyMjgzOTMzKnMrLjQ4MzU3MDg4NDUxMjY1KStzKigtLjAwMDMzNjE5NzE3NzYxODM5NCpzKy40ODQ3OTE1NjE0OTA3NzYpO2VbdCsxXT0xMDcuMjY4MDM5Mzk3NzI0K2EqKDIxOTkyNzEwNDUyNTc0MWUtMTkqYS0uMDAwNjQwOTkyMDE4Mjk3OTQ1KnIrLjAwMDY1OTM5NzAwMTI0NTU3NyppKy4wMDA0MjYxMDU2NTI5Mzg4Mzcqcy0uMTc2NDkxNzkyNDYyODc1KStyKigtLjAwMDc3ODI2OTk0MTUxMzY4MypyKy4wMDEzMDg3MjI2MTQwODI3NSppKy4wMDA3NzA0ODI2MzE4MDExMzIqcy0uMTUxMDUxNDkyNzc1NTYyKStpKiguMDAxMjY5MzUzNjgxMTQ4NDMqaS0uMDAyNjUwOTAxODkwMTA4OTgqcysuMjU4MDI5MTAyMDY4NDUpK3MqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KnMtLjIxMzc0MjQwMDMyMzY2NSk7ZVt0KzJdPWEqKC0uMDAwNTcwMTE1MTk2OTczNjc3KmEtMjYzNDA5MDUxMDA0NTg5ZS0xOSpyKy4wMDIwNzQxMDg4MTE1MDEyKmktLjAwMjg4MjYwMjM2ODUzNDQyKnMrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K3IqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KnItLjAwMDEzMjY4OTA0Mzk2MTQ0NippKy4wMDA1NjA4MzM2OTEyNDI4MTIqcy0uMTk1MTUyMDI3NTM0MDQ5KStpKiguMDAxNzQ0MTgxMzI5Mjc1ODIqaS0uMDAyNTUyNDMzMjE0MzkzNDcqcysuMTE2OTM1MDIwNDY1MTQ1KStzKigtLjAwMDM0MzUzMTk5NjUxMDU1NSpzKy4yNDE2NTI2MDIzMjQwNyk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsaSxhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTQpe3Q9ZVtyXTtpPWVbcisxXTthPWVbcisyXTtlW3JdPTQzNC40NTYtdC0xLjQwMiphO2VbcisxXT0xMTkuNTQxLXQrLjM0NCppKy43MTQqYTtlW3IrMl09NDgxLjgxNi10LTEuNzcyKml9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7bGV0IHQsaSxhLHIscz0wO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rPTQpe3Q9ZVtuXTtpPWVbbisxXTthPWVbbisyXTtyPWVbbiszXTtlW3MrK109MjU1K3QqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCp0Ky4wMDA4Mzc5MjYyMTIxMDEzNzI3KmkrLjAwMDI4OTQ3MTgxODg2NDMyOTQqYSsuMDAzMjY0MjMxMDU3NTM3ODA2KnItMS4xMTg1NjExODY3MjAzOTM3KStpKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqaS04NjI2OTQ5MTU4NjM4NTcyZS0yMCphLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKnItLjAyMTU1Njg4Nzk0OTc4OTY3KSthKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqYS0uMDAwMzI2NzgwODI3OTQ4NTI4NipyKy4wNjg2NzQyMjM4NTk1MzQ1KS1yKiguMDAwMzM2MTk3MTc3NjE4MzkzNypyKy43NDMwNjU5MTUxMzQyMjU0KTtlW3MrK109MjU1K3QqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCp0Ky4wMDA5MjQ1MzcxMzI1NzM1ODUqaSsuMDAwMTA1NjczNTk2MTg2ODM1OTMqYSsuMDAwNDc5MTg2NDY4NzQzNjUxMipyLS4zMTA5Njg5NTg3NTE1ODc1KStpKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KmkrLjAwMDI3MDI4NDUyNTM1MzQ3MTQqYSsuMDAyMDIwMDMwODk3NzMwNzE1NipyLS43NDg4MDUyMTY3MDE1NDk0KSthKig2ODM0ODE1OTk4MjM1NjYyZS0yMCphKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypyLS4wOTc1MTkyNzc3NDcyODkzMyktciooLjAwMDMxODkxMzExNzU4ODMyODEqcisuNzM2NDg4MzgwNzczMzE2OCk7ZVtzKytdPTI1NSt0KigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqdCsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqaSsuMDAwNDc1MTk4NTA5NzU4MzU4OSphLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipyLS4wNTU2MjE4Njk4MDI2NDAzNCkraSooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KmkrLjAwMDk2OTIyMzkxMzA3MjUxODYqYSsuMDAwNzc4MjY5MjQ1MDAzNjI1MypyLS40NDAxNTIzMjM2NzUyNjQ2MykrYSooNS4wNjg4ODI5MTQwNjg3NjllLTcqYSsuMDAxNzc3ODM2OTAxMTM3NTA3MSpyLS43NTkxNDU0NjQ5NzQ5NjA5KS1yKiguMDAwMzQzNTMxOTk2NTEwNTU1MypyKy43MDYzNzcwMTg2MTYwMTQ0KX1yZXR1cm4gZS5zdWJhcnJheSgwLHMpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz00KXtjb25zdCBpPWVbdF0sYT1lW3QrMV0scj1lW3QrMl0scz1lW3QrM107ZVt0XT0yNTUraSooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKmkrLjAwMDgzNzkyNjIxMjEwMTM3MjcqYSsuMDAwMjg5NDcxODE4ODY0MzI5NCpyKy4wMDMyNjQyMzEwNTc1Mzc4MDYqcy0xLjExODU2MTE4NjcyMDM5MzcpK2EqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSphLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKnItLjAwMDI3NDg3NjkwNjc0OTk0OTEqcy0uMDIxNTU2ODg3OTQ5Nzg5NjcpK3IqKC0zODc4MDk5MjEyODY5MzYzZS0yMCpyLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KnMrLjA2ODY3NDIyMzg1OTUzNDUpLXMqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KnMrLjc0MzA2NTkxNTEzNDIyNTQpO2VbdCsxXT0yNTUraSooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KmkrLjAwMDkyNDUzNzEzMjU3MzU4NSphKy4wMDAxMDU2NzM1OTYxODY4MzU5MypyKy4wMDA0NzkxODY0Njg3NDM2NTEyKnMtLjMxMDk2ODk1ODc1MTU4NzUpK2EqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqYSsuMDAwMjcwMjg0NTI1MzUzNDcxNCpyKy4wMDIwMjAwMzA4OTc3MzA3MTU2KnMtLjc0ODgwNTIxNjcwMTU0OTQpK3IqKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKnIrLjAwMDE1MTY4NDUyMzYzNDYwOTczKnMtLjA5NzUxOTI3Nzc0NzI4OTMzKS1zKiguMDAwMzE4OTEzMTE3NTg4MzI4MSpzKy43MzY0ODgzODA3NzMzMTY4KTtlW3QrMl09MjU1K2kqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSppKy4wMDAxMjQyMzk1NjE3NTQ5MDg1MSphKy4wMDA0NzUxOTg1MDk3NTgzNTg5KnItMzY3MjkzMTc0NzY2MzA0MjJlLTIyKnMtLjA1NTYyMTg2OTgwMjY0MDM0KSthKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqYSsuMDAwOTY5MjIzOTEzMDcyNTE4NipyKy4wMDA3NzgyNjkyNDUwMDM2MjUzKnMtLjQ0MDE1MjMyMzY3NTI2NDYzKStyKig1LjA2ODg4MjkxNDA2ODc2OWUtNypyKy4wMDE3Nzc4MzY5MDExMzc1MDcxKnMtLjc1OTE0NTQ2NDk3NDk2MDkpLXMqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKnMrLjcwNjM3NzAxODYxNjAxNDQpO2VbdCszXT0yNTV9cmV0dXJuIGV9Z2V0RGF0YSh7d2lkdGg6ZSxoZWlnaHQ6dCxmb3JjZVJHQkE6aT0hMSxmb3JjZVJHQjphPSExLGlzU291cmNlUERGOnI9ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgcz10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxyKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYoaXx8YSkpe2NvbnN0IGU9cy5sZW5ndGgqKGk/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgYT0wO2lmKGkpIWZ1bmN0aW9uIGdyYXlUb1JHQkEoZSx0KXtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT02NTc5MyplW2ldfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT0xNjg0MzAwOCplW2ldfDI1NX0ocyxuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIHMpe3RbYSsrXT1lO3RbYSsrXT1lO3RbYSsrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShzLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKHMsZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihzKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gaT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShzKTphP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iocyk6dGhpcy5fY29udmVydFljY2tUb0NteWsocyk7aWYoaSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEocyk7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihzKX1yZXR1cm4gc319Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtzdGF0aWMjeT1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvanBlZyIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBzZXRPcHRpb25zKHtpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDplPSExfSl7dGhpcy4jeT1lfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1nZXQganBlZ09wdGlvbnMoKXtjb25zdCBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxhPXQubGVuZ3RoLHI9bmV3IEludDMyQXJyYXkoYSk7bGV0IHM9ITE7Y29uc3Qgbj0oMTw8aSktMTtmb3IobGV0IGU9MDtlPGE7ZSs9Mil7cltlXT0yNTYqKHRbZSsxXS10W2VdKXwwO3JbZSsxXT10W2VdKm58MDsyNTY9PT1yW2VdJiYwPT09cltlKzFdfHwocz0hMCl9cyYmKGUuZGVjb2RlVHJhbnNmb3JtPXIpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJqcGVnT3B0aW9ucyIsZSl9I3coZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aC0xO3Q8aTt0KyspaWYoMjU1PT09ZVt0XSYmMjE2PT09ZVt0KzFdKXt0PjAmJihlPWUuc3ViYXJyYXkodCkpO2JyZWFrfXJldHVybiBlfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPXRoaXMuI3coZXx8dGhpcy5ieXRlcyk7Y29uc3QgdD1uZXcgSnBlZ0ltYWdlKHRoaXMuanBlZ09wdGlvbnMpO3QucGFyc2UoZSk7Y29uc3QgaT10LmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1pO3RoaXMuYnVmZmVyTGVuZ3RoPWkubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe2lmKCFhd2FpdCBKcGVnU3RyZWFtLmNhblVzZUltYWdlRGVjb2RlcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuanBlZ09wdGlvbnM7aWYoZS5kZWNvZGVUcmFuc2Zvcm0pcmV0dXJuIG51bGw7bGV0IHQ7dHJ5e2NvbnN0IGk9dGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlciYmYXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpfHx0aGlzLmJ5dGVzO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy4jdyhpKTtpZighSnBlZ0ltYWdlLmNhblVzZUltYWdlRGVjb2RlcihhLGUuY29sb3JUcmFuc2Zvcm0pKXJldHVybiBudWxsO3Q9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX0pO3JldHVybihhd2FpdCB0LmRlY29kZSgpKS5pbWFnZX1jYXRjaChlKXt3YXJuKGBnZXRUcmFuc2ZlcmFibGVJbWFnZSAtIGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7dD8uY2xvc2UoKX19fXZhciBpaSxhaT0oaWk9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5jdXJyZW50U2NyaXB0Py5zcmM6dm9pZCAwLGZ1bmN0aW9uKGU9e30pe3ZhciB0LGksYT1lO25ldyBQcm9taXNlKCgoZSxhKT0+e3Q9ZTtpPWF9KSk7YS5kZWNvZGU9ZnVuY3Rpb24oZSx7bnVtQ29tcG9uZW50czp0PTQsaXNJbmRleGVkQ29sb3JtYXA6aT0hMSxzbWFza0luRGF0YTpyPSExfSl7Y29uc3Qgcz1lLmxlbmd0aCxuPWEuX21hbGxvYyhzKTthLkhFQVBVOC5zZXQoZSxuKTtjb25zdCBvPWEuX2pwMl9kZWNvZGUobixzLHQ+MD90OjAsISFpLCEhcik7YS5fZnJlZShuKTtpZihvKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PWE7aWYoZSl7ZGVsZXRlIGEuZXJyb3JNZXNzYWdlcztyZXR1cm4gZX1yZXR1cm4iVW5rbm93biBlcnJvciJ9Y29uc3R7aW1hZ2VEYXRhOmd9PWE7YS5pbWFnZURhdGE9bnVsbDtyZXR1cm4gZ307dmFyIHI9T2JqZWN0LmFzc2lnbih7fSxhKSxzPSIuL3RoaXMucHJvZ3JhbSIscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxuPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihuPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKTtpaSYmKG49aWkpO249bi5zdGFydHNXaXRoKCJibG9iOiIpPyIiOm4uc3Vic3RyKDAsbi5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpO3ZhciBvPWEucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZz1hLnByaW50RXJyfHxjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihhLHIpO3I9bnVsbDthLmFyZ3VtZW50cyYmYS5hcmd1bWVudHM7YS50aGlzUHJvZ3JhbSYmKHM9YS50aGlzUHJvZ3JhbSk7dmFyIGMsbD1hLndhc21CaW5hcnk7ZnVuY3Rpb24gdHJ5UGFyc2VBc0RhdGFVUkkoZSl7aWYoaXNEYXRhVVJJKGUpKXJldHVybiBmdW5jdGlvbiBpbnRBcnJheUZyb21CYXNlNjQoZSl7Zm9yKHZhciB0PWF0b2IoZSksaT1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksYT0wO2E8dC5sZW5ndGg7KythKWlbYV09dC5jaGFyQ29kZUF0KGEpO3JldHVybiBpfShlLnNsaWNlKEQubGVuZ3RoKSl9dmFyIGgsQyxRLEUsdT0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPWMuYnVmZmVyO2EuSEVBUDg9Qz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUFU4PVE9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVAzMj1uZXcgSW50MzJBcnJheShlKTthLkhFQVBVMzI9RT1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIGQsZj1bXSxwPVtdLG09W10seT0wLHc9bnVsbCxiPW51bGwsRD0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIsaXNEYXRhVVJJPWU9PmUuc3RhcnRzV2l0aChEKTtmdW5jdGlvbiBpbnN0YW50aWF0ZVN5bmMoZSx0KXt2YXIgaSxhPWZ1bmN0aW9uIGdldEJpbmFyeVN5bmMoZSl7aWYoZT09ZCYmbClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobCk7dmFyIHQ9dHJ5UGFyc2VBc0RhdGFVUkkoZSk7aWYodClyZXR1cm4gdDt0aHJvdydzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZDogeW91IGNhbiBwcmVsb2FkIGl0IHRvIE1vZHVsZVsid2FzbUJpbmFyeSJdIG1hbnVhbGx5LCBvciBlbWNjLnB5IHdpbGwgZG8gdGhhdCBmb3IgeW91IHdoZW4gZ2VuZXJhdGluZyBIVE1MIChidXQgbm90IEpTKSd9KGUpO2k9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShhKTtyZXR1cm5bbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGksdCksaV19Y2xhc3MgRXhpdFN0YXR1c3tuYW1lPSJFeGl0U3RhdHVzIjtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lc3NhZ2U9YFByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJHtlfSlgO3RoaXMuc3RhdHVzPWV9fXZhciBTLGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKShhKX0saz1hLm5vRXhpdFJ1bnRpbWV8fCEwLFI9MCxOPXt9LGhhbmRsZUV4Y2VwdGlvbj1lPT57aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXN8fCJ1bndpbmQiPT1lKXJldHVybiBoO3F1aXRfKDAsZSl9LGtlZXBSdW50aW1lQWxpdmU9KCk9Pmt8fFI+MCxfcHJvY19leGl0PWU9PntoPWU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7YS5vbkV4aXQ/LihlKTt1PSEwfXF1aXRfKDAsbmV3IEV4aXRTdGF0dXMoZSkpfSxfZXhpdD0oZSx0KT0+e2g9ZTtfcHJvY19leGl0KGUpfSxjYWxsVXNlckNhbGxiYWNrPWU9PntpZighdSl0cnl7ZSgpOygoKT0+e2lmKCFrZWVwUnVudGltZUFsaXZlKCkpdHJ5e19leGl0KGgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19KSgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19LGdyb3dNZW1vcnk9ZT0+e3ZhciB0PShlLWMuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2fDA7dHJ5e2MuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319LEc9e30sZ2V0RW52U3RyaW5ncz0oKT0+e2lmKCFnZXRFbnZTdHJpbmdzLnN0cmluZ3Mpe3ZhciBlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzpzfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gRyl2b2lkIDA9PT1HW3RdP2RlbGV0ZSBlW3RdOmVbdF09R1t0XTt2YXIgaT1bXTtmb3IodmFyIHQgaW4gZSlpLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1pfXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LE09W251bGwsW10sW11dLFU9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXI6dm9pZCAwLFVURjhBcnJheVRvU3RyaW5nPShlLHQ9MCxpPU5hTik9Pntmb3IodmFyIGE9dCtpLHI9dDtlW3JdJiYhKHI+PWEpOykrK3I7aWYoci10PjE2JiZlLmJ1ZmZlciYmVSlyZXR1cm4gVS5kZWNvZGUoZS5zdWJhcnJheSh0LHIpKTtmb3IodmFyIHM9IiI7dDxyOyl7dmFyIG49ZVt0KytdO2lmKDEyOCZuKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0Jm4pKXt2YXIgZz02MyZlW3QrK107aWYoKG49MjI0PT0oMjQwJm4pPygxNSZuKTw8MTJ8bzw8NnxnOig3Jm4pPDwxOHxvPDwxMnxnPDw2fDYzJmVbdCsrXSk8NjU1MzYpcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtlbHNle3ZhciBjPW4tNjU1MzY7cys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjPj4xMCw1NjMyMHwxMDIzJmMpfX1lbHNlIHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fG8pfWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4gc30scHJpbnRDaGFyPShlLHQpPT57dmFyIGk9TVtlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/bzpnKShVVEY4QXJyYXlUb1N0cmluZyhpKSk7aS5sZW5ndGg9MH1lbHNlIGkucHVzaCh0KX0sVVRGOFRvU3RyaW5nPShlLHQpPT5lP1VURjhBcnJheVRvU3RyaW5nKFEsZSx0KToiIix4PXttOigpPT5mdW5jdGlvbiBhYm9ydChlKXthLm9uQWJvcnQ/LihlKTtnKGU9IkFib3J0ZWQoIitlKyIpIik7dT0hMDtlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIHQ9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKTtpKHQpO3Rocm93IHR9KCIiKSxjOihlLHQsaSk9PlEuY29weVdpdGhpbihlLHQsdCtpKSxsOigpPT57az0hMTtSPTB9LG46KGUsdCk9PntpZihOW2VdKXtjbGVhclRpbWVvdXQoTltlXS5pZCk7ZGVsZXRlIE5bZV19aWYoIXQpcmV0dXJuIDA7dmFyIGk9c2V0VGltZW91dCgoKCk9PntkZWxldGUgTltlXTtjYWxsVXNlckNhbGxiYWNrKCgoKT0+SChlLHBlcmZvcm1hbmNlLm5vdygpKSkpfSksdCk7TltlXT17aWQ6aSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxnOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsdCl7ZT4+PTI7Y29uc3QgaT1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCkscj1hLkhFQVAzMi5zdWJhcnJheShlLGUrdCk7aS5zZXQocil9LGY6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzMoZSx0LGkscil7ZT4+PTI7dD4+PTI7aT4+PTI7Y29uc3Qgcz1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypyKSxuPWEuSEVBUDMyLnN1YmFycmF5KGUsZStyKSxvPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtyKSxnPWEuSEVBUDMyLnN1YmFycmF5KGksaStyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtzWzMqZV09bltlXTtzWzMqZSsxXT1vW2VdO3NbMyplKzJdPWdbZV19fSxlOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc180KGUsdCxpLHIscyl7ZT4+PTI7dD4+PTI7aT4+PTI7cj4+PTI7Y29uc3Qgbj1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCpzKSxvPWEuSEVBUDMyLnN1YmFycmF5KGUsZStzKSxnPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtzKSxjPWEuSEVBUDMyLnN1YmFycmF5KGksaStzKSxsPWEuSEVBUDMyLnN1YmFycmF5KHIscitzKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtuWzQqZV09b1tlXTtuWzQqZSsxXT1nW2VdO25bNCplKzJdPWNbZV07bls0KmUrM109bFtlXX19LG86ZT0+e3ZhciB0LGksYT1RLmxlbmd0aCxyPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+cilyZXR1cm4hMTtmb3IodmFyIHM9MTtzPD00O3MqPTIpe3ZhciBuPWEqKDErLjIvcyk7bj1NYXRoLm1pbihuLGUrMTAwNjYzMjk2KTt2YXIgbz1NYXRoLm1pbihyLCh0PU1hdGgubWF4KGUsbiksaT02NTUzNixNYXRoLmNlaWwodC9pKSppKSk7aWYoZ3Jvd01lbW9yeShvKSlyZXR1cm4hMH1yZXR1cm4hMX0scDooZSx0KT0+e3ZhciBpPTA7Z2V0RW52U3RyaW5ncygpLmZvckVhY2goKChhLHIpPT57dmFyIHM9dCtpO0VbZSs0KnI+PjJdPXM7KChlLHQpPT57Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpQ1t0KytdPWUuY2hhckNvZGVBdChpKTtDW3RdPTB9KShhLHMpO2krPWEubGVuZ3RoKzF9KSk7cmV0dXJuIDB9LHE6KGUsdCk9Pnt2YXIgaT1nZXRFbnZTdHJpbmdzKCk7RVtlPj4yXT1pLmxlbmd0aDt2YXIgYT0wO2kuZm9yRWFjaCgoZT0+YSs9ZS5sZW5ndGgrMSkpO0VbdD4+Ml09YTtyZXR1cm4gMH0scjplPT41MixqOmZ1bmN0aW9uIF9mZF9zZWVrKGUsdCxpLGEscil7cmV0dXJuIDcwfSxiOihlLHQsaSxhKT0+e2Zvcih2YXIgcj0wLHM9MDtzPGk7cysrKXt2YXIgbj1FW3Q+PjJdLG89RVt0KzQ+PjJdO3QrPTg7Zm9yKHZhciBnPTA7ZzxvO2crKylwcmludENoYXIoZSxRW24rZ10pO3IrPW99RVthPj4yXT1yO3JldHVybiAwfSxzOmZ1bmN0aW9uIF9ncmF5X3RvX3JnYmEoZSx0KXtlPj49Mjtjb25zdCBpPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnQpLHI9YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3QpO2ZvcihsZXQgZT0wO2U8dDtlKyspe2lbNCplXT1pWzQqZSsxXT1pWzQqZSsyXT1yW2VdO2lbNCplKzNdPTI1NX19LGk6ZnVuY3Rpb24gX2dyYXlhX3RvX3JnYmEoZSx0LGkpe2U+Pj0yO3Q+Pj0yO2NvbnN0IHI9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz1hLkhFQVAzMi5zdWJhcnJheShlLGUraSksbj1hLkhFQVAzMi5zdWJhcnJheSh0LHQraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cls0KmVdPXJbNCplKzFdPXJbNCplKzJdPXNbZV07cls0KmUrM109bltlXX19LGQ6ZnVuY3Rpb24gX2pzUHJpbnRXYXJuaW5nKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpOyhhLndhcm58fGNvbnNvbGUud2FybikoYE9wZW5KUEVHOiAke3R9YCl9LGs6X3Byb2NfZXhpdCxoOmZ1bmN0aW9uIF9yZ2JfdG9fcmdiYShlLHQsaSxyKXtlPj49Mjt0Pj49MjtpPj49Mjtjb25zdCBzPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG49YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3IpLG89YS5IRUFQMzIuc3ViYXJyYXkodCx0K3IpLGc9YS5IRUFQMzIuc3ViYXJyYXkoaSxpK3IpO2ZvcihsZXQgZT0wO2U8cjtlKyspe3NbNCplXT1uW2VdO3NbNCplKzFdPW9bZV07c1s0KmUrMl09Z1tlXTtzWzQqZSszXT0yNTV9fSxhOmZ1bmN0aW9uIF9zdG9yZUVycm9yTWVzc2FnZShlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTthLmVycm9yTWVzc2FnZXM/YS5lcnJvck1lc3NhZ2VzKz0iXG4iK3Q6YS5lcnJvck1lc3NhZ2VzPXR9fSxMPWZ1bmN0aW9uIGNyZWF0ZVdhc20oKXtmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoZSx0KXtMPWUuZXhwb3J0cztjPUwudDt1cGRhdGVNZW1vcnlWaWV3cygpOyFmdW5jdGlvbiBhZGRPbkluaXQoZSl7cC51bnNoaWZ0KGUpfShMLnUpOyFmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGUpe3ktLTthLm1vbml0b3JSdW5EZXBlbmRlbmNpZXM/Lih5KTtpZigwPT15KXtpZihudWxsIT09dyl7Y2xlYXJJbnRlcnZhbCh3KTt3PW51bGx9aWYoYil7dmFyIHQ9YjtiPW51bGw7dCgpfX19KCk7cmV0dXJuIEx9IWZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koZSl7eSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKHkpfSgpO3ZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6eH19KCk7aWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShlLHJlY2VpdmVJbnN0YW5jZSl9Y2F0Y2goZSl7ZyhgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApO2koZSl9ZD8/PSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCMlFFY1lBTi9mMzhCZjJBRWYzOS9md0YvWUFGL0FHQUNmMzhBWUFGL0FYOWdBMzkvZndCZ0FuOS9BWDlnQkg5L2YzOEFZQU4vZm44QmZtQUZmMzkvZjM4QmYyQUFBR0FDZm44QmYyQURmMzUvQVg5Z0FuNS9BWDVnQlg5L2YzOS9BR0FIZjM5L2YzOS9md0YvWUFsL2YzOS9mMzkvZjM4QmYyQUxmMzkvZjM5L2YzOS9mMzhCZjJBR2YzOS9mMzkvQVg5Z0FBRi9ZQVovZjM5L2YzOEFZQVovZkg5L2YzOEJmMkFDZjN3QmYyQUlmMzkvZjM5L2YzOEFZQWgvZjM5L2YzOS9md0YvWUFkL2YzOS9mMzkvQUdBQ2ZIOEJmR0FDZjN3QUFuTVRBV0VCWVFBQ0FXRUJZZ0FCQVdFQll3QUZBV0VCWkFBQ0FXRUJaUUFPQVdFQlpnQUhBV0VCWndBREFXRUJhQUFIQVdFQmFRQUZBV0VCYWdBSkFXRUJhd0FDQVdFQmJBQUtBV0VCYlFBS0FXRUJiZ0FXQVdFQmJ3QUVBV0VCY0FBR0FXRUJjUUFHQVdFQmNnQUVBV0VCY3dBREE4MEJ5d0VIQWdVQUJnUUFCUVlFQVFVRURnVVhCZ0lDQWdJQUJoQUdFUVFDQ3d3U0FnVUNCQWNFQWhNREZBTUNBZ1lDR0FNSEJRQUFCQU1CQ2drSkF3QUpCZ0VFQkFVRkV3OEJBUU1BQXdZQ0VBUVVHUUlIQmdNSEJ3RUJBZ0FFQ2dZYUJ3UUVEdzREQmdRQUJBSUNBZ0FHQmdBQkFRRUJBUUVCQVFBQUFBQUFCZ01DQWdJREF3TURBd29LQWdJYkFBTVZDQVFFQUFnREF3a0VDQXNOQUFnQUFRRUJBUUVCQVFFQkRBQUVCQVVKRHdFU0VRRUFBQVlEQXdFRkJRVUZCUVVGQlFFTkFRRUJBUUVCQVFFQkN3UUZBWEFCY25JRkJ3RUJnZ0tBZ0FJR0NBRi9BVUhRNEFVTEJ5QUhBWFFDQUFGMUFFb0JkZ0NwQVFGM0FCUUJlQUVBQVhrQXFBRUJlZ0NkQVFuUkFRRUFRUUVMY1ZyZEFkTUJnUUdCQVRDNUFhNEJxZ0dZQVpjQmxnR1ZBWlFCa3dHU0FaRUJXNDRCalFHTUFZc0JLNG9CaVFHSUFZY0JoZ0dGQVlRQmd3R0NBZHdCMndIYUFka0IyQUhYQVVuV0FkVUJTVW5VQWRJQjBRSFFBYzhCemdITkFjd0J5d0hLQWNRQnVBRzNBYllCdFFHMEFiTUJzZ0d4QWJBQnJ3R3RBYXdCcXdGU1UxVmJVWkFCWEVCWmp3RllUazlYTVN5OEFic0J2UUhGQWNrQnhnSEFBYm9CdmdHL0FjY0J5QUY5d1FIQ0FjTUJXcWNCcGdHZUFhQUJud0dhQWFNQnBBR2xBYUlCb1FHYkFad0JDc210RHNzQmdnSUJBMzhqQUVHUUJHc2lCQ1FBQWtBZ0FFVU5BQUpBQWtBQ1FBSkFJQUZCQVdzT0JBQUJCQUlFQ3lBQVFReHFJUUVNQWdzZ0FFRVFhaUVCSUFCQkJHb2hBQXdCQ3lBQVFSUnFJUUVnQUVFSWFpRUFDeUFCS0FJQUlnVkZEUUFnQWtVTkFDQUFLQUlBSVFZZ0JFRUFRWUFFRUJraUFTQUROZ0tNQkNNQVFhQUJheUlBSkFBZ0FDQUJOZ0tVQVNBQVFmOEROZ0tZQVNBQVFRQkJrQUVRR1NJQVFYODJBa3dnQUVIbkFEWUNKQ0FBUVg4MkFsQWdBQ0FBUVo4QmFqWUNMQ0FBSUFCQmxBRnFOZ0pVSUFGQkFEb0FBQ0FBSUFJZ0EwSG9BRUhwQUJCMUlBQkJvQUZxSkFBZ0FVRUFPZ0QvQXlBQklBWWdCUkVEQUFzZ0JFR1FCR29rQUF2UUFnRUZmeUFBQkVBZ0FFRUVheUlES0FJQUlnUWhBU0FESVFJZ0FFRUlheWdDQUNJQUlBQkJmbkVpQUVjRVFDQUNJQUJySWdJb0FnUWlBU0FDS0FJSUlnVTJBZ2dnQlNBQk5nSUVJQUFnQkdvaEFRc2dBeUFFYWlJQUtBSUFJZ01nQUNBRGFrRUVheWdDQUVjRVFDQUFLQUlFSWdRZ0FDZ0NDQ0lBTmdJSUlBQWdCRFlDQkNBQklBTnFJUUVMSUFJZ0FUWUNBQ0FDSUFGQmZIRnFRUVJySUFGQkFYSTJBZ0FnQWdKL0lBSW9BZ0JCQ0dzaUFFSC9BRTBFUUNBQVFRTjJRUUZyREFFTElBQm5JUU1nQUVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FFSC9IMDBOQUJwQlB5QUFRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlBSUFCQlAwOGJDeUlCUVFSMElnQkI0TTBCYWpZQ0JDQUNJQUJCNk0wQmFpSUFLQUlBTmdJSUlBQWdBallDQUNBQ0tBSUlJQUkyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxDOGtDQVFSL0lBRkJBRFlDQUFKQUlBSkZEUUFnQVNBQ2FpRURBa0FnQWtFUVNRUkFJQUFoQVF3QkN3SkFJQUVnQUNBQ2FrOE5BQ0FBSUFOUERRQWdBQ0VCREFFTElBTkJFR3NoQmlBQUlBSkJjSEVpQldvaEFTQURJQVZySVFNRFFDQUdJQVJySUFBZ0JHcjlBQUFBL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwUERnME1Dd29KQ0FjR0JRUURBZ0VBL1FzQUFDQUVRUkJxSWdRZ0JVY05BQXNnQWlBRlJnMEJDd0pBSUFKQkEzRWlCa1VFUUNBRklRUU1BUXRCQUNFQUlBVWhCQU5BSUFOQkFXc2lBeUFCTFFBQU9nQUFJQVJCQVdvaEJDQUJRUUZxSVFFZ0FFRUJhaUlBSUFaSERRQUxDeUFGSUFKclFYeExEUUFEUUNBRFFRRnJJQUV0QUFBNkFBQWdBMEVDYXlBQkxRQUJPZ0FBSUFOQkEyc2dBUzBBQWpvQUFDQURRUVJySWdNZ0FTMEFBem9BQUNBQlFRUnFJUUVnQkVFRWFpSUVJQUpIRFFBTEN3dUNCQUVEZnlBQ1FZQUVUd1JBSUFBZ0FTQUNFQUlnQUE4TElBQWdBbW9oQXdKQUlBQWdBWE5CQTNGRkJFQUNRQ0FBUVFOeFJRUkFJQUFoQWd3QkN5QUNSUVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWtFRGNVVU5BU0FDSUFOSkRRQUxDeUFEUVh4eElRUUNRQ0FEUWNBQVNRMEFJQUlnQkVGQWFpSUZTdzBBQTBBZ0FpQUJLQUlBTmdJQUlBSWdBU2dDQkRZQ0JDQUNJQUVvQWdnMkFnZ2dBaUFCS0FJTU5nSU1JQUlnQVNnQ0VEWUNFQ0FDSUFFb0FoUTJBaFFnQWlBQktBSVlOZ0lZSUFJZ0FTZ0NIRFlDSENBQ0lBRW9BaUEyQWlBZ0FpQUJLQUlrTmdJa0lBSWdBU2dDS0RZQ0tDQUNJQUVvQWl3MkFpd2dBaUFCS0FJd05nSXdJQUlnQVNnQ05EWUNOQ0FDSUFFb0FqZzJBamdnQWlBQktBSThOZ0k4SUFGQlFHc2hBU0FDUVVCcklnSWdCVTBOQUFzTElBSWdCRThOQVFOQUlBSWdBU2dDQURZQ0FDQUJRUVJxSVFFZ0FrRUVhaUlDSUFSSkRRQUxEQUVMSUFOQkJFa0VRQ0FBSVFJTUFRc2dBMEVFYXlJRUlBQkpCRUFnQUNFQ0RBRUxJQUFoQWdOQUlBSWdBUzBBQURvQUFDQUNJQUV0QUFFNkFBRWdBaUFCTFFBQ09nQUNJQUlnQVMwQUF6b0FBeUFCUVFScUlRRWdBa0VFYWlJQ0lBUk5EUUFMQ3lBQ0lBTkpCRUFEUUNBQ0lBRXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2lBaUFEUncwQUN3c2dBQXN3QVFGL0FrQWdBRVVOQUNBQlJRMEFRUWdnQUNBQmJDSUJFQ2tpQUFSQUlBQkJBQ0FCRUJrYUN5QUFJUUlMSUFJTEVRQWdBRVVFUUVFQUR3dEJDQ0FBRUNrTDhnSUNBbjhCZmdKQUlBSkZEUUFnQUNBQk9nQUFJQUFnQW1vaUEwRUJheUFCT2dBQUlBSkJBMGtOQUNBQUlBRTZBQUlnQUNBQk9nQUJJQU5CQTJzZ0FUb0FBQ0FEUVFKcklBRTZBQUFnQWtFSFNRMEFJQUFnQVRvQUF5QURRUVJySUFFNkFBQWdBa0VKU1EwQUlBQkJBQ0FBYTBFRGNTSUVhaUlESUFGQi93RnhRWUdDaEFoc0lnRTJBZ0FnQXlBQ0lBUnJRWHh4SWdScUlnSkJCR3NnQVRZQ0FDQUVRUWxKRFFBZ0F5QUJOZ0lJSUFNZ0FUWUNCQ0FDUVFocklBRTJBZ0FnQWtFTWF5QUJOZ0lBSUFSQkdVa05BQ0FESUFFMkFoZ2dBeUFCTmdJVUlBTWdBVFlDRUNBRElBRTJBZ3dnQWtFUWF5QUJOZ0lBSUFKQkZHc2dBVFlDQUNBQ1FSaHJJQUUyQWdBZ0FrRWNheUFCTmdJQUlBUWdBMEVFY1VFWWNpSUVheUlDUVNCSkRRQWdBYTFDZ1lDQWdCQitJUVVnQXlBRWFpRUJBMEFnQVNBRk53TVlJQUVnQlRjREVDQUJJQVUzQXdnZ0FTQUZOd01BSUFGQklHb2hBU0FDUVNCcklnSkJIMHNOQUFzTElBQUxKd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQUNBQklBSkJBRUVBRUhVZ0EwRVFhaVFBQytnRkFRbC9JQUZGQkVCQkFBOExBbjhnQUVVRVFFRUlJQUVRS1F3QkN5QUJSUVJBSUFBUUZFRUFEQUVMQWtBZ0FVRkhTdzBBSUFBQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUIwRUlhaUVCQWtBQ2Z3SkFJQUJCQkdzaUNpSUVLQUlBSWdVZ0JHb2lBaWdDQUNJSklBSWdDV29pQ0VFRWF5Z0NBRWNFUUNBSUlBRWdCR29pQTBFUWFrOEVRQ0FDS0FJRUlnVWdBaWdDQ0NJQ05nSUlJQUlnQlRZQ0JDQURJQWdnQTJzaUFqWUNBQ0FESUFKQmZIRnFRUVJySUFKQkFYSTJBZ0FnQXdKL0lBTW9BZ0JCQ0dzaUFrSC9BRTBFUUNBQ1FRTjJRUUZyREFFTElBSkJIU0FDWnlJRmEzWkJCSE1nQlVFQ2RHdEI3Z0JxSUFKQi94OU5EUUFhUVQ4Z0FrRWVJQVZyZGtFQ2N5QUZRUUYwYTBISEFHb2lBaUFDUVQ5UEd3c2lBa0VFZENJRlFlRE5BV28yQWdRZ0F5QUZRZWpOQVdvaUJTZ0NBRFlDQ0NBRklBTTJBZ0FnQXlnQ0NDQUROZ0lFUWVqVkFVSG8xUUVwQXdCQ0FTQUNyWWFFTndNQUlBUWdBVFlDQUF3RUN5QURJQWhMRFFFZ0FpZ0NCQ0lCSUFJb0FnZ2lBellDQ0NBRElBRTJBZ1FnQkNBRklBbHFJZ0UyQWdBTUF3c2dCU0FCUVJCcVR3UkFJQVFnQVRZQ0FDQUVJQUZCZkhGcVFRUnJJQUUyQWdBZ0FTQUVhaUlESUFVZ0FXc2lBVFlDQUNBRElBRkJmSEZxUVFScklBRkJBWEkyQWdBZ0F3Si9JQU1vQWdCQkNHc2lBVUgvQUUwRVFDQUJRUU4yUVFGckRBRUxJQUZCSFNBQlp5SUVhM1pCQkhNZ0JFRUNkR3RCN2dCcUlBRkIveDlORFFBYVFUOGdBVUVlSUFScmRrRUNjeUFFUVFGMGEwSEhBR29pQVNBQlFUOVBHd3NpQVVFRWRDSUVRZUROQVdvMkFnUWdBeUFFUWVqTkFXb2lCQ2dDQURZQ0NDQUVJQU0yQWdBZ0F5Z0NDQ0FETmdJRVFlalZBVUhvMVFFcEF3QkNBU0FCcllhRU53TUFRUUVNQkF0QkFTQUJJQVZORFFFYUMwRUFDd3dCQ3lBRUlBRkJmSEZxUVFScklBRTJBZ0JCQVFzTkFScEJDQ0FIRUNraUFVVU5BQ0FCSUFBZ0J5QUtLQUlBUVFocklnWWdCaUFIU3hzUUZob2dBQkFVSUFFaEJnc2dCZ3NMTXdFQmZ5TUFRUkJySWdFa0FDQUFCSDhnQVVFTWFrRVFJQUFRZVNFQVFRQWdBU2dDRENBQUd3VkJBQXNnQVVFUWFpUUFDN3dFQVFWL0lBSWdBQ2dDTUNJRlRRUkFJQUVnQUNnQ0pDQUNFQllhSUFBZ0FDZ0NKQ0FDYWpZQ0pDQUFJQUFvQWpBZ0FtczJBakFnQUNBQUtRTTRJQUt0ZkRjRE9DQUNEd3NnQUMwQVJFRUVjUVJBSUFFZ0FDZ0NKQ0FGRUJZYUlBQW9BakFoQVNBQVFRQTJBakFnQUNBQklBQW9BaVJxTmdJa0lBQWdBQ2tET0NBQnJYdzNBemdnQlVGL0lBVWJEd3NDUUNBRkJFQWdBU0FBS0FJa0lBVVFGaUVFSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQVNBQVFRQTJBakFnQUNBQUtRTTRJQUd0ZkRjRE9DQUNJQUZySVFJZ0FTQUVhaUVCREFFTElBQWdBQ2dDSUNJSE5nSWtDd0pBQWtBRFFBSkFJQUFvQWdBaEJDQUFLQUlRSVFZQ1FDQUFLQUpBSWdnZ0Frc0VRQ0FBSUFjZ0NDQUVJQVlSQUFBaUJqWUNNQ0FHUVg5R0JFQU1CZ3NnQWlBR1RRMENJQUVnQUNnQ0pDQUdFQllhSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQkF3QkN5QUFJQUVnQWlBRUlBWVJBQUFpQkRZQ01DQUVRWDlHQkVBTUJRc2dBaUFFVFEwRElBQWdBQ2dDSUNJSE5nSWtJQVFoQmdzZ0FFRUFOZ0l3SUFBZ0FDa0RPQ0FFclh3M0F6Z2dBU0FFYWlFQklBSWdCR3NoQWlBRklBWnFJUVVNQVFzTElBRWdBQ2dDSkNBQ0VCWWFJQUFnQUNnQ0pDQUNhallDSkNBQUlBQW9BakFnQW1zMkFqQWdBQ0FBS1FNNElBS3RmRGNET0NBQ0lBVnFEd3NnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dCSzE4TndNNElBUWdCV29QQ3lBRFFRUkI2ZmtBUVFBUUV5QUFRUUEyQWpBZ0FDQUFLQUpFUVFSeU5nSkVJQVZCZnlBRkd3c1hBQ0FBTFFBQVFTQnhSUVJBSUFFZ0FpQUFFRVlhQ3d1REJ3SUxmd0YrSUFBb0FoQWlCMEVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlZSWdKQkJFNEVRQ0FBS0FJQUlnRW9BZ0FoQkNBQUlBSkJCR3NpQlRZQ0dDQUFJQUZCQkdvMkFnQU1BUXRCZjBFQUlBQW9BaHdiSVFRZ0FrRUFUQVJBSUFJaEJRd0JDeUFDUVFGeElBQW9BZ0FoQVFKQUlBSkJBVVlFUUNBQklRWU1BUXNnQWtIKy8vLy9CM0VoQ2dOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFrZ0FDQUJRUUpxSWdZMkFnQWdBQ0FDUVFGck5nSVlJQUV0QUFFaEFTQUFJQUpCQW1zaUFqWUNHQ0FFUWY4QklBTjBRWDl6Y1NBSklBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFRZ0EwRVFhaUVESUFZaEFTQUZRUUpxSWdVZ0NrY05BQXNMUVFBaEJVVU5BQ0FBSUFaQkFXbzJBZ0FnQmkwQUFDRUJJQUFnQWtFQmF6WUNHQ0FFUWY4QklBTjBRWDl6Y1NBQklBTjBjaUVFQ3lBQUtBSVVJUUVnQUNBRVFSaDJJZ3BCL3dGR05nSVVJQUJCQjBFSUlBRWJJZ0ZCQjBFSUlBUkIvd0Z4SWdaQi93RkdHMm9pQWtFSFFRZ2dCRUVJZGtIL0FYRWlBMEgvQVVZYmFpSUpRUWRCQ0NBRVFSQjJRZjhCY1NJRVFmOEJSaHNnQjJwcUlnZzJBaEFnQUNBQUtRTUlJQU1nQVhRZ0JDQUNkSElnQ2lBSmRISWdCbkt0SUFldGhvUWlERGNEQ0NBSVFSOU5CRUFDUUNBRlFRUk9CRUFnQUNnQ0FDSUJLQUlBSVFJZ0FDQUZRUVJyTmdJWUlBQWdBVUVFYWpZQ0FBd0JDMEVBSVFOQmYwRUFJQUFvQWh3YklRSWdCVUVBVEEwQUlBVkJBWEVnQUNnQ0FDRUJBa0FnQlVFQlJnUkFJQUVoQkF3QkN5QUZRZjcvLy84SGNTRUpRUUFoQmdOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFzZ0FDQUJRUUpxSWdRMkFnQWdBQ0FGUVFGck5nSVlJQUV0QUFFaEFTQUFJQVZCQW1zaUJUWUNHQ0FDUWY4QklBTjBRWDl6Y1NBTElBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFJZ0EwRVFhaUVESUFRaEFTQUdRUUpxSWdZZ0NVY05BQXNMUlEwQUlBQWdCRUVCYWpZQ0FDQUVMUUFBSVFFZ0FDQUZRUUZyTmdJWUlBSkIvd0VnQTNSQmYzTnhJQUVnQTNSeUlRSUxJQUFnQWtFWWRpSUJRZjhCUmpZQ0ZDQUFRUWRCQ0NBS1FmOEJSaHNpQkVFSFFRZ2dBa0gvQVhFaUJrSC9BVVliYWlJRlFRZEJDQ0FDUVFoMlFmOEJjU0lEUWY4QlJodHFJZ2RCQjBFSUlBSkJFSFpCL3dGeElnSkIvd0ZHR3lBSWFtbzJBaEFnQUNBRElBUjBJQUlnQlhSeUlBRWdCM1J5SUFaeXJTQUlyWVlnRElRaUREY0RDQXNnREtjTGF3RUJmeU1BUVlBQ2F5SUZKQUFDUUNBQ0lBTk1EUUFnQkVHQXdBUnhEUUFnQlNBQklBSWdBMnNpQTBHQUFpQURRWUFDU1NJQkd4QVpHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VCNGdBMEdBQW1zaUEwSC9BVXNOQUFzTElBQWdCU0FERUI0TElBVkJnQUpxSkFBTE1RQWdBUUovSUFJb0FreEJBRWdFUUNBQUlBRWdBaEJHREFFTElBQWdBU0FDRUVZTElnQkdCRUFQQ3lBQUlBRnVHZ3NYQUNBQUlBRWdBaUFESUFRZ0JTQUdJQWRCQVJBcUdndWhBUUVFZnlBQlFRQk1CRUJCQUE4TElBQW9BZ3doQWlBQUtBSVFJUU1EUUNBQklRVUNRQ0FERFFBZ0FDQUNRUWgwUVlEK0EzRWlBallDRENBQVFRZEJDQ0FDUVlEK0EwWWJJZ00yQWhBZ0FDZ0NDQ0lCSUFBb0FnUlBEUUFnQUNBQlFRRnFOZ0lJSUFBZ0FpQUJMUUFBY2lJQ05nSU1DeUFBSUFOQkFXc2lBellDRUNBQ0lBTjJRUUZ4SUFWQkFXc2lBWFFnQkhJaEJDQUZRUUZMRFFBTElBUUxIZ0FnQUNnQ0RBUkFJQUJCQURZQ0tBTkFJQUFvQWhoQkFFb05BQXNMQzJvQkEzOGdBQVJBSUFBb0FoZ2lBUVJBSUFBb0FoQWlBZ1IvUVFBaEFRTkFJQUFvQWhnZ0FVRTBiR29vQWl3aUF3UkFJQU1RRkNBQUtBSVFJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUlZQlNBQkN4QVVDeUFBS0FJY0lnRUVRQ0FCRUJRTElBQVFGQXNMa2hVQkQzOENRQUpBSUFBb0FneEZCRUJCQVNFUElBQW9BZ1JCQUVvTkFTQUFLQUlJUVFGS0RRRU1BZ3RCQVNFTklBQW9BZ2hCQUVvTkFDQUFLQUlFUVFKSURRRUxJQUFvQWdBaUNDQU5RUVYwYWlFRUFrQWdBQ2dDRUNJSElBQW9BaFFpQ2s4TkFDQUVJQWRCQm5ScUlRRUNRQ0FLSUFkclFRTnhJZ1pGQkVBZ0J5RUNEQUVMSUFjaEFnTkFJQUVnQWYwQUJBRDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dRQUlBRWdBZjBBQkJEOURGaDJuVDlZZHAwL1dIYWRQMWgyblQvOTVnSDlDd1FRSUFGQlFHc2hBU0FDUVFGcUlRSWdBMEVCYWlJRElBWkhEUUFMQ3lBSElBcHJRWHhMRFFBRFFDQUJJQUg5QUFRQS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFQUNBQklBSDlBQVFRL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VFQ0FCSUFIOUFBUkEvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRVFDQUJJQUg5QUFSUS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFVUNBQklBSDlBQVNBQWYwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCSUFCSUFFZ0FmMEFCSkFCL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VrQUVnQVNBQi9RQUV3QUg5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3VEFBU0FCSUFIOUFBVFFBZjBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJOQUJJQUZCZ0FKcUlRRWdBa0VFYWlJQ0lBcEhEUUFMQ3lBSUlBOUJCWFJxSVFVQ1FDQUFLQUlZSWdZZ0FDZ0NIQ0lMVHcwQUlBVWdCa0VHZEdvaEFRSkFJQXNnQm10QkEzRWlDRVVFUUNBR0lRSU1BUXRCQUNFRElBWWhBZ05BSUFFZ0FmMEFCQUQ5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3UUFJQUVnQWYwQUJCRDlEQUFZMEQ4QUdOQS9BQmpRUHdBWTBELzk1Z0g5Q3dRUUlBRkJRR3NoQVNBQ1FRRnFJUUlnQTBFQmFpSURJQWhIRFFBTEN5QUdJQXRyUVh4TERRQURRQ0FCSUFIOUFBUUEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRUFDQUJJQUg5QUFRUS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFRUNBQklBSDlBQVJBL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VRQ0FCSUFIOUFBUlEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRVVDQUJJQUg5QUFTQUFmME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQklBQklBRWdBZjBBQkpBQi9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFa0FFZ0FTQUIvUUFFd0FIOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1RBQVNBQklBSDlBQVRRQWYwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCTkFCSUFGQmdBSnFJUUVnQWtFRWFpSUNJQXRIRFFBTEN5QUtJQUFvQWdnaUNTQUFLQUlFSWc0Z0RXc2lBQ0FBSUFsS0d5SUlJQWdnQ2tzYklRd2dCRUVnYWlFQkFuOGdCMFVFUUNBTVJRUkFRUUFoQXlBQkRBSUxJQVFnQlAwQUJBQWdCZjBBQkFBZ0JQMEFCQ0Q5NUFIOURGVVQ0ejVWRStNK1ZSUGpQbFVUNHo3OTVnSDk1UUg5Q3dRQUlBUWdCUDBBQkJBZ0JmMEFCQkFnQlAwQUJERDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FRUVFFaEF5QUVRZUFBYWd3QkN5QUJJQWNpQTBFR2RHb0xJUUlnQXlBTVNRUkFBMEFnQWtFZ2F5SUFJQUQ5QUFRQUlBSkJRR3I5QUFRQUlBTDlBQVFBL2VRQi9ReFZFK00rVlJQalBsVVQ0ejVWRStNKy9lWUIvZVVCL1FzRUFDQUNRUkJySWdBZ0FQMEFCQUFnQWtFd2EvMEFCQUFnQXYwQUJCRDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FBSUFKQlFHc2hBaUFEUVFGcUlnTWdERWNOQUFzTElBZ2dDazhpRFVVRVFDQUNRU0JySWdBZ0FQMEFCQUFnQWtGQWF2MEFCQUQ5REZVVFl6OVZFMk0vVlJOalAxVVRZei85NWdIOTVRSDlDd1FBSUFKQkVHc2lBQ0FBL1FBRUFDQUNRVEJyL1FBRUFQME1WUk5qUDFVVFl6OVZFMk0vVlJOalAvM21BZjNsQWYwTEJBQUxJQXNnRGlBSklBOXJJZ0FnQUNBT1Noc2lEaUFMSUE1Skd5RUpJQVZCSUdvaEFpQUpBbjhnQmtVRVFDQUpSUVJBSUFJaEEwRUFEQUlMSUFVZ0JmMEFCQUFnQlAwQUJBQWdCZjBBQkNEOTVBSDlESFlHWWo5MkJtSS9kZ1ppUDNZR1lqLzk1Z0g5NVFIOUN3UUFJQVVnQmYwQUJCQWdCUDBBQkJBZ0JmMEFCREQ5NUFIOURIWUdZajkyQm1JL2RnWmlQM1lHWWovOTVnSDk1UUg5Q3dRUUlBVkI0QUJxSVFOQkFRd0JDeUFDSUFaQkJuUnFJUU1nQmdzaUFFc0VRQU5BSUFOQklHc2lDQ0FJL1FBRUFDQURRVUJxL1FBRUFDQUQvUUFFQVAza0FmME1kZ1ppUDNZR1lqOTJCbUkvZGdaaVAvM21BZjNsQWYwTEJBQWdBMEVRYXlJSUlBajlBQVFBSUFOQk1HdjlBQVFBSUFQOUFBUVEvZVFCL1F4MkJtSS9kZ1ppUDNZR1lqOTJCbUkvL2VZQi9lVUIvUXNFQUNBRFFVQnJJUU1nQUVFQmFpSUFJQWxIRFFBTEN5QUxJQTVOSWdoRkJFQWdBMEVnYXlJQUlBRDlBQVFBSUFOQlFHcjlBQVFBL1F4MkJ1SS9kZ2JpUDNZRzRqOTJCdUkvL2VZQi9lVUIvUXNFQUNBRFFSQnJJZ0FnQVAwQUJBQWdBMEV3YS8wQUJBRDlESFlHNGo5MkJ1SS9kZ2JpUDNZRzRqLzk1Z0g5NVFIOUN3UUFDd0pBSUFkRkJFQWdERVVFUUVFQUlRY01BZ3NnQkNBRS9RQUVBQ0FGL1FBRUFDQUUvUUFFSVAza0FmME1yZ0ZaUGE0QldUMnVBVms5cmdGWlBmM21BZjNrQWYwTEJBQWdCQ0FFL1FBRUVDQUYvUUFFRUNBRS9RQUVNUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkJBZ0JFSGdBR29oQVVFQklRY01BUXNnQVNBSFFRWjBhaUVCQ3lBSElBeEpCRUFEUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBQWdBZjBBQkFEOTVBSDlESzRCV1QydUFWazlyZ0ZaUGE0QldUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQUNBQi9RQUVFUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkFBZ0FVRkFheUVCSUFkQkFXb2lCeUFNUncwQUN3c2dEVVVFUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBRDlESzRCMlQydUFkazlyZ0haUGE0QjJUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQVAwTXJnSFpQYTRCMlQydUFkazlyZ0haUGYzbUFmM2tBZjBMQkFBTEFrQWdCa1VFUUNBSlJRUkFRUUFoQmd3Q0N5QUZJQVg5QUFRQUlBVDlBQVFBSUFYOUFBUWcvZVFCL1F4ekJzcy9jd2JMUDNNR3l6OXpCc3MvL2VZQi9lUUIvUXNFQUNBRklBWDlBQVFRSUFUOUFBUVFJQVg5QUFRdy9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VFQ0FGUWVBQWFpRUNRUUVoQmd3QkN5QUNJQVpCQm5ScUlRSUxJQVlnQ1VrRVFBTkFJQUpCSUdzaUFDQUEvUUFFQUNBQ1FVQnEvUUFFQUNBQy9RQUVBUDNrQWYwTWN3YkxQM01HeXo5ekJzcy9jd2JMUC8zbUFmM2tBZjBMQkFBZ0FrRVFheUlBSUFEOUFBUUFJQUpCTUd2OUFBUUFJQUw5QUFRUS9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VBQ0FDUVVCcklRSWdCa0VCYWlJR0lBbEhEUUFMQ3lBSURRQWdBa0VnYXlJQUlBRDlBQVFBSUFKQlFHcjlBQVFBL1F4ekJrdEFjd1pMUUhNR1MwQnpCa3RBL2VZQi9lUUIvUXNFQUNBQ1FSQnJJZ0FnQVAwQUJBQWdBa0V3YS8wQUJBRDlESE1HUzBCekJrdEFjd1pMUUhNR1MwRDk1Z0g5NUFIOUN3UUFDd3RkQVFSL0lBQUVRQ0FBS0FJVUlnRWdBQ2dDRUNJQ2JBUkFBMEFnQUNnQ0dDQURRUUowYWlnQ0FDSUVCRUFnQkJBVUlBQW9BaEFoQWlBQUtBSVVJUUVMSUFOQkFXb2lBeUFCSUFKc1NRMEFDd3NnQUNnQ0dCQVVJQUFRRkFzTGhRRUJBbjhDUUFKQUlBQW9BZ1FpQXlBQUtBSUFJZ1JIQkVBZ0FDZ0NDQ0VEREFFTElBQWdBMEVLYWlJRU5nSUVJQUFvQWdnZ0JFRUNkQkFiSWdORkRRRWdBQ0FETmdJSUlBQW9BZ0FoQkFzZ0F5QUVRUUowYWlBQk5nSUFJQUFnQkVFQmFqWUNBRUVCRHdzZ0FDZ0NDQkFVSUFCQ0FEY0NBQ0FDUVFGQnhpOUJBQkFUUVFBTGt3UUNCbjhDZmdKQUFrQURRQ0FBSUFCQkFXdHhEUUVnQVVGSFN3MEJJQUJCQ0NBQVFRaExJZ2NiSVFCQjZOVUJLUU1BSWdnQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUFVSC9BRTBFUUNBQlFRTjJRUUZyREFFTElBRm5JUU1nQVVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlESUFOQlAwOGJDeUlEcllnaUNVSUFVZ1JBQTBBZ0NTQUplaUlJaUNFSkFuNGdBeUFJcDJvaUEwRUVkQ0lFUWVqTkFXb29BZ0FpQWlBRVFlRE5BV29pQlVjRVFDQUNJQUFnQVJCRklnUU5CaUFDS0FJRUlnUWdBaWdDQ0NJR05nSUlJQVlnQkRZQ0JDQUNJQVUyQWdnZ0FpQUZLQUlFTmdJRUlBVWdBallDQkNBQ0tBSUVJQUkyQWdnZ0EwRUJhaUVESUFsQ0FZZ01BUXRCNk5VQlFlalZBU2tEQUVKK0lBT3RpWU0zQXdBZ0NVSUJoUXNpQ1VJQVVnMEFDMEhvMVFFcEF3QWhDQXRCUHlBSWVhZHJJUVVDUUNBSVVBUkFRUUFoQWd3QkN5QUZRUVIwSWdSQjZNMEJhaWdDQUNFQ0lBaENnSUNBZ0FSVURRQkI0d0FoQXlBQ0lBUkI0TTBCYWlJR1JnMEFBMEFnQTBVTkFTQUNJQUFnQVJCRklnUU5CQ0FEUVFGcklRTWdBaWdDQ0NJQ0lBWkhEUUFMQ3lBQklBQkJNR3BCTUNBSEcyb1FlZzBBQ3lBQ1JRMEFJQUlnQlVFRWRFSGd6UUZxSWdOR0RRQURRQ0FDSUFBZ0FSQkZJZ1FOQWlBQ0tBSUlJZ0lnQTBjTkFBc0xRUUFoQkFzZ0JBdVdJd0luZndON0FrQWdBeUFBS0FJQUlnbExEUUFnQVNBRFR3MEFJQUVnQ1U4TkFDQUVJQUFvQWdRaUNVc05BQ0FDSUFSUERRQWdBaUFKVHcwQUlBVkJIR3NoSnlBQUtBSUlJaGxCQW5RaEVTQUhRUUowSVE4Z0JrRUNkQ0VmSUFWQkJHc2hLQ0FDSUFBb0FneHVJUjRnR1NBWklBRWdHVzRpS1d3Z0FXdHFJU29nQmtFSVJ5RWpJQUloSFFOQUlBQW9BZ3dpQ1NFS0lBSWdIVVlFUUNBSklBSWdDWEJySVFvTElBb2dCQ0FkYXlJTUlBb2dERWtiSWhOQmZIRWhHeUFUUVFOeElSWWdFMEY0Y1NFcklCTkJCM0VoSkNBVFFRRnJJUm9nR1NBSlFRSjBJQXBCQW5SclFRUnFiQ0VnSUFaQkFrWWdFMEVCUm5FaExDQUpJQXBySUJsc0lTVWdKeUFQSUIwZ0Ftc2lER3dpQ1dvaEppQUpJQ2hxSVMwZ0JTQUphaUV1SUFVZ0J5QU1iRUVDZEdvaEhDQXBJU0VnQVNFWUEwQWdLaUFaSUFFZ0dFWWJJZ3dnQXlBWWF5SUpJQWtnREVzYklSQWdHU0FNYXlFSklDRkJBblFpRFNBQUtBSVlJQUFvQWhBZ0hteEJBblJxYWlnQ0FDRVNBa0FDUUNBSUJFQUNRQUpBQWtBQ1FBSkFJQklFUUNBU0lDVkJBblJxSUFsQkFuUnFJUW9nR0NBQmF5RU5JQVpCQVVZTkJDQWNJQVlnRFd4QkFuUnFJUXNnRUVFQlJnMERJQ3dOQWlBakRRRWdFRUVIVFEwQklCTkZEUWdnSmlBTklCOXNhaUFRUVFWMGFpRVZJQklnSUNBUVFRSjBhaUFNUVFKMGEyb2hJaUFRUVh4eElRMUJBQ0VTREFVTElBWkJBVWNFUUNBVFJRMElJQkJCZkhFaERTQVFRUU54SVF3Z0hDQVlJQUZySUFac1FRSjBhaUVMUVFBaEVpQVFRUUZyUVFOSklSUURRQUpBSUJCRkRRQkJBQ0VKUVFBaENrRUFJUTRnRkVVRVFBTkFJQXNnQmlBS2JFRUNkR3BCQURZQ0FDQUxJQXBCQVhJZ0JteEJBblJxUVFBMkFnQWdDeUFLUVFKeUlBWnNRUUowYWtFQU5nSUFJQXNnQ2tFRGNpQUdiRUVDZEdwQkFEWUNBQ0FLUVFScUlRb2dEa0VFYWlJT0lBMUhEUUFMQ3lBTVJRMEFBMEFnQ3lBR0lBcHNRUUowYWtFQU5nSUFJQXBCQVdvaENpQUpRUUZxSWdrZ0RFY05BQXNMSUFzZ0Qyb2hDeUFUSUJKQkFXb2lFa2NOQUFzTUNBc2dFMFVOQnlBUVFRSjBJUXdnSENBWUlBRnJRUUowYWlFTFFRQWhDU0FhUVFkUEJFQURRQ0FMUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxSVFzZ0NVRUlhaUlKSUN0SERRQUxDMEVBSVFrZ0pFVU5Cd05BSUF0QkFDQU1FQmtnRDJvaEN5QUpRUUZxSWdrZ0pFY05BQXNNQndzZ0UwVU5CaUFRUVh4eElSUWdFRUVEY1NFU1FRQWhEU0FRUVFGclFRTkpJUmNNQlF0QkFDRUpJQkJCZkhFaURnUkFBMEFnQ3lBSlFRTjBhaUFLSUFsQkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVDY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVEY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBbEJCR29pQ1NBT1NRMEFDd3NnQ1NBUVR3MEZBa0FnRUNBSmF5SVVRUTlORFFBZ0xpQU5JQjlzSWcxcUlBbEJBM1JxSUJJZ0lHb2lEaUFRSUF4clFRSjBha2tFUUNBT0lBa2dER3RCQW5ScUlBMGdMV29nRUVFRGRHcEpEUUVMSUFvZ0NVRUNkR29oRFNBSi9SSDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBRDlyZ0VoTUNBSklCUkJmSEVpREdvaENVRUFJUTREUUNBTElEQkJBLzJyQVNJeC9Sc0FhaUFOSUE1QkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQU1SdzBBQ3lBTUlCUkdEUVlMUVFBaERDQUpJUTRnRUNBSmEwRURjU0lOQkVBRFFDQUxJQTVCQTNScUlBb2dEa0VDZEdvb0FnQTJBZ0FnRGtFQmFpRU9JQXhCQVdvaURDQU5SdzBBQ3dzZ0NTQVFhMEY4U3cwRkEwQWdDeUFPUVFOMGFpQUtJQTVCQW5ScUtBSUFOZ0lBSUFzZ0RrRUJhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRUNhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRURhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUE1QkJHb2lEaUFRUncwQUN3d0ZDeUFUUlEwRVFRQWhDU0FhUVFOUEJFQURRQ0FMSUFvb0FnQTJBZ0FnQ3lBUGFpSU1JQW9nRVdvaURTZ0NBRFlDQUNBTUlBOXFJZ3dnRFNBUmFpSU5LQUlBTmdJQUlBd2dEMm9pRENBTklCRnFJZzBvQWdBMkFnQWdEU0FSYWlFS0lBd2dEMm9oQ3lBSlFRUnFJZ2tnRzBjTkFBc0xRUUFoQ1NBV1JRMEVBMEFnQ3lBS0tBSUFOZ0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFRTElCd2dEVUVDZEdvaEN5QVFRUVJIQkVBZ0UwVU5CQ0FRUVFKMElRbEJBQ0VPSUJwQkEwOEVRQU5BSUFzZ0NpQUpFQllnQ2lBUmFpSU5JQkZxSWdzZ0VXb2lFaUFSYWlFS0lBOXFJQTBnQ1JBV0lBOXFJQXNnQ1JBV0lBOXFJQklnQ1JBV0lBOXFJUXNnRGtFRWFpSU9JQnRIRFFBTEMwRUFJUTRnRmtVTkJBTkFJQXNnQ2lBSkVCWWdDaUFSYWlFS0lBOXFJUXNnRGtFQmFpSU9JQlpIRFFBTERBUUxJQk5GRFFOQkFDRUpJQnBCQTA4RVFBTkFJQXNnQ3YwQUFnRDlDd0lBSUFzZ0Qyb2lEQ0FLSUJGcUlnMzlBQUlBL1FzQ0FDQU1JQTlxSWd3Z0RTQVJhaUlOL1FBQ0FQMExBZ0FnRENBUGFpSU1JQTBnRVdvaURmMEFBZ0Q5Q3dJQUlBMGdFV29oQ2lBTUlBOXFJUXNnQ1VFRWFpSUpJQnRIRFFBTEMwRUFJUWtnRmtVTkF3TkFJQXNnQ3YwQUFnRDlDd0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFNTEEwQkJBQ0VKSUEwRVFBTkFJQXNnQ1VFRmRHb2dDaUFKUVFKMGFpZ0NBRFlDQUNBTElBbEJBWElpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBM0lpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBSlFRUnFJZ2tnRFVrTkFBc0xBa0FnQ1NBUVR3MEFBa0FDUUNBUUlBbHJJaFJCQjAwTkFDQUxJQWxCQlhScUlDSWdFU0FTYkdwSkJFQWdDaUFKUVFKMGFpQVZJQThnRW14cVNRMEJDeUFKL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhNQ0FKSUJSQmZIRWlGMm9oREVFQUlRNERRQ0FMSURCQkJmMnJBU0l4L1JzQWFpQUtJQWtnRG1wQkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQVhSdzBBQ3lBVUlCZEhEUUVNQWdzZ0NTRU1DMEVBSVE0Z0VDQU1JZ2xyUVFOeEloUUVRQU5BSUFzZ0NVRUZkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUpRUUZxSVFrZ0RrRUJhaUlPSUJSSERRQUxDeUFNSUJCclFYeExEUUFEUUNBTElBbEJCWFJxSUFvZ0NVRUNkR29vQWdBMkFnQWdDeUFKUVFGcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFKcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFOcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDVUVFYWlJSklCQkhEUUFMQ3lBS0lCRnFJUW9nQ3lBUGFpRUxJQk1nRWtFQmFpSVNSdzBBQ3d3Q0N5QVNSUVJBUVFFZ0FDZ0NDQ0FBS0FJTWJFRUNkQkFYSWhKRkJFQkJBQThMSUFBb0FoZ2dBQ2dDRUNBZWJFRUNkR29nRFdvZ0VqWUNBQXNnRWlBbFFRSjBhaUFKUVFKMGFpRUxJQmdnQVdzaENRSkFJQVpCQVVjRVFDQWNJQVlnQ1d4QkFuUnFJUW9nRUVFQlJ3UkFBa0FnSXcwQUlCQkJCMDBOQUNBVFJRMEZJQ1lnQ1NBZmJHb2dFRUVGZEdvaElpQWdJQkJCQW5ScUlBeEJBblJySVM4Z0VFRjhjU0VVUVFBaERBTkFRUUFoQ1NBVUJFQURRQ0FMSUFsQkFuUnFJQW9nQ1VFRmRHb29BZ0EyQWdBZ0N5QUpRUUZ5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUUp5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUU55SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0NVRUVhaUlKSUJSSkRRQUxDd0pBSUFrZ0VFOE5BQUpBQWtBZ0VDQUpheUlYUVFkTkRRQWdDeUFKUVFKMGFpQWlJQXdnRDJ4cVNRUkFJQW9nQ1VFRmRHb2dFaUF2SUF3Z0VXeHFha2tOQVFzZ0NmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVRBZ0NTQVhRWHh4SWhWcUlRMUJBQ0VPQTBBZ0N5QUpJQTVxUVFKMGFpQUtJREJCQmYyckFTSXgvUnNEYWlBS0lESDlHd0pxSUFvZ01mMGJBV29nQ2lBeC9Sc0FhdjFjQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlERDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoTUNBT1FRUnFJZzRnRlVjTkFBc2dGU0FYUncwQkRBSUxJQWtoRFF0QkFDRU9JQkFnRFNJSmEwRURjU0lYQkVBRFFDQUxJQWxCQW5ScUlBb2dDVUVGZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVhSdzBBQ3dzZ0RTQVFhMEY4U3cwQUEwQWdDeUFKUVFKMGFpQUtJQWxCQlhScUtBSUFOZ0lBSUFzZ0NVRUJhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRUNhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRURhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFsQkJHb2lDU0FRUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBeEJBV29pREVjTkFBc01CUXNnRTBVTkJDQVFRWHh4SVJRZ0VFRURjU0VTUVFBaERTQVFRUUZyUVFOSklSY01BZ3NnRTBVTkEwRUFJUWtnR2tFRFR3UkFBMEFnQ3lBS0tBSUFOZ0lBSUFzZ0VXb2lEQ0FLSUE5cUlnMG9BZ0EyQWdBZ0RDQVJhaUlNSUEwZ0Qyb2lEU2dDQURZQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOS0FJQU5nSUFJQXdnRVdvaEN5QU5JQTlxSVFvZ0NVRUVhaUlKSUJ0SERRQUxDMEVBSVFrZ0ZrVU5Bd05BSUFzZ0NpZ0NBRFlDQUNBTElCRnFJUXNnQ2lBUGFpRUtJQWxCQVdvaUNTQVdSdzBBQ3d3REN5QWNJQWxCQW5ScUlRb2dFRUVFUndSQUlCTkZEUU1nRUVFQ2RDRUpRUUFoRGlBYVFRTlBCRUFEUUNBTElBb2dDUkFXSUFvZ0Qyb2lEU0FQYWlJTElBOXFJaElnRDJvaENpQVJhaUFOSUFrUUZpQVJhaUFMSUFrUUZpQVJhaUFTSUFrUUZpQVJhaUVMSUE1QkJHb2lEaUFiUncwQUN3dEJBQ0VPSUJaRkRRTURRQ0FMSUFvZ0NSQVdJQW9nRDJvaENpQVJhaUVMSUE1QkFXb2lEaUFXUncwQUN3d0RDeUFUUlEwQ1FRQWhDU0FhUVFOUEJFQURRQ0FMSUFyOUFBSUEvUXNDQUNBTElCRnFJZ3dnQ2lBUGFpSU4vUUFDQVAwTEFnQWdEQ0FSYWlJTUlBMGdEMm9pRGYwQUFnRDlDd0lBSUF3Z0VXb2lEQ0FOSUE5cUlnMzlBQUlBL1FzQ0FDQU5JQTlxSVFvZ0RDQVJhaUVMSUFsQkJHb2lDU0FiUncwQUN3dEJBQ0VKSUJaRkRRSURRQ0FMSUFyOUFBSUEvUXNDQUNBS0lBOXFJUW9nQ3lBUmFpRUxJQWxCQVdvaUNTQVdSdzBBQ3d3Q0N3TkFBa0FnRUVVTkFFRUFJUTVCQUNFSlFRQWhEQ0FYUlFSQUEwQWdDeUFKUVFKMGFpQUtJQVlnQ1d4QkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVlFRSjBhaUFLSUFZZ0ZXeEJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSVZRUUowYWlBS0lBWWdGV3hCQW5ScUtBSUFOZ0lBSUFzZ0NVRURjaUlWUVFKMGFpQUtJQVlnRld4QkFuUnFLQUlBTmdJQUlBbEJCR29oQ1NBTVFRUnFJZ3dnRkVjTkFBc0xJQkpGRFFBRFFDQUxJQWxCQW5ScUlBb2dCaUFKYkVFQ2RHb29BZ0EyQWdBZ0NVRUJhaUVKSUE1QkFXb2lEaUFTUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBMUJBV29pRFVjTkFBc01BUXNEUUFKQUlCQkZEUUJCQUNFT1FRQWhDVUVBSVF3Z0YwVUVRQU5BSUFzZ0JpQUpiRUVDZEdvZ0NpQUpRUUowYWlnQ0FEWUNBQ0FMSUFsQkFYSWlGU0FHYkVFQ2RHb2dDaUFWUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpRlNBR2JFRUNkR29nQ2lBVlFRSjBhaWdDQURZQ0FDQUxJQWxCQTNJaUZTQUdiRUVDZEdvZ0NpQVZRUUowYWlnQ0FEWUNBQ0FKUVFScUlRa2dERUVFYWlJTUlCUkhEUUFMQ3lBU1JRMEFBMEFnQ3lBR0lBbHNRUUowYWlBS0lBbEJBblJxS0FJQU5nSUFJQWxCQVdvaENTQU9RUUZxSWc0Z0VrY05BQXNMSUFvZ0VXb2hDaUFMSUE5cUlRc2dEVUVCYWlJTklCTkhEUUFMQ3lBaFFRRnFJU0VnRUNBWWFpSVlJQU5KRFFBTElCNUJBV29oSGlBVElCMXFJaDBnQkVrTkFBc0xRUUVMR1FFQ2ZpQUFLUU1BSWdJZ0FTa0RBQ0lEVlNBQ0lBTlRhd3UwTmdVbmZ3OStBWHNCZlFGOEl3QkIwQUJySWc4a0FDQVBRWkQvQXpZQ0tDQUFLQUtFQVNBQUtBS0FBV3doR0FKL0FrQUNRQUpBSUFBb0FnZ2lDMEVJUndSQVFRQWdDMEdBQWtjTkJCb2dEMEhaL3dNMkFpZ01BUXNnQUMwQVhFRUJjUTBBSUJoQmZIRWhEU0FQUWMwQWFpRW9JQTlCekFCcUlTa2dEMEhJQUdvaE1FR1Evd01oQ3dKQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQ2dDVkNJTVJRMEFJQXdnQUNnQ1VDSU9UUTBBSUFBb0FsZ2dEa0VEZEdvcEF3QWhNaUFBSUE1QkFXbzJBbEFnQ1NBeUlBb1FNRVVFUUNBS1FRRkJteXBCQUJBVFFRQU1Ed3NnQ1NBQUtBSVFRUUlnQ2hBZFFRSkhCRUFnQ2tFQlFZTVRRUUFRRTBFQURBOExJQUFvQWhBZ0QwRW9ha0VDRUJVZ0R5Z0NLRUdRL3dOR0RRRWdDa0VCUWNRZlFRQVFFMEVBREE0TElBdEJrLzhEUmcwQkN3TkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzFBRVFDQUFRY0FBTmdJSURBSUxJQWtnQUNnQ0VFRUNJQW9RSFVFQ1J3UkFJQXBCQVVHREUwRUFFQk5CQUF3T0N5QUFLQUlRSUE5QkpHcEJBaEFWSUE4b0FpUkJBVTBFUUNBS1FRRkIreTVCQUJBVFFRQU1EZ3NDUUNBUEtBSW9RWUNCQWtjTkFDQUpLUU1JSWpKUUJINUNBQVVnTWlBSktRTTRmUXRDQUZJTkFDQUFRY0FBTmdJSURBSUxBa0FnQUNnQ0NDSVRRUkJ4UlFSQUlBOG9BaVFoQ3d3QkN5QVBLQUlrSVFzZ0FDZ0NHQ0lPUlEwQUlBdEJBbW9pRENBT1N3UkFJQXBCQVVHTndRQkJBQkFUUVFBTUR3c2dBQ0FPSUF4ck5nSVlDeUFQSUF0QkFtc2lFRFlDSkVHZ3dnRWhEQ0FQS0FJb0lRNERRQ0FNSWdzb0FnQWlHd1JBSUF0QkRHb2hEQ0FPSUJ0SERRRUxDeUFMS0FJRUlCTnhSUVJBSUFwQkFVSHdLVUVBRUJOQkFBd09Dd0pBSUFBb0FoUWdFRThFUUNBQUtBSVFJUXdNQVFzZ0NTa0RDQ0l5VUFSK1FnQUZJRElnQ1NrRE9IMExJQkN0VXdSQUlBcEJBVUdBTFVFQUVCTkJBQXdQQ3lBQUtBSVFJQThvQWlRUUd5SU1SUVJBSUFBb0FoQVFGQ0FBUWdBM0F4QWdDa0VCUWNnbVFRQVFFMEVBREE4TElBQWdERFlDRUNBQUlBOG9BaVFpRURZQ0ZBc2dDU0FNSUJBZ0NoQWRJZ3dnRHlnQ0pFY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dDeWdDQ0NJTFJRUkFJQXBCQVVHbzJ3QkJBQkFUUVFBTURnc2dBQ0FBS0FJUUlBd2dDaUFMRVFFQVJRUkFJQThnRHlnQ0tEWUNJQ0FLUVFGQjR1d0FJQTlCSUdvUUUwRUFEQTRMSUFrcEF6Z2hNaUFQS0FJa0lSSWdBQ2dDNEFFaUV5Z0NLQ0lRSUFBb0F1UUJJZ3hCS0d3aURtb2lGU2dDRkNJZVFRRnFJaHdnRlNnQ0hDSUxTd1JBSUJVQ2Z5QUxzME1BQU1oQ2tpSkNRd0FBZ0U5ZElFSkRBQUFBQUdCeEJFQWdRcWtNQVF0QkFBc2lDellDSENBVktBSVlJQXRCR0d3UUd5RUxJQk1vQWlnaUVDQU9haUVWSUF0RkRRTWdGU0FMTmdJWUlCVW9BaFFpSGtFQmFpRWNDeUFPSUJCcUloTW9BaGdnSGtFWWJHb2lDeUFTUVFScU5nSVFJQXNnTXFjZ0VtdEJCR3NpRHF3M0F3Z2dDeUFiT3dFQUlCTWdIRFlDRkFKQUlCdEJrUDhEUncwQUFrQWdFeWdDRUNJTVJRMEFJQk1vQWd3aUN5QVRLQUlFVHcwQUlBd2dDMEVZYkdvZ0RxMDNBd0FMSUFrcEF6aW5JQThvQWlSclFRUnJyU0l5SUFBcEF6QlhEUUFnQUNBeU53TXdDeUFBTFFCY1FRUnhCRUFnQ1NBQU5RSVlJQW9nQ1NnQ0tCRUlBQ0FBTlFJWVVnUkFJQXBCQVVHREUwRUFFQk5CQUF3UEN5QVBRWlAvQXpZQ0tBd0NDeUFKSUFBb0FoQkJBaUFLRUIxQkFrY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dBQ2dDRUNBUFFTaHFRUUlRRlNBUEtBSW9RWlAvQTBjTkFBc0xBa0FnQ1NrRENDSXlVQVIrUWdBRklESWdDU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUVMSUFBdEFGd2lDMEVFY1VVRVFDQUFLQUxrQVVHTUxHd2hEQ0FBS0FLMEFRSkFBa0FnQUNnQ09BUkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzZjaEVBd0JDeUFBS0FJWUloQkJBa2tOQVFzZ0FDQVFRUUpySWhBMkFoZ0xJQXhxSVJZZ0VFVU5BeUFKS1FNSUlqSlFCSDVDQUFVZ01pQUpLUU00ZlFzZ0VLMVRCRUFnQUNnQzBBRUVRQ0FLUVFGQnJTMUJBQkFUUVFBTUR3c2dDa0VDUWEwdFFRQVFFd3NnQUNnQ0dDSU9RWDVQQkVBZ0NrRUJRYU1MUVFBUUUwRUFEQTRMQWtBZ0ZpZ0MzQ3NpREFSQUlCWW9BdUFySWd0QmZTQU9hMHNFUUNBS1FRRkJsZ2xCQUJBVFFRQU1FQXNnRENBTElBNXFRUUpxRUJzaUN3UkFJQllnQ3pZQzNDc01CZ3NnRmlnQzNDc1FGQ0FXUVFBMkF0d3JEQUVMSUJZZ0RrRUNhaEFZSWdzMkF0d3JJQXNOQkFzZ0NrRUJRZnN2UVFBUUUwRUFEQTBMSUFCQkNEWUNDQ0FBSUF0QitnRnhPZ0JjREFNTElBOG9BaWdoQ3d3RUN5QVZLQUlZRUJRZ0V5Z0NLQ0FNUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVSHlIVUVBRUJOQkFBd0tDeUFBS0FMZ0FTSWJLQUlvSWhVZ0FDZ0M1QUVpRTBFb2JDSVNhaUlNS0FJUUlBd29BZ3hCR0d4cUlnc2dDU2tET0NJelFnSjlJakkzQXdnZ0N5QXpJQUExQWhoOE53TVFJQUFvQWhnaERnSkFJQXdvQWhRaUhrRUJhaUljSUF3b0Fod2lDMDBFUUNBTUtBSVlJUXdNQVFzZ0RBSi9JQXV6UXdBQXlFS1NJa0pEQUFDQVQxMGdRa01BQUFBQVlIRUVRQ0JDcVF3QkMwRUFDeUlMTmdJY0lBd29BaGdnQzBFWWJCQWJJUXdnR3lnQ0tDSVZJQkpxSVFzZ0RFVU5CU0FMSUF3MkFoZ2dDeWdDRkNJZVFRRnFJUndMSUF3Z0hrRVliR29pQ3lBT1FRSnFOZ0lRSUFzZ01zUTNBd2dnQzBHVC93TTdBUUFnRWlBVmFpQWNOZ0lVSUFBQ2Z5QVFCRUJCQ0NBSklCWW9BdHdySUJZb0F1QXJhaUFBS0FJWUlBb1FIU0lRSUFBb0FoaEdEUUVhUWNBQUlCQkJmMGNOQVJvZ0NrRUJRWU1UUVFBUUUwRUFEQXNMUVFBaEVFSEFBRUVJSUFBb0FoZ2JDellDQ0NBV0lCWW9BdUFySUJCcU5nTGdLd0pBSUFBdEFGeEJBWEVOQUNBQUtBSXNJZ3RCQUVnTkFDQUFLQUxrQVNJTUlBdEhEUUFnQUNnQ1RBMEFJQWtvQWh4QkFrWU5BQ0FBS0FLMEFTQU1RWXdzYkdvaUN5Z0MyQ3NpRGlBQUtBTGdBU2dDS0NBTVFTaHNhaUlNS0FJRVJ3MEFJQTRnQ3lnQzFDdEJBV29pQzAwTkFBSkFJQXdvQWhBZ0MwRVliR29wQXdBaU1pQUpLUU00VVEwQUlBa2dNaUFLRURBTkFDQUtRUUZCbXlwQkFCQVRRUUFNQ3dzZ0NTQUFLQUlRUVFJZ0NoQWRRUUpIQkVBZ0NrRUJRWU1UUVFBUUUwRUFEQXNMSUFBb0FoQWdEMEVvYWtFQ0VCVWdEeWdDS0VHUS93TkdEUUlnQ2tFQlFjUWZRUUFRRTBFQURBb0xJQUF0QUZ3aUMwRUpjVUVCUncwQUlBQWdDMEVJY2pvQVhDQUFLQUswQVNBQUtBTGtBU0lPUVl3c2JHb29BdGdyUVFGR0RRQWdDU2dDSEVFQ1JnMEFJQWtwQXpnaU1rSi9VUTBBQWtBRFFFRUJJUXdnQ1NBUFFjWUFhaUlMUVFJZ0NoQWRRUUpIRFFFZ0N5QVBRVUJyUVFJUUZTQVBLQUpBUVpEL0EwY05BVUdERXlFUUlBa2dDMEVDSUFvUUhVRUNSdzBKSUFzZ0QwRThha0VDRUJVZ0R5Z0NQRUVLUndSQVFmc3VJUkFNQ2dzZ0QwRUlOZ0k4SUFrZ0QwSEdBR3BCQ0NBS0VCMGlDeUFQS0FJOFJ3MEpJQXRCQ0VjRVFFR3FIeUVRREFvTElBOUJ4Z0JxSUE5Qk9HcEJBaEFWSURBZ0QwRTBha0VFRUJVZ0tTQVBRVEJxUVFFUUZTQW9JQTlCTEdwQkFSQVZJQTRnRHlnQ09FY0VRQ0FQS0FJMElndEJEa2tOQWlBUElBdEJER3NpQ3pZQ05DQUpJQXV0SUFvZ0NTZ0NLQkVJQUNBUE5RSTBVUTBCREFJTEN5QVBLQUl3SUE4b0FpeEhJUXdMSUFrZ01pQUtJQWtvQWl3UkRBQkZEUWdnREEwQUlBQWdBQzBBWEVIdUFYRkJFSEk2QUZ3Q1FDQVlSUTBBSUFBb0FyUUJJUlpCQUNFTElCaEJCRThFUUFOQUlCWWdDMEdNTEd4cUloNG9BdGdySWh6OUVTQVdJQXRCQVhKQmpDeHNhaUliS0FMWUt5SVYvUndCSUJZZ0MwRUNja0dNTEd4cUloSW9BdGdySWhQOUhBSWdGaUFMUVFOeVFZd3NiR29pRGlnQzJDc2lEUDBjQS8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNElrSDlHd0JCQVhFRVFDQWVRZGdyYWlBY1FRRnFOZ0lBQ3lCQi9Sc0JRUUZ4QkVBZ0cwSFlLMm9nRlVFQmFqWUNBQXNnUWYwYkFrRUJjUVJBSUJKQjJDdHFJQk5CQVdvMkFnQUxJRUg5R3dOQkFYRUVRQ0FPUWRncmFpQU1RUUZxTmdJQUN5QUxRUVJxSWdzZ0RVY05BQXNnR0NBTklndEdEUUVMQTBBZ0ZpQUxRWXdzYkdvaURpZ0MyQ3NpREFSQUlBNUIyQ3RxSUF4QkFXbzJBZ0FMSUF0QkFXb2lDeUFZUncwQUN3c2dDa0VDUWFiR0FFRUFFQk1MSUFBdEFGeEJBWEVOQUNBSklBQW9BaEJCQWlBS0VCMUJBa2NFUUFKQUlBQW9BdVFCUVFGcUlCaEhEUUFnR0VVTkFDQUFLQUswQVNFTlFRQWhDd05BSUEwZ0MwR01MR3hxSWdrb0F0UXJSUVJBSUFrb0F0Z3JSUTBJQ3lBTFFRRnFJZ3NnR0VjTkFBc0xJQXBCQVVHREUwRUFFQk5CQUF3SkN5QUFLQUlRSUE5QktHcEJBaEFWQ3lBUEtBSW9JUXNnQUMwQVhFRUJjUTBBSUF0QjJmOERSdzBCQ3dzZ0MwSFovd05IRFFJZ0FDZ0NDRUdBQWtZTkFpQUFRWUFDTmdJSUlBQkJBRFlDNUFFTUFnc2dDeWdDR0JBVUlCc29BaWdnRTBFb2JHb2lBRUVBTmdJY0lBQkNBRGNDRkNBS1FRRkI4aDFCQUJBVFFRQU1CQXNnRHlBTE5nSVFJQXBCQkVIWDFRQWdEMEVRYWhBVElBQWdDellDNUFFZ0QwSFovd00yQWlnZ0FFR0FBallDQ0FzZ0FDZ0M1QUVoQ3lBQUtBSzBBU0VKQWtBQ1FDQUFMUUJjUVFGeERRQUNRQUpBSUFzZ0dFOE5BQ0FKSUF0QmpDeHNhaUVRQTBBZ0VDZ0MzQ3NOQVNBQUlBdEJBV29pQ3pZQzVBRWdFRUdNTEdvaEVDQUxJQmhIRFFBTERBRUxJQXNnR0VjTkFRc2dDRUVBTmdJQURBRUxBa0FDUUNBS1FRRWdDU0FMUVl3c2JHb2lFaWdDdENnRWYwR1FOUVVnRWkwQWlDeEJBbkZGRFFJQ1FDQVNLQUtvS0NJT1JRUkFRUUFoREF3QkN5QVNLQUtzS0NFSlFRQWhERUVBSVFzZ0RrRUVUd1JBSUE1QmZIRWhDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZCUVFBaEVBTkFJQWtnRUVFRGRHb2lEVUVjYWlBTlFSUnFJQTFCREdvZ0RmMWNBZ1Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdRZjJ1QVNGQklCQkJCR29pRUNBTFJ3MEFDeUJCSUVFZ1FmME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMnVBU0pCSUVFZ1FmME5CQVVHQndBQkFnTUFBUUlEQUFFQ0EvMnVBZjBiQUNFTUlBc2dEa1lOQVFzRFFDQUpJQXRCQTNScUtBSUVJQXhxSVF3Z0MwRUJhaUlMSUE1SERRQUxDeUFTSUF3UUdDSUpOZ0swS0NBSkRRRkJoQjhMUVFBUUV5QUtRUUZCMWo1QkFCQVRRUUFNQlFzZ0VpQU1OZ0s4S0NBU0tBS3NLQ0VKSUJJb0FxZ29JZ3dFUUVFQUlSQkJBQ0VMQTBBZ0NTQUxRUU4wSWhOcUlnNG9BZ0FpRFFSQUlCSW9BclFvSUJCcUlBMGdEaWdDQkJBV0dpQVNLQUtzS0NBVGFpSUpLQUlFSUFrb0FnQVFGQ0FTS0FLc0tDSUpJQk5xUWdBM0FnQWdFR29oRUNBU0tBS29LQ0VNQ3lBTFFRRnFJZ3NnREVrTkFBc0xJQkpCQURZQ3FDZ2dDUkFVSUJKQkFEWUNyQ2dnRWlBU0tBSzBLRFlDc0NnZ0VpQVNLQUs4S0RZQ3VDZ0xBbjhnQUNnQzZBRWlDeWdDSENJaUtBSk1JQUFvQXVRQklnbEJqQ3hzYWlnQzBDc2hHaUFMS0FJWUloTW9BaGdoSXlBTEtBSVVLQUlBSWgwZ0lpZ0NCQ0FpS0FJTUlnc2dDU0FKSUNJb0FoZ2lDVzRpRFNBSmJHdHNhaUlPSUJNb0FnQWlDU0FKSUE1Skd5SU1OZ0lBSUIxQmZ5QUxJQTVxSWdrZ0NTQU9TUnNpQ3lBVEtBSUlJZ2tnQ1NBTFN4c2lDVFlDQ0FKQUlBa2dERW9nREVFQVRuRkZCRUFnQ2tFQlFmVXpRUUFRRXd3QkN5QWRLQUlVSVJFZ0hTQWlLQUlJSUEwZ0lpZ0NFQ0lMYkdvaURDQVRLQUlFSWdrZ0NTQU1TUnNpRFRZQ0JDQWRRWDhnQ3lBTWFpSUpJQWtnREVrYklnc2dFeWdDRENJSklBa2dDMHNiSWdrMkFnd2dDU0FOU2lBTlFRQk9jVVVFUUNBS1FRRkJ6ek5CQUJBVERBRUxBa0FnR2lnQ0JBUkFJQjBvQWhBTkFVRUJEQU1MSUFwQkFVSEpLVUVBRUJNTUFRc0NRQUpBQTBBZ0kwRUFOZ0lrSUJFZ0l6UUNBQ0kyUWdGOUlqSWdIVFFDQUh3Z05uOCtBZ0FnRVNBak5BSUVJalZDQVgwaU15QWROQUlFZkNBMWZ6NENCQ0FSSURJZ0hUUUNDSHdnTm44K0FnZ2dIVFFDRENFeUlCRWdNVFlDRUNBUklESWdNM3dnTlg4K0Fnd2dFU0FhS0FJRUlnczJBaFFnRVVFQklBc2dJaWdDVUNJSmF5QUpJQXRMR3pZQ0dDQVJLQUkwRUJRZ0VVRUFOZ0pFSUJIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3STBJQXRCbUFGc0lRMENRQ0FSS0FJY0lnbEZCRUFnRVNBTkVCZ2lDVFlDSENBSlJRMEZJQkVnRFRZQ0lDQUpRUUFnRFJBWkdnd0JDeUFOSUJFb0FpQk5EUUFnQ1NBTkVCc2lDMFVFUUNBS1FRRkI3UmRCQUJBVElCRW9BaHdRRkNBUlFnQTNBaHdNQlFzZ0VTQUxOZ0ljSUFzZ0VTZ0NJQ0lKYWtFQUlBMGdDV3NRR1JvZ0VTQU5OZ0lnQ3lBUktBSVVJZ3NFUUNBYVFiQUhhaUV3SUJwQnJBWnFJUjRnR2tFY2FpRXFJQkVvQWh3aEdVRUFJU1FEUUNBWlFuOGdDMEVCYXlJSnJTSTBoa0ovaFNJeklCRTBBZ0I4SURTSHB5SVZOZ0lBSUJrZ015QVJOQUlFZkNBMGg2Y2lFallDQkNBWklETWdFVFFDQ0h3Z05JY2lNcWNpRXpZQ0NDQVpJRE1nRVRRQ0RId2dOSWNpTmFjaURqWUNEQ0F5eEVJQklCNGdKRUVDZENJTmFpZ0NBQ0lmclNJeWhueENBWDBnTW9lbklCOTBJZ3hCQUVnTkJDQTF4RUovSUEwZ01Hb29BZ0FpSUswaU1vWkNmNFY4SURLSHB5QWdkQ0lOUVFCSURRUWdHU0FOUVg4Z0lIUWdFbkVpSzJzZ0lIVkJBQ0FPSUJKSEd5SU5OZ0lVSUJrZ0RFRi9JQjkwSUJWeElpeHJJQjkxUVFBZ0V5QVZSeHNpRERZQ0VBSkFJQXhGRFFBZ0RLMGdEYTErUWlDSVVBMEFEQVFMSUF3Z0RXd2lMVUhuekprelR3MERJQzFCS0d3aElTQVpJQ1FFZnlBZ1FRRnJJU0FnSDBFQmF5RWZJQ3VzUWdGOFFnR0lweUVySUN5c1FnRjhRZ0dJcHlFc1FRTUZRUUVMTmdJWUlCbEJIR29oRkNBclFRRWdJSFJxSVJ3Z0xFRUJJQjkwYWlFYlFnRWdDNjBpTjRZaE9FSi9JQm9vQWd3aUN5QWdJQXNnSUVrYklpV3RJajJHUW4rRklUNUNmeUFhS0FJSUlnc2dIeUFMSUI5Skd5SW1yU0kvaGtKL2hTRkFRUUFoRUFOQUFuNGdKRVVFUUNBeklCRTBBZ1I4SURTSElUa2dNeUFSTkFJQWZDQTBoeUU2UVFBaEN5QXpJakloT3lBMERBRUxJRGdnRUVFQmFpSUxRUUYyclNBMGhrSi9oWHdpT3lBUk5BSUVmQ0EzaHlFNUlEZ2dDMEVCY2EwZ05JWkNmNFY4SWpJZ0VUUUNBSHdnTjRjaE9pQTNDeUU4SUJFMEFnZ2hOaUFSTkFJTUlUVWdGQ0E1UGdJRUlCUWdPajRDQUNBVUlBczJBaEFnRkNBMUlEdDhJRHlIUGdJTUlCUWdNaUEyZkNBOGh6NENDRUVBSVEwQ1FDQWFLQUlVUlEwQUlBdEZEUUJCQWtFQklBdEJBMFliSVEwTFJBQUFBQUFBQVBBL0lVTUNRQ0FqS0FJWUlBMXFJQ29vQWdBaURXc2lDMEdBQ0U0RVFFUUFBQUFBQUFEZ2Z5RkRJQXRCL3c5SkJFQWdDMEgvQjJzaEN3d0NDMFFBQUFBQUFBRHdmeUZEUWYwWElBc2dDMEg5RjA4YlFmNFBheUVMREFFTElBdEJnWGhLRFFCRUFBQUFBQUFBWUFNaFF5QUxRYmh3U3dSQUlBdEJ5UWRxSVFzTUFRdEVBQUFBQUFBQUFBQWhRMEh3YUNBTElBdEI4R2hORzBHU0Qyb2hDd3NnRkNBcUtBSUV0MFFBQUFBQUFBQkFQNkpFQUFBQUFBQUE4RCtnSUVNZ0MwSC9CMnF0UWpTR3Y2S2l0amdDSUNBVUlBMGdHaWdDcEFacVFRRnJOZ0ljSUJRb0FoUWhDd0pBQWtBQ1FDQXRSUTBBSUFzTkFDQVVJQ0VRR0NJTE5nSVVJQXRGQkVBZ0NrRUJRWUVXUVFBUUV3d0tDeUFMUVFBZ0lSQVpHaUFVSUNFMkFoZ01BUXNnSVNBVUtBSVlTd1JBSUFzZ0lSQWJJZzFGQkVBZ0NrRUJRWUVXUVFBUUV5QVVLQUlVRUJRZ0ZFSUFOd0lVREFvTElCUWdEVFlDRkNBTklCUW9BaGdpQzJwQkFDQWhJQXRyRUJrYUlCUWdJVFlDR0FzZ0xVVU5BUXNnRkNnQ0ZDRUxRUUFoTGdOQUlBc2dMaUF1SUJrb0FoQWlEVzRpRXlBTmJHc2dIM1FpRGlBc2FpSU1JQlFvQWdBaURTQU1JQTFLR3lJVk5nSUFJQXNnRXlBZ2RDSVNJQ3RxSWd3Z0ZDZ0NCQ0lOSUF3Z0RVb2JJaE0yQWdRZ0N5QU9JQnRxSWd3Z0ZDZ0NDQ0lOSUF3Z0RVZ2JJZzQyQWdnZ0N5QVNJQnhxSWd3Z0ZDZ0NEQ0lOSUF3Z0RVZ2JJZzAyQWd3Z0N5QkFJQTZzZkNBL2g2Y2dGU0FtZFNJb2F5QW1kQ0FtZFNJTU5nSVFJQXNnUGlBTnJId2dQWWVuSUJNZ0pYVWlLV3NnSlhRZ0pYVWlEVFlDRkNBTUlBMXNJaSt0UXNRQWZrSWdpRUlBVWdSQUlBcEJBVUhTRmtFQUVCTU1DUXNnTDBIRUFHd2hEZ0pBQWtBQ1FDQUxLQUlZSWcwTkFDQXZSUTBBSUFzZ0RoQVlJZzAyQWhnZ0RVVU5DeUFOUVFBZ0RoQVpHZ3dCQ3lBT0lBc29BaHhORFFFZ0RTQU9FQnNpREVVRVFDQUxLQUlZRUJRZ0MwSUFOd0lZSUFwQkFVSFFFMEVBRUJNTUN3c2dDeUFNTmdJWUlBd2dDeWdDSENJTmFrRUFJQTRnRFdzUUdSb0xJQXNnRGpZQ0hBc2dDeWdDRkNFT0lBc29BaEFoRENBTEFuOGdDeWdDSUNJTlJRUkFJQXdnRGlBS0VHd01BUXNnRFNBTUlBNGdDaEJxQ3pZQ0lDQUxLQUlVSVE0Z0N5Z0NFQ0VNSUFzQ2Z5QUxLQUlrSWcxRkJFQWdEQ0FPSUFvUWJBd0JDeUFOSUF3Z0RpQUtFR29MTmdJa0lDOEVRQ0FwUVFGcUlSSWdLRUVCYWlFVFFRQWhKd05BSUNjZ0N5Z0NFQ0lPYmlFWUFrQWdDeWdDR0NBblFjUUFiR29pRnlnQ0FDSVZCRUFnRnlnQ09DRU1JQmNvQWdRaERTQVhLQUl3SVJZZ0Z5Z0NQQkFVSUJmOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SW9JQmRCUUd0QkFEWUNBQ0FYUWdBM0FqZ2dGLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWhnZ0YvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMExBZ2dnRnlBVk5nSUFJQmNnRmpZQ01DQVdCRUFnRlVFQUlCWkJHR3dRR1JvTElCY2dERFlDT0NBWElBMDJBZ1FNQVFzZ0YwRUtRUmdRRnlJTk5nSUFJQTFGRFFzZ0YwRUtOZ0l3Q3lBWElDY2dEaUFZYkdzaURpQW9haUFtZENJTUlBc29BZ0FpRFNBTUlBMUtHellDQ0NBWElCZ2dLV29nSlhRaURDQUxLQUlFSWcwZ0RDQU5TaHMyQWd3Z0Z5QU9JQk5xSUNaMElnd2dDeWdDQ0NJTklBd2dEVWdiTmdJUUlCY2dFaUFZYWlBbGRDSU1JQXNvQWd3aURTQU1JQTFJR3pZQ0ZDQW5RUUZxSWljZ0wwY05BQXNMSUF0QktHb2hDeUF1UVFGcUlpNGdMVWNOQUFzTElDcEJDR29oS2lBVVFTUnFJUlFnRUVFQmFpSVFJQmtvQWhoSkRRQUxJQmxCbUFGcUlSa2dDU0VMSUNSQkFXb2lKQ0FSS0FJVVNRMEFDd3NnSTBFMGFpRWpJQkZCekFCcUlSRWdHa0c0Q0dvaEdpQXhRUUZxSWpFZ0hTZ0NFRWtOQUF0QkFRd0RDeUFLUVFGQmdSZEJBQkFUREFFTElBcEJBVUdnRWtFQUVCTUxRUUFMUlFSQUlBcEJBVUd2SEVFQUVCTkJBQXdFQ3lBQUtBTGtBU0VKSUE4Z0FDZ0NnQUVnQUNnQ2hBRnNOZ0lFSUE4Z0NVRUJhallDQUNBS1FRUkJqTndBSUE4UUV5QUJJQUFvQXVRQk5nSUFJQWhCQVRZQ0FDQUNCRUFnQWlBQUtBTG9BVUVBRUYwaUFUWUNBRUVBSUFGQmYwWU5CQm9MSUFNZ0FDZ0M2QUVvQWhRb0FnQWlBU2dDQURZQ0FDQUVJQUVvQWdRMkFnQWdCU0FCS0FJSU5nSUFJQVlnQVNnQ0REWUNBQ0FISUFFb0FoQTJBZ0FnQUNBQUtBSUlRWUFCY2pZQ0NBdEJBUXdDQ3lBS1FRRWdFRUVBRUJNTElBcEJBVUhSSEVFQUVCTkJBQXNnRDBIUUFHb2tBQXZ1RUFJTWZ3SitBa0FnQUNnQ0lDSUNEUUFDUUNBQUtBSVFJZ2xCQlVvRVFDQUpJUUlNQVFzQ1FBSkFJQUFvQWhRaUJrRUZUZ1JBSUFBb0FnQWlBU2dDQUNFQ0lBQWdBVUVFYWpZQ0FDQUdRUVJySVFjTUFRc2dCa0VBVEFSQVFYOGhBZ3dDQ3lBQUtBSUFJUUVDZnlBR1FRRkdCRUJCZnlFRlFRQU1BUXRCZnlFRklBWkJBV3NpQkVFQmNRSkFJQVpCQWtZRVFFRUFJUUlnQmlFRURBRUxJQVJCZm5FaEMwRUFJUUlnQVNFRElBWWhCQU5BSUFBZ0EwRUJhallDQUNBRExRQUFJUXdnQUNBRFFRSnFJZ0UyQWdBZ0FDQUVRUUZyTmdJVUlBTXRBQUVoQXlBQUlBUkJBbXNpQkRZQ0ZDQUZRZjhCSUFKMFFYOXpjU0FNSUFKMGNrR0EvZ01nQW5SQmYzTnhJQU1nQWtFSWNuUnlJUVVnQWtFUWFpRUNJQUVoQXlBSVFRSnFJZ2dnQzBjTkFBc0xCRUFnQUNBQlFRRnFJZ00yQWdBZ0FTMEFBQ0VCSUFBZ0JFRUJhellDRkNBRlFmOEJJQUowUVg5emNTQUJJQUowY2lFRklBTWhBUXNnQmtFRGRFRUlhd3NoQWlBQUlBRkJBV28yQWdBZ0JVSC9BU0FDZEVGL2MzRWdBUzBBQUVFUGNpQUNkSEloQWdzZ0FDQUhOZ0lVQ3lBQUtBSVlJUUVnQUNBQ1FSaDJJZ1JCL3dGR05nSVlJQUFnQ1NBQ1FSQjJRZjhCY1NJRFFmOEJSaUlHSUFKQkNIWkIvd0Z4SWdWQi93RkdJZ2NnQVNBQ1FmOEJjU0lJUWY4QlJpSUthbXBxSWdGclFTQnFJZ0kyQWhBZ0FDQUFLUU1JSUFoQkIwRUlJQW9iZENBRmNrRUhRUWdnQnh0MElBTnlRUWRCQ0NBR0czUWdCSEt0SUFFZ0NXdEJJR3F0aG9RM0F3Z2dBa0VHVGcwQVFRQWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQWF3Z0FDa0RLRUpBZzRRM0F5Z2dBa0VHU0FSQVFRRWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC9RSU1nQWF4Q0I0YUVOd01vSUFKQkJrZ0VRRUVDSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhBd0orSUFBcEF3Z2lEVUlBVXdSQVFRd2dBVUVCYWlBQlFRdE9HeUVFSUFKQkFXc2hBa0YvSUFOMFFYOXpRUUYwSVFGQ0FRd0JDeUFCUVFGclFRQWdBVUVCU2hzaEJDQU5RVDhnQTJ1dGlLZEJmeUFEZEVGL2MzRkJBWFJCQVhJaEFTQUNJQU5CQVdvaUEyc2hBaUFEclFzaERpQUFJQUkyQWhBZ0FDQUVOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy85QWd5QUJyRUlPaG9RM0F5Z2dBa0VHU0FSQVFRTWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLzlBZ3lBQnJFSVZob1EzQXlnZ0FrRUdTQVJBUVFRaEFnd0JDeUFBS0FJY0lnRkJBblJCNEtFQmFpZ0NBQ0VEQW40Z0FDa0RDQ0lOUWdCVEJFQkJEQ0FCUVFGcUlBRkJDMDRiSVFRZ0FrRUJheUVDUVg4Z0EzUkJmM05CQVhRaEFVSUJEQUVMSUFGQkFXdEJBQ0FCUVFGS0d5RUVJQTFCUHlBRGE2MklwMEYvSUFOMFFYOXpjVUVCZEVFQmNpRUJJQUlnQTBFQmFpSURheUVDSUFPdEN5RU9JQUFnQWpZQ0VDQUFJQVEyQWh3Z0FDQU5JQTZHTndNSUlBQWdBQ2tES0VMLy8vLy9RSU1nQWF4Q0hJYUVOd01vSUFKQkJrZ0VRRUVGSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhCQUovSUFBcEF3Z2lEVUlBVXdSQUlBSkJBV3NoQTBGL0lBUjBRWDl6UVFGMElRVkNBU0VPUVF3Z0FVRUJhaUFCUVF0T0d3d0JDeUFOUVQ4Z0JHdXRpS2RCZnlBRWRFRi9jM0ZCQVhSQkFYSWhCU0FDSUFSQkFXb2lCR3NoQXlBRXJTRU9JQUZCQVd0QkFDQUJRUUZLR3dzaEFTQUFJQU0yQWhBZ0FDQUJOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy8vLy8vOUFneUFGclVJamhvUTNBeWhCQmlFQ0lBTkJCa2dOQUNBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFRUFuOGdBQ2tEQ0NJTlFnQlRCRUFnQTBFQmF5RUNRWDhnQkhSQmYzTkJBWFFoQlVJQklRNUJEQ0FCUVFGcUlBRkJDMDRiREFFTElBMUJQeUFFYTYySXAwRi9JQVIwUVg5emNVRUJkRUVCY2lFRklBTWdCRUVCYWlJRWF5RUNJQVN0SVE0Z0FVRUJhMEVBSUFGQkFVb2JDeUVCSUFBZ0FqWUNFQ0FBSUFFMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy85QWd5QUZyVUlxaG9RM0F5Z2dBa0VHU0FSQVFRY2hBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy8vL1FJTWdBYTFDTVlhRU53TW9RUWdoQWdzZ0FDQUNRUUZyTmdJZ0lBQWdBQ2tES0NJT1FnZUlOd01vSUE2blFmOEFjUXNpQVFGL0lBQUVRQ0FBS0FJTUlnRUVRQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUUxDNElCQWdGK0EzOENRQ0FBUW9DQWdJQVFWQVJBSUFBaEFnd0JDd05BSUFGQkFXc2lBU0FBUWdxQUlnSkM5Z0YrSUFCOHAwRXdjam9BQUNBQVF2Ly8vLytmQVZZZ0FpRUFEUUFMQ3lBQ1FnQlNCRUFnQXFjaEF3TkFJQUZCQVdzaUFTQURRUXB1SWdSQjlnRnNJQU5xUVRCeU9nQUFJQU5CQ1VzZ0JDRUREUUFMQ3lBQkMwOEJBWDhnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFKRkJFQWdBQ0FDUVFSeU5nSkVRUUFQQ3lBQUlBRTNBemdnQUNBQ1FYdHhOZ0pFUVFFTDN0NEJCSEIvQm5zSWZnRjlJd0JCRUdzaVRDUUFBa0FnQUMwQUNFR0FBWEZGRFFBZ0FTQUFLQUxrQVVjTkFDQUFLQUswQVNBQlFZd3NiR29pVFNnQzNDc2lGMFVFUUNCTkVEUU1BUXNnQUNnQzRBRWFJQUFvQXVnQklSc2dBQ2dDWkNJSFJRUkFJQUFvQW1BaEJ3c2dCeWdDQUNFR0lBY29BZ1FoQ3lBSEtBSUlJUWtnQnlnQ0RDRVBJQUFvQWp3aEJ5QUFLQUpBSVE0Z1RTZ0M0Q3NoQ0NNQVFSQnJJajhrQUNBYklBRTJBaVFnR3lnQ0hDZ0NUQ0VNSUJ0QkFUWUNRQ0FiSUE4MkFqd2dHeUFKTmdJNElCc2dDellDTkNBYklBWTJBakFnR3lBTUlBRkJqQ3hzYWpZQ0lDQWJLQUpFRUJSQkFDRUxJQnRCQURZQ1JBSkFJQWNFUUVFRUlCc29BaGdvQWhBUUZ5SUxSUVJBREFJTElBZEJCRThFUUNBSFFYeHhJUWxCQUNFQkEwQWdDeUFPSUNKQkFuUnFJZ1lvQWdCQkFuUnFRUUUyQWdBZ0N5QUdLQUlFUVFKMGFrRUJOZ0lBSUFzZ0JpZ0NDRUVDZEdwQkFUWUNBQ0FMSUFZb0FneEJBblJxUVFFMkFnQWdJa0VFYWlFaUlBRkJCR29pQVNBSlJ3MEFDd3NnQjBFRGNTSUJCRUFEUUNBTElBNGdJa0VDZEdvb0FnQkJBblJxUVFFMkFnQWdJa0VCYWlFaUlCbEJBV29pR1NBQlJ3MEFDd3NnR3lBTE5nSkVDd0pBQWtBZ0d5Z0NHQ0lHS0FJUUlnNUZEUUJCQUNFaUFrQURRQUpBSUFzRVFDQUxJQ0pCQW5ScUtBSUFSUTBCQ3lBR0tBSVlJQ0pCTkd4cUlnRTFBZ1FpZkVJQmZTS0FBU0FiTlFJOGZDQjhnQ0dCQVNBQk5RSUFJbjFDQVgwaWZpQWJOUUk0ZkNCOWdDR0NBU0NBQVNBYk5RSTBmQ0I4Z0NGOElCc29BaFFvQWdBb0FoUWdJa0hNQUd4cUlnRW9BaFFnQVNnQ0dHc2lCMEVmU3cwQUFrQWdmaUFiTlFJd2ZDQjlnS2NpQ1NBQktBSUFheUlQUVFBZ0NTQVBUeHNnQjNZTkFDQjhweUlKSUFFb0FnUnJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ2dpQ1NDQ0FhZHJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ3dpQVNDQkFhZHJJZ2xCQUNBQklBbFBHeUFIZGtVTkFRc2dHMEVBTmdKQURBSUxJQ0pCQVdvaUlpQU9SdzBBQ3lBYktBSkFSUTBBUVFBaEdRTkFJQnNvQWhRb0FnQW9BaFFnR1VITUFHeHFJZ0VvQWh3Z0FTZ0NHRUdZQVd4cUlnZEJsQUZyS0FJQUlRWWdCMEdNQVdzb0FnQWhDeUFIUVpnQmF5Z0NBQ0VPSUFkQmtBRnJLQUlBSVFrQ1FDQWJLQUpFSWdjRVFDQUhJQmxCQW5ScUtBSUFSUTBCQ3lBTElBWnJJUWNnQ1NBT2F5RU9Ba0FnQmlBTFJnMEFJQWV0SUE2dGZrSWdpRkFOQUVFQUlTSWdCVUVCUVlFWFFRQVFFd3dHQ3lBSElBNXNJZ2RCZ0lDQWdBUlBCRUJCQUNFaUlBVkJBVUdCRjBFQUVCTU1CZ3NnQVNBSFFRSjBJZ2MyQWl3Q1FBSkFBa0FnQVNnQ0pDSUdCRUFnQnlBQktBSXdUUTBFSUFFb0FpZ05BUXNnQVNBSEVCd2lCellDSkNBSFFRRWdBU2dDTENJSEcwVU5BU0FCUVFFMkFpZ2dBU0FITmdJd0RBTUxJQVlRRkNBQklBRW9BaXdRSENJSE5nSWtJQWNOQVNBQlFRQTJBakFnQVVJQU53SW9DMEVBSVNJZ0JVRUJRWUVYUVFBUUV3d0dDeUFCUVFFMkFpZ2dBU0FCS0FJc05nSXdDeUFaUVFGcUloa2dHeWdDR0NJR0tBSVFTUTBBQ3d3QkN5QUdLQUlZSVJrZ0d5Z0NGQ2dDQUNnQ0ZDRU5RUUFoQVFOQUFrQWdDd1JBSUFzZ0FVRUNkR29vQWdCRkRRRUxJQTBnQVVITUFHeHFJZ2NnQnlnQ0FDSUpJQmtnQVVFMGJHb2lEelVDQUNKOFFnRjlJb0FCSUJzMUFqQjhJSHlBcHlJTUlBa2dERXNiSWdrMkFqZ2dCeUFIS0FJRUlnd2dEelVDQkNKOVFnRjlJb0VCSUJzMUFqUjhJSDJBcHlJUElBd2dEMHNiSWc4MkFqd2dCeUFIS0FJSUlnd2dnQUVnR3pVQ09Id2dmSUNuSWdvZ0NpQU1TeHNpRERZQ1FDQUhJQWNvQWd3aUNpQ0JBU0FiTlFJOGZDQjlnS2NpRlNBS0lCVkpHeUlLTmdKRUlBa2dERXNOQXlBS0lBOUpEUU1nQnlnQ0ZDSVZSUTBBSUFxdFFnRjlJWUVCSUF5dFFnRjlJWDRnRDYxQ0FYMGhnZ0VnQ2ExQ0FYMGhnd0VnRmEwaGZ5QUhLQUljSVFsQ0FDRjlBMEFnQ1NCOXB5SVBRWmdCYkdvaUIwSUJJQlVnRDBGL2MycXRJbnlHSW9BQklJRUJmQ0I4aUQ0Q2xBRWdCeUIrSUlBQmZDQjhpRDRDa0FFZ0J5Q0FBU0NDQVh3Z2ZJZytBb3dCSUFjZ2dBRWdnd0Y4SUh5SVBnS0lBU0I5UWdGOEluMGdmMUlOQUFzTElBRkJBV29pQVNBT1J3MEFDd3RCQUNFaUlEOUJBRFlDQ0NBYktBSWNJUUZCQVVFSUVCY2lJd1JBSUNNZ0FUWUNCQ0FqSUFZMkFnQUxJQ05GRFFFZ0d5Z0NKQ0VVSUJzb0FoUW9BZ0FoSHlNQVFaQUJheUlRSkFBZ0ZFR01MR3dpQVNBaktBSUVJZ2tvQWt4cUloNG9BcVFESVM0Q2Z5QWpLQUlBSWlnaEZTQUZJVE5CQUNFT0l3QkJJR3NpRFNRQUlBRWdDU2dDVEdvaUdDZ0NwQU1oSFFKQUlCVW9BaEFpRmtHUUJHd1FHQ0lQUlEwQUFrQWdGa0VDZEJBWUlndEZCRUFnRHlFTERBRUxBa0FDUUFKL0lBa29Ba3dnRkVHTUxHeHFJZ29vQXFRRElobEJBV29pQVVId0FSQVhJZ2NFUUFKQUlBRUVRQ0FWS0FJUUlRd2dCeUVCQTBBZ0FTQXpOZ0xzQVNBQklBeEJFQkFYSWdZMkFzZ0JJQVpGRFFJZ0FTQVZLQUlRSWhvMkFzUUJRUUFoQmtFQUlRd2dHZ1JBQTBBZ0FTZ0N5QUVnQmtFRWRHb2lEQ0FLS0FMUUt5QUdRYmdJYkdvaUdpZ0NCRUVRRUJjaUpqWUNEQ0FtUlEwRUlBd2dHaWdDQkRZQ0NDQUdRUUZxSWdZZ0ZTZ0NFQ0lNU1EwQUN3c2dBVUh3QVdvaEFTQVRJQmxHSUJOQkFXb2hFMFVOQUFzTElBY01BZ3NnQnlnQ0JDSUJCRUFnQVJBVUlBZEJBRFlDQkFzZ0J5RUJRUUFoQ2dOQUlBRW9Bc2dCSWdZRVFFRUFJUXdnQVNnQ3hBRWlFd1IvQTBBZ0JpZ0NEQ0lhQkVBZ0doQVVJQVpCQURZQ0RDQUJLQUxFQVNFVEN5QUdRUkJxSVFZZ0RFRUJhaUlNSUJOSkRRQUxJQUVvQXNnQkJTQUdDeEFVSUFGQkFEWUN5QUVMSUFGQjhBRnFJUUVnQ2lBWlJpQUtRUUZxSVFwRkRRQUxJQWNRRkF0QkFBc2lCd1JBSUJaRkRRSkJBQ0VLSUE4aEJpQVdRUU5ORFFFZ0JpQVdRWHh4SWdwQmtBUnNhaUVHSUE4aEFRTkFJQXNnRVVFQ2RHb2dBZjBSL1F3QUFBQUFFQUlBQUNBRUFBQXdCZ0FBL2E0Qi9Rc0NBQ0FCUWNBUWFpRUJJQkZCQkdvaUVTQUtSdzBBQ3lBS0lCWkhEUUVNQWdzZ0R4QVVEQUlMQTBBZ0N5QUtRUUowYWlBR05nSUFJQVpCa0FScUlRWWdDa0VCYWlJS0lCWkhEUUFMQ3lBTElSbEJBQ0VUSUFrb0Frd2dGRUdNTEd4cUtBTFFLeUVCSUJVb0FoZ2hDaUFOSUFrb0FnUWdDU2dDRENBVUlCUWdDU2dDR0NJR2JpSUxJQVpzYTJ4cUlnWWdGU2dDQUNJTUlBWWdERXNiTmdJVUlBMUJmeUFHSUFrb0FneHFJZ3dnQmlBTVN4c2lCaUFWS0FJSUlnd2dCaUFNU1JzMkFoQWdEU0FKS0FJSUlBa29BaEFnQzJ4cUlnWWdGU2dDQkNJTElBWWdDMHNiTmdJTUlBMUJmeUFHSUFrb0FoQnFJZ3NnQmlBTFN4c2lCaUFWS0FJTUlnc2dCaUFMU1JzMkFnZ2dEVUVBTmdJWUlBMUJBRFlDSENBTlFmLy8vLzhITmdJRUlBMUIvLy8vL3djMkFnQWdGU2dDRUFSQUEwQWdHUVIvSUJrZ0UwRUNkR29vQWdBRlFRQUxJUXNnQ2pVQ0JDSjhRZ0Y5SW9BQklBMDFBZ2g4SUh5QUlZRUJJQW8xQWdBaWZVSUJmU0orSUEwMUFoQjhJSDJBSVlJQklJQUJJQTAxQWd4OElIeUFJWHdnZmlBTk5RSVVmQ0I5Z0NGOUlBRW9BZ1FpQ1NBTktBSWNTd1JBSUEwZ0NUWUNIQ0FCS0FJRUlRa0xJQWtFUUNBQlFiQUhhaUVhSUFGQnJBWnFJU1lnZ1FGQy8vLy8vdytEUWdGOUlZQUJJSUlCUXYvLy8vOFBnMElCZlNHQkFTQjhRdi8vLy84UGcwSUJmU0YrSUgxQy8vLy8vdytEUWdGOUlZSUJRUUFoRkFOQUlCb2dGRUVDZENJTWFpZ0NBQ0VHSUF3Z0ptb29BZ0FoREVFQUlSRWdDd1JBSUFzZ0JqWUNCQ0FMSUF3MkFnQWdDMEVJYWlFUkN3SkFJQXdnQ1VFQmF5SUphaUlMUVI5TERRQWdDaWdDQUNJa1FYOGdDM1pMRFFBZ0RTQU5LQUlFSWl3Z0pDQUxkQ0lMSUFzZ0xFc2JOZ0lFQ3dKQUlBWWdDV29pQzBFZlN3MEFJQW9vQWdRaUpFRi9JQXQyU3cwQUlBMGdEU2dDQUNJc0lDUWdDM1FpQ3lBTElDeExHellDQUF0QkFDRUxRZ0VnQ2EwaWZJWWlmU0NBQVh3Z2ZJZ2lnd0ZDLy8vLy93K0RRZ0VnQnEwaWY0WjhRZ0Y5SUgrSXB5QjlJSDU4SUh5SXB5SWtJQVoyYTBGL0lBWjJjVUVBSUNRZ2d3R25SeHNoQmlCOUlJRUJmQ0I4aUNLREFVTC8vLy8vRDROQ0FTQU1yU0ovaG54Q0FYMGdmNGluSUgwZ2dnRjhJSHlJcHlJa0lBeDJhMEYvSUF4MmNVRUFJQ1FnZ3dHblJ4c2hEQ0FSQkVBZ0VTQUdOZ0lFSUJFZ0REWUNBQ0FSUVFocUlRc0xJQVlnREd3aUJpQU5LQUlZU3dSQUlBMGdCallDR0FzZ0ZFRUJhaUlVSUFFb0FnUkpEUUFMQ3lBS1FUUnFJUW9nQVVHNENHb2hBU0FUUVFGcUloTWdGU2dDRUVrTkFBc0xJQjFCQVdvaEppQU5LQUljSVJNZ0RTZ0NHQ0VVSUFkQkFEWUNCQUpBSUJnb0FnaEJBV29pQWEwZ0V5QVVJQlpzSWlSc0locXRma0lnaUZBRVFDQUhJQUVnR213aUFUWUNDQ0FISUFGQkFoQVhJZ0UyQWdRZ0FRMEJDeUFQRUJRZ0dSQVVJQWNvQWdRaUFRUkFJQUVRRkNBSFFRQTJBZ1FMSUNaRkJFQWdCeUVMREFJTFFRQWhDeUFISVFFRFFDQUJLQUxJQVNJS0JFQkJBQ0VHSUFFb0FzUUJJaEVFZndOQUlBb29BZ3dpQ1FSQUlBa1FGQ0FLUVFBMkFnd2dBU2dDeEFFaEVRc2dDa0VRYWlFS0lBWkJBV29pQmlBUlNRMEFDeUFCS0FMSUFRVWdDZ3NRRkNBQlFRQTJBc2dCQ3lBQlFmQUJhaUVCSUFzZ0hVWWdDMEVCYWlFTFJRMEFDeUFISVFzTUFRc2dGU2dDR0NFTUlBY2dEU2dDRkNJc05nTE1BU0FISUEwb0Fnd2lMVFlDMEFFZ0J5QU5LQUlRSWlBMkF0UUJJQWNnRFNnQ0NDSTROZ0xZQVNBSElCbzJBZ3dnQnlBa05nSVFJQWNnRkRZQ0ZFRUJJUlVnQjBFQk5nSVlJQllFUUNBSEtBTElBU0VCUVFBaENTQU1JUXNEUUNBWklBbEJBblJxS0FJQUlRb2dBU0FMS0FJQU5nSUFJQUVnQ3lnQ0JEWUNCQUpBSUFFb0FnZ2lEa1VOQUNBQktBSU1JUVlnRGtFQlJ3UkFJQTVCZm5FaFBFRUFJUkVEUUNBR0lBb29BZ0EyQWdBZ0JpQUtLQUlFTmdJRUlBWWdDaWdDQ0RZQ0NDQUdJQW9vQWd3MkFnd2dCaUFLS0FJUU5nSVFJQVlnQ2lnQ0ZEWUNGQ0FHSUFvb0FoZzJBaGdnQmlBS0tBSWNOZ0ljSUFaQklHb2hCaUFLUVNCcUlRb2dFVUVDYWlJUklEeEhEUUFMQ3lBT1FRRnhSUTBBSUFZZ0NpZ0NBRFlDQUNBR0lBb29BZ1EyQWdRZ0JpQUtLQUlJTmdJSUlBWWdDaWdDRERZQ0RBc2dDMEUwYWlFTElBRkJFR29oQVNBSlFRRnFJZ2tnRmtjTkFBc0xJQ1pCQVVzRVFDQUhJUTREUUNBT0lEZzJBc2dESUE0Z0lEWUN4QU1nRGlBdE5nTEFBeUFPSUN3MkFyd0RJQTVCQVRZQ2lBSWdEaUFVTmdLRUFpQU9JQ1EyQW9BQ0lBNGdHallDL0FFZ0ZnUkFJQTRvQXJnRElRRkJBQ0VKSUF3aEN3TkFJQmtnQ1VFQ2RHb29BZ0FoQ2lBQklBc29BZ0EyQWdBZ0FTQUxLQUlFTmdJRUFrQWdBU2dDQ0NJbVJRMEFJQUVvQWd3aEJpQW1RUUZIQkVBZ0prRitjU0U4UVFBaEVRTkFJQVlnQ2lnQ0FEWUNBQ0FHSUFvb0FnUTJBZ1FnQmlBS0tBSUlOZ0lJSUFZZ0NpZ0NERFlDRENBR0lBb29BaEEyQWhBZ0JpQUtLQUlVTmdJVUlBWWdDaWdDR0RZQ0dDQUdJQW9vQWh3MkFod2dCa0VnYWlFR0lBcEJJR29oQ2lBUlFRSnFJaEVnUEVjTkFBc0xJQ1pCQVhGRkRRQWdCaUFLS0FJQU5nSUFJQVlnQ2lnQ0JEWUNCQ0FHSUFvb0FnZzJBZ2dnQmlBS0tBSU1OZ0lNQ3lBTFFUUnFJUXNnQVVFUWFpRUJJQWxCQVdvaUNTQVdSdzBBQ3dzZ0RpQU9LUUlFTndMMEFTQVZJQjFISUE1QjhBRnFJUTRnRlVFQmFpRVZEUUFMQ3lBUEVCUWdHUkFVSUJnb0FxUURJUXNDUUNBWUxRQ0lMRUVFY1FSQUlBdEJmMFlOQVNBWVFhZ0RhaUVHSUJnb0FnZ2hBVUVBSVJFZ0J5RUtBMEFnQmlnQ0pDRU9JQXBCQVRZQ0xDQUtJQTQyQWxRZ0NpQUdLQUlBTmdJd0lBWW9BZ1FoRGlBS1FnQTNBa1FnQ2lBT05nSTBJQW9nQmlnQ0REWUNQQ0FLSUFZb0FoQTJBa0FnQmlnQ0NDRU9JQW9nRkRZQ1RDQUtJQTRnQVNBQklBNUxHellDT0NBR1FaUUJhaUVHSUFwQjhBRnFJUW9nQ3lBUlJpQVJRUUZxSVJGRkRRQUxEQUVMSUF0QmYwWU5BQ0FZS0FJSUlRWWdHQ2dDQkNFT0lBY2hDaUFMQkVBZ0MwRUJha0YrY1NFSlFRQWhBUU5BSUFwQ0FEY0NSQ0FLUVFBMkFqUWdDa0lCTndJc0lBb2dEallDVkNBS0lCTTJBandnQ2lBT05nTEVBaUFLSUJRMkFrd2dDaUFHTmdJNElBcENBRGNDdEFJZ0NrRUFOZ0trQWlBS1FnRTNBcHdDSUFvZ0V6WUNyQUlnQ2lBR05nS29BaUFLSUJRMkFyd0NJQW9nQ2lnQ3hBRTJBa0FnQ2lBS0tBSzBBellDc0FJZ0NrSGdBMm9oQ2lBQlFRSnFJZ0VnQ1VjTkFBc0xJQXRCQVhFTkFDQUtRZ0EzQWtRZ0NrRUFOZ0kwSUFwQ0FUY0NMQ0FLSUE0MkFsUWdDaUFUTmdJOElBb2dGRFlDVENBS0lBWTJBamdnQ2lBS0tBTEVBVFlDUUFzZ0J5RU9EQUVMSUFzUUZBc2dEVUVnYWlRQUFrQWdEa1VOQUNBdVFRRnFJU1lnRnlFWklBNGhGUUpBQWtBRFFDQVZLQUpVUVg5R0RRSWdLQ2dDRUVFQ2RCQVlJZ0ZGRFFJZ0FVRUJJQ2dvQWhCQkFuUVFHU0VhSUJVUVlBUkFBMEFnSHlnQ0ZDRUpBa0FDUUNBVktBSW9JQjRvQWd4UERRQWdGU2dDSUNJQklBa2dGU2dDSEVITUFHeHFJZ2NvQWhoUERRQWdCeWdDSENBQlFaZ0JiR29pQnlnQ0dFVU5BQ0FIUVJ4cUlRWkJBQ0VOQWtBRFFDQWJJQlVvQWh3Z0ZTZ0NJQ0FHSUExQkpHeHFJZ0VvQWhBZ0FTZ0NGQ0FWS0FJa1FTaHNhaUlCS0FJQUlBRW9BZ1FnQVNnQ0NDQUJLQUlNRUVGRkJFQWdEVUVCYWlJTklBY29BaGhKRFFFTUFnc0xJQm9nRlNnQ0hFRUNkR3BCQURZQ0FDQVFRUUEyQW9nQklDTW9BZ1FnSHlnQ0ZDQWVJQlVnRUVHTUFXb2dHU0FRUVlnQmFpQUlJRE1RWDBVTkJpQVZLQUlnSVEwZ0ZTZ0NIQ0VQSUJBb0FvZ0JJUkVnRUNnQ2pBRUVRQ0FRUVFBMkFvZ0JJQjhvQWhRZ0QwSE1BR3hxS0FJY0lBMUJtQUZzYWlJZEtBSVlJZ2tFZnlBSUlCRnJJUVlnQ0NBWmFpRWtJQjFCSEdvaEQwRUFJUXBCQUNFWUlCRWdHV29pTGlFVUEwQUNRQ0FQS0FJSUlBOG9BZ0JHRFFBZ0R5Z0NEQ0FQS0FJRVJnMEFJQThvQWhRZ0ZTZ0NKRUVvYkdvaUFTZ0NGQ0FCS0FJUWJDSXNSUTBBSUFFb0FoZ2hDVUVBSVJNRFFDQUpLQUlrSWdzRVFBSi9Ba0FnR0VVRVFDQUpLQUpBUlEwQkN5QUpRUUEyQWpSQkFTRU5RY0FBREFFTElBa29BZ0FoRFFKQUlBa2dDU2dDS0NJQkJIOGdEU0FCUVJoc2FpSU5RUlJyS0FJQUlBMUJER3NvQWdCSEJFQWdEVUVZYXlFTkRBSUxJQUZCQVdvRlFRRUxOZ0lvQ3dKL0FrQWdEU2dDRkNJQklCUkJmM05MRFFBZ0RVRVVhaUVNQTBBZ0FTQVVhaUFrU3cwQklBa29BZ1FoRmlBSktBSTBJaGdnQ1NnQ09FY0VmeUFMQlNBV0lCaEJBWFJCQVhJaUFVRURkQkFiSWhaRkJFQWdNMEVCUVlBSVFRQVFFd3dTQ3lBSklBRTJBamdnQ1NBV05nSUVJQWtvQWpRaEdDQU1LQUlBSVFFZ0NTZ0NKQXNoQnlBV0lCaEJBM1JxSWdzZ0FUWUNCQ0FMSUJRMkFnQWdDU0FZUVFGcU5nSTBJQTBnRFNnQ0FDQUJhallDQUNBTklBMG9BaEFpRENBTktBSUVhaUlXTmdJRUlBa2dCeUFNYXlJTE5nSWtJQTBnRmpZQ0NDQUJJQlJxSVJSQkFDQUhJQXhHRFFJYUlBa2dDU2dDS0VFQmFqWUNLQ0FOUVN4cUlRd2dEU2dDTENFQklBMUJHR29oRFNBQklCUkJmM05ORFFBTEN5QVZLQUljSVFjZ0ZTZ0NJQ0VMSUJVb0FpUWhEQ0FqS0FJRUtBSm9CRUFnRUNBSE5nSjRJQkFnQ3pZQ2RDQVFJQW8yQW5BZ0VDQU1OZ0pzSUJBZ0V6WUNhQ0FRSUFZMkFtUWdFQ0FCTmdKZ0lETkJBVUhBOGdBZ0VFSGdBR29RRXd3UEN5QVFJQWMyQWxnZ0VDQUxOZ0pVSUJBZ0NqWUNVQ0FRSUF3MkFrd2dFQ0FUTmdKSUlCQWdCallDUkNBUUlBRTJBa0FnTTBFQ1FjRHlBQ0FRUVVCckVCTWdDVUVBTmdJMElBbEJBVFlDUUVFQkN5RVlJQWtvQWlnaERVRXNDeUFKYWlBTk5nSUFDeUFKUWNRQWFpRUpJQk5CQVdvaUV5QXNSdzBBQ3lBZEtBSVlJUWtMSUE5QkpHb2hEeUFLUVFGcUlnb2dDVWtOQUFzZ0ZTZ0NJQ0VOSUJVb0Fod2hEeUFHSUJRZ0xtc2dHQnNGUVFBTElCRnFJUkVMSUNnb0FoZ2dEMEUwYkdvaUFTQU5JQUVvQWlRaUFTQUJJQTFKR3pZQ0pBd0NDeUFmS0FJVUlRa0xJQkJCQURZQ2lBRWdJeWdDQkNBSklCNGdGU0FRUVl3QmFpQVpJQkJCaUFGcUlBZ2dNeEJmUlEwRUlCVW9BaHdoRHlBUUtBS0lBU0VSSUJBb0Fvd0JSUTBBSUI4b0FoUWdEMEhNQUd4cUtBSWNJQlVvQWlBaUdFR1lBV3hxSWdFb0FoZ2lKRVVOQUNBSUlCRnJJUVlnQVVFY2FpRVdJQlVvQWlRaERFRUFJUTFCQUNFZEFrQUNRQU5BQWtBZ0ZpZ0NDQ0FXS0FJQVJnMEFJQllvQWd3Z0ZpZ0NCRVlOQUNBV0tBSVVJQXhCS0d4cUlnRW9BaFFnQVNnQ0VHd2lMa1VOQUNBQktBSVlJUXRCQUNFS0EwQWdDeWdDSkNJQkJFQWdDeWdDQUNFSkFrQWdDeUFMS0FJb0loTUVmeUFKSUJOQkdHeHFJZ2xCRkdzb0FnQWdDVUVNYXlnQ0FFY0VRQ0FKUVJocklRa01BZ3NnRTBFQmFnVkJBUXNpRXpZQ0tBc2dDU2dDRkNJVUlBMXFJZzBnRkVrTkJTQUdJQTFKRFFVRFFBSkFJQWtnQ1NnQ0VDSVVJQWtvQWdScU5nSUVJQUVnRkdzaEJ5QUJJQlJHRFFBZ0N5QVRRUUZxSWhNMkFpZ2dDU2dDTENJVUlBMXFJZzBnRkVrTkJpQUpRUmhxSVFrZ0J5RUJJQVlnRFU4TkFRd0dDd3NnQ3lBSE5nSWtDeUFMUWNRQWFpRUxJQXBCQVdvaUNpQXVSdzBBQ3dzZ0ZrRWthaUVXSUIxQkFXb2lIU0FrUncwQUN5QU5JQkZxSVJFTUFnc2dDeUFITmdJa0N5QWpLQUlFS0FKb1JRUkFJQkFnRHpZQ0dDQVFJQmcyQWhRZ0VDQWROZ0lRSUJBZ0REWUNEQ0FRSUFvMkFnZ2dFQ0FHTmdJRUlCQWdGRFlDQUNBelFRSkI2L0VBSUJBUUV5QVZLQUljSVE4Z0JpQVJhaUVSREFFTElCQWdEellDT0NBUUlCZzJBalFnRUNBZE5nSXdJQkFnRERZQ0xDQVFJQW8yQWlnZ0VDQUdOZ0lrSUJBZ0ZEWUNJQ0F6UVFGQjYvRUFJQkJCSUdvUUV3d0VDd0pBSUJvZ0QwRUNkR29vQWdCRkRRQWdLQ2dDR0NBUFFUUnNhaUlCS0FJa0RRQWdBU0FmS0FJVUlBOUJ6QUJzYWlnQ0dFRUJhellDSkFzZ0NDQVJheUVJSUJFZ0dXb2hHU0FWRUdBTkFBc0xJQm9RRkNBVlFmQUJhaUVWSUJ4QkFXb2lIQ0FlS0FLa0EwME5BQXNnRGlBbUVFSWdQeUFaSUJkck5nSUlRUUVNQXdzZ0RpQW1FRUlnR2hBVURBRUxJQTRnSmhCQ0MwRUFDeUFRUVpBQmFpUUFJQ01RTWtVTkFTQWJLQUlnS0FMUUt5RWlJQnNvQWhRb0FnQWlFQ2dDRkNFT0lEOUJBVFlDREVFQUlSbEJBQ0VNSUJzb0FpQWlBU2dDRENBQktBSUlSZ1JBSUNJb0FoQkJCSFpCQVhFaERBc0NRQ0FRS0FJUUlncEZEUUFEUUFKQUlCc29Ba1FpQVFSQUlBRWdHVUVDZEdvb0FnQkZEUUVMSUQ5QkRHb2hGRUVBSVFvQ1FDQU9LQUlZSWdGRkRRQWdHeWdDTENFUkEwQWdEaWdDSENBS1FaZ0JiR29pRHlnQ0dDSUxCRUFnRDBFY2FpRVRJQThvQWhRaEFTQVBLQUlRSVJWQkFDRVhBMEFnQVNBVmJBUkFJQk1nRjBFa2JHb2hEVUVBSVFrRFFDQWJJQTRvQWhBZ0NpQU5LQUlRSUEwb0FoUWdDVUVvYkdvaUJ5Z0NBQ0FIS0FJRUlBY29BZ2dnQnlnQ0RCQkJJUVlnQnlnQ0ZDSUxJQWNvQWhBaUNHd2hBUUpBSUFZRVFDQUJSUTBCUVFBaENBTkFBa0FnR3lBT0tBSVFJQW9nRFNnQ0VDQUhLQUlZSUFoQnhBQnNhaUlHS0FJSUlBWW9BZ3dnQmlnQ0VDQUdLQUlVRUVGRkJFQWdCaWdDUENJQlJRMEJJQUVRRkNBR1FRQTJBandNQVFzZ0d5Z0NRRVVFUUNBR0tBSThEUUVnQmlnQ0VDQUdLQUlJUmcwQklBWW9BaFFnQmlnQ0RFWU5BUXRCQVVFc0VCY2lBVVVFUUNBL1FRQTJBZ3dNQ2dzZ0d5Z0NRQ0VMSUFGQkFEWUNKQ0FCSUJRMkFod2dBU0FpTmdJVUlBRWdEallDRUNBQklBMDJBZ3dnQVNBR05nSUlJQUVnQ2pZQ0JDQUJJQXMyQWdBZ0FTQU1OZ0lvSUFFZ016WUNJQ0FCSUJFb0FnUkJBVW8yQWhnZ0VVRU9JQUVRTXlBL0tBSU1SUTBKQ3lBSVFRRnFJZ2dnQnlnQ0ZDQUhLQUlRYkVrTkFBc01BUXNnQVVVTkFFRUFJUlVEUUNBSEtBSVlJQlZCeEFCc2FpSUJLQUk4SWdZRVFDQUdFQlFnQVVFQU5nSThJQWNvQWhRaEN5QUhLQUlRSVFnTElCVkJBV29pRlNBSUlBdHNTUTBBQ3dzZ0NVRUJhaUlKSUE4b0FoUWlBU0FQS0FJUUloVnNTUTBBQ3lBUEtBSVlJUXNMSUJkQkFXb2lGeUFMU1EwQUN5QU9LQUlZSVFFTElBcEJBV29pQ2lBQlNRMEFDd3NnUHlnQ0RFVU5BaUFRS0FJUUlRb0xJQ0pCdUFocUlTSWdEa0hNQUdvaERpQVpRUUZxSWhrZ0Nra05BQXNMUVFBaElpQWJLQUlzRUNRZ1B5Z0NERVVOQVFKQUlCc29Ba0FOQUNBYktBSVlJaGtvQWhCRkRRQkJBQ0VPQTBBZ0d5Z0NGQ2dDQUNnQ0ZDQU9RY3dBYkdvaUFTZ0NIQ0FaS0FJWUlBNUJOR3hxS0FJa1FaZ0JiR29pQnlnQ2lBRWhCaUFIS0FLUUFTRUlJQWNvQW93QklRc2dCeWdDbEFFaEJ5QUJLQUkwRUJRZ0FVRUFOZ0kwQWtBZ0d5Z0NSQ0lKQkVBZ0NTQU9RUUowYWlnQ0FFVU5BUXNnQmlBSVJnMEFJQWNnQzBZTkFDQUhJQXRySWdldElBZ2dCbXNpQnExK1FpQ0lRZ0JTQkVBZ00wRUJRWUVYUVFBUUV3d0ZDeUFHSUFkc0lnZEJnSUNBZ0FSUEJFQWdNMEVCUVlFWFFRQVFFd3dGQ3lBQklBZEJBblFRSENJQk5nSTBJQUVOQUNBelFRRkJnUmRCQUJBVERBUUxJQTVCQVdvaURpQWJLQUlZSWhrb0FoQkpEUUFMQ3lBYktBSWdJUmtnR3lnQ0ZDZ0NBQ0lWS0FJUUJFQWdGU2dDRkNFT0lCa29BdEFySVJrZ0d5Z0NHQ2dDR0NFS1FRQWhDd05BQWtBZ0d5Z0NSQ0lCQkVBZ0FTQUxRUUowYWlnQ0FFVU5BUXNnQ2lnQ0pFRUJhaUVCSUJrb0FoUkJBVVlFUUNBQklSNUJBQ0VJUVFBaEJ2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDRjJJd0JCSUdzaUp5UUFBa0FDUUNBYktBSkFCRUJCQVNFSElBRkJBVVlOQWlBT0tBSWNJZ1lnRGlnQ0dFR1lBV3hxSWdGQmtBRnJLQUlBSWc4Z0FVR1lBV3NvQWdBaUVVWU5BaUFHS0FJRUlSUWdCaWdDRENFV0lBWW9BZ0FoR0NBR0tBSUlJUjBnR3lnQ0xDSVhLQUlFSVJBZ0hrRUJheUlOSVF3Z0JpRUhBa0FnRFVFRVR3UkFJQTFCQTNFaERDQUhJQTFCZkhFaUNVR1lBV3hxSVFkQkFDRUJBMEFnZGlBR0lBRkJtQUZzYWlJSVFlZ0VhaUFJUWRBRGFpQUlRYmdDYWlBSS9Wd0NvQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhnQkdvZ0NFSElBMm9nQ0VHd0Ftb2dDUDFjQXBnQi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJQWhCN0FScUlBaEIxQU5xSUFoQnZBSnFJQWo5WEFLa0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlUUVhaUFJUWN3RGFpQUlRYlFDYWlBSS9Wd0NuQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFaGRpQUJRUVJxSWdFZ0NVY05BQXNnZGlCMklIYjlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZGlCMklIYjlEUVFGQmdjQUFRSURBQUVDQXdBQkFnUDl1UUg5R3dBaENDQUpJQTFHRFFFTEEwQWdDQ0FIS0FLZ0FTQUhLQUtZQVdzaUFTQUJJQWhKR3lJQklBY29BcVFCSUFjb0Fwd0JheUlJSUFFZ0NFc2JJUWdnQjBHWUFXb2hCeUFNUVFGcklnd05BQXNMUVFBaEJ5QUlRZi8vL3o5TERRSWdKeUFJUVFWMEloTVFOeUlNTmdJUUlBeEZEUUlnSnlBTU5nSUFJQTBFUUNBUElCRnJJUkVnRmlBVWF5RUpJQjBnR0dzaEFRTkFJQTRvQWlRaEZDQW5JQWtpRHpZQ0NDQW5JQUVpQnpZQ0dDQUdLQUtjQVNFSUlBWW9BcVFCSVFrZ0JpZ0NvQUVoQVNBbklBWW9BcGdCSWhaQkFtODJBaHdnSnlBQklCWnJJZ0VnQjJzMkFoUUNRQ0FRUVFKSUloMUZJQWtnQ0dzaUNVRUJTM0ZGQkVCQkFDRUlJQWxGRFFFRFFDQW5RUkJxSUJRZ0NDQVJiRUVDZEdvUVppQUlRUUZxSWdnZ0NVY05BQXNNQVFzZ0NTQVFJQWtnRUVrYkloWkJBV3NoSXlBSklCWnVJUmhCQUNFSEEwQkJKQkFZSWdoRkRRVWdKLzBBQWhBaGRpQUlJQlEyQWhnZ0NDQVJOZ0lVSUFnZ0FUWUNFQ0FJSUhiOUN3SUFJQWdnQnlBWWJEWUNIQ0FISUNOR0lSOGdDQ0FKSUFkQkFXb2lCeUFZYkNBZkd6WUNJQ0FJSUJNUU55SWZOZ0lBSUI5RkJFQkJBQ0VISUJjUUpDQUlFQlFnREJBVURBY0xJQmRCQ2lBSUVETWdCeUFXUncwQUN5QVhFQ1FMSUNjZ0NTQVBhellDQkNBbklBWW9BcHdCUVFKdk5nSU1Ba0FnSFVVZ0FVRUJTM0ZGQkVCQkNDRUhRUUFoQ0NBQlFRaFBCRUFEUUNBbklCUWdDRUVDZEdvZ0VVRUlFRFlnQnlJSVFRaHFJZ2NnQVUwTkFBc0xJQUVnQ0UwTkFTQW5JQlFnQ0VFQ2RHb2dFU0FCSUFockVEWU1BUXNnQVNBUUlBRWdFRWtiSWc5QkFXc2hHQ0FCSUE5dUlSWkJBQ0VIQTBCQkpCQVlJZ2hGRFFVZ0ovMEFBZ0FoZGlBSUlCUTJBaGdnQ0NBUk5nSVVJQWdnQ1RZQ0VDQUlJSGI5Q3dJQUlBZ2dCeUFXYkRZQ0hDQUhJQmhHSVIwZ0NDQUJJQWRCQVdvaUJ5QVdiQ0FkR3pZQ0lDQUlJQk1RTnlJZE5nSUFJQjFGQkVCQkFDRUhJQmNRSkNBSUVCUWdEQkFVREFjTElCZEJDeUFJRURNZ0J5QVBSdzBBQ3lBWEVDUUxJQVpCbUFGcUlRWWdEVUVCYXlJTkRRQUxDMEVCSVFjZ0RCQVVEQUlMUVFFaEJ5QU9LQUljSWdrZ0hrR1lBV3hxSWl0Qm1BRnJJbDBvQWdBZ0swR1FBV3NvQWdCR0RRRWdLMEdVQVdzaVhpZ0NBQ0FyUVl3QmF5Z0NBRVlOQVNBSktBSUVJUmNnQ1NnQ0RDRU5JQWtvQWdBaEVDQUpLQUlJSVJFZ0RpZ0NSQ0VvSUE0b0FrQWhHaUFPS0FJOElTWWdEaWdDT0NFdUlBNGdIaEJsSWpsRkJFQkJBQ0VIREFJTEFrQUNRQ0FlUVFGSEJFQUNRQUpBSUI1QkFXc2lEMEVFU1FSQUlBOGhBU0FKSVFjTUFRc2dEMEVEY1NFQklBa2dEMEY4Y1NJTVFaZ0JiR29oQndOQUlIWWdDU0FHUVpnQmJHb2lDRUhvQkdvZ0NFSFFBMm9nQ0VHNEFtb2dDUDFjQXFBQi9WWUNBQUg5VmdJQUF2MVdBZ0FESUFoQjRBUnFJQWhCeUFOcUlBaEJzQUpxSUFqOVhBS1lBZjFXQWdBQi9WWUNBQUw5VmdJQUEvMnhBZjI1QVNBSVFld0VhaUFJUWRRRGFpQUlRYndDYWlBSS9Wd0NwQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhrQkdvZ0NFSE1BMm9nQ0VHMEFtb2dDUDFjQXB3Qi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJWFlnQmtFRWFpSUdJQXhIRFFBTElIWWdkaUIyL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2JrQkluWWdkaUIyL1EwRUJRWUhBQUVDQXdBQkFnTUFBUUlEL2JrQi9Sc0FJUWdnRENBUFJnMEJDd05BSUFnZ0J5Z0NvQUVnQnlnQ21BRnJJZ1lnQmlBSVNSc2lCaUFIS0FLa0FTQUhLQUtjQVdzaUNDQUdJQWhMR3lFSUlBZEJtQUZxSVFjZ0FVRUJheUlCRFFBTEN5QUlRWUNBZ0lBQlR3MENJQWhCQkhRUU55SVNSUTBDQWtBZ0hrVU5BQ0FOSUJkcklSWWdFU0FRYXlFVElCSkJCR3NoT2lBU1FSeHFJVTRnRWtFWWFpRTRJQkpCRkdvaFBDQVNRUXhySVVFZ0VrRU1haUVwSUJKQkNHb2hKU0FTUVJCcklVSWdFa0VJYXlGQUlCSkJCR29oSVNBb3JTRjhJQnF0SVgwZ0pxMGhnQUVnTHEwaGdRRkJBU0ZEQTBBZ0NTZ0NuQUVpQVVFQ2J5RTNJQWtvQXBnQklnZEJBbThoUGlBSktBS2tBU0FCYXlJa0lCWnJJUzhnQ1NnQ29BRWdCMnNpTENBVGF5RXhJQzRpQmlFSElDWWlIU0VVSUJvaUFTRXdJQ2dpQ0NFUkFrQWdEaWdDRkNJUElFTkdEUUFnRHlCRGF5RVBRUUFoRkVFQUlRY2dCZ1JBUW44Z0Q2MGlmb1pDZjRVZ2dRRjhJSDZJcHlFSEN5QW1CRUJDZnlBUHJTSitoa0ovaFNDQUFYd2dmb2luSVJRTFFRQWhDRUVBSVFFZ0dnUkFRbjhnRDYwaWZvWkNmNFVnZlh3Z2ZvaW5JUUVMSUNnRVFFSi9JQSt0SW42R1FuK0ZJSHg4SUg2SXB5RUlDMEVBSVRCQkFDRUdRUUVnRDBFQmEzUWlEQ0F1U1FSQUlDNGdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVHQ3lBTUlCcEpCRUFnR2lBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklUQUxRUUFoRVVFQUlSMGdEQ0FtU1FSQUlDWWdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVkQ3lBTUlDaFBEUUFnS0NBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklSRUxRWDhnTUNBSktBSzBBU0lQYXlJTVFRQWdEQ0F3VFJzaURFRUNhaUlYSUF3Z0Ywc2JJZ3dnTVNBTUlERkpHeUkxUVg4Z0FTQUpLQUxZQVNJdGF5SU1RUUFnQVNBTVR4c2lBVUVDYWlJTUlBRWdERXNiSWdFZ0V5QUJJQk5KR3lJMklENGJRUUYwSWdFZ05pQTFJRDRiUVFGMFFRRnlJZ3dnQVNBTVN4c2lSaUFzU1NFWUlBWWdEMnNpQVVFQUlBRWdCazBiSWdGQkFtc2lCa0VBSUFFZ0JrOGJJaEFnQnlBdGF5SUJRUUFnQVNBSFRSc2lBVUVDYXlJR1FRQWdBU0FHVHhzaURTQStHMEVCZENJR0lBMGdFQ0ErRzBFQmRFRUJjaUlQU1NFZ0lCUWdDU2dDdUFFaUkyc2lERUVBSUF3Z0ZFMGJJZ3hCQW1zaUYwRUFJQXdnRjA4Yklnd2hIQ0FkSUFrb0F0d0JJaFJySWhkQkFDQVhJQjFOR3lJWFFRSnJJaDFCQUNBWElCMVBHeUlYSVNwQmZ5QUlJQ05ySWgxQkFDQUlJQjFQR3lJSVFRSnFJaDBnQ0NBZFN4c2lDQ0FXSUFnZ0Zra2JJaU1oTWtGL0lCRWdGR3NpQ0VFQUlBZ2dFVTBiSWdoQkFtb2lFU0FJSUJGTEd5SUlJQzhnQ0NBdlNSc2lIeUU3SURjRVFDQU1JU29nSHlFeUlDTWhPeUFYSVJ3TElFWWdMQ0FZR3lGSElBWWdEeUFnR3lFUElCWWdIMm9oVHlBV0lCZHFJVkFnSkFSQUlCSWdEVUVEZEdvaVJFRUVhaUE2SURGQkEzUWlCbW9pVVNBTklERklJZ2diSVZJZ05TQVRRUUZySUJNZ05Vb2JJU0JCQUNFWUlCTkJBVW9nTVVFQVNuSWhVeUFoSUQ1QkFuUWlFV3NnRUVFRGRHb2hWQ0FSSUVScUlWVWdEU0EySURFZ01TQTJTaHNpRVNBSElDMGdCeUF0U1J0cVFRSWdBU0FCUVFKUEcyb2dCMEYvYzJvaVNFRjhjU0pGYWlFMElBMUJBV29pRkNCRmFpRTlJQk1nTldvaFZpQVFJQk5xSVZjZ0RmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVhrZ0VpQVBRUUowYWlGWUlFQWdFMEVEZENJQmFpRkpJQUVnT21vaFNpQUdJRUJxSVVzZ0UwVWdNVUVCUm5FaFdTQVNJRWRCQW5RaUFXb2hXaUFCSURwcUlWc2dGUDBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklYb2dPaUFOSURFZ0NCdEJBM1JxSVZ3RFFBSkFBa0FnR0NBalNTQU1JQmhOY1EwQUlCZ2dUMGtnR0NCUVQzRU5BQ0FZUVFGcUlTME1BUXNnTENCR1N3UkFJRnRCQURZQ0FDQmFRUUEyQWdBTElEa2dEU0FZSURZZ0dFRUJhaUl0SUZWQkFrRUFFQ0lnT1NCWElCZ2dWaUF0SUZSQkFrRUFFQ0lDUUFKQUFrQWdQa1VFUUNCVFJRMERJQTBnTms0TkFnSkFBa0FnRFVFQVNnUkFJRndvQWdBaEJ3d0JDeUFoS0FJQUlnY2hBU0FOUVFCSURRRUxJQWNoQVNCU0tBSUFJUWNMSUVRZ1JDZ0NBQ0FCSUFkcVFRSnFRUUoxYXpZQ0FDQVVJZ2NnRVU0TkFVRUFJUWNnRkNFQklBMGhDQ0I2SVhZZ2VTRjRJRWhCQTBzRVFBTkFJQklnZGtFQi9hc0JJbmY5R3dCQkFuUnFJZ0VnRWlCMy9Sc0RRUUowYWlJR0lCSWdkLzBiQWtFQ2RHb2lDQ0FTSUhmOUd3RkJBblJxSWgwZ0FmMWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUI0UVFIOXF3SDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0o3L1JzRFFRSjBhaUFTSUh2OUd3SkJBblJxSUJJZ2UvMGJBVUVDZEdvZ0VpQjcvUnNBUVFKMGF2MWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUIzL1F3QkFBQUFBUUFBQUFFQUFBQUJBQUFBL1ZBaWQvMGJBMEVDZEdvZ0VpQjMvUnNDUVFKMGFpQVNJSGY5R3dGQkFuUnFJQklnZC8wYkFFRUNkR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlkLzFhQWdBQUlCMGdkLzFhQWdBQklBZ2dkLzFhQWdBQ0lBWWdkLzFhQWdBRElIajlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoZUNCMi9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJWFlnQjBFRWFpSUhJRVZIRFFBTElEMGhBU0EwSVFnZ0VTRUhJRVVnU0VZTkFnc0RRQ0FTSUFGQkEzUnFJZ2NnQnlnQ0FDQVNJQWhCQTNScUtBSUVJQWNvQWdScVFRSnFRUUoxYXpZQ0FDQUJJZ2hCQVdvaUFTQVJSdzBBQ3lBUklRY01BUXNDUUNCWlJRUkFJQTBpQnlBMlRnMEJBMEFnRWlBSFFRTjBhaUlCS0FJRUlRWWdBU0FHQW44Q1FDQUhRUUJPQkVBZ0FTQkxJQWNnTVVnYktBSUFJVEFnQjBFQmFpRUJEQUVMSUJJb0FnQWhNRUVBSVFFZ0VpQUhRUUZxSWdjTkFSb0xJQUVnTVU0RVFDQUJJUWNnU3d3QkN5QVNJQUVpQjBFRGRHb0xLQUlBSURCcVFRSnFRUUoxYXpZQ0JDQUhJRFpJRFFBTERBRUxJQklnRWlnQ0FFRUNiVFlDQUF3REN5QVFJZ2NnTlU0TkFnTkFJQklnQjBFRGRDSUJhaUlHS0FJQUlRZ0NmeUFIUVFCSUJFQWdJU2dDQUNFZElDRU1BUXNnRWlBSFFRTjBha0VFYWlCS0lBY2dFMGdiS0FJQUlSMGdJU0FIUlEwQUdpQktJQWNnRTBvTkFCb2dBU0E2YWdzaEFTQUdJQUVvQWdBZ0hXcEJBWFVnQ0dvMkFnQWdCMEVCYWlJSElEVkhEUUFMREFJTElBY2dOazROQUFOQUlCSWdCMEVEZEdvaUFTQUJLQUlBQW44Q1FDQUhRUUJLQkVBZ09pQUhJREVnQnlBeFNCdEJBM1JxS0FJQUlRZ01BUXNnSVNnQ0FDRUlJQ0VnQjBFQVNBMEJHZ3NnVVNBSElERk9EUUFhSUJJZ0IwRURkR3BCQkdvTEtBSUFJQWhxUVFKcVFRSjFhellDQUNBSFFRRnFJZ2NnTmtjTkFBc0xJQkFnTlU0TkFDQWdJQkFpQVNJSFNnUkFBMEFnRWlBSFFRTjBhaUlCSUFFb0FnUWdFaUFIUVFGcUlnZEJBM1JxS0FJQUlBRW9BZ0JxUVFGMWFqWUNCQ0FISUNCSERRQUxJQ0FoQVFzZ0FTQTFUZzBBQTBBQ2Z3SkFJQUVpQjBFQVRnUkFJQklnQVVFRGRHb2dTU0FCSUJOSUd5Z0NBQ0VHSUFGQkFXb2hDQXdCQ3lBU0tBSUFJUVpCQUNFSUlCSWdCMEVCYWlJQkRRRWFDeUFJSUJOT0JFQWdDQ0VCSUVrTUFRc2dFaUFJSWdGQkEzUnFDeUVJSUJJZ0IwRURkR29pQnlBSEtBSUVJQWdvQWdBZ0JtcEJBWFZxTmdJRUlBRWdOVWdOQUFzTElEa2dEeUFZSUVjZ0xTQllRUUZCQUVFQUVDcEZEUVlMSUMwaUdDQWtSdzBBQ3dzZ0NVR1lBV29oQ1NBeVFRRjBJZ0VnTzBFQmRFRUJjaUlISUFFZ0Iwc2JJZ0VnSkNBQklDUkpHeUUrSUNrZ0RFRUZkQ0lCUVJCeUlnWnFJRG9nTDBFRmRDSUlhaUFNSUM5SUlnY2JJVVFnQmlBbGFpQUlJRUJxSUFjYklVVWdCaUFoYWlBSUlFRnFJQWNiSVVZZ0JpQVNhaUFJSUVKcUlBY2JJVWdnSHlBV1FRRnJJQllnSDBvYklRMGdMMEVBU2lJUUlCWkJBVXB5SVVrZ0FTQVNhaUlkSURkQkJIUnFJVW9nS1NBV1FRTjBJZ1pCQ0dzaU1rRUFJQlpCQUV3YlFRSjBJZ2hxSVVzZ0NDQWxhaUZSSUFnZ0lXb2hVaUFJSUJKcUlWTWdLVUVBSUM5QkEzUWlDRUVJYXlJN0lCQWJRUUowSWhCcUlWUWdFQ0FsYWlGVklCQWdJV29oVmlBUUlCSnFJVmNnRWtFRUlEZEJBblJyUVFKMGFpQVhRUVYwYWlGWUlDTWdMeUFqSUM5SUd5RVFJQXhCQVdvaEZDQVNJQnhCQVhRaUVTQXFRUUYwUVFGeUloTWdFU0FUU1JzaVdVRUVkR29oV2lBQklDbHFJVFFnQVNBbGFpRWNJQUVnSVdvaExTQXBJQlpCQlhRaUFXb2hXeUFHUVFGcklUMGdBU0FsYWlGY0lBWkJBbXNoTVNBQklDRnFJVjhnQmtFRGF5RTFJQUVnRW1vaFlDQUdRUVJySVRZZ0NFRUZheUZoSUFoQkJtc2hZaUFJUVFkcklXTWdGa1VnTDBFQlJuRWhaQ0FwSURKQkFuUWlBV29oWmlBQklDVnFJV2NnQVNBaGFpRm9JQUVnRW1vaGFTQXBJQWhCQkdzaWFrRUNkQ0lCYWlGcklBRWdKV29oYkNBQklDRnFJVzBnQVNBU2FpRnVJRG9nRENBdklBY2JRUVYwSWdGcUlXOGdBU0JBYWlFVElBRWdRV29oR0NBQklFSnFJWEFnS1NBN1FRSjBJZ0ZxSVhFZ0FTQWxhaUZ5SUFFZ0lXb2hjeUFCSUJKcUlYUURRQUpBQWtBQ2Z3SkFJQThpRVNCSFNRUkFJRGtnRHlBTVFRUWdSeUFQYXlJQklBRkJCRThiSUE5cUlnOGdJeUJLUVFGQkNCQWlJRGtnRVNCUUlBOGdUeUJZUVFGQkNCQWlJRGRGQkVBZ1NVVU5CU0FNSUNOT0RRUUNmeUFNUVFCS0JFQWdjQ2dDQUNFSElCTWhCaUFZSVFnZ2J3d0JDeUFTS0FJUUlRY2dERUVBU0EwRElEZ2hCaUE4SVFnZ1Rnc2dIU0FkS0FJQUlBY2dTQ2dDQUdwQkFtcEJBblZyTmdJQUlDMGdMU2dDQUNBSUtBSUFJRVlvQWdCcVFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ0JpZ0NBQ0JGS0FJQWFrRUNha0VDZFdzMkFnQWdSQ2dDQUNFSEtBSUFEQU1MSUdRRVFDQVNJQklvQWdCQkFtMDJBZ0FnRWlBU0tBSUVRUUp0TmdJRUlDVWdKU2dDQUVFQ2JUWUNBQ0FwSUNrb0FnQkJBbTAyQWdBTUJRc2dJeUFNSWdkS0JFQURRQ0FIUVFOMElRWUNRQUpBSUFkQkFFZ0VRQ0FIUVg5R0RRRWdFaUFHUVFKMGFpSUJJQUg5QUFJUUlCTDlBQUlBUVFIOXF3SDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFnc2dFaUFHUVFKMGFpSUJLQUlRSVFnZ0x5QUhRUUZxSWlCTUJFQWdBU0FJSUJJZ0JpQTdJQWNnTDBnaUNCdEJBblJxS0FJQUlIUW9BZ0JxUVFKcVFRSjFhellDRUNBQklBRW9BaFFnRWlBR1FRRnlJR01nQ0J0QkFuUnFLQUlBSUhNb0FnQnFRUUpxUVFKMWF6WUNGQ0FCSUFFb0FoZ2dFaUFHUVFKeUlHSWdDQnRCQW5ScUtBSUFJSElvQWdCcVFRSnFRUUoxYXpZQ0dDQUJJQUVvQWh3Z0VpQUdRUU55SUdFZ0NCdEJBblJxS0FJQUlIRW9BZ0JxUVFKcVFRSjFhellDSEF3Q0N5QUJJQUZCRkdvZ0NQMFIvVllDQUFFZ0FVRVlhdjFkQWdEOURRQUJBZ01FQlFZSEVCRVNFeFFWRmhjZ0FmMEFBZ0FnRWlBZ1FRVjBhdjBBQWdEOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFRc2dRaUJDS0FJQUlCSW9BZ0FnVnlnQ0FHcEJBbXBCQW5Wck5nSUFJRUVnUVNnQ0FDQVNLQUlFSUZZb0FnQnFRUUpxUVFKMWF6WUNBQ0JBSUVBb0FnQWdKU2dDQUNCVktBSUFha0VDYWtFQ2RXczJBZ0FnT2lBNktBSUFJQ2tvQWdBZ1ZDZ0NBR3BCQW1wQkFuVnJOZ0lBQ3lBSFFRRnFJZ2NnSTBjTkFBc0xJQjhnRnlJSFRBMEVBMEFnQjBFRGRDRUdBa0FnQjBFQVNBUkFJQklnQmtFQ2RHb2lBU0FTL1FBQ0VFRUIvYXNCUVFIOXJBRWdBZjBBQWdEOXJnSDlDd0lBREFFTElBY0VRQ0FTSUFaQkFuUWlDR29pQVNBQktBSUFJR0FnQVNBSElCWktJaUFiUVJCcktBSUFJQklnQmtFRWNpQTJJQWNnRmtnaUtodEJBblJxS0FJQWFrRUJkV28yQWdBZ0FTQUJLQUlFSUY4Z0NDQWhhaUFnRzBFUWF5Z0NBQ0FTSUFaQkJYSWdOU0FxRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FCSUFFb0FnZ2dYQ0FJSUNWcUlDQWJRUkJyS0FJQUlCSWdCa0VHY2lBeElDb2JRUUowYWlnQ0FHcEJBWFZxTmdJSUlBRWdBU2dDRENCYklBZ2dLV29nSUJ0QkVHc29BZ0FnRWlBR1FRZHlJRDBnS2h0QkFuUnFLQUlBYWtFQmRXbzJBZ3dNQVFzZ0VpQVNLQUlBSUJJb0FoQWdFa0VFSURZZ0J5QVdTQ0lCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FTSUJJb0FnUWdFaWdDRkNBU1FRVWdOU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FsSUNVb0FnQWdFaWdDR0NBU1FRWWdNU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FwSUNrb0FnQWdFaWdDSENBU1FRY2dQU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQXNnQjBFQmFpSUhJQjlIRFFBTERBUUxJQ3doRXlBa0lSWWdRMEVCYWlKRElCNUhEUVVNQmdzZ0hTQWRLQUlBSUFkQkFYUkJBbXBCQW5Wck5nSUFJQzBnTFNnQ0FDQThLQUlBUVFGMFFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ09DZ0NBRUVCZEVFQ2FrRUNkV3MyQWdBZ1RpZ0NBQ0lIQ3lFQklEUWdOQ2dDQUNBQklBZHFRUUpxUVFKMWF6WUNBQ0FNSVFZZ0VDQVVJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0FDQVNJQVpCQlhScS9RQUNFQ0FIL1FBQ0VQMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCL1FzQ0FDQUJJZ1pCQVdvaUFTQVFSdzBBQ3lBUUlRY0xJQWNnSTA0TkFBTkFJQWRCQTNRaUJrRUVjaUVnSUFjZ0wwZ2hDQUovSUFkQkFFd0VRQ0FTS0FJUUlTb2dCMEVBVGdSQUlCSWdCa0VDZENJd2FpSUJJQUVvQWdBZ0tpQVNJQ0FnYWlBSUcwRUNkQ0lCYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ0VnTUdvaUNDQUlLQUlBSUJJb0FoUWdBU0FoYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ1VnTUdvaUNDQUlLQUlBSUJJb0FoZ2dBU0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQklvQWh3Z0FTQXBhaWdDQUdwQkFtb01BZ3NnRWlBR1FRSjBJZ0ZxSWdnZ0NDZ0NBQ0FxUVFGMFFRSnFRUUoxYXpZQ0FDQUJJQ0ZxSWdnZ0NDZ0NBQ0FTS0FJVVFRRjBRUUpxUVFKMWF6WUNBQ0FCSUNWcUlnRWdBU2dDQUNBU0tBSVlRUUYwUVFKcVFRSjFhellDQUNBU0tBSWNRUUYwUVFKcURBRUxJQklnQnlBdklBZ2JRUU4wUVFSclFRSjBJZ0ZxS0FJQUlTb2dDRVVFUUNBU0lBWkJBblFpQ0dvaUlDQWdLQUlBSUNvZ2JpZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0lXb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ2JTZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0pXb2lDQ0FJS0FJQUlBRWdKV29vQWdBZ2JDZ0NBR3BCQW1wQkFuVnJOZ0lBSUFFZ0tXb29BZ0FnYXlnQ0FHcEJBbW9NQVFzZ0VpQUdRUUowSWpCcUlnZ2dDQ2dDQUNBcUlCSWdJRUVDZENJSWFpZ0NBR3BCQW1wQkFuVnJOZ0lBSUNFZ01Hb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ0NDQWhhaWdDQUdwQkFtcEJBblZyTmdJQUlDVWdNR29pSUNBZ0tBSUFJQUVnSldvb0FnQWdDQ0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQUVnS1dvb0FnQWdDQ0FwYWlnQ0FHcEJBbW9MSVFFZ0tTQUdRUUowYWlJR0lBWW9BZ0FnQVVFQ2RXczJBZ0FnQjBFQmFpSUhJQ05IRFFBTEN5QVhJQjlPRFFBZ0RTQVhJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0lDQUgvUUFDQVAydUFVRUIvYXdCSUFmOUFBSVEvYTRCL1FzQ0VDQUJRUUZxSWdFZ0RVY05BQXNnRFNFSEN5QUhJQjlPRFFBRFFDQXBJQWRCQTNRaUFVRUVjaUlHUVFKMGFpSXFBbjhnQjBFQVNBUkFJQklvQWdBaEFTQUhRWDlIQkVBZ0VpQUdRUUowSWdacUlnZ2dDQ2dDQUNBQmFqWUNBQ0FHSUNGcUlnRWdBU2dDQUNBaEtBSUFhallDQUNBR0lDVnFJZ0VnQVNnQ0FDQWxLQUlBYWpZQ0FDQXBLQUlBREFJTElCSWdCa0VDZENJR2FpSUlJQWdvQWdBZ1V5Z0NBQ0FCYWtFQmRXbzJBZ0FnQmlBaGFpSUJJQUVvQWdBZ1VpZ0NBQ0FoS0FJQWFrRUJkV28yQWdBZ0JpQWxhaUlCSUFFb0FnQWdVU2dDQUNBbEtBSUFha0VCZFdvMkFnQWdTeWdDQUNBcEtBSUFha0VCZFF3QkN5QVNJQUVnTWlBSElCWklHMEVDZEdvaUFTZ0NBQ0VJSUJZZ0IwRUJhaUl3VEFSQUlCSWdCa0VDZENJR2FpSWdJQ0FvQWdBZ2FTZ0NBQ0FJYWtFQmRXbzJBZ0FnQmlBaGFpSUlJQWdvQWdBZ2FDZ0NBQ0FCS0FJRWFrRUJkV28yQWdBZ0JpQWxhaUlHSUFZb0FnQWdaeWdDQUNBQktBSUlha0VCZFdvMkFnQWdaaWdDQUNBQktBSU1ha0VCZFF3QkN5QVNJQVpCQW5RaUlHb2lCaUFHS0FJQUlBZ2dFaUF3UVFWMGFpSUdLQUlBYWtFQmRXbzJBZ0FnSUNBaGFpSUlJQWdvQWdBZ0JpZ0NCQ0FCS0FJRWFrRUJkV28yQWdBZ0lDQWxhaUlJSUFnb0FnQWdCaWdDQ0NBQktBSUlha0VCZFdvMkFnQWdCaWdDRENBQktBSU1ha0VCZFFzZ0tpZ0NBR28yQWdBZ0IwRUJhaUlISUI5SERRQUxDeUE1SUJFZ1dTQVBJRDRnV2tFQlFRUkJBQkFxRFFBTEN3d0NDeUFTRUJSQkFTRUhDeUE1SUN0QkVHc29BZ0FpQVNCZEtBSUFJZ1pySUN0QkRHc29BZ0FnWGlnQ0FDSUlheUFyUVFocktBSUFJZ2tnQm1zZ0swRUVheWdDQUNBSWF5QU9LQUkwUVFFZ0NTQUJheEFpSURrUUp3d0RDeUE1RUNjZ0VoQVVRUUFoQnd3Q0N5QTVFQ2RCQUNFSERBRUxRUUFoQnlBWEVDUWdEQkFVQ3lBblFTQnFKQUFnQncwQkRBVUxJQUVoQjBFQUlRejlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhkaU1BUVVCcUloNGtBQUpBQW44Q1FDQWJLQUpBQkVBZ0RpZ0NIQ0lYSUE0b0FoaEJtQUZzYWlJQlFaZ0JheWdDQUNFWUlBRkJrQUZyS0FJQUlSMGdGeWdDQkNFTklCY29BZ3dnRnlnQ0FDRVJJQmNvQWdnaEZFRUJJUVlnR3lnQ0xDSWpLQUlFSVNZZ0IwRUJSZzBEUVFBaENDQUhRUUZySWc4aENTQVhJUUVDUUNBUFFRUlBCRUFnRDBFRGNTRUpJQUVnRDBGOGNTSU1RWmdCYkdvaEFVRUFJUVlEUUNCMklCY2dCa0dZQVd4cUlnZEI2QVJxSUFkQjBBTnFJQWRCdUFKcUlBZjlYQUtnQWYxV0FnQUIvVllDQUFMOVZnSUFBeUFIUWVBRWFpQUhRY2dEYWlBSFFiQUNhaUFIL1Z3Q21BSDlWZ0lBQWYxV0FnQUMvVllDQUFQOXNRSDl1UUVnQjBIc0JHb2dCMEhVQTJvZ0IwRzhBbW9nQi8xY0FxUUIvVllDQUFIOVZnSUFBdjFXQWdBRElBZEI1QVJxSUFkQnpBTnFJQWRCdEFKcUlBZjlYQUtjQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTRjJJQVpCQkdvaUJpQU1SdzBBQ3lCMklIWWdkdjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzI1QVNKMklIWWdkdjBOQkFVR0J3QUJBZ01BQVFJREFBRUNBLzI1QWYwYkFDRUlJQXdnRDBZTkFRc0RRQ0FJSUFFb0FxQUJJQUVvQXBnQmF5SUhJQWNnQ0VrYklnY2dBU2dDcEFFZ0FTZ0NuQUZySWdZZ0JpQUhTUnNoQ0NBQlFaZ0JhaUVCSUFsQkFXc2lDUTBBQ3d0QkFDRUdJQWhCLy8vL1Awc05BeUFlSUFoQkJYUWlSeEFjSWdFMkFpQWdBVVVOQXlBZUlBRTJBZ0FnRDBVRVFFRUJJUVlnQVJBVURBUUxJQTFySVEwZ0ZDQVJheUVNUVFJZ0prRUJkaUlCSUFGQkFrMGJJVVFnRGlnQ0pDSUhJQjFCSEd3aVhTQVlRUnhzSWw1cmFpRWtJQWNnSFVFWWJDSlJJQmhCR0d3aVVtdHFJUzRnQnlBZFFSUnNJbE1nR0VFVWJDSlVhMm9oTENBSElCMUJCSFFpVlNBWVFRUjBJbFpyYWlFdElBY2dIVUVNYkNKWElCaEJER3dpV0d0cUlTQWdCeUFkUVFOMElsa2dHRUVEZENKYWEyb2hPQ0FkSUJockloRkJCWFFoUlNBUlFRZHNJVTRnRVVFR2JDRkdJQkZCQld3aFR5QVJRUU5zSVZBZ0VVRUJkQ0ZJSUFjZ0VVRUNkQ0pBYWlFOElCSDlFU0Y2QTBBZ0hpQU5OZ0lJSUI0Z0RDSUJOZ0lvSUJjb0Fwd0JJUjhnRnlnQ3BBRWhLQ0FYS0FLZ0FTRXFJQmNvQXBnQklSb2dIa0VBTmdJNElCNGdBVFlDTkNBZVFRQTJBakFnSGlBYVFRSnZJaHcyQWl3Z0hpQXFJQnBySWd3Z0FXc2lGRFlDUENBZUlCUTJBaVFDUUNBbVFRSklJbHRGSUNnZ0gyc2lEVUVQUzNGRkJFQkJBQ0VHSUFjaENDQU5RUWhKRFFFZ0xDQUhJRkVnS2tFQ2RDSUJhaUJTSUJwQkFuUWlDV3ByYWlJK1NTQXVJQWNnQVNCVGFpQUpJRlJxYTJvaVFVbHhJQ1FnUVVrZ0xDQUhJQUVnWFdvZ0NTQmVhbXRxSWtKSmNYSWhYQ0E4SUFjZ0FTQlphaUFKSUZwcWEyb2lTVWtnT0NBSElCMGdLbW9nR0NBYWFtdEJBblJxSWtwSmNTQWdJRXBKSUR3Z0J5QUJJRmRxSUFrZ1dHcHJhaUpMU1hGeUlWOGdMU0JCU1NBc0lBY2dBU0JWYWlBSklGWnFhMm9pUTBseElDMGdQa2tnTGlCRFNYRnlJQzBnUWtrZ0pDQkRTWEZ5SVdBZ0xpQkNTU0FrSUQ1SmNTRmhJRGdnUzBrZ0lDQkpTWEVoWWlBSElBRWdDV3RxSVRJZ0RFRjhjU0VKSUI0b0FpQWlGRUVNYWlFN0lCUkJDR29oTkNBVVFRUnFJVDBnRkVFY2FpRVNJQlJCR0dvaElTQVVRUlJxSVNVZ0ZFRVFhaUVwSUJRZ0RFRUZkR29pRmtFUWF5RW5JQlpCRkdzaEx5QVdRUmhySVRFZ0ZrRWNheUU1SUJaQkJHc2hPaUFXUVFocklUVWdGa0VNYXlFMlFRQWhIQ0FNUWF3QlNTRmpJQXhCTEVraFpBTkFJQVloRUNBZVFTQnFJZ0VnQ0NBUlFRZ1FReUFCRUNZQ1FDQU1SUTBBSUJ3Z1JXd2hCa0VBSVFFQ1FBSkFJR01OQUNCaUlBZ2dPVWtnRkNBR0lESnFJamRKY1NBZ0lESkpJQWdnQmlCTGFpSVRTWEVnQ0NBR0lFcHFJaXRKSURJZ1BFdHhJQWdnQmlCSmFpSXdTU0F5SURoTGNYSnljaUFJSURGSklEY2dQVXR4Y2lBSUlDOUpJRFFnTjBseGNpQUlJQ2RKSURjZ08wdHhjaUJmY2lBVUlDdEpJQVlnUEdvaU55QTVTWEZ5SUNzZ1BVc2dNU0EzUzNGeUlDc2dORXNnTHlBM1MzRnlJQ3NnTzBzZ0p5QTNTM0Z5Y2cwQUlCUWdNRWtnQmlBNGFpSXJJRGxKY1EwQUlDc2dNVWtnTUNBOVMzRU5BQ0FySUM5SklEQWdORXR4RFFBZ01DQTdTeUFuSUN0TGNRMEFJQVlnSUdvaUt5QTVTU0FUSUJSTGNRMEFJQ3NnTVVrZ0V5QTlTM0VOQUNBcklDOUpJQk1nTkV0eERRQWdFeUE3U3lBbklDdExjUTBBQTBBZ0NDQUJRUUowYWlBVUlBRkJCWFJxSWhOQjRBQnFJQk5CUUdzZ0UwRWdhaUFUL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdDQ0FCSUJGcVFRSjBhaUFUUWVRQWFpQVRRY1FBYWlBVFFTUnFJQlA5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnU0dwQkFuUnFJQk5CNkFCcUlCTkJ5QUJxSUJOQktHb2dFLzFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JRYWtFQ2RHb2dFMEhzQUdvZ0UwSE1BR29nRTBFc2FpQVQvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FVRUVhaUlCSUFsSERRQUxJQWtpQVNBTVJnMEJDd05BSUFnZ0FVRUNkR29nRkNBQlFRVjBhaUlUS2dJQU9BSUFJQWdnQVNBUmFrRUNkR29nRXlvQ0JEZ0NBQ0FJSUFFZ1NHcEJBblJxSUJNcUFnZzRBZ0FnQ0NBQklGQnFRUUowYWlBVEtnSU1PQUlBSUFGQkFXb2lBU0FNUncwQUN3dEJBQ0VCQWtBZ1pBMEFJR0VnQmlBc2FpSVRJRFpKSUNrZ0JpQkJhaUlyU1hFZ1lDQUdJQzFxSWpBZ05ra2dLU0FHSUVOcUlqZEpjWElnSlNBM1NTQXdJRFZKY1hJZ0lTQTNTU0F3SURwSmNYSWdFaUEzU1NBV0lEQkxjWElnWEhKeUlDVWdLMGtnRXlBMVNYRnlJQ0VnSzBrZ0V5QTZTWEZ5SUJJZ0swa2dFeUFXU1hGeWNnMEFJQVlnTG1vaUV5QTJTU0FwSUFZZ1Btb2lLMGx4RFFBZ0pTQXJTU0FUSURWSmNRMEFJQ0VnSzBrZ0V5QTZTWEVOQUNBU0lDdEpJQk1nRmtseERRQWdCaUFrYWlJVElEWkpJQ2tnQmlCQ2FpSUdTWEVOQUNBVElEVkpJQVlnSlV0eERRQWdFeUE2U1NBR0lDRkxjUTBBSUJNZ0Zra2dCaUFTUzNFTkFBTkFJQWdnQVNCQWFrRUNkR29nRkNBQlFRVjBhaUlHUWZBQWFpQUdRZEFBYWlBR1FUQnFJQWI5WEFJUS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnVDJwQkFuUnFJQVpCOUFCcUlBWkIxQUJxSUFaQk5Hb2dCdjFjQWhUOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JHYWtFQ2RHb2dCa0g0QUdvZ0JrSFlBR29nQmtFNGFpQUcvVndDR1AxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0NDQUJJRTVxUVFKMGFpQUdRZndBYWlBR1Fkd0FhaUFHUVR4cUlBYjlYQUljL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQlFRUnFJZ0VnQ1VjTkFBc2dDU0lCSUF4R0RRRUxBMEFnQ0NBQklFQnFRUUowYWlBVUlBRkJCWFJxSWdZcUFoQTRBZ0FnQ0NBQklFOXFRUUowYWlBR0tnSVVPQUlBSUFnZ0FTQkdha0VDZEdvZ0Jpb0NHRGdDQUNBSUlBRWdUbXBCQW5ScUlBWXFBaHc0QWdBZ0FVRUJhaUlCSUF4SERRQUxDeUFjUVFGcUlSd2dFRUVJYWlFR0lBZ2dSV29oQ0NBUVFROXFJQTFKRFFBTERBRUxJQTBnRFVFRGRpSUdJQ1lnQmlBbVNSc2lFMjVCZUhFaEZpQU5RWGh4SVFaQkFDRUpJQWNoQ0FOQVFUQVFHQ0lRUlEwRUlCQWdSeEFjSWpJMkFnQWdNa1VFUUNBakVDUWdFQkFVUVFBTUJnc2dFQ0FJTmdJb0lCQWdFVFlDSkNBUUlBdzJBaUFnRUNBVU5nSWNJQkJCQURZQ0dDQVFJQUUyQWhRZ0VFRUFOZ0lRSUJBZ0hEWUNEQ0FRSUFFMkFnZ2dFQ0FVTmdJRUlCQWdCaUFKSUJac2F5QVdJQWxCQVdvaUNTQVRSaHNpTWpZQ0xDQWpRUXdnRUJBeklBZ2dFU0F5YkVFQ2RHb2hDQ0FKSUJOSERRQUxJQ01RSkFzQ1FDQUdJQTFQRFFBZ0hrRWdhaUlCSUFnZ0VTQU5JQVpySWhRUVF5QUJFQ1lnREVVTkFDQWVLQUlnSWhZZ0trRUZkQ0FvUVFKMGFpQUdJQjlxUVFKMElCcEJCWFJxYTJwQklHc2hHaUFVUVh4eElSQWdRQ0FvSUFaQmYzTnFJQjlyYkNFcVFRQWhDUU5BSUJZZ0NVRUZkR29oSEVFQUlRRUNRQUpBSUJSQkJFa05BQ0FhSUFnZ0NVRUNkQ0lCYWlJR0lBZ2dBU0FxYW1vaUV5QUdJQk5KRzBzRVFFRUFJUUVnRmlBR0lCTWdCaUFUU3h0QkJHcEpEUUVMSUFuOUVTRjMvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUFJWFpCQUNFQkEwQWdDQ0IySUhyOXRRRWdkLzJ1QVNKNC9Sc0FRUUowYWlBY0lBRkJBblJxL1FBQ0FDSjUvUjhBT0FJQUlBZ2dlUDBiQVVFQ2RHb2dlZjBmQVRnQ0FDQUlJSGo5R3dKQkFuUnFJSG45SHdJNEFnQWdDQ0I0L1JzRFFRSjBhaUI1L1I4RE9BSUFJSGI5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaGRpQUJRUVJxSWdFZ0VFY05BQXNnRUNJQklCUkdEUUVMQTBBZ0NDQUJJQkZzSUFscVFRSjBhaUFjSUFGQkFuUnFLZ0lBT0FJQUlBRkJBV29pQVNBVVJ3MEFDd3NnQ1VFQmFpSUpJQXhIRFFBTEN5QWVJQTBnSGlnQ0NDSVFheUlUTmdJRUlCY29BcHdCSVFFZ0hpQVROZ0ljSUI3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FVRUNieUlxL1J3QUlCRDlIQUlpZHYwTEFnd0NRQ0JiUlNBTVFROUxjVVVFUUNBSElRRWdERUVJU1EwQklBMUJmbkVoT3lBTlFRRnhJVFFnRTBGK2NTRTlJQk5CQVhFaEVpQVFRWDV4SVNFZ0VFRUJjU0VsSUNnZ0gwRi9jMm9oTWlBZUtBSUFJaFFnS2tFRmRDSUdhaUVXSUJRZ0JtdEJJR29oSENBUUlCRnNRUUowSVNrZ0RDRUpBMEJCQUNFSVFRQWhCZ0pBQWtBQ1FDQVFEZ0lDQVFBTEEwQWdGaUFJUVFaMGFpSWFJQUVnQ0NBUmJFRUNkR29pSi8wQUFnRDlDd0lBSUJvZ0ovMEFBaEQ5Q3dJUUlCWWdDRUVCY2lJYVFRWjBhaUluSUFFZ0VTQWFiRUVDZEdvaUd2MEFBaEQ5Q3dJUUlDY2dHdjBBQWdEOUN3SUFJQWhCQW1vaENDQUdRUUpxSWdZZ0lVY05BQXNMSUNWRkRRQWdGaUFJUVFaMGFpSUdJQUVnQ0NBUmJFRUNkR29pQ1AwQUFnRDlDd0lBSUFZZ0NQMEFBaEQ5Q3dJUUN3SkFJQTBnRUVZTkFDQUJJQ2xxSVJwQkFDRUlRUUFoQmlBUUlESkhCRUFEUUNBY0lBaEJCblJxSWljZ0dpQUlJQkZzUVFKMGFpSXYvUUFDQVAwTEFnQWdKeUF2L1FBQ0VQMExBaEFnSENBSVFRRnlJaWRCQm5ScUlpOGdHaUFSSUNkc1FRSjBhaUluL1FBQ0VQMExBaEFnTHlBbi9RQUNBUDBMQWdBZ0NFRUNhaUVJSUFaQkFtb2lCaUE5UncwQUN3c2dFa1VOQUNBY0lBaEJCblJxSWdZZ0dpQUlJQkZzUVFKMGFpSUkvUUFDQVAwTEFnQWdCaUFJL1FBQ0VQMExBaEFMSUI0UUpnSkFJQTFGRFFCQkFDRUlRUUFoQmlBeUJFQURRQ0FCSUFnZ0VXeEJBblJxSWhvZ0ZDQUlRUVYwYWlJbi9RQUNBUDBMQWdBZ0dpQW4vUUFDRVAwTEFoQWdBU0FJUVFGeUlob2dFV3hCQW5ScUlpY2dGQ0FhUVFWMGFpSWEvUUFDRVAwTEFoQWdKeUFhL1FBQ0FQMExBZ0FnQ0VFQ2FpRUlJQVpCQW1vaUJpQTdSdzBBQ3dzZ05FVU5BQ0FCSUFnZ0VXeEJBblJxSWdZZ0ZDQUlRUVYwYWlJSS9RQUNBUDBMQWdBZ0JpQUkvUUFDRVAwTEFoQUxJQUZCSUdvaEFTQUpRUWhySWdsQkIwc05BQXNNQVF0QkFTQU1RUU4ySWdFZ1JDQUJJRVJKR3lJSklBbEJBVTBiSVJZZ0RDQUpia0Y0Y1NFVUlBeEJlSEVoSEVFQUlRWWdCeUVCQTBCQk1CQVlJZ2hGRFFRZ0NDQkhFQndpR2pZQ0FDQWFSUVJBSUNNUUpDQUlFQlJCQUF3R0N5QUlJQUUyQWlnZ0NDQVJOZ0lrSUFnZ0RUWUNJQ0FJSUJNMkFod2dDQ0IyL1FzQ0RDQUlJQkEyQWdnZ0NDQVROZ0lFSUFnZ0hDQUdJQlJzYXlBVUlBWkJBV29pQmlBSlJoc2lHallDTENBalFRMGdDQkF6SUFFZ0drRUNkR29oQVNBR0lCWkhEUUFMSUNNUUpBc0NRQ0FNUVFkeElnWkZEUUFnS2tFRmRDRWFJQjRvQWdBaENRSkFJQkJGRFFBZ0NTQWFhaUVVSUFaQkFuUWhGa0VBSVFnZ0VFRUJSd1JBSUJCQmZuRWhLa0VBSVJ3RFFDQVVJQWhCQm5ScUlBRWdDQ0FSYkVFQ2RHb2dGaEFXR2lBVUlBaEJBWElpTWtFR2RHb2dBU0FSSURKc1FRSjBhaUFXRUJZYUlBaEJBbW9oQ0NBY1FRSnFJaHdnS2tjTkFBc0xJQkJCQVhGRkRRQWdGQ0FJUVFaMGFpQUJJQWdnRVd4QkFuUnFJQllRRmhvTEFrQWdEU0FRUmcwQUlBa2dHbXRCSUdvaEZpQUJJQkFnRVd4QkFuUnFJUndnQmtFQ2RDRWFRUUFoQ0NBUUlDZ2dIMEYvYzJwSEJFQWdFMEYrY1NFUVFRQWhGQU5BSUJZZ0NFRUdkR29nSENBSUlCRnNRUUowYWlBYUVCWWFJQllnQ0VFQmNpSXFRUVowYWlBY0lCRWdLbXhCQW5ScUlCb1FGaG9nQ0VFQ2FpRUlJQlJCQW1vaUZDQVFSdzBBQ3dzZ0UwRUJjVVVOQUNBV0lBaEJCblJxSUJ3Z0NDQVJiRUVDZEdvZ0doQVdHZ3NnSGhBbUlBMUZEUUFnQmtFQ2RDRVFRUUFoQ0NBZlFRRnFJQ2hIQkVBZ0RVRitjU0VVUVFBaEJnTkFJQUVnQ0NBUmJFRUNkR29nQ1NBSVFRVjBhaUFRRUJZYUlBRWdDRUVCY2lJVElCRnNRUUowYWlBSklCTkJCWFJxSUJBUUZob2dDRUVDYWlFSUlBWkJBbW9pQmlBVVJ3MEFDd3NnRFVFQmNVVU5BQ0FCSUFnZ0VXeEJBblJxSUFrZ0NFRUZkR29nRUJBV0dnc2dGMEdZQVdvaEZ5QVBRUUZySWc4TkFBdEJBUXdDQzBFQklRWWdEaWdDSENJWElBZEJtQUZzYWlJYVFaZ0JheUk4S0FJQUlCcEJrQUZyS0FJQVJnMENJQnBCbEFGcklpb29BZ0FnR2tHTUFXc29BZ0JHRFFJZ0Z5Z0NCQ0VOSUJjb0Fnd2hFQ0FYS0FJQUlSRWdGeWdDQ0NFWUlBNG9Ba1FoRkNBT0tBSkFJUk1nRGlnQ1BDRVdJQTRvQWpnaEhTQU9JQWNRWlNJb1JRUkFRUUFoQmd3REN5QUhRUUZHQkVBZ0tDQWFRUkJyS0FJQUlnRWdQQ2dDQUNJSGF5QWFRUXhyS0FJQUlDb29BZ0FpQ0dzZ0drRUlheWdDQUNJSklBZHJJQnBCQkdzb0FnQWdDR3NnRGlnQ05FRUJJQWtnQVdzUUlpQW9FQ2NNQXd0QkFDRUlBa0FDUUNBSFFRRnJJZ2xCQkVrRVFDQUpJUVlnRnlFQkRBRUxJQWxCQTNFaEJpQVhJQWxCZkhFaUQwR1lBV3hxSVFFRFFDQjJJQmNnREVHWUFXeHFJZ2hCNkFScUlBaEIwQU5xSUFoQnVBSnFJQWo5WEFLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlQUVhaUFJUWNnRGFpQUlRYkFDYWlBSS9Wd0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0NFSHNCR29nQ0VIVUEyb2dDRUc4QW1vZ0NQMWNBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQWhCNUFScUlBaEJ6QU5xSUFoQnRBSnFJQWo5WEFLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0YySUF4QkJHb2lEQ0FQUncwQUN5QjJJSFlnZHYwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8yNUFTSjJJSFlnZHYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8yNUFmMGJBQ0VJSUFrZ0QwWU5BUXNEUUNBSUlBRW9BcUFCSUFFb0FwZ0JheUlKSUFnZ0NVc2JJZ2dnQVNnQ3BBRWdBU2dDbkFGcklna2dDQ0FKU3hzaENDQUJRWmdCYWlFQklBWkJBV3NpQmcwQUN3c0NRQ0FJUVlDQWdNQUFUdzBBSUI0Z0NFRUZkQkFjSWlZMkFpQWdKa1VOQUNBZUlDWTJBZ0FDUUNBSEJFQWdFQ0FOYXlFTklCZ2dFV3NoQ0NBbVFTQnFJVElnQjYwaGZTQVVyU0dBQVNBVHJTR0JBU0FXclNGK0lCMnRJWUlCSUE0b0FoUWlQYTBoZ3dGQ0FTRjhBMEFnSGlBTk5nSUlJQjRnQ0RZQ0tDQVhLQUtrQVNFSElCY29BcUFCSVFZZ0Z5Z0NuQUVoQVNBZUlCY29BcGdCSWdsQkFtOGlKRFlDTENBZUlBRkJBbThpT3pZQ0RDQWVJQVlnQ1dzaUl5QUlheUl1TmdJa0lCNGdCeUFCYXlJUUlBMXJJalEyQWdRZ0hTSVBJUWtnRmlJQklRd2dFeUlHSVJ3Z0ZDSUhJUkVDUUNCOElJTUJVUTBBSUQwZ2ZLZHJJUmhCQUNFTVFRQWhDU0FQQkVCQ2Z5QVlyU0ovaGtKL2hTQ0NBWHdnZjRpbklRa0xJQllFUUVKL0lCaXRJbitHUW4rRklINThJSCtJcHlFTUMwRUFJUWRCQUNFR0lCTUVRRUovSUJpdEluK0dRbitGSUlFQmZDQi9pS2NoQmdzZ0ZBUkFRbjhnR0swaWY0WkNmNFVnZ0FGOElIK0lweUVIQzBFQUlSeEJBQ0VQUVFFZ0dFRUJhM1FpSHlBZFNRUkFJQjBnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFUEN5QVRJQjlMQkVBZ0V5QWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUndMUVFBaEVVRUFJUUVnRmlBZlN3UkFJQllnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFQkN5QVVJQjlORFFBZ0ZDQWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUkVMUVg4Z0hDQVhLQUswQVNJWWF5SWZRUUFnSENBZlR4c2lIMEVFYWlJY0lCd2dIMGtiSWg4Z0xpQWZJQzVKR3lJZ1FYOGdCaUFYS0FMWUFTSWZheUljUVFBZ0JpQWNUeHNpQmtFRWFpSWNJQVlnSEVzYklnWWdDQ0FHSUFoSkd5STRJQ1FiUVFGMElnWWdPQ0FnSUNRYlFRRjBRUUZ5SWh3Z0JpQWNTeHNpSENBalNTRXVJQThnR0dzaUJrRUFJQVlnRDAwYklnWkJCR3NpRDBFQUlBWWdEMDhiSWl3Z0NTQWZheUlHUVFBZ0JpQUpUUnNpQmtFRWF5SUpRUUFnQmlBSlR4c2lMU0FrRzBFQmRDSVNJQzBnTENBa0cwRUJkRUVCY2lJaFNTRWxJQXdnRnlnQ3VBRWlDV3NpQmtFQUlBWWdERTBiSWdaQkJHc2lEMEVBSUFZZ0QwOGJJZ1loRHlBQklCY29BdHdCSWd4ckloaEJBQ0FCSUJoUEd5SUJRUVJySWhoQkFDQUJJQmhQR3lJQklSOUJmeUFISUFscklnbEJBQ0FISUFsUEd5SUhRUVJxSWdrZ0J5QUpTeHNpQnlBTklBY2dEVWtiSWdraEIwRi9JQkVnREdzaURFRUFJQXdnRVUwYklneEJCR29pRVNBTUlCRkxHeUlNSURRZ0RDQTBTUnNpR0NFUklEc0VRQ0FCSVE4Z0JpRWZJQWtoRVNBWUlRY0xJQndnSXlBdUd5RXVJQklnSVNBbEd5RWNJQjRnSURZQ1BDQWVJQ3cyQWpnZ0hpQTROZ0kwSUI0Z0xUWUNNQUpBSUJCQkNFa0VRRUVISVFoQkFDRU1EQUVMSURJZ0pFRUZkQ0lNYXlBc1FRWjBhaUUwSUF3Z0ptb2dMVUVHZEdvaEVpQUlJQ0JxSVNBZ0NDQXNhaUVzSUEwZ0dHb2hJU0FCSUExcUlTVWdKaUFjUVFWMGFpRXBRUUFoREFOQUFrQUNRQ0FKSUF4TElBeEJCM0lpQ0NBR1QzRU5BQ0FNSUNGSklBZ2dKVTl4RFFBZ0RFRUlhaUVNREFFTFFRZ2dFQ0FNYXlJSUlBaEJDRThiSVNkQkFDRUlBMEFnS0NBdElBZ2dER29pSkNBNElDUkJBV29pTHlBU0lBaEJBblFpTVdwQkVFRUFFQ0lnS0NBc0lDUWdJQ0F2SURFZ05HcEJFRUVBRUNJZ0NFRUJhaUlJSUNkSERRQUxJQjVCSUdvUUppQW9JQndnRENBdUlBeEJDR29pRENBcFFRaEJBVUVBRUNwRkRRVUxJQXhCQjNJaUNDQVFTUTBBQ3dzQ1FDQU1JQkJQRFFBZ0JpQUlUU0FKSUF4TGNVVUVRQ0FNSUEwZ0dHcFBEUUVnQ0NBQklBMXFTUTBCQ3lBZVFTQnFJUWhCQUNFa0lCQWdER3NpTFFSQUEwQWdLQ0FJS0FJUUlpQWdEQ0FrYWlJc0lBZ29BaFFnTEVFQmFpSTRJQ1JCQW5RaU5DQUlLQUlBSUFnb0FneEJCWFJxSUNCQkJuUnFha0VRUVFBUUlpQW9JQWdvQWhnaUlDQUlLQUlJSWhKcUlDd2dDQ2dDSENBU2FpQTRJQWdvQWdBZ0NDZ0NERUVGZEdzZ0lFRUdkR29nTkdwQklHcEJFRUVBRUNJZ0pFRUJhaUlrSUMxSERRQUxDeUFJRUNZZ0tDQWNJQXdnTGlBUUlDWWdIRUVGZEdwQkNFRUJRUUFRS2tVTkF3c2dIaUFZTmdJY0lCNGdBVFlDR0NBZUlBazJBaFFnSGlBR05nSVFJQndnTGtrRVFDQUhRUUYwSWdjZ0VVRUJkRUVCY2lJSUlBY2dDRXNiSWdjZ0VDQUhJQkJKR3lFSElESWdPMEVGZENJSWF5QUJRUVowYWlFTUlBZ2dKbW9nQmtFR2RHb2hDQ0FOSUJocUlSRWdBU0FOYWlFTklDWWdEMEVCZENJQklCOUJBWFJCQVhJaUR5QUJJQTlKR3lJUFFRVjBhaUVZQTBBZ0tDQWNJQVpCQ0NBdUlCeHJJZ0VnQVVFSVR4c2dIR29pQVNBSklBaEJBVUVRRUNJZ0tDQWNJQTBnQVNBUklBeEJBVUVRRUNJZ0hoQW1JQ2dnSENBUElBRWdCeUFZUVFGQkNFRUFFQ3BGRFFRZ0hFRUlhaUljSUM1SkRRQUxDeUFYUVpnQmFpRVhJQ01oQ0NBUUlRMGdmRUlCZkNKOElIMVNEUUFMQzBFQklRWWdLQ0FhUVJCcktBSUFJZ0VnUENnQ0FDSUhheUFhUVF4cktBSUFJQ29vQWdBaUNHc2dHa0VJYXlnQ0FDSUpJQWRySUJwQkJHc29BZ0FnQ0dzZ0RpZ0NORUVCSUFrZ0FXc1FJaUFvRUNjZ0poQVVEQVFMSUNnUUp5QW1FQlJCQUNFR0RBTUxJQ2dRSjBFQUlRWU1BZ3NnSXhBa1FRQUxJUVlnSGlnQ0lCQVVDeUFlUVVCckpBQWdCZzBBREFRTElCbEJ1QWhxSVJrZ0NrRTBhaUVLSUE1QnpBQnFJUTRnQzBFQmFpSUxJQlVvQWhCSkRRQUxJQnNvQWlBaEdTQWJLQUlVS0FJQUlSVUxBa0FnR1NnQ0VDSU9SUTBBSUJzb0FrUU5BQ0FWS0FJVUlnb29BaHdoQVFKQUFrQUNRQUpBQWtBZ0d5Z0NRQ0lHQkVBZ0ZTZ0NFQ0lMUVFOSkRRSUNRQ0FLS0FJWUlnY2dDaWdDWkVZRVFDQUhJQW9vQXJBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SkN3SkFJQnNvQWhnb0FoZ2lDQ2dDSkNJSklBZ29BbGhIRFFBZ0NTQUlLQUtNQVVjTkFDQUJJQWRCbUFGc0lnaHFJZ0ZCakFGcktBSUFJQUZCbEFGcktBSUFheUFCUVpBQmF5Z0NBQ0FCUVpnQmF5Z0NBR3RzSWdFZ0NpZ0NhQ0FJYWlJSFFZd0JheWdDQUNBSFFaUUJheWdDQUdzZ0IwR1FBV3NvQWdBZ0IwR1lBV3NvQWdCcmJFY05BQ0FLS0FLMEFTQUlhaUlIUVl3QmF5Z0NBQ0FIUVpRQmF5Z0NBR3NnQjBHUUFXc29BZ0FnQjBHWUFXc29BZ0JyYkNBQlJnMENDeUF6UVFGQnhNNEFRUUFRRXd3SUN5QVZLQUlRSWd0QkEwa05BUUpBSUJzb0FoZ29BaGdpQnlnQ0pDSUlJQWNvQWxoSERRQWdDQ0FIS0FLTUFTSUpSdzBBSUFFZ0NFR1lBV3dpQjJvaUFTZ0NsQUVnQVNnQ2pBRnJJQUVvQXBBQklBRW9Bb2dCYTJ3aUFTQUhJQW9vQW1ocUlnY29BcFFCSUFjb0Fvd0JheUFIS0FLUUFTQUhLQUtJQVd0c1J3MEFJQW9vQXJRQklBbEJtQUZzYWlJSEtBS1VBU0FIS0FLTUFXc2dCeWdDa0FFZ0J5Z0NpQUZyYkNBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SEN5QU9RUUpHQkVBZ0dTZ0M2Q3RGRFFVZ0MwRUNkQkFZSWd0RkRRY2dGU2dDRUNJSlJRMEVJQnNvQWtBRVFFRUFJUlVnQ1VFTFRRMERJQXBCSkdvaUNDQUxJQWxCQW5ScVNRUi9JQW9nQ1VITUFHeHFRU1JySUF0TEJVRUFDdzBESUFwQmlBSnFJUThnQ2tHOEFXb2hEQ0FLUWZBQWFpRVhJQW9nQ1VGOGNTSUdRY3dBYkdvaENrRUFJUTREUUNBTElBNUJBblJxSUE4Z0RrSE1BR3dpQjJvZ0J5QU1haUFISUJkcUlBY2dDR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQU9RUVJxSWc0Z0JrY05BQXNnQmlBSlJ3MEVEQVVMUVFBaEZRSkFJQWxCREVrRVFFRUFJUVlNQVFzZ0NrRTBhaUVJQWtBZ0N5QUtJQWxCekFCc2FrRVVhMDhOQUNBSUlBc2dDVUVDZEdwUERRQkJBQ0VHREFFTElBcEJtQUpxSVE4Z0NrSE1BV29oRENBS1FZQUJhaUVYSUFvZ0NVRjhjU0lHUWN3QWJHb2hDa0VBSVE0RFFDQUxJQTVCQW5ScUlBOGdEa0hNQUd3aUIyb2dCeUFNYWlBSElCZHFJQWNnQ0dyOVhBSUEvVllDQUFIOVZnSUFBdjFXQWdBRC9Rc0NBQ0FPUVFScUlnNGdCa2NOQUFzZ0JpQUpSZzBGQ3dKQUlBbEJBM0VpQjBVRVFDQUdJUTRNQVFzZ0JpRU9BMEFnQ3lBT1FRSjBhaUFLS0FJME5nSUFJQTVCQVdvaERpQUtRY3dBYWlFS0lCVkJBV29pRlNBSFJ3MEFDd3NnQmlBSmEwRjhTdzBFSUF0QkRHb2hCaUFMUVFocUlRZ2dDMEVFYWlFUEEwQWdDeUFPUVFKMElnZHFJQW9vQWpRMkFnQWdCeUFQYWlBS0tBS0FBVFlDQUNBSElBaHFJQW9vQXN3Qk5nSUFJQVlnQjJvZ0NpZ0NtQUkyQWdBZ0NrR3dBbW9oQ2lBT1FRUnFJZzRnQ1VjTkFBc01CQXNnR1NnQzBDc29BaFJCQVVZRVFDQUdCRUFnQ2lnQ0pDQUtLQUp3SUFvb0Fyd0JJQUVRYUF3R0N5QUtLQUkwSUFvb0FvQUJJQW9vQXN3QklBRVFhQXdGQ3lBR0JFQWdDaWdDSkNBS0tBSndJQW9vQXJ3QklBRVFad3dGQ3lBS0tBSTBJQW9vQW9BQklBb29Bc3dCSUFFUVp3d0VDeUEvSUFzMkFnQWdNMEVCUVlIUEFDQS9FQk1NQXd0QkFDRUdDd0pBSUFsQkEzRWlCMFVFUUNBR0lRNE1BUXNnQmlFT0EwQWdDeUFPUVFKMGFpQUtLQUlrTmdJQUlBNUJBV29oRGlBS1Fjd0FhaUVLSUJWQkFXb2lGU0FIUncwQUN3c2dCaUFKYTBGOFN3MEFJQXRCREdvaEJpQUxRUWhxSVFnZ0MwRUVhaUVQQTBBZ0N5QU9RUUowSWdkcUlBb29BaVEyQWdBZ0J5QVBhaUFLS0FKd05nSUFJQWNnQ0dvZ0NpZ0N2QUUyQWdBZ0JpQUhhaUFLS0FLSUFqWUNBQ0FLUWJBQ2FpRUtJQTVCQkdvaURpQUpSdzBBQ3dzZ0d5Z0NHQ2dDR0NnQ0lCb0NmeUFaS0FMb0t5RUhRUUFoRjBFQUlBbEJBM1FRR0NJT1JRMEFHZ0pBSUFGRkRRQWdDVVVOQUNBT0lBbEJBblJxSVJFZ0NVRjhjU0VOSUFsQkEzRWhHU0FKUVFGcklSQURRRUVBSVJWQkFDRUlJQkJCQTA4RVFBTkFJQTRnRlVFQ2RDSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlBNGdCa0VFY2lJUGFpQUxJQTlxS0FJQUtnSUFPQUlBSUE0Z0JrRUljaUlQYWlBTElBOXFLQUlBS2dJQU9BSUFJQTRnQmtFTWNpSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlCVkJCR29oRlNBSVFRUnFJZ2dnRFVjTkFBc0xRUUFoQ2lBWkJFQURRQ0FPSUJWQkFuUWlCbW9nQmlBTGFpZ0NBQ29DQURnQ0FDQVZRUUZxSVJVZ0NrRUJhaUlLSUJsSERRQUxDMEVBSVFZZ0J5RVZBMEFnRVNBR1FRSjBJaFJxSWdoQkFEWUNBRU1BQUFBQUlZUUJRUUFoQ2tFQUlROGdFRUVDU3dSQUEwQWdDQ0FWS2dJQUlBNGdDa0VDZEdvaURDb0NBSlFnaEFHU0lvUUJPQUlBSUFnZ0ZTb0NCQ0FNS2dJRWxDQ0VBWklpaEFFNEFnQWdDQ0FWS2dJSUlBd3FBZ2lVSUlRQmtpS0VBVGdDQUNBSUlCVXFBZ3dnRENvQ0RKUWdoQUdTSW9RQk9BSUFJQXBCQkdvaENpQVZRUkJxSVJVZ0QwRUVhaUlQSUExSERRQUxDMEVBSVF3Z0dRUkFBMEFnQ0NBVktnSUFJQTRnQ2tFQ2RHb3FBZ0NVSUlRQmtpS0VBVGdDQUNBS1FRRnFJUW9nRlVFRWFpRVZJQXhCQVdvaURDQVpSdzBBQ3dzZ0N5QVVhaUlJSUFnb0FnQWlDRUVFYWpZQ0FDQUlJSVFCT0FJQUlBWkJBV29pQmlBSlJ3MEFDeUFYUVFGcUloY2dBVWNOQUFzTElBNFFGRUVCQ3lBTEVCUkZEUUlMSUJzb0FoUW9BZ0FpRUNnQ0VFVUVRRUVCSVNJTUFnc2dHeWdDSUNnQzBDc2lGVUc0Q0dvaEZDQVZRYlFJYWlFVElCc29Ba1FoRVNBUUtBSVVJUWNnR3lnQ0dDZ0NHQ0VJUVFBaEZ3TkFBa0FnRVFSQUlCRWdGMEVDZEdvb0FnQkZEUUVMSUFjb0Fod2lBU0FJS0FJa1FaZ0JiR29oQ3dKL0lCc29Ba0JGQkVBZ0N5Z0NsQUVnQ3lnQ2pBRnJJUVlnQ3lnQ2tBRWdDeWdDaUFGcklRRkJBQ0VKUVRRTUFRc2dBU0FIS0FJWVFaZ0JiR29pQmtHUUFXc29BZ0FnQ3lnQ0NDQUxLQUlBYXlJQklBWkJtQUZyS0FJQWFtc2hDU0FMS0FJTUlBc29BZ1JySVFaQkpBc2hEeUFJS0FJWUlRc0NmeUFJS0FJZ0JFQkJBU0FMUVFGcmRDSUxRUUZySVE1QkFDQUxhd3dCQzBGL0lBdDBRWDl6SVE1QkFBc2hEU0FCUlEwQUlBWkZEUUFnQnlBUGFpZ0NBQ0VpSUJVb0FoUkJBVVlFUUNBVUlCZEJ1QWhzSWd0cUlSWWdDeUFUYWlFWUlBRkJBWEVoTXlBQlFRSjBJUjBnQVVGOGNTSVBRUUowSVNNZ0R2MFJJWGdnRGYwUklYWkJBQ0VNSUFGQkJFa2hId05BQWtBQ1FBSkFJQjhOQUNBWUlCMGdJbXBKSUJZZ0lrdHhEUUFnSWlBamFpRVpJQlg5Q1FLMENDRjVRUUFoQ3dOQUlDSWdDMEVDZEdvaUNpQjJJSGtnQ3YwQUFnRDlyZ0VpZWlCNC9iWUJJSG9nZHYwNS9WTDlDd0lBSUF0QkJHb2lDeUFQUncwQUN5QVBJZ3NnQVVZTkFnd0JDeUFpSVJsQkFDRUxDeUFMUVFGeUlRb2dNd1JBSUJrZ0RTQVZLQUswQ0NBWktBSUFhaUlMSUE0Z0N5QU9TQnNnQ3lBTlNCczJBZ0FnR1VFRWFpRVpJQW9oQ3dzZ0FTQUtSZzBBQTBBZ0dTQU5JQlVvQXJRSUlCa29BZ0JxSWdvZ0RpQUtJQTVJR3lBS0lBMUlHellDQUNBWklBMGdGU2dDdEFnZ0dTZ0NCR29pQ2lBT0lBb2dEa2diSUFvZ0RVZ2JOZ0lFSUJsQkNHb2hHU0FMUVFKcUlnc2dBVWNOQUFzTElCa2dDVUVDZEdvaElpQU1RUUZxSWd3Z0JrY05BQXNNQVFzZ0RxMGhmQ0FOckNHQUFVRUFJUXdEUUVFQUlRc0RRQ0FpQW44Z0RpQWlLZ0lBSW9RQlF3QUFBRTllRFFBYUlBMGdoQUZEQUFBQXoxME5BQm9nRFNBVk5BSzBDQUovSUlRQmtDS0VBWXREQUFBQVQxMEVRQ0NFQWFnTUFRdEJnSUNBZ0hnTHJId2lmU0I4SUh3Z2ZWVWJweUI5SUlBQlV4c0xOZ0lBSUNKQkJHb2hJaUFMUVFGcUlnc2dBVWNOQUFzZ0lpQUpRUUowYWlFaUlBeEJBV29pRENBR1J3MEFDd3NnQjBITUFHb2hCeUFWUWJnSWFpRVZJQWhCTkdvaENFRUJJU0lnRjBFQmFpSVhJQkFvQWhCSkRRQUxEQUVMUVFBaElpQUZRUUZCaHhwQkFCQVRDeUEvUVJCcUpBQWdJa1VFUUNCTkVEUWdBQ0FBS0FJSVFZQ0FBbkkyQWdnZ0JVRUJRWmJaQUVFQUVCTU1BUXNDUUNBQ1JRMEFBbjhnQWlFSFFRQWhCZ0pBSUFBb0F1Z0JJZ3BCQVJCZElnRkJmMFlOQUNBQklBTkxEUUJCQVNBS0tBSVlJZ0VvQWhCRkRRRWFJQUVvQWhnaER5QUtLQUlVS0FJQUtBSVVJUmNEUUNBUEtBSVlJZ0ZCQjNFaEFpQUJRUU4ySVFNZ0Z5Z0NIQ0lHSUE4b0FpUkJtQUZzYWlFQkFuOGdDaWdDUUFSQUlBWWdGeWdDR0VHWUFXeHFJZ1pCa0FGcktBSUFJQUVvQWdnZ0FTZ0NBR3NpQ0NBR1FaZ0JheWdDQUdwcklRd2dBU2dDRENBQktBSUVheUVPUVNRTUFRc2dBU2dDbEFFZ0FTZ0NqQUZySVE0Z0FTZ0NrQUVnQVNnQ2lBRnJJUWhCQUNFTVFUUUxJQmRxS0FJQUlRRUNRQUpBQWtBQ1FBSkFRUVFnQXlBQ1FRQkhhaUlDSUFKQkEwWWJRUUZyRGdRQkFnUUFCQXNnRGtVTkF5QUlJQXhxSVFZZ0NFRUNkQ0VDSUE1QkJFOEVRQ0FPUVh4eElRdEJBQ0VJQTBBZ0J5QUJJQUlRRmlFSElBRWdCa0VDZENJRGFpSUpJQU5xSWd3Z0Eyb2lGU0FEYWlFQklBSWdCMm9nQ1NBQ0VCWWdBbW9nRENBQ0VCWWdBbW9nRlNBQ0VCWWdBbW9oQnlBSVFRUnFJZ2dnQzBjTkFBc0xRUUFoQ0NBT1FRTnhJZ05GRFFNRFFDQUhJQUVnQWhBV0lRY2dBU0FHUVFKMGFpRUJJQUlnQjJvaEJ5QUlRUUZxSWdnZ0EwY05BQXNNQXdzZ0RrVWdDRVZ5SVFJZ0R5Z0NJRVVOQVNBQ0RRSWdDRUVDZENFVklBaEJmSEVpQTBFQ2RDRVpRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0NHcEpJQUVnRldvZ0IwdHhEUUFnQXlBSGFpQUJJQmxxSVFaQkFDRUxBMEFnQnlBTGFpQUJJQXRCQW5ScS9RQUNBUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBOQUFRSURBQUFBQUFBQUFBQUFBQUFBUDFhQUFBQUlBdEJCR29pQ3lBRFJ3MEFDeUVISUFNaUFpQUlSZzBDREFFTElBRWhCa0VBSVFJTFFRQWhDeUFJSUFJaUFXdEJCM0VpRFFSQUEwQWdCeUFHS0FJQU9nQUFJQUZCQVdvaEFTQUhRUUZxSVFjZ0JrRUVhaUVHSUF0QkFXb2lDeUFOUncwQUN3c2dBaUFJYTBGNFN3MEFBMEFnQnlBR0tBSUFPZ0FBSUFjZ0JpZ0NCRG9BQVNBSElBWW9BZ2c2QUFJZ0J5QUdLQUlNT2dBRElBY2dCaWdDRURvQUJDQUhJQVlvQWhRNkFBVWdCeUFHS0FJWU9nQUdJQWNnQmlnQ0hEb0FCeUFIUVFocUlRY2dCa0VnYWlFR0lBRkJDR29pQVNBSVJ3MEFDd3NnQmlBTVFRSjBhaUVCSUFsQkFXb2lDU0FPUncwQUN3d0NDeUFPUlNBSVJYSWhBaUFQS0FJZ0JFQWdBZzBDSUFoQkFuUWhGU0FJUVFGMElSa2dDRUY4Y1NJRFFRSjBJUTBnQTBFQmRDRVFRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0dXcEpJQUVnRldvZ0IwdHhEUUFnQVNBTmFpRUdJQWNnRUdwQkFDRUxBMEFnQnlBTFFRRjBhaUFCSUF0QkFuUnEvUUFDQVAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkFBRUVCUWdKREEwQUFRQUJBQUVBQWYxYkFRQUFJQXRCQkdvaUN5QURSdzBBQ3lFSElBTWlBaUFJUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ3lBSUlBSWlBV3RCQjNFaUVRUkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBdEJBV29pQ3lBUlJ3MEFDd3NnQWlBSWEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUlSdzBBQ3dzZ0JpQU1RUUowYWlFQklBbEJBV29pQ1NBT1J3MEFDd3dDQ3lBQ0RRRWdDRUVDZENFVklBaEJBWFFoR1NBSVFYeHhJZ05CQW5RaERTQURRUUYwSVJCQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFaYWtrZ0FTQVZhaUFIUzNFTkFDQUJJQTFxSVFZZ0J5QVFha0VBSVFzRFFDQUhJQXRCQVhScUlBRWdDMEVDZEdyOUFBSUEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBBQVFRRkNBa01EUUFCQUFFQUFRQUIvVnNCQUFBZ0MwRUVhaUlMSUFOSERRQUxJUWNnQXlJQ0lBaEdEUUlNQVFzZ0FTRUdRUUFoQWd0QkFDRUxJQWdnQWlJQmEwRUhjU0lSQkVBRFFDQUhJQVlvQWdBN0FRQWdBVUVCYWlFQklBZEJBbW9oQnlBR1FRUnFJUVlnQzBFQmFpSUxJQkZIRFFBTEN5QUNJQWhyUVhoTERRQURRQ0FISUFZb0FnQTdBUUFnQnlBR0tBSUVPd0VDSUFjZ0JpZ0NDRHNCQkNBSElBWW9BZ3c3QVFZZ0J5QUdLQUlRT3dFSUlBY2dCaWdDRkRzQkNpQUhJQVlvQWhnN0FRd2dCeUFHS0FJY093RU9JQWRCRUdvaEJ5QUdRU0JxSVFZZ0FVRUlhaUlCSUFoSERRQUxDeUFHSUF4QkFuUnFJUUVnQ1VFQmFpSUpJQTVIRFFBTERBRUxJQUlOQUNBSVFRSjBJUlVnQ0VGOGNTSURRUUowSVJsQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFJYWtrZ0FTQVZhaUFIUzNFTkFDQURJQWRxSUFFZ0dXb2hCa0VBSVFzRFFDQUhJQXRxSUFFZ0MwRUNkR3I5QUFJQS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9RMEFCQWdNQUFBQUFBQUFBQUFBQUFBQS9Wb0FBQUFnQzBFRWFpSUxJQU5IRFFBTElRY2dBeUlDSUFoR0RRSU1BUXNnQVNFR1FRQWhBZ3RCQUNFTElBZ2dBaUlCYTBFSGNTSU5CRUFEUUNBSElBWW9BZ0E2QUFBZ0FVRUJhaUVCSUFkQkFXb2hCeUFHUVFScUlRWWdDMEVCYWlJTElBMUhEUUFMQ3lBQ0lBaHJRWGhMRFFBRFFDQUhJQVlvQWdBNkFBQWdCeUFHS0FJRU9nQUJJQWNnQmlnQ0NEb0FBaUFISUFZb0FndzZBQU1nQnlBR0tBSVFPZ0FFSUFjZ0JpZ0NGRG9BQlNBSElBWW9BaGc2QUFZZ0J5QUdLQUljT2dBSElBZEJDR29oQnlBR1FTQnFJUVlnQVVFSWFpSUJJQWhIRFFBTEN5QUdJQXhCQW5ScUlRRWdDVUVCYWlJSklBNUhEUUFMQ3lBWFFjd0FhaUVYSUE5Qk5Hb2hEMEVCSVFZZ2RVRUJhaUoxSUFvb0FoZ29BaEJKRFFBTEN5QUdDMFVOQVNCTktBTGNLeUlCUlEwQUlBRVFGQ0JOUWdBM0F0d3JDeUFBSUFBdEFGeEIvZ0Z4T2dCY0lBQWdBQ2dDQ0VIL2ZuRTJBZ2hCQVNGbElBUXBBd2dpZkZBRWZrSUFCU0I4SUFRcEF6aDlDMUFnQUNnQ0NDSUJRY0FBUm5FTkFDQUJRWUFDUmcwQUlBUWdURUVLYWtFQ0lBVVFIVUVDUndSQUlBVkJBVUVDSUFBb0F0QUJHMEdERTBFQUVCTWdBQ2dDMEFGRklXVU1BUXNnVEVFS2FpQk1RUXhxUVFJUUZTQk1LQUlNSWdGQmtQOERSZzBBSUFGQjJmOERSZ1JBSUFCQmdBSTJBZ2dnQUVFQU5nTGtBUXdCQ3lBRUtRTUlJbnhRQkg1Q0FBVWdmQ0FFS1FNNGZRdFFCRUFnQUVIQUFEWUNDQ0FGUVFKQnZzRUFRUUFRRXd3QkMwRUFJV1VnQlVFQlFjM0FBRUVBRUJNTElFeEJFR29rQUNCbEN3c0FJQUFFUUNBQUVCUUxDN1FCQVFGL0lBQW9BZ3hGQkVBZ0FpQUFLQUlrSUFFUkF3QVBDd0pBUVFnUUdDSURSUTBBSUFNZ0FqWUNCQ0FESUFFMkFnQkJDQkFZSWdGRkJFQWdBeEFVRHdzZ0FTQUROZ0lBSUFBZ0FDZ0NCRUhrQUd3aUFqWUNLQU5BSUFBb0FoZ2dBa29OQUFzZ0FTQUFLQUlVTmdJRUlBQWdBVFlDRkNBQUlBQW9BaGhCQVdvMkFoZ2dBQ2dDSENJQlJRMEFJQUVvQWdCQkFEWUNDQ0FBSUFFb0FnUTJBaHdnQUNBQUtBSWdRUUZyTmdJZ0lBRVFGQXNMK2dJQkJIOENRQ0FBUlEwQUlBQW9BcXdvSWdFRVFDQUFLQUtvS0NJQ0JFQkJBQ0VCQTBBZ0FDZ0NyQ2dnQVVFRGRHb29BZ0FpQXdSQUlBTVFGQ0FBS0FLb0tDRUNDeUFCUVFGcUlnRWdBa2tOQUFzZ0FDZ0NyQ2doQVFzZ0FFRUFOZ0tvS0NBQkVCUWdBRUVBTmdLc0tBc2dBQ2dDdENnaUFRUkFJQUVRRkNBQVFRQTJBclFvQ3lBQUtBTFFLeUlCQkVBZ0FSQVVJQUJCQURZQzBDc0xJQUFvQXV3cklnRUVRQ0FCRUJRZ0FFRUFOZ0xzS3dzZ0FDZ0M2Q3NpQVFSQUlBRVFGQ0FBUVFBMkF1Z3JDeUFBS0FMOEt5SUJCRUFnQVJBVUlBQkJBRFlDaEN3Z0FFSUFOd0w4S3dzZ0FDZ0M4Q3NpQVFSQUlBQW9BdlFySWdNRWYwRUFJUUlEUUNBQktBSU1JZ1FFUUNBRUVCUWdBVUVBTmdJTUlBQW9BdlFySVFNTElBRkJGR29oQVNBQ1FRRnFJZ0lnQTBrTkFBc2dBQ2dDOENzRklBRUxFQlFnQUVFQU5nTHdLd3NnQUNnQzVDc2lBUVJBSUFFUUZDQUFRUUEyQXVRckN5QUFLQUxjS3lJQlJRMEFJQUVRRkNBQVFnQTNBdHdyQ3d1d0J3SUxmd0YrSUFBb0FoQWlDRUVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlVSWdOQkJFNEVRQ0FBS0FJQUlnSkJBMnNvQWdBaEFTQUFJQU5CQkdzaUF6WUNGQ0FBSUFKQkJHczJBZ0FNQVFzZ0EwRUFUQVJBREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkF3QkN5QURRZjcvLy84SGNTRUpRUmdoQkFOQUlBQWdBa0VCYXlJR05nSUFJQUl0QUFBZ0FDQUNRUUpySWdJMkFnQWdBQ0FEUVFGck5nSVVJQVl0QUFBaEJpQUFJQU5CQW1zaUF6WUNGQ0FFZENBQmNpQUdJQVJCQ0d0MGNpRUJJQVJCRUdzaEJDQUZRUUpxSWdVZ0NVY05BQXNMQkVBZ0FDQUNRUUZyTmdJQUlBSXRBQUFnQUNBRFFRRnJOZ0lVSUFSMElBRnlJUUVMUVFBaEF3c2dBQ2dDR0NFQ0lBQWdBVUgvQVhFaUNVR1BBVXMyQWhnZ0FFRUhRUWdnQVVHQWdJRDRCM0ZCZ0lDQStBZEdHMEVJSUFJYklnSkJDRUVIUVFnZ0FVR0FnUHdEY1VHQWdQd0RSaHNnQVVILy8vLy9lRTBiYWlJRVFRaEJCMEVJSUFGQmdQNEJjVUdBL2dGR0d5QUJRUkIyUWY4QmNTSUZRWThCVFJ0cUlnWkJDRUVIUVFnZ0FVSC9BSEZCL3dCR0d5QUJRUWgyUWY4QmNTSUhRWThCVFJzZ0NHcHFJZ28yQWhBZ0FDQUFLUU1JSUFVZ0FuUWdBVUVZZG5JZ0J5QUVkSElnQ1NBR2RIS3RJQWl0aG9RaUREY0RDQ0FLUVI5TkJFQUNRQ0FEUVFST0JFQWdBQ2dDQUNJQ1FRTnJLQUlBSVFFZ0FDQURRUVJyTmdJVUlBQWdBa0VFYXpZQ0FBd0JDeUFEUVFCTUJFQkJBQ0VCREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkVFQUlRRU1BUXNnQTBIKy8vLy9CM0VoQmtFWUlRUkJBQ0VCUVFBaEJRTkFJQUFnQWtFQmF5SUhOZ0lBSUFJdEFBQWdBQ0FDUVFKcklnSTJBZ0FnQUNBRFFRRnJOZ0lVSUFjdEFBQWhCeUFBSUFOQkFtc2lBellDRkNBRWRDQUJjaUFISUFSQkNHdDBjaUVCSUFSQkVHc2hCQ0FGUVFKcUlnVWdCa2NOQUFzTFJRMEFJQUFnQWtFQmF6WUNBQ0FDTFFBQUlBQWdBMEVCYXpZQ0ZDQUVkQ0FCY2lFQkN5QUFJQUZCL3dGeElnSkJqd0ZMTmdJWUlBQkJDRUVIUVFnZ0FVR0FnSUQ0QjNGQmdJQ0ErQWRHR3lBSlFZOEJUUnNpQTBFSVFRZEJDQ0FCUVlDQS9BTnhRWUNBL0FOR0d5QUJRZi8vLy85NFRSdHFJZ1JCQ0VFSFFRZ2dBVUdBL2dGeFFZRCtBVVliSUFGQkVIWkIvd0Z4SWdWQmp3Rk5HMm9pQ0VFSVFRZEJDQ0FCUWY4QWNVSC9BRVliSUFGQkNIWkIvd0Z4SWdsQmp3Rk5HeUFLYW1vMkFoQWdBQ0FGSUFOMElBRkJHSFp5SUFrZ0JIUnlJQUlnQ0hSeXJTQUtyWVlnRElRaUREY0RDQXNnREtjTHdSUUNHMzhHZXlBQUtBSUlJZ29nQUNnQ0JHb2hDQUpBSUFBb0FneEZCRUFnQ0VFQ1NBMEJJQU5CQUV3TkFTQUFLQUlBSWdVZ0NFRUVheUlHUVFGMklneEJBblFpQ1NBQklBcEJBblJxSWdjZ0EwRUNkQ0lFYW1wQkJHcEpJQVVnREVFRGRHcEJDR29pQUNBSFFRUnFTM0VnQlNBQklBUnFJQWxxUVFScVNTQUJRUVJxSUFCSmNYSWhFaUFJUVFSSkloUWdBa0VCUjNJaEZTQUNRUUZHSUFaQkJVdHhJUllnQ0VIOC8vLy9CM0VoRXlBSVFRRnhJUmNnQ2tFQmFpRVBJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWlFWklBVWdDRUVCYXlJQVFRSjBhaUVhSUF4QkFXb2lHMEY4Y1NJUVFRRjBJUXNnQWlBS2JFRUNkQ0VjSUFCQkFYWWdBbXhCQW5RaEhRTkFJQUVvQWdBZ0FTQWNhaWdDQUNJSlFRRnFRUUYxYXlFSEFrQWdGQVJBSUFraEJFRUFJUVlNQVF0QkFDRUdBa0FDZjBFQUlCWkZEUUFhUVFBZ0VnMEFHaUFKL1JFaElDQUgvUkVoSC8wTUFBQUFBQUlBQUFBRUFBQUFCZ0FBQUNFalFRQWhBQU5BSUFFZ0FFRUNkR3I5QUFJRUlTSWdBU0FBSUE5cVFRSjBhdjBBQWdBaElTQUZJQUJCQTNScUlnUWdILzFhQWdBRElBUkJDR29nSWlBaElDQWdJZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlpL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlJUDFhQWdBQUlBUkJFR29nSVAxYUFnQUJJQVJCR0dvZ0lQMWFBZ0FDSUFVZ0kvME1BUUFBQUFFQUFBQUJBQUFBQVFBQUFQMVFJaVQ5R3dCQkFuUnFJQ0FnSHlBZy9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYi9hNEJRUUg5ckFFZ0l2MnVBU0lmL1ZvQ0FBQWdCU0FrL1JzQlFRSjBhaUFmL1ZvQ0FBRWdCU0FrL1JzQ1FRSjBhaUFmL1ZvQ0FBSWdCU0FrL1JzRFFRSjBhaUFmL1ZvQ0FBTWdJLzBNQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBUDJ1QVNFaklDQWhIeUFoSVNBZ0FFRUVhaUlBSUJCSERRQUxJQ0Q5R3dNaEJDQWYvUnNESVFjZ0VDQWJSZzBCSUFzaEJpQUVJUWtnRUFzaEFBTkFJQUVnQUVFQmFpSUtJQUpzUVFKMGFpZ0NBQ0VlSUFFZ0FDQVBhaUFDYkVFQ2RHb29BZ0FoQkNBRklBWkJBblJxSWc0Z0J6WUNBQ0FPSUFjZ0hpQUVJQWxxUVFKcVFRSjFheUlIYWtFQmRTQUphallDQkNBR1FRSnFJUVlnQUNBTVJ5QUVJUWtnQ2lFQURRQUxEQUVMSUFzaEJnc2dCU0FHUVFKMGFpQUhOZ0lBUVh3aEFDQVhCSDhnR2lBQklCMXFLQUlBSUFSQkFXcEJBWFZySWdBMkFnQWdBQ0FIYWtFQmRTRUhRWGdGUVh3TElCbHFJQVFnQjJvMkFnQkJBQ0VHUVFBaEFFRUFJUVFDUUNBVklCZ2dEVUVDZEdwQkVFbHlSUVJBQTBBZ0FTQUFRUUowSWdScUlBUWdCV3I5QUFJQS9Rc0NBQ0FBUVFScUlnQWdFMGNOQUFzZ0V5SUVJQWhHRFFFTElBUWhBQ0FSQkVBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FFRUJhaUVBSUFaQkFXb2lCaUFSUncwQUN3c2dCQ0FJYTBGOFN3MEFBMEFnQVNBQUlBSnNRUUowYWlBRklBQkJBblJxS0FJQU5nSUFJQUVnQUVFQmFpSUVJQUpzUVFKMGFpQUZJQVJCQW5ScUtBSUFOZ0lBSUFFZ0FFRUNhaUlFSUFKc1FRSjBhaUFGSUFSQkFuUnFLQUlBTmdJQUlBRWdBRUVEYWlJRUlBSnNRUUowYWlBRklBUkJBblJxS0FJQU5nSUFJQUJCQkdvaUFDQUlSdzBBQ3dzZ0FVRUVhaUVCSUExQkFXb2lEU0FEUncwQUN3d0JDd0pBQWtBQ1FDQUlRUUZyRGdJQUFRSUxJQU5CQUV3TkFrRUFJUUlDUUNBRFFRUkpCRUFnQVNFQURBRUxJQUVnQTBIOC8vLy9CM0VpQWtFQ2RHb2hBQU5BSUFFZ0JrRUNkR29pQkNBRS9RQUNBQ0lmL1JzQVFRSnQvUkVnSC8wYkFVRUNiZjBjQVNBZi9Sc0NRUUp0L1J3Q0lCLzlHd05CQW0zOUhBUDlDd0lBSUFaQkJHb2lCaUFDUncwQUN5QUNJQU5HRFFNTEEwQWdBQ0FBS0FJQVFRSnROZ0lBSUFCQkJHb2hBQ0FDUVFGcUlnSWdBMGNOQUFzTUFnc2dBMEVBVEEwQklBQW9BZ0FoQ1NBQ0lBcHNRUUowSVFjRFFDQUpJQUVvQWdBZ0FTQUhhaUlFS0FJQVFRRnFRUUYxYXlJQU5nSUVJQWtnQUNBRUtBSUFhaUlBTmdJQUlBRWdBRFlDQUNBQklBSkJBblJxSUFrb0FnUTJBZ0FnQVVFRWFpRUJJQVpCQVdvaUJpQURSdzBBQ3d3QkN5QUlRUU5JRFFBZ0EwRUFUQTBBSUFBb0FnQWlCU0FJSUFoQkFYRWlGRVVpQm10QkJHc2lDVUVCZGlJTFFRSjBJZ2NnQVNBRFFRSjBJZ0JxYWtrZ0JTQUxRUU4wYWtFTWFpSUVJQUZCQkdwTGNTQUZRUVJxSUFBZ0FTQUtRUUowYWlJQWFpQUhha0VJYWtrZ0FFRUlhaUFFU1hGeUlSVWdBa0VCUnlBSVFRUkpjaUVXSUFKQkFVWWdDVUVGUzNFaEZ5QUlRZnovLy84SGNTRVFJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWtFRWF5RVpJQVVnQ0VFQ2F5SUFRUUowYWlFYUlBdEJBV29pRWtGOGNTSU1RUUZ5SVJNZ0RFRUJkRUVCY2lFTElBSWdDbXhCQW5RaEd5QUFJQVpyUVFKSklSd2dDRUVCZGtFQmF5QUNiRUVDZENFZEEwQWdCU0FCS0FJQUlBRWdHMm9pRHlBQ1FRSjBhaWdDQUNJSklBOG9BZ0FpQUdwQkFtcEJBblZySWdjZ0FHbzJBZ0JCQVNFRUFrQWdIQVJBSUFraEJnd0JDd0pBQW45QkFTQVhSUTBBR2tFQklCVU5BQm9nQ2YwUklSOGdCLzBSSVNCQkFDRUFBMEFnQlNBQVFRTjBhaUlISUFFZ0FFRUNkQ0lFYXYwQUFnUWdIeUFFSUE5cS9RQUNDQ0lmL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iSWlJZ0gvMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCSWlFZ0lTQWdJQ0g5RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHY5cmdGQkFmMnNBU0FpL2E0QklpTDlEUVFGQmdjWUdSb2JDQWtLQ3h3ZEhoLzlDd0lVSUFjZ0lDQWkvUTBNRFE0UEVCRVNFd0FCQWdNVUZSWVhJQ0g5RFFBQkFnTUVCUVlIRUJFU0V3d05EZy85Q3dJRUlDRWhJQ0FBUVFScUlnQWdERWNOQUFzZ0gvMGJBeUVHSUNEOUd3TWhCeUFNSUJKR0RRRWdDeUVFSUFZaENTQVRDeUVBQTBBZ0FTQUFJQUpzUVFKMGFpZ0NBQ0VlSUE4Z0FFRUJhaUlLSUFKc1FRSjBhaWdDQUNFR0lBVWdCRUVDZEdvaURpQUhOZ0lBSUE0Z0J5QWVJQVlnQ1dwQkFtcEJBblZySWdkcVFRRjFJQWxxTmdJRUlBUkJBbW9oQkNBQUlCSkhJQW9oQUNBR0lRa05BQXNNQVFzZ0N5RUVDeUFZSUExQkFuUnFJUWtnQlNBRVFRSjBhaUFITmdJQUFrQWdGRVVFUUNBYUlBRWdIV29vQWdBZ0JrRUJha0VCZFdzaUFDQUhha0VCZFNBR2FqWUNBQXdCQ3lBR0lBZHFJUUFMSUJrZ0FEWUNBRUVBSVFaQkFDRUFRUUFoQkFKQUlCWWdDVUVRU1hKRkJFQURRQ0FCSUFCQkFuUWlCR29nQkNBRmF2MEFBZ0Q5Q3dJQUlBQkJCR29pQUNBUVJ3MEFDeUFRSWdRZ0NFWU5BUXNnQkNFQUlCRUVRQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FBUVFGcUlRQWdCa0VCYWlJR0lCRkhEUUFMQ3lBRUlBaHJRWHhMRFFBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUZxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFKcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQVNBQVFRTnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FFRUVhaUlBSUFoSERRQUxDeUFCUVFScUlRRWdEVUVCYWlJTklBTkhEUUFMQ3dzekFRRi9Jd0JCRUdzaUFTUUFJQUFFZnlBQlFReHFRU0FnQUJCNUlRQkJBQ0FCS0FJTUlBQWJCVUVBQ3lBQlFSQnFKQUFMR3dFQmZ5QUFCRUFnQUNnQ0NDSUJCRUFnQVJBVUN5QUFFQlFMQ3pFQkFuOUJBVUVNRUJjaUFBUkFJQUJCQ2pZQ0JDQUFRUXBCQkJBWElnRTJBZ2dnQVFSQUlBQVBDeUFBRUJRTFFRQUxTQUVDZndKL0lBRkJIMDBFUUNBQUtBSUFJUUlnQUVFRWFnd0JDeUFCUVNCcklRRWdBQXNvQWdBaEF5QUFJQUlnQVhRMkFnQWdBQ0FESUFGMElBSkJJQ0FCYTNaeU5nSUVDNjhDQVFaL0l3QkI4QUZySWdZa0FDQUdJQUkyQXV3QklBWWdBVFlDNkFFZ0JpQUFOZ0lBSUFSRklRa0NRQUpBQWtBQ1FDQUJRUUZIQkVBZ0FDRUhRUUVoQ0F3QkN5QUFJUWRCQVNFSUlBSU5BQ0FBSVFRTUFRc0RRQ0FISUFVZ0EwRUNkR29pQ2lnQ0FHc2lCQ0FBRUN0QkFFd0VRQ0FISVFRTUFnc2dDVUYvY3lFTFFRRWhDUUpBSUFzZ0EwRUNTSEpCQVhGRkJFQWdDa0VJYXlnQ0FDRUtJQWRCQ0dzaUN5QUVFQ3RCQUU0TkFTQUxJQXBySUFRUUswRUFUZzBCQ3lBR0lBaEJBblJxSUFRMkFnQWdCa0hvQVdvZ0FTQUNFSGNpQVJBOElBaEJBV29oQ0NBQklBTnFJUU1nQmlnQzdBRWhBaUFFSVFjZ0JpZ0M2QUVpQVVFQlJ3MEJJQUlOQVF3REN3c2dCeUVFREFFTElBbEZEUUVMSUFZZ0NCQjJJQVFnQXlBRkVFUUxJQVpCOEFGcUpBQUxTd0VDZnlBQUtBSUVJUUlnQUFKL0lBRkJIMDBFUUNBQUtBSUFJUU1nQWd3QkN5QUJRU0JySVFFZ0FpRURRUUFMSWdJZ0FYWTJBZ1FnQUNBQ1FTQWdBV3QwSUFNZ0FYWnlOZ0lBQ3k4QkFYOGdBQVJBSUFBb0FnUWlBUVJBSUFBb0FnQWdBUkVDQUFzZ0FDZ0NJQkFVSUFCQkFEWUNJQ0FBRUJRTEN5b0FJQUFFUUNBQUtBSXdJQUJCRkVFUUlBQW9Ba3diYWlnQ0FCRUNBQ0FBUVFBMkFqQWdBQkFVQ3d1R0F3SUZmd3ArSXdCQklHc2lBeVFBQWtBZ0FDZ0NFQ0lGUlFSQVFRRWhBZ3dCQ3dKQUlBQTBBZ0FpQjBJQVV3MEFJQUEwQWdRaUNFSUFVdzBBSUFBMEFnZ2lDVUlBVXcwQUlBQTBBZ3dpQ2tJQVV3MEFJQUFvQWhnaEFDQUhRZ0Y5SVF3Z0NFSUJmU0VOSUFsQ0FYMGhDU0FLUWdGOUlRb0RRQ0FBSUF3Z0FDZ0NBQ0lDclNJSGZDQUhnQ0lMUGdJUUlBQWdEU0FBS0FJRUlnYXRJZ2Q4SUFlQUlnNCtBaFJDQVNBQU5RSW9JZ2VHSWc5Q0FYMGlDQ0FKSUFLc0loQjhJQkIveEh3Z0I0ZW5JQWdnQzhSOElBZUhwMnNpQWtFQVNBUkFJQU1nQWpZQ0JDQURJQVEyQWdBZ0FVRUJRYUhwQUNBREVCTkJBQ0VDREFNTElBQWdBallDQ0NBSUlBb2dCcXdpQzN3Z0MzL0VmQ0FIaDZjZ0RzUWdEM3hDQVgwZ0I0ZW5heUlDUVFCSUJFQWdBeUFDTmdJVUlBTWdCRFlDRUNBQlFRRkI1dWtBSUFOQkVHb1FFMEVBSVFJTUF3c2dBQ0FDTmdJTUlBQkJOR29oQUVFQklRSWdCRUVCYWlJRUlBVkhEUUFMREFFTElBRkJBVUdiTkVFQUVCTUxJQU5CSUdva0FDQUNDLzBHQVFaL0lBQUVRQUpBSUFBb0FnQUVRQ0FBS0FJTUlnRUVRQ0FCRURRZ0FDZ0NEQkFVSUFCQkFEWUNEQXNnQUNnQ0VDSUJCRUFnQVJBVUlBQkNBRGNERUFzZ0FDZ0NRQkFVSUFCQ0FEY0NQQ0FBS0FKSUVCUWdBRUVBTmdKSUlBQW9BbGdRRkNBQVFRQTJBbGdNQVFzZ0FDZ0NMQ0lCQkVBZ0FSQVVJQUJCQURZQ0xBc2dBQ2dDSUNJQkJFQWdBUkFVSUFCQ0FEY0RJQXNnQUNnQ05DSUJSUTBBSUFFUUZDQUFRZ0EzQWpRTElBQW9BdWdCRUY0Z0FDZ0N0QUVpQVFSQUlBQW9Bb0FCSUFBb0FvUUJiQ0lEQkg4RFFDQUJFRFFnQVVHTUxHb2hBU0FDUVFGcUlnSWdBMGNOQUFzZ0FDZ0N0QUVGSUFFTEVCUWdBRUVBTmdLMEFRc2dBQ2dDakFFaUFRUkFJQUFvQW9nQklnSUVRRUVBSVFFRFFDQUFLQUtNQVNBQlFRTjBhaWdDQUNJREJFQWdBeEFVSUFBb0FvZ0JJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUtNQVNFQkN5QUFRUUEyQW9nQklBRVFGQ0FBUVFBMkFvd0JDeUFBS0FLZ0FSQVVJQUJCQURZQ2tBRWdBRUVBTmdLZ0FTQUFLQUo4RUJRZ0FFRUFOZ0o4SUFBdEFOUUJRUUp4UlFSQUlBQW9Bc0FCRUJRTElBQkI2QUJxUVFCQjhBQVFHUm9nQUNnQzJBRVFPQ0FBUVFBMkF0Z0JJQUFvQXR3QkVEZ2dBRUVBTmdMWUFTQUFLQUxnQVNJQkJFQWdBU2dDSENJQ0JFQWdBaEFVSUFGQkFEWUNIQXNnQVNnQ0tDSUNCRUFnQVNnQ0pBUkFBMEFnQWlBRlFTaHNJZ05xS0FJa0lnUUVRQ0FFRUJRZ0FTZ0NLQ0lDSUFOcVFRQTJBaVFMSUFJZ0Eyb29BaEFpQkFSQUlBUVFGQ0FCS0FJb0lnSWdBMnBCQURZQ0VBc2dBaUFEYWlnQ0dDSUVCRUFnQkJBVUlBRW9BaWdpQWlBRGFrRUFOZ0lZQ3lBRlFRRnFJZ1VnQVNnQ0pFa05BQXNMSUFJUUZDQUJRUUEyQWlnTElBRVFGQXNnQUVFQU5nTGdBU0FBS0FKZ0VDVWdBRUVBTmdKZ0lBQW9BbVFRSlNBQVFRQTJBbVFnQUNnQzdBRWlBd1JBQWtBZ0F5Z0NDRVVOQUNBREtBSU1CRUFnQTBFQU5nSW9BMEFnQXlnQ0dFRUFTZzBBQ3dzZ0EwRUJOZ0lRSUFNb0FnQVFGQ0FES0FJY0lnSkZEUUFEUUNBQ0tBSUVJUUVnQWhBVUlBTWdBVFlDSENBQklnSU5BQXNMSUFNb0FpUWlBZ1JBSUFJb0FnUWlCVUVBU2dSQVFRQWhBUU5BSUFJb0FnQWdBVUVNYkdvaUJDZ0NDQ0lHQkVBZ0JDZ0NCQ0FHRVFJQUlBSW9BZ1FoQlFzZ0FVRUJhaUlCSUFWSURRQUxDeUFDS0FJQUVCUWdBaEFVQ3lBREVCUUxJQUJCQURZQzdBRWdBQkFVQ3d2bUF3SUlmd1IrSUFBb0FoUW9BZ0FvQWhRZ0FVSE1BR3hxSWdrb0Fnd2lDQ0FBS0FJWUtBSVlJQUZCTkd4cUlnbzFBZ1FpRUVJQmZTSVNJQUExQWp4OElCQ0FweUlMSUFnZ0Mwa2JJUXdnQ1NnQ0NDSUlJQW8xQWdBaUVVSUJmU0lUSUFBMUFqaDhJQkdBcHlJS0lBZ2dDa2tiSVFvZ0NTZ0NCQ0lJSUJJZ0FEVUNOSHdnRUlDbklnc2dDQ0FMU3hzaEN5QUpLQUlBSWdnZ0V5QUFOUUl3ZkNBUmdLY2lEU0FJSUExTEd5RU5RUUFoQ0NBQUtBSWdLQUxRS3lBQlFiZ0liR29vQWhRaERnSkFJQWtvQWhSQkFDQUNhMEYvSUFJYmFpSUNSUVJBSUFvaEFDQU5JUWdnQ3lFQkRBRUxJQU5CQVhFZ0FrRUJheUlQZENJSklBMUpCRUFnRFNBSmE2MUNmeUFDclNJUWhrSi9oWHdnRUlpbklRZ0xRUUFoQUVFQUlRRWdBMEVCZGlBUGRDSURJQXRKQkVBZ0N5QURhNjFDZnlBQ3JTSVFoa0ovaFh3Z0VJaW5JUUVMSUFrZ0Nra0VRQ0FLSUFscnJVSi9JQUt0SWhDR1FuK0ZmQ0FRaUtjaEFBc2dBeUFNVHdSQVFRQWhEQXdCQ3lBTUlBTnJyVUovSUFLdEloQ0dRbitGZkNBUWlLY2hEQXNnQkVGL0lBQkJBa0VESUE1QkFVWWJJZ0pxSWdNZ0FDQURTeHRKSUFWQmZ5QUNJQXhxSWdBZ0FDQU1TUnRKY1NBR0lBZ2dBbXNpQUVFQUlBQWdDRTBiUzNFZ0J5QUJJQUpySWdCQkFDQUFJQUZORzB0eEM2SUJBUVovSUFBRVFDQUFLQUlFSWdJRVFDQUNFQlFnQUVFQU5nSUVDeUFCQkVBZ0FDRUNBMEFnQWlnQ3lBRWlBd1JBUVFBaEJTQUNLQUxFQVNJRUJIOERRQ0FES0FJTUlnWUVRQ0FHRUJRZ0EwRUFOZ0lNSUFJb0FzUUJJUVFMSUFOQkVHb2hBeUFGUVFGcUlnVWdCRWtOQUFzZ0FpZ0N5QUVGSUFNTEVCUWdBa0VBTmdMSUFRc2dBa0h3QVdvaEFpQUhRUUZxSWdjZ0FVY05BQXNMSUFBUUZBc0x3QmdDRzM4RGV5QUNRUWRzSVE4Z0FrRUdiQ0VRSUFKQkJXd2hFU0FDUVFKMElRd2dBa0VEYkNFU0lBSkJBWFFoRXlBQUtBSUFJZ29nQUNnQ0RDSVpRUVYwSWdScUlRWWdDaUFFYXlBQUtBSVFJUVVnQUNnQ0hDRUxJQUFvQWhRaEJ5QUFLQUlJSVEwQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFoSkRRQWdBVUVQY1EwQUlBWkJEM0ZGRFFFTElBVWdCMDhOQlFKQUFrQWdBMEVCYXc0Q0FBRURDeUFISUFWcklnaEJGMDBOQlNBQklBVkJBblJxSVFrZ0dVRUZkQ0lFSUFvZ0JVRUdkR3BxSUFFZ0IwRUNkR3BKQkVBZ0NTQUtJQWRCQm5ScUlBUnFRVHhyU1EwR0N5QUYvUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaElDQUZJQWhCZkhFaURtb2hCVUVBSVFRRFFDQUdJQ0JCQnYyckFTSWYvUnNBYWlBSklBUkJBblJxL1FBQ0FDSWgvUjhBT0FJQUlBWWdILzBiQVdvZ0lmMGZBVGdDQUNBR0lCLzlHd0pxSUNIOUh3STRBZ0FnQmlBZi9Sc0RhaUFoL1I4RE9BSUFJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUVRUVJxSWdRZ0RrY05BQXNnQ0NBT1J3MEZEQVlMSUFFZ0FrRUNkR29oQ0NBSElBVnJJZzVCRzAwTkFpQVpRUVYwSWdRZ0NpQUZRUVowYW1vaUNTQUJJQUlnQjJwQkFuUnFTU0FLSUFkQkJuUnFJQVJxUVRocklnUWdBU0FDSUFWcVFRSjBha3R4RFFJZ0NTQUJJQWRCQW5ScVNTQUJJQVZCQW5ScUlBUkpjUTBDSUFYOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0VnSUFVZ0RrRjhjU0lVYWlFRVFRQWhDUU5BSUFZZ0lFRUcvYXNCSWgvOUd3QnFJaFVnQVNBRklBbHFRUUowSWhacS9RQUNBQ0loL1I4QU9BSUFJQVlnSC8wYkFXb2lGeUFoL1I4Qk9BSUFJQVlnSC8wYkFtb2lHQ0FoL1I4Q09BSUFJQVlnSC8wYkEyb2lHaUFoL1I4RE9BSUFJQlVnQ0NBV2F2MEFBZ0FpSC8wZkFEZ0NCQ0FYSUIvOUh3RTRBZ1FnR0NBZi9SOENPQUlFSUJvZ0gvMGZBemdDQkNBZy9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJU0FnQ1VFRWFpSUpJQlJIRFFBTElBNGdGRWNOQXd3RkN5QUZJQWRQRFFRZ0FTQVBRUUowYWlFSklBRWdFRUVDZEdvaERpQUJJQkZCQW5ScUlSUWdBU0FNUVFKMGFpRVZJQUVnRWtFQ2RHb2hGaUFCSUJOQkFuUnFJUmNnQVNBQ1FRSjBhaUVZQTBBZ0JpQUZRUVowYWlJRUlBRWdCVUVDZENJSWFpb0NBRGdDQUNBRUlBZ2dHR29xQWdBNEFnUWdCQ0FJSUJkcUtnSUFPQUlJSUFRZ0NDQVdhaW9DQURnQ0RDQUVJQWdnRldvcUFnQTRBaEFnQkNBSUlCUnFLZ0lBT0FJVUlBUWdDQ0FPYWlvQ0FEZ0NHQ0FFSUFnZ0NXb3FBZ0E0QWh3Z0JVRUJhaUlGSUFkSERRQUxEQVFMSUFFZ0QwRUNkR29oQ1NBQklCQkJBblJxSVE0Z0FTQVJRUUowYWlFVUlBRWdERUVDZEdvaEZTQUJJQkpCQW5ScUlSWWdBU0FUUVFKMGFpRVhJQUVnQWtFQ2RHb2hHQ0FEUVFOR0lSb2dBMEVFUmlFY0lBTkJCVVloSFNBRFFRZEdJUjREUUNBR0lBVkJCblJxSWdRZ0FTQUZRUUowSWdocUtnSUFPQUlBSUFRZ0NDQVlhaW9DQURnQ0JDQUVJQWdnRjJvcUFnQTRBZ2dDUUNBYURRQWdCQ0FJSUJacUtnSUFPQUlNSUJ3TkFDQUVJQWdnRldvcUFnQTRBaEFnSFEwQUlBUWdDQ0FVYWlvQ0FEZ0NGQ0FEUVFaR0RRQWdCQ0FJSUE1cUtnSUFPQUlZSUI0TkFDQUVJQWdnQ1dvcUFnQTRBaHdMSUFWQkFXb2lCU0FIUncwQUN3d0RDeUFGSVFRTElBUkJBV29oQlNBSElBUnJRUUZ4QkVBZ0JpQUVRUVowYWlJSklBRWdCRUVDZENJRWFpb0NBRGdDQUNBSklBUWdDR29xQWdBNEFnUWdCU0VFQ3lBRklBZEdEUUVEUUNBR0lBUkJCblJxSWdVZ0FTQUVRUUowSWdscUtnSUFPQUlBSUFVZ0NDQUphaW9DQURnQ0JDQUdJQVJCQVdvaUJVRUdkR29pQ1NBQklBVkJBblFpQldvcUFnQTRBZ0FnQ1NBRklBaHFLZ0lBT0FJRUlBUkJBbW9pQkNBSFJ3MEFDd3dCQ3lBSElBVWlCR3RCQTNFaUNRUkFRUUFoQ0FOQUlBWWdCRUVHZEdvZ0FTQUVRUUowYWlvQ0FEZ0NBQ0FFUVFGcUlRUWdDRUVCYWlJSUlBbEhEUUFMQ3lBRklBZHJRWHhMRFFBRFFDQUdJQVJCQm5ScUlBRWdCRUVDZEdvcUFnQTRBZ0FnQmlBRVFRRnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRSnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRTnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQkVFRWFpSUVJQWRIRFFBTEMwRWdhaUVISUFFZ0RVRUNkR29oQmlBQUtBSVlJUVVDUUFKQUFrQUNRQ0FEUVFoSkRRQWdCa0VQY1EwQUlBZEJEM0ZGRFFFTElBVWdDMDhOQWdKQUFrQUNRQ0FEUVFGckRnSUFBUUlMSUFzZ0JXc2lBRUViVFEwRElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdKcmFpQUJJQXNnRFdwQkFuUnFTUVJBSUFFZ0JTQU5ha0VDZEdvZ0MwRUdkQ0FDYXlBS2FrRWNhMGtOQkFzZ0JpQUZRUUowYWlFQ0lBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFZ0lBVWdBRUY4Y1NJQmFpRUZRUUFoQkFOQUlBY2dJRUVHL2FzQkloLzlHd0JxSUFJZ0JFRUNkR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlBaC9SOEJPQUlBSUFjZ0gvMGJBbW9nSWYwZkFqZ0NBQ0FISUIvOUd3TnFJQ0g5SHdNNEFnQWdJUDBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFZ0lBUkJCR29pQkNBQlJ3MEFDeUFBSUFGSERRTU1CQXNnQmlBQ1FRSjBhaUVEQWtBZ0N5QUZheUlBUVNSSkJFQWdCU0VFREFFTElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdScmFpSUlJQUVnQWlBTElBMXFJZ0pxUVFKMGFra2dDMEVHZENBRWF5QUtha0VZYXlJRUlBRWdEVUVDZEdvZ0JVRUNkR29pQ2lBTWFrdHhCRUFnQlNFRURBRUxJQWdnQVNBQ1FRSjBha2tnQkNBS1MzRUVRQ0FGSVFRTUFRc2dCZjBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklTQWdCU0FBUVh4eElnSnFJUVJCQUNFQkEwQWdCeUFnUVFiOXF3RWlILzBiQUdvaUNpQUdJQUVnQldwQkFuUWlDR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlJTUlDSDlId0U0QWdBZ0J5QWYvUnNDYWlJTklDSDlId0k0QWdBZ0J5QWYvUnNEYWlJUElDSDlId000QWdBZ0NpQURJQWhxL1FBQ0FDSWYvUjhBT0FJRUlBd2dILzBmQVRnQ0JDQU5JQi85SHdJNEFnUWdEeUFmL1I4RE9BSUVJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUJRUVJxSWdFZ0FrY05BQXNnQUNBQ1JnMEVDeUFFUVFGcUlRQWdDeUFFYTBFQmNRUkFJQWNnQkVFR2RHb2lBU0FHSUFSQkFuUWlBbW9xQWdBNEFnQWdBU0FDSUFOcUtnSUFPQUlFSUFBaEJBc2dBQ0FMUmcwREEwQWdCeUFFUVFaMGFpSUFJQVlnQkVFQ2RDSUJhaW9DQURnQ0FDQUFJQUVnQTJvcUFnQTRBZ1FnQnlBRVFRRnFJZ0JCQm5ScUlnRWdCaUFBUVFKMElnQnFLZ0lBT0FJQUlBRWdBQ0FEYWlvQ0FEZ0NCQ0FFUVFKcUlnUWdDMGNOQUFzTUF3c2dCaUFQUVFKMGFpRUVJQVlnRUVFQ2RHb2hDaUFHSUJGQkFuUnFJUWdnQmlBTVFRSjBhaUVNSUFZZ0VrRUNkR29oRFNBR0lCTkJBblJxSVE4Z0JpQUNRUUowYWlFQ0lBTkJBMFloRUNBRFFRUkdJUkVnQTBFRlJpRVNJQU5CQjBZaEV3TkFJQWNnQlVFR2RHb2lBQ0FHSUFWQkFuUWlBV29xQWdBNEFnQWdBQ0FCSUFKcUtnSUFPQUlFSUFBZ0FTQVBhaW9DQURnQ0NBSkFJQkFOQUNBQUlBRWdEV29xQWdBNEFnd2dFUTBBSUFBZ0FTQU1haW9DQURnQ0VDQVNEUUFnQUNBQklBaHFLZ0lBT0FJVUlBTkJCa1lOQUNBQUlBRWdDbW9xQWdBNEFoZ2dFdzBBSUFBZ0FTQUVhaW9DQURnQ0hBc2dCVUVCYWlJRklBdEhEUUFMREFJTElBVWdDMDhOQVNBR0lBOUJBblJxSVFNZ0JpQVFRUUowYWlFRUlBWWdFVUVDZEdvaENpQUdJQXhCQW5ScUlRZ2dCaUFTUVFKMGFpRU1JQVlnRTBFQ2RHb2hEU0FHSUFKQkFuUnFJUUlEUUNBSElBVkJCblJxSWdBZ0JpQUZRUUowSWdGcUtnSUFPQUlBSUFBZ0FTQUNhaW9DQURnQ0JDQUFJQUVnRFdvcUFnQTRBZ2dnQUNBQklBeHFLZ0lBT0FJTUlBQWdBU0FJYWlvQ0FEZ0NFQ0FBSUFFZ0Ntb3FBZ0E0QWhRZ0FDQUJJQVJxS2dJQU9BSVlJQUFnQVNBRGFpb0NBRGdDSENBRlFRRnFJZ1VnQzBjTkFBc01BUXNnQ3lBRklnUnJRUU54SWdBRVFFRUFJUWdEUUNBSElBUkJCblJxSUFZZ0JFRUNkR29xQWdBNEFnQWdCRUVCYWlFRUlBaEJBV29pQ0NBQVJ3MEFDd3NnQlNBTGEwRjhTdzBBQTBBZ0J5QUVRUVowYWlBR0lBUkJBblJxS2dJQU9BSUFJQWNnQkVFQmFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFQ2FpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFRGFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQVJCQkdvaUJDQUxSdzBBQ3dzTG5BRUJCWDhqQUVId0FXc2lCQ1FBSUFRZ0FEWUNBRUVCSVFVQ1FDQUJRUUpJRFFBZ0FDRURBMEFnQUNBRFFRaHJJZ01nQWlBQlFRSnJJZ2RCQW5ScUtBSUFheUlHRUN0QkFFNEVRQ0FBSUFNUUswRUFUZzBDQ3lBRUlBVkJBblJxSUFZZ0F5QUdJQU1RSzBFQVRpSUdHeUlETmdJQUlBVkJBV29oQlNBQlFRRnJJQWNnQmhzaUFVRUJTZzBBQ3dzZ0JDQUZFSFlnQkVId0FXb2tBQXVkQXdFRWZ5QUJJQUJCQkdvaUJHcEJBV3RCQUNBQmEzRWlCU0FDYWlBQUlBQW9BZ0FpQVdwQkJHdE5CSDhnQUNnQ0JDSURJQUFvQWdnaUJqWUNDQ0FHSUFNMkFnUWdCQ0FGUndSQUlBQWdBRUVFYXlnQ0FFRitjV3NpQXlBRklBUnJJZ1FnQXlnQ0FHb2lCVFlDQUNBRElBVkJmSEZxUVFScklBVTJBZ0FnQUNBRWFpSUFJQUVnQkdzaUFUWUNBQXNDZnlBQklBSkJHR3BQQkVBZ0FDQUNhaUlFSUFFZ0FtdEJDR3NpQVRZQ0NDQUVRUWhxSWdVZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBRUFuOGdCQ2dDQ0VFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBV2NoQXlBQlFSMGdBMnQyUVFSeklBTkJBblJyUWU0QWFpQUJRZjhmVFEwQUdrRS9JQUZCSGlBRGEzWkJBbk1nQTBFQmRHdEJ4d0JxSWdFZ0FVRS9UeHNMSWdOQkJIUWlBVUhnelFGcU5nSU1JQVFnQVVIb3pRRnFJZ0VvQWdBMkFoQWdBU0FGTmdJQUlBUW9BaEFnQlRZQ0JFSG8xUUZCNk5VQktRTUFRZ0VnQTYyR2hEY0RBQ0FBSUFKQkNHb2lBVFlDQUNBQUlBRkJmSEZxREFFTElBQWdBV29MUVFScklBRTJBZ0FnQUVFRWFnVkJBQXNMd2dFQkEzOENRQ0FDS0FJUUlnTUVmeUFEQlNBQ0VFY05BU0FDS0FJUUN5QUNLQUlVSWdScklBRkpCRUFnQWlBQUlBRWdBaWdDSkJFQUFBOExBa0FDUUNBQ0tBSlFRUUJJRFFBZ0FVVU5BQ0FCSVFNRFFDQUFJQU5xSWdWQkFXc3RBQUJCQ2tjRVFDQURRUUZySWdNTkFRd0NDd3NnQWlBQUlBTWdBaWdDSkJFQUFDSUVJQU5KRFFJZ0FTQURheUVCSUFJb0FoUWhCQXdCQ3lBQUlRVkJBQ0VEQ3lBRUlBVWdBUkFXR2lBQ0lBSW9BaFFnQVdvMkFoUWdBU0FEYWlFRUN5QUVDMWtCQVg4Z0FDQUFLQUpJSWdGQkFXc2dBWEkyQWtnZ0FDZ0NBQ0lCUVFoeEJFQWdBQ0FCUVNCeU5nSUFRWDhQQ3lBQVFnQTNBZ1FnQUNBQUtBSXNJZ0UyQWh3Z0FDQUJOZ0lVSUFBZ0FTQUFLQUl3YWpZQ0VFRUFDOHdDQVFSL0lBRWdBUDBBQWdEOUN3SUFJQUVvQWhnaUFnUkFJQUVvQWhBaUF3Ui9RUUFoQWdOQUlBRW9BaGdnQWtFMGJHb29BaXdpQkFSQUlBUVFGQ0FCS0FJUUlRTUxJQUpCQVdvaUFpQURTUTBBQ3lBQktBSVlCU0FDQ3hBVUlBRkJBRFlDR0FzZ0FTQUFLQUlRSWdJMkFoQWdBU0FDUVRSc0VCZ2lBallDR0NBQ0JFQWdBU2dDRUFSQVFRQWhBd05BSUFJZ0EwRTBiQ0lGYWlJQ0lBQW9BaGdnQldvaUJQMEFBZ0Q5Q3dJQUlBSWdCQ2dDTURZQ01DQUNJQVQ5QUFJZy9Rc0NJQ0FDSUFUOUFBSVEvUXNDRUNBQktBSVlJZ0lnQldwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUVrTkFBc0xJQUVnQUNnQ0ZEWUNGQ0FCSUFBb0FpQWlBallDSUNBQ0JFQWdBU0FDRUJnaUFqWUNIQ0FDUlFSQUlBRkNBRGNDSEE4TElBSWdBQ2dDSENBQUtBSWdFQllhRHdzZ0FVRUFOZ0ljRHdzZ0FVRUFOZ0lRSUFGQkFEWUNHQXNFQUVFQkM4WUJBUU4vQTBBZ0FFRUVkQ0lCUWVUTkFXb2dBVUhnelFGcUlnSTJBZ0FnQVVIb3pRRnFJQUkyQWdBZ0FFRUJhaUlBUWNBQVJ3MEFDMEV3RUhvYUl3QkJFR3NpQUNRQUFrQWdBRUVNYWlBQVFRaHFFQkFOQUVIdzFRRkJDQ0FBS0FJTVFRSjBRUVJxRUNraUFUWUNBQ0FCUlEwQVFRZ2dBQ2dDQ0JBcElnRUVRRUh3MVFFb0FnQWlBaUFBS0FJTVFRSjBha0VBTmdJQUlBSWdBUkFQUlEwQkMwSHcxUUZCQURZQ0FBc2dBRUVRYWlRQVFZeldBVUVxTmdJQVFkVFdBVUdZMXdFMkFnQUxrZ1lDQkg4RGV5TUFRUkJySWdZa0FBSi9JQUFvQWdoQkVFWUVRQ0FBS0FLMEFTQUFLQUxrQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUUFDUUNBREtBSUFJZ1ZGQkVCQkFDRUNJQVJCQVVHdEZFRUFFQk1NQVFzZ0FDZ0MwQ3NnQXlBRlFRRnJOZ0lBSUFJZ0JrRU1ha0VCRUJVZ0FVRzRDR3hxSWdjZ0JpZ0NEQ0lBUVFWMk5nS2tCaUFISUFCQkgzRWlBVFlDR0NBQ1FRRnFJUUFnQXdKL0FuOENRQUovQWtBQ1FDQUJEZ0lBQXdFTElBTW9BZ0FNQVFzZ0F5Z0NBRUVCZGdzaUJVSGlBRThFZnlBR1F1R0FnSUNRRERjQ0JDQUdJQVUyQWdBZ0JFRUNRWlA5QUNBR0VCTWdCeWdDR0FVZ0FRc0VRQ0FGSWdFTkFVRUFEQUlMSUFVRVFDQUhRUnhxSVFGQkFDRUNBMEFnQUNBR1FReHFRUUVRRlNBQ1FlQUFUUVJBSUFZb0Fnd2hCQ0FCSUFKQkEzUnFJZ2hCQURZQ0JDQUlJQVJCQTNZMkFnQUxJQUJCQVdvaEFDQUNRUUZxSWdJZ0JVY05BQXNMSUFVZ0F5Z0NBQ0lBU3dSQVFRQWhBZ3dFQ3lBQUlBVnJEQUlMSUFkQkhHb2hCRUVBSVFJRFFDQUFJQVpCREdwQkFoQVZJQUpCNEFCTkJFQWdCQ0FDUVFOMGFpSUZJQVlvQWd3aUNFSC9EM0UyQWdRZ0JTQUlRUXQyTmdJQUN5QUFRUUpxSVFBZ0FrRUJhaUlDSUFGSERRQUxJQUZCQVhRTElRQWdBQ0FES0FJQUlnRkxCRUJCQUNFQ0RBSUxJQUVnQUdzTE5nSUFRUUVoQWlBSEtBSVlRUUZIRFFBZ0IwRWNhaUVFSUFmOUNRSWNJUXNnQnlnQ0lDRUQvUXdCQUFBQUFnQUFBQU1BQUFBRUFBQUFJUXBCQUNFQkEwQWdCQ0FCUVFOMGFpSUFRUmhxSUFzZ0N2ME0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMnVBU0lKL1JzQVFRTnUvUkVnQ2YwYkFVRURidjBjQVNBSi9Sc0NRUU51L1J3Q0lBbjlHd05CQTI3OUhBUDlzUUg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5dUFFaUNmMWFBZ0FDSUFCQkVHb2dDZjFhQWdBQklBQkJDR29nQ2YxYUFnQUFJQVFnQVVFRWFpSUJRUU4wYWlJRklBbjlXZ0lBQXlBQUlBTTJBaHdnQUNBRE5nSVVJQUFnQXpZQ0RDQUZJQU0yQWdRZ0N2ME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0VLSUFGQjRBQkhEUUFMQ3lBR1FSQnFKQUFnQWd1RUJ3RUdmeU1BUVNCcklnWWtBQUovSUFBb0FnaEJFRVlFUUNBQUtBSzBBU0FBS0FMa0FVR01MR3hxREFFTElBQW9BZ3dMSVFVQ1FDQURLQUlBUVFSTkJFQkJBQ0VBSUFSQkFVR0tGRUVBRUJNTUFRc2dBaUFGS0FMUUt5QUJRYmdJYkdvaUJTSUpRUVJxUVFFUUZTQUZJQVVvQWdSQkFXb2lCellDQkNBSFFTSlBCRUFnQmtFaE5nSUVJQVlnQnpZQ0FDQUVRUUZCcmpzZ0JoQVRRUUFoQUF3QkN5QUhJQUFvQXJnQklnaE5CRUFnQmlBSE5nSVlJQVlnQ0RZQ0ZDQUdJQUUyQWhBZ0JFRUJRWUtBQVNBR1FSQnFFQk1nQUNBQUtBSUlRWUNBQW5JMkFnaEJBQ0VBREFFTElBSkJBV29nQlVFSWFrRUJFQlVnQlNBRktBSUlRUUpxTmdJSUlBSkJBbW9nQlVFTWFrRUJFQlVnQlNBRktBSU1RUUpxSWdBMkFnd0NRQUpBSUFVb0FnZ2lBVUVLU3cwQUlBQkJDa3NOQUNBQUlBRnFRUTFKRFFFTFFRQWhBQ0FFUVFGQnR5cEJBQkFUREFFTElBSkJBMm9nQlVFUWFrRUJFQlVnQlMwQUVFR0FBWEVFUUVFQUlRQWdCRUVCUWY4eVFRQVFFd3dCQ3lBQ1FRUnFJQVZCRkdwQkFSQVZJQVVvQWhSQkFrOEVRRUVBSVFBZ0JFRUJRYjR5UVFBUUV3d0JDeUFESUFNb0FnQkJCV3NpQnpZQ0FFRUJJUUFnQlNnQ0JDRUJBa0FnQlMwQUFFRUJjVVVFUUNBQlJRMENJQVZCc0FkcUlRSWdCVUdzQm1vaEJFRUFJUVVnQVVFRFRRMEJJQUZCZkhFaEJVRUFJUU1EUUNBRUlBTkJBblFpQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQUlnQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQU5CQkdvaUF5QUZSdzBBQ3lBQklBVkhEUUVNQWdzZ0FTQUhUUVJBQWtBZ0FVVUVRRUVBSVFFTUFRc2dBa0VGYWlBR1FSeHFRUUVRRlNBRklBWW9BaHdpQUVFRWRqWUNzQWNnQlNBQVFROXhOZ0tzQmlBRktBSUVJZ0ZCQWs4RVFDQUZRYkFIYWlFSElBVkJyQVpxSVFnZ0FrRUdhaUVBUVFFaEJRTkFJQUFnQmtFY2FrRUJFQlVDUUNBR0tBSWNJZ0ZCRUU4RVFDQUJRUTl4SWdJTkFRdEJBQ0VBSUFSQkFVSGtMa0VBRUJNTUJnc2dDQ0FGUVFKMElncHFJQUkyQWdBZ0J5QUthaUFCUVFSMk5nSUFJQUJCQVdvaEFDQUZRUUZxSWdVZ0NTZ0NCQ0lCU1EwQUN3c2dBeWdDQUNFSEN5QURJQWNnQVdzMkFnQkJBU0VBREFJTFFRQWhBQ0FFUVFGQmloUkJBQkFUREFFTEEwQWdCQ0FGUVFKMElnQnFRUTgyQWdBZ0FDQUNha0VQTmdJQVFRRWhBQ0FGUVFGcUlnVWdBVWtOQUFzTElBWkJJR29rQUNBQUMxSUFJQUVnQUMwQUFEb0FCeUFCSUFBdEFBRTZBQVlnQVNBQUxRQUNPZ0FGSUFFZ0FDMEFBem9BQkNBQklBQXRBQVE2QUFNZ0FTQUFMUUFGT2dBQ0lBRWdBQzBBQmpvQUFTQUJJQUF0QUFjNkFBQUxrZ0VCQkg4Z0FDQUJOZ0s0QVFKQUlBQW9BbUFpQTBVTkFDQURLQUlZSWdaRkRRQWdBQ2dDRENJRVJRMEFJQVFvQXRBclJRMEFJQU1vQWhBaUJFVUVRRUVCRHd0QkFDRURBMEFnQUNnQ0RDZ0MwQ3NnQTBHNENHeHFLQUlFSUFGTkJFQWdBa0VCUWJUSEFFRUFFQk5CQUE4TElBWWdBMEUwYkdvZ0FUWUNLRUVCSVFVZ0EwRUJhaUlESUFSSERRQUxDeUFGQzZVSEFnbC9DSDRqQUVFUWF5SUxKQUFDUUNBQ1JRUkFJQU5CQVVISTJnQkJBQkFUREFFTElBSW9BaEFpQ1NBQUtBSmdJZ2NvQWhCSkJFQWdBMEVCUWFYU0FFRUFFQk1NQVFzZ0FDZ0NnQUVpQlNBQUtBS0VBV3dpQmlBRVRRUkFJQXNnQkRZQ0FDQUxJQVpCQVdzMkFnUWdBMEVCUWNYL0FDQUxFQk5CQUNFRkRBRUxJQUlnQUNnQ2JDQUVJQVVnQkNBRmJpSUdiR3NpQ0NBQUtBSjBiR29pQlRZQ0FDQUNJQVVnQnlnQ0FDSUhJQVVnQjBzYklnYzJBZ0FnQWlBQUtBSnNJQUFvQW5RZ0NFRUJhbXhxSWdVMkFnZ2dBaUFGSUFBb0FtQW9BZ2dpQ0NBRklBaEpHeUlJTmdJSUlBSWdBQ2dDY0NBQUtBSjRJQVpzYWlJRk5nSUVJQUlnQlNBQUtBSmdLQUlFSWdvZ0JTQUtTeHNpQ2pZQ0JDQUNJQUFvQW5BZ0FDZ0NlQ0FHUVFGcWJHb2lCVFlDRENBQ0lBVWdBQ2dDWUNnQ0RDSUdJQVVnQmtrYklnVTJBZ3dnQUNnQ1lDSU1LQUlRSWdZRVFDQUZyRUlCZlNFUklBaXNRZ0Y5SVJJZ0NxMUNBWDBoRXlBSHJVSUJmU0VVSUF3b0FoZ2hDQ0FDS0FJWUlRVkJBQ0VIQTBBZ0JTQUlJQWRCTkd4cUtBSW9JZ28yQWlnZ0JTQVVJQVVvQWdBaURLMGlEbndnRG9BaUZUNENFQ0FGSUJNZ0JTZ0NCQ0lOclNJT2ZDQU9nQ0lRUGdJVUlBVkNmeUFLclNJT2hpSVBJQkRFZlNBT2g2Y2dEeUFSSUEyc0loQjhJQkIveEgwZ0RvZW5hellDRENBRklBOGdGY1I5SUE2SHB5QVBJQklnREt3aUQzd2dEMy9FZlNBT2g2ZHJOZ0lJSUFWQk5Hb2hCU0FIUVFGcUlnY2dCa2NOQUFzTElBWWdDVWtFUUNBQ0tBSVlJUVVEUUNBRklBWkJOR3dpQjJvb0Fpd1FGQ0FDS0FJWUlnVWdCMnBCQURZQ0xDQUdRUUZxSWdZZ0FpZ0NFRWtOQUFzZ0FpQUFLQUpnS0FJUU5nSVFDeUFBS0FKa0lnVUVRQ0FGRUNVTElBQkJBVUVrRUJjaUJqWUNaRUVBSVFVZ0JrVU5BQ0FDSUFZUVNDQUFJQVEyQWl3Z0FDZ0MyQUZCR0NBREVDaEZEUUFnQUNnQzJBRWlDU2dDQUNFRUlBa29BZ2doQmdKQUlBUUVRRUVCSVFVZ0JFRUJjU0VJSUFSQkFVWUVmMEVBQlNBRVFYNXhJUVJCQUNFSEEwQUNmMEVBSUFWRkRRQWFRUUFnQUNBQklBTWdCaWdDQUJFQUFFVU5BQm9nQUNBQklBTWdCaWdDQkJFQUFFRUFSd3NoQlNBR1FRaHFJUVlnQjBFQ2FpSUhJQVJIRFFBTElBVkZDeUVFUVFBZ0JTQUlHeUVGQWtBZ0NFVU5BQ0FFRFFBZ0FDQUJJQU1nQmlnQ0FCRUFBRUVBUnlFRkN5QUpRUUEyQWdBZ0JRMEJJQUFvQW1BUUpVRUFJUVVnQUVFQU5nSmdEQUlMSUFsQkFEWUNBQXNnQUNBQ0VGQWhCUXNnQzBFUWFpUUFJQVVMOGdNQkJYOENRQUpBSUFBb0Fqd2lBa1VFUUNBQktBSVFEUUZCQVE4TElBSkJOR3dRR0NJRlJRMEJJQUVvQWhBRVFDQUJLQUlZSVFJRFFDQUNJQU5CTkd3aUJHb29BaXdRRkNBQktBSVlJZ0lnQkdwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUNJRVNRMEFDd3NnQVNBQUtBSThCSDhnQUNnQ1pDZ0NHQ0VEUVFBaEFnTkFJQVVnQWtFMGJHb2lCQ0FESUFBb0FrQWdBa0VDZEdvb0FnQkJOR3dpQm1vaUEvMEFBZ0Q5Q3dJQUlBUWdBeWdDTURZQ01DQUVJQVA5QUFJZy9Rc0NJQ0FFSUFQOUFBSVEvUXNDRUNBRUlBQW9BbVFvQWhnaUF5QUdhaUlHS0FJa05nSWtJQVFnQmlnQ0xEWUNMQ0FHUVFBMkFpd2dBa0VCYWlJQ0lBQW9BandpQmtrTkFBc2dBU2dDRUFVZ0JBc0VmeUFBS0FKa0tBSVlJUUpCQUNFREEwQWdBaUFEUVRSc0lnUnFLQUlzRUJRZ0FDZ0NaQ2dDR0NJQ0lBUnFRUUEyQWl3Z0EwRUJhaUlESUFFb0FoQkpEUUFMSUFBb0Fqd0ZJQVlMTmdJUUlBRW9BaGdRRkNBQklBVTJBaGhCQVE4TElBRW9BaGdoQkNBQUtBSmtLQUlZSVFOQkFDRUNBMEFnQkNBQ1FUUnNJZ1ZxSWdRZ0F5QUZhaWdDSkRZQ0pDQUVLQUlzRUJRZ0FTZ0NHQ0lFSUFWcUlBQW9BbVFvQWhnaUF5QUZhaUlGS0FJc05nSXNJQVZCQURZQ0xDQUNRUUZxSWdJZ0FTZ0NFRWtOQUF0QkFROExJQUFvQW1BUUpTQUFRUUEyQW1CQkFBdkZCQUVJZndKQUlBSkZEUUFDUUNBQUtBSzRBU0lGUlEwQUlBQW9BbUFpQkVVTkFDQUVLQUlRUlEwQUlBUW9BaGdvQWlnZ0JVY05BQ0FDS0FJUUlnaEZEUUFnQWlnQ0dDSUdLQUlvRFFBZ0JpZ0NMQTBBUVFBaEJDQUlRUWhQQkVBZ0NFRjRjU0VKQTBBZ0JpQUVRVFJzYWlBRk5nSW9JQVlnQkVFQmNrRTBiR29nQlRZQ0tDQUdJQVJCQW5KQk5HeHFJQVUyQWlnZ0JpQUVRUU55UVRSc2FpQUZOZ0lvSUFZZ0JFRUVja0UwYkdvZ0JUWUNLQ0FHSUFSQkJYSkJOR3hxSUFVMkFpZ2dCaUFFUVFaeVFUUnNhaUFGTmdJb0lBWWdCRUVIY2tFMGJHb2dCVFlDS0NBRVFRaHFJUVFnQ2tFSWFpSUtJQWxIRFFBTEN5QUlRUWR4SWdnRVFBTkFJQVlnQkVFMGJHb2dCVFlDS0NBRVFRRnFJUVFnQzBFQmFpSUxJQWhIRFFBTEN5QUNJQU1RUHcwQVFRQVBDeUFBS0FKa0lnVkZCRUFnQUVFQlFTUVFGeUlGTmdKa0lBVkZEUUVMSUFJZ0JSQklJQUFvQXRnQlFSWWdBeEFvUlEwQUlBQW9BdGdCSWdZb0FnQWhCQ0FHS0FJSUlRVUNRQ0FFQkVCQkFTRUhJQVJCQVhFaENDQUVRUUZHQkg5QkFBVWdCRUYrY1NFSlFRQWhCQU5BQW45QkFDQUhSUTBBR2tFQUlBQWdBU0FESUFVb0FnQVJBQUJGRFFBYUlBQWdBU0FESUFVb0FnUVJBQUJCQUVjTElRY2dCVUVJYWlFRklBUkJBbW9pQkNBSlJ3MEFDeUFIUlFzaEJFRUFJQWNnQ0JzaEJ3SkFJQWhGRFFBZ0JBMEFJQUFnQVNBRElBVW9BZ0FSQUFCQkFFY2hCd3NnQmtFQU5nSUFJQWNOQVNBQUtBSmdFQ1VnQUVFQU5nSmdRUUFQQ3lBR1FRQTJBZ0FMSUFBZ0FoQlFJUWNMSUFjTCtBUUJCbjhDUUVFQlFUQVFGeUlDQkg4Z0FpQUFLQUxnQVNJQi9RQURBUDBMQXdBZ0FpQUJLUU1RTndNUUlBSWdBU2dDR0NJQk5nSVlJQUlnQVVFWWJCQVlJZ0UyQWh3Z0FVVUVRQ0FDRUJSQkFBOExBa0FnQUNnQzRBRW9BaHdpQXdSQUlBRWdBeUFDS0FJWVFSaHNFQllhREFFTElBRVFGQ0FDUVFBMkFod0xJQUlnQUNnQzRBRW9BaVFpQVRZQ0pDQUNJQUZCS0JBWElnRTJBaWdnQVVVRVFDQUNLQUljRUJRZ0FoQVVRUUFQQ3dKQUlBQW9BdUFCS0FJb0JFQWdBaWdDSkVVTkFRTkFJQUVnQlVFb2JDSURhaUFBS0FMZ0FTZ0NLQ0FEYWlnQ0ZDSUJOZ0lVSUFGQkdHd1FHQ0VCSUFJb0FpZ2lCQ0FEYWlJR0lBRTJBaGdnQVVVRVFDQUZCSDlCQUNFQkEwQWdBaWdDS0NBQlFTaHNhaWdDR0JBVUlBRkJBV29pQVNBRlJ3MEFDeUFDS0FJb0JTQUVDeEFVREFVTEFrQWdBQ2dDNEFFb0FpZ2dBMm9vQWhnaUJBUkFJQUVnQkNBR0tBSVVRUmhzRUJZYUlBSW9BaWdoQVF3QkN5QUJFQlFnQWlnQ0tDSUJJQU5xUVFBMkFoZ0xJQUVnQTJvZ0FDZ0M0QUVvQWlnZ0Eyb29BZ1FpQVRZQ0JDQUJRUmhzRUJnaEFTQUNLQUlvSWdRZ0Eyb2lCaUFCTmdJUUlBRkZCRUFnQlFSL1FRQWhBUU5BSUFGQktHd2lBQ0FDS0FJb2FpZ0NHQkFVSUFJb0FpZ2dBR29vQWhBUUZDQUJRUUZxSWdFZ0JVY05BQXNnQWlnQ0tBVWdCQXNRRkF3RkN3SkFJQUFvQXVBQktBSW9JQU5xS0FJUUlnUUVRQ0FCSUFRZ0JpZ0NCRUVZYkJBV0dpQUNLQUlvSVFFTUFRc2dBUkFVSUFJb0FpZ2lBU0FEYWtFQU5nSVFDeUFCSUFOcVFnQTNBaUFnQlVFQmFpSUZJQUlvQWlSSkRRQUxEQUVMSUFFUUZDQUNRUUEyQWlnTElBSUZRUUFMRHdzZ0FpZ0NIQkFVSUFJUUZFRUFDNkFHQVE1L0l3QkJFR3NpQ0NRQUlBQW9BbUFvQWhBaERTQUlRUUZCT0JBWElnRTJBZ3dDUUNBQlJRMEFJQUVnQUNnQ1lDZ0NFQ0lKTmdJWUlBRWdBUDBBQW16OUN3SUFJQUVnQUNnQ2dBRTJBaEFnQUNnQ2hBRWhBeUFCUVFBMkFqUWdBU0FETmdJVUlBRWdBQ2dDRENJTUtBSUFOZ0lnSUFFZ0RDZ0NCRFlDSkNBQklBd29BZ2cyQWlnZ0FTQU1LQUlRTmdJc0lBRWdDVUc0Q0JBWElnQTJBakFnQUFSQUlBMEVRQU5BSUE1QnVBaHNJZ0FnRENnQzBDdHFJZ1FvQWdRaEFpQUJLQUl3SUFCcUlnVWdCUDBBQWdEOUN3SUVJQVVnQkNnQ0VEWUNGQ0FGSUFRb0FoUTJBaGdnQWtFZ1RRUkFJQVZCdEFkcUlBUkJzQWRxSUFJUUZob2dCVUd3Qm1vZ0JFR3NCbW9nQkNnQ0JCQVdHZ3NnQlNBRUtBSVlJZ0EyQWh3Z0JTQUVLQUtrQmpZQ3FBWkJBU0VHQWtBZ0FFRUJSd1JBSUFRb0FnUkJBMndpQUVFRGEwSGZBRXNOQVNBQVFRSnJJUVlMSUFWQnBBTnFJUWtnQlVFZ2FpRUtJQVJCSEdvaEMwRUFJUUFDUUNBR1FRaEpEUUFnQkNBR1FRTjBha0VjYWlBS1N3UkFJQXNnQlNBR1FRSjBha0drQTJwSkRRRUxJQVpCZkhFaEFFRUFJUU1EUUNBS0lBTkJBblFpQW1vZ0N5QURRUU4wYWlJSFFSeHFJQWRCRkdvZ0IwRU1haUFIL1Z3Q0JQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBaUFKYWlBSFFSaHFJQWRCRUdvZ0IwRUlhaUFIL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBMEVFYWlJRElBQkhEUUFMSUFBZ0JrWU5BUXNnQUVFQmNpRUNJQVpCQVhFRVFDQUtJQUJCQW5RaUEyb2dDeUFBUVFOMGFpSUFLQUlFTmdJQUlBTWdDV29nQUNnQ0FEWUNBQ0FDSVFBTElBSWdCa1lOQUFOQUlBb2dBRUVDZENJRGFpQUxJQUJCQTNScUlnSW9BZ1EyQWdBZ0F5QUphaUFDS0FJQU5nSUFJQW9nQUVFQmFpSUNRUUowSWdOcUlBc2dBa0VEZEdvaUFpZ0NCRFlDQUNBRElBbHFJQUlvQWdBMkFnQWdBRUVDYWlJQUlBWkhEUUFMQ3lBRklBUW9BcWdHTmdLc0JpQU9RUUZxSWc0Z0RVY05BQXNMSUFFaEFnd0JDeUFJUVF4cUJFQWdDQ2dDRENJQktBSXdJZ0FFZnlBQUVCUWdDQ2dDREFVZ0FRc1FGQ0FJUVFBMkFnd0xDeUFJUVJCcUpBQWdBZ3Y1QkFFSWZ5TUFRWUFDYXlJREpBQWdBQVJBUWVrTlFSRWdBaEFoSUFNZ0FDZ0NBRFlDOEFFZ0FrR0hFaUFEUWZBQmFoQWFJQU1nQUNnQ0JEWUM0QUVnQWtHVUVpQURRZUFCYWhBYUlBTWdBQ2dDQ0RZQzBBRWdBa0czT0NBRFFkQUJhaEFhSUFNZ0FDZ0NFRFlDd0FFZ0FrSHFFU0FEUWNBQmFoQWFJQUZCQUVvRVFBTkFJQUFvQXRBcklRUWdBeUFITmdLd0FTQUNRWThPSUFOQnNBRnFFQm9nQXlBRUlBZEJ1QWhzYWlJRUtBSUFOZ0tnQVNBQ1FZWVNJQU5Cb0FGcUVCb2dBeUFFS0FJRU5nS1FBU0FDUWFrNUlBTkJrQUZxRUJvZ0F5QUVLQUlJTmdLQUFTQUNRZFUzSUFOQmdBRnFFQm9nQXlBRUtBSU1OZ0p3SUFKQjVUY2dBMEh3QUdvUUdpQURJQVFvQWhBMkFtQWdBa0gxRVNBRFFlQUFhaEFhSUFNZ0JDZ0NGRFlDVUNBQ1FlczVJQU5CMEFCcUVCcEIrZ3RCRnlBQ0VDRWdCQ2dDQkFSQUlBUkJzQWRxSVFZZ0JFR3NCbW9oQ0VFQUlRVURRQ0FJSUFWQkFuUWlDV29vQWdBaENpQURJQVlnQ1dvb0FnQTJBa1FnQXlBS05nSkFJQUpCK0F3Z0EwRkFheEFhSUFWQkFXb2lCU0FFS0FJRVNRMEFDd3NnQWhCN0lBTWdCQ2dDR0RZQ01DQUNRZlUzSUFOQk1Hb1FHaUFESUFRb0FxUUdOZ0lnSUFKQnBqZ2dBMEVnYWhBYVFRRWhCa0dTREVFVUlBSVFJUUpBSUFRb0FoaEJBVWNFUUNBRUtBSUVJZ1ZCQUV3TkFTQUZRUU5zUVFKcklRWUxJQVJCSEdvaENFRUFJUVVEUUNBRElBZ2dCVUVEZEdvcEFnQkNJSWszQXhBZ0FrSDREQ0FEUVJCcUVCb2dCVUVCYWlJRklBWkhEUUFMQ3lBQ0VIc2dBeUFFS0FLb0JqWUNBQ0FDUVpVNElBTVFHa0dHRFVFRklBSVFJU0FIUVFGcUlnY2dBVWNOQUFzTFFZY05RUVFnQWhBaEN5QURRWUFDYWlRQUMrc0pBd2wvQVg0QmV5TUFRYkFCYXlJRkpBQUNRQ0FCUVlBRGNRUkFRWkl1UVFzZ0FoQWhEQUVMQWtBZ0FVRUJjVVVOQUNBQUtBSmdJZ1pGRFFBakFFSFFBR3NpQXlRQVFkc05RUTBnQWhBaElBTkJBRG9BVHlBRFFRazZBRTRnQXlBR0tRSUFOd0pFSUFNZ0EwSE9BR29pQkRZQ1FDQUNRYnM2SUFOQlFHc1FHaUFESUFZcEFnZzNBalFnQXlBRU5nSXdJQUpCcWpvZ0EwRXdhaEFhSUFNZ0JpZ0NFRFlDSkNBRElBUTJBaUFnQWtISU9DQURRU0JxRUJvQ1FDQUdLQUlZUlEwQUlBWW9BaEJGRFFBRFFDQURJQU5CemdCcUlnczJBaEFnQXlBSU5nSVVJQUpCK3cwZ0EwRVFhaEFhSUFZb0FoZ2dDRUUwYkdvaENTTUFRVEJySWdRa0FDQUVRUWs3QUM0Z0JFRUpPZ0F0SUFRZ0NTa0NBRGNDSkNBRUlBUkJMV29pQ2pZQ0lDQUNRWVE0SUFSQklHb1FHaUFFSUFrb0FoZzJBaFFnQkNBS05nSVFJQUpCK2prZ0JFRVFhaEFhSUFRZ0NTZ0NJRFlDQkNBRUlBbzJBZ0FnQWtIZk9TQUVFQm9nQkVFd2FpUUFJQU1nQ3pZQ0FDQUNRWUVOSUFNUUdpQUlRUUZxSWdnZ0JpZ0NFRWtOQUFzTFFZa05RUUlnQWhBaElBTkIwQUJxSkFBTEFrQWdBVUVDY1VVTkFDQUFLQUpnUlEwQVFlWU9RU1FnQWhBaElBVWdBQ2tDYkRjRG9BRWdBa0hVRWlBRlFhQUJhaEFhSUFVZ0FDa0NkRGNEa0FFZ0FrR3lFaUFGUVpBQmFoQWFJQVVnQUNrRGdBRTNBNEFCSUFKQnhCSWdCVUdBQVdvUUdpQUFLQUlNSUFBb0FtQW9BaEFnQWhCVVFZa05RUUlnQWhBaEN3SkFJQUZCQ0hGRkRRQWdBQ2dDWUVVTkFDQUFLQUtBQVNBQUtBS0VBV3dpQkVVTkFDQUFLQUswQVNFREEwQWdBeUFBS0FKZ0tBSVFJQUlRVkNBRFFZd3NhaUVESUFkQkFXb2lCeUFFUncwQUN3c2dBVUVRY1VVTkFDQUFLQUxnQVNFQVFjQU9RU1VnQWhBaElBVWdBUDBBQXdEOUN3UndJQUpCdlN3Z0JVSHdBR29RR2tHdURrRVJJQUlRSVFKQUlBQW9BaHhGRFFBZ0FDZ0NHRVVOQUVFQUlRTURRQ0FBS0FJY0lBTkJHR3hxSWdFdkFRQWhCQ0FCS1FNSUlRd2dCU0FCS0FJUU5nSmdJQVVnRERjRFdDQUZJQVEyQWxBZ0FrSEFPU0FGUWRBQWFoQWFJQU5CQVdvaUF5QUFLQUlZU1EwQUN3dEJodzFCQkNBQ0VDRUNRQ0FBS0FJb0lnUkZEUUFnQUNnQ0pDSUdSUTBBUVFBaEIwRUFJUU1EUUFKQUlBUWdBMEVvYkdvaUFTZ0NCQ0lJUlEwQUlBRW9BaEFpQVVVTkFDQUJLUU1BUWdCWERRQWdBU2tEQ0VJQVVnMEFRZm9LRUhnTkFnc2dCeUFJYWlFSElBTkJBV29pQXlBR1J3MEFDeUFIUlEwQVFaME9RUkFnQWhBaElBQW9BaVFFUUNBQUtBSW9JUUZCQUNFSEEwQWdCU0FCSUFkQktHd2lCR29vQWdRaUJqWUNSQ0FGSUFjMkFrQWdBa0dHT2lBRlFVQnJFQm9nQUNnQ0tDRUJBa0FnQmtVTkFFRUFJUU1nQVNBRWFpZ0NFRVVOQUFOQUlBQW9BaWdnQkdvb0FoQWdBMEVZYkdvaUFmMEFBd0FoRFNBRklBRXBBeEEzQXpnZ0JTQU4vUXNES0NBRklBTTJBaUFnQWtHVjFRQWdCVUVnYWhBYUlBTkJBV29pQXlBR1J3MEFDeUFBS0FJb0lRRUxBa0FnQVNBRWFpSUdLQUlZUlEwQVFRQWhBeUFHS0FJVVJRMEFBMEFnQVNBRWFpZ0NHQ0FEUVJoc2FpSUJMd0VBSVFZZ0FTa0RDQ0VNSUFVZ0FTZ0NFRFlDRUNBRklBdzNBd2dnQlNBR05nSUFJQUpCd0RrZ0JSQWFJQU5CQVdvaUF5QUFLQUlvSWdFZ0JHb29BaFJKRFFBTEN5QUhRUUZxSWdjZ0FDZ0NKRWtOQUFzTFFZY05RUVFnQWhBaEMwR0pEVUVDSUFJUUlRc2dCVUd3QVdva0FBdVJBZ0VEZndKQVFRRkJnQUlRRnlJQkJIOGdBVUVCTmdJQUlBRkJBVFlDMEFFZ0FTQUJMUURVQVVFR2Nqb0ExQUVnQVVFQlFZd3NFQmNpQURZQ0RDQUFSUTBCSUFGQkFVSG9CeEFYSWdBMkFoQWdBRVVOQVNBQlFnQTNBekFnQVVGL05nSXNJQUZCNkFjMkFoUUNRRUVCUVRBUUZ5SUFCRUFnQUVFQU5nSVlJQUJCNUFBMkFpQWdBRUhrQUVFWUVCY2lBallDSENBQ0RRRWdBQkFVQ3lBQlFRQTJBdUFCREFJTElBQkJBRFlDS0NBQklBQTJBdUFCSUFFUU9TSUFOZ0xjQVNBQVJRMEJJQUVRT1NJQU5nTFlBU0FBUlEwQkFrQkI1Z29RZUVVTkFBc2dBVUVBRUhNaUFEWUM3QUVnQUVVRVFDQUJRUUFRY3lJQU5nTHNBU0FBUlEwQ0N5QUJCVUVBQ3c4TElBRVFRRUVBQzVBSkFnbC9BWDRqQUVIUUFXc2lCeVFBSUFBb0FtQWhDUUpBQWtBQ1FDQUFLQUtBQVVFQlJ3MEFJQUFvQW9RQlFRRkhEUUFnQUNnQ3RBRW9BdHdyRFFFTElBQW9BZ2hCQ0VZTkFDQUdRUUZCMGRJQVFRQVFFd3dCQ3dKQUlBRW9BaEFpREVVTkFDQUFLQUs0QVNFS0lBRW9BaGdoQ3lBTVFRaFBCRUFnREVGNGNTRVBBMEFnQ3lBSVFUUnNhaUFLTmdJb0lBc2dDRUVCY2tFMGJHb2dDallDS0NBTElBaEJBbkpCTkd4cUlBbzJBaWdnQ3lBSVFRTnlRVFJzYWlBS05nSW9JQXNnQ0VFRWNrRTBiR29nQ2pZQ0tDQUxJQWhCQlhKQk5HeHFJQW8yQWlnZ0N5QUlRUVp5UVRSc2FpQUtOZ0lvSUFzZ0NFRUhja0UwYkdvZ0NqWUNLQ0FJUVFocUlRZ2dEa0VJYWlJT0lBOUhEUUFMQ3lBTVFRZHhJZ3hGRFFBRFFDQUxJQWhCTkd4cUlBbzJBaWdnQ0VFQmFpRUlJQTFCQVdvaURTQU1SdzBBQ3dzZ0FpQURjaUFFY2lBRmNrVUVRQ0FHUVFSQm96RkJBQkFUSUFCQ0FEY0NIQ0FBSUFBcEFvQUJOd0lrSUFFZ0NmMEFBZ0Q5Q3dJQUlBRWdCaEEvSVFnTUFRc2dBa0VBU0FSQUlBY2dBallDQUNBR1FRRkJsZUlBSUFjUUUwRUFJUWdNQVFzZ0NTZ0NDQ0lJSUFKSkJFQWdCeUFJTmdJVUlBY2dBallDRUNBR1FRRkI2ZVVBSUFkQkVHb1FFMEVBSVFnTUFRc0NRQ0FKS0FJQUlnZ2dBa3NFUUNBSElBZzJBc1FCSUFjZ0FqWUN3QUVnQmtFQ1Fjbm9BQ0FIUWNBQmFoQVRJQUJCQURZQ0hDQUpLQUlBSVFJTUFRc2dBQ0FDSUFBb0FteHJJQUFvQW5SdU5nSWNDeUFCSUFJMkFnQWdBMEVBU0FSQUlBY2dBellDSUNBR1FRRkIxZUVBSUFkQklHb1FFMEVBSVFnTUFRc2dDU2dDRENJQ0lBTkpCRUFnQnlBQ05nSTBJQWNnQXpZQ01DQUdRUUZCdk9RQUlBZEJNR29RRTBFQUlRZ01BUXNDUUNBSktBSUVJZ0lnQTBzRVFDQUhJQUkyQXJRQklBY2dBellDc0FFZ0JrRUNRWnJuQUNBSFFiQUJhaEFUSUFCQkFEWUNJQ0FKS0FJRUlRTU1BUXNnQUNBRElBQW9BbkJySUFBb0FuaHVOZ0lnQ3lBQklBTTJBZ1JCQUNFSUlBUkJBRXdFUUNBSElBUTJBa0FnQmtFQlFaUGhBQ0FIUVVCckVCTU1BUXNnQ1NnQ0FDSUNJQVJMQkVBZ0J5QUNOZ0pVSUFjZ0JEWUNVQ0FHUVFGQjhPY0FJQWRCMEFCcUVCTU1BUXNDUUNBSktBSUlJZ0lnQkVrRVFDQUhJQUkyQXFRQklBY2dCRFlDb0FFZ0JrRUNRWkhsQUNBSFFhQUJhaEFUSUFBZ0FDZ0NnQUUyQWlRZ0NTZ0NDQ0VFREFFTElBQWdBRFVDZENJUUlBUWdBQ2dDYkd1dGZFSUJmU0FRZ0Q0Q0pBc2dBU0FFTmdJSUlBVkJBRXdFUUNBSElBVTJBbUFnQmtFQlFkRGdBQ0FIUWVBQWFoQVREQUVMSUFrb0FnUWlBaUFGU3dSQUlBY2dBallDZENBSElBVTJBbkFnQmtFQlFjRG1BQ0FIUWZBQWFoQVREQUVMQWtBZ0NTZ0NEQ0lDSUFWSkJFQWdCeUFDTmdLVUFTQUhJQVUyQXBBQklBWkJBa0hqNHdBZ0IwR1FBV29RRXlBQUlBQW9Bb1FCTmdJb0lBa29BZ3doQlF3QkN5QUFJQUExQW5naUVDQUZJQUFvQW5CcnJYeENBWDBnRUlBK0FpZ0xJQUVnQlRZQ0RDQUFJQUF0QUZ4QkFuSTZBRndnQVNBR0VEOUZCRUFNQVFzZ0J5QUIvUUFDQVAwTEJJQUJJQVpCQkVIcE9pQUhRWUFCYWhBVFFRRWhDQXNnQjBIUUFXb2tBQ0FJQzVFQ0FRWi9Jd0JCSUdzaUJTUUFBbjhnQUNnQ1lDSUVSUVJBSUFOQkFVR1Q2d0JCQUJBVFFRQU1BUXRCQUVFRUlBUW9BaEFRRnlJRVJRMEFHaUFCQkVBZ0FDZ0NZQ0VJQTBBQ1FBSkFJQUlnQmtFQ2RHb29BZ0FpQnlBSUtBSVFUd1JBSUFVZ0J6WUNFQ0FEUVFGQjVoSWdCVUVRYWhBVERBRUxJQVFnQjBFQ2RHb2lDU2dDQUVVTkFTQUZJQWMyQWdBZ0EwRUJRZm9hSUFVUUV3c2dCQkFVUVFBTUF3c2dDVUVCTmdJQUlBWkJBV29pQmlBQlJ3MEFDd3NnQkJBVUlBQW9Ba0FRRkFKQUlBRUVRQ0FBSUFGQkFuUWlCQkFZSWdNMkFrQWdBMFVFUUNBQVFRQTJBanhCQUF3REN5QURJQUlnQkJBV0dnd0JDeUFBUVFBMkFrQUxJQUFnQVRZQ1BFRUJDeUFGUVNCcUpBQUxtZ1FCQjM4Z0FVRUJRU1FRRnlJRU5nSmdBa0FDUUNBRVJRMEFBa0FnQVNnQzNBRkJFaUFERUNnRVFDQUJLQUxjQVVFVElBTVFLQTBCQ3d3Q0N5QUJLQUxjQVNJSEtBSUFJUVVnQnlnQ0NDRUdBa0FnQlFSQVFRRWhCQ0FGUVFGeElRZ2dCVUVCUmdSL1FRQUZJQVZCZm5FaEJRTkFBbjlCQUNBRVJRMEFHa0VBSUFFZ0FDQURJQVlvQWdBUkFBQkZEUUFhSUFFZ0FDQURJQVlvQWdRUkFBQkJBRWNMSVFRZ0JrRUlhaUVHSUFsQkFtb2lDU0FGUncwQUN5QUVSUXNoQlVFQUlBUWdDQnNoQkFKQUlBaEZEUUFnQlEwQUlBRWdBQ0FESUFZb0FnQVJBQUJCQUVjaEJBc2dCMEVBTmdJQUlBUU5BUXdEQ3lBSFFRQTJBZ0FMQWtBZ0FTZ0MyQUZCRkNBREVDZ0VRQ0FCS0FMWUFVRVZJQU1RS0EwQkN3d0NDeUFCS0FMWUFTSUhLQUlBSVFVZ0J5Z0NDQ0VHQWtBZ0JRUkFRUUVoQkNBRlFRRnhJUWdnQlVFQlJnUi9RUUFGSUFWQmZuRWhCVUVBSVFrRFFBSi9RUUFnQkVVTkFCcEJBQ0FCSUFBZ0F5QUdLQUlBRVFBQVJRMEFHaUFCSUFBZ0F5QUdLQUlFRVFBQVFRQkhDeUVFSUFaQkNHb2hCaUFKUVFKcUlna2dCVWNOQUFzZ0JFVUxJUVZCQUNBRUlBZ2JJUVFDUUNBSVJRMEFJQVVOQUNBQklBQWdBeUFHS0FJQUVRQUFRUUJISVFRTElBZEJBRFlDQUNBRURRRU1Bd3NnQjBFQU5nSUFDeUFDUVFGQkpCQVhJZ0EyQWdBZ0FFVU5BQ0FCS0FKZ0lBQVFTRUVCSVFvTElBb1BDeUFCS0FKZ0VDVWdBVUVBTmdKZ1FRQUxBZ0FMQkFCQkFRczBBQUpBSUFCRkRRQWdBVVVOQUNBQUlBRW9BZ1EyQXJ3QklBQWdBU2dDQURZQ3VBRWdBQ0FCS0FLNFFFRUNjVFlDK0FFTEM3UUZBUWgvSUFBb0FoZ2lCQ2dDRUNJSlJRUkFRUUFQQ3lBRUtBSVlJUVVnQUNnQ0ZDZ0NBQ2dDRkNFRUFrQUNRQ0FCUlFSQVFRQWhBUU5BSUFVb0FoZ2hBaUFFS0FJY0lBUW9BaGhCbUFGc2FpSUFRWXdCYXlnQ0FDSUhJQUJCbEFGcktBSUFJZ2hySVFNZ0FFR1FBV3NvQWdBZ0FFR1lBV3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXRCQUNFQklBQW9Ba0JGQkVBRFFDQUZLQUlZSVFJZ0JDZ0NIQ0FFS0FJWVFaZ0JiR29pQUVFRWF5Z0NBQ0lISUFCQkRHc29BZ0FpQ0dzaEF5QUFRUWhyS0FJQUlBQkJFR3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXNEUUNBRktBSVlJUUlnQkNnQ0hDQUVLQUlZUVpnQmJHb2lBRUdNQVdzb0FnQWlCeUFBUVpRQmF5Z0NBQ0lJYXlFRElBQkJrQUZyS0FJQUlBQkJtQUZyS0FJQWF5RUFBa0FnQnlBSVJnMEFJQUN0SUFPdGZrSWdpRkFOQUF3REN5QUFJQU5zSVFNQ1FFRUVJQUpCQTNZZ0FrRUhjVUVBUjJvaUFDQUFRUU5HR3lJQ1JRMEFJQUt0SUFPdGZrSWdpRkFOQUF3REMwRi9JUUFnQWlBRGJDSUNJQUZCZjNOTERRRWdCRUhNQUdvaEJDQUZRVFJxSVFVZ0FTQUNhaUlCSVFBZ0JrRUJhaUlHSUFsSERRQUxDeUFBRHd0QmZ3dmFCQUVMZnlBQUJFQWdBQ2dDRkNJQkJFQWdBU2dDQUNJRkJFQWdCU2dDRkNFRElBVW9BaEFFZjBFUVFSRWdBQzBBS0VFQmNSc2hDQU5BSUFNb0Fod2lBZ1JBSUFNb0FpQWlBVUdZQVc0aENrRUFJUWtnQVVHWUFVOEVmd05BSUFJb0FqQWlBUVJBSUFJb0FqUWlCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ01BVWdBUXNRRkNBQ1FRQTJBakFMSUFJb0FsUWlBUVJBSUFJb0FsZ2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ1ZBVWdBUXNRRkNBQ1FRQTJBbFFMSUFJb0FuZ2lBUVJBSUFJb0Fud2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ2VBVWdBUXNRRkNBQ1FRQTJBbmdMSUFKQm1BRnFJUUlnQ1VFQmFpSUpJQXBIRFFBTElBTW9BaHdGSUFJTEVCUWdBMEVBTmdJY0N3SkFJQU1vQWloRkRRQWdBeWdDSkNJQlJRMEFJQUVRRkNBRC9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NKQXNnQXlnQ05CQVVJQU5CekFCcUlRTWdDMEVCYWlJTElBVW9BaEJKRFFBTElBVW9BaFFGSUFNTEVCUWdCVUVBTmdJVUlBQW9BaFFvQWdBUUZDQUFLQUlVSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDRkFzZ0FDZ0NSQkFVSUFBUUZBc0wyUk1CRVg4akFFRWdheUlQSkFBZ0R5QUZOZ0lZSUFFZ0F5Z0NIRUhNQUd4cUtBSWNJQU1vQWlCQm1BRnNhaUVRQWtBQ1FDQURLQUlvRFFBZ0VDZ0NHRVVOQUNBUVFSeHFJUWtEUUFKQUlBa29BZ2dnQ1NnQ0FFY0VmeUFKS0FJTUlBa29BZ1JHQlVFQkN3MEFJQU1vQWlRaUFTQUpLQUlZUVNodVR3UkFJQWhCQVVIdkZVRUFFQk1NQkFzZ0NTZ0NGQ0FCUVNoc2FpSUJLQUlnRUdzZ0FTZ0NKQkJySUFFb0FoUWdBU2dDRUd3aURFVU5BQ0FCS0FJWUlRRWdERUVJVHdSQUlBeEJlSEVoQzBFQUlRb0RRQ0FCUWdBM0FvUUVJQUZDQURjQ3dBTWdBVUlBTndMOEFpQUJRZ0EzQXJnQ0lBRkNBRGNDOUFFZ0FVSUFOd0t3QVNBQlFnQTNBbXdnQVVJQU53SW9JQUZCb0FScUlRRWdDa0VJYWlJS0lBdEhEUUFMQzBFQUlRb2dERUVIY1NJTVJRMEFBMEFnQVVJQU53SW9JQUZCeEFCcUlRRWdDa0VCYWlJS0lBeEhEUUFMQ3lBSlFTUnFJUWtnRFVFQmFpSU5JQkFvQWhoSkRRQUxDeUFGSVF3Q1FDQUNMUUFBUVFKeFJRMEFJQWRCQlUwRVFDQUlRUUpCdnlCQkFCQVREQUVMQWtBZ0JTMEFBRUgvQVVZRVFDQUZMUUFCUVpFQlJnMEJDeUFJUVFKQjZTQkJBQkFUREFFTElBOGdCVUVHYWlJTU5nSVlDMEVVRUJnaUMwVU5BQUovSUFBdEFHeEJBWEVFUUNBQVFTaHFJUkVnQUNnQ0tDRU1JQUJCTEdvTUFRc2dBaTBBaUN4QkFuRUVRQ0FDUWJBb2FpRVJJQUlvQXJBb0lRd2dBa0c4S0dvTUFRc2dEeUFGSUFkcUlBeHJOZ0ljSUE5QkdHb2hFU0FQUVJ4cUN5SVNLQUlBSVFBZ0MwSUFOd0lNSUFzZ0REWUNDQ0FMSUF3MkFnQWdDeUFBSUF4cU5nSUVJQXRCQVJBalJRUkFJQXNRYlJvZ0N5Z0NDQ0FMS0FJQWF5QUxFRElnREdvaEFDQVJLQUlBSVFFZ0VpQVNLQUlBSWdNZ0FpMEFBRUVFY1FSL0lBTWdBR3NnQVdwQkFVMEVRQ0FJUVFGQm9TSkJBQkFUREFNTEFrQWdBQzBBQUVIL0FVWUVRQ0FBTFFBQlFaSUJSZzBCQ3lBSVFRRkJqQ0pCQUJBVERBTUxJQUJCQW1vRklBQUxJQUZySWdCck5nSUFJQkVnQUNBQmFqWUNBQ0FFUVFBMkFnQWdCaUFQS0FJWUlBVnJOZ0lBUVFFaEZ3d0JDeUFRS0FJWUJFQWdFRUVjYWlFSEEwQWdBeWdDSkNFQUlBY29BaFFoQVFKQUlBY29BZ2dnQnlnQ0FFY0VmeUFIS0FJTUlBY29BZ1JHQlVFQkN3MEFJQUVnQUVFb2JHb2lGQ2dDRkNBVUtBSVFiQ0lZUlEwQUlCUW9BaGdoQ1VFQUlSVURRQUpBQW44Z0NTZ0NLRVVFUUNBTElCUW9BaUFnRlNBREtBSW9RUUZxRUdrTUFRc2dDMEVCRUNNTFJRUkFJQWxCQURZQ0pBd0JDeUFKS0FJb1JRUkFRUUFoQVFOQUlBRWlBRUVCYWlFQklBc2dGQ2dDSkNBVklBQVFhVVVOQUFzZ0J5Z0NIQ0VCSUFsQkF6WUNJQ0FKSUFFMkFoZ2dDU0FCSUFCclFRRnFOZ0ljQ3lBSkFuOUJBU0FMUVFFUUkwVU5BQnBCQWlBTFFRRVFJMFVOQUJvZ0MwRUNFQ01pQUVFRFJ3UkFJQUJCQTJvTUFRc2dDMEVGRUNNaUFFRWZSd1JBSUFCQkJtb01BUXNnQzBFSEVDTkJKV29MTmdJa1FRQWhBUU5BSUFFaUFFRUJhaUVCSUF0QkFSQWpEUUFMSUFrZ0NTZ0NJQ0FBYWpZQ0lBSkFBa0FDZnlBSktBSW9JZ0JGQkVBZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRQWdDU2dDTUVVRVFDQUpLQUlBUWZBQkVCc2lBVVVOQkNBSklBRTJBZ0FnQVNBSktBSXdRUmhzYWtFQVFmQUJFQmthSUFsQkNqWUNNQXNnQ1NnQ0FDSUtJZ0g5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dJQUlBRkNBRGNDRUVFQlFRcEI3UUFnQUVFQmNSc2dBRUVFY1JzaEFVRUFEQUVMSUFrb0FnQWlBU0FBUVFGcklnMUJHR3hxSWdvb0FnUWdDaWdDREVjTkFTQUNLQUxRS3lBREtBSWNRYmdJYkdvb0FoQWhEU0FKS0FJd0lnb2dBRUVCYWtrRWZ5QUJJQXBCQ21vaUNrRVliQkFiSWdGRkRRTWdDU0FCTmdJQUlBRWdDU2dDTUVFWWJHcEJBRUh3QVJBWkdpQUpJQW8yQWpBZ0NTZ0NBQVVnQVFzZ0FFRVliR29pQ2lJQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NBQ0FCUWdBM0FoQUNmMEVCSUExQkJIRU5BQnBCN1FBZ0RVRUJjVVVOQUJwQkFrRUNRUUVnQ2tFTWF5Z0NBQ0lCUVFwR0d5QUJRUUZHR3dzaEFTQUFDeUVOSUFvZ0FUWUNEQXNnQ1NnQ0pDRUFJQUlvQXRBcklBTW9BaHhCdUFoc2FpMEFFRUhBQUhFRVFBTkFJQTFCR0d3aURpQUpLQUlBYWlBQVFRRWdEUnNpRXpZQ0VDQUpLQUlnSVJaQkFDRUtJQUFoQVNBVFFRSlBCRUFEUUNBS1FRRnFJUW9nQVVFRFN5QUJRUUYySVFFTkFBc0xJQW9nRm1vaUFVRWhUd1JBSUE4Z0FUWUNFQ0FJUVFGQml2a0FJQTlCRUdvUUV3d0RDeUFMSUFFUUl5RUtJQWtvQWdBaUFTQU9haUlPSUFvMkFoUWdBQ0FPS0FJUWF5SUFRUUJNRFFNZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRb2dDU2dDTUNJT0lBMUJBbXBKQkVBZ0FTQU9RUXBxSWc1QkdHd1FHeUlCUlEwRElBa2dBVFlDQUNBQklBa29BakJCR0d4cVFRQkI4QUVRR1JvZ0NTQU9OZ0l3SUFrb0FnQWhBUXNnQVNBTlFRRnFJZzFCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQ0FLUVFSeEJFQWdBVUVCTmdJTURBRUxJQXBCQVhFRVFDQUJRUUpCQWtFQklBRkJER3NvQWdBaUFVRUtSaHNnQVVFQlJoczJBZ3dGSUFGQjdRQTJBZ3dMREFBTEFBc0RRQ0FOUVJoc0lnNGdDU2dDQUdvaUFTQUJLQUlNSUFFb0FnUnJJZ0VnQUNBQUlBRktHeUlCTmdJUUlBa29BaUFoRTBFQUlRb2dBVUVDVHdSQUEwQWdDa0VCYWlFS0lBRkJBMHNnQVVFQmRpRUJEUUFMQ3lBS0lCTnFJZ0ZCSVU4RVFDQVBJQUUyQWdBZ0NFRUJRWXI1QUNBUEVCTU1BZ3NnQ3lBQkVDTWhDaUFKS0FJQUlnRWdEbW9pRGlBS05nSVVJQUFnRGlnQ0VHc2lBRUVBVEEwQ0lBSW9BdEFySUFNb0FoeEJ1QWhzYWlnQ0VDRUtJQWtvQWpBaURpQU5RUUpxU1FSQUlBRWdEa0VLYWlJT1FSaHNFQnNpQVVVTkFpQUpJQUUyQWdBZ0FTQUpLQUl3UVJoc2FrRUFRZkFCRUJrYUlBa2dEallDTUNBSktBSUFJUUVMSUFFZ0RVRUJhaUlOUVJoc2FpSUIvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDQUNBQlFnQTNBaEFnQ2tFRWNRUkFJQUZCQVRZQ0RBd0JDeUFLUVFGeEJFQWdBVUVDUVFKQkFTQUJRUXhyS0FJQUlnRkJDa1liSUFGQkFVWWJOZ0lNQlNBQlFlMEFOZ0lNQ3d3QUN3QUxJQXNRTWd3RkN5QUpRY1FBYWlFSklCVkJBV29pRlNBWVJ3MEFDd3NnQjBFa2FpRUhJQmxCQVdvaUdTQVFLQUlZU1EwQUN3c2dDeEJ0UlFSQUlBc1FNZ3dCQ3lBTEtBSUlJQXNvQWdCcklBc1FNaUFNYWlFQklCRW9BZ0FoQUNBQ0xRQUFRUVJ4QkVBZ0VpZ0NBQ0FCYXlBQWFrRUJUUVJBSUFoQkFVR2hJa0VBRUJNTUFnc0NRQ0FCTFFBQVFmOEJSZ1JBSUFFdEFBRkJrZ0ZHRFFFTElBaEJBVUdNSWtFQUVCTU1BZ3NnQVVFQ2FpRUJDeUFBSUFGR0RRQWdFaUFTS0FJQUlBQWdBV3RxTmdJQUlCRWdBVFlDQUVFQklSY2dCRUVCTmdJQUlBWWdEeWdDR0NBRmF6WUNBQXNnRDBFZ2FpUUFJQmNMbHlRQ0ZIOE9mZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUNnQ1ZBNEZBQUVDQXdRS0N3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUJ5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFZYkNBRUVBRUJNTURBc2dBQ2dDTEVVRVFDQUFLQUlrSVFKQkFDRUJEQVVMSUFCQkFEWUNMQ0FBS0FKRUlRTkJBU0VCREFRTEFrQWdBQ2dDTkNJR0lBQW9Bc1FCSWdGSkJFQWdBQ2dDUUNJSElBRkJBV3BKRFFFTElBQW9BdXdCUVFGQnM4SUFRUUFRRXd3TEN5QUFLQUlzUlFSQUlBQW9BaVFoQkVFQUlRRU1DQXNnQUVFQU5nSXNJQUFvQWpBaEEwRUJJUUVNQndzQ1FDQUFLQUkwSWdRZ0FDZ0N4QUVpQ2trRVFDQUFLQUpBSWc0Z0NrRUJha2tOQVFzZ0FDZ0M3QUZCQVVHNnd3QkJBQkFUREFvTElBQW9BaXhGQkVBZ0FDZ0NLQ0VMREFZTElBQkNBRGNDNUFFZ0FFRUFOZ0lzSUFBb0FzZ0JJUXdEUUNBTUlBZEJCSFJxSWdVb0FnZ2lEd1JBSUFVb0Fnd2hFa0VBSVFFRFFBSkFJQThnQVVGL2Myb2lFQ0FTSUFGQkJIUnFJaEVvQWdCcUlnbEJIMHNOQUNBRktBSUFJaE5CZnlBSmRrc05BQ0FBSUFJZ0V5QUpkQ0lKSUFJZ0NVa2JJQWtnQWhzaUFqWUM1QUVMQWtBZ0VTZ0NCQ0FRYWlJSlFSOUxEUUFnQlNnQ0JDSVFRWDhnQ1haTERRQWdBQ0FESUJBZ0NYUWlDU0FESUFsSkd5QUpJQU1iSWdNMkF1Z0JDeUFCUVFGcUlnRWdEMGNOQUFzTElBZEJBV29pQnlBS1J3MEFDeUFDUlEwSElBTkZEUWNnQUMwQUFFVUVRQ0FBSUFBb0F0QUJOZ0pzSUFBZ0FDZ0N6QUUyQW1RZ0FDQUFLQUxZQVRZQ2NDQUFJQUFvQXRRQk5nSm9DeUFBS0FJd0lRVkJBU0VCREFVTEFrQWdBQ2dDTkNJRklBQW9Bc1FCSWdsSkJFQWdBQ2dDUUNJU0lBbEJBV3BKRFFFTElBQW9BdXdCUVFGQmpjTUFRUUFRRXd3SkN5QUFLQUlzUlFSQUlBQW9Bc2dCSWcwZ0FDZ0NIQ0lFUVFSMGFpRUxJQUFvQWlnaENBd0VDeUFBUWdBM0F1UUJJQUJCQURZQ0xDQUFLQUxJQVNFTkEwQWdEU0FHUVFSMGFpSUtLQUlJSWc0RVFDQUtLQUlNSVJCQkFDRUJBMEFDUUNBT0lBRkJmM05xSWhFZ0VDQUJRUVIwYWlJVEtBSUFhaUlNUVI5TERRQWdDaWdDQUNJVVFYOGdESFpMRFFBZ0FDQUNJQlFnREhRaURDQUNJQXhKR3lBTUlBSWJJZ0kyQXVRQkN3SkFJQk1vQWdRZ0VXb2lERUVmU3cwQUlBb29BZ1FpRVVGL0lBeDJTdzBBSUFBZ0F5QVJJQXgwSWd3Z0F5QU1TUnNnRENBREd5SUROZ0xvQVFzZ0FVRUJhaUlCSUE1SERRQUxDeUFHUVFGcUlnWWdDVWNOQUFzZ0FrVU5CaUFEUlEwR0FrQWdBQzBBQUFSQUlBQW9BbXdoQmd3QkN5QUFJQUFvQXRBQklnWTJBbXdnQUNBQUtBTE1BVFlDWkNBQUlBQW9BdGdCTmdKd0lBQWdBQ2dDMUFFMkFtZ0xRUUVoQVF3REN3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUR5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFlRENBRUVBRUJNTUJnc2dBQ2dDTEVVRVFDQUFLQUxJQVNBQUtBSWNJZ1pCQkhScUlRVWdBQ2dDS0NFSFFRQWhBUXdDQ3lBQUlBWTJBaHdnQUVFQU5nSXNRUUVoQVF3QkN3TkFBbjhDUUNBQlJRUkFJQUpCQVdvaEFnd0JDeUFBSUFNMkFpZ2dBQ2dDT0NBRFRRMEpJQUFvQWpBaEJFRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQUVOZ0lnSUFRZ0FDZ0NQRThOQVNBQUlBWTJBaHdnQmlFQlFRQWhCUXdFQ3lBQUlBSTJBaVFnQUNnQ1RDQUNUUVJBSUFBb0Fod2hBVUVCSVFVTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBQW9BaWhzYWlBQUtBSVVJQUFvQWh4c2FpQUFLQUlZSUFKc2FpSUJJQUFvQWdoUEJFQU1EQXNnQUNnQ0JDQUJRUUYwYWlJQkx3RUFEUUVNRFFzZ0FDZ0NLRUVCYWlFRERBRUxRUUFoQVF3REMwRUJJUUVNQWdzRFFBSkFBa0FDUUNBRlJRUkFJQUVnQjA4TkFTQUFLQUlnSWdVZ0FDZ0N5QUVnQVVFRWRHb2lEU2dDQ0U4TkF5QUFMUUFBUlFSQUlBQWdEU2dDRENBRlFRUjBhaUlCS0FJTUlBRW9BZ2hzTmdKTUN5QUFLQUpJSVFKQkFTRUJEQVVMSUFBZ0FVRUJhaUlCTmdJY0RBRUxJQUFvQWlCQkFXb2hCRUVBSVFFTUF3dEJBQ0VGREFFTFFRRWhCUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0IwRUJhaUlITmdJb0RBRUxJQVlnRDA4TkNDQUFRZ0EzQXVRQklBQW9Bc2dCSUFaQkJIUnFJZ1VvQWdnaUMwVU5DQ0FGS0FJTUlRcEJBQ0VDUVFBaEJFRUFJUUVEUUFKQUlBc2dBVUYvYzJvaUNTQUtJQUZCQkhScUlnNG9BZ0JxSWdoQkgwc05BQ0FGS0FJQUlneEJmeUFJZGtzTkFDQUFJQVFnRENBSWRDSUlJQVFnQ0VrYklBZ2dCQnNpQkRZQzVBRUxBa0FnRGlnQ0JDQUphaUlJUVI5TERRQWdCU2dDQkNJSlFYOGdDSFpMRFFBZ0FDQUNJQWtnQ0hRaUNDQUNJQWhKR3lBSUlBSWJJZ0kyQXVnQkN5QUJRUUZxSWdFZ0MwY05BQXNnQkVVTkJpQUNSUTBHQWtBZ0FDMEFBQVJBSUFBb0Ftd2hBZ3dCQ3lBQUlBQW9BdEFCSWdJMkFtd2dBQ0FBS0FMTUFUWUNaQ0FBSUFBb0F0Z0JOZ0p3SUFBZ0FDZ0MxQUUyQW1nTFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBSTJBdUFCSUFJZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0IwMEVRQ0FBS0FJZ0lRTkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBSGJHb2dBQ2dDRkNBR2JHb2dBQ2dDR0NBQUtBSWtiR29pQVNBQUtBSUlUd1JBREFzTElBQW9BZ1FnQVVFQmRHb2lBUzhCQUEwQkRBd0xJQUFnQmtFQmFpSUdOZ0ljREFFTFFRQWhBUXdEQzBFQklRRU1BZ3NEUUFKQUFrQUNRQ0FBQW44Z0FVVUVRQ0FBSUEwMkF0d0JJQTBnQUNnQ2FFOE5BaUFBS0FJd0RBRUxJQU5CQVdvTElnTTJBaUFnQUNnQ1BDSUJJQVVvQWdnaUJDQUJJQVJKR3lBRFN3UkFJQVVvQWdBaUFTQUJyU0llSUFRZ0EwRi9jMm9pQ0swaUZvWWlGeUFXaUtkSERRTWdCU2dDQkNJRVFuOGdGb2luY1NBRVJ3MERJQVN0SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlDYTE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlEcTE4SUJlQUlSd2dBVUovSUFVb0Fnd2dBMEVFZEdvaUN5Z0NBQ0lLSUFocXJTSWRpS2R4SUFGSERRTWdCQ0FWSUFzb0FnUWlBU0FJYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUJLMGlJaUFoZ2tJQVVnUkFJQVFnQ1VjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQkswaUZTQWVJQjJHZ2tJQVVnUkFJQVFnRGtjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0N5Z0NDQ0lFUlEwRElBc29BZ3hGRFFNZ0hLY2lDeUFncDBZTkF5QWFweUlJSUIrblJnMERJQUFnQUNnQ1JDSUhOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0NuWWdDeUFLZG1zZ0dTQWlmQ0FZZ0tjZ0FYWWdDQ0FCZG1zZ0JHeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnUnFJQUVnQkhCcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUVhaUFCSUFSd2F5RUNRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQUNBSVFRRnFJZ2cyQWlnTUFRc2dBQ0FHTmdMZ0FTQUFLQUp3SUFaTkRRY2dBQ2dDWkNFUFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBODJBdHdCSUE4Z0FDZ0NhRThOQVNBQUlBVTJBaHdnQlNFRVFRQWhBUXdFQ3lBQUtBSTRJQWhOQkVBZ0FDZ0NJQ0VIUVFFaEFRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dDR3hxSUFBb0FoUWdCR3hxSUFBb0FoZ2dBQ2dDSkd4cUlnRWdBQ2dDQ0U4RVFBd0tDeUFBS0FJRUlBRkJBWFJxSWdFdkFRQU5BUXdMQ3lBQUtBTGdBU0lCSUFBb0F1Z0JJZ1pxSUFFZ0JuQnJJUVlNQVF0QkFDRUJEQU1MUVFFaEFRd0NDd05BQWtBQ1FBSkFBa0FnQVVVRVFDQUVJQkpQRFFJZ0FDQUFLQUl3SWdjMkFpQWdEU0FFUVFSMGFpRUxEQUVMSUFBZ0IwRUJhaUlITmdJZ0N5QUFLQUk4SWdFZ0N5Z0NDQ0lDSUFFZ0Fra2JJQWRMQkVBZ0N5Z0NBQ0lCSUFHdEloNGdBaUFIUVg5emFpSUtyU0lXaGlJWElCYUlwMGNOQXlBTEtBSUVJZ0pDZnlBV2lLZHhJQUpIRFFNZ0FxMGlGU0FXaGlJWVFnRjlJaGtnQURVQzJBRjhJQmlBSVI4Z0dTQUFLQUxRQVNJT3JYd2dHSUFoR2lBWFFnRjlJaHNnQURVQzFBRjhJQmVBSVNBZ0d5QUFLQUxNQVNJTXJYd2dGNEFoSENBQlFuOGdDeWdDRENBSFFRUjBhaUlES0FJQUlna2dDbXF0SWgySXAzRWdBVWNOQXlBQ0lCVWdBeWdDQkNJQklBcHFyU0lWaGlJaElCV0lwMGNOQXlBQUtBTGdBU0lDclNJaUlDR0NRZ0JTQkVBZ0FpQU9SdzBFUW44Z0ZZWkNmNFVnR2tMLy8vLy9ENE1nRm9hRFVBMEVDeUFBS0FMY0FTSUNyU0lWSUI0Z0hZYUNRZ0JTQkVBZ0FpQU1SdzBFUW44Z0hZWkNmNFVnSEVMLy8vLy9ENE1nRm9hRFVBMEVDeUFES0FJSUlnSkZEUU1nQXlnQ0RFVU5BeUFjcHlJRElDQ25SZzBESUJxbklnb2dINmRHRFFNZ0FDQUFLQUpFSWdnMkFpZ2dBQ0FWSUJ0OElCZUFweUFKZGlBRElBbDJheUFaSUNKOElCaUFweUFCZGlBS0lBRjJheUFDYkdvMkFpUkJBU0VCREFVTElBQWdCRUVCYWlJRU5nSWNEQUVMSUFBb0F0d0JJZ0VnQUNnQzVBRWlBbW9nQVNBQ2NHc2hEMEVBSVFFTUF3dEJBQ0VCREFFTFFRRWhBUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0MwRUJhaUlMTmdJb0RBRUxJQUFnQlRZQ0lDQUFLQUk4SUFWTkRRWWdBQ2dDYkNFSVFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBZzJBdUFCSUFnZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0MwMEVRQ0FBS0FJY0lRWkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBTGJHb2dBQ2dDRkNBQUtBSWNiR29nQUNnQ0dDQUFLQUlrYkdvaUFTQUFLQUlJVHdSQURBa0xJQUFvQWdRZ0FVRUJkR29pQVM4QkFBMEJEQW9MSUFBb0FpQkJBV29oQlF3QkMwRUFJUUVNQXd0QkFTRUJEQUlMQTBBQ1FBSkFBa0FDUUNBQlJRUkFJQUFnRFRZQzNBRWdEU0FBS0FKb1R3MENJQUFnQkRZQ0hDQUVJUVlNQVFzZ0FDQUdRUUZxSWdZMkFod0xJQVlnRGtrRVFDQUFLQUlnSWdjZ0FDZ0N5QUVnQmtFRWRHb2lBU2dDQ0NJRFR3MERJQUVvQWdBaUFpQUNyU0llSUFNZ0IwRi9jMm9pQ3EwaUZvWWlGeUFXaUtkSERRTWdBU2dDQkNJRFFuOGdGb2luY1NBRFJ3MERJQU90SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlENjE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlDYTE4SUJlQUlSd2dBa0ovSUFFb0Fnd2dCMEVFZEdvaUFTZ0NBQ0lISUFwcXJTSWRpS2R4SUFKSERRTWdBeUFWSUFFb0FnUWlBaUFLYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUE2MGlJaUFoZ2tJQVVnUkFJQU1nRDBjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQTYwaUZTQWVJQjJHZ2tJQVVnUkFJQU1nQ1VjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0FTZ0NDQ0lEUlEwRElBRW9BZ3hGRFFNZ0hLY2lBU0FncDBZTkF5QWFweUlLSUIrblJnMERJQUFnQUNnQ1JDSUxOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0IzWWdBU0FIZG1zZ0dTQWlmQ0FZZ0tjZ0FuWWdDaUFDZG1zZ0EyeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnSnFJQUVnQW5CcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUNhaUFCSUFKd2F5RUlRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQkVFQmFpRUVEQUVMSUFBZ0F6WUNJQ0FBS0FJOElBTk5EUVVnQUNnQ1JDRUNRUUFNQVF0QkFRc2hBUU5BQWtBQ1FBSkFBa0FnQVVVRVFDQUFJQUkyQWlnZ0FpQUFLQUk0VHcwQklBQWdCallDSENBR0lRRkJBQ0VGREFRTElBQWdCRFlDSkNBQUtBSk1JQVJOQkVBZ0FDZ0NIQ0VCUVFFaEJRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dBQ2dDS0d4cUlBQW9BaFFnQUNnQ0hHeHFJQUFvQWhnZ0JHeHFJZ0VnQUNnQ0NFOEVRQXdJQ3lBQUtBSUVJQUZCQVhScUlnRXZBUUFOQVF3SkN5QUFLQUlnUVFGcUlRTU1BUXRCQUNFQkRBTUxRUUVoQVF3Q0N3TkFBa0FDUUFKQUlBVkZCRUFnQVNBSFR3MEJJQUFvQWlBaUJTQUFLQUxJQVNBQlFRUjBhaUlOS0FJSVR3MERJQUF0QUFCRkJFQWdBQ0FOS0FJTUlBVkJCSFJxSWdFb0Fnd2dBU2dDQ0d3MkFrd0xJQUFvQWtnaEJFRUJJUUVNQlFzZ0FDQUJRUUZxSWdFMkFod01BUXNnQUNnQ0tFRUJhaUVDUVFBaEFRd0RDMEVBSVFVTUFRdEJBU0VGREFBTEFBc0FDd0FMUVFBUEN5QUFLQUxzQVVFQlFab0tRUUFRRXd0QkFBOExJQUZCQVRzQkFFRUJDNVlMQVFwL0FrQWdBU2dDQUNBRVFRTnNJZ3gySWdaQmtJQ0FBWEVOQUNBQUlBQkJIR29pRGlBQUtBSnNJQVpCN3dOeGFpMEFBRUVDZEdvaUNqWUNhQ0FBSUFBb0FnUWdDaWdDQUNJSktBSUFJZ2hySWdZMkFnUUNRQ0FJSUFBb0FnQWlCMEVRZGtzRVFDQUpLQUlFSVFzZ0FDQUlOZ0lFSUFvZ0NVRUlRUXdnQmlBSVNTSUdHMm9vQWdBMkFnQWdDeUFMUlNBR0d5RUpJQUFvQWdnaEJnTkFBa0FnQmcwQUlBQW9BaEFpQmtFQmFpRUxJQVl0QUFFaENpQUdMUUFBUWY4QlJnUkFJQXBCa0FGUEJFQWdBQ0FBS0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaEJnd0NDeUFBSUFzMkFoQWdCeUFLUVFsMGFpRUhRUWNoQmd3QkN5QUFJQXMyQWhCQkNDRUdJQWNnQ2tFSWRHb2hCd3NnQUNBR1FRRnJJZ1kyQWdnZ0FDQUhRUUYwSWdjMkFnQWdBQ0FJUVFGMElnZzJBZ1FnQ0VHQWdBSkpEUUFMSUFnaEJnd0JDeUFBSUFjZ0NFRVFkR3NpQnpZQ0FDQUdRWUNBQW5GRkJFQWdDU2dDQkNFTElBb2dDVUVNUVFnZ0JpQUlTU0lJRzJvb0FnQTJBZ0FnQzBVZ0N5QUlHeUVKSUFBb0FnZ2hDQU5BQWtBZ0NBMEFJQUFvQWhBaUNFRUJhaUVMSUFndEFBRWhDaUFJTFFBQVFmOEJSZ1JBSUFwQmtBRlBCRUFnQUNBQUtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBQUlBczJBaEFnQnlBS1FRbDBhaUVIUVFjaENBd0JDeUFBSUFzMkFoQkJDQ0VJSUFjZ0NrRUlkR29oQndzZ0FDQUlRUUZySWdnMkFnZ2dBQ0FIUVFGMElnYzJBZ0FnQUNBR1FRRjBJZ1kyQWdRZ0JrR0FnQUpKRFFBTERBRUxJQWtvQWdRaENRc2dDVVVOQUNBQUlBNGdBU2dDQkNBTVFSRnFka0VFY1NBQlFRUnJJZzBvQWdBZ0RFRVRhblpCQVhFZ0FTZ0NBQ0lJSUF4QkVHcDJRY0FBY1NBSUlBeDJRYW9CY1hJZ0NDQU1RUXhxUVE0Z0JCdDJRUkJ4Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ3pZQ2FDQUFJQVlnQ3lnQ0FDSUtLQUlBSWdocklnWTJBZ1FDUUNBSUlBZEJFSFpMQkVBZ0NpZ0NCQ0VKSUFBZ0NEWUNCQ0FMSUFwQkNFRU1JQVlnQ0VraUJodHFLQUlBTmdJQUlBa2dDVVVnQmhzaENpQUFLQUlJSVFZRFFBSkFJQVlOQUNBQUtBSVFJZ1pCQVdvaEN5QUdMUUFCSVFrZ0JpMEFBRUgvQVVZRVFDQUpRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFZTUFnc2dBQ0FMTmdJUUlBY2dDVUVKZEdvaEIwRUhJUVlNQVFzZ0FDQUxOZ0lRUVFnaEJpQUhJQWxCQ0hScUlRY0xJQUFnQmtFQmF5SUdOZ0lJSUFBZ0IwRUJkQ0lITmdJQUlBQWdDRUVCZENJSU5nSUVJQWhCZ0lBQ1NRMEFDd3dCQ3lBQUlBY2dDRUVRZEdzaUNUWUNBQ0FHUVlDQUFuRkZCRUFnQ2lnQ0JDRUhJQXNnQ2tFTVFRZ2dCaUFJU1NJSUcyb29BZ0EyQWdBZ0IwVWdCeUFJR3lFS0lBQW9BZ2doQndOQUFrQWdCdzBBSUFBb0FoQWlCMEVCYWlFTElBY3RBQUVoQ0NBSExRQUFRZjhCUmdSQUlBaEJrQUZQQkVBZ0FDQUFLQUlNUVFGcU5nSU1JQWxCZ1A0RGFpRUpRUWdoQnd3Q0N5QUFJQXMyQWhBZ0NTQUlRUWwwYWlFSlFRY2hCd3dCQ3lBQUlBczJBaEJCQ0NFSElBa2dDRUVJZEdvaENRc2dBQ0FIUVFGcklnYzJBZ2dnQUNBSlFRRjBJZ2syQWdBZ0FDQUdRUUYwSWdZMkFnUWdCa0dBZ0FKSkRRQUxEQUVMSUFvb0FnUWhDZ3NnQWlBRFFRQWdBMnNnQ2lBUFFaREFBV290QUFBaUFrWWJOZ0lBSUEwZ0RTZ0NBRUVnSUF4MGNqWUNBQ0FCSUFFb0FnQWdBaUFLY3lJRFFSTjBRUkJ5SUF4MGNqWUNBQ0FCSUFFb0FnUkJDQ0FNZEhJMkFnUWdCQ0FGY2tVRVFDQUJRWDRnQUNnQ2ZHdEJBblJxSWdJZ0FpZ0NCRUdBZ0FKeU5nSUVJQUlnQWlnQ0FDQURRUjkwY2tHQWdBUnlOZ0lBSUFKQkJHc2lBaUFDS0FJQVFZQ0FDSEkyQWdBTElBUkJBMGNOQUNBQklBQW9BbnhCQW5ScUlnQkJCR29nQUNnQ0JFRUVjallDQUNBQUlBQW9BZ3hCQVhJMkFnd2dBQ0FBS0FJSUlBTkJFblJ5UVFKeU5nSUlDd3V1Q3dFSmZ3SkFJQUVvQWdBZ0JFRURiQ0lOZGlJSFFaQ0FnQUZ4RFFBZ0IwSHZBM0VpQjBVTkFDQUFJQUJCSEdvaURpQUFLQUpzSUFkcUxRQUFRUUowYWlJTE5nSm9JQUFnQUNnQ0JDQUxLQUlBSWdvb0FnQWlDV3NpQnpZQ0JBSkFJQWtnQUNnQ0FDSUlRUkIyU3dSQUlBb29BZ1FoRENBQUlBazJBZ1FnQ3lBS1FRaEJEQ0FISUFsSklnY2JhaWdDQURZQ0FDQU1JQXhGSUFjYklRb2dBQ2dDQ0NFSEEwQUNRQ0FIRFFBZ0FDZ0NFQ0lIUVFGcUlRd2dCeTBBQVNFTElBY3RBQUJCL3dGR0JFQWdDMEdRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQ0VHQS9nTnFJUWhCQ0NFSERBSUxJQUFnRERZQ0VDQUlJQXRCQ1hScUlRaEJCeUVIREFFTElBQWdERFlDRUVFSUlRY2dDQ0FMUVFoMGFpRUlDeUFBSUFkQkFXc2lCellDQ0NBQUlBaEJBWFFpQ0RZQ0FDQUFJQWxCQVhRaUNUWUNCQ0FKUVlDQUFra05BQXNnQ1NFSERBRUxJQUFnQ0NBSlFSQjBheUlJTmdJQUlBZEJnSUFDY1VVRVFDQUtLQUlFSVF3Z0N5QUtRUXhCQ0NBSElBbEpJZ2tiYWlnQ0FEWUNBQ0FNUlNBTUlBa2JJUW9nQUNnQ0NDRUpBMEFDUUNBSkRRQWdBQ2dDRUNJSlFRRnFJUXdnQ1MwQUFTRUxJQWt0QUFCQi93RkdCRUFnQzBHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUpEQUlMSUFBZ0REWUNFQ0FJSUF0QkNYUnFJUWhCQnlFSkRBRUxJQUFnRERZQ0VFRUlJUWtnQ0NBTFFRaDBhaUVJQ3lBQUlBbEJBV3NpQ1RZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFkQkFYUWlCellDQkNBSFFZQ0FBa2tOQUFzTUFRc2dDaWdDQkNFS0N3SkFJQXBGRFFBZ0FDQU9JQUVvQWdRZ0RVRVJhblpCQkhFZ0FVRUVheUlQS0FJQUlBMUJFMnAyUVFGeElBRW9BZ0FpQ1NBTlFSQnFka0hBQUhFZ0NTQU5ka0dxQVhGeUlBa2dEVUVNYWtFT0lBUWJka0VRY1hKeWNpSUtRWkMrQVdvdEFBQkJBblJxSWd3MkFtZ2dBQ0FISUF3b0FnQWlDeWdDQUNJSmF5SUhOZ0lFSUFwQmtNQUJhaTBBQUNFT0FrQWdDU0FJUVJCMlN3UkFJQXNvQWdRaENpQUFJQWsyQWdRZ0RDQUxRUWhCRENBSElBbEpJZ2NiYWlnQ0FEWUNBQ0FLSUFwRklBY2JJUXNnQUNnQ0NDRUhBMEFDUUNBSERRQWdBQ2dDRUNJSFFRRnFJUXdnQnkwQUFTRUtJQWN0QUFCQi93RkdCRUFnQ2tHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUhEQUlMSUFBZ0REWUNFQ0FJSUFwQkNYUnFJUWhCQnlFSERBRUxJQUFnRERZQ0VFRUlJUWNnQ0NBS1FRaDBhaUVJQ3lBQUlBZEJBV3NpQnpZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFsQkFYUWlDVFlDQkNBSlFZQ0FBa2tOQUFzTUFRc2dBQ0FJSUFsQkVIUnJJZ28yQWdBZ0IwR0FnQUp4UlFSQUlBc29BZ1FoQ0NBTUlBdEJERUVJSUFjZ0NVa2lDUnRxS0FJQU5nSUFJQWhGSUFnZ0NSc2hDeUFBS0FJSUlRZ0RRQUpBSUFnTkFDQUFLQUlRSWdoQkFXb2hEQ0FJTFFBQklRa2dDQzBBQUVIL0FVWUVRQ0FKUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBS1FZRCtBMm9oQ2tFSUlRZ01BZ3NnQUNBTU5nSVFJQW9nQ1VFSmRHb2hDa0VISVFnTUFRc2dBQ0FNTmdJUVFRZ2hDQ0FLSUFsQkNIUnFJUW9MSUFBZ0NFRUJheUlJTmdJSUlBQWdDa0VCZENJS05nSUFJQUFnQjBFQmRDSUhOZ0lFSUFkQmdJQUNTUTBBQ3d3QkN5QUxLQUlFSVFzTElBSWdBMEVBSUFOcklBc2dEa1liTmdJQUlBOGdEeWdDQUVFZ0lBMTBjallDQUNBQklBRW9BZ0FnQ3lBT2N5SUNRUk4wUVJCeUlBMTBjallDQUNBQklBRW9BZ1JCQ0NBTmRISTJBZ1FnQkNBR2NrVUVRQ0FCSUFWQkFuUnJJZ0FnQUNnQ0JFR0FnQUp5TmdJRUlBQWdBQ2dDQUNBQ1FSOTBja0dBZ0FSeU5nSUFJQUJCQkdzaUFDQUFLQUlBUVlDQUNISTJBZ0FMSUFSQkEwY05BQ0FCSUFWQkFuUnFJZ0FnQUNnQ0JFRUJjallDQkNBQUlBQW9BZ0FnQWtFU2RISkJBbkkyQWdBZ0FFRUVheUlBSUFBb0FnQkJCSEkyQWdBTElBRWdBU2dDQUVHQWdJQUJJQTEwY2pZQ0FBc0xyUUVBSUFCQnNLSUJOZ0prSUFCQnNLSUJOZ0pnSUFCQnNLSUJOZ0pjSUFCQnNLSUJOZ0pZSUFCQnNLSUJOZ0pVSUFCQnNLSUJOZ0pRSUFCQnNLSUJOZ0pNSUFCQnNLSUJOZ0pJSUFCQnNLSUJOZ0pFSUFCQnNLSUJOZ0pBSUFCQnNLSUJOZ0k4SUFCQnNLSUJOZ0k0SUFCQnNLSUJOZ0kwSUFCQnNLSUJOZ0l3SUFCQnNLSUJOZ0lzSUFCQnNLSUJOZ0lvSUFCQnNLSUJOZ0lrSUFCQnNLSUJOZ0lnSUFCQnNLSUJOZ0ljQy9RRkFnbC9BWDRnQUNBQk5nSUFJQUQ5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dNSUlBQWdBellDSENBQUlBSkJBV3NpQmpZQ0dDQUJRUU54SVFvQ2Z5QUNRUUJNQkVBZ0FTRUVJQU1NQVFzZ0FDQUJRUUZxSWdRMkFnQWdBUzBBQUFzaEFVRUlJUWdnQUVFSU5nSVFJQUFnQVVIL0FVWWlDVFlDRkNBQUlBR3RJZzAzQXdnQ1FDQUtRUU5HRFFBZ0FDQUNRUUpySWdzMkFoZ2dBQUovSUFKQkFrZ0VRQ0FFSVFVZ0F3d0JDeUFBSUFSQkFXb2lCVFlDQUNBRUxRQUFDeUlFUWY4QlJpSUpOZ0lVSUFCQkQwRVFJQUZCL3dGR0d5SUlOZ0lRSUFBZ0JFRUlkQ0FCY3EwaURUY0RDQ0FLUVFKR0JFQWdCU0VFSUFZaEFpQUxJUVlNQVFzZ0FDQUNRUU5ySWd3MkFoZ2dBQUovSUFKQkEwZ0VRQ0FGSVFjZ0F3d0JDeUFBSUFWQkFXb2lCellDQUNBRkxRQUFDeUlCUWY4QlJpSUpOZ0lVSUFCQkIwRUlJQVJCL3dGR0d5QUlhaUlGTmdJUUlBQWdBYTBnQ0syR0lBMkVJZzAzQXdnZ0NrRUJSZ1JBSUFjaEJDQUZJUWdnQ3lFQ0lBd2hCZ3dCQ3lBQUlBSkJCR3NpQmpZQ0dDQUFBbjhnQWtFRVNBUkFJQWNoQkNBRERBRUxJQUFnQjBFQmFpSUVOZ0lBSUFjdEFBQUxJZ0pCL3dGR0lnazJBaFFnQUVFSFFRZ2dBVUgvQVVZYklBVnFJZ2cyQWhBZ0FDQUNyU0FGcllZZ0RZUWlEVGNEQ0NBTUlRSUxBa0FnQWtFRlRnUkFJQVFvQWdBaEF5QUFJQUpCQldzMkFoZ2dBQ0FFUVFScU5nSUFEQUVMUVFBaEFVRi9RUUFnQXhzaEF5QUNRUUpJRFFBRFFDQUFJQVJCQVdvaUFqWUNBQ0FFTFFBQUlRUWdBQ0FHUVFGcklnVTJBaGdnQTBIL0FTQUJkRUYvYzNFZ0JDQUJkSEloQXlBQlFRaHFJUUVnQmtFQlN5QUNJUVFnQlNFR0RRQUxDeUFBSUFOQkdIWWlBVUgvQVVZMkFoUWdBRUVIUVFnZ0NSc2lBa0VIUVFnZ0EwSC9BWEVpQkVIL0FVWWJhaUlHUVFkQkNDQURRUWgyUWY4QmNTSUZRZjhCUmh0cUlnZEJCMEVJSUFOQkVIWkIvd0Z4SWdOQi93RkdHeUFJYW1vMkFoQWdBQ0FGSUFKMElBTWdCblJ5SUFFZ0IzUnlJQVJ5clNBSXJZWWdEWVEzQXdnTHR3VUNFbjhDZmdKL0lBQW9BaHdnQVVHWUFXeHFJZ0pCa0FGcktBSUFJQUpCbUFGcktBSUFheUlESVFVZ0FrR01BV3NvQWdBZ0FrR1VBV3NvQWdCcklnSWhCa0hBQUNBRElBTkJ3QUJQR3lFRFFjQUFJQUlnQWtIQUFFOGJJUVFDUUNBRlJRMEFJQVpGRFFBZ0EwVU5BQ0FFUlEwQUlBTkJmeUFFYmtFQ2Rrc05BRUVCUVJ3UUZ5SUNJQVEyQWd3Z0FpQUROZ0lJSUFJZ0JqWUNCQ0FDSUFVMkFnQWdBaUFFclNJVUlBYXRmRUlCZlNBVWdDSVVweUlFTmdJVUlBSWdBNjBpRlNBRnJYeENBWDBnRllBaUZhY2lBellDRUFKQUlCUkMvLy8vL3crRElCVkMvLy8vL3crRGZrSWdpS2NOQUNBQ1FRUWdBeUFFYkJBWElnTTJBaGdnQTBVTkFDQUNEQUlMSUFJUUZBdEJBQXNpQ1VVRVFFRUFEd3NDUUNBQkJFQURRQ0FPUVpnQmJDSVBJQUFvQWh4cUlnVW9BaGdpQWdSQUlBVkJIR29oRUNBRktBSVVJUU1nQlNnQ0VDRUVRUUFoQ2dOQUlBTWdCR3dFUUNBUUlBcEJKR3hxSVFaQkFDRUxBMEFnQmlnQ0ZDQUxRU2hzYWlJSUtBSVVJZ0lnQ0NnQ0VDSUhiQVJBUVFBaEJBTkFJQWdvQWhnZ0JFSEVBR3hxSWdNb0Fqd2lFUVJBSUFNb0Fnd2hCeUFES0FJVUlSSWdBeWdDRUNFTUlBTW9BZ2dpRXlBR0tBSUFheUVESUFZb0FoQWlEVUVCY1FSQUlBQW9BaHdnRDJvaUFrR1FBV3NvQWdBZ0Eyb2dBa0dZQVdzb0FnQnJJUU1MSUFjZ0JpZ0NCR3NoQWlBTlFRSnhCRUFnQWlBQUtBSWNJQTlxSWcxQmpBRnJLQUlBYWlBTlFaUUJheWdDQUdzaEFnc2dDU0FESUFJZ0F5QU1JQk5ySWd4cUlCSWdCMnNnQW1vZ0VVRUJJQXhCQUJBcVJRMEpJQWdvQWhBaEJ5QUlLQUlVSVFJTElBUkJBV29pQkNBQ0lBZHNTUTBBQ3lBRktBSVFJUVFnQlNnQ0ZDRURDeUFMUVFGcUlnc2dBeUFFYkVrTkFBc2dCU2dDR0NFQ0N5QUtRUUZxSWdvZ0Fra05BQXNMSUE1QkFXb2lEaUFCUncwQUN3c2dDUThMSUFrUUowRUFDOGdNQWc1L0Juc2dBQ2dDQ0NJTElBQW9BZ1JxSVFjQ1FDQUFLQUlNUlFSQUlBZEJBa2dOQVNBQktBSUFJQUVnQzBFQ2RHb2lEU2dDQUNJRVFRRnFRUUYxYXlFRElBQW9BZ0FoQmdKQUlBZEJCRWtFUUNBRUlRSU1BUXNnQjBFRWF5SUFRUUYySWdsQkFXb2hEQUpBSUFCQkZra0VRRUVCSVFBTUFRc2dCaUFCSUF0QkFuUnFJZ1VnQ1VFQ2RDSUNha0VJYWtrZ0JpQUpRUU4wYWtFSWFpSUFJQVZCQkdwTGNRUkFRUUVoQUF3QkN5QUdJQUVnQW1wQkNHcEpJQUZCQkdvZ0FFbHhCRUJCQVNFQURBRUxJQXhCL1AvLy93ZHhJZ1ZCQVhJaEFDQUZRUUYwSVFnZ0JQMFJJUkFnQS8wUklSSDlEQUFBQUFBQ0FBQUFCQUFBQUFZQUFBQWhGRUVBSVFJRFFDQUJJQUpCQW5SQkJISWlBMnI5QUFJQUlSTWdBeUFOYXYwQUFnQWhFaUFHSUFKQkEzUnFJZ01nRWYxYUFnQURJQU5CQ0dvZ0V5QVNJQkFnRXYwTkRBME9EeEFSRWhNVUZSWVhHQmthR3lJVC9hNEIvUXdDQUFBQUFnQUFBQUlBQUFBQ0FBQUEvYTRCUVFMOXJBSDlzUUVpRVAxYUFnQUFJQU5CRUdvZ0VQMWFBZ0FCSUFOQkdHb2dFUDFhQWdBQ0lBWWdGUDBNQVFBQUFBRUFBQUFCQUFBQUFRQUFBUDFRSWhYOUd3QkJBblJxSUJBZ0VTQVEvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJUi9Wb0NBQUFnQmlBVi9Sc0JRUUowYWlBUi9Wb0NBQUVnQmlBVi9Sc0NRUUowYWlBUi9Wb0NBQUlnQmlBVi9Sc0RRUUowYWlBUi9Wb0NBQU1nRlAwTUNBQUFBQWdBQUFBSUFBQUFDQUFBQVAydUFTRVVJQkFoRVNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJEOUd3TWhBaUFSL1JzRElRTWdCU0FNUmcwQklBSWhCQXNEUUNBQklBQkJBblFpQW1vb0FnQWhDU0FDSUExcUtBSUFJUUlnQmlBSVFRSjBhaUlGSUFNMkFnQWdCU0FESUFrZ0FpQUVha0VDYWtFQ2RXc2lBMnBCQVhVZ0JHbzJBZ1FnQ0VFQ2FpRUlJQUFnREVjZ0FpRUVJQUJCQVdvaEFBMEFDd3NnQmlBSVFRSjBhaUFETmdJQVFYd2hBQ0FIUVFGeEJIOGdCaUFIUVFGcklnQkJBblJxSUFFZ0FFRUJkR29vQWdBZ0FrRUJha0VCZFdzaUFEWUNBQ0FBSUFOcVFRRjFJUU5CZUFWQmZBc2dCaUFIUVFKMElnQnFhaUFDSUFOcU5nSUFJQUVnQmlBQUVCWWFEd3NDUUFKQUFrQWdCMEVCYXc0Q0FBRUNDeUFCSUFFb0FnQkJBbTAyQWdBUEN5QUFLQUlBSWdRZ0FTZ0NBQ0FCSUF0QkFuUnFJZ01vQWdCQkFXcEJBWFZySWdBMkFnUWdCQ0FBSUFNb0FnQnFOZ0lBSUFFZ0JDa0NBRGNDQUE4TElBZEJBMGdOQUNBQUtBSUFJZ29nQVNnQ0FDQUJJQXRCQW5ScUlnNG9BZ1FpQkNBT0tBSUFJZ0JxUVFKcVFRSjFheUlESUFCcU5nSUFRUUVoQ0FKQUlBZEJBbXNpQmlBSFFRRnhJZ3hGSWdCclFRSkpCRUFnQkNFQ0RBRUxJQWNnQUd0QkJHc2lBRUVCZGlJQ1FRRnFJUThDUUFKQUlBQkJGa2tOQUNBS1FRUnFJZ1VnQVNBQ1FRSjBJZ0JxUVFocVNTQUtJQUpCQTNScVFReHFJZ0lnQVVFRWFrdHhEUUFnQlNBQUlBRWdDMEVDZEdvaUFHcEJER3BKSUFCQkNHb2dBa2x4RFFBZ0QwRjhjU0lGUVFGeUlRQWdCVUVCZEVFQmNpRUlJQVQ5RVNFUklBUDlFU0VRUVFBaEFnTkFJQW9nQWtFRGRHb2lCQ0FCSUFKQkFuUWlBMnI5QUFJRUlCRWdBeUFPYXYwQUFnZ2lFZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlUSUJIOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBU0lTSUJJZ0VDQVMvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJVC9RMEVCUVlIR0JrYUd3Z0pDZ3NjSFI0Zi9Rc0NGQ0FFSUJBZ0UvME5EQTBPRHhBUkVoTUFBUUlERkJVV0Z5QVMvUTBBQVFJREJBVUdCeEFSRWhNTURRNFAvUXNDQkNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJIOUd3TWhBaUFRL1JzRElRTWdCU0FQUmcwQ0lBSWhCQXdCQzBFQklRQUxBMEFnQVNBQVFRSjBhaWdDQUNFTklBNGdBRUVCYWlJRlFRSjBhaWdDQUNFQ0lBb2dDRUVDZEdvaUNTQUROZ0lBSUFrZ0F5QU5JQUlnQkdwQkFtcEJBblZySWdOcVFRRjFJQVJxTmdJRUlBaEJBbW9oQ0NBQUlBOUhJQUloQkNBRklRQU5BQXNMSUFvZ0NFRUNkR29nQXpZQ0FBSkFJQXhGQkVBZ0NpQUdRUUowYWlBQklBZEJBWFJxUVFScktBSUFJQUpCQVdwQkFYVnJJZ0FnQTJwQkFYVWdBbW8yQWdBTUFRc2dBaUFEYWlFQUN5QUtJQWRCQW5RaUEycEJCR3NnQURZQ0FDQUJJQW9nQXhBV0dnc0xvQWNEQTMwRGV3Si9JQU5CQ0U4RVFDQURRUU4ySVFzRFFDQUIvUUFFQUNFSElBQWdBUDBBQkFBaUNDQUMvUUFFQUNJSi9ReThkTE0vdkhTelA3eDBzeis4ZExNLy9lWUIvZVFCL1FzRUFDQUJJQWdnQi8wTXp6R3dQczh4c0Q3UE1iQSt6ekd3UHYzbUFmM2xBU0FKL1F6aDBUWS80ZEUyUCtIUk5qL2gwVFkvL2VZQi9lVUIvUXNFQUNBQ0lBZ2dCLzBNNWREaVArWFE0ai9sME9JLzVkRGlQLzNtQWYza0FmMExCQUFnQWYwQUJCQWhCeUFBSUFEOUFBUVFJZ2dnQXYwQUJCQWlDZjBNdkhTelA3eDBzeis4ZExNL3ZIU3pQLzNtQWYza0FmMExCQkFnQVNBSUlBZjlETTh4c0Q3UE1iQSt6ekd3UHM4eHNENzk1Z0g5NVFFZ0NmME00ZEUyUCtIUk5qL2gwVFkvNGRFMlAvM21BZjNsQWYwTEJCQWdBaUFJSUFmOURPWFE0ai9sME9JLzVkRGlQK1hRNGovOTVnSDk1QUg5Q3dRUUlBSkJJR29oQWlBQlFTQnFJUUVnQUVFZ2FpRUFJQXBCQVdvaUNpQUxSdzBBQ3dzQ1FDQURRUWR4SWdORkRRQWdBU29DQUNFRUlBQWdBaW9DQUNJR1E3eDBzeitVSUFBcUFnQWlCWkk0QWdBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlBSUFJZ0JTQUVRK1hRNGorVWtqZ0NBQ0FEUVFGR0RRQWdBU29DQkNFRUlBQWdBaW9DQkNJR1E3eDBzeitVSUFBcUFnUWlCWkk0QWdRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlFSUFJZ0JTQUVRK1hRNGorVWtqZ0NCQ0FEUVFKR0RRQWdBU29DQ0NFRUlBQWdBaW9DQ0NJR1E3eDBzeitVSUFBcUFnZ2lCWkk0QWdnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlJSUFJZ0JTQUVRK1hRNGorVWtqZ0NDQ0FEUVFOR0RRQWdBU29DRENFRUlBQWdBaW9DRENJR1E3eDBzeitVSUFBcUFnd2lCWkk0QWd3Z0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlNSUFJZ0JTQUVRK1hRNGorVWtqZ0NEQ0FEUVFSR0RRQWdBU29DRUNFRUlBQWdBaW9DRUNJR1E3eDBzeitVSUFBcUFoQWlCWkk0QWhBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlRSUFJZ0JTQUVRK1hRNGorVWtqZ0NFQ0FEUVFWR0RRQWdBU29DRkNFRUlBQWdBaW9DRkNJR1E3eDBzeitVSUFBcUFoUWlCWkk0QWhRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlVSUFJZ0JTQUVRK1hRNGorVWtqZ0NGQ0FEUVFaR0RRQWdBU29DR0NFRUlBQWdBaW9DR0NJR1E3eDBzeitVSUFBcUFoZ2lCWkk0QWhnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlZSUFJZ0JTQUVRK1hRNGorVWtqZ0NHQXNMNEFFQ0JuOERld0pBSUFORkRRQWdBMEVFVHdSQUlBTkJmSEVoQmdOQUlBQWdCRUVDZENJRmFpSUhJQWY5QUFJQUlBSWdCV29pQi8wQUFnQWlDeUFCSUFWcUlnWDlBQUlBSWd6OXJnRkJBdjJzQWYyeEFTSUtJQXY5cmdIOUN3SUFJQVVnQ3YwTEFnQWdCeUFLSUF6OXJnSDlDd0lBSUFSQkJHb2lCQ0FHUncwQUN5QURJQVpHRFFFTEEwQWdBQ0FHUVFKMElnUnFJZ1VnQlNnQ0FDQUNJQVJxSWdVb0FnQWlCeUFCSUFScUlnZ29BZ0FpQ1dwQkFuVnJJZ1FnQjJvMkFnQWdDQ0FFTmdJQUlBVWdCQ0FKYWpZQ0FDQUdRUUZxSWdZZ0EwY05BQXNMQzlrQkFRTi9Jd0JCZ0FGcklnWWtBQ0FHSVFVQ1FDQUJLQUlNSUFKQkJIUnFJZ0lvQWdBaUJFVUVRQ0FDSVFFTUFRc0RRQ0FGSUFJMkFnQWdCVUVFYWlFRklBUWlBU0lDS0FJQUlnUU5BQXNMUVFBaEJBTkFJQUVvQWdnaUFpQUVTQVJBSUFFZ0JEWUNDQ0FFSVFJTEFrQWdBaUFEVGcwQUEwQWdBaUFCS0FJRVRnMEJBa0FnQUVFQkVDTUVRQ0FCSUFJMkFnUU1BUXNnQWtFQmFpRUNDeUFDSUFOSURRQUxDeUFCSUFJMkFnZ2dCU0FHUndSQUlBVkJCR3NpQlNnQ0FDRUJJQUloQkF3QkN3c2dBU2dDQkNBR1FZQUJhaVFBSUFOSUM4UUpBZzkvQTNzakFFR0FBbXNpQ1NRQUFrQWdBRVVFUUVFQUlRQU1BUXNDUUNBQklBQW9BZ0JHQkVBZ0FDZ0NCQ0FDUmcwQkN5QUFJQUkyQWdRZ0FDQUJOZ0lBSUFrZ0FqWUNBQ0FKSUFFMkFvQUJJQUloQkNBQklRWURRQ0FKSUFnaUQwRUJhaUlJUVFKMElncHFJQVJCQVdwQkFtMGlCellDQUNBSlFZQUJhaUFLYWlBR1FRRnFRUUp0SWdvMkFnQWdCU0FFSUFac0lneHFJUVVnQnlFRUlBb2hCaUFNUVFGTERRQUxJQUFnQlRZQ0NBSkFBa0FDUUNBRlJRUkFJQUFvQWd3aUFVVU5BU0FCRUJRZ0FFRUFOZ0lNREFFTElBVkJCSFFpQlNBQUtBSVFUUTBDSUFBb0Fnd2dCUkFiSWdJTkFTQURRUUZCampKQkFCQVRJQUFvQWd3aUFVVU5BQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUkJBQ0VBREFNTElBQWdBallDRENBQ0lBQW9BaEFpQVdwQkFDQUZJQUZyRUJrYUlBQWdCVFlDRUNBQUtBSUVJUUlnQUNnQ0FDRUJDeUFBS0FJTUlRWWdEd1JBSUFZZ0FTQUNiRUVFZEdvaUJDRUZBMEFDUUNBSklCQkJBblFpQVdvb0FnQWlDMEVBVEEwQUlBdEJBV3NoRFFKQUFrQWdDVUdBQVdvZ0FXb29BZ0FpQjBFQVRBUkFJQXRCQVhFaENrRUFJUWdnQzBFQlJ3MEJJQVVoQVF3Q0N5QUhRUUlnQnlBSFFRSk9HMnRCQVdwQkFYWWlBaUFIUVlHQWdJQjRiRUgvLy8vL0IycEJBWFlpQVNBQklBSkxHeUlDUVFGcUlnRWdBVUVEY1NJQlFRUWdBUnRySWc1QkJIUWhFU0FPUVFWMElSSWdCeUFPUVFGMGF5RU1JQUpCQTBzZ0IzRWhDRUVBSVFFZ0JTRUNBMEFnQ0FSL0lBUWdFV29nQmlBU2FrRUFJUVVEUUNBRy9SRWlGUDBNQUFBQUFDQUFBQUJBQUFBQVlBQUFBUDJ1QVNJVi9Sc0FJQVQ5RWYwTUFBQUFBQkFBQUFBZ0FBQUFNQUFBQVAydUFTSVQvVm9DQUFBZ0ZmMGJBU0FUL1ZvQ0FBRWdGZjBiQWlBVC9Wb0NBQUlnRmYwYkF5QVQvVm9DQUFNZ0ZQME1FQUFBQURBQUFBQlFBQUFBY0FBQUFQMnVBU0lVL1JzQUlCUDlXZ0lBQUNBVS9Sc0JJQlA5V2dJQUFTQVUvUnNDSUJQOVdnSUFBaUFVL1JzRElCUDlXZ0lBQXlBRVFVQnJJUVFnQmtHQUFXb2hCaUFGUVFScUlnVWdEa2NOQUFzaEJpRUVJQXdGSUFjTElRVURRQUpBSUFZZ0JEWUNBQ0FGUVFGR0JFQWdCa0VRYWlFR0lBUkJFR29oQkF3QkN5QUdJQVEyQWhBZ0JFRVFhaUVFSUFaQklHb2hCaUFGUVFKS0lBVkJBbXNoQlEwQkN3c2dCQ0FDSUFkQkJIUnFJQUVnQVNBTlJuSkJBWEVpQXhzaEJTQUVJQUlnQXhzaEJDQUZJUUlnQVVFQmFpSUJJQXRIRFFBTERBSUxJQXRCL3YvLy93ZHhJUU5CQUNFQ0EwQWdDQ0FOUmlFQklBaEJBbW9oQ0NBRUlBVWdBUnNpQkNFRklBUWhBU0FDUVFKcUlnSWdBMGNOQUFzTElBcEZCRUFnQkNFRkRBRUxJQVFnQVNBSFFRUjBhaUFJSUFnZ0RVWnlRUUZ4SWdJYklRVWdCQ0FCSUFJYklRUUxJQkJCQVdvaUVDQVBSdzBBQ3dzZ0JrRUFOZ0lBQ3lBQUtBSUlJZ0pGRFFBZ0FDZ0NEQ0VFSUFKQkJFOEVRQ0FDUVh4eElRRkJBQ0VHQTBBZ0JFRUFOZ0k4SUFSQzV3YzNBalFnQkVFQU5nSXNJQVJDNXdjM0FpUWdCRUVBTmdJY0lBUkM1d2MzQWhRZ0JFRUFOZ0lNSUFSQzV3YzNBZ1FnQkVGQWF5RUVJQVpCQkdvaUJpQUJSdzBBQ3dzZ0FrRURjU0lCUlEwQVFRQWhCZ05BSUFSQkFEWUNEQ0FFUXVjSE53SUVJQVJCRUdvaEJDQUdRUUZxSWdZZ0FVY05BQXNMSUFsQmdBSnFKQUFnQUF1eEFRRURmd0pBSUFCRkRRQWdBQ2dDQ0NJQlJRMEFJQUFvQWd3aEFDQUJRUVJQQkVBZ0FVRjhjU0VEQTBBZ0FFRUFOZ0k4SUFCQzV3YzNBalFnQUVFQU5nSXNJQUJDNXdjM0FpUWdBRUVBTmdJY0lBQkM1d2MzQWhRZ0FFRUFOZ0lNSUFCQzV3YzNBZ1FnQUVGQWF5RUFJQUpCQkdvaUFpQURSdzBBQ3dzZ0FVRURjU0lCUlEwQVFRQWhBZ05BSUFCQkFEWUNEQ0FBUXVjSE53SUVJQUJCRUdvaEFDQUNRUUZxSWdJZ0FVY05BQXNMQzhrSUFoSi9BM3NqQUVHQUFtc2lDU1FBQW45QkFVRVVFQmNpQjBVRVFDQUNRUUZCNkRGQkFCQVRRUUFNQVFzZ0J5QUJOZ0lFSUFjZ0FEWUNBQ0FKSUFFMkFnQWdDU0FBTmdLQUFRTkFJQWtnQmlJUFFRRnFJZ1pCQW5RaUJXb2dBVUVCYWtFQ2JTSUROZ0lBSUFsQmdBRnFJQVZxSUFCQkFXcEJBbTBpQlRZQ0FDQUVJQUFnQVd3aUNHb2hCQ0FESVFFZ0JTRUFJQWhCQVVzTkFBc2dCeUFFTmdJSUlBUkZCRUFnQnhBVVFRQU1BUXNnQnlBRVFSQVFGeUlETmdJTUlBTkZCRUFnQWtFQlFjY2JRUUFRRXlBSEVCUkJBQXdCQ3lBSElBY29BZ2dpREVFRWREWUNFQ0FESVFFZ0R3UkFJQU1nQnlnQ0JDQUhLQUlBYkVFRWRHb2lBQ0VHQTBBQ1FDQUpJQkJCQW5RaUFtb29BZ0FpQzBFQVRBMEFJQXRCQVdzaERRSkFJQWxCZ0FGcUlBSnFLQUlBSWdoQkFFd0VRRUVBSVFRZ0MwRUJSd1JBSUF0Qi92Ly8vd2R4SVFWQkFDRUNBMEFnQkNBTlJpRUtJQVJCQW1vaEJDQUdJQUFnQ2hzaUFDRUdJQUpCQW1vaUFpQUZSdzBBQ3dzZ0MwRUJjUTBCSUFBaEJnd0NDeUFJUVFJZ0NDQUlRUUpPRzJ0QkFXcEJBWFlpQWlBSVFZR0FnSUI0YkVILy8vLy9CMnBCQVhZaUJTQUNJQVZKR3lJQ1FRRnFJZ1VnQlVFRGNTSUZRUVFnQlJ0cklnNUJCWFFoRVNBT1FRUjBJUklnQ0NBT1FRRjBheUVUSUFKQkEwc2dDSEVoRkVFQUlRb2dBQ0VDQTBBQ2Z5QVVSUVJBSUFZaEFDQUlEQUVMSUFFZ0VXb2dCaUFTYWlFQVFRQWhCQU5BSUFIOUVTSVgvUXdBQUFBQUlBQUFBRUFBQUFCZ0FBQUEvYTRCSWhYOUd3QWdCdjBSL1F3QUFBQUFFQUFBQUNBQUFBQXdBQUFBL2E0QkloYjlXZ0lBQUNBVi9Sc0JJQmI5V2dJQUFTQVYvUnNDSUJiOVdnSUFBaUFWL1JzRElCYjlXZ0lBQXlBWC9Rd1FBQUFBTUFBQUFGQUFBQUJ3QUFBQS9hNEJJaFg5R3dBZ0Z2MWFBZ0FBSUJYOUd3RWdGdjFhQWdBQklCWDlHd0lnRnYxYUFnQUNJQlg5R3dNZ0Z2MWFBZ0FESUFGQmdBRnFJUUVnQmtGQWF5RUdJQVJCQkdvaUJDQU9SdzBBQ3lFQklCTUxJUVFEUUFKQUlBRWdBRFlDQUNBRVFRRkdCRUFnQVVFUWFpRUJJQUJCRUdvaEFBd0JDeUFCSUFBMkFoQWdBRUVRYWlFQUlBRkJJR29oQVNBRVFRSktJQVJCQW1zaEJBMEJDd3NnQUNBQ0lBb2dDaUFOUm5KQkFYRWlCUnNoQmlBQUlBSWdDRUVFZEdvZ0JSc2lBQ0VDSUFwQkFXb2lDaUFMUncwQUN3d0JDeUFHSUFBZ0NFRUVkR29nQkNBRUlBMUdja0VCY1NJRkd5QUdJQUFnQlJzaEJpRUFDeUFRUVFGcUloQWdEMGNOQUFzTElBRkJBRFlDQUFKQUlBeEZEUUFnREVFRVR3UkFJQXhCZkhFaEFFRUFJUUVEUUNBRFFRQTJBandnQTBMbkJ6Y0NOQ0FEUVFBMkFpd2dBMExuQnpjQ0pDQURRUUEyQWh3Z0EwTG5CemNDRkNBRFFRQTJBZ3dnQTBMbkJ6Y0NCQ0FEUVVCcklRTWdBVUVFYWlJQklBQkhEUUFMQ3lBTVFRTnhJZ0JGRFFCQkFDRUJBMEFnQTBFQU5nSU1JQU5DNXdjM0FnUWdBMEVRYWlFRElBRkJBV29pQVNBQVJ3MEFDd3NnQndzZ0NVR0FBbW9rQUF0VEFRRi9BbjhnQUMwQURFSC9BVVlFUUNBQVFvRCtnNER3QURjQ0RFRUFJQUFvQWdnaUFTQUFLQUlFVHcwQkdpQUFJQUZCQVdvMkFnZ2dBQ0FCTFFBQVFZRCtBM0kyQWd3TElBQkJBRFlDRUVFQkN3c0ZBQkFNQUF1QkFnQUNRQ0FCUWY4QVRRMEFBa0JCMU5ZQktBSUFLQUlBUlFSQUlBRkJnSDl4UVlDL0EwWU5BZ3dCQ3lBQlFmOFBUUVJBSUFBZ0FVRS9jVUdBQVhJNkFBRWdBQ0FCUVFaMlFjQUJjam9BQUVFQ0R3c2dBVUdBUUhGQmdNQURSeUFCUVlDd0EwOXhSUVJBSUFBZ0FVRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFlQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FCUVFNUEN5QUJRWUNBQkd0Qi8vOC9UUVJBSUFBZ0FVRS9jVUdBQVhJNkFBTWdBQ0FCUVJKMlFmQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FDSUFBZ0FVRU1ka0UvY1VHQUFYSTZBQUZCQkE4TEMwSFV6UUZCR1RZQ0FFRi9Ed3NnQUNBQk9nQUFRUUVMZmdJQmZ3RitJQUM5SWdOQ05JaW5RZjhQY1NJQ1FmOFBSd1I4SUFKRkJFQWdBU0FBUkFBQUFBQUFBQUFBWVFSL1FRQUZJQUJFQUFBQUFBQUE4RU9pSUFFUWNDRUFJQUVvQWdCQlFHb0xOZ0lBSUFBUEN5QUJJQUpCL2dkck5nSUFJQU5DLy8vLy8vLy8vNGVBZjROQ2dJQ0FnSUNBZ1BBL2hMOEZJQUFMQzd3Q0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVFSmF3NFNBQWdKQ2dnSkFRSURCQW9KQ2dvSUNRVUdCd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCS0FJQU5nSUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTWdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTXdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTUFBQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTVFBQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDSUFNUkF3QUxEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTkFJQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTlFJQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLUU1BTndNQUMyOEJCWDhnQUNnQ0FDSURMQUFBUVRCcklnRkJDVXNFUUVFQUR3c0RRRUYvSVFRZ0FrSE1tYlBtQUUwRVFFRi9JQUVnQWtFS2JDSUZhaUFCSUFWQi8vLy8vd2R6U3hzaEJBc2dBQ0FEUVFGcUlnVTJBZ0FnQXl3QUFTQUVJUUlnQlNFRFFUQnJJZ0ZCQ2trTkFBc2dBZ3RKQVFGL0FrQkJBVUVzRUJjaUFRUkFJQUZCQURZQ0VBSkFJQUJCQUV3RVFDQUJRUUZCQ0JBWElnQTJBaVFnQUVVTkFRd0RDeUFCUVFBMkFnd0xJQUVRRkF0QkFDRUJDeUFCQzY0VUFoSi9BbjRqQUVGQWFpSUlKQUFnQ0NBQk5nSThJQWhCSjJvaEZ5QUlRU2hxSVJJQ1FBSkFBa0FDUUFOQVFRQWhCd05BSUFFaERTQUhJQTVCLy8vLy93ZHpTZzBDSUFjZ0Rtb2hEZ0pBQWtBQ1FBSkFJQUVpQnkwQUFDSU1CRUFEUUFKQUFrQWdERUgvQVhFaUFVVUVRQ0FISVFFTUFRc2dBVUVsUncwQklBY2hEQU5BSUF3dEFBRkJKVWNFUUNBTUlRRU1BZ3NnQjBFQmFpRUhJQXd0QUFJZ0RFRUNhaUlCSVF4QkpVWU5BQXNMSUFjZ0RXc2lCeUFPUWYvLy8vOEhjeUlZU2cwSklBQUVRQ0FBSUEwZ0J4QWVDeUFIRFFjZ0NDQUJOZ0k4SUFGQkFXb2hCMEYvSVJFQ1FDQUJMQUFCUVRCcklndEJDVXNOQUNBQkxRQUNRU1JIRFFBZ0FVRURhaUVIUVFFaEV5QUxJUkVMSUFnZ0J6WUNQRUVBSVFrQ1FDQUhMQUFBSWd4QklHc2lBVUVmU3dSQUlBY2hDd3dCQ3lBSElRdEJBU0FCZENJQlFZblJCSEZGRFFBRFFDQUlJQWRCQVdvaUN6WUNQQ0FCSUFseUlRa2dCeXdBQVNJTVFTQnJJZ0ZCSUU4TkFTQUxJUWRCQVNBQmRDSUJRWW5SQkhFTkFBc0xBa0FnREVFcVJnUkFBbjhDUUNBTExBQUJRVEJySWdGQkNVc05BQ0FMTFFBQ1FTUkhEUUFDZnlBQVJRUkFJQVFnQVVFQ2RHcEJDallDQUVFQURBRUxJQU1nQVVFRGRHb29BZ0FMSVJBZ0MwRURhaUVCUVFFTUFRc2dFdzBHSUF0QkFXb2hBU0FBUlFSQUlBZ2dBVFlDUEVFQUlSTkJBQ0VRREFNTElBSWdBaWdDQUNJSFFRUnFOZ0lBSUFjb0FnQWhFRUVBQ3lFVElBZ2dBVFlDUENBUVFRQk9EUUZCQUNBUWF5RVFJQWxCZ01BQWNpRUpEQUVMSUFoQlBHb1FjaUlRUVFCSURRb2dDQ2dDUENFQkMwRUFJUWRCZnlFS0FuOUJBQ0FCTFFBQVFTNUhEUUFhSUFFdEFBRkJLa1lFUUFKL0FrQWdBU3dBQWtFd2F5SUxRUWxMRFFBZ0FTMEFBMEVrUncwQUlBRkJCR29oQVFKL0lBQkZCRUFnQkNBTFFRSjBha0VLTmdJQVFRQU1BUXNnQXlBTFFRTjBhaWdDQUFzTUFRc2dFdzBHSUFGQkFtb2hBVUVBSUFCRkRRQWFJQUlnQWlnQ0FDSUxRUVJxTmdJQUlBc29BZ0FMSVFvZ0NDQUJOZ0k4SUFwQkFFNE1BUXNnQ0NBQlFRRnFOZ0k4SUFoQlBHb1FjaUVLSUFnb0Fqd2hBVUVCQ3lFVUEwQWdCeUVWUVJ3aEN5QUJJZzhzQUFBaUIwSDdBR3RCUmtrTkN5QUJRUUZxSVFFZ0J5QVZRVHBzYWtIL3hBRnFMUUFBSWdkQkFXdEIvd0Z4UVFoSkRRQUxJQWdnQVRZQ1BBSkFJQWRCRzBjRVFDQUhSUTBNSUJGQkFFNEVRQ0FBUlFSQUlBUWdFVUVDZEdvZ0J6WUNBQXdNQ3lBSUlBTWdFVUVEZEdvcEF3QTNBekFNQWdzZ0FFVU5DQ0FJUVRCcUlBY2dBaUFHRUhFTUFRc2dFVUVBVGcwTFFRQWhCeUFBUlEwSUN5QUFMUUFBUVNCeERRc2dDVUgvLzN0eElnd2dDU0FKUVlEQUFIRWJJUWxCQUNFUlFiQUlJUllnRWlFTEFrQUNRQUovQWtBQ1FBSkFBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBUExRQUFJZ2ZBSWc5QlUzRWdEeUFIUVE5eFFRTkdHeUFQSUJVYklnZEIyQUJyRGlFRUZoWVdGaFlXRmhZUUZna0dFQkFRRmdZV0ZoWVdBZ1VERmhZS0ZnRVdGZ1FBQ3dKQUlBZEJ3UUJyRGdjUUZnc1dFQkFRQUFzZ0IwSFRBRVlOQ3d3VkN5QUlLUU13SVJwQnNBZ01CUXRCQUNFSEFrQUNRQUpBQWtBQ1FBSkFBa0FnRlE0SUFBRUNBd1FjQlFZY0N5QUlLQUl3SUE0MkFnQU1Hd3NnQ0NnQ01DQU9OZ0lBREJvTElBZ29BakFnRHF3M0F3QU1HUXNnQ0NnQ01DQU9Pd0VBREJnTElBZ29BakFnRGpvQUFBd1hDeUFJS0FJd0lBNDJBZ0FNRmdzZ0NDZ0NNQ0FPckRjREFBd1ZDMEVJSUFvZ0NrRUlUUnNoQ2lBSlFRaHlJUWxCK0FBaEJ3c2dFaUVCSUFncEF6QWlHaUlaUWdCU0JFQWdCMEVnY1NFTUEwQWdBVUVCYXlJQklCbW5RUTl4UVpESkFXb3RBQUFnREhJNkFBQWdHVUlQVmlBWlFnU0lJUmtOQUFzTElBRWhEU0FhVUEwRElBbEJDSEZGRFFNZ0IwRUVka0d3Q0dvaEZrRUNJUkVNQXdzZ0VpRUJJQWdwQXpBaUdpSVpRZ0JTQkVBRFFDQUJRUUZySWdFZ0dhZEJCM0ZCTUhJNkFBQWdHVUlIVmlBWlFnT0lJUmtOQUFzTElBRWhEU0FKUVFoeFJRMENJQW9nRWlBQmF5SUJRUUZxSUFFZ0NrZ2JJUW9NQWdzZ0NDa0RNQ0lhUWdCVEJFQWdDRUlBSUJwOUlobzNBekJCQVNFUlFiQUlEQUVMSUFsQmdCQnhCRUJCQVNFUlFiRUlEQUVMUWJJSVFiQUlJQWxCQVhFaUVSc0xJUllnR2lBU0VDOGhEUXNnRkNBS1FRQkljUTBSSUFsQi8vOTdjU0FKSUJRYklRa0NRQ0FhUWdCU0RRQWdDZzBBSUJJaERVRUFJUW9NRGdzZ0NpQWFVQ0FTSUExcmFpSUJJQUVnQ2tnYklRb01EUXNnQ0MwQU1DRUhEQXNMQW45Qi8vLy8vd2NnQ2lBS1FmLy8vLzhIVHhzaUJ5SUpRUUJISVFzQ1FBSkFBa0FnQ0NnQ01DSUJRZkVNSUFFYklnMGlEMEVEY1VVTkFDQUpSUTBBQTBBZ0R5MEFBRVVOQWlBSlFRRnJJZ2xCQUVjaEN5QVBRUUZxSWc5QkEzRkZEUUVnQ1EwQUN3c2dDMFVOQVFKQUlBOHRBQUJGRFFBZ0NVRUVTUTBBQTBCQmdJS0VDQ0FQS0FJQUlnRnJJQUZ5UVlDQmdvUjRjVUdBZ1lLRWVFY05BaUFQUVFScUlROGdDVUVFYXlJSlFRTkxEUUFMQ3lBSlJRMEJDd05BSUE4Z0R5MEFBRVVOQWhvZ0QwRUJhaUVQSUFsQkFXc2lDUTBBQ3d0QkFBc2lBU0FOYXlBSElBRWJJZ0VnRFdvaEN5QUtRUUJPQkVBZ0RDRUpJQUVoQ2d3TUN5QU1JUWtnQVNFS0lBc3RBQUFORHd3TEN5QUlLUU13SWhsQ0FGSU5BVUVBSVFjTUNRc2dDZ1JBSUFnb0FqQU1BZ3RCQUNFSElBQkJJQ0FRUVFBZ0NSQWdEQUlMSUFoQkFEWUNEQ0FJSUJrK0FnZ2dDQ0FJUVFocUlnYzJBakJCZnlFS0lBY0xJUXhCQUNFSEEwQUNRQ0FNS0FJQUlnMUZEUUFnQ0VFRWFpQU5FRzhpRFVFQVNBMFBJQTBnQ2lBSGEwc05BQ0FNUVFScUlRd2dCeUFOYWlJSElBcEpEUUVMQzBFOUlRc2dCMEVBU0EwTUlBQkJJQ0FRSUFjZ0NSQWdJQWRGQkVCQkFDRUhEQUVMUVFBaEN5QUlLQUl3SVF3RFFDQU1LQUlBSWcxRkRRRWdDRUVFYWlJS0lBMFFieUlOSUF0cUlnc2dCMHNOQVNBQUlBb2dEUkFlSUF4QkJHb2hEQ0FISUF0TERRQUxDeUFBUVNBZ0VDQUhJQWxCZ01BQWN4QWdJQkFnQnlBSElCQklHeUVIREFnTElCUWdDa0VBU0hFTkNVRTlJUXNnQUNBSUt3TXdJQkFnQ2lBSklBY2dCUkVWQUNJSFFRQk9EUWNNQ2dzZ0J5MEFBU0VNSUFkQkFXb2hCd3dBQ3dBTElBQU5DU0FUUlEwRFFRRWhCd05BSUFRZ0IwRUNkR29vQWdBaUFBUkFJQU1nQjBFRGRHb2dBQ0FDSUFZUWNVRUJJUTRnQjBFQmFpSUhRUXBIRFFFTUN3c0xJQWRCQ2s4RVFFRUJJUTRNQ2dzRFFDQUVJQWRCQW5ScUtBSUFEUUZCQVNFT0lBZEJBV29pQjBFS1J3MEFDd3dKQzBFY0lRc01CZ3NnQ0NBSE9nQW5RUUVoQ2lBWElRMGdEQ0VKQ3lBS0lBc2dEV3NpRENBS0lBeEtHeUlCSUJGQi8vLy8vd2R6U2cwRFFUMGhDeUFRSUFFZ0VXb2lDaUFLSUJCSUd5SUhJQmhLRFFRZ0FFRWdJQWNnQ2lBSkVDQWdBQ0FXSUJFUUhpQUFRVEFnQnlBS0lBbEJnSUFFY3hBZ0lBQkJNQ0FCSUF4QkFCQWdJQUFnRFNBTUVCNGdBRUVnSUFjZ0NpQUpRWURBQUhNUUlDQUlLQUk4SVFFTUFRc0xDMEVBSVE0TUF3dEJQU0VMQzBIVXpRRWdDellDQUF0QmZ5RU9DeUFJUVVCckpBQWdEZ3VrQWdFRGZ5TUFRZEFCYXlJRkpBQWdCU0FDTmdMTUFTQUZRYUFCYWlJQ1FRQkJLQkFaR2lBRklBVW9Bc3dCTmdMSUFRSkFRUUFnQVNBRlFjZ0JhaUFGUWRBQWFpQUNJQU1nQkJCMFFRQklEUUFnQUNnQ1RFRUFTQ0FBSUFBb0FnQWlCMEZmY1RZQ0FBSi9Ba0FDUUNBQUtBSXdSUVJBSUFCQjBBQTJBakFnQUVFQU5nSWNJQUJDQURjREVDQUFLQUlzSVFZZ0FDQUZOZ0lzREFFTElBQW9BaEFOQVF0QmZ5QUFFRWNOQVJvTElBQWdBU0FGUWNnQmFpQUZRZEFBYWlBRlFhQUJhaUFESUFRUWRBc2hBU0FHQkg4Z0FFRUFRUUFnQUNnQ0pCRUFBQm9nQUVFQU5nSXdJQUFnQmpZQ0xDQUFRUUEyQWh3Z0FDZ0NGQm9nQUVJQU53TVFRUUFGSUFFTEdpQUFJQUFvQWdBZ0IwRWdjWEkyQWdBTkFBc2dCVUhRQVdva0FBdVZBUUVHZjBFSUlRSWpBRUdBQW1zaUJTUUFJQUZCQWs0RVFDQUFJQUZCQW5ScUlnY2dCVFlDQUFOQUlBY29BZ0FnQUNnQ0FFR0FBaUFDSUFKQmdBSlBHeUlFRUJZYVFRQWhBd05BSUFBZ0EwRUNkR29pQmlnQ0FDQUFJQU5CQVdvaUEwRUNkR29vQWdBZ0JCQVdHaUFHSUFZb0FnQWdCR28yQWdBZ0FTQURSdzBBQ3lBQ0lBUnJJZ0lOQUFzTElBVkJnQUpxSkFBTEtRQWdBRUVCYXlJQWFFRUFJQUFiSWdBRWZ5QUFCU0FCYUVFQUlBRWJJZ0JCSUhKQkFDQUFHd3NMblFNQkNYOENRQ0FBSWdGQkEzRUVRQU5BSUFFdEFBQWlBa1VOQWlBQ1FUMUdEUUlnQVVFQmFpSUJRUU54RFFBTEN3SkFBa0JCZ0lLRUNDQUJLQUlBSWdOcklBTnlRWUNCZ29SNGNVR0FnWUtFZUVjTkFBTkFRWUNDaEFnZ0EwRzkrdlRwQTNNaUFtc2dBbkpCZ0lHQ2hIaHhRWUNCZ29SNFJ3MEJJQUVvQWdRaEF5QUJRUVJxSWdJaEFTQURRWUNDaEFnZ0EydHlRWUNCZ29SNGNVR0FnWUtFZUVZTkFBc01BUXNnQVNFQ0N3TkFJQUlpQVMwQUFDSURSUTBCSUFGQkFXb2hBaUFEUVQxSERRQUxDeUFBSUFGR0JFQkJBQThMQWtBZ0FDQUJJQUJySWdacUxRQUFEUUJCOE5VQktBSUFJZ1ZGRFFBZ0JTZ0NBQ0lCUlEwQUEwQUNRQUovSUFBaEF5QUJJUUpCQUNBR0lnZEZEUUFhSUFNdEFBQWlCQVIvQWtBRFFDQUVJQUl0QUFBaUNFY05BU0FJUlEwQklBZEJBV3NpQjBVTkFTQUNRUUZxSVFJZ0F5MEFBU0VFSUFOQkFXb2hBeUFFRFFBTFFRQWhCQXNnQkFWQkFBc2dBaTBBQUdzTFJRUkFJQUVnQm1vaUFTMEFBRUU5UmcwQkN5QUZLQUlFSVFFZ0JVRUVhaUVGSUFFTkFRd0NDd3NnQVVFQmFpRUpDeUFKQ3ljQkFYOUJIQ0VESUFGQkEzRUVmMEVjQlNBQUlBRWdBaEFwSWdBMkFnQkJBRUV3SUFBYkN3djlBd0VGZndKL1FhakxBU2dDQUNJQ0lBQkJCMnBCZUhFaUFVRUhha0Y0Y1NJRGFpRUFBa0FnQTBFQUlBQWdBazBiUlFSQUlBQS9BRUVRZEUwTkFTQUFFQTROQVF0QjFNMEJRVEEyQWdCQmZ3d0JDMEdveXdFZ0FEWUNBQ0FDQ3lJQ1FYOUhCRUFnQVNBQ2FpSUFRUVJyUVJBMkFnQWdBRUVRYXlJRFFSQTJBZ0FDUUFKL1FlRFZBU2dDQUNJQkJIOGdBU2dDQ0FWQkFBc2dBa1lFUUNBQ0lBSkJCR3NvQWdCQmZuRnJJZ1JCQkdzb0FnQWhCU0FCSUFBMkFnZ2dCQ0FGUVg1eGF5SUFJQUFvQWdCcVFRUnJMUUFBUVFGeEJFQWdBQ2dDQkNJQklBQW9BZ2dpQkRZQ0NDQUVJQUUyQWdRZ0FDQURJQUJySWdFMkFnQU1Bd3NnQWtFUWF3d0JDeUFDUVJBMkFnQWdBaUFBTmdJSUlBSWdBVFlDQkNBQ1FSQTJBZ3hCNE5VQklBSTJBZ0FnQWtFUWFnc2lBQ0FESUFCcklnRTJBZ0FMSUFBZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBQUFuOGdBQ2dDQUVFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBVUVkSUFGbklnTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlCSUFGQlAwOGJDeUlCUVFSMElnTkI0TTBCYWpZQ0JDQUFJQU5CNk0wQmFpSURLQUlBTmdJSUlBTWdBRFlDQUNBQUtBSUlJQUEyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxJQUpCZjBjTHZRRUJBbjhDUUNBQUtBSk1JZ0ZCQUU0RVFDQUJSUTBCUVl6V0FTZ0NBQ0FCUWYvLy8vOERjVWNOQVFzQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQklBQW9BaEJHRFFBZ0FDQUJRUUZxTmdJVUlBRkJDam9BQUE4TElBQVFmQThMSUFCQnpBQnFJZ0VnQVNnQ0FDSUNRZi8vLy84RElBSWJOZ0lBQWtBQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQ0lBQW9BaEJHRFFBZ0FDQUNRUUZxTmdJVUlBSkJDam9BQUF3QkN5QUFFSHdMSUFFb0FnQWFJQUZCQURZQ0FBdDhBUUovSXdCQkVHc2lBU1FBSUFGQkNqb0FEd0pBQWtBZ0FDZ0NFQ0lDQkg4Z0FnVWdBQkJIRFFJZ0FDZ0NFQXNnQUNnQ0ZDSUNSZzBBSUFBb0FsQkJDa1lOQUNBQUlBSkJBV28yQWhRZ0FrRUtPZ0FBREFFTElBQWdBVUVQYWtFQklBQW9BaVFSQUFCQkFVY05BQ0FCTFFBUEdnc2dBVUVRYWlRQUM3QUNBUUovSUFBRVFDQUFLQUlBRUVBZ0FFRUFOZ0lBSUFBb0FrZ2lBUVJBSUFFUUZDQUFRUUEyQWtnTElBQW9Ba1FpQVFSQUlBRVFGQ0FBUVFBMkFrUUxJQUFvQW13aUFRUkFJQUVRRkNBQVFRQTJBbXdMSUFBb0FuUWlBUVJBSUFFb0FnQWlBZ1JBSUFJUUZDQUFLQUowSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDZEFzZ0FDZ0NlQ0lCQkVBZ0FTZ0NEQ0lDQkVBZ0FoQVVJQUFvQW5naUFVRUFOZ0lNQ3lBQktBSUVJZ0lFUUNBQ0VCUWdBQ2dDZUNJQlFRQTJBZ1FMSUFFb0FnZ2lBZ1JBSUFJUUZDQUFLQUo0SWdGQkFEWUNDQXNnQVNnQ0FDSUNCRUFnQWhBVUlBQW9BbmdpQVVFQU5nSUFDeUFCRUJRZ0FFRUFOZ0o0Q3lBQUtBSUVJZ0VFUUNBQkVEZ2dBRUVBTmdJRUN5QUFLQUlJSWdFRVFDQUJFRGdnQUVFQU5nSUlDeUFBRUJRTEM0c2FBaDUvQlhzakFFSHdBV3NpQ0NRQVFRRWhEZ0pBSUFBb0FnQW9BandOQUNBQUtBS0FBUTBBQWtBQ1FDQUFLQUowSWdsRkJFQWdBQ2dDZUNFRkRBRUxJQUVvQWhBaEJpQUpMd0VFSVFRQ1FDQUFLQUo0SWdWRkRRQWdCU2dDREVVTkFDQUZMUUFTSVFZTEFrQWdCQVJBSUFrb0FnQWhDUU5BSUFrZ0EwRUdiR29pQ2k4QkFDSUhJQVpQQkVBZ0NDQUdOZ0swQVNBSUlBYzJBckFCSUFKQkFVSHU2Z0FnQ0VHd0FXb1FFMEVBSVE0TUJnc0NRQ0FLTHdFRUlncEZEUUFnQ2tILy93TkdEUUFnQ2tFQmF5SUtJQVpKRFFBZ0NDQUdOZ0trQVNBSUlBbzJBcUFCSUFKQkFVSHU2Z0FnQ0VHZ0FXb1FFMEVBSVE0TUJnc2dBMEVCYWlJRElBUkhEUUFMREFFTElBWU5BZ3dCQ3dOQUlBWkJBV3NoQmtFQUlRTURRQ0FKSUFOQkJteHFMd0VBSUFaSEJFQWdBMEVCYWlJRElBUkhEUUVNQkFzTElBWU5BQXNMQWtBZ0JVVU5BQ0FGS0FJTUlncEZEUUFDUUFKQUlBVXRBQklpQlFSQVFRQWhBMEVCSVFjRFFDQUJLQUlRSWdRZ0NpQURRUUowYWk4QkFDSUdUUVJBSUFnZ0JEWUNsQUVnQ0NBR05nS1FBU0FDUVFGQjd1b0FJQWhCa0FGcUVCTkJBQ0VIQ3lBRFFRRnFJZ01nQlVjTkFBc2dCVUVFRUJjaUJFVU5BVUVBSVFNRFFBSkFJQW9nQTBFQ2RHb2lCaTBBQWlJSlFRSlBCRUFnQ0NBSk5nSkVJQWdnQXpZQ1FDQUNRUUZCbWQ0QUlBaEJRR3NRRTBFQUlRY01BUXNnQlNBR0xRQURJZ1pOQkVBZ0NDQUdOZ0tBQVNBQ1FRRkI0ZDBBSUFoQmdBRnFFQk5CQUNFSERBRUxJQVFnQmtFQ2RHb2hDd0pBSUFsQkFVY2lEQTBBSUFzb0FnQkZEUUFnQ0NBR05nSlFJQUpCQVVIaTJRQWdDRUhRQUdvUUUwRUFJUWNNQVFzQ1FDQUpEUUFnQmtVTkFDQUlJQVkyQW1RZ0NDQUROZ0pnSUFKQkFVSFkzQUFnQ0VIZ0FHb1FFMEVBSVFjTUFRc0NRQ0FNRFFBZ0F5QUdSZzBBSUFnZ0JqWUNlQ0FJSUFNMkFuUWdDQ0FETmdKd0lBSkJBVUg4M0FBZ0NFSHdBR29RRTBFQUlRY01BUXNnQzBFQk5nSUFDeUFEUVFGcUlnTWdCVWNOQUFzZ0IwVWhCMEVBSVFNRFFBSkFBa0FnQkNBRFFRSjBJZ1pxS0FJQVJRUkFJQVlnQ21vdEFBSU5BUXNnQTBFQmFpSURJQVZIRFFJZ0IwRUJjUTBCSUFFb0FoQkJBVWNOQlVFQUlRTURRQ0FFSUFOQkFuUnFLQUlBQkVBZ0JTQURRUUZxSWdOSERRRU1Cd3NMUVFBaENTQUNRUUpCZ01nQVFRQVFFMEVBSVFNZ0JVRUVUd1JBSUFWQi9BRnhJUWRCQUNFR0EwQWdDaUFEUVFKMGFpSUxJQU02QUFNZ0MwRUJPZ0FDSUFvZ0EwRUJjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRUNjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRURjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFOQkJHb2hBeUFHUVFScUlnWWdCMGNOQUFzTElBVkJBM0VpQlVVTkJRTkFJQW9nQTBFQ2RHb2lCaUFET2dBRElBWkJBVG9BQWlBRFFRRnFJUU1nQ1VFQmFpSUpJQVZIRFFBTERBVUxJQWdnQXpZQ01FRUJJUWNnQWtFQlFialdBQ0FJUVRCcUVCTWdBMEVCYWlJRElBVkhEUUVMQ3lBRUVCUkJBQ0VPREFVTElBVkJCQkFYSWdRTkFRdEJBQ0VPSUFKQkFVSFkzd0JCQUJBVERBTUxJQVFRRkFzQ1FDQUFLQUo0SWdWRkRRQWdCU2dDRENJUFJRUkFJQVVvQWdRUUZDQUFLQUo0S0FJSUVCUWdBQ2dDZUNnQ0FCQVVJQUFvQW5naUJTZ0NEQ0lFQkg4Z0JCQVVJQUFvQW5nRklBVUxFQlFnQUVFQU5nSjREQUVMSUFFb0FoZ2hEUUpBQWtBZ0JTMEFFaUlMQkVBZ0JTZ0NBQ0VVSUFVb0FnUWhCaUFGS0FJSUlRcEJBQ0VEQWtBRFFDQU5JQThnQTBFQ2RHb3ZBUUJCTkd4cUtBSXNCRUFnQ3lBRFFRRnFJZ05IRFFFTUFnc0xJQWdnQXpZQ0lDQUNRUUZCa093QUlBaEJJR29RRTBFQUlRNE1CZ3NnQzBFMGJCQVlJZ2xGRFFGQkFDRURBMEFnRHlBRFFRSjBhaUlGTHdFQUlRY2dDU0FGTFFBQ0JIOGdCUzBBQXdVZ0F3dEJOR3hxSWdRZ0RTQUhRVFJzYWlJRi9RQUNBUDBMQWdBZ0JDQUZLQUl3TmdJd0lBUWdCZjBBQWlEOUN3SWdJQVFnQmYwQUFoRDlDd0lRSUFrZ0EwRTBiR29pQkNBRktBSUlJQVVvQWd4c1FRSjBFQndpQlRZQ0xDQUZSUVJBSUFNRVFDQURRZi8vQTNFaEFBTkFJQUJCTkd3Z0NXcEJDR3NvQWdBUUZDQUFRUUZySWdBTkFBc0xJQWtRRkVFQUlRNGdBa0VCUWR6ckFFRUFFQk1NQndzZ0JDQURJQXBxTFFBQU5nSVlJQVFnQXlBR2FpMEFBRFlDSUNBRFFRRnFJZ01nQzBjTkFBc2dBQ2dDZUM4QkVDSVFRUUZySVJJRFFDQUpJQk5CTkd4cUlnVW9BZ3dnQlNnQ0NHd2hCQ0FOSUE4Z0UwRUNkR29pQmk4QkFFRTBiR29vQWl3aENnSkFJQVl0QUFKRkJFQWdCRVVOQVNBRktBSXNJUU5CQUNFSFFRQWhCUUpBSUFSQkJFa05BQ0FESUFwclFSQkpEUUFnQkVGOGNTRUZRUUFoQmdOQUlBTWdCa0VDZENJTWFpQUtJQXhxL1FBQ0FQMExBZ0FnQmtFRWFpSUdJQVZIRFFBTElBUWdCVVlOQWdzZ0JTRUdJQVJCQTNFaURBUkFBMEFnQXlBR1FRSjBJaEZxSUFvZ0VXb29BZ0EyQWdBZ0JrRUJhaUVHSUFkQkFXb2lCeUFNUncwQUN3c2dCU0FFYTBGOFN3MEJBMEFnQXlBR1FRSjBJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0F5QUZRUVJxSWdkcUlBY2dDbW9vQWdBMkFnQWdBeUFGUVFocUlnZHFJQWNnQ21vb0FnQTJBZ0FnQXlBRlFReHFJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0JrRUVhaUlHSUFSSERRQUxEQUVMSUFSRkRRQWdGQ0FHTFFBRElnWkJBblJxSVFVZ0NTQUdRVFJzYWlnQ0xDRURRUUFoQmlBRVFRRkhCRUFnQkVGK2NTRVZRUUFoREFOQUlBTWdCa0VDZENJSGFpQUZJQWNnQ21vb0FnQWlFU0FTSUJBZ0VVb2JRUUFnRVVFQVRoc2dDMnhCQW5ScUtBSUFOZ0lBSUFNZ0IwRUVjaUlIYWlBRklBY2dDbW9vQWdBaUJ5QVNJQWNnRUVnYlFRQWdCMEVBVGhzZ0MyeEJBblJxS0FJQU5nSUFJQVpCQW1vaEJpQU1RUUpxSWd3Z0ZVY05BQXNMSUFSQkFYRkZEUUFnQXlBR1FRSjBJZ1JxSUFVZ0JDQUthaWdDQUNJRUlCSWdCQ0FRU0J0QkFDQUVRUUJPR3lBTGJFRUNkR29vQWdBMkFnQUxJQk5CQVdvaUV5QUxSdzBBQ3d3Q0N5QUxRVFJzRUJnaUNRMEJDMEVBSVE0Z0FrRUJRZHpyQUVFQUVCTU1Bd3NnQVNnQ0VDSUZCRUJCQUNFREEwQWdEU0FEUVRSc2FpZ0NMQ0lFQkVBZ0JCQVVDeUFEUVFGcUlnTWdCVWNOQUFzTElBMFFGQ0FCSUFzMkFoQWdBU0FKTmdJWUN5QUFLQUowSWdORkRRRWdBeWdDQUNFSElBTXZBUVFpQ3dSQUlBZEJLbW9oRWlBSFFTUnFJUk1nQjBFZWFpRVJJQWRCR0dvaEZDQUhRUkpxSVJVZ0IwRU1haUVXSUFkQkJtb2hGeUFMUVFKcklSaEJBQ0VEUVFFaEJRTkFBa0FnQVNnQ0VDSUVJQWNnQTBFR2JHb2lEUzhCQUNJR1RRUkFJQWdnQkRZQ0ZDQUlJQVkyQWhBZ0FrRUNRWUU1SUFoQkVHb1FFd3dCQ3lBTkx3RUVJZ2xCQVdwQi8vOERjVUVCVFFSQUlBRW9BaGdnQmtFMGJHb2dEUzhCQWpzQk1Bd0JDeUFKUVFGcklncEIvLzhEY1NJUElBUlBCRUFnQ0NBRU5nSUVJQWdnRHpZQ0FDQUNRUUpCMkRnZ0NCQVREQUVMQWtBZ0JpQVBSZzBBSUEwdkFRSU5BQ0FJSUFFb0FoZ2lDU0FHUVRSc2FpSUVLQUl3TmdMb0FTQUlJQVQ5QUFJZy9Rc0QyQUVnQ0NBRS9RQUNFUDBMQThnQklBZ2dCUDBBQWdEOUN3TzRBU0FFSUFrZ0QwRTBiQ0lNYWlJSktRSUlOd0lJSUFRZ0NTa0NFRGNDRUNBRUlBa3BBaGczQWhnZ0JDQUpLUUlnTndJZ0lBUWdDU2tDS0RjQ0tDQUVJQWtvQWpBMkFqQWdCQ0FKS1FJQU53SUFJQUVvQWhnZ0RHb2lCQ0FJL1FBRHVBSDlDd0lBSUFRZ0NQMEFBOWdCL1FzQ0lDQUVJQWo5QUFQSUFmMExBaEFnQkNBSUtBTG9BVFlDTUNBRFFRRnFJQXRQRFFBZ0JTRUpJQmdnQTJ0Qi8vOERjU0lFUVFkUEJFQWdCU0FFUVFGcUlobEIrUDhIY1NJUWFpRUpJQXI5RUNFa0lBYjlFQ0VqUVFBaERBTkFJQ01nSkNBSElBVWdER3BCQm13aUJHb2lHaThCQVAwUUlBUWdGMm9pR3k4QkFQMGFBU0FFSUJacUlod3ZBUUQ5R2dJZ0JDQVZhaUlkTHdFQS9Sb0RJQVFnRkdvaUhpOEJBUDBhQkNBRUlCRnFJaDh2QVFEOUdnVWdCQ0FUYWlJZ0x3RUEvUm9HSUFRZ0Vtb2lCQzhCQVAwYUJ5SWhJQ1A5TGlBaElDVDlMU0lsL1U1QkQvMkxBVUVQL1l3Qi9WSWhJaUFoSUNQOUxTQWwvVkFpSWYwWkFFRUJjUVJBSUJvZ0l2MVpBUUFBQ3lBaC9Sa0JRUUZ4QkVBZ0d5QWkvVmtCQUFFTElDSDlHUUpCQVhFRVFDQWNJQ0w5V1FFQUFnc2dJZjBaQTBFQmNRUkFJQjBnSXYxWkFRQURDeUFoL1JrRVFRRnhCRUFnSGlBaS9Wa0JBQVFMSUNIOUdRVkJBWEVFUUNBZklDTDlXUUVBQlFzZ0lmMFpCa0VCY1FSQUlDQWdJdjFaQVFBR0N5QWgvUmtIUVFGeEJFQWdCQ0FpL1ZrQkFBY0xJQXhCQ0dvaURDQVFSdzBBQ3lBUUlCbEdEUUVMQTBBZ0NpRUVBa0FnQmlBSElBbEJCbXhxSWd3dkFRQWlFRWNFUUNBR0lRUWdEeUFRUncwQkN5QU1JQVE3QVFBTElBc2dDVUVCYWlJSlFmLy9BM0ZIRFFBTEN5QUJLQUlZSUFaQk5HeHFJQTB2QVFJN0FUQUxJQVZCQVdvaEJTQURRUUZxSWdNZ0MwY05BQXNnQUNnQ2RDSURLQUlBSVFjTElBY0VmeUFIRUJRZ0FDZ0NkQVVnQXdzUUZDQUFRUUEyQW5RTUFRdEJBQ0VPSUFKQkFVSDJ5UUJCQUJBVEN5QUlRZkFCYWlRQUlBNEw1UUVCQlg4akFFRWdheUlFSkFBQ2Z3SkFJQUFvQWp3aUF3UkFRUUVoQlFOQUlBQW9BbVFvQWhnZ0FDZ0NRQ0FDUVFKMGFpZ0NBQ0lHUVRSc2FpZ0NMRVVFUUNBRUlBWTJBaEFnQVVFQ1FZODdJQVJCRUdvUUUwRUFJUVVnQUNnQ1BDRURDeUFDUVFGcUlnSWdBMGtOQUFzTUFRdEJBU0VGUVFFZ0FDZ0NaQ0lES0FJUVJRMEJHZ05BSUFNb0FoZ2dBa0UwYkdvb0FpeEZCRUFnQkNBQ05nSUFJQUZCQWtHUE95QUVFQk5CQUNFRklBQW9BbVFoQXdzZ0FrRUJhaUlDSUFNb0FoQkpEUUFMQzBFQklBVU5BQm9nQVVFQlFhd1dRUUFRRTBFQUN5QUVRU0JxSkFBTCtnWUNFMzhDZmlBQUtBSVlJaEFvQWhCRkJFQkJBUThMSUJBb0FoZ2hEU0FBS0FJVUtBSUFLQUlVSVFzRFFDQUJJQTBvQWlRaUFqWUNKQ0FMS0FJY0lnWWdBa0dZQVd4cUlRTUNRQUpBQW44Z0FDZ0NRQ0lSQkVBZ0JpQUxLQUlZUVpnQmJHb2lBa0dRQVdzb0FnQWdBa0dZQVdzb0FnQnJJUXdnQTBFTWFpRUdJQU5CQkdvaEJDQURLQUlJSVFJZ0F5Z0NBQ0VGUVNRTUFRc2dBMEdVQVdvaEJpQURRWXdCYWlFRUlBTW9BcEFCSWdJZ0F5Z0NpQUVpQldzaERFRTBDeUFMYWlnQ0FDSVNSUTBBSUFRb0FnQWhCeUFHS0FJQUlRa2dBaUFGYXlFR0lBRW9BZ2dpQTBKL0lBRTFBaWdpRllaQ2Y0VWlGaUFCTlFJUWZDQVZpS2NpQ0dvaEJBSi9JQVVnQ0VzRVFDQUZJQWhySVE1QkFDRUlRUUFnQWlBRVRRMEJHaUFHSUFRZ0JXc2lCbXNNQVFzZ0NDQUZheUVJSUFJZ0JFMEVRQ0FHSUFocklRWkJBQ0VPUVFBTUFRdEJBQ0VPSUFNaEJpQUNJQVJyQ3lBSklBZHJJUUlnQVNnQ0RDSUVJQllnQVRVQ0ZId2dGWWluSWdwcUlRVUNmeUFISUFwTEJFQWdCeUFLYXlFUFFRQWhDa0VBSUFVZ0NVOE5BUm9nQWlBRklBZHJJZ0pyREFFTElBb2dCMnNoQ2lBRklBbFBCRUFnQWlBS2F5RUNRUUFoRDBFQURBRUxRUUFoRHlBRUlRSWdDU0FGYXdzaEIwRUFJUVVnQ0VFQVNBMEJJQXBCQUVnTkFVRUFTQTBCSUFkQkFFZ05BU0FHUVFCSURRRWdBa0VBU0EwQklBTWdEMndnRG1vaEJ5QUtJQXhzSUFocUlRa0NRQUpBQWtBZ0FTZ0NMQ0lJRFFBZ0NRMEFJQWNOQUNBRElBeEhEUUFnQXlBR1J3MEFJQUlnQkVjTkFTQUJJQXRCSkVFMElCRWJhaUlDS0FJQU5nSXNJQUpCQURZQ0FBd0RDeUFJRFFFTElBUkZEUUlnQkswZ0E2MStRaUNJcHcwQ0lBTWdCR3dpQTBILy8vLy9BMHNOQWlBQklBTkJBblFRSENJRE5nSXNJQU5GRFFJZ0JpQUJLQUlJSWdSR0lBRW9BZ3dpQlNBQ1JuRU5BQ0FEUVFBZ0JDQUZiRUVDZEJBWkdnc2dBa1VOQUNBQ1FRRnhJQVpCQW5RaEJpQUJLQUlzSUFkQkFuUnFJUVFnRWlBSlFRSjBhaUVGSUFKQkFVY0VRQ0FDUWY3Ly8vOEhjU0VIUVFBaEFnTkFJQVFnQlNBR0VCWWdCU0FNUVFKMElnbHFJZ2dnQ1dvaEJTQUJLQUlJUVFKMGFpQUlJQVlRRmlBQktBSUlRUUowYWlFRUlBSkJBbW9pQWlBSFJ3MEFDd3RGRFFBZ0JDQUZJQVlRRmhvTElBdEJ6QUJxSVFzZ0RVRTBhaUVOSUFGQk5Hb2hBVUVCSVFVZ0ZFRUJhaUlVSUJBb0FoQkpEUUVMQ3lBRkN3UUFRWDhMZ0JRQ0NYOEtmaU1BUWFBQmF5SUZKQUFDUUNBQ1FTTk5CRUJCQUNFQ0lBTkJBVUdxTDBFQUVCTU1BUXNnQWtFa2F5SUNJQUpCQTI0aUNVRURiRWNFUUVFQUlRSWdBMEVCUWFvdlFRQVFFd3dCQ3lBQUtBSmdJUVlnQVNBRlFad0JhaUlDUVFJUUZTQUFJQVVvQXB3Qk93Rm9JQUZCQW1vZ0JrRUlha0VFRUJVZ0FVRUdhaUFHUVF4cVFRUVFGU0FCUVFwcUlBWkJCQkFWSUFGQkRtb2dCa0VFYWtFRUVCVWdBVUVTYWlBQVFmUUFha0VFRUJVZ0FVRVdhaUFBUWZnQWFrRUVFQlVnQVVFYWFpQUFRZXdBYWtFRUVCVWdBVUVlYWlBQVFmQUFha0VFRUJVZ0FVRWlhaUFDUVFJUUZRSkFBa0FDUUNBRktBS2NBU0lDUVlDQUFVMEVRQ0FHSUFJMkFoQWdBaUFKUndSQUlBVWdDVFlDaEFFZ0JTQUNOZ0tBQVNBRFFRRkIzL1FBSUFWQmdBRnFFQk5CQUNFQ0RBVUxJQVlvQWdRaUFpQUdLQUlNSWdkSklBWW9BZ2dpQ3lBR0tBSUFJZ1JMY1VVRVFDQUZJQWV0SUFLdGZUY0RlQ0FGSUF1dElBU3RmVGNEY0NBRFFRRkJxZkVBSUFWQjhBQnFFQk5CQUNFQ0RBVUxJQUFvQW5RaUNFRUFJQUFvQW5naUNodEZCRUFnQlNBS05nSUVJQVVnQ0RZQ0FDQURRUUZCMGZVQUlBVVFFMEVBSVFJTUJRc0NRQUpBSUFBb0Ftd2lEQ0FFU3cwQVFYOGdDQ0FNYWlJSUlBZ2dERWtiSUFSTkRRQWdBQ2dDY0NJSUlBSkxEUUJCZnlBSUlBcHFJZ29nQ0NBS1N4c2dBa3NOQVF0QkFDRUNJQU5CQVVIREZVRUFFQk1NQlFzQ1FDQUFLQUw0QVEwQUlBQW9BdkFCSWdoRkRRQWdBQ2dDOUFFaUNrVU5BQ0FMSUFScklnUWdDRVlnQnlBQ2F5SUNJQXBHY1EwQUlBVWdBallDYkNBRklBUTJBbWdnQlNBS05nSmtJQVVnQ0RZQ1lDQURRUUZCa2UwQUlBVkI0QUJxRUJOQkFDRUNEQVVMSUFZZ0NVRTBFQmNpQkRZQ0dDQUVSUTBCQWtBZ0JpZ0NFRVVOQUNBQlFTUnFJQVZCbUFGcUlnSkJBUkFWSUFRZ0JTZ0NtQUVpQ1VFSGRpSUtOZ0lnSUFRZ0NVSC9BSEZCQVdvaUREWUNHQ0FBS0FMNEFTRUxJQUZCSldvZ0FrRUJFQlVnQkNBRktBS1lBVFlDQUNBQlFTWnFJQUpCQVJBVklBUWdCU2dDbUFFaUJ6WUNCRUVBSVFJZ0JDZ0NBQ0lJUVlBQ2EwR0Jma2tFUUVFQUlRa01CUXRCQUNFSklBZEJnQUpyUVlGK1NRMEVJQVFvQWhnaUIwRWZTdzBESUFSQkFEWUNKQ0FFSUFBb0FyZ0JOZ0lvUVFFaENTQUdLQUlRUVFGTkRRQkJBQ0FLSUFzYklRcEJBQ0FNSUFzYklRc2dBVUVuYWlFQkEwQWdBU0FGUVpnQmFrRUJFQlVnQkNBRktBS1lBU0lJUVFkMklnYzJBbFFnQkNBSVFmOEFjVUVCYWlJSU5nSk1Ba0FnQUNnQytBRU5BQ0FBTFFEVUFVRUVjUTBBSUFnZ0MwWWdCeUFLUm5FTkFDQUZJQWMyQWxRZ0JTQUlOZ0pRSUFVZ0NUWUNUQ0FGSUFvMkFrZ2dCU0FMTmdKRUlBVWdDVFlDUUNBRFFRSkJsZk1BSUFWQlFHc1FFd3NnQVVFQmFpQUZRWmdCYWlJSFFRRVFGU0FFSUFVb0FwZ0JOZ0kwSUFGQkFtb2dCMEVCRUJVZ0JDQUZLQUtZQVNJSE5nSTRJQVFvQWpRaUNFR0FBbXRCZ1g1SkRRVWdCMEdBQW10QmdINU5EUVVnQkNnQ1RDSUhRU0JQRFFRZ0FVRURhaUVCSUFSQkFEWUNXQ0FFSUFBb0FyZ0JOZ0pjSUFSQk5Hb2hCQ0FKUVFGcUlna2dCaWdDRUVrTkFBc0xRUUFoQWlBQUtBSjBJZ2RGRFFRZ0FDZ0NlQ0lMUlEwRUlBQWdCNjBpRFVJQmZTSVBJQVlvQWdnZ0FDZ0NiQ0lJYTYxOElBMkFweUlCTmdLQUFTQUFJQXV0SWc1Q0FYMGlFQ0FHS0FJTUlBQW9BbkFpQ211dGZDQU9nS2NpQkRZQ2hBRUNRQUpBSUFGRkRRQWdCRVVOQUVILy93TWdCRzRnQVU4TkFRc2dCU0FFTmdJVUlBVWdBVFlDRUNBRFFRRkJnKzRBSUFWQkVHb1FFd3dGQ3lBQklBUnNJUWtDUUNBQUxRQmNRUUp4QkVBZ0FDQUFLQUljSUFocklBZHVOZ0ljSUFBZ0FDZ0NJQ0FLYXlBTGJqWUNJQ0FBSUE4Z0FDZ0NKQ0FJYTYxOElBMkFQZ0lrSUFBZ0VDQUFLQUlvSUFwcnJYd2dEb0ErQWlnTUFRc2dBQ0FFTmdJb0lBQWdBVFlDSkNBQVFnQTNBaHdMSUFBZ0NVR01MQkFYSWdFMkFyUUJJQUZGQkVBZ0EwRUJRYm9lUVFBUUV3d0ZDeUFHS0FJUVFiZ0lFQmNoQVNBQUtBSU1JQUUyQXRBcklBQW9BZ3dvQXRBclJRUkFJQU5CQVVHNkhrRUFFQk1NQlF0QkNrRVVFQmNoQVNBQUtBSU1JQUUyQXZBcklBQW9BZ3dpQVNnQzhDdEZCRUFnQTBFQlFib2VRUUFRRXd3RkN5QUJRUW8yQXZnclFRcEJGQkFYSVFFZ0FDZ0NEQ0FCTmdMOEt5QUFLQUlNSWdFb0F2d3JSUVJBSUFOQkFVRzZIa0VBRUJNTUJRc2dBVUVLTmdLRUxBSkFJQVlvQWhBaUIwVU5BQ0FHS0FJWUlRdEJBQ0VCSUFkQkFVY0VRQ0FIUVg1eElRaEJBQ0VFQTBBZ0N5QUJRVFJzYWlJS0tBSWdSUVJBSUFBb0Fnd29BdEFySUFGQnVBaHNha0VCSUFvb0FoaEJBV3QwTmdLMENBc2dDeUFCUVFGeUlncEJOR3hxSWd3b0FpQkZCRUFnQUNnQ0RDZ0MwQ3NnQ2tHNENHeHFRUUVnRENnQ0dFRUJhM1EyQXJRSUN5QUJRUUpxSVFFZ0JFRUNhaUlFSUFoSERRQUxDeUFIUVFGeFJRMEFJQXNnQVVFMGJHb2lCQ2dDSUEwQUlBQW9BZ3dvQXRBcklBRkJ1QWhzYWtFQklBUW9BaGhCQVd0ME5nSzBDQXNnQ1FSQUlBQW9BclFCSVFGQkFDRUVBMEFnQVNBR0tBSVFRYmdJRUJjaUJ6WUMwQ3NnQjBVRVFDQURRUUZCdWg1QkFCQVREQWNMSUFGQmpDeHFJUUVnQkVFQmFpSUVJQWxKRFFBTEN3Si9JQUFvQXVBQklBQW9Bb1FCSUFBb0FvQUJiQ0lCTmdJa0lBRkJLQkFYSVFFZ0FDZ0M0QUVpQXlBQk5nSW9RUUFnQVVVTkFCcEJBU0FES0FJa1JRMEFHa0VBSVFNRFFBSkFRUUFoQkNBQklBTkJLR3dpQjJvaUFVRUFOZ0lVSUFGQjVBQTJBaHhCNUFCQkdCQVhJUWtnQnlBQUtBTGdBU0lMS0FJb0lnRnFJQWsyQWhnZ0NVVU5BRUVCSVFRZ0EwRUJhaUlESUFzb0FpUkpEUUVMQ3lBRUMwVU5CQ0FBUVFRMkFnZ2dCaWdDRUNJREJFQkJmeUFBS0FKd0lnRWdBQ2dDZUNJQ0lBQW9Bb1FCUVFGcmJHb2lCQ0FDYWlJQ0lBSWdCRWtiSWdJZ0JpZ0NEQ0lFSUFJZ0JFa2JyVUlCZlNFUVFYOGdBQ2dDYkNJQ0lBQW9BblFpQkNBQUtBS0FBVUVCYTJ4cUlnQWdCR29pQkNBQUlBUkxHeUlBSUFZb0FnZ2lCQ0FBSUFSSkc2MUNBWDBoRVNBQklBWW9BZ1FpQUNBQUlBRkpHNjFDQVgwaEVpQUNJQVlvQWdBaUFDQUFJQUpKRzYxQ0FYMGhFeUFHS0FJWUlRQkJBQ0VCQTBBZ0FDQVNJQUExQWdRaURYd2dEWUFpRkQ0Q0ZDQUFJQk1nQURVQ0FDSU9mQ0FPZ0NJVlBnSVFJQUJDZnlBQU5RSW9JZytHUW4rRkloWWdEU0FRZkNBTmdDQVVmVUwvLy8vL0Q0TjhJQStJUGdJTUlBQWdEaUFSZkNBT2dDQVZmVUwvLy8vL0Q0TWdGbndnRDRnK0FnZ2dBRUUwYWlFQUlBRkJBV29pQVNBRFJ3MEFDd3RCQVNFQ0RBUUxJQVVnQWpZQ2tBRWdBMEVCUWRjOUlBVkJrQUZxRUJOQkFDRUNEQU1MUVFBaEFpQUdRUUEyQWhBZ0EwRUJRYm9lUVFBUUV3d0NDeUFGSUFjMkFqUWdCU0FKTmdJd0lBTkJBVUdGK0FBZ0JVRXdhaEFUREFFTElBVWdCellDS0NBRklBZzJBaVFnQlNBSk5nSWdJQU5CQVVIZjd3QWdCVUVnYWhBVEN5QUZRYUFCYWlRQUlBSUxtZ01CQm44akFFRVFheUlHSkFBQ2Z5QUNJQUpCQVVFQ0lBQW9BbUFvQWhBaUNFR0JBa2tiSWdkQkFYUkJCV29pQkc0aUJTQUViRVlnQWlBRVQzRkZCRUFnQTBFQlFmNGpRUUFRRTBFQURBRUxBbjhnQUNnQ0NFRVFSZ1JBSUFBb0FyUUJJQUFvQXVRQlFZd3NiR29NQVFzZ0FDZ0NEQXNoQkVFQUlRQWdCQzBBaUN3aUFrRUVjUVJBSUFRb0FxUURRUUZxSVFBTElBQWdCV29pQlVFZ1R3UkFJQVlnQlRZQ0FDQURRUUZCd0R3Z0JoQVRRUUFNQVFzZ0JDQUNRUVJ5T2dDSUxDQUFJQVZKQkVBZ0JDQUFRWlFCYkdwQnFBTnFJUUlEUUNBQklBSkJBUkFWSUFGQkFXb2lBU0FDUVFScUlBY1FGU0FCSUFkcUlnRWdBa0VJYWtFQ0VCVWdBaUFDS0FJSUlnTWdCQ2dDQ0NJSklBTWdDVWtiTmdJSUlBRkJBbW9nQWtFTWFrRUJFQlVnQVVFRGFpSUJJQUpCRUdvZ0J4QVZJQUVnQjJvaUFTQUdRUXhxUVFFUUZTQUNJQVlvQWd3MkFpUWdBaUFDS0FJUUlnTWdDQ0FESUFoSkd6WUNFQ0FDUVpRQmFpRUNJQUZCQVdvaEFTQUFRUUZxSWdBZ0JVY05BQXNMSUFRZ0JVRUJhellDcEFOQkFRc2dCa0VRYWlRQUMrZ0JBUU4vSXdCQkVHc2lCQ1FBQW44Q1FDQUJJQVJCQ0dvQ2Z5QUFLQUpnS0FJUVFZQUNUUVJBSUFJRVFFRi9JUVZCQVF3Q0N5QURRUUZCc2lSQkFCQVRRUUFNQXdzZ0FrRUJUUTBCUVg0aEJVRUNDeUlHRUJVZ0JDQUNJQVZxTmdJTUlBUW9BZ2dpQWlBQUtBSmdLQUlRSWdWUEJFQWdCQ0FGTmdJRUlBUWdBallDQUNBRFFRRkIrenNnQkJBVFFRQU1BZ3NnQUNBQ0lBRWdCbW9nQkVFTWFpQURFRXRGQkVBZ0EwRUJRYklrUVFBUUUwRUFEQUlMUVFFZ0JDZ0NERVVOQVJvZ0EwRUJRYklrUVFBUUUwRUFEQUVMSUFOQkFVR3lKRUVBRUJOQkFBc2dCRUVRYWlRQUM5VUJBUU4vSXdCQkVHc2lCQ1FBSUFRZ0FqWUNEQUpBQWtBZ0FFRUFJQUVnQkVFTWFpQURFRXRGRFFBZ0JDZ0NEQTBBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREF0QkFTRUZJQUFvQW1Bb0FoQkJBa2tOQVNnQzBDc2lBa0VjYWlFR1FRRWhBU0FDSVFNRFFDQURJQUlvQWhnMkF0QUlJQU1nQWlnQ3BBWTJBdHdPSUFOQjFBaHFJQVpCaUFZUUZob2dBMEc0Q0dvaEF5QUJRUUZxSWdFZ0FDZ0NZQ2dDRUVrTkFBc01BUXNnQTBFQlFjb2pRUUFRRXdzZ0JFRVFhaVFBSUFVTDFnRUJBMzhqQUVFUWF5SUVKQUFDUUNBQ1FRRkJBaUFBS0FKZ0tBSVFJZ0pCZ1FKSkd5SUZRUUpxUndSQVFRQWhBQ0FEUVFGQm1DRkJBQkFUREFFTEFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXJRQklBQW9BdVFCUVl3c2JHb01BUXNnQUNnQ0RBc2hCaUFCSUFSQkRHb2dCUkFWUVFFaEFDQUJJQVZxSWdVZ0JFRUlha0VCRUJVZ0FpQUVLQUlNSWdGTkJFQWdCQ0FDTmdJRUlBUWdBVFlDQUNBRFFRRkJwdlFBSUFRUUUwRUFJUUFNQVFzZ0JVRUJhaUFHS0FMUUt5QUJRYmdJYkdwQnFBWnFRUUVRRlFzZ0JFRVFhaVFBSUFBTGhBSUJCWDhqQUVFUWF5SUVKQUFDZnlBQUtBSUlRUkJHQkVBZ0FDZ0N0QUVnQUNnQzVBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFR0FrQkJBVUVDSUFBb0FtQWlCeWdDRUVHQkFra2JJZ1VnQWs4RVFFRUFJUUlnQTBFQlFaZ2tRUUFRRXd3QkN5QUVJQUlnQlVGL2MybzJBZ3dnQVNBRVFRaHFJQVVRRlNBRUtBSUlJZ2dnQnlnQ0VFOEVRRUVBSVFJZ0EwRUJRYzd0QUVFQUVCTU1BUXRCQVNFQ0lBRWdCV29pQVNBR0tBTFFLeUFJUWJnSWJHcEJBUkFWSUFBZ0JDZ0NDQ0FCUVFGcUlBUkJER29nQXhCTVJRUkFRUUFoQWlBRFFRRkJtQ1JCQUJBVERBRUxJQVFvQWd4RkRRQkJBQ0VDSUFOQkFVR1lKRUVBRUJNTElBUkJFR29rQUNBQ0M2d0dBUWQvSXdCQkVHc2lCaVFBSUFZZ0FqWUNEQ0FBS0FKZ0lRa0NmeUFBS0FJSVFSQkdCRUFnQUNnQ3RBRWdBQ2dDNUFGQmpDeHNhZ3dCQ3lBQUtBSU1DeUlFSUFRdEFJZ3NRUUZ5T2dDSUxBSkFJQUpCQkUwRVFDQURRUUZCc0NOQkFCQVREQUVMSUFFZ0JFRUJFQlVnQkNnQ0FFRUlUd1JBSUFOQkFVR09JMEVBRUJNTUFRc2dBVUVCYWlBR1FRaHFRUUVRRlNBRUlBWW9BZ2dpQWpZQ0JDQUNRUVZPQkVBZ0EwRUJRZVVpUVFBUUV5QUVRWDgyQWdRTElBRkJBbW9nQkVFSWFrRUNFQlVnQkNnQ0NDSUhRWUNBQkd0QmdJQjhUUVJBSUFZZ0J6WUNBQ0FEUVFGQmlqOGdCaEFUREFFTElBUWdBQ2dDdkFFaUFpQUhJQUliTmdJTUlBRkJCR29nQkVFUWFrRUJFQlVnQkNnQ0VFRUNUd1JBSUFOQkFVSDdLa0VBRUJNTUFRc2dBVUVGYWlFQ0lBWWdCaWdDREVFRmF6WUNEQUpBSUFrb0FoQWlCMFVOQUNBRUtBSUFRUUZ4SVFnZ0JDZ0MwQ3NoQkVFQUlRa2dCMEVJVHdSQUlBZEJlSEVoQVFOQUlBUWdCVUc0Q0d4cUlBZzJBZ0FnQkNBRlFRRnlRYmdJYkdvZ0NEWUNBQ0FFSUFWQkFuSkJ1QWhzYWlBSU5nSUFJQVFnQlVFRGNrRzRDR3hxSUFnMkFnQWdCQ0FGUVFSeVFiZ0liR29nQ0RZQ0FDQUVJQVZCQlhKQnVBaHNhaUFJTmdJQUlBUWdCVUVHY2tHNENHeHFJQWcyQWdBZ0JDQUZRUWR5UWJnSWJHb2dDRFlDQUNBRlFRaHFJUVVnQ2tFSWFpSUtJQUZIRFFBTEN5QUhRUWR4SWdGRkRRQURRQ0FFSUFWQnVBaHNhaUFJTmdJQUlBVkJBV29oQlNBSlFRRnFJZ2tnQVVjTkFBc0xRUUFoQlNBQVFRQWdBaUFHUVF4cUlBTVFURVVFUUNBRFFRRkJzQ05CQUJBVERBRUxJQVlvQWd3RVFDQURRUUZCc0NOQkFCQVREQUVMQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEFTQUFLQUpnS0FJUVFRSlBCRUFnQVNnQzBDc2lBU2dDQkVFQ2RDRUhJQUZCc0FkcUlRb2dBVUdzQm1vaEEwRUJJUWtnQVNFQ0EwQWdBaUFCL1FBQ0JQMExBcndJSUFJZ0FTZ0NGRFlDekFnZ0FrSGtEbW9nQXlBSEVCWWFJQUpCNkE5cUlBb2dCeEFXR2lBQ1FiZ0lhaUVDSUFsQkFXb2lDU0FBS0FKZ0tBSVFTUTBBQ3d0QkFTRUZDeUFHUVJCcUpBQWdCUXZyQ2dFR2Z5TUFRWUFCYXlJRkpBQWdCVUVBTmdKNEFrQWdBa0VJUndSQUlBTkJBVUdxSDBFQUVCTWdBMEVCUWFvZlFRQVFFd3dCQ3lBQklBQkI1QUZxUVFJUUZTQUJRUUpxSUFWQi9BQnFRUVFRRlNBQlFRWnFJQVZCOUFCcVFRRVFGU0FCUVFkcUlBVkIrQUJxUVFFUUZTQUFLQUxrQVNJQklBQW9Bb0FCSWdnZ0FDZ0NoQUZzVHdSQUlBVWdBVFlDY0NBRFFRRkIvandnQlVId0FHb1FFd3dCQ3lBQUtBSzBBU0FCUVl3c2JHb2hBaUFCSUFodUlRY2dCU2dDZENFRUFrQWdBQ2dDTENJR1FRQk9JQUVnQmtkeERRQWdBaWdDMUN0QkFXb2lCaUFFUmcwQUlBVWdCallDYUNBRklBUTJBbVFnQlNBQk5nSmdJQU5CQVVHV1BTQUZRZUFBYWhBVFFRQWhCQXdCQ3lBQ0lBUTJBdFFyQWtBZ0JTZ0NmQ0lFUVFGclFReE5CSDhnQkVFTVJ3MEJJQVZCRERZQ1FDQURRUUpCczl3QUlBVkJRR3NRRXlBRktBSjhCU0FFQzBVRVFDQURRUVJCb3RNQVFRQVFFeUFBUVFFMkFqZ0xBa0FDUUFKQUFrQWdBaWdDMkNzaUJnUkFJQVVvQW5RaUJDQUdTUTBCSUFVZ0JqWUNOQ0FGSUFRMkFqQWdBMEVCUWZrbklBVkJNR29RRXlBQVFRRTJBamhCQUNFRURBWUxJQVVvQW5naUJBMEJEQU1MSUFVb0FuZ2lCRVVOQVFzZ0JTQUVJQUF0QUZ4QkJIWkJBWEZxSWdZMkFuZ2dCU2dDZENJRUlBSW9BdGdySWdsQkFXdExCRUFnQlNBSk5nSVVJQVVnQkRZQ0VDQURRUUZCbGljZ0JVRVFhaEFUSUFCQkFUWUNPRUVBSVFRTUJBc2dCQ0FHVHdSQUlBVWdCallDSkNBRklBUTJBaUFnQTBFQlFkMG9JQVZCSUdvUUV5QUFRUUUyQWpoQkFDRUVEQVFMSUFJZ0JqWUMyQ3NMSUFZZ0JTZ0NkRUVCYWtjTkFDQUFJQUF0QUZ4QkFYSTZBRndMSUFVb0Fud2hBaUFBUVJBMkFnZ2dBRUVBSUFKQkRHc2dBQ2dDT0JzMkFoZ0NRQ0FBS0FJc0lnSkJmMFlFUUVFRUlRUUNRQ0FCSUFjZ0NHeHJJZ0VnQUNnQ0hFa05BQ0FCSUFBb0FpUlBEUUFnQnlBQUtBSWdTUTBBSUFjZ0FDZ0NLRTlCQW5RaEJBc2dBQ0FBTFFCY1Fmc0JjU0FFY2pvQVhDQUFLQUxrQVNFQkRBRUxJQUFnQUMwQVhFSDdBWEVnQUNnQzVBRWlBU0FDUjBFQ2RISTZBRndMSUFBb0F1QUJLQUlvSUFGQktHeHFJZ0lnQVRZQ0FDQUNJQVVvQW5RMkFnd2dCU2dDZUNFRUlBQW9Ba3hGQkVBZ0FpZ0NCQ0FFVHdSQVFRRWhCQXdEQ3lBRklBRTJBZ0FnQTBFQ1FhY01JQVVRRXlBQVFRRTJBa3dnQlNnQ2VDRUVDeUFBS0FMa0FTRUJJQUFvQXVBQktBSW9JUUlnQkFSQUlBSWdBVUVvYkdvaUFTQUVOZ0lFSUFFZ0JTZ0NlQ0lDTmdJSUlBRW9BaEFpQVVVRVFDQUNRUmdRRnlFQklBQW9BdUFCS0FJb0lBQW9BdVFCUVNoc2FpQUJOZ0lRSUFFRVFFRUJJUVFNQkF0QkFDRUVJQU5CQVVIK05VRUFFQk1NQXdzZ0FTQUNRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0RDeUFDSUFFMkFoQkJBU0VFREFJTEFrQWdBaUFCUVNoc2FpSUVLQUlRSWdZTkFDQUVRUW8yQWdoQkNrRVlFQmNoQmlBQUtBTGdBU2dDS0NJQ0lBQW9BdVFCSWdGQktHeHFJQVkyQWhBZ0JnMEFRUUFoQkNBQ0lBRkJLR3hxUVFBMkFnZ2dBMEVCUWY0MVFRQVFFd3dDQ3lBRktBSjBJZ2NnQWlBQlFTaHNhaUlCS0FJSVNRUkFRUUVoQkF3Q0MwRUJJUVFnQVNBSFFRRnFJZ0UyQWdnZ0JpQUJRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFJZ0JCQURZQ0NDQUFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0NDeUFDSUFFMkFoQU1BUXNnQlNBRU5nSlFJQU5CQVVIQTNnQWdCVUhRQUdvUUUwRUFJUVFMSUFWQmdBRnFKQUFnQkF2YUJnRUlmeU1BUWRBQWF5SURKQUFnQTBFQk5nSk1JQUFvQWl3aENRSkFBa0FnQUNnQzRBRW9BaWdpQkVVTkFDQUVLQUlRUlEwQUFrQWdCQ0FKUVNoc2FpSUVLQUlFUlFSQUlBRWdBQ2tETUVJQ2ZDQUNFREFOQVNBQ1FRRkJteXBCQUJBVERBTUxJQUVnQkNnQ0VDa0RBQ0FDRURCRkJFQWdBa0VCUVpzcVFRQVFFd3dEQ3lBQklBQW9BaEJCQWlBQ0VCMUJBa2NFUUNBQ1FRRkJneE5CQUJBVERBTUxJQUFvQWhBZ0EwSElBR3BCQWhBVklBTW9Ba2hCa1A4RFJnMEFJQUpCQVVIRUgwRUFFQk1NQWdzZ0FDZ0NDRUdBQWtjTkFDQUFRUWcyQWdnTEFrQWdBQ2dDaEFFZ0FDZ0NnQUZzSWdkRkRRQWdBQ2dDdEFFaEJVRUFJUVFnQjBFSVR3UkFJQWRCZUhFaENBTkFJQVVnQkVHTUxHeHFRWDgyQXRRcklBVWdCRUVCY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVDY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVEY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVFY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVGY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVHY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVIY2tHTUxHeHFRWDgyQXRRcklBUkJDR29oQkNBS1FRaHFJZ29nQ0VjTkFBc0xJQWRCQjNFaUIwVU5BQU5BSUFVZ0JFR01MR3hxUVg4MkF0UXJJQVJCQVdvaEJDQUdRUUZxSWdZZ0IwY05BQXNMUVFBaEJpQUFJQU5CeUFCcVFRQWdBMEhFQUdvZ0EwRkFheUFEUVR4cUlBTkJPR29nQTBFMGFpQURRY3dBYWlBQklBSVFMRVVOQUNBSlFRRnFJUWNEUUFKQUlBTW9Ba3hGRFFBZ0FDQURLQUpJSWdSQkFFRUFJQUVnQWhBeFJRMENJQUFvQW9BQklRZ2dBQ2dDaEFFaENpQURJQVJCQVdvaUJUWUNJQ0FESUFnZ0NtdzJBaVFnQWtFRVFlN2JBQ0FEUVNCcUVCTWdBQ2dDNkFFZ0FDZ0NaQ2dDR0JDQUFVVU5BaUFBS0FLMEFTQUVRWXdzYkdvaUJpZ0MzQ3NpQ0FSQUlBZ1FGQ0FHUWdBM0F0d3JDeUFESUFVMkFoQWdBa0VFUWJTQkFTQURRUkJxRUJNZ0JDQUpSZ1JBSUFFZ0FDZ0M0QUVwQXdoQ0Fud2dBaEF3RFFGQkFDRUdJQUpCQVVHYktrRUFFQk1NQXdzZ0F5QUhOZ0lFSUFNZ0JUWUNBQ0FDUVFKQnErb0FJQU1RRTBFQUlRWWdBQ0FEUWNnQWFrRUFJQU5CeEFCcUlBTkJRR3NnQTBFOGFpQURRVGhxSUFOQk5Hb2dBMEhNQUdvZ0FTQUNFQ3dOQVF3Q0N3c2dBQ0FDRUg4aEJnc2dBMEhRQUdva0FDQUdDNFlVQXc1L0FuNEJleU1BUWRBQWF5SUpKQUFnQ1VFQk5nSk1Ba0FDUUNBQUtBS0FBVUVCUncwQUlBQW9Bb1FCUVFGSERRQWdBQ2dDYkEwQUlBQW9BbkFOQUNBQUtBSmtJZ01vQWdBTkFDQURLQUlFRFFBZ0F5Z0NDQ0FBS0FKMFJ3MEFJQU1vQWd3Z0FDZ0NlRWNOQUVFQUlRTWdBQ0FKUWNnQWFrRUFJQWxCeEFCcUlBbEJRR3NnQ1VFOGFpQUpRVGhxSUFsQk5Hb2dDVUhNQUdvZ0FTQUNFQ3hGRFFFQ1FBSkFJQWtvQWt4RkRRQWdBQ0FKS0FKSVFRQkJBQ0FCSUFJUU1VVU5BQ0FBS0FKa0lnRW9BaEFOQVVFQklRTU1Bd3NnQWtFQlFhUEVBRUVBRUJNTUFnc2dBU2dDR0NFRkEwQWdCU0FFUVRSc0lnRnFLQUlzRUJRZ0FDZ0NaQ0lDS0FJWUlnVWdBV29pQXlBQUtBTG9BU0lIS0FJVUtBSUFLQUlVSUFSQnpBQnNhaUlHS0FJa05nSXNJQU1nQnlnQ0dDZ0NHQ0FCYWlnQ0pEWUNKQ0FHUVFBMkFpUkJBU0VESUFSQkFXb2lCQ0FDS0FJUVNRMEFDd3dCQ3lBQVFnQTNBMUFnQUNnQ1dCQVVJQUJCQURZQ1dBSkFBa0FnQUNnQ0hBMEFJQUFvQWlBTkFDQUFLQUlrSUFBb0FvQUJSdzBBUWdJaEVTQUFLQUlvSUFBb0FvUUJSZzBCQzBJQ0lSRWdBQ2dDVEEwQUlBRW9BaHhCQWtZTkFDQUFLQUtBQVNJTklBQW9Bb1FCYkNJREJINGdBMEVCY1NFRUlBQW9BdUFCS0FJb0lRY0NRQ0FEUVFGR0JFQkJBQ0VEUWdBaEVRd0JDeUFEUVg1eElRWkJBQ0VEUWdBaEVRTkFJQWNnQTBFb2JHb2lDQ2dDQkNJS0JFQWdDQ2dDRUNBS1FSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnQnlBRFFRRnlRU2hzYWlJSUtBSUVJZ29FUUNBSUtBSVFJQXBCR0d4cVFRaHJLUU1BSWhJZ0VTQVJJQkpUR3lFUkN5QURRUUpxSVFNZ0JVRUNhaUlGSUFaSERRQUxDd0pBSUFSRkRRQWdCeUFEUVNoc2FpSURLQUlFSWdWRkRRQWdBeWdDRUNBRlFSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnRVVJQ2ZBVkNBZ3NoRVVFQUlRUUNRQ0FBS0FJZ0lnWWdBQ2dDS0NJT1R3MEFJQUFvQWlRaUNDQUFLQUljSWdWTkRRQWdCU0FJSUFWcklncEJmSEVpQzJvaEJ5QUFLQUxnQVNnQ0tDRVBJQXBCQkVraEVBTkFJQThnQmlBTmJFRW9iR29oREFKQUFrQWdFQVJBSUFVaEF3d0JDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFL1J3QUlSTkJBQ0VFQTBBZ0RDQUVJQVZxUVNoc2FpSURRZndBYWlBRFFkUUFhaUFEUVN4cUlBTkJCR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FESUJQOXJnRWhFeUFFUVFScUlnUWdDMGNOQUFzZ0V5QVRJQlA5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5cmdFaUV5QVRJQlA5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5cmdIOUd3QWhCQ0FISVFNZ0NpQUxSZzBCQ3dOQUlBd2dBMEVvYkdvb0FnUWdCR29oQkNBRFFRRnFJZ01nQ0VjTkFBc0xJQVpCQVdvaUJpQU9SdzBBQ3dzZ0FDQUVRUU4wRUJnaUJ6WUNXQ0FFUlEwQUlBZEZEUUJCQUNFRUFrQWdBQ2dDSUNJR0lBQW9BaWdpQTA4TkFDQUFLQUlrSWdVZ0FDZ0NIRTBOQUFOQUlBVWdBQ2dDSENJSFN3UkFJQUFvQXVBQktBSW9JQUFvQW9BQklBWnNRU2hzYWlFTkEwQWdEU0FIUVNoc2FpSUlLQUlFSWdNRVFDQURRUU54SVFvZ0NDZ0NFQ0VGUVFBaEN3SkFJQU5CQkVrRVFFRUFJUU1NQVFzZ0EwRjhjU0VPUVFBaEEwRUFJUXdEUUNBRVFRTjBJZ2dnQUNnQ1dHb2dCU0FEUVJoc2Fpa0RBRGNEQUNBQUtBSllJQWhxSUFVZ0EwRUJja0VZYkdvcEF3QTNBd2dnQUNnQ1dDQUlhaUFGSUFOQkFuSkJHR3hxS1FNQU53TVFJQUFvQWxnZ0NHb2dCU0FEUVFOeVFSaHNhaWtEQURjREdDQURRUVJxSVFNZ0JFRUVhaUVFSUF4QkJHb2lEQ0FPUncwQUN3c2dDZ1JBQTBBZ0FDZ0NXQ0FFUVFOMGFpQUZJQU5CR0d4cUtRTUFOd01BSUFOQkFXb2hBeUFFUVFGcUlRUWdDMEVCYWlJTElBcEhEUUFMQ3lBQUtBSWtJUVVMSUFkQkFXb2lCeUFGU1EwQUN5QUFLQUlvSVFNTElBWkJBV29pQmlBRFNRMEFDeUFBS0FKWUlRY0xJQUFnQkRZQ1ZDTUFRZEFCYXlJR0pBQWdCa0lCTndNSUFrQWdCRUVEZENJS1JRMEFJQVpCQ0RZQ0VDQUdRUWcyQWhSQkNDSUZJUVJCQWlFSUEwQWdCa0VRYWlBSVFRSjBhaUFGSWdNZ0JFRUlhbW9pQlRZQ0FDQUlRUUZxSVFnZ0F5RUVJQVVnQ2trTkFBc0NmeUFISUFwcVFRaHJJZ01nQjAwRVFFRUJJUWhCQVNFRlFRQU1BUXRCQVNFSVFRRWhCUU5BQW44Z0NFRURjVUVEUmdSQUlBY2dCU0FHUVJCcUVFUWdCa0VJYWtFQ0VEd2dCVUVDYWd3QkN3SkFJQVpCRUdvaUJDQUZRUUZySWdwQkFuUnFLQUlBSUFNZ0IydFBCRUFnQnlBSUlBWW9BZ3dnQlVFQUlBUVFPd3dCQ3lBSElBVWdCa0VRYWhCRUN5QUZRUUZHQkVBZ0JrRUlha0VCRURwQkFBd0JDeUFHUVFocUlBb1FPa0VCQ3lFRklBWWdCaWdDQ0VFQmNpSUlOZ0lJSUFkQkNHb2lCeUFEU1EwQUN5QUdLQUlNQ3lFRElBY2dDQ0FESUFWQkFDQUdRUkJxRURzZ0JpZ0NEQ0VFSUFZb0FnZ2hDQUpBSUFWQkFVY05BQ0FJUVFGSERRQWdCRVVOQVFzRFFBSi9JQVZCQVV3RVFDQUdRUWhxSUFnZ0JCQjNJZ01RUENBRElBVnFEQUVMSUFaQkNHb2lBMEVDRURvZ0JpQUdLQUlJUVFkek5nSUlJQU5CQVJBOElBZEJDR3NpQ2lBR1FSQnFJZ1FnQlVFQ2F5SUlRUUowYWlnQ0FHc2dCaWdDQ0NBR0tBSU1JQVZCQVd0QkFTQUVFRHNnQTBFQkVEb2dCaUFHS0FJSVFRRnlJZ00yQWdnZ0NpQURJQVlvQWd3Z0NFRUJJQVFRT3lBSUN5RUZJQWRCQ0dzaEJ5QUdLQUlNSVFRZ0JpZ0NDQ0VJSUFWQkFVY05BQ0FJUVFGSERRQWdCQTBBQ3dzZ0JrSFFBV29rQUFzZ0FDZ0NnQUVoQTBFQUlRVUNRQU5BQW44Q1FDQURRUUZIRFFBZ0FDZ0NoQUZCQVVjTkFDQUFLQUswQVNnQzNDdEZEUUFnQ1VFQU5nSklJQUJCQURZQzVBRWdBQ0FBS0FJSVFZQUJjallDQ0VFQURBRUxRUUFoQXlBQUlBbEJ5QUJxUVFBZ0NVSEVBR29nQ1VGQWF5QUpRVHhxSUFsQk9Hb2dDVUUwYWlBSlFjd0FhaUFCSUFJUUxFVU5BeUFKS0FKTVJRMENJQWtvQWtnTElnWkJBV29oQXlBQUlBWkJBRUVBSUFFZ0FoQXhJQUFvQW9BQklBQW9Bb1FCYkNFSFJRUkFJQWtnQnpZQ0JDQUpJQU0yQWdBZ0FrRUJRY3c2SUFrUUUwRUFJUU1NQXdzZ0NTQUhOZ0lrSUFrZ0F6WUNJQ0FDUVFSQjd0c0FJQWxCSUdvUUV5QUFLQUxvQVNBQUtBSmtLQUlZRUlBQlJRUkFRUUFoQXd3REN3SkFBa0FnQUNnQ2dBRkJBVWNOQUNBQUtBS0VBVUVCUncwQUlBQW9BbVFpQnlnQ0FDQUFLQUpnSWdRb0FnQkhEUUVnQnlnQ0JDQUVLQUlFUncwQklBY29BZ2dnQkNnQ0NFY05BU0FIS0FJTUlBUW9BZ3hIRFFFTElBQW9BclFCSUFaQmpDeHNhaUlIS0FMY0t5SUVSUTBBSUFRUUZDQUhRZ0EzQXR3ckN5QUpJQU0yQWhBZ0FrRUVRYlNCQVNBSlFSQnFFQk1nQVNrRENDSVNVQVIrUWdBRklCSWdBU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUlMSUFWQkFXb2lCU0FBS0FLQUFTSURJQUFvQW9RQmJFWU5BU0FBS0FKVUlnZEZEUUFnQUNnQ1VDQUhSdzBBQ3lBQklCRWdBaUFCS0FJc0VRd0FHZ3NnQUNBQ0VIOGhBd3NnQ1VIUUFHb2tBQ0FEQzdjR0FReC9JQUFvQW1BaENRSkFJQUFvQW9BQklBQW9Bb1FCYkNJTUJFQWdDU2dDRUNJQlFiZ0liQ0VOSUFFZ0FXeEJBblFoQ2lBQUtBSU1JUVFnQUNnQ3RBRWhBd05BSUFNb0F0QXJJUXNnQXlBRVFZd3NFQllpQVVFQU5nTG9LeUFCUVg4MkF0UXJJQUZCQURZQ3NDZ2dBVUVBTmdLRUxDQUJRUUEyQXZBcklBRkNBRGNDK0NzZ0FTQUxOZ0xRS3lBQklBRXRBSWdzUWZ3QmNUb0FpQ3dnQkNnQzZDc0VRQ0FCSUFvUUdDSUROZ0xvS3lBRFJRUkFRUUFQQ3lBRElBUW9BdWdySUFvUUZob0xJQUVnQkNnQytDdEJGR3dpQlJBWUlnTTJBdkFyUVFBaENDQURSUTBDSUFNZ0JDZ0M4Q3NnQlJBV0dpQUVLQUwwS3lJR0JFQWdCQ2dDOENzaEF5QUJLQUx3S3lFRlFRQWhCd05BSUFNb0Fnd0VRQ0FGSUFNb0FoQVFHQ0lHTmdJTUlBWkZCRUJCQUE4TElBWWdBeWdDRENBREtBSVFFQllhSUFRb0F2UXJJUVlMSUFFZ0FTZ0MrQ3RCQVdvMkF2Z3JJQVZCRkdvaEJTQURRUlJxSVFNZ0IwRUJhaUlISUFaSkRRQUxDeUFCSUFRb0FvUXNRUlJzSWdVUUdDSUROZ0w4S3lBRFJRMENJQU1nQkNnQy9Dc2dCUkFXR2lBQklBUW9Bb1FzSWdnMkFvUXNJQWdFUUNBRUtBTDhLeUVESUFFb0F2d3JJUVZCQUNFSEEwQWdBeWdDQ0NJR0JFQWdCU0FCS0FMd0t5QUdJQVFvQXZBcmEybzJBZ2dMSUFNb0Fnd2lCZ1JBSUFVZ0FTZ0M4Q3NnQmlBRUtBTHdLMnRxTmdJTUN5QUZRUlJxSVFVZ0EwRVVhaUVESUFkQkFXb2lCeUFJUncwQUN3c2dDeUFFS0FMUUt5QU5FQllhSUFGQmpDeHFJUU1nRGtFQmFpSU9JQXhIRFFBTEMwRUJJUWdnQUFKL1FRQkJBVUhJQUJBWElnRkZEUUFhSUFFZ0FTMEFLRUgrQVhGQkFYSTZBQ2dnQVVFQlFRUVFGeUlFTmdJVUlBRWdCQTBBR2lBQkVCUkJBQXNpQVRZQzZBRWdBVVVFUUVFQUR3c2dBQ2dDN0FFaEJVRUFJUVFnQVNBQVFlZ0FhallDSENBQklBazJBaGhCQVVIUUJoQVhJUU1nQVNnQ0ZDQUROZ0lBQWtBZ0EwVU5BQ0FKS0FJUVFjd0FFQmNoQXlBQktBSVVLQUlBSWdjZ0F6WUNGQ0FEUlEwQUlBY2dDU2dDRURZQ0VDQUFLQUs4QVNFRUlBRWdCVFlDTENBQklBUTJBZ0JCQVNFRUN5QUVEUUFnQUNnQzZBRVFYa0VBSVFnZ0FFRUFOZ0xvQVNBQ1FRRkJyeHhCQUJBVEN5QUlDNVFYQXd0L0FYNEJmU01BUVRCcklnb2tBQ0FBUVFFMkFnZ0Nmd0pBQWtBZ0FTQUtRU2hxSWdOQkFpQUNFQjFCQWtjTkFDQURJQXBCTEdwQkFoQVZJQW9vQWl4QnovNERSdzBBSUFCQkFqWUNDQ0FBS0FMZ0FTQUJLUU00UWdKOUlnNDNBd0FnQ2lBT053TVFJQUpCQkVHODR3QWdDa0VRYWhBVElBQW9BdUFCSWdjcEF3QWhEaUFIS0FJWUlnVkJBV29pQXlBSEtBSWdJZ1JOQkVBZ0J5Z0NIQ0VFREFJTElBY0NmeUFFczBNQUFNaENraUlQUXdBQWdFOWRJQTlEQUFBQUFHQnhCRUFnRDZrTUFRdEJBQXNpQXpZQ0lDQUhLQUljSUFOQkdHd1FHeUlFQkVBZ0J5QUVOZ0ljSUFjb0FoZ2lCVUVCYWlFRERBSUxJQWNvQWh3UUZDQUhRUUEyQWlBZ0IwSUFOd01ZSUFKQkFVR1dIa0VBRUJNTElBSkJBVUdEK2dCQkFCQVRRUUFNQVFzZ0JDQUZRUmhzYWlJRVFRSTJBaEFnQkNBT3hEY0RDQ0FFUWMvK0F6c0JBQ0FISUFNMkFoZ2dBU0FBS0FJUVFRSWdBaEFkUVFKSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFFTElBQW9BaEFnQ2tFb2FrRUNFQlVDUUFKQUlBb29BaWdpQkVHUS93TkhCRUFEUUVHZ3dnRWhCU0FFUWYvOUEwMEVRQ0FLSUFRMkFnQWdBa0VCUWJjUklBb1FFMEVBREFVTEEwQWdCU0lES0FJQUlnY0VRQ0FEUVF4cUlRVWdCQ0FIUncwQkN3c0NRQUpBSUFjTkFFRUNJUVlnQWtFQ1FlSWRRUUFRRTBHREV5RUZBa0FDUUNBQklBQW9BaEJCQWlBQ0VCMUJBa2NOQUFOQUlBQW9BaEFnQ2tFc2FrRUNFQlZCb01JQklRY2dDaWdDTENJRVFZRCtBMDhFUUFOQUlBY2lBeWdDQUNJSUJFQWdBMEVNYWlFSElBUWdDRWNOQVFzTElBTW9BZ1FnQUNnQ0NIRkZCRUJCOENraEJRd0RDeUFJQkVBZ0NFR1Evd05HQkVBZ0NrR1Evd00yQWlnTUJ3c2dBU2tET0NFT0lBQW9BdUFCSWdjb0FoZ2lBMEVCYWlJRUlBY29BaUFpQlUwRVFDQUhLQUljSVFVTUJRc2dCd0ovSUFXelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRE5nSWdJQWNvQWh3Z0EwRVliQkFiSWdVRVFDQUhJQVUyQWh3Z0J5Z0NHQ0lEUVFGcUlRUU1CUXNnQnlnQ0hCQVVJQWRCQURZQ0lDQUhRZ0EzQXhoQmxoNGhCUXdEQ3lBR1FRSnFJUVlMSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSZzBBQ3dzZ0FrRUJJQVZCQUJBVElBSkJBVUhTekFCQkFCQVRRUUFNQndzZ0JTQURRUmhzYWlJRElBWTJBaEFnQXlBT3B5QUdhNnczQXdnZ0EwRUFPd0VBSUFjZ0JEWUNHQ0FLSUFnMkFpaEJvTUlCSVFRRFFDQUVJZ01vQWdBaUIwVU5BU0FEUVF4cUlRUWdCeUFJUncwQUN3c2dBeWdDQkNBQUtBSUljVVVFUUNBQ1FRRkI4Q2xCQUJBVFFRQU1CZ3NnQVNBQUtBSVFRUUlnQWhBZFFRSkhCRUFnQWtFQlFZTVRRUUFRRTBFQURBWUxJQUFvQWhBZ0NrRWtha0VDRUJVZ0NpZ0NKQ0lFUVFGTkJFQWdBa0VCUVpVdlFRQVFFMEVBREFZTElBb2dCRUVDYXlJRk5nSWtJQUFvQWhBaEJDQUFLQUlVSUFWSkJFQWdCQ0FGRUJzaUJFVUVRQ0FBS0FJUUVCUWdBRUlBTndNUUlBSkJBVUhJSmtFQUVCTkJBQXdIQ3lBQUlBUTJBaEFnQUNBS0tBSWtJZ1UyQWhRTElBRWdCQ0FGSUFJUUhTSUVJQW9vQWlSSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFZTElBQWdBQ2dDRUNBRUlBSWdBeWdDQ0JFQkFFVUVRQ0FDUVFGQmxSTkJBQkFUUVFBTUJnc2dBU2tET0NFT0lBb29BaVFoQ0FKQUlBQW9BdUFCSWdNb0FoZ2lCa0VCYWlJRklBTW9BaUFpQkUwRVFDQURLQUljSVFRTUFRc2dBd0ovSUFTelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRU5nSWdJQU1vQWh3Z0JFRVliQkFiSWdSRkRRVWdBeUFFTmdJY0lBTW9BaGdpQmtFQmFpRUZDeUFFSUFaQkdHeHFJZ1FnQ0VFRWFqWUNFQ0FFSUE2bklBaHJRUVJyckRjRENDQUVJQWM3QVFBZ0F5QUZOZ0lZSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSd1JBSUFKQkFVR0RFMEVBRUJOQkFBd0dDMEVCSUF3Z0IwSGMvZ05HR3lFTVFRRWdDU0FIUWRMK0EwWWJJUWxCQVNBTElBZEIwZjREUmhzaEN5QUFLQUlRSUFwQktHcEJBaEFWSUFvb0FpZ2lCRUdRL3dOSERRRUxDeUFMRFFFTElBSkJBVUdNSlVFQUVCTkJBQXdDQ3lBSlJRUkFJQUpCQVVHNkpVRUFFQk5CQUF3Q0N5QU1SUVJBSUFKQkFVSG9KVUVBRUJOQkFBd0NDMEVBSVFOQkFDRUZRUUFoQ1NNQVFSQnJJZ2NrQUVFQklRd0NRQ0FBTFFEVUFVRUJjVVVOQUFKQUlBQW9Bb2dCSWdaRkRRQUNRQU5BSUFBb0Fvd0JJQWxCQTNScUlnUW9BZ0FpQ3dSQUlBTWdCQ2dDQkNJSWF5SUVRUUFnQXlBRVR4c2hCQ0FESUFoSkJFQWdDQ0FEYXlFR0lBTWdDMm9oQ0FOQUlBWkJCRWtFUUVHQ0xDRUREQVVMSUFnZ0IwRU1ha0VFRUJVZ0J5Z0NEQ0lEUVg5eklBVkpCRUJCNkNzaEF3d0ZDeUFESUFaQkJHc2lDMnNnQkNBRElBdExJZzBiSVFRZ0F5QUZhaUVGSUFzZ0Eyc2hCaUFJUVFBZ0F5QU5HMnBCQkdvaENDQURJQXRKRFFBTElBQW9Bb2dCSVFZTElBUWhBd3NnQ1VFQmFpSUpJQVpKRFFBTElBTkZEUUZCQUNFTUlBSkJBVUhXRjBFQUVCTU1BZ3RCQUNFTUlBSkJBU0FEUVFBUUV3d0JDeUFBSUFVUUdDSUROZ0tnQVNBRFJRUkFRUUFoRENBQ1FRRkJ6Q0ZCQUJBVERBRUxJQUFnQlRZQ2xBRWdBQ2dDakFFaEJnSkFJQUFvQW9nQklnZ0VRRUVBSVFWQkFDRURRUUFoQkFOQUlBWWdCRUVEZENJTGFpSU5LQUlBSWdrRVFDQUFLQUtnQVNBRGFpRUlBbjhnRFNnQ0JDSUdJQVZOQkVBZ0NDQUpJQVlRRmhvZ0F5QUdhaUVESUFVZ0Jtc01BUXNnQ0NBSklBVVFGaG9nQXlBRmFpRURJQVlnQldzaEJpQUZJQWxxSVFVRFFDQUdRUVJKRFFVZ0JTQUhRUWhxUVFRUUZTQUZRUVJxSVFVZ0FDZ0NvQUVnQTJvaENTQUdRUVJySWdZZ0J5Z0NDQ0lJU1FSQUlBa2dCU0FHRUJZYUlBTWdCbW9oQXlBSEtBSUlJQVpyREFJTElBa2dCU0FJRUJZYUlBY29BZ2dpQ1NBRGFpRURJQVVnQ1dvaEJTQUdJQWxySWdZTkFBdEJBQXNoQlNBQUtBS01BU0FMYWlnQ0FCQVVJQUFvQW93QklnWWdDMnBDQURjQ0FDQUFLQUtJQVNFSUN5QUVRUUZxSWdRZ0NFa05BQXNnQUNnQ2xBRWhCU0FBS0FLZ0FTRURDeUFBSUFVMkFxZ0JJQUFnQXpZQ2tBRWdBRUVBTmdLSUFTQUdFQlFnQUVFQU5nS01BUXdCQzBFQUlRd2dBa0VCUVlJc1FRQVFFd3NnQjBFUWFpUUFJQXhGQkVBZ0FrRUJRZkErUVFBUUUwRUFEQUlMSUFKQkJFSEYyd0JCQUJBVElBQW9BdUFCSUFFcEF6aEMvdi8vL3c5OFF2Ly8vLzhQZ3pjRENFRUFJUUZCQUNFR0l3QkJFR3NpQnlRQUFrQWdBQ2dDUkNJRVJRUkFJQUJCQVRZQ1RBd0JDeUFBS0FKTURRQWdBQ2dDU0NFRElBQW9BdUFCSWd3b0FpZ2hCU0FFUVFGSEJFQWdCRUYrY1NFSUEwQWdCU0FESUFGQkEzUnFJZ3N2QVFBaURVRW9iR29pQ1NBTk5nSUFJQWtnQ1NnQ0NFRUJhallDQ0NBRklBc3ZBUWdpQzBFb2JHb2lDU0FMTmdJQUlBa2dDU2dDQ0VFQmFqWUNDQ0FCUVFKcUlRRWdCa0VDYWlJR0lBaEhEUUFMQ3lBRVFRRnhCRUFnQlNBRElBRkJBM1JxTHdFQUlnWkJLR3hxSWdFZ0JqWUNBQ0FCSUFFb0FnaEJBV28yQWdnTEFrQWdEQ2dDSkNJR0JFQkJBQ0VCQTBBZ0JTQUJRU2hzYWlnQ0NFVUVRQ0FISUFFMkFnQWdBa0VCUWJQSUFDQUhFQk1NQXdzZ0FVRUJhaUlCSUFaSERRQUxDeUFNS1FNSUlRNUJBQ0VGQTBBQ1FDQUFLQUxnQVNnQ0tDQURJQVZCQTNRaURHb3ZBUUJCS0d4cUlnRW9BaEFpQmtVRVFDQUJJQUVvQWdoQkdCQVhJZ1kyQWhBZ0JrVU5BU0FBS0FKRUlRUWdBQ2dDU0NFREN5QUdJQUVvQWdRaUNVRVliR29pQmlBT053TUFJQVlnRGlBRElBeHFOUUlFZkNJT053TVFJQUVnQ1VFQmFqWUNCQ0FGUVFGcUlnVWdCRWtOQVF3REN3c2dBa0VCUWIwMVFRQVFFd3NnQUVFQk5nSk1JQUFvQWtSRkRRQWdBQ2dDNEFFb0FpZ2hBMEVBSVFFRFFDQURJQUFvQWtnZ0FVRURkR292QVFCQktHd2lBbW9pQTBFQU5nSUlJQU1vQWhBUUZDQUFLQUxnQVNnQ0tDSURJQUpxUVFBMkFoQWdBVUVCYWlJQklBQW9Ba1JKRFFBTEN5QUhRUkJxSkFBZ0FFRUlOZ0lJUVFFTUFRc2dBeWdDSEJBVUlBTkJBRFlDSUNBRFFnQTNBeGdnQWtFQlFaWWVRUUFRRTBFQUN5QUtRVEJxSkFBTEhBQWdBQ2dDQ0VVZ0FDZ0MyQUZCQUVjZ0FDZ0MzQUZCQUVkeGNRc0VBRUVBQ3lRQUFrQWdBRVVOQUNBQUlBRTJBdEFCSUFGRkRRQWdBQ0FBTFFCY1FRaHlPZ0JjQ3d1UEFRRUVmeUFBS0FJWUlnRUVRQ0FBS0FJY0lnTkJORzRoQkNBRFFUUlBCSDlCQUNFREEwQWdBU2dDQUNJQ0JFQWdBa0VCYXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lDQkVBZ0FoQVVJQUZCQURZQ0JBc2dBU2dDQ0NJQ0JFQWdBaEFVSUFGQkFEWUNDQXNnQVVFMGFpRUJJQU5CQVdvaUF5QUVSdzBBQ3lBQUtBSVlCU0FCQ3hBVUlBQkJBRFlDR0FzTGlBRUJCSDhnQUNnQ0dDSUJCRUFnQUNnQ0hDSUNRY1FBYmlFRUlBSkJ4QUJQQkg5QkFDRUNBMEFnQVNnQ0FDSURCRUFnQXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lEQkVBZ0F4QVVJQUZCQURZQ0JBc2dBU2dDUEJBVUlBRkJBRFlDUENBQlFjUUFhaUVCSUFKQkFXb2lBaUFFUncwQUN5QUFLQUlZQlNBQkN4QVVJQUJCQURZQ0dBc0xQd0VCZnlBQUJFQWdBQ2dDZENJQkJFQWdBUkFVSUFCQkFEWUNkQXNnQUNnQ2VDSUJCRUFnQVJBVUlBQkJBRFlDZUFzZ0FDZ0NsQUVRRkNBQUVCUUxDOFNaQlFSRmZ3SjdCSDRCZlNNQVFlQUFheUltSkFBZ0FDZ0NDQ0VhQWtBQ1FBSkFBa0FnQUNnQ0FFVUVRQ0FhSUJvb0FoQWdHaWdDQ0dzZ0dpZ0NGQ0FhS0FJTWEyeEJBblFpQmhBY0lnVTJBandnQlVVRVFDQUFLQUlrR2lBQUtBSWdRUUZCc2o1QkFCQVRJQUFvQWlRYUlBQkJIR29oQlF3REN5QUZRUUFnQmhBWkdnd0JDeUFhS0FJOElnVkZEUUFnQlJBVUlCcEJBRFlDUEFzZ0FDZ0NFQ0l5S0FJY0lESW9BaGhCbUFGc2FpSUZRWmdCYXlnQ0FDRTJJQVZCa0FGcktBSUFJVGNnQUNnQ0ZDRXZJQUFvQWd3aE1DQUFLQUlFSVRnZ0FDZ0NIQ2dDQUVVTkFpQUFRUnhxSVFVQ1FBSi9RUUFnQVNnQ0JDSUhRUUJNRFFBYUlBRW9BZ0FoQ0VFQUlRWUNRQU5BSUFnZ0JrRU1iR29pQkNnQ0FFVU5BU0FHUVFGcUlnWWdCMGNOQUF0QkFBd0JDeUFFS0FJRUN5SUREUUJCQVVHY0FSQVhJZ05GQkVBZ0FDZ0NJRUVCUVlReFFRQVFFd3dDQ3lBRFFRQTJBb3dCQW45QkFDRUdRUUFnQVNnQ0JDSUhRZi8vLy84SFJnMEFHaUFCS0FJQUlRZ2dCMEVBU2dSQUEwQWdDQ0FHUVF4c2FpSUVLQUlBUlFSQUlBUW9BZ2dpQndSL0lBUW9BZ1FnQnhFQ0FDQUJLQUlBQlNBSUN5QUdRUXhzYWlJQlFRODJBZ2dnQVNBRE5nSUVRUUVNQXdzZ0JrRUJhaUlHSUFkSERRQUxDMEVBSUFnZ0IwRU1iRUVNYWhBYklnWkZEUUFhSUFFZ0JqWUNBQ0FHSUFFb0FnUWlCMEVNYkdvaUJrRVBOZ0lJSUFZZ0F6WUNCQ0FHUVFBMkFnQWdBU0FIUVFGcU5nSUVRUUVMRFFBZ0FDZ0NJRUVCUWUzQUFFRUFFQk1nQXlnQ2RDSUJCRUFnQVJBVUlBTkJBRFlDZEFzZ0F5Z0NlQ0lCQkVBZ0FSQVVJQU5CQURZQ2VBc2dBeWdDbEFFUUZDQURFQlFNQVFzZ0F5QUFLQUlZTmdLUUFTQUFLQUlvSVNzZ0FDZ0NKQ0VpSUFBb0FpQWhIU0F2S0FLb0JpRVRJREFvQWhBaEFRSkFBa0FnTHlnQ0VDSVhRY0FBY1FSQUlCY2hDaU1BUWJBQ2F5SVFKQUFDUUNBVEJFQWdJZ1JBSUIxQkFVSHVHRUVBRUJNTUFnc2dIVUVCUWU0WVFRQVFFd3dCQ3lBREtBSjBJUUlDUUFKQUlCb29BaFFnR2lnQ0RHc2lCaUFhS0FJUUlCb29BZ2hySWdsc0lnRWdBeWdDaEFGTEJFQWdBaEFVSUFNZ0FVRUNkQ0lURUJ3aUFqWUNkQ0FDUlFSQVFRQWhBZ3dFQ3lBRElBRTJBb1FCREFFTElBSkZEUUVnQVVFQ2RDRVRDeUFDUVFBZ0V4QVpHZ3NnQXlnQ2VDRUNBa0FnQXlnQ2lBRkJ6eFJMRFFBZ0FoQVVJQU5Cd05JQUVCd2lBallDZUNBQ0RRQkJBQ0VDREFFTElBTkIwQlEyQW9nQklBSkJBRUhBMGdBUUdSb2dBeUFHTmdLQUFTQURJQWsyQW53Z0dpZ0NHQ0lFUlFSQVFRRWhBZ3dCQ3lBYUtBSWNJUTFCQVNFQ0FrQUNRQUpBQWtBQ1FDQWFLQUkwSWdFRVFDQWFLQUlFSVFoQkFDRUNRUUFoQ1FKQUlBRkJCRThFUUNBQlFYeHhJUWxCQUNFSEEwQWdDQ0FIUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0IwRUVhaUlISUFsSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFJZ0FTQUpSZzBCQ3dOQUlBZ2dDVUVEZEdvb0FnUWdBbW9oQWlBSlFRRnFJZ2tnQVVjTkFBc0xJQUZCQVVZRVFDQURLQUtRQVVVTkJRc2dBaUFES0FLWUFVME5BU0FES0FLVUFTQUNFQnNpRXcwQ1FRQWhBZ3dHQ3lBREtBS1FBVVVOQlFzZ0F5Z0NsQUVpRXcwQlFRQWhBZ3dFQ3lBRElBSTJBcGdCSUFNZ0V6WUNsQUVMSUJvb0FqUkZCRUJCQUNFQ0RBSUxJQm9vQWdRaEIwRUFJUUpCQUNFSkEwQWdBaUFUYWlBSElBbEJBM1FpQVdvaUJpZ0NBQ0FHS0FJRUVCWWFJQm9vQWdRaUJ5QUJhaWdDQkNBQ2FpRUNJQWxCQVdvaUNTQWFLQUkwU1EwQUN3d0JDeUFhS0FJRUtBSUFJUk1MUVFBaENVRUFJUWNDZjBFQUlCb29BaWdpQVVVTkFCb2dHaWdDQUNJR0tBSUlJUWRCQUNBQlFRRkdEUUFhSUFZb0FpQUxJUUVnQkNBTmF3SkFJQUVnQjJvaUIwVUVRRUVBSVFSQkFDRUlEQUVMUVFFaENTQWFLQUlBSWdFb0FnQWhCRUVBSVFnZ0IwRUJSZ1JBUVFBaENRd0JDeUFCS0FJWUlRZ0xRUUZxSVJZZ0F5Z0NkQ0VMSUFNb0FuZ2hEaUFhS0FJTUlSVWdHaWdDRkNFUElCb29BZ2doR1NBYUtBSVFJU3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ1VVTkFDQUlEUUFnSWtVTkFTQWRRUUpCa2RRQVFRQVFFMEVCSVFjTUFnc2dCMEVFU1EwQklDSUVRQ0FRSUFjMkFuQWdIVUVCUWRIS0FDQVFRZkFBYWhBVERBZ0xJQkFnQnpZQ1lDQWRRUUZCMGNvQUlCQkI0QUJxRUJOQkFDRUNEQWdMSUIxQkFrR1IxQUJCQUJBVElCb29BaGdpQ1VFZVN3MEJRUUVoR3lBSklCWlBEUU1NQlFzZ0dpZ0NHQ0lCSWdsQkhrME5BU0FpUlEwQUlCQWdBVFlDSUNBZFFRRkI2ZDhBSUJCQklHb1FFd3dGQ3lBUUlBazJBZ0FnSFVFQlFlbmZBQ0FRRUJOQkFDRUNEQVVMSUFrZ0Zra05BU0FIUVFKSkJFQWdCeUViREFFTElBa2dGa2NFUUNBSElSc01BUXRCQVNFYlFkRE5BUzBBQUEwQUlDSkZCRUJCME0wQlFRRTZBQUFnRUNBSE5nSkFJQjFCQWtHVzBBQWdFRUZBYXhBVERBRUxRZEROQVMwQUFFVUVRRUhRelFGQkFUb0FBQ0FRSUFjMkFsQWdIVUVDUVpiUUFDQVFRZEFBYWhBVEN3c0NRQUpBSUFSQkFra05BQ0FDSUFSSkRRQWdCQ0FJYWlBQ1RRMEJDeUFpQkVCQkFDRUNJQjFCQVVHWHlnQkJBQkFUREFVTFFRQWhBaUFkUVFGQmw4b0FRUUFRRXd3RUN3SkFBa0FnQkNBVGFpSVlRUUZyTFFBQUlnRkJCSFFnR0VFQ2F5MEFBRUVQY1hJaUJrRUNTUTBBSUFGQi93RkdEUUFnQkNBR1RnMEJDeUFpQkVCQkFDRUNJQjFCQVVHazl3QkJBQkFUREFVTFFRQWhBaUFkUVFGQnBQY0FRUUFRRXd3RUN5QWFLQUljSVNRQ2Z5QVFRUUEyQXBBQ0lCQkJBRFlDbUFJZ0VFSUFOd09JQWlBUVFnQTNBNmdDSUJCQ0FEY0NuQUlnRUNBR1FRRnJJZ2MyQXBRQ0lCQWdCQ0FUYWlBR2F5SUpOZ0tBQWlBSk1RQUFJVWxCQ0NFQklCQkJDRFlDa0FJZ0VDQUpRUUZxSWdJMkFvQUNJQkFnQmtFQ2F5SU5OZ0tVQWlBUUlFbENENFFnU1NBSFFRRkdHeUpKTndPSUFpQVFJRWxDL3dGUk5nS1lBZ0pBSUFsQkEzRWlCMEVEUmcwQUFrQWdTVUwvQVZJTkFDQUNMUUFBUVk4QlRRMEFRUUFNQWd0Qy93RWhTaUFHUVFOUEJFQWdBakVBQUNGS0N5QVFJQVpCQTJzaUZ6WUNsQUlnRUVFUFFSQWdTVUwvQVZFaUZCc2lBVFlDa0FJZ0VDQUNJQVpCQWt0cUlnazJBb0FDSUJBZ1NrSVBoQ0JLSUExQkFVWWJJa3BDL3dGUk5nS1lBaUFRSUVsQ0IwSUlJQlFiaGlCS2hDSkpOd09JQWlBSFFRSkdEUUJDL3dFaFN3SkFJRXBDL3dGU0RRQWdDUzBBQUVHUEFVME5BRUVBREFJTElBWkJCRThFUUNBSk1RQUFJVXNMSUJBZ0JrRUVheUlDTmdLVUFpQVFJQWtnQmtFRFMyb2lDVFlDZ0FJZ0VDQkxRZytFSUVzZ0YwRUJSaHNpUzBML0FWRTJBcGdDSUJBZ0FVRUhRUWdnU2tML0FWRWlEUnRxSWdFMkFwQUNJQkFnU1VJSFFnZ2dEUnVHSUV1RUlrazNBNGdDSUFkQkFVWU5BQUpBSUV0Qy93RlNEUUFnQ1MwQUFFR1BBVTBOQUVFQURBSUxRdjhCSVVvZ0JrRUZUd1JBSUFreEFBQWhTZ3NnRUNBR1FRVnJOZ0tVQWlBUUlBa2dCa0VFUzJvMkFvQUNJQkFnU2tJUGhDQktJQUpCQVVZYklrcEMvd0ZSTmdLWUFpQVFJQUZCQjBFSUlFdEMvd0ZSSWdrYmFpSUJOZ0tRQWlBUUlFbENCMElJSUFrYmhpQktoQ0pKTndPSUFnc2dFQ0JKUWNBQUlBRnJyWVkzQTRnQ1FRRUxSUVJBSUNJRVFFRUFJUUlnSFVFQlFhblpBRUVBRUJNTUJRdEJBQ0VDSUIxQkFVR3AyUUJCQUJBVERBUUxJQ3NnR1dzaEVpQVFJQVlpRFVFQ2F5SU1OZ0wwQVNBUUlBUWdFMm9pRVVFRGF5SUdOZ0xnQVNBUUlCRkJBbXN0QUFBaUFVR1BBVXNpQnpZQytBRWdFQ0FCUVFSMnJTSkpOd1BvQVNBUVFRTkJCQ0JKUWdlRFFnZFJHeUlVTmdMd0FTQUdRUU54UVFGcUlnRWdEQ0FCSUF4Skd5RVhBa0FDUUNBTVJRUkFRUUFoQWlBUUlBd2dGMnMyQXZRQkRBRUxJQkFnRVVFRWF5SUJOZ0xnQVNBUUlBWXRBQUFpQWtHUEFVc2lDVFlDK0FFZ0VDQUNyU0pLUXY4Qmd5QVVyWVlnU1lRaVNUY0Q2QUVnRUVFSFFRZ2dTa0wvQUlOQy93QlJHMEVJSUFjYklCUnFJaFEyQXZBQkFrQWdGMEVDU1FSQUlBa2hCd3dCQ3lBUUlCRkJCV3NpQ1RZQzRBRWdFQ0FCTFFBQUlnWkJqd0ZMSWdjMkF2Z0JJQkFnQnEwaVNrTC9BWU1nRksyR0lFbUVJa2szQStnQklCQkJDRUVIUVFnZ1NrTC9BSU5DL3dCUkd5QUNRWThCVFJzZ0ZHb2lGRFlDOEFFZ0YwRUNSZ1JBSUFFaEJpQUpJUUVNQVFzZ0VDQVJRUVpySWdJMkF1QUJJQkFnQ1MwQUFDSUJJaUZCandGTElnYzJBdmdCSUJBZ0FhMGlTa0wvQVlNZ0ZLMkdJRW1FSWtrM0ErZ0JJQkJCQ0VFSFFRZ2dTa0wvQUlOQy93QlJHeUFHUVk4QlRSc2dGR29pRkRZQzhBRWdGMEVEUmdSQUlBa2hCaUFDSVFFTUFRc2dFQ0FSUVFkcklnRTJBdUFCSUJBZ0FpMEFBQ0lHUVk4QlN5SUhOZ0w0QVNBUUlBYXRJa3BDL3dHRElCU3RoaUJKaENKSk53UG9BU0FRUVFoQkIwRUlJRXBDL3dDRFF2OEFVUnNnSVVHUEFVMGJJQlJxSWhRMkF2QUJJQUloQmdzZ0VDQU1JQmRySWdrMkF2UUJJQlJCSUVzTkFTQUpRUVJPQkVBZ0JrRUVheWdDQUNFQ0lCQWdCa0VGYXpZQzRBRWdFQ0FKUVFSck5nTDBBUXdCQ3lBSlFRQk1CRUJCQUNFQ0RBRUxJQWxCQVhFQ1FDQVhJQTFCQTJ0R0JFQkJHQ0VYUVFBaEFnd0JDeUFKUWY3Ly8vOEhjU0VoUVJnaEYwRUFJUUlnQVNFR1FRQWhEQU5BSUJBZ0JrRUJheUlnTmdMZ0FTQUdMUUFBSUJBZ0JrRUNheUlCTmdMZ0FTQVFJQWxCQVdzMkF2UUJJQ0F0QUFBaEJpQVFJQWxCQW1zaUNUWUM5QUVnRjNRZ0FuSWdCaUFYUVFocmRISWhBaUFYUVJCcklSY2dBU0VHSUF4QkFtb2lEQ0FoUncwQUN3dEZEUUFnRUNBQlFRRnJOZ0xnQVNBQkxRQUFJQkFnQ1VFQmF6WUM5QUVnRjNRZ0FuSWhBZ3NnRUNBQ1FmOEJjU0lCUVk4QlN6WUMrQUVnRUVFSFFRZ2dBa0dBZ0lENEIzRkJnSUNBK0FkR0cwRUlJQWNiSWdaQkNFRUhRUWdnQWtHQWdQd0RjVUdBZ1B3RFJoc2dBa0gvLy8vL2VFMGJhaUlKUVFoQkIwRUlJQUpCZ1A0QmNVR0EvZ0ZHR3lBQ1FSQjJRZjhCY1NJSFFZOEJUUnRxSWhkQkNFRUhRUWdnQWtIL0FIRkIvd0JHR3lBQ1FRaDJRZjhCY1NJTVFZOEJUUnNnRkdwcU5nTHdBU0FRSUFjZ0JuUWdBa0VZZG5JZ0RDQUpkSElnQVNBWGRIS3RJQlN0aGlCSmhEY0Q2QUVMSUJCQndBRnFJQk1nQkNBTmEwSC9BUkJrQW45QkFDQWJRUUpKRFFBYUlCQkJvQUZxSUJnZ0NFRUFFR1JCQUNBYlFRSkdEUUFhUWdBaFNVSUFJVXNnRUVFQk5nS1lBU0FRUVFBMkFwQUJJQkJDQURjRGlBRWdFQ0FJUVFGcklnRTJBcFFCSUJBZ0JDQVRhaUFJYWlJR1FRRnJJZ2syQW9BQklBbEJBM0VoRndKQUlBaEJBRXdFUUNBSklRWU1BUXNnRUNBR1FRSnJJZ1kyQW9BQklBa3hBQUFoU1FzZ0VDQkpOd09JQVNBUUlFbENqd0ZXSWhNMkFwZ0JJQkJCQjBFSUlFbEMvd0NEUXY4QVVSc2lEVFlDa0FFQ1FDQVhSUTBBSUJBZ0NFRUNheUlITmdLVUFRSkFJQWhCQWtnRVFDQUdJUUlNQVFzZ0VDQUdRUUZySWdJMkFvQUJJQVl4QUFBaFN3c2dFQ0JMUW84QlZpSVROZ0tZQVNBUUlFc2dEYTJHSUVtRUlrbzNBNGdCSUJCQkNFRUhRUWdnUzBML0FJTkMvd0JSR3lCSlFvOEJXQnNnRFdvaURUWUNrQUVnRjBFQlJnUkFJQUloQmlCS0lVa2dBU0VJSUFjaEFRd0JDeUFRSUFoQkEyc2lCRFlDbEFFQ1FDQUlRUU5JQkVBZ0FpRUpEQUVMSUJBZ0FrRUJheUlKTmdLQUFTQUNNUUFBSVV3TElCQWdURUtQQVZZaUV6WUNtQUVnRUNCTUlBMnRoaUJLaENKSk53T0lBU0FRUVFoQkIwRUlJRXhDL3dDRFF2OEFVUnNnUzBLUEFWZ2JJQTFxSWcwMkFwQUJJQmRCQWtZRVFDQUpJUVlnQnlFSUlBUWhBUXdCQ3lBUUlBaEJCR3NpQVRZQ2xBRkNBQ0ZMQWtBZ0NFRUVTQVJBSUFraEJnd0JDeUFRSUFsQkFXc2lCallDZ0FFZ0NURUFBQ0ZMQ3lBUUlFdENqd0ZXSWhNMkFwZ0JJQkFnU3lBTnJZWWdTWVFpU1RjRGlBRWdFRUVJUVFkQkNDQkxRdjhBZzBML0FGRWJJRXhDandGWUd5QU5haUlOTmdLUUFTQUVJUWdMSUExQklFMEVRQUpBSUFoQkJVNEVRQ0FHUVFOcktBSUFJUUlnRUNBSVFRVnJOZ0tVQVNBUUlBWkJCR3MyQW9BQkRBRUxRUUFoQWlBSVFRSklEUUJCR0NFSUEwQWdFQ0FHUVFGcklnazJBb0FCSUFZdEFBQWdFQ0FCUVFGcklnYzJBcFFCSUFoMElBSnlJUUlnQVVFQlN5QUpJUVlnQ0VFSWF5RUlJQWNoQVEwQUN3c2dFQ0FDUWY4QmNTSUJRWThCU3pZQ21BRWdFRUVIUVFnZ0FrR0FnSUQ0QjNGQmdJQ0ErQWRHRzBFSUlCTWJJZ1pCQ0VFSFFRZ2dBa0dBZ1B3RGNVR0FnUHdEUmhzZ0FrSC8vLy8vZUUwYmFpSUpRUWhCQjBFSUlBSkJnUDRCY1VHQS9nRkdHeUFDUVJCMlFmOEJjU0lIUVk4QlRSdHFJZ2hCQ0VFSFFRZ2dBa0gvQUhGQi93QkdHeUFDUVFoMlFmOEJjU0lFUVk4QlRSc2dEV3BxTmdLUUFTQVFJQWNnQm5RZ0FrRVlkbklnQkNBSmRISWdBU0FJZEhLdElBMnRoaUJKaERjRGlBRUxRUUVMSVRNZ0R5QVZheUVoSUJaQkFXb2hMQ0FPUVFBNkFNQVFJQTVCd0JCcUlSWWdFRUdBQW1vUUxTRUVJQkpCQUVvRVFDQWtRUUZySVJFZ0RpRUdJQlloQjBFQUlSTWdDeUVCUVFBaEZ3TkFJQmNoRFNBVFFRaDBJQkJCNEFGcUVEVkIvd0J4UVFGMGNrSGdnUUZxTHdFQUlRa0NRQ0FURFFBZ0NVRUFJQVJCQW1zaUFrRi9SaHNoQ1NBRVFRRktCRUFnQWlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnRUNrRDZBRWdFQ2dDOEFFZ0JpQUdLQUlBSUFsQkJIWWlGVUVEY1NBSlFRSjJRVEJ4Y2lBamRISWlGRFlDQUNBSlFRVjJRUWR4SUFsQkVIRWlEMEVFZG5JaEV5QUpRUWR4SWdKcklSY2dBcTJJSWttbklRaEJBQ0VDSUJJZ0RVRUNja29FUUNBVFFRaDBJQWhCL3dCeFFRRjBja0hnZ1FGcUx3RUFJUUlDUUNBVERRQWdBa0VBSUFSQkFtc2lDRUYvUmhzaEFpQUVRUUZLQkVBZ0NDRUVEQUVMSUJCQmdBSnFFQzBoQkFzZ0FrRUVka0VCY1NBQ1FRVjJRUWR4Y2lFVElCY2dBa0VIY1NJSWF5RVhJRWtnQ0sySUlrbW5JUWdMSUFZZ0FrRUNkRUdBQm5FZ0FrRXdjWElnSTBFRWFuUWdGSEkyQWdBQ1FDQUNRUUoyUVFKeElBbEJBM1pCQVhGeUloUkJBMGNOQUVFRVFRTWdCRUVDYXlJTVFYOUdHeUVVSUFSQkFVb0VRQ0FNSVFRTUFRc2dFRUdBQW1vUUxTRUVDd0ovSUJSRkJFQWdFRUtCZ0lDQUVEY0NlRUVBREFFTElCUkJBazBFUUNBUVFRRWdDRUVIY1VHVW9nRnFMUUFBSWd4QkJYWkJmeUFNUVFKMlFRZHhJaGgwUVg5eklBZ2dERUVEY1NJSWRuRnFRUUZxSWd3Z0ZFRUJSaUlVR3pZQ2ZDQVFJQXhCQVNBVUd6WUNlQ0FJSUJocURBRUxJQWdnQ0VFSGNVR1VvZ0ZxTFFBQUlneEJBM0VpR0hZaENDQVVRUU5HQkVBZ0RFRUZka0VCYWlFVUlCaEJBMFlFUUNBUUlBaEJBWEZCQW5JMkFud2dFQ0FVUVg4Z0RFRUNka0VIY1NJTWRFRi9jeUFJUVFGMmNXbzJBbmdnREVFRWFnd0NDeUFRSUJRZ0NDQUlRUWR4UVpTaUFXb3RBQUFpQ0VFRGNTSWdkaUlsUVg4Z0RFRUNka0VIY1NJTWRFRi9jM0ZxTmdKNElCQkJmeUFJUVFKMlFRZHhJaFIwUVg5eklDVWdESFp4SUFoQkJYWnFRUUZxTmdKOElBd2dHR29nSUdvZ0ZHb01BUXNnRUNBSUlBaEJCM0ZCbEtJQmFpMEFBQ0lJUVFOeElpQjJJaVZCZnlBTVFRSjJRUWR4SWhSMFFYOXpjU0FNUVFWMmFrRURhallDZUNBUVFYOGdDRUVDZGtFSGNTSU1kRUYvY3lBbElCUjJjU0FJUVFWMmFrRURhallDZkNBWUlDQnFJQlJxSUF4cUN5RUlBa0FnTENBUUtBSjRJaFJQQkVBZ0VDZ0NmQ0lNSUN4TkRRRUxJQ0lFUUVFQUlRSWdIVUVCUWVmNkFFRUFFQk1NQnd0QkFDRUNJQjFCQVVIbitnQkJBQkFUREFZTElCQWdGeUFJYXpZQzhBRWdFQ0JKSUFpdGlEY0Q2QUVnQWtId0FYRWdGVUVQY1hKQi93RkIvd0VnRFVFRWFpSVhJQkpyUVFGMGRpQVNJQmRPR3lJSUlBaEIxUUJ4SUNGQkFVb2JJZ2hCZjNOeEJFQWdJZ1JBUVFBaEFpQWRRUUZCL2Q0QVFRQVFFd3dIQzBFQUlRSWdIVUVCUWYzZUFFRUFFQk1NQmdzQ1FBSkFJQThFUUNBUVFjQUJhaEFmSVJVZ0VDQVFLQUxRQVNBVUlBbEJFM1JCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRlVGL0lCaDBRWDl6Y1NBSlFRaDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVZRUjkwY2lFWURBRUxRUUFoR0NBSVFRRnhSUTBCQ3lBQklCZzJBZ0FMQWtBZ0NVRWdjUVJBSUJCQndBRnFFQjhoRlNBUUlCQW9BdEFCSUJRZ0NVRVNkRUVmZFdvaUdHczJBdEFCSUJBZ0VDa0R5QUVnR0sySU53UElBU0FCSUJKQkFuUnFJQlZCZnlBWWRFRi9jM0VnQ1VFSmRrRUJjU0FZZEhKQkFYSWlHRUVDYWlBUmRDQVZRUjkwY2pZQ0FDQUhRU0FnR0dkckloZ2dCeTBBQUVIL0FIRWlGU0FWSUJoSkcwR0FBWEk2QUFBTUFRc2dDRUVDY1VVTkFDQUJJQkpCQW5ScVFRQTJBZ0FMSUFGQkJHb2hGUUpBQWtBZ0NVSEFBSEVFUUNBUVFjQUJhaEFmSVE4Z0VDQVFLQUxRQVNBVUlBbEJFWFJCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRDBGL0lCaDBRWDl6Y1NBSlFRcDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVBRUjkwY2lFWURBRUxRUUFoR0NBSVFRUnhSUTBCQ3lBVklCZzJBZ0FMSUFkQkFEb0FBUUpBSUFsQmdBRnhCRUFnRUVIQUFXb1FIeUVZSUJBZ0VDZ0MwQUVnRkNBSlFSQjBRUjkxYWlJVWF6WUMwQUVnRUNBUUtRUElBU0FVcllnM0E4Z0JJQlVnRWtFQ2RHb2dHRUYvSUJSMFFYOXpjU0FKUVF0MlFRRnhJQlIwY2tFQmNpSUpRUUpxSUJGMElCaEJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUJEQUVMSUFoQkNIRkZEUUFnRlNBU1FRSjBha0VBTmdJQUN5QUJRUWhxSVFrQ1FBSkFJQUpCRUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRTNSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUWgyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRUkJ4UlEwQkN5QUpJQlEyQWdBTEFrQWdBa0VnY1FSQUlCQkJ3QUZxRUI4aEdDQVFJQkFvQXRBQklBd2dBa0VTZEVFZmRXb2lGR3MyQXRBQklCQWdFQ2tEeUFFZ0ZLMklOd1BJQVNBSklCSkJBblJxSUJoQmZ5QVVkRUYvYzNFZ0FrRUpka0VCY1NBVWRISkJBWElpQ1VFQ2FpQVJkQ0FZUVI5MGNqWUNBQ0FIUVNBZ0NXZHJJZ2tnQnkwQUFVSC9BSEVpRkNBSklCUkxHMEdBQVhJNkFBRU1BUXNnQ0VFZ2NVVU5BQ0FKSUJKQkFuUnFRUUEyQWdBTElBRkJER29oQ1FKQUFrQWdBa0hBQUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRVhSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUXAyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRY0FBY1VVTkFRc2dDU0FVTmdJQUN5QUhRUUpxSWdkQkFEb0FBQUpBSUFKQmdBRnhCRUFnRUVIQUFXb1FIeUVVSUJBZ0VDZ0MwQUVnRENBQ1FSQjBRUjkxYWlJSWF6WUMwQUVnRUNBUUtRUElBU0FJcllnM0E4Z0JJQWtnRWtFQ2RHb2dGRUYvSUFoMFFYOXpjU0FDUVF0MlFRRnhJQWgwY2tFQmNpSUpRUUpxSUJGMElCUkJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUFEQUVMSUFoQmdBRkpEUUFnQ1NBU1FRSjBha0VBTmdJQUN5QWpRUkJ6SVNNZ0JpQU5RUVJ4YWlFR0lBRkJFR29oQVNBU0lCZEtEUUFMQ3lBS1FRaHhJVGtnRGtHd0RHb2hLQ0FPUWFBSWFpRXBJQTVCa0FScUlTVWdJVUVEVGdSQUlCSkJER3doTVNBU1FRTjBJVG9nSkVFQmF5RWdRUU1nSkVFQ2F5SUJkQ0V0UVFFZ0FYUWhMaUFTUVFkcVFRRjJRZnovLy84SGNVRUVhaUU5SUNzZ0dVRi9jMm9pQVVFRGRpSUdRUUowSWo1QkJHb2hPeUFHUVFGcUlqOUIvUC8vL3dOeEloOUJBblFoUENBZlFRTjBJUlVnQVVFWVNTRkFRUUloREFOQUlBd2hFU0FXTFFBQUlSZ2dGa0VBT2dBQUlDTkJiM0ZCQW5NaEl3SkFJQkpCQUV3RVFDQU1RUUpxSVF3TUFRc2dKU0FPSUJGQkJIRWJJUk1nRVVFQ2FpRU1JQXNnRVNBU2JFRUNkR29oQjBFQUlSUWdGaUVCUVFBaEZ3TkFJQmNoRFNBQkxRQUJRUVYyUVFSeElCUWdHRUgvQVhFaUdFRUhkbkp5SWdaQkNIUWdFRUhnQVdvUU5VSC9BSEZCQVhSeVFlQ1JBV292QVFBaENRSkFJQVlOQUNBSlFRQWdCRUVDYXlJR1FYOUdHeUVKSUFSQkFVb0VRQ0FHSVFRTUFRc2dFRUdBQW1vUUxTRUVDeUFRS1FQb0FTQVFLQUx3QVNBVElCTW9BZ0FnQ1VFRWRrRURjU0FKUVFKMlFUQnhjaUFqZEhJaUNEWUNBQ0FKUWNBQWNTSWNRUVYySUFsQmdBRnhJaXBCQm5aeUlSUWdDVUVIY1NJR2F5RUtJQWF0aUNKSnB5RVhRUUFoQWlBU0lBMUJBbkpLQkVBZ0ZDQUJMUUFDUVFWMlFRUnhJQUV0QUFGQkIzWnljaUlHUVFoMElCZEIvd0J4UVFGMGNrSGdrUUZxTHdFQUlRSUNRQ0FHRFFBZ0FrRUFJQVJCQW1zaUJrRi9SaHNoQWlBRVFRRktCRUFnQmlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnQ2lBQ1FRZHhJZ1pySVFvZ0FrRUZkaUFDUVFaMmNrRUNjU0VVSUVrZ0JxMklJa21uSVJjTElCTWdBa0VDZEVHQUJuRWdBa0V3Y1hJZ0kwRUVhblFnQ0hJMkFnQkJBU0VJUVFFaEJnSkFBa0FDUUNBQ1FRSjJRUUp4SUFsQkEzWkJBWEZ5SWc4T0JBSUFBQUVBQzBFQklCZEJCM0ZCbEtJQmFpMEFBQ0lHUVFWMlFYOGdCa0VDZGtFSGNTSWVkRUYvY3lBWElBWkJBM0VpRjNaeGFrRUJhaUlHSUE5QkFVWWlEeHNoQ0NBR1FRRWdEeHNoQmlBWElCNXFJUThNQVFzZ0Z5QVhRUWR4UVpTaUFXb3RBQUFpQmtFRGNTSVhkaUllUVFkeFFaU2lBV290QUFBaUNFRURjU0luSUJkcUlBWkJBblpCQjNFaUYyb2dDRUVDZGtFSGNTSTBhaUVQSUI0Z0ozWWlIa0YvSUJkMFFYOXpjU0FHUVFWMmFrRUJhaUVHUVg4Z05IUkJmM01nSGlBWGRuRWdDRUVGZG1wQkFXb2hDQXNnRUNBS0lBOXJOZ0x3QVNBUUlFa2dENjJJTndQb0FTQUpRZkFCY1NJWElCZEJBV3R4QkVBZ0JpQVlRZjhBY1NJS0lBRXRBQUZCL3dCeEloZ2dDaUFZU3hzaUNrRUNheUlZUVFBZ0NpQVlUeHRxSVFZTElBSkI4QUZ4SWdvZ0NrRUJhM0VFUUNBSUlBRXRBQUZCL3dCeEloZ2dBUzBBQWtIL0FIRWlEeUFQSUJoSkd5SVlRUUpyUVFBZ0dFRUNTeHRxSVFnTElBWWdMRTBnQ0NBc1RYRkZCRUFnSWdSQVFRQWhBaUFkUVFGQnkvc0FRUUFRRXd3SkMwRUFJUUlnSFVFQlFjdjdBRUVBRUJNTUNBc2dBUzBBQWlFWUlBRkJBRHNBQVNBS0lCZEJCSFp5UWY4QlFmOEJJQTFCQkdvaUZ5QVNhMEVCZEhZZ0VpQVhUaHNpQ2tIVkFIRWdDaUFNSUNGS0d5SVBRWDl6Y1FSQUlDSUVRRUVBSVFJZ0hVRUJRZjNlQUVFQUVCTU1DUXRCQUNFQ0lCMUJBVUg5M2dCQkFCQVREQWdMQWtBQ1FDQUpRUkJ4QkVBZ0VFSEFBV29RSHlFZUlCQWdFQ2dDMEFFZ0JpQUpRUk4wUVI5MWFpSUthellDMEFFZ0VDQVFLUVBJQVNBS3JZZzNBOGdCSUI1QmZ5QUtkRUYvYzNFZ0NVRUlka0VCY1NBS2RISkJBWEpCQW1vZ0lIUWdIa0VmZEhJaENnd0JDMEVBSVFvZ0QwRUJjVVVOQVFzZ0J5QUtOZ0lBQ3dKQUlBbEJJSEVFUUNBUVFjQUJhaEFmSVI0Z0VDQVFLQUxRQVNBR0lBbEJFblJCSDNWcUlncHJOZ0xRQVNBUUlCQXBBOGdCSUFxdGlEY0R5QUVnQnlBU1FRSjBhaUFlUVg4Z0NuUkJmM054SUFsQkNYWkJBWEVnQ25SeVFRRnlJZ3BCQW1vZ0lIUWdIa0VmZEhJMkFnQWdBVUVnSUFwbmF5SUtJQUV0QUFCQi93QnhJaDRnQ2lBZVN4dEJnQUZ5T2dBQURBRUxJQTlCQW5GRkRRQWdCeUFTUVFKMGFrRUFOZ0lBQ3lBSFFRUnFJUW9DUUFKQUlCd0VRQ0FRUWNBQmFoQWZJUndnRUNBUUtBTFFBU0FHSUFsQkVYUkJIM1ZxSWg1ck5nTFFBU0FRSUJBcEE4Z0JJQjZ0aURjRHlBRWdIRUYvSUI1MFFYOXpjU0FKUVFwMlFRRnhJQjUwY2tFQmNrRUNhaUFnZENBY1FSOTBjaUVlREFFTFFRQWhIaUFQUVFSeFJRMEJDeUFLSUI0MkFnQUxBa0FnS2dSQUlCQkJ3QUZxRUI4aEhpQVFJQkFvQXRBQklBWWdDVUVRZEVFZmRXb2lCbXMyQXRBQklCQWdFQ2tEeUFFZ0JxMklOd1BJQVNBS0lCSkJBblJxSUI1QmZ5QUdkRUYvYzNFZ0NVRUxka0VCY1NBR2RISkJBWElpQmtFQ2FpQWdkQ0FlUVI5MGNqWUNBQ0FCUWFCL0lBWm5hem9BQVF3QkN5QVBRUWh4UlEwQUlBb2dFa0VDZEdwQkFEWUNBQXNnQjBFSWFpRUpBa0FDUUNBQ1FSQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSTjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFSWRrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBFUWNVVU5BUXNnQ1NBR05nSUFDd0pBSUFKQklIRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVuUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQ1haQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVRWdJQVpuYXlJR0lBRXRBQUZCL3dCeElna2dCaUFKU3h0QmdBRnlPZ0FCREFFTElBOUJJSEZGRFFBZ0NTQVNRUUowYWtFQU5nSUFDeUFIUVF4cUlRa0NRQUpBSUFKQndBQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSRjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFS2RrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBIQUFIRkZEUUVMSUFrZ0JqWUNBQXNnQVVFQ2FpRUJBa0FnQWtHQUFYRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVIUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQzNaQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVR2dmeUFHWjJzNkFBQU1BUXNnRDBHQUFVa05BQ0FKSUJKQkFuUnFRUUEyQWdBTElDTkJFSE1oSXlBVElBMUJCSEZxSVJNZ0IwRVFhaUVISUJJZ0Ywb05BQXNMQWtBZ0cwRUNTUTBBSUJGQkFuRkZEUUFnREVFRWNTRUdBa0FDZndKQUFrQWdNd1JBSUE0Z0pTQUdHeUVOUVFBaER5QVNRUUJNRFFFZ0N5QVJRUUpySUJKc1FRSjBhaUVYQTBBZ0VFR0FBV29RTlNFQ1FRQWhDU0FOS0FJQUlnY0VRQ0FYSUE5QkFuUnFJUWxCQUNFSVFROGhBUU5BQWtBZ0FTQUhjVVVOQUNBQlFaR2l4SWdCY1NJVElBZHhCRUFnQ1NBSktBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVCZENBSGNRUkFJQWtnRWtFQ2RHb2lDaUFLS0FJQUlBSkJmM05CQVhFZ0lIUnpJQzV5TmdJQUlBSkJBWFloQWdzZ0UwRUNkQ0FIY1FSQUlBa2dPbW9pQ2lBS0tBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVEZENBSGNVVU5BQ0FKSURGcUloTWdFeWdDQUNBQ1FYOXpRUUZ4SUNCMGN5QXVjallDQUNBQ1FRRjJJUUlMSUFsQkJHb2hDU0FCUVFSMElRRWdDRUVCYWlJSVFRaEhEUUFMSUFkcElRa0xJQTFCQkdvaERTQVFJQkFvQXBBQklBbHJOZ0tRQVNBUUlCQXBBNGdCSUFtdGlEY0RpQUVnRDBFSWFpSVBJQkpJRFFBTEN5QXBJQ2dnQmhzaENpQU9JQ1VnQmhzaERTQUdSU0VQSUJKQkFFd05BMEVBSVFZZ1FBMEJJQW9nRFNBN2Fra2dEU0FLSUR0cUlnSkpjUTBCUVFBZ0NpSUpJQTBpQVNBK2FrRUlha2tnQVVFRWFpQUNTWEVOQWhvZ0FTQThhaUVCSUFrZ1BHb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQW9nQWtFQ2RDSUdhaUlISUFZZ0RXb2lCdjBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlBY2dSeUFHL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUI5SERRQUxJQjhnUDBZTkF5QVZJUVlnUi8wYkF3d0NDeUFHUlNFUElDa2dLQ0FHR3lFS0RBSUxJQW9oQ1NBTklRRkJBQXNoQWdOQUlBSkJISFloQnlBSklBRW9BZ0FpQWtFRWRpQUhJQUpCQkhSeWNpQUNjaUlITmdJQUlBa2dCeUFCS0FJRVFSeDBjaUlIUVFGMlFmZnUzYnNIY1NBSFFRRjBRZTdkdS9kK2NYSWdCM0lnQWtGL2MzRTJBZ0FnQ1VFRWFpRUpJQUZCQkdvaEFTQUdRUWhxSWdZZ0VrZ05BQXNMSUJGQkJra05BRUVBSVFoQkFDRVRJQTBoQ1NBcElDZ2dEeHNpSENFQ0lBNGdKU0FQR3lJWUlRRWdFa0VBU2dSQUEwQWdDVUVFYWlFSElBSW9BZ0FoRnlBSktBSUFJUVlnQWlBNUJIOGdGd1VnQmtFRWRDQVRRUngyY2lBR1FRUjJjaUFIS0FJQVFSeDBjaUFHY2tFRGRFR0lrYUxFZUhFZ0YzSUxJQUVvQWdCQmYzTnhOZ0lBSUFGQkJHb2hBU0FDUVFScUlRSWdCaUVUSUFjaENTQUlRUWhxSWdnZ0VrZ05BQXNnQ3lBUlFRWnJJQkpzUVFKMGFpRkJRUUFoSGlBWUlSTURRRUVBSVFjZ0hDZ0NBQ0lCQkVBZ0hrRUVjaUZDSUJJZ0htc2hRMEVBSVFKQkFDRVVBMEFnQWlBUVFhQUJhaEFmSVFJQ1FDQVVRUVJxSUVNZ0ZDQkNhaUFTU0JzaU5DQVVUQVJBUVFBaENRd0JDeUFUS0FJQVFYOXpJU29nUVNBVUlCNXlRUUowYWlFUFFRQWhDVUVQSUJRaUNFRUNkQ0pFZENJWElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSnlBQmNRUkFJQUpCQVhFRVFDQUhJQ2R5SVFkQk1pQUlRUUowZENBcWNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUNkQkFYUWlOWEVFUUNBQ1FRRnhCRUFnQnlBMWNpRUhJQUZCOUFBZ0NFRUNkSFFnS25GeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdKMEVDZENJMWNRUkFJQUpCQVhFRVFDQUhJRFZ5SVFjZ0FVSG9BU0FJUVFKMGRDQXFjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBblFRTjBJaWR4UlEwQUlBSkJBWEVFUUNBSElDZHlJUWNnQVVIQUFTQUlRUUowZENBcWNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBMFNBMEFDeUFISUVSMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRjNGRkRRQWdGMEdSb3NTSUFYRWlCaUFIY1FSQUlBOGdEeWdDQUNBQ1FSOTBjaUF0Y2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0R5QVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdMWEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUE4Z09tb2lDQ0FJS0FJQUlBSkJIM1J5SUMxeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdEeUF4YWlJR0lBWW9BZ0FnQWtFZmRISWdMWEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRjBFRWRDRVhJQTlCQkdvaER5QVVRUUZxSWhRZ05FZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFVVFRRnhSUTBBQ3lBY0lCd29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBVEtBSUVRWDl6Y1hJMkFnUUxJQk1vQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQjRFUUNBS1FRUnJJZ0lnQWlnQ0FDQU5RUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRFNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBTktBSUVRWDl6SUFaQkgzWnhjallDQkNBY1FRUnFJUndnRTBFRWFpRVRJQXBCQkdvaENpQU5RUVJxSVEwZ0hrRUlhaUllSUJKSURRQUxDeUFZUVFBZ1BSQVpHZ3NnRENBaFNBMEFDd3NDUUNBYlFRSkpEUUFDUUNBaFFRTnhRUUZySWhkQkFra2dNM0VFUUNBU1FRQk1EUUZCQVNBa1FRSnJkQ0VISUFzZ0lVSDgvLzhIY1NBU2JFRUNkR29oQ2lBbElBNGdJVUVFY1JzaEJDQVNRUXhzSVJzZ0VrRURkQ0VXSUNSQkFXc2hEVUVBSVJRRFFDQVFRWUFCYWhBMUlRSkJBQ0VKSUFRb0FnQWlCZ1JBSUFvZ0ZFRUNkR29oQ1VFUElRRkJBQ0VJQTBBQ1FDQUJJQVp4UlEwQUlBRkJrYUxFaUFGeEloTWdCbkVFUUNBSklBa29BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFGMElBWnhCRUFnQ1NBU1FRSjBhaUlkSUIwb0FnQWdBa0YvYzBFQmNTQU5kSE1nQjNJMkFnQWdBa0VCZGlFQ0N5QVRRUUowSUFaeEJFQWdDU0FXYWlJZElCMG9BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFOMElBWnhSUTBBSUFrZ0cyb2lFeUFUS0FJQUlBSkJmM05CQVhFZ0RYUnpJQWR5TmdJQUlBSkJBWFloQWdzZ0NVRUVhaUVKSUFGQkJIUWhBU0FJUVFGcUlnaEJDRWNOQUFzZ0Jta2hDUXNnQkVFRWFpRUVJQkFnRUNnQ2tBRWdDV3MyQXBBQklCQWdFQ2tEaUFFZ0NhMklOd09JQVNBVVFRaHFJaFFnRWtnTkFBc0xJQmRCQVVzTkFDQVNRUUJNRFFBZ0pTQU9JQ0ZCQkhFaUFSc2hCeUFvSUNrZ0FSc2hDRUVBSVFZQ2Z3SkFJQ3NnR1VGL2Myb2lBVUU0U1EwQUlBZ2dCeUFCUVFGMlFmei8vLzhIY1NJSlFRUnFJZ0pxU1NBSElBSWdDR29pQWtseERRQWdDQ0FISUFscVFRaHFTU0FIUVFScUlBSkpjUTBBSUFGQkEzWkJBV29pRFVIOC8vLy9BM0VpQkVFRGRDRUdJQWNnQkVFQ2RDSUphaUVCSUFnZ0NXb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQWdnQWtFQ2RDSVRhaUlYSUFjZ0Uyb2lFLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlCY2dSeUFUL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUFSSERRQUxJQVFnRFVZTkFpQkgvUnNEREFFTElBZ2hDU0FISVFGQkFBc2hBZ05BSUFKQkhIWWhCeUFKSUFFb0FnQWlBa0VFZGlBSElBSkJCSFJ5Y2lBQ2NpSUhOZ0lBSUFrZ0J5QUJLQUlFUVJ4MGNpSUhRUUYyUWZmdTNic0hjU0FIUVFGMFFlN2R1L2QrY1hJZ0IzSWdBa0YvYzNFMkFnQWdDVUVFYWlFSklBRkJCR29oQVNBR1FRaHFJZ1lnRWtnTkFBc0xJQ0VnSVVFQmFrRURjV3RCQTJ0QkFDQWhRUVpLR3lJRUlDRk9EUUFnRWtFTWJDRXNJQkpCQTNRaExVRURJQ1JCQW10MElTQWdLeUFaUVg5emFpSUJRUU4ySWdaQkFuUWlHVUVFYWlFZElBWkJBV29pSkVIOC8vLy9BM0VpSWtFQ2RDRVJJQ0pCQTNRaEV5QUJRUmhKSVNzZ0FVRVhTeUV1QTBBQ1FBSkFBa0FDUUFKL0FrQWdJU0FFYXlJQlFRRnJJZ1pCQTA4RVFFRi9JUlFnQVVFRlNBMEZJQkpCQUV3TkJpQWxJQTRnQkVFRWNTSUJHeUVOSUNnZ0tTQUJHeUVJSURrRVFFRUFJUUVnTGtVTkJDQU5JQWdnSFdwSklBMGdIV29nQ0V0eERRUWdEU0FSYWlFSklBZ2dFV29oQWdOQUlBZ2dBVUVDZENJR2FpSUhJQWY5QUFJQUlBWWdEV3I5QUFJQS9VLzlDd0lBSUFGQkJHb2lBU0FpUncwQUN5QVRJUUVnSWlBa1JnMEdEQVVMSUE0Z0pTQUJHeUVYUVFBaEJpQXJEUUVnQ0NBWElCMXFTU0FYSUFnZ0hXb2lBVWx4RFFFZ0NDQVhJQmxxUVFocVNTQVhRUVJxSUFGSmNRMEJJQWdnRFNBZGFra2dBU0FOUzNFTkFTQU5JQkZxSVFjZ0NDQVJhaUVKSUJFZ0Yyb2hBdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFRTkFJQWdnQVVFQ2RDSUdhaUlLSUFZZ0Yyb2lHLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ0cvMEFBZ1JCSFAyckFmMVFJRWo5VUVFRC9hc0IvUXlJaUlpSWlJaUlpSWlJaUlpSWlJaUkvVTRnQ3YwQUFnRDlVQ0FHSUExcS9RQUNBUDFQL1FzQ0FDQklJVWNnQVVFRWFpSUJJQ0pIRFFBTElDSWdKRVlOQlNBVElRWWdSLzBiQXd3Q0N5QUdRUUowUVp5aUFXb29BZ0FoRkF3RUN5QVhJUUlnQ0NFSklBMGhCMEVBQ3lFQkEwQWdBVUVjZGlFSUlBa2dDU2dDQUNBQ0tBSUFJZ0ZCQkhZZ0NDQUJRUVIwY25JZ0FpZ0NCRUVjZEhJZ0FYSkJBM1JCaUpHaXhIaHhjaUFIS0FJQVFYOXpjVFlDQUNBSFFRUnFJUWNnQ1VFRWFpRUpJQUpCQkdvaEFpQUdRUWhxSWdZZ0VrZ05BQXNNQWdzZ0NDRUNJQTBoQ1FzRFFDQUNJQUlvQWdBZ0NTZ0NBRUYvYzNFMkFnQWdDVUVFYWlFSklBSkJCR29oQWlBQlFRaHFJZ0VnRWtnTkFBc0xJQkpCQUV3TkFDQWxJQTRnQkVFRWNTSUJHeUVNSUNnZ0tTQUJHeUVZSUE0Z0pTQUJHeUVWSUNrZ0tDQUJHeUVLSUFzZ0JDQVNiRUVDZEdvaEtrRUFJUnNEUUVFQUlRY2dHQ2dDQUNBVWNTSUJCRUFnRzBFRWNpRW5JQklnRzJzaEgwRUFJUUpCQUNFTkEwQWdBaUFRUWFBQmFoQWZJUUlDUUNBTlFRUnFJQjhnRFNBbmFpQVNTQnNpSENBTlRBUkFRUUFoQ1F3QkN5QVVJQXdvQWdCQmYzTnhJU01nS2lBTklCdHlRUUowYWlFV1FRQWhDVUVQSUEwaUNFRUNkQ0l6ZENJUElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSGlBQmNRUkFJQUpCQVhFRVFDQUhJQjV5SVFkQk1pQUlRUUowZENBamNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUI1QkFYUWlNWEVFUUNBQ1FRRnhCRUFnQnlBeGNpRUhJQUZCOUFBZ0NFRUNkSFFnSTNGeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdIa0VDZENJeGNRUkFJQUpCQVhFRVFDQUhJREZ5SVFjZ0FVSG9BU0FJUVFKMGRDQWpjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBZVFRTjBJaDV4UlEwQUlBSkJBWEVFUUNBSElCNXlJUWNnQVVIQUFTQUlRUUowZENBamNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBY1NBMEFDeUFISUROMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRDNGRkRRQWdEMEdSb3NTSUFYRWlCaUFIY1FSQUlCWWdGaWdDQUNBQ1FSOTBjaUFnY2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0ZpQVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdJSEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUJZZ0xXb2lDQ0FJS0FJQUlBSkJIM1J5SUNCeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdGaUFzYWlJR0lBWW9BZ0FnQWtFZmRISWdJSEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRDBFRWRDRVBJQlpCQkdvaEZpQU5RUUZxSWcwZ0hFZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFTlFRRnhSUTBBQ3lBWUlCZ29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBTUtBSUVRWDl6Y1hJMkFnUUxJQXdvQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQnNFUUNBS1FRUnJJZ0lnQWlnQ0FDQVZRUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRlNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBVktBSUVRWDl6SUFaQkgzWnhjallDQkNBWVFRUnFJUmdnREVFRWFpRU1JQXBCQkdvaENpQVZRUVJxSVJVZ0cwRUlhaUliSUJKSURRQUxDeUFFUVFScUlnUWdJVWdOQUFzTFFRRWhBaUFoUVFCTURRTWdFa0VBVEEwRElCSkIvUC8vL3dkeElnWkJBblFoQnlBU1FRUkpJUVJCQUNFSUEwQWdDeUFJSUJKc1FRSjBhaUVCQWtBQ1FDQUVCRUFnQVNFQ1FRQWhDUXdCQ3lBQklBZHFJUUpCQUNFSkEwQWdBU0FKUVFKMGFpSU5JQTM5QUFJQUlrZjlEUC8vLzMvLy8vOS8vLy8vZi8vLy8zLzlUaUpJL2FFQklFZ2dSLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZMOUN3SUFJQWxCQkdvaUNTQUdSdzBBQ3lBR0lna2dFa1lOQVFzRFFDQUNRUUFnQWlnQ0FDSUJRZi8vLy84SGNTSU5heUFOSUFGQkFFZ2JOZ0lBSUFKQkJHb2hBaUFKUVFGcUlna2dFa2NOQUFzTFFRRWhBaUFJUVFGcUlnZ2dJVWNOQUFzTUF3c2dJa1VOQUNBUUlCb29BaGcyQWpRZ0VDQVdOZ0l3SUIxQkFVR3h5d0FnRUVFd2FoQVREQUVMSUJBZ0NUWUNGQ0FRSUJZMkFoQWdIVUVCUWJITEFDQVFRUkJxRUJOQkFDRUNEQUVMUVFBaEFnc2dFRUd3QW1va0FDQUNEUUVNQXdzZ0F5QUJRUWwwUVpDdUFXbzJBbXdDZjBFQUlRY2dBeWdDZENFQkFrQUNRQ0FhS0FJUUlCb29BZ2hySWdvZ0dpZ0NGQ0FhS0FJTWF5SU5iQ0lHSUFNb0FvUUJTd1JBSUFFUUZDQURJQVpCQW5RUUhDSUJOZ0owUVFBZ0FVVU5BeG9nQXlBR05nS0VBUXdCQ3lBQlJRMEJDeUFCUVFBZ0JrRUNkQkFaR2dzZ0F5Z0NlQ0VCQWtBZ0NrRUNhaUlJSUExQkEycEJBbllpRmtFQ2Ftd2lCaUFES0FLSUFVMEVRQ0FHUVFKMElSc01BUXNnQVJBVUlBTWdCa0VDZENJYkVCd2lBVFlDZUNBQkRRQkJBQXdCQ3lBRElBWTJBb2dCSUFGQkFDQWJFQmthQWtBZ0NFVU5BQ0FES0FKNElnUWhBUUpBSUFoQkJFOEVRQ0FFSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBRUlCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dCQ0FXUVFGcUlBaHNRUUowYWlFR1FRQWhCd0pBQWtBZ0NFRUVTUVJBSUFZaEFRd0JDeUFHSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBR0lCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dEVUVEY1NJQlJRMEFRWUNBZ01nRVFZQ0FnTUFFUVlDQWdJQUVJQUZCQWtZYklBRkJBVVliSVJRZ0JDQUlJQlpzUVFKMGFpRUdRUUFoQndKQUlBaEJCRWtFUUNBR0lRRU1BUXNnQmlBSVFYeHhJZ2RCQW5ScUlRRWdGUDBSSVVoQkFDRWJBMEFnQmlBYlFRSjBhaUJJL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFFZ0ZEWUNBQ0FCUVFScUlRRWdCMEVCYWlJSElBaEhEUUFMQ3lBRElBMDJBb0FCSUFNZ0NqWUNmRUVCQzBVTkFpQWFLQUljSUJOcUlodEJIMDRFUUNBaVJRMENJQ1lnR3pZQ0VDQWRRUUpCNThNQUlDWkJFR29RRXd3REN5QURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdnR2lnQ1FBMEFBa0FDUUNBYUtBSTBJZ2RCQVUwRVFDQUhRUUZIRFFFZ0F5Z0NrQUZGRFFFTElCb29BZ1FoQVVFQUlRWUNRQ0FIUVFSUEJFQWdCMEY4Y1NFQ0EwQWdBU0FKUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0NVRUVhaUlKSUFKSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFZZ0FpQUhSZzBCQ3dOQUlBRWdBa0VEZEdvb0FnUWdCbW9oQmlBQ1FRRnFJZ0lnQjBjTkFBc0xJQU1vQXBRQklSQWdCa0VDYWlJSklBTW9BcGdCU3dSQUlCQWdDUkFiSWdGRkRRVWdBeUFCTmdLVUFTQUJJQVpxUVFBN0FBQWdBeUFKTmdLWUFTQURLQUtVQVNFUUlCb29BalJGRFFJZ0dpZ0NCQ0VCQzBFQUlRSkJBQ0VHQTBBZ0FpQVFhaUFCSUFaQkEzUWlCV29pQVNnQ0FDQUJLQUlFRUJZYUlCb29BZ1FpQVNBRmFpZ0NCQ0FDYWlFQ0lBWkJBV29pQmlBYUtBSTBTUTBBQ3d3QkN5QUhRUUZIRFFFZ0dpZ0NCQ2dDQUNFUUN5QWFLQUk4SWdFRVFDQURLQUowSVN3Z0F5QUJOZ0owQ3lBYUtBSXNCRUFnRjBFQ2NTRXRJQmRCQ0hFaEpTQURRUnhxSVJnZ0YwRUJjVVVoTGtFQ0lTRURRQ0FRSUI1cUlRRWdHaWdDQUNBb1FSaHNhaUlnS0FJQUlRVUNRQ0F1SUJzZ0dpZ0NIRUVFYTBvZ0lVRUJTM0p5SWlORkJFQWdBeUFCTmdJVUlBTWdBU0FGYWlJRk5nSVlJQU1nQlM4QUFEc0JjQ0FGUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQTBFQU5nSUlJQU5CQURZQ0FDQURJQUUyQWhBTUFRc2dBeUFCTmdJVUlBTWdBU0FGYWlJR05nSVlJQU1nQmk4QUFEc0JjQ0FHUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQXlBRFFSeHFOZ0pvSUFNZ0FUWUNFQ0FEUVFBMkFnd2dBeUFGQkg4Z0FTMEFBRUVRZEFWQmdJRDhCd3NpQlRZQ0FFRUJJUWtnQVVFQmFpRUNJQUV0QUFFaEJnSi9JQUV0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FEUVFFMkFnd2dCVUdBL2dOeURBSUxJQU1nQWpZQ0VFRUFJUWtnQmtFSmRDQUZhZ3dCQ3lBRElBSTJBaEFnQmtFSWRDQUZjZ3NoQVNBRElBazJBZ2dnQTBHQWdBSTJBZ1FnQXlBQlFRZDBOZ0lBQ3lBZ0tBSUFJU29DUUNBYlFRQk1EUUFnSUNnQ0NFVU5BRUVBSVNrZ0xVRUFSeUFqY1NFbkEwQUNRQUpBQWtBQ1FBSkFJQ0ZCQVdzT0FnRUNBQXNnSTBVRVFFRUJJQnQwSWdGQkFYWWdBWEloQkNBREtBSjhJaFpCQW5RaURTQURLQUo0YWtFTWFpRUJJQU1vQW5RaEJrRUFJUk1nQXlnQ2dBRWlCVUVFVHdSQUlCWkZEUVVnRmtFTWJDRUhJQlpCQTNRaENrRUFJQVJySVFJRFFFRUFJUVVEUUFKQUlBRWlDU2dDQUNJQlJRMEFBa0FnQVVHUWdJQUJjUTBBSUFGQjd3TnhSUTBBSUFNb0FnQWhBUUpBSUFNb0FnZ2lDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnQ1FDQUJJQWgyUVFGeFJRMEFBa0FnQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFDSUFRZ0FTQUlka0VCY1NJSUd6WUNBQ0FES0FKOElRRWdDVUVFYXlJVUlCUW9BZ0JCSUhJMkFnQWdDU0FKS0FJRVFRaHlOZ0lFSUFrZ0NTZ0NBQ0FJUVJOMGNrRVFjallDQUNBbERRQWdDVUYrSUFGclFRSjBhaUlCSUFFb0FnUkJnSUFDY2pZQ0JDQUJJQUVvQWdBZ0NFRWZkSEpCZ0lBRWNqWUNBQ0FCUVFScklnRWdBU2dDQUVHQWdBaHlOZ0lBQ3lBSklBa29BZ0JCZ0lDQUFYSWlBVFlDQUFzQ1FDQUJRWUNCZ0FoeERRQWdBVUg0SG5GRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FKQW44Z0FTQUlka0VCY1VVRVFDQUpLQUlBREFFTEFrQWdDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnZ0JpQU5haUFDSUFRZ0FTQUlka0VCY1NJQkd6WUNBQ0FKUVFScklnZ2dDQ2dDQUVHQUFuSTJBZ0FnQ1NBSktBSUVRY0FBY2pZQ0JDQUpLQUlBSUFGQkZuUnlRWUFCY2d0QmdJQ0FDSElpQVRZQ0FBc0NRQ0FCUVlDSWdNQUFjUTBBSUFGQndQY0JjVVVOQUNBREtBSUFJUUVDUUNBREtBSUlJZ2dOQUNBQlFmOEJSaUVVSUFNb0FoQWlDQzBBQUNFQkFrQWdGRVVFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUVFSElRZ01BZ3RCL3dFaEFTQURRZjhCTmdJQUMwRUlJUWdMSUFNZ0NFRUJheUlJTmdJSUlBa0NmeUFCSUFoMlFRRnhSUVJBSUFrb0FnQU1BUXNDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFwcUlBSWdCQ0FCSUFoMlFRRnhJZ0ViTmdJQUlBbEJCR3NpQ0NBSUtBSUFRWUFRY2pZQ0FDQUpJQWtvQWdSQmdBUnlOZ0lFSUFrb0FnQWdBVUVaZEhKQmdBaHlDMEdBZ0lEQUFISWlBVFlDQUFzZ0FVR0F3SUNBQkhFTkFDQUJRWUM4RDNGRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FCSUFoMlFRRnhCRUFDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFkcUlBSWdCQ0FCSUFoMlFRRnhJZ2diTmdJQUlBTW9BbndoQVNBSlFRUnJJaFFnRkNnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBSUFJQWhCSEhSeVFZREFBSEkyQWdBZ0NTQUJRUUowYWlJQklBRW9BZ1JCQkhJMkFnUWdBU0FCS0FJTVFRRnlOZ0lNSUFFZ0FTZ0NDQ0FJUVJKMGNrRUNjallDQ0FzZ0NTQUpLQUlBUVlDQWdJQUVjallDQUFzZ0JrRUVhaUVHSUFsQkJHb2hBU0FGUVFGcUlnVWdGa2NOQUFzZ0JpQUhhaUVHSUFsQkRHb2hBU0FUUVFScUloTWdBeWdDZ0FFaUJVRjhjVWtOQUFzTElBVWdFMDBOQXlBV1JRMERRUUFoQ2tFQUlBUnJJUTRnQlNFSUEwQUNRQ0FJSUJOR0JFQWdFeUVJREFFTElBRkJCR3NoRkNBQktBSUFJUTFCQUNFQ0EwQUNRQ0FOSUFKQkEyd2lDWFlpQjBHUWdJQUJjUTBBSUFkQjd3TnhSUTBBSUFNb0FnQWhCUUpBSUFNb0FnZ2lCdzBBSUFWQi93RkhJUWdnQXlnQ0VDSUhMUUFBSVFVQ1FDQUlSUVJBSUFWQmtBRlBCRUJCL3dFaEJTQURRZjhCTmdJQURBSUxJQU1nQlRZQ0FDQURJQWRCQVdvMkFoQkJCeUVIREFJTElBTWdCVFlDQUNBRElBZEJBV28yQWhBTFFRZ2hCd3NnQXlBSFFRRnJJZ2MyQWdnQ1FDQUZJQWQyUVFGeFJRMEFJQVlnQWlBV2JFRUNkR29DUUNBSERRQWdCVUgvQVVjaERTQURLQUlRSWdjdEFBQWhCUUpBSUExRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0IwRUJhallDRUVFSElRY01BZ3NnQXlBRk5nSUFJQU1nQjBFQmFqWUNFQXRCQ0NFSEN5QURJQWRCQVdzaUJ6WUNDQ0FPSUFRZ0JTQUhka0VCY1NJSEd6WUNBQ0FES0FKOElRZ2dGQ0FVS0FJQVFTQWdDWFJ5TmdJQUlBRWdBU2dDQUNBSFFSTjBRUkJ5SUFsMGNqWUNBQ0FCSUFFb0FnUkJDQ0FKZEhJMkFnUWdBaUFsY2tVRVFDQUJRWDRnQ0d0QkFuUnFJZ1VnQlNnQ0JFR0FnQUp5TmdJRUlBVWdCU2dDQUNBSFFSOTBja0dBZ0FSeU5nSUFJQVZCQkdzaUJTQUZLQUlBUVlDQUNISTJBZ0FMSUFKQkEwY05BQ0FCSUFoQkFuUnFJZ1VnQlNnQ0JFRUVjallDQkNBRklBVW9BZ3hCQVhJMkFnd2dCU0FGS0FJSUlBZEJFblJ5UVFKeU5nSUlDeUFCSUFFb0FnQkJnSUNBQVNBSmRISWlEVFlDQUNBREtBS0FBU0VGQ3lBRklRZ2dBa0VCYWlJQ0lBVWdFMnRKRFFBTEN5QUdRUVJxSVFZZ0FVRUVhaUVCSUFwQkFXb2lDaUFXUncwQUN3d0RDMEVBSVFsQkFDRVdRUUFoQ2dKQUFrQUNRQUpBSUFNb0Fud2lCRUhBQUVjTkFDQURLQUtBQVVIQUFFY05BRUVBUVFFZ0czUWlBVUVCZGlBQmNpSVRheUVVSUFOQkhHb2hCQ0FES0FKNFFZd0NhaUVHSUFNb0FnZ2hDQ0FES0FJRUlRVWdBeWdDQUNFSElBTW9BbWdoRFNBREtBSjBJUUVnRjBFSWNRMEJBMEJCQUNFS0EwQWdBU0VDSUFZaUNTZ0NBQ0lHQkVBQ1FDQUdRWkNBZ0FGeERRQWdCa0h2QTNFaUFVVU5BQ0FGSUFRZ0F5Z0NiQ0FCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnQ3hzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWdzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlBc2JEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRVhaQkJIRWdDVUVFYXlJTUtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nSUFJQXdnRENnQ0FFRWdjallDQUNBSklBa29BZ1JCQ0hJMkFnUWdDVUdNQW1zaURpQU9LQUlBUVlDQUNISTJBZ0FnQ1VHRUFtc2lEaUFPS0FJQVFZQ0FBbkkyQWdBZ0NVR0lBbXNpRGlBT0tBSUFJQUVnQzNNaUFVRWZkSEpCZ0lBRWNqWUNBQ0FHSUFGQkUzUnlRUkJ5QlNBR0MwR0FnSUFCY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FHUWZnZWNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFOMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRkhaQkJIRWdDVUVFYXlJTUtBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FBaUFNSUF3b0FnQkJnQUp5TmdJQUlBa2dDU2dDQkVIQUFISTJBZ1FnQmlBQklBdHpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FFSUFNb0Ftd2dCa0VHZGlJTFFlOERjV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlN3UkFJQTRvQWdRaERDQU5JQTVCQ0VFTUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VGSUFndEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBTUlBeEZJQkViREFFTElBY2dBVUVRZEdzaEJ5QUZRWUNBQW5GRkJFQWdEaWdDQkNFTUlBMGdEa0VNUVFnZ0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dERVVnRENBUkd3d0JDeUFPS0FJRUN3Ui9JQVVnQkNBSktBSUVRUmQyUVFSeElBbEJCR3NpRENnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUF0QnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRklBdEJrTUFCYWkwQUFDRUxJQUlnRXlBVUlBc0NmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRVJJQTBnRGtFSVFRd2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCRWdFVVVnRlJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlSRWdEU0FPUVF4QkNDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFSUlNBUklCVWJEQUVMSUE0b0FnUUxJZ0ZHR3pZQ2dBUWdEQ0FNS0FJQVFZQVFjallDQUNBSklBa29BZ1JCZ0FSeU5nSUVJQVlnQVNBTGMwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQVFnQXlnQ2JDQUdRUWwySWd0Qjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTEJFQWdEaWdDQkNFTUlBMGdEa0VJUVF3Z0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUVVnQ0MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFWQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUF3Z0RFVWdFUnNNQVFzZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1VVRVFDQU9LQUlFSVF3Z0RTQU9RUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVPSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBRElBNDJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUE0MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQndzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QU1SU0FNSUJFYkRBRUxJQTRvQWdRTEJIOGdCU0FFSUFrb0FnUkJHblpCQkhFZ0NVRUVheUlNS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnQzBHcUFYRnljbkp5SWd0QmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVZ0MwR1F3QUZxTFFBQUlRc2dBaUFUSUJRZ0N3Si9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlSRWdEU0FPUVFoQkRDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0VTQVJSU0FWR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaEVTQU5JQTVCREVFSUlBRWdCVXNpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQkZGSUJFZ0ZSc01BUXNnRGlnQ0JBc2lBVVliTmdLQUJpQU1JQXdvQWdCQmdJQUJjallDQUNBSklBa29BZ1JCZ0NCeU5nSUVJQWtnQ1NnQ2hBSkJCSEkyQW9RQ0lBa2dDU2dDakFKQkFYSTJBb3dDSUFrZ0NTZ0NpQUlnQVNBTGN5SUJRUkowY2tFQ2NqWUNpQUlnQmlBQlFSeDBja0dBd0FCeUJTQUdDMEdBZ0lDQUJISWhCZ3NnQ1NBR05nSUFDeUFKUVFScUlRWWdBa0VFYWlFQklBcEJBV29pQ2tIQUFFY05BQXNnQ1VFTWFpRUdJQUpCaEFacUlRRWdGa0U4U1NBV1FRUnFJUllOQUFzTUFndEJBU0FiZENJQlFRRjJJQUZ5SVJZZ0F5Z0NlQ0lDSUFSQkFuUnFRUXhxSVFZZ0F5Z0NnQUVoQVNBREtBSUlJUWdnQXlnQ0JDRUZJQU1vQWdBaEJ5QURLQUpvSVEwZ0F5Z0NkQ0VUQWtBZ0YwRUljUVJBQWtBZ0FVRUVTUTBBSUFRRVFDQUVRUXhzSVJFZ0JFRURkQ0VrUVFBZ0Ztc2hDeUFEUVJ4cUlSUURRRUVBSVE0RFFDQUdJZ0lvQWdBaUJnUkFBa0FnQmtHUWdJQUJjUTBBSUFaQjd3TnhJZ0ZGRFFBZ0JTQVVJQU1vQW13Z0FXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lFaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRWhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlTRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdFaHNMQkg4Z0JTQVVJQUlvQWdSQkVYWkJCSEVnQWtFRWF5SVZLQUlBUVJOMlFRRnhJQVpCRG5aQkVIRWdCa0VRZGtIQUFIRWdCa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QVdJQXNnRWdKL0lBRWdCMEVRZGswRVFDQUhJQUZCRUhScklRY2dCVUdBZ0FKeEJFQWdEQ2dDQkF3Q0N5QU1LQUlFSVE4Z0RTQU1RUXhCQ0NBQklBVkxJaHdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhBU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSERBRUxJQUZCandGTkJFQWdBeUFNTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QVBSU0FQSUJ3YkRBRUxJQXdvQWdRaER5QU5JQXhCQ0VFTUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VGSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY01BUXNnQlVHUEFVMEVRQ0FESUF3MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBUElBOUZJQndiQ3lJQlJoczJBZ0FnRlNBVktBSUFRU0J5TmdJQUlBSWdBaWdDQkVFSWNqWUNCQ0FHSUFFZ0VuTkJFM1J5UVJCeUJTQUdDMEdBZ0lBQmNpRUdDd0pBSUFaQmdJR0FDSEVOQUNBR1FmZ2VjVVVOQUNBRklCUWdBeWdDYkNBR1FRTjJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFVWRrRUVjU0FDUVFSckloVW9BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBVElBUkJBblJxSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ0ZHR3pZQ0FDQVZJQlVvQWdCQmdBSnlOZ0lBSUFJZ0FpZ0NCRUhBQUhJMkFnUWdCaUFCSUJKelFSWjBja0dBQVhJRklBWUxRWUNBZ0FoeUlRWUxBa0FnQmtHQWlJREFBSEVOQUNBR1FjRDNBWEZGRFFBZ0JTQVVJQU1vQW13Z0JrRUdkaUlTUWU4RGNXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lEeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRHhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdEeHNMQkg4Z0JTQVVJQUlvQWdSQkYzWkJCSEVnQWtFRWF5SVZLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QWthaUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SUJSaHMyQWdBZ0ZTQVZLQUlBUVlBUWNqWUNBQ0FDSUFJb0FnUkJnQVJ5TmdJRUlBWWdBU0FTYzBFWmRISkJnQWh5QlNBR0MwR0FnSURBQUhJaEJnc0NRQ0FHUVlEQWdJQUVjUTBBSUFaQmdMd1BjVVVOQUNBRklCUWdBeWdDYkNBR1FRbDJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFYWRrRUVjU0FDUVFSckloVW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBUklCTnFJQllnQ3lBU0FuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaER5QU5JQXhCREVFSUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQTlGSUE4Z0hCc01BUXNnRENnQ0JDRVBJQTBnREVFSVFRd2dBU0FGU3lJY0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBOGdEMFVnSEJzTElneEdHellDQUNBVklCVW9BZ0JCZ0lBQmNqWUNBQ0FDSUFJb0FnUkJnQ0J5TmdJRUlBTW9BbnhCQW5RZ0Ftb2lBU0FCS0FJRVFRUnlOZ0lFSUFFZ0FTZ0NERUVCY2pZQ0RDQUJJQUVvQWdnZ0RDQVNjeUlCUVJKMGNrRUNjallDQ0NBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBQ0lBWTJBZ0FMSUFKQkJHb2hCaUFUUVFScUlSTWdEa0VCYWlJT0lBUkhEUUFMSUFKQkRHb2hCaUFSSUJOcUlSTWdDVUVFYWlJSklBTW9Bb0FCSWdGQmZIRkpEUUFMREFFTFFRUWdBVUY4Y1NJR0lBWkJCRTBiUVFGcklnWkJmSEZCQkdvaENTQUNJQVpCQVhSQmVIRnFRUlJxSVFZTElBTWdDRFlDQ0NBRElBVTJBZ1FnQXlBSE5nSUFJQU1nRFRZQ2FDQUVSUTBCSUFFZ0NVME5BUU5BSUFFZ0NVWkJBQ0VJSUFraEFVVUVRQU5BSUFNZ0JpQVRJQVFnQ0d4QkFuUnFJQllnQ0NBREtBSjhRUUpxUVFFUVlpQUlRUUZxSWdnZ0F5Z0NnQUVpQVNBSmEwa05BQXNMSUFaQkJHb2hCaUFUUVFScUlSTWdDa0VCYWlJS0lBUkhEUUFMREFFTEFrQWdBVUVFU1EwQUlBUUVRQ0FFUVF4c0lSRWdCRUVEZENFa1FRQWdGbXNoQ3lBRFFSeHFJUlFEUUVFQUlRNERRQ0FHSWdJb0FnQWlCZ1JBQWtBZ0JrR1FnSUFCY1EwQUlBWkI3d054SWdGRkRRQWdCU0FVSUFNb0Ftd2dBV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRWh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0Voc01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJU0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRWhzTEJIOGdCU0FVSUFJb0FnUkJFWFpCQkhFZ0FrRUVheUlWS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SU1SaHMyQWdBZ0ZTQVZLQUlBUVNCeU5nSUFJQUlnQWlnQ0JFRUljallDQkNBQ1FYNGdBeWdDZkd0QkFuUnFJZ0VnQVNnQ0JFR0FnQUp5TmdJRUlBRWdBU2dDQUNBTUlCSnpJZ3hCSDNSeVFZQ0FCSEkyQWdBZ0FVRUVheUlCSUFFb0FnQkJnSUFJY2pZQ0FDQUdJQXhCRTNSeVFSQnlCU0FHQzBHQWdJQUJjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUdRZmdlY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUU4ySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRVVka0VFY1NBQ1FRUnJJaFVvQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVRJQVJCQW5ScUlCWWdDeUFTQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRHlBTklBeEJERUVJSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElBOUZJQThnSEJzTUFRc2dEQ2dDQkNFUElBMGdERUVJUVF3Z0FTQUZTeUljRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUE4Z0QwVWdIQnNMSWdGR0d6WUNBQ0FWSUJVb0FnQkJnQUp5TmdJQUlBSWdBaWdDQkVIQUFISTJBZ1FnQmlBQklCSnpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FVSUFNb0Ftd2dCa0VHZGlJU1FlOERjV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRHh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0R4c01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJUEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRHhzTEJIOGdCU0FVSUFJb0FnUkJGM1pCQkhFZ0FrRUVheUlWS0FJQVFSbDJRUUZ4SUFaQkVuWkJFSEVnQmtFV2RrSEFBSEVnRWtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFrYWlBV0lBc2dFZ0ovSUFFZ0IwRVFkazBFUUNBSElBRkJFSFJySVFjZ0JVR0FnQUp4QkVBZ0RDZ0NCQXdDQ3lBTUtBSUVJUThnRFNBTVFReEJDQ0FCSUFWTElod2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU1JQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQU1nRERZQ0VFRUlJUWdnQVVFSWRDQUhhaUVIREFFTElBRkJqd0ZOQkVBZ0F5QU1OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXNnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUFJTQVBJQndiREFFTElBd29BZ1FoRHlBTklBeEJDRUVNSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUZJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTUFRc2dCVUdQQVUwRVFDQURJQXcyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FQSUE5RklCd2JDeUlCUmhzMkFnQWdGU0FWS0FJQVFZQVFjallDQUNBQ0lBSW9BZ1JCZ0FSeU5nSUVJQVlnQVNBU2MwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRWFka0VFY1NBQ1FRUnJJaFVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVJJQk5xSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ3hHR3pZQ0FDQVZJQlVvQWdCQmdJQUJjallDQUNBQ0lBSW9BZ1JCZ0NCeU5nSUVJQU1vQW54QkFuUWdBbW9pQVNBQktBSUVRUVJ5TmdJRUlBRWdBU2dDREVFQmNqWUNEQ0FCSUFFb0FnZ2dEQ0FTY3lJQlFSSjBja0VDY2pZQ0NDQUdJQUZCSEhSeVFZREFBSElGSUFZTFFZQ0FnSUFFY2lFR0N5QUNJQVkyQWdBTElBSkJCR29oQmlBVFFRUnFJUk1nRGtFQmFpSU9JQVJIRFFBTElBSkJER29oQmlBUklCTnFJUk1nQ1VFRWFpSUpJQU1vQW9BQklnRkJmSEZKRFFBTERBRUxRUVFnQVVGOGNTSUdJQVpCQkUwYlFRRnJJZ1pCZkhGQkJHb2hDU0FDSUFaQkFYUkJlSEZxUVJScUlRWUxJQU1nQ0RZQ0NDQURJQVUyQWdRZ0F5QUhOZ0lBSUFNZ0RUWUNhQ0FFUlEwQUlBRWdDVTBOQUFOQUlBRWdDVVpCQUNFSUlBa2hBVVVFUUFOQUlBTWdCaUFUSUFRZ0NHeEJBblJxSUJZZ0NDQURLQUo4UVFKcVFRQVFZaUFJUVFGcUlnZ2dBeWdDZ0FFaUFTQUphMGtOQUFzTElBWkJCR29oQmlBVFFRUnFJUk1nQ2tFQmFpSUtJQVJIRFFBTEN3d0NDd05BUVFBaENnTkFJQUVoQWlBR0lna29BZ0FpQmdSQUFrQWdCa0dRZ0lBQmNRMEFJQVpCN3dOeElnRkZEUUFnQlNBRUlBTW9BbXdnQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhEQ0FOSUE1QkNFRU1JQUVnQlVzaUN4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQU1JQXhGSUFzYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRU1JQTBnRGtFTVFRZ2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnREVVZ0RDQUxHd3dCQ3lBT0tBSUVDd1IvSUFVZ0JDQUpLQUlFUVJGMlFRUnhJQWxCQkdzaURDZ0NBRUVUZGtFQmNTQUdRUTUyUVJCeElBWkJFSFpCd0FCeElBWkJxZ0Z4Y25KeWNpSUxRWkMrQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZJQXRCa01BQmFpMEFBQ0VMSUFJZ0V5QVVJQXNDZnlBQklBZEJFSFpMQkVBZ0RpZ0NCQ0VSSUEwZ0RrRUlRUXdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRVWdDQzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQkVnRVVVZ0ZSc01BUXNnQnlBQlFSQjBheUVISUFWQmdJQUNjVVVFUUNBT0tBSUVJUkVnRFNBT1FReEJDQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQUZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUlJTQVJJQlViREFFTElBNG9BZ1FMSWdGR0d6WUNBQ0FNSUF3b0FnQkJJSEkyQWdBZ0NTQUpLQUlFUVFoeU5nSUVJQVlnQVNBTGMwRVRkSEpCRUhJRklBWUxRWUNBZ0FGeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFaQitCNXhSUTBBSUFVZ0JDQURLQUpzSUFaQkEzWWlDMEh2QTNGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCUUovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUXdnRFNBT1FRaEJEQ0FCSUFWTEloRWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdEQ0FNUlNBUkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhEQ0FOSUE1QkRFRUlJQUVnQlVzaUVSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUF4RklBd2dFUnNNQVFzZ0RpZ0NCQXNFZnlBRklBUWdDU2dDQkVFVWRrRUVjU0FKUVFScklnd29BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQUxRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCU0FMUVpEQUFXb3RBQUFoQ3lBQ0lCTWdGQ0FMQW44Z0FTQUhRUkIyU3dSQUlBNG9BZ1FoRVNBTklBNUJDRUVNSUFFZ0JVc2lGUnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUTRnQ0MwQUFTRUZJQWd0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlEQUlMSUFNZ0RqWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nRGpZQ0VFRUlJUWdnQlVFSWRDQUhhaUVIQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FSSUJGRklCVWJEQUVMSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkZGQkVBZ0RpZ0NCQ0VSSUEwZ0RrRU1RUWdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0VVVWdFU0FWR3d3QkN5QU9LQUlFQ3lJQlJoczJBb0FDSUF3Z0RDZ0NBRUdBQW5JMkFnQWdDU0FKS0FJRVFjQUFjallDQkNBR0lBRWdDM05CRm5SeVFZQUJjZ1VnQmd0QmdJQ0FDSEloQmdzQ1FDQUdRWUNJZ01BQWNRMEFJQVpCd1BjQmNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFaMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRjNaQkJIRWdDVUVFYXlJTUtBSUFRUmwyUVFGeElBWkJFblpCRUhFZ0JrRVdka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FCQ0FNSUF3b0FnQkJnQkJ5TmdJQUlBa2dDU2dDQkVHQUJISTJBZ1FnQmlBQklBdHpRUmwwY2tHQUNISUZJQVlMUVlDQWdNQUFjaUVHQ3dKQUlBWkJnTUNBZ0FSeERRQWdCa0dBdkE5eFJRMEFJQVVnQkNBREtBSnNJQVpCQ1hZaUMwSHZBM0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJRSi9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlRd2dEU0FPUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0RDQU1SU0FSR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaERDQU5JQTVCREVFSUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQXhGSUF3Z0VSc01BUXNnRGlnQ0JBc0VmeUFGSUFRZ0NTZ0NCRUVhZGtFRWNTQUpRUVJySWd3b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBTFFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJTQUxRWkRBQVdvdEFBQWhDeUFDSUJNZ0ZDQUxBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhFU0FOSUE1QkNFRU1JQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVJJQkZGSUJVYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRVJJQTBnRGtFTVFRZ2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnRVVVZ0VTQVZHd3dCQ3lBT0tBSUVDeUlCUmhzMkFvQUdJQXdnRENnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBS0VBa0VFY2pZQ2hBSWdDU0FKS0FLTUFrRUJjallDakFJZ0NTQUpLQUtJQWlBQklBdHpJZ0ZCRW5SeVFRSnlOZ0tJQWlBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBSklBWTJBZ0FMSUFsQkJHb2hCaUFDUVFScUlRRWdDa0VCYWlJS1FjQUFSdzBBQ3lBSlFReHFJUVlnQWtHRUJtb2hBU0FXUVR4SklCWkJCR29oRmcwQUN3c2dBeUFJTmdJSUlBTWdCVFlDQkNBRElBYzJBZ0FnQXlBTk5nSm9Dd3dDQ3lBalJRUkFRUUVnRzNSQkFYWWhCeUFES0FKOElnUkJBblFpQ2lBREtBSjRha0VNYWlFQklBTW9BblFoQmtFQUlRMGdBeWdDZ0FFaUJVRUVUd1JBSUFSRkRRUWdCRUVNYkNFVElBUkJBM1FoRmtFQUlBZHJJUUlEUUVFQUlRVURRQUpBSUFFaUNTZ0NBQ0lCUlEwQUlBRkJrSUNBQVhGQkVFWUVRQ0FES0FJQUlRRUNRQ0FES0FJSUlnZ05BQ0FCUWY4QlJpRVVJQU1vQWhBaUNDMEFBQ0VCQWtBZ0ZFVUVRQ0FESUFFMkFnQWdBeUFJUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQXlBQk5nSUFJQU1nQ0VFQmFqWUNFRUVISVFnTUFndEIvd0VoQVNBRFFmOEJOZ0lBQzBFSUlRZ0xJQU1nQ0VFQmF5SUlOZ0lJSUFZZ0FpQUhJQUVnQ0haQkFYRWdCaWdDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0F3QUJ5SWdFMkFnQUxJQUZCZ0lHQUNIRkJnQUZHQkVBZ0F5Z0NBQ0VCQWtBZ0F5Z0NDQ0lJRFFBZ0FVSC9BVVloRkNBREtBSVFJZ2d0QUFBaEFRSkFJQlJGQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhCQkJ5RUlEQUlMUWY4QklRRWdBMEgvQVRZQ0FBdEJDQ0VJQ3lBRElBaEJBV3NpQ0RZQ0NDQUdJQXBxSWhRZ0FpQUhJQUVnQ0haQkFYRWdGQ2dDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0FnQVJ5SWdFMkFnQUxJQUZCZ0lpQXdBQnhRWUFJUmdSQUlBTW9BZ0FoQVFKQUlBTW9BZ2dpQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFXYWlJVUlBSWdCeUFCSUFoMlFRRnhJQlFvQWdBaUFVRWZka1liSUFGcU5nSUFJQWtnQ1NnQ0FFR0FnSUFnY2lJQk5nSUFDeUFCUVlEQWdJQUVjVUdBd0FCSERRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUJOcUloUWdBaUFISUFFZ0NIWkJBWEVnRkNnQ0FDSUJRUjkyUmhzZ0FXbzJBZ0FnQ1NBSktBSUFRWUNBZ0lBQ2NqWUNBQXNnQmtFRWFpRUdJQWxCQkdvaEFTQUZRUUZxSWdVZ0JFY05BQXNnQmlBVGFpRUdJQWxCREdvaEFTQU5RUVJxSWcwZ0F5Z0NnQUVpQlVGOGNVa05BQXNMSUFVZ0RVME5BaUFFUlEwQ1FRQWhDa0VBSUFkcklSWWdCU0VKQTBBQ1FDQUpJQTFHQkVBZ0RTRUpEQUVMSUFFb0FnQWhDRUVBSVFJRFFFR1FnSUFCSUFKQkEyd2lDWFFnQ0hGQkVDQUpkRVlFUUNBR0lBSWdCR3hCQW5ScUlRZ2dBeWdDQUNFRkFrQWdBeWdDQ0NJVERRQWdCVUgvQVVjaEZDQURLQUlRSWhNdEFBQWhCUUpBSUJSRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0UwRUJhallDRUVFSElSTU1BZ3NnQXlBRk5nSUFJQU1nRTBFQmFqWUNFQXRCQ0NFVEN5QURJQk5CQVdzaUV6WUNDQ0FJSUJZZ0J5QUZJQk4yUVFGeElBZ29BZ0FpQlVFZmRrWWJJQVZxTmdJQUlBRWdBU2dDQUVHQWdNQUFJQWwwY2lJSU5nSUFJQU1vQW9BQklRVUxJQVVoQ1NBQ1FRRnFJZ0lnQlNBTmEwa05BQXNMSUFaQkJHb2hCaUFCUVFScUlRRWdDa0VCYWlJS0lBUkhEUUFMREFJTElBTW9BbmdoQ0NBREtBSjBJUWtnQXlnQ2dBRWhCUUpBSUFNb0Fud2lGa0hBQUVjTkFDQUZRY0FBUncwQUlBaEJqQUpxSVFWQkFDRVdRUUJCQVNBYmRFRUJkaUlLYXlFVUlBTW9BZ2doQWlBREtBSUVJUVlnQXlnQ0FDRUJJQU1vQW1naERRTkFRUUFoRXdOQUlBa2hCeUFGSWdnb0FnQWlDUVJBSUFVZ0NVR1FnSUFCY1VFUVJnUkFJQVlnR0VFUVFROUJEaUFKUWU4RGNSc2dDVUdBZ01BQWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ0FDSUVRUjkyUmhzZ0JHbzJBZ0FnQ1VHQWdNQUFjaUVKQ3lBSlFZQ0JnQWh4UVlBQlJnUkFJQVlnR0VFUVFROUJEaUFKUWZnZWNSc2dDVUdBZ0lBRWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ2dBSWlCRUVmZGtZYklBUnFOZ0tBQWlBSlFZQ0FnQVJ5SVFrTElBbEJnSWlBd0FCeFFZQUlSZ1JBSUFZZ0dFRVFRUTlCRGlBSlFjRDNBWEViSUFsQmdJQ0FJSEViUVFKMGFpSU5LQUlBSWdRb0FnQWlCV3NoQmdKL0lBVWdBVUVRZGtzRVFDQUVLQUlFSVE0Z0RTQUVRUWhCRENBRklBWkxJZ3diYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVFSUFJdEFBRWhCaUFDTFFBQVFmOEJSZ1JBSUFaQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRElBUTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFRMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnRGlBT1JTQU1Hd3dCQ3lBQklBVkJFSFJySVFFZ0JrR0FnQUp4UlFSQUlBUW9BZ1FoRGlBTklBUkJERUVJSUFVZ0Jrc2lEQnRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUVFnQWkwQUFTRUZJQUl0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNEQUlMSUFNZ0JEWUNFQ0FGUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQkRZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVpCQVhRaUJrR0FnQUpKRFFBTElBNUZJQTRnREJzTUFRc2dCQ2dDQkFzaEJTQUhJQlFnQ2lBRklBY29Bb0FFSWdSQkgzWkdHeUFFYWpZQ2dBUWdDVUdBZ0lBZ2NpRUpDeUFKUVlEQWdJQUVjVUdBd0FCR0JIOGdCaUFZUVJCQkQwRU9JQWxCZ0x3UGNSc2dDVUdBZ0lDQUFuRWJRUUowYWlJTktBSUFJZ1FvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFka3NFUUNBRUtBSUVJUTRnRFNBRVFRaEJEQ0FGSUFaTElnd2JhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUVJQUl0QUFFaEJpQUNMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnd0NDeUFESUFRMkFoQWdCa0VKZENBQmFpRUJRUWNoQWd3QkN5QURJQVEyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXNnQWtFQmF5RUNJQUZCQVhRaEFTQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRWWdEaUFPUlNBTUd3d0JDeUFCSUFWQkVIUnJJUUVnQmtHQWdBSnhSUVJBSUFRb0FnUWhEaUFOSUFSQkRFRUlJQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFRklBSXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUZRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCVUVJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUE1RklBNGdEQnNNQVFzZ0JDZ0NCQXNoQlNBSElCUWdDaUFGSUFjb0FvQUdJZ1JCSDNaR0d5QUVhallDZ0FZZ0NVR0FnSUNBQW5JRklBa0xOZ0lBQ3lBSVFRUnFJUVVnQjBFRWFpRUpJQk5CQVdvaUUwSEFBRWNOQUFzZ0NFRU1haUVGSUFkQmhBWnFJUWtnRmtFOFNTQVdRUVJxSVJZTkFBc2dBeUFDTmdJSUlBTWdCallDQkNBRElBRTJBZ0FnQXlBTk5nSm9EQUlMUVFFZ0czUkJBWFloRkNBSUlCWkJBblFpRVdwQkRHb2hCeUFES0FJSUlRSWdBeWdDQkNFR0lBTW9BZ0FoQVNBREtBSm9JUTFCQUNFRUFrQWdCVUVFU1EwQUlCWUVRQ0FXUVF4c0lRd2dGa0VEZENFVlFRQWdGR3NoRGdOQVFRQWhFd05BSUFjaUNpZ0NBQ0lJQkVBZ0J5QUlRWkNBZ0FGeFFSQkdCRUFnQmlBWVFSQkJEMEVPSUFoQjd3TnhHeUFJUVlDQXdBQnhHMEVDZEdvaURTZ0NBQ0lIS0FJQUlnVnJJUVlDZnlBRklBRkJFSFpOQkVBZ0FTQUZRUkIwYXlFQklBWkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VMSUEwZ0IwRU1RUWdnQlNBR1N5SVNHMm9vQWdBMkFnQURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hCeUFDTFFBQklRVWdBaTBBQUVIL0FVY0VRQ0FESUFjMkFoQkJDQ0VDSUFWQkNIUWdBV29oQVF3QkN5QUZRWThCVFFSQUlBTWdCellDRUNBRlFRbDBJQUZxSVFGQkJ5RUNEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0MwVWdDeUFTR3d3QkN5QUhLQUlFSVFzZ0RTQUhRUWhCRENBRklBWkxJaEliYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVISUFJdEFBRWhCaUFDTFFBQVFmOEJSd1JBSUFNZ0J6WUNFRUVJSVFJZ0JrRUlkQ0FCYWlFQkRBRUxJQVpCandGTkJFQWdBeUFITmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWdzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnQ3lBTFJTQVNHd3NoQlNBSklBNGdGQ0FGSUFrb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJREFBSEloQ0FzZ0NFR0FnWUFJY1VHQUFVWUVRQ0FHSUJoQkVFRVBRUTRnQ0VINEhuRWJJQWhCZ0lDQUJIRWJRUUowYWlJTktBSUFJZ2NvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFkazBFUUNBQklBVkJFSFJySVFFZ0JrR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXNnRFNBSFFReEJDQ0FGSUFaTEloSWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUhJQUl0QUFFaEJTQUNMUUFBUWY4QlJ3UkFJQU1nQnpZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCREFFTElBVkJqd0ZOQkVBZ0F5QUhOZ0lRSUFWQkNYUWdBV29oQVVFSElRSU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQUdRUUYwSWdaQmdJQUNTUTBBQ3lBTFJTQUxJQkliREFFTElBY29BZ1FoQ3lBTklBZEJDRUVNSUFVZ0Jrc2lFaHRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUWNnQWkwQUFTRUdJQUl0QUFCQi93RkhCRUFnQXlBSE5nSVFRUWdoQWlBR1FRaDBJQUZxSVFFTUFRc2dCa0dQQVUwRVFDQURJQWMyQWhBZ0JrRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhCaUFMSUF0RklCSWJDeUVGSUFrZ0VXb2lCeUFPSUJRZ0JTQUhLQUlBSWdkQkgzWkdHeUFIYWpZQ0FDQUlRWUNBZ0FSeUlRZ0xJQWhCZ0lpQXdBQnhRWUFJUmdSQUlBWWdHRUVRUVE5QkRpQUlRY0QzQVhFYklBaEJnSUNBSUhFYlFRSjBhaUlOS0FJQUlnY29BZ0FpQldzaEJnSi9JQVVnQVVFUWRrMEVRQ0FCSUFWQkVIUnJJUUVnQmtHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRc2dEU0FIUVF4QkNDQUZJQVpMSWhJYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFNb0FoQWlBa0VCYWlFSElBSXRBQUVoQlNBQ0xRQUFRZjhCUndSQUlBTWdCellDRUVFSUlRSWdCVUVJZENBQmFpRUJEQUVMSUFWQmp3Rk5CRUFnQXlBSE5nSVFJQVZCQ1hRZ0FXb2hBVUVISVFJTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFjb0FnUWhDeUFOSUFkQkNFRU1JQVVnQmtzaUVodHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRY2dBaTBBQVNFR0lBSXRBQUJCL3dGSEJFQWdBeUFITmdJUVFRZ2hBaUFHUVFoMElBRnFJUUVNQVFzZ0JrR1BBVTBFUUNBRElBYzJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQUxJQXRGSUJJYkN5RUZJQWtnRldvaUJ5QU9JQlFnQlNBSEtBSUFJZ2RCSDNaR0d5QUhhallDQUNBSVFZQ0FnQ0J5SVFnTElBaEJnTUNBZ0FSeFFZREFBRVlFZnlBR0lCaEJFRUVQUVE0Z0NFR0F2QTl4R3lBSVFZQ0FnSUFDY1J0QkFuUnFJZzBvQWdBaUJ5Z0NBQ0lGYXlFR0FuOGdCU0FCUVJCMlRRUkFJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaEN5QU5JQWRCREVFSUlBVWdCa3NpRWh0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQXlnQ0VDSUNRUUZxSVFjZ0FpMEFBU0VGSUFJdEFBQkIvd0ZIQkVBZ0F5QUhOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRU1BUXNnQlVHUEFVMEVRQ0FESUFjMkFoQWdCVUVKZENBQmFpRUJRUWNoQWd3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0N5QUNRUUZySVFJZ0FVRUJkQ0VCSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQXRGSUFzZ0Voc01BUXNnQnlnQ0JDRUxJQTBnQjBFSVFRd2dCU0FHU3lJU0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJ5QUNMUUFCSVFZZ0FpMEFBRUgvQVVjRVFDQURJQWMyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXdCQ3lBR1FZOEJUUVJBSUFNZ0J6WUNFQ0FHUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQXlnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFR0lBc2dDMFVnRWhzTElRVWdDU0FNYWlJSElBNGdGQ0FGSUFjb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJQ0FnQUp5QlNBSUN6WUNBQXNnQ2tFRWFpRUhJQWxCQkdvaENTQVRRUUZxSWhNZ0ZrY05BQXNnQ2tFTWFpRUhJQWtnREdvaENTQUVRUVJxSWdRZ0F5Z0NnQUVpQlVGOGNVa05BQXNNQVF0QkJDQUZRWHh4SWdjZ0IwRUVUUnRCQVdzaUIwRjhjVUVFYWlFRUlBZ2dCMEVCZEVGNGNXcEJGR29oQndzZ0F5QUNOZ0lJSUFNZ0JqWUNCQ0FESUFFMkFnQWdBeUFOTmdKb0lCWkZEUUVnQkNBRlR3MEJRUUFoQ2tFQUlCUnJJUXNnQlNFQkEwQUNRQ0FCSUFSR0JFQWdCQ0VCREFFTElBY29BZ0FoQWtFQUlRZ0RRRUdRZ0lBQklBaEJBMndpRFhRZ0FuRkJFQ0FOZEVZRVFDQUpJQWdnRm14QkFuUnFJUTRnQXlBWVFSQkJEMEVPSUFJZ0RYWWlBVUh2QTNFYklBRkJnSURBQUhFYlFRSjBhaUlUTmdKb0lBTWdBeWdDQkNBVEtBSUFJZ0lvQWdBaUFXc2lCVFlDQkFKL0lBRWdBeWdDQUNJR1FSQjJTd1JBSUFJb0FnUWhEQ0FESUFFMkFnUWdFeUFDUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnSkJBV29oRXlBQ0xRQUJJUVVnQWkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUdRWUQrQTJvaEJrRUlJUUlNQWdzZ0F5QVROZ0lRSUFWQkNYUWdCbW9oQmtFSElRSU1BUXNnQXlBVE5nSVFRUWdoQWlBRlFRaDBJQVpxSVFZTElBTWdBa0VCYXlJQ05nSUlJQU1nQmtFQmRDSUdOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QU1JQXhGSUJFYkRBRUxJQU1nQmlBQlFSQjBheUlHTmdJQUlBVkJnSUFDY1VVRVFDQUNLQUlFSVF3Z0V5QUNRUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hFeUFDTFFBQklRRWdBaTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBR1FZRCtBMm9oQmtFSUlRSU1BZ3NnQXlBVE5nSVFJQUZCQ1hRZ0Jtb2hCa0VISVFJTUFRc2dBeUFUTmdJUVFRZ2hBaUFCUVFoMElBWnFJUVlMSUFNZ0FrRUJheUlDTmdJSUlBTWdCa0VCZENJR05nSUFJQU1nQlVFQmRDSUZOZ0lFSUFWQmdJQUNTUTBBQ3lBTVJTQU1JQkViREFFTElBSW9BZ1FMSVFFZ0RpQUxJQlFnQVNBT0tBSUFJZ1ZCSDNaR0d5QUZhallDQUNBSElBY29BZ0JCZ0lEQUFDQU5kSElpQWpZQ0FDQURLQUtBQVNFRkN5QUlRUUZxSWdnZ0JTSUJJQVJyU1EwQUN3c2dCMEVFYWlFSElBbEJCR29oQ1NBS1FRRnFJZ29nRmtjTkFBc01BUXRCQUNFUlFRQWhGQUpBQWtBQ1FBSkFJQU1vQW53aUZrSEFBRWNOQUNBREtBS0FBVUhBQUVjTkFFRUFRUUVnRzNRaUFVRUJkaUFCY2lJT2F5RU1JQU5CNUFCcUlRY2dBMEhnQUdvaENDQURRUnhxSVJZZ0F5Z0NlRUdNQW1vaEJpQURLQUlJSVFRZ0F5Z0NCQ0VCSUFNb0FnQWhBaUFES0FKb0lRa2dBeWdDZENFRklCZEJDSEVOQVFOQVFRQWhGUU5BSUFVaEV3SkFBa0FDZnlBR0lnMG9BZ0FpQmtVRVFDQUJJQWdvQWdBaUJTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQVVvQWdRaENTQUlJQVZCQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUZRUUZxSVFRZ0JTMEFBU0VCSUFVdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSklBbEZJQW9iREFFTElBSWdCa0VRZEdzaEFpQUJRWUNBQW5GRkJFQWdCU2dDQkNFSklBZ2dCVUVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnWkJBV29oQkNBR0xRQUJJUVVnQmkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDVVVnQ1NBS0d3d0JDeUFGS0FJRUMwVUVRQ0FJSVFrTUJBc2dBU0FIS0FJQUlnVW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FGS0FJRUlRa2dCeUFGUVFoQkRDQUJJQVpKSWdzYmFpZ0NBQ0lGTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUpJQWxGSUFzYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUpJQWNnQlVFTVFRZ2dBU0FHU1NJTEcyb29BZ0FpQlRZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJpQUVMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBVW9BZ1FMSVFvZ0FTQUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWNnQlVFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ3hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dCeUFGUVF4QkNDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFVb0FnUUxJUVZCQUNFR0lBY2hDUUpBQWtBQ1FBSi9Ba0FDUUNBRklBcEJBWFJ5RGdRQUFRTUZDQXNnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJSktBSUFRUk4yUVFGeGNpSVJRWkMrQVdvdEFBQkJBblJxSWdvb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDeUFLSUFWQkNFRU1JQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lGUVFGcUlRUWdCUzBBQVNFQklBVXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUFvYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUxJQW9nQlVFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBRktBSUVDeUVGSUJNZ0RpQU1JQVVnRVVHUXdBRnFMUUFBSWdaR0d6WUNBQ0FKSUFrb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQTFCakFKcklna2dDU2dDQUVHQWdBaHlOZ0lBSUExQmhBSnJJZ2tnQ1NnQ0FFR0FnQUp5TmdJQUlBMUJpQUpySWdrZ0NTZ0NBQ0FGSUFaeklnVkJIM1J5UVlDQUJISTJBZ0FnQlVFVGRDQUJJQllnQXlnQ2JDMEFBa0VDZEdvaUNTZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VLSUFrZ0JVRUlRUXdnQVNBR1NTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hDU0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFKTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0VSc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUW9nQ1NBRlFReEJDQ0FCSUFaSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFrMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQWsyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQkViREFFTElBVW9BZ1FMSVFWQkVISWlCaUFGUlEwQkdnc2dBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlLS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnQmtFRGRrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ3lnQ0FDSUpLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ1NnQ0JDRVJJQXNnQ1VFSVFRd2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnQ3hzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FKS0FJRUlSRWdDeUFKUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQlNBSkxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBc2JEQUVMSUFrb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ1VZYk5nS0FBaUFLSUFvb0FnQkJnQUp5TmdJQUlBMGdEU2dDQkVIQUFISTJBZ1FnQmlBRklBbHpRUlowY2tHQUFYSUxJUVlnQVNBV0lBTW9BbXdnQmtFR2RrSHZBM0ZxTFFBQVFRSjBhaUlLS0FJQUlna29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FKS0FJRUlRc2dDaUFKUVFoQkRDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FLR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQWtvQWdRaEN5QUtJQWxCREVFSUlBRWdCVWtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VGSUFrdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0Noc01BUXNnQ1NnQ0JBdEZEUUVMSUFFZ0ZpQU5LQUlFUVJkMlFRUnhJQTFCQkdzaUNpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElBWkJCblpCcWdGeGNuSnljaUlTUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUZheUVCQW44Z0JTQUNRUkIyU3dSQUlBa29BZ1FoRVNBTElBbEJDRUVNSUFFZ0JVa2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUJJQWt0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FSSUJGRklBc2JEQUVMSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0NTZ0NCQ0VSSUFzZ0NVRU1RUWdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0VVVWdFU0FMR3d3QkN5QUpLQUlFQ3lFRklCTWdEaUFNSUFVZ0VrR1F3QUZxTFFBQUlnbEdHellDZ0FRZ0NpQUtLQUlBUVlBUWNqWUNBQ0FOSUEwb0FnUkJnQVJ5TmdJRUlBWWdCU0FKYzBFWmRISkJnQWh5SVFZTElBRWdGaUFES0FKc0lBWkJDWFpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VMSUFrZ0NrRUlRUXdnQVNBRlNTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQXNnQzBVZ0VSc01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUXNnQ1NBS1FReEJDQ0FCSUFWSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQkViREFFTElBb29BZ1FMUlEwREN5QUJJQllnRFNnQ0JFRWFka0VFY1NBTlFRUnJJaEVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FHUVFsMlFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzTUFRc0NRQ0FHUVpDQWdBRnhEUUFnQVNBV0lBTW9BbXdnQmtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVJHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRVJzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJFWFpCQkhFZ0RVRUVheUlMS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVFZ2NqWUNBQ0FOSUEwb0FnUkJDSEkyQWdRZ0RVR01BbXNpQ3lBTEtBSUFRWUNBQ0hJMkFnQWdEVUdFQW1zaUN5QUxLQUlBUVlDQUFuSTJBZ0FnRFVHSUFtc2lDeUFMS0FJQUlBVWdDbk1pQlVFZmRISkJnSUFFY2pZQ0FDQUdJQVZCRTNSeVFSQnlJUVlMQWtBZ0JrR0FnWUFJY1EwQUlBRWdGaUFES0FKc0lBWkJBM1lpRVVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVNHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFaHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRWhzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlMS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnRVVHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdLQUFpQUxJQXNvQWdCQmdBSnlOZ0lBSUEwZ0RTZ0NCRUhBQUhJMkFnUWdCaUFGSUFwelFSWjBja0dBQVhJaEJnc0NRQ0FHUVlDSWdNQUFjUTBBSUFFZ0ZpQURLQUpzSUFaQkJuWWlFVUh2QTNGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFWSkloSWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBU0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFvb0FnUWhDeUFKSUFwQkRFRUlJQUVnQlVraUVodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dFaHNNQVFzZ0NpZ0NCQXRGRFFBZ0FTQVdJQTBvQWdSQkYzWkJCSEVnRFVFRWF5SUxLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFVUdxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VSSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUkVnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNrWWJOZ0tBQkNBTElBc29BZ0JCZ0JCeU5nSUFJQTBnRFNnQ0JFR0FCSEkyQWdRZ0JpQUZJQXB6UVJsMGNrR0FDSEloQmdzZ0JrR0F3SUNBQkhFTkFTQUJJQllnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMEJJQUVnRmlBTktBSUVRUnAyUVFSeElBMUJCR3NpRVNnQ0FFRWNka0VCY1NBR1FSVjJRUkJ4SUFaQkdYWkJ3QUJ4SUJKQnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXdzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlSSWdDU0FLUVFoQkRDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0VpQVNSU0FQR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEVpQUpJQXBCREVFSUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQkpGSUJJZ0R4c01BUXNnQ2lnQ0JBc2hCU0FUSUE0Z0RDQUZJQXRCa01BQmFpMEFBQ0lLUmhzMkFvQUdJQkVnRVNnQ0FFR0FnQUZ5TmdJQUlBMGdEU2dDQkVHQUlISTJBZ1FnQlNBS2N5SUZRUngwSUFaeUlBMGdEU2dDaEFKQkJISTJBb1FDSUEwZ0RTZ0NqQUpCQVhJMkFvd0NJQTBnRFNnQ2lBSWdCVUVTZEhKQkFuSTJBb2dDUVlEQUFISWhCZ3NnRFNBR1FmLy8vN1o3Y1RZQ0FBc2dEVUVFYWlFR0lCTkJCR29oQlNBVlFRRnFJaFZCd0FCSERRQUxJQTFCREdvaEJpQVRRWVFHYWlFRklCUkJQRWtnRkVFRWFpRVVEUUFMREFJTFFRRWdHM1FpQVVFQmRpQUJjaUVPSUFNb0FuZ2lCeUFXUVFKMGFrRU1haUVGSUFNb0FvQUJJUVlnQXlnQ0NDRUVJQU1vQWdRaEFTQURLQUlBSVFJZ0F5Z0NhQ0VKSUFNb0FuUWhFeUFYUVFoeEJFQUNRQ0FHUVFSSkRRQWdGZ1JBSUFOQjVBQnFJUWdnQTBIZ0FHb2hEU0FXUVF4c0lTUWdGa0VEZENFY1FRQWdEbXNoRlNBRFFSeHFJUXdEUUVFQUlSSURRQUpBQWtBQ2Z5QUZJZ2NvQWdBaUJRUkFBa0FnQlVHUWdJQUJjUTBBSUFFZ0RDQURLQUpzSUFWQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFTElBa2dDa0VNUVFnZ0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDMFVnQ3lBUEd3d0JDeUFLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVpKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0N5QUxSU0FQR3d0RkRRQWdBU0FNSUFjb0FnUkJFWFpCQkhFZ0IwRUVheUlMS0FJQVFSTjJRUUZ4SUFWQkRuWkJFSEVnQlVFUWRrSEFBSEVnQlVHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFUElBa2dDa0VNUVFnZ0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBZkd3d0JDeUFLS0FJRUlROGdDU0FLUVFoQkRDQUJJQVpKSWg4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FmR3dzaEJpQVRJQTRnRlNBR0lCbEJrTUFCYWkwQUFDSUtSaHMyQWdBZ0N5QUxLQUlBUVNCeU5nSUFJQWNnQnlnQ0JFRUljallDQkNBRklBWWdDbk5CRTNSeVFSQnlJUVVMQWtBZ0JVR0FnWUFJY1EwQUlBRWdEQ0FES0FKc0lBVkJBM1lpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVVka0VFY1NBSFFRUnJJZ3NvQWdCQkZuWkJBWEVnQlVFUGRrRVFjU0FGUVJOMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdGa0VDZEdvZ0RpQVZJQVlnR1VHUXdBRnFMUUFBSWdwR0d6WUNBQ0FMSUFzb0FnQkJnQUp5TmdJQUlBY2dCeWdDQkVIQUFISTJBZ1FnQlNBR0lBcHpRUlowY2tHQUFYSWhCUXNDUUNBRlFZQ0lnTUFBY1EwQUlBRWdEQ0FES0FKc0lBVkJCbllpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVhka0VFY1NBSFFRUnJJZ3NvQWdCQkdYWkJBWEVnQlVFU2RrRVFjU0FGUVJaMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUxJQXNvQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFwelFSbDBja0dBQ0hJaEJRc2dCVUdBd0lDQUJIRU5BaUFCSUF3Z0F5Z0NiQ0FGUVFsMklnOUI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FHU1NJWkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVpHd3dCQ3lBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFaSkloa2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBWkd3dEZEUUlnQVNBTUlBY29BZ1JCR25aQkJIRWdCMEVFYXlJTEtBSUFRUngyUVFGeElBVkJGWFpCRUhFZ0JVRVpka0hBQUhFZ0QwR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackRBRUxJQUVnRFNnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQTBnQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUtHd3dCQ3lBR0tBSUVJUWtnRFNBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBS0d3dEZCRUFnRFNFSkRBTUxJQUVnQ0NnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0FpQmpZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBWW9BZ1FoQ1NBSUlBWkJDRUVNSUFFZ0JVa2lDeHRxS0FJQUlnWTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFrZ0NVVWdDeHNMSVFvZ0FTQUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUxHd3dCQ3lBR0tBSUVJUWtnQ0NBR1FRaEJEQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBTEd3c2hCa0VBSVFVZ0NDRUpBa0FDUUFKQUFuOENRQUpBSUFZZ0NrRUJkSElPQkFBQkF3VUhDeUFCSUF3Z0J5Z0NCRUVSZGtFRWNTQUhRUVJySWdrb0FnQkJFM1pCQVhGeUlnOUJrTDRCYWkwQUFFRUNkR29pQ2lnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUxJQW9nQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBR0tBSUVJUXNnQ2lBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3c2hCU0FUSUE0Z0ZTQUZJQTlCa01BQmFpMEFBQ0lHUmhzMkFnQWdDU0FKS0FJQVFTQnlOZ0lBSUFjZ0J5Z0NCRUVJY2pZQ0JDQUZJQVp6UVJOMElBRWdEQ0FES0FKc0xRQUNRUUowYWlJSktBSUFJZ1lvQWdBaUJXc2hBUUovSUFVZ0FrRVFkazBFUUNBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUW9nQ1NBR1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJ3UkFJQU1nQ1RZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUpOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQThiREFFTElBWW9BZ1FoQ2lBSklBWkJDRUVNSUFFZ0JVa2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJR1FRRnFJUWtnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQURJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FLSUFwRklBOGJDeUVHUVJCeUlnVWdCa1VOQVJvTElBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDaWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQVZCQTNaQnFnRnhjbkp5Y2lJWlFaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FKS0FJRURBSUxJQWtvQWdRaER5QUxJQWxCREVFSUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VHSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FESUFRMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTlGSUE4Z0N4c01BUXNnQ1NnQ0JDRVBJQXNnQ1VFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBOGdEMFVnQ3hzTElRWWdFeUFXUVFKMGFpQU9JQlVnQmlBWlFaREFBV290QUFBaUNVWWJOZ0lBSUFvZ0NpZ0NBRUdBQW5JMkFnQWdCeUFIS0FJRVFjQUFjallDQkNBRklBWWdDWE5CRm5SeVFZQUJjZ3NoQlNBQklBd2dBeWdDYkNBRlFRWjJRZThEY1dvdEFBQkJBblJxSWdvb0FnQWlDU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSktBSUVEQUlMSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFR0lBa3RBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBUTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQ0VMSUFvZ0NVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVY0VRQ0FESUFRMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc0xSUTBCQ3lBQklBd2dCeWdDQkVFWGRrRUVjU0FIUVFScklnb29BZ0JCR1haQkFYRWdCVUVTZGtFUWNTQUZRUloyUWNBQWNTQUZRUVoyUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUxLQUlBSWdrb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDU2dDQkF3Q0N5QUpLQUlFSVE4Z0N5QUpRUXhCQ0NBQklBWkpJZ3NiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUNVRUJhaUVFSUFrdEFBRWhCaUFKTFFBQVFmOEJSd1JBSUFNZ0JEWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFFTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUFzYkRBRUxJQWtvQWdRaER5QUxJQWxCQ0VFTUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQXNiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ2xHR3pZQ0FDQUtJQW9vQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFselFSbDBja0dBQ0hJaEJRc2dBU0FNSUFNb0Ftd2dCVUVKZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFnc2dBU0FNSUFjb0FnUkJHblpCQkhFZ0IwRUVheUlMS0FJQVFSeDJRUUZ4SUFWQkZYWkJFSEVnQlVFWmRrSEFBSEVnQlVFSmRrR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackN5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhHU0FKSUFwQkRFRUlJQUVnQmtraUh4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFR0lBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBbzJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUJsRklCa2dIeHNNQVFzZ0NpZ0NCQ0VaSUFrZ0NrRUlRUXdnQVNBR1NTSWZHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVY0VRQ0FESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQmtnR1VVZ0h4c0xJUVlnRXlBa2FpQU9JQlVnQmlBUFFaREFBV290QUFBaUNrWWJOZ0lBSUFzZ0N5Z0NBRUdBZ0FGeU5nSUFJQWNnQnlnQ0JFR0FJSEkyQWdRZ0JpQUtjeUlHUVJ4MElBVnlJQU1vQW54QkFuUWdCMm9pQlNBRktBSUVRUVJ5TmdJRUlBVWdCU2dDREVFQmNqWUNEQ0FGSUFVb0FnZ2dCa0VTZEhKQkFuSTJBZ2hCZ01BQWNpRUZDeUFISUFWQi8vLy90bnR4TmdJQUN5QUhRUVJxSVFVZ0UwRUVhaUVUSUJKQkFXb2lFaUFXUncwQUN5QUhRUXhxSVFVZ0V5QWthaUVUSUJSQkJHb2lGQ0FES0FLQUFTSUdRWHh4U1EwQUN3d0JDMEVFSUFaQmZIRWlCU0FGUVFSTkcwRUJheUlGUVh4eFFRUnFJUlFnQnlBRlFRRjBRWGh4YWtFVWFpRUZDeUFESUFRMkFnZ2dBeUFCTmdJRUlBTWdBallDQUNBRElBazJBbWdnRmtVTkF5QUdJQlJORFFNRFFFRUFJUVFnRkNBREtBS0FBVWNFUUFOQUlBTWdCU0FUSUFRZ0ZteEJBblJxSUE0Z0JFRUJFR0VnQkVFQmFpSUVJQU1vQW9BQklCUnJTUTBBQ3dzZ0JTQUZLQUlBUWYvLy83WjdjVFlDQUNBVFFRUnFJUk1nQlVFRWFpRUZJQkZCQVdvaUVTQVdSdzBBQ3d3REN3SkFJQVpCQkVrTkFDQVdCRUFnQTBIa0FHb2hDQ0FEUWVBQWFpRU5JQlpCREd3aEpDQVdRUU4wSVJ4QkFDQU9heUVWSUFOQkhHb2hEQU5BUVFBaEVnTkFBa0FDUUFKL0lBVWlCeWdDQUNJRkJFQUNRQ0FGUVpDQWdBRnhEUUFnQVNBTUlBTW9BbXdnQlVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFDQUJJQXdnQnlnQ0JFRVJka0VFY1NBSFFRUnJJZ3NvQWdCQkUzWkJBWEVnQlVFT2RrRVFjU0FGUVJCMlFjQUFjU0FGUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFS0lCTWdEaUFWSUFvZ0dVR1F3QUZxTFFBQUlnOUdHellDQUNBTElBc29BZ0JCSUhJMkFnQWdCeUFIS0FJRVFRaHlOZ0lFSUFkQmZpQURLQUo4YTBFQ2RHb2lCaUFHS0FJRVFZQ0FBbkkyQWdRZ0JpQUdLQUlBSUFvZ0QzTWlDa0VmZEhKQmdJQUVjallDQUNBR1FRUnJJZ1lnQmlnQ0FFR0FnQWh5TmdJQUlBVWdDa0VUZEhKQkVISWhCUXNDUUNBRlFZQ0JnQWh4RFFBZ0FTQU1JQU1vQW13Z0JVRURkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDeWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QVdRUUowYWlBT0lCVWdCaUFaUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFR0FBbkkyQWdBZ0J5QUhLQUlFUWNBQWNqWUNCQ0FGSUFZZ0NuTkJGblJ5UVlBQmNpRUZDd0pBSUFWQmdJaUF3QUJ4RFFBZ0FTQU1JQU1vQW13Z0JVRUdkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSZDJRUVJ4SUFkQkJHc2lDeWdDQUVFWmRrRUJjU0FGUVJKMlFSQnhJQVZCRm5aQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ25OQkdYUnlRWUFJY2lFRkN5QUZRWURBZ0lBRWNRMENJQUVnRENBREtBSnNJQVZCQ1hZaUQwSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVpKSWhrYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQmlBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQXlBS05nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCa2JEQUVMSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQmtraUdSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUJrYkMwVU5BaUFCSUF3Z0J5Z0NCRUVhZGtFRWNTQUhRUVJySWdzb0FnQkJISFpCQVhFZ0JVRVZka0VRY1NBRlFSbDJRY0FBY1NBUFFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTUFRc2dBU0FOS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dEU0FHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFZb0FnUWhDU0FOSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFvYkMwVUVRQ0FOSVFrTUF3c2dBU0FJS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBQ0lHTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JpZ0NCQ0VKSUFnZ0JrRUlRUXdnQVNBRlNTSUxHMm9vQWdBaUJqWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ1NBSlJTQUxHd3NoQ2lBQklBWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFZb0FnUWhDU0FJSUFaQkNFRU1JQUVnQlVraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFzYkN5RUdRUUFoQlNBSUlRa0NRQUpBQWtBQ2Z3SkFBa0FnQmlBS1FRRjBjZzRFQUFFREJRY0xJQUVnRENBSEtBSUVRUkYyUVFSeElBZEJCR3NpQ1NnQ0FFRVRka0VCY1hJaUQwR1F2Z0ZxTFFBQVFRSjBhaUlLS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRc2dDaUFHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUFZb0FnUWhDeUFLSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUFvYkN5RUdJQk1nRGlBVklBWWdEMEdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUpJQWtvQWdCQklISTJBZ0FnQnlBSEtBSUVRUWh5TmdJRUlBZEJmaUFES0FKOGEwRUNkR29pQlNBRktBSUVRWUNBQW5JMkFnUWdCU0FGS0FJQUlBWWdDbk1pQmtFZmRISkJnSUFFY2pZQ0FDQUZRUVJySWdVZ0JTZ0NBRUdBZ0FoeU5nSUFJQVpCRTNRZ0FTQU1JQU1vQW13dEFBSkJBblJxSWdrb0FnQWlCaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJUUVJBSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhDaUFKSUFaQkRFRUlJQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRa2dCaTBBQVNFRklBWXRBQUJCL3dGSEJFQWdBeUFKTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEeHNNQVFzZ0JpZ0NCQ0VLSUFrZ0JrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdaQkFXb2hDU0FHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FESUFrMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQW9nQ2tVZ0R4c0xJUVpCRUhJaUJTQUdSUTBCR2dzZ0FTQU1JQWNvQWdSQkZIWkJCSEVnQjBFRWF5SUtLQUlBUVJaMlFRRnhJQVZCRDNaQkVIRWdCVUVUZGtIQUFIRWdCVUVEZGtHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDeWdDQUNJSktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWtvQWdRTUFnc2dDU2dDQkNFUElBc2dDVUVNUVFnZ0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVlnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQkRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBTEd3d0JDeUFKS0FJRUlROGdDeUFKUVFoQkRDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FMR3dzaEJpQVRJQlpCQW5ScUlBNGdGU0FHSUJsQmtNQUJhaTBBQUNJSlJoczJBZ0FnQ2lBS0tBSUFRWUFDY2pZQ0FDQUhJQWNvQWdSQndBQnlOZ0lFSUFVZ0JpQUpjMEVXZEhKQmdBRnlDeUVGSUFFZ0RDQURLQUpzSUFWQkJuWkI3d054YWkwQUFFRUNkR29pQ2lnQ0FDSUpLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFrb0FnUU1BZ3NnQ1NnQ0JDRUxJQW9nQ1VFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFZZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0JEWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBS0d3dEZEUUVMSUFFZ0RDQUhLQUlFUVJkMlFRUnhJQWRCQkdzaUNpZ0NBRUVaZGtFQmNTQUZRUkoyUVJCeElBVkJGblpCd0FCeElBVkJCblpCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUpLQUlFREFJTElBa29BZ1FoRHlBTElBbEJERUVJSUFFZ0Jra2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUdJQWt0QUFCQi93RkhCRUFnQXlBRU5nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQVEyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnQ3hzTUFRc2dDU2dDQkNFUElBc2dDVUVJUVF3Z0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUUVnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdDeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDVVliTmdJQUlBb2dDaWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ1hOQkdYUnlRWUFJY2lFRkN5QUJJQXdnQXlnQ2JDQUZRUWwyUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRHhzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdEeHNMUlEwQ0N5QUJJQXdnQnlnQ0JFRWFka0VFY1NBSFFRUnJJZ3NvQWdCQkhIWkJBWEVnQlVFVmRrRVFjU0FGUVJsMlFjQUFjU0FGUVFsMlFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTElRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVpJQWtnQ2tFTVFRZ2dBU0FHU1NJZkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnR1VVZ0dTQWZHd3dCQ3lBS0tBSUVJUmtnQ1NBS1FRaEJEQ0FCSUFaSkloOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdHU0FaUlNBZkd3c2hCaUFUSUNScUlBNGdGU0FHSUE5QmtNQUJhaTBBQUNJS1JoczJBZ0FnQ3lBTEtBSUFRWUNBQVhJMkFnQWdCeUFIS0FJRVFZQWdjallDQkNBR0lBcHpJZ1pCSEhRZ0JYSWdBeWdDZkVFQ2RDQUhhaUlGSUFVb0FnUkJCSEkyQWdRZ0JTQUZLQUlNUVFGeU5nSU1JQVVnQlNnQ0NDQUdRUkowY2tFQ2NqWUNDRUdBd0FCeUlRVUxJQWNnQlVILy8vKzJlM0UyQWdBTElBZEJCR29oQlNBVFFRUnFJUk1nRWtFQmFpSVNJQlpIRFFBTElBZEJER29oQlNBVElDUnFJUk1nRkVFRWFpSVVJQU1vQW9BQklnWkJmSEZKRFFBTERBRUxRUVFnQmtGOGNTSUZJQVZCQkUwYlFRRnJJZ1ZCZkhGQkJHb2hGQ0FISUFWQkFYUkJlSEZxUVJScUlRVUxJQU1nQkRZQ0NDQURJQUUyQWdRZ0F5QUNOZ0lBSUFNZ0NUWUNhQ0FXUlEwQ0lBWWdGRTBOQWdOQVFRQWhCQ0FVSUFNb0FvQUJSd1JBQTBBZ0F5QUZJQk1nQkNBV2JFRUNkR29nRGlBRVFRQVFZU0FFUVFGcUlnUWdBeWdDZ0FFZ0ZHdEpEUUFMQ3lBRklBVW9BZ0JCLy8vL3RudHhOZ0lBSUJOQkJHb2hFeUFGUVFScUlRVWdFVUVCYWlJUklCWkhEUUFMREFJTEEwQkJBQ0VWQTBBZ0JTRVRBa0FDUUFKL0lBWWlEU2dDQUNJR1JRUkFJQUVnQ0NnQ0FDSUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWdnQlVFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ2hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dDQ0FGUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFVb0FnUUxSUVJBSUFnaENRd0VDeUFCSUFjb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDU0FISUFWQkNFRU1JQUVnQmtraUN4dHFLQUlBSWdVMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWtnQ1VVZ0N4c01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUWtnQnlBRlFReEJDQ0FCSUFaSklnc2JhaWdDQUNJRk5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQmtFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBbEZJQWtnQ3hzTUFRc2dCU2dDQkFzaENpQUJJQVVvQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBRktBSUVJUWtnQnlBRlFRaEJEQ0FCSUFaSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQlVFQmFpRUVJQVV0QUFFaEFTQUZMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDU0FKUlNBTEd3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFVb0FnUWhDU0FISUFWQkRFRUlJQUVnQmtraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFRklBWXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JTZ0NCQXNoQlVFQUlRWWdCeUVKQWtBQ1FBSkFBbjhDUUFKQUlBVWdDa0VCZEhJT0JBQUJBd1VJQ3lBQklCWWdEU2dDQkVFUmRrRUVjU0FOUVFScklna29BZ0JCRTNaQkFYRnlJaEZCa0w0QmFpMEFBRUVDZEdvaUNpZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VMSUFvZ0JVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hCQ0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUXNnQ2lBRlFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQW9iREFFTElBVW9BZ1FMSVFVZ0V5QU9JQXdnQlNBUlFaREFBV290QUFBaUJrWWJOZ0lBSUFrZ0NTZ0NBRUVnY2pZQ0FDQU5JQTBvQWdSQkNISTJBZ1FnQlNBR2MwRVRkQ0FCSUJZZ0F5Z0NiQzBBQWtFQ2RHb2lDU2dDQUNJRktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTEJFQWdCU2dDQkNFS0lBa2dCVUVJUVF3Z0FTQUdTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnVkJBV29oQ1NBRkxRQUJJUUVnQlMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdFUnNNQVFzZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUZLQUlFSVFvZ0NTQUZRUXhCQ0NBQklBWkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJrRUJhaUVKSUFZdEFBRWhCU0FHTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFrMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJFYkRBRUxJQVVvQWdRTElRVkJFSElpQmlBRlJRMEJHZ3NnQVNBV0lBMG9BZ1JCRkhaQkJIRWdEVUVFYXlJS0tBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0JrRURka0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUN5Z0NBQ0lKS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NTZ0NCQ0VSSUFzZ0NVRUlRUXdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0N4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSktBSUVJUkVnQ3lBSlFReEJDQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEJTQUpMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQXNiREFFTElBa29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNVWWJOZ0tBQWlBS0lBb29BZ0JCZ0FKeU5nSUFJQTBnRFNnQ0JFSEFBSEkyQWdRZ0JpQUZJQWx6UVJaMGNrR0FBWElMSVFZZ0FTQVdJQU1vQW13Z0JrRUdka0h2QTNGcUxRQUFRUUowYWlJS0tBSUFJZ2tvQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFRklBa3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQXRGRFFFTElBRWdGaUFOS0FJRVFSZDJRUVJ4SUExQkJHc2lDaWdDQUVFWmRrRUJjU0FHUVJKMlFSQnhJQVpCRm5aQndBQnhJQVpCQm5aQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQWtvQWdRaEVTQUxJQWxCQ0VFTUlBRWdCVWtpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQXNiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDU2dDQkNFUklBc2dDVUVNUVFnZ0FTQUZTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBTEd3d0JDeUFKS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ2xHR3pZQ2dBUWdDaUFLS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBSmMwRVpkSEpCZ0FoeUlRWUxJQUVnRmlBREtBSnNJQVpCQ1haQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMERDeUFCSUJZZ0RTZ0NCRUVhZGtFRWNTQU5RUVJySWhFb0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBR1FRbDJRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc01BUXNDUUNBR1FaQ0FnQUZ4RFFBZ0FTQVdJQU1vQW13Z0JrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVZKSWhFYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FSR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEN5QUpJQXBCREVFSUlBRWdCVWtpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0VSc01BUXNnQ2lnQ0JBdEZEUUFnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJTEtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRVJJQWtnQ2tFSVFRd2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnRHhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlSRWdDU0FLUVF4QkNDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBOGJEQUVMSUFvb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFRWdjallDQUNBTklBMG9BZ1JCQ0hJMkFnUWdCaUFGSUFwelFSTjBja0VRY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FCSUJZZ0F5Z0NiQ0FHUVFOMkloRkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRUxJQWtnQ2tFSVFRd2dBU0FGU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklBc2dDMFVnRWhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVZKSWhJYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFvb0FnUUxSUTBBSUFFZ0ZpQU5LQUlFUVJSMlFRUnhJQTFCQkdzaUN5Z0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCRkJxZ0Z4Y25KeWNpSVNRWkMrQVdvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhFU0FKSUFwQkNFRU1JQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQVJJQkZGSUE4YkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRVJJQWtnQ2tFTVFRZ2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRVVVZ0VTQVBHd3dCQ3lBS0tBSUVDeUVGSUJNZ0RpQU1JQVVnRWtHUXdBRnFMUUFBSWdwR0d6WUNnQUlnQ3lBTEtBSUFRWUFDY2pZQ0FDQU5JQTBvQWdSQndBQnlOZ0lFSUFZZ0JTQUtjMEVXZEhKQmdBRnlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUJJQllnQXlnQ2JDQUdRUVoySWhGQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFaHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJJYkRBRUxJQW9vQWdRTFJRMEFJQUVnRmlBTktBSUVRUmQyUVFSeElBMUJCR3NpQ3lnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUJGQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQW9vQWdRaEVTQUpJQXBCQ0VFTUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQThiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDaWdDQkNFUklBa2dDa0VNUVFnZ0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVVnQkMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBUEd3d0JDeUFLS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ3BHR3pZQ2dBUWdDeUFMS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBS2MwRVpkSEpCZ0FoeUlRWUxJQVpCZ01DQWdBUnhEUUVnQVNBV0lBTW9BbXdnQmtFSmRpSVNRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQlVraUVSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUJFYkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FGU1NJUkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVJHd3dCQ3lBS0tBSUVDMFVOQVNBQklCWWdEU2dDQkVFYWRrRUVjU0FOUVFSckloRW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc0xJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VTSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQklnRWtVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUklnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBU1JTQVNJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBTFFaREFBV290QUFBaUNrWWJOZ0tBQmlBUklCRW9BZ0JCZ0lBQmNqWUNBQ0FOSUEwb0FnUkJnQ0J5TmdJRUlBVWdDbk1pQlVFY2RDQUdjaUFOSUEwb0FvUUNRUVJ5TmdLRUFpQU5JQTBvQW93Q1FRRnlOZ0tNQWlBTklBMG9Bb2dDSUFWQkVuUnlRUUp5TmdLSUFrR0F3QUJ5SVFZTElBMGdCa0gvLy8rMmUzRTJBZ0FMSUExQkJHb2hCaUFUUVFScUlRVWdGVUVCYWlJVlFjQUFSdzBBQ3lBTlFReHFJUVlnRTBHRUJtb2hCU0FVUVR4SklCUkJCR29oRkEwQUN3c2dBeUFFTmdJSUlBTWdBVFlDQkNBRElBSTJBZ0FnQXlBSk5nSm9Dd0pBSUJkQklIRkZEUUFnQXlBRFFlUUFhallDYUNBRElBTW9BZ1FnQXlnQ1pDSUdLQUlBSWdGcklnSTJBZ1FDUUNBQklBTW9BZ0FpQkVFUWRrc0VRQ0FESUFFMkFnUWdBeUFHUVFoQkRDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnbEJBV29oQWlBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUlNQWdzZ0F5QUNOZ0lRSUFWQkNYUWdCR29oQkVFSElRSU1BUXNnQXlBQ05nSVFRUWdoQWlBRlFRaDBJQVJxSVFRTElBTWdBa0VCYXlJQ05nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QUJJUUlNQVFzZ0F5QUVJQUZCRUhScklnUTJBZ0FnQWtHQWdBSnhEUUFnQXlBR1FReEJDQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFFRFFBSkFJQUVOQUNBREtBSVFJZ0ZCQVdvaENTQUJMUUFCSVFVZ0FTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFFTUFnc2dBeUFKTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUVNQVFzZ0F5QUpOZ0lRUVFnaEFTQUZRUWgwSUFScUlRUUxJQU1nQVVFQmF5SUJOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBa0VCZENJQ05nSUVJQUpCZ0lBQ1NRMEFDd3NnQXlBQ0lBWW9BZ0FpQVdzaUFqWUNCQUpBSUFFZ0JFRVFka3NFUUNBRElBRTJBZ1FnQXlBR1FRaEJEQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFJRFFBSkFJQUlOQUNBREtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFVZ0NTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFJTUFnc2dBeUFDTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUlNQVFzZ0F5QUNOZ0lRUVFnaEFpQUZRUWgwSUFScUlRUUxJQU1nQWtFQmF5SUNOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBVUVCZENJQk5nSUVJQUZCZ0lBQ1NRMEFDeUFCSVFJTUFRc2dBeUFFSUFGQkVIUnJJZ1EyQWdBZ0FrR0FnQUp4RFFBZ0F5QUdRUXhCQ0NBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRRURRQUpBSUFFTkFDQURLQUlRSWdGQkFXb2hDU0FCTFFBQklRVWdBUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRRU1BZ3NnQXlBSk5nSVFJQVZCQ1hRZ0JHb2hCRUVISVFFTUFRc2dBeUFKTmdJUVFRZ2hBU0FGUVFoMElBUnFJUVFMSUFNZ0FVRUJheUlCTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQWtFQmRDSUNOZ0lFSUFKQmdJQUNTUTBBQ3dzZ0F5QUNJQVlvQWdBaUFXc2lBallDQkFKQUlBRWdCRUVRZGtzRVFDQURJQUUyQWdRZ0F5QUdRUWhCRENBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdsQkFXb2hBaUFKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRSU1BZ3NnQXlBQ05nSVFJQVZCQ1hRZ0JHb2hCRUVISVFJTUFRc2dBeUFDTmdJUVFRZ2hBaUFGUVFoMElBUnFJUVFMSUFNZ0FrRUJheUlDTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3lBQklRSU1BUXNnQXlBRUlBRkJFSFJySWdRMkFnQWdBa0dBZ0FKeERRQWdBeUFHUVF4QkNDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUVEUUFKQUlBRU5BQ0FES0FJUUlnRkJBV29oQ1NBQkxRQUJJUVVnQVMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUVNQWdzZ0F5QUpOZ0lRSUFWQkNYUWdCR29oQkVFSElRRU1BUXNnQXlBSk5nSVFRUWdoQVNBRlFRaDBJQVJxSVFRTElBTWdBVUVCYXlJQk5nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FrRUJkQ0lDTmdJRUlBSkJnSUFDU1EwQUN3c2dBeUFDSUFZb0FnQWlBV3NpQWpZQ0JDQUJJQVJCRUhaTEJFQWdBeUFCTmdJRUlBTWdCa0VJUVF3Z0FTQUNTeHRxS0FJQU5nSmtJQU1vQWdnaEFnTkFBa0FnQWcwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFSQmdQNERhaUVFUVFnaEFnd0NDeUFESUFrMkFoQWdCVUVKZENBRWFpRUVRUWNoQWd3QkN5QURJQWsyQWhCQkNDRUNJQVZCQ0hRZ0JHb2hCQXNnQXlBQ1FRRnJJZ0kyQWdnZ0F5QUVRUUYwSWdRMkFnQWdBeUFCUVFGMElnRTJBZ1FnQVVHQWdBSkpEUUFMREFFTElBTWdCQ0FCUVJCMGF5SUZOZ0lBSUFKQmdJQUNjUTBBSUFNZ0JrRU1RUWdnQVNBQ1N4dHFLQUlBTmdKa0lBTW9BZ2doQkFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFSklBWXRBQUVoQVNBR0xRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQVZCZ1A0RGFpRUZRUWdoQkF3Q0N5QURJQWsyQWhBZ0FVRUpkQ0FGYWlFRlFRY2hCQXdCQ3lBRElBazJBaEJCQ0NFRUlBRkJDSFFnQldvaEJRc2dBeUFFUVFGcklnUTJBZ2dnQXlBRlFRRjBJZ1UyQWdBZ0F5QUNRUUYwSWdJMkFnUWdBa0dBZ0FKSkRRQUxDd3NnSjBVTkFDQURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdMUVFBZ0lVRUJhaUlCSUFGQkEwWWlBUnNoSVNBYklBRnJJUnNnS1VFQmFpSXBJQ0FvQWdoUERRRWdHMEVBU2cwQUN3c2dIaUFxYWlFZUlBTW9BaGdnQXk4QmNEc0FBQ0FvUVFGcUlpZ2dHaWdDTEVrTkFBc0xBa0FnSzBVTkFBSkFJQU1vQWhnaUFTQURLQUlRSWdWQkFtcExCRUFnSWtVTkFTQW1JQUVnQXlnQ0ZDSUdhellDT0NBbUlBVWdCbXMyQWpRZ0ppQUJJQVZyUVFKck5nSXdJQjFCQWtIZTlnQWdKa0V3YWhBVERBSUxJQU1vQWd3aUFVRURTUTBCSUNJRVFDQW1JQUUyQWxBZ0hVRUNRWjQzSUNaQjBBQnFFQk1NQWdzZ0ppQUJOZ0pBSUIxQkFrR2VOeUFtUVVCckVCTU1BUXNnSmlBQklBTW9BaFFpQm1zMkFpZ2dKaUFGSUFack5nSWtJQ1lnQVNBRmEwRUNhellDSUNBZFFRSkIzdllBSUNaQklHb1FFd3NnR2lnQ1BFVU5BQ0FESUN3MkFuUUxJREFvQWdRaEFTQWFLQUlNSUJvb0FnZ2dNQ2dDQUdzaEV5QXdLQUlRSWdaQkFYRUVRQ0F5S0FJY0lEaEJtQUZzYWlJSlFaQUJheWdDQUNBVGFpQUpRWmdCYXlnQ0FHc2hFd3NnQVdzaEJTQUdRUUp4QkVBZ01pZ0NIQ0E0UVpnQmJHb2lBVUdNQVdzb0FnQWdCV29nQVVHVUFXc29BZ0JySVFVTElCb29BandpQmlFQ0lBWkZCRUFnQXlnQ2RDRUNDeUFES0FLQUFTRU5JQU1vQW53aEJBSkFJQzhvQXFnR0lnbEZEUUFnRFVVZ0JFVnlJUUVnQ1VFZVRBUkFJQUVOQVVFQUlRZ0RRQ0FFSUFoc0lRTkJBQ0VCQTBBZ0FpQUJJQU5xUVFKMGFpSVhLQUlBSWdjZ0IwRWZkU0lLY3lBS2F5SUtJQWwyQkVBZ0YwRUFJQW9nTHlnQ3FBWjJJaGRySUJjZ0IwRUFTQnMyQWdBTElBRkJBV29pQVNBRVJ3MEFDeUFJUVFGcUlnZ2dEVWNOQUFzTUFRc2dBUTBBSUFKQkFDQUVJQTFzUVFKMEVCa2FDeUFHQkVBZ0JDQU5iQ0VHSUM4b0FoUkJBVVlFUUNBR1JRMEZRUUFoQVNBR1FRUlBCRUFnQmtGOGNTRUJRUUFoQXdOQUlBSWdBMEVDZEdvaUJTQUYvUUFDQUNKSC9Sc0FRUUp0L1JFZ1IvMGJBVUVDYmYwY0FTQkgvUnNDUVFKdC9Sd0NJRWY5R3dOQkFtMzlIQVA5Q3dJQUlBTkJCR29pQXlBQlJ3MEFDeUFCSUFaR0RRWUxBMEFnQWlBQlFRSjBhaUlGSUFVb0FnQkJBbTAyQWdBZ0FVRUJhaUlCSUFaSERRQUxEQVVMSUFaRkRRUWdNQ29DSUVNQUFBQS9sQ0ZOUVFBaEF3SkFJQVpCQkVrRVFDQUNJUUVNQVFzZ0FpQUdRWHh4SWdOQkFuUnFJUUVnVGYwVElVZEJBQ0VGQTBBZ0FpQUZRUUowYWlJSklFY2dDZjBBQWdEOStnSDk1Z0g5Q3dJQUlBVkJCR29pQlNBRFJ3MEFDeUFESUFaR0RRVUxBMEFnQVNCTklBRW9BZ0N5bERnQ0FDQUJRUVJxSVFFZ0EwRUJhaUlESUFaSERRQUxEQVFMSURjZ05tc2hGeUF2S0FJVVFRRkhEUUlnRFVVTkF5QXlLQUlrSWdZZ0JTQVhiQ0lGUVFKMGFpQVRRUUowYWlFSElBUkJmSEVpRzBFQmF5SUJRUVJ4SVJZZ055QUVJRFpxYTBFQ2RDRVVJQUZCQW5aQkFXcEIvdi8vL3dkeElSb2dCU0FUYWtFQ2RDQUdhaUFDYXlFZFFRQWhFeUFCUVFOSElRNERRRUVBSVFFQ1FDQWJSUTBBSUFRZ0Uyd2hCU0FISUJNZ0YyeEJBblJxSVFaQkFDRUpJQTRFUUFOQUlBWWdBVUVDZEdvZ0FpQUJJQVZxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBR0lBRkJCSElpQ0VFQ2RHb2dBaUFGSUFocVFRSjBhdjBBQWdBaVIvMGJBRUVDYmYwUklFZjlHd0ZCQW0zOUhBRWdSLzBiQWtFQ2JmMGNBaUJIL1JzRFFRSnQvUndEL1FzQ0FDQUJRUWhxSVFFZ0NVRUNhaUlKSUJwSERRQUxDeUFXRFFBZ0JpQUJRUUowYWlBQ0lBRWdCV3BCQW5ScS9RQUNBQ0pIL1JzQVFRSnQvUkVnUi8wYkFVRUNiZjBjQVNCSC9Sc0NRUUp0L1J3Q0lFZjlHd05CQW0zOUhBUDlDd0lBSUFGQkJHb2hBUXNDUUNBQklBUlBEUUFnQkNBVGJDRUZJQWNnRXlBWGJFRUNkR29oQ1FKQUFrQWdCQ0FCYXlJSVFRUlBCRUFnSFNBVElCUnNha0VQU3cwQkN5QUJJUVlNQVFzZ0FTQUZhaUVpSUFFZ0NFRjhjU0lLYWlFR1FRQWhBd05BSUFrZ0FTQURha0VDZEdvZ0FpQURJQ0pxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBRFFRUnFJZ01nQ2tjTkFBc2dDQ0FLUmcwQkN5QUdRUUZxSVFFZ0JDQUdhMEVCY1FSQUlBa2dCa0VDZEdvZ0FpQUZJQVpxUVFKMGFpZ0NBRUVDYlRZQ0FDQUJJUVlMSUFFZ0JFWU5BQ0FGUVFGcUlRRURRQ0FKSUFaQkFuUnFJZ2dnQWlBRklBWnFRUUowYWlnQ0FFRUNiVFlDQUNBSUlBSWdBU0FHYWtFQ2RHb29BZ0JCQW0wMkFnUWdCa0VDYWlJR0lBUkhEUUFMQ3lBVFFRRnFJaE1nRFVjTkFBc01Bd3NnSmlBYk5nSUFJQjFCQWtIbnd3QWdKaEFUQ3lBRktBSUFRUUEyQWdBTUFRc2dEVVVOQUNBRVJRMEFJRElvQWlRZ0JTQVhiRUVDZEdvZ0UwRUNkR29oQ1NBRVFYeHhJZ1ZCQW5RaEJpQXdLZ0lnUXdBQUFEK1VJazM5RXlGSFFRQWhDQ0FFUVFSSklSTURRQUpBQWtBZ0V3UkFJQUloQnlBSklRRkJBQ0VEREFFTElBWWdDV29oQVNBQ0lBWnFJUWRCQUNFREEwQWdDU0FEUVFKMElncHFJRWNnQWlBS2F2MEFBZ0Q5K2dIOTVnSDlDd0lBSUFOQkJHb2lBeUFGUncwQUN5QUhJUUlnQlNJRElBUkdEUUVMSUFjaEFnTkFJQUVnVFNBQ0tBSUFzcFE0QWdBZ0FVRUVhaUVCSUFKQkJHb2hBaUFEUVFGcUlnTWdCRWNOQUFzTElBa2dGMEVDZEdvaENTQUlRUUZxSWdnZ0RVY05BQXNMSUFBUUZDQW1RZUFBYWlRQUM5WUVBUWwvSUFBb0FpeEJDRThFUUNBQUtBSW9JUVZCQ0NFS0EwQWdBQ2dDREVFRmRDRUlJQUFvQWdBaEJDQUFLQUlrSVFNQ1FDQUFLQUlVSWdZZ0FDZ0NFQ0lCVFEwQUlBUWdDR29oQnlBQlFRRnFJUUlnQmlBQmEwRUJjUVJBSUFjZ0FVRUdkR29pQ1NBRklBRWdBMnhCQW5ScUlnSDlBQUlBL1FzQ0FDQUpJQUg5QUFJUS9Rc0NFQ0FDSVFFTElBSWdCa1lOQUFOQUlBY2dBVUVHZEdvaUFpQUZJQUVnQTJ4QkFuUnFJZ245QUFJQS9Rc0NBQ0FDSUFuOUFBSVEvUXNDRUNBSElBRkJBV29pQWtFR2RHb2lDU0FGSUFJZ0EyeEJBblJxSWdMOUFBSVEvUXNDRUNBSklBTDlBQUlBL1FzQ0FDQUJRUUpxSWdFZ0JrY05BQXNMQWtBZ0FDZ0NIQ0lHSUFBb0FoZ2lBVTBOQUNBRUlBaHJRU0JxSVFjZ0JTQUFLQUlJSUFOc1FRSjBhaUVJSUFGQkFXb2hBaUFHSUFGclFRRnhCRUFnQnlBQlFRWjBhaUlFSUFnZ0FTQURiRUVDZEdvaUFmMEFBZ0Q5Q3dJQUlBUWdBZjBBQWhEOUN3SVFJQUloQVFzZ0FpQUdSZzBBQTBBZ0J5QUJRUVowYWlJQ0lBZ2dBU0FEYkVFQ2RHb2lCUDBBQWdEOUN3SUFJQUlnQlAwQUFoRDlDd0lRSUFjZ0FVRUJhaUlDUVFaMGFpSUVJQWdnQWlBRGJFRUNkR29pQXYwQUFoRDlDd0lRSUFRZ0F2MEFBZ0Q5Q3dJQUlBRkJBbW9pQVNBR1J3MEFDd3NnQUJBbVFRQWhBU0FBS0FJZ0JFQURRQ0FGSUFBb0FpUWdBV3hCQW5ScUlnSWdBQ2dDQUNBQlFRVjBhaUlEL1FBQ0FQMExBZ0FnQWlBRC9RQUNFUDBMQWhBZ0FVRUJhaUlCSUFBb0FpQkpEUUFMQ3lBRlFTQnFJUVVnQ2tFSWFpSUtJQUFvQWl4TkRRQUxDeUFBS0FJQUVCUWdBQkFVQzYwTkFTTi9JQUFvQWl4QkNFOEVRQ0FBS0FJa0lncEJCWFFoRlNBS1FRZHNJUllnQ2tFR2JDRVhJQXBCQld3aEdDQUtRUU5zSVJrZ0NrRUJkQ0VhSUFBb0FpZ2lBU0FLUVJ4c2FpRWVJQUVnQ2tFWWJHb2hIeUFCSUFwQkZHeHFJU0FnQVNBS1FRUjBhaUVoSUFFZ0NrRU1iR29oSWlBQklBcEJBM1JxSVNNZ0FTQUtRUUowSWh0cUlTUkJDQ0VjQTBBZ0FDQUJJQUFvQWlSQkNCQkRJQUFRSmdKQUlBQW9BaUFpRFVVTkFDQVZJQjFzSVFnZ0FDZ0NBQ0VHUVFBaEJBSkFBa0FnRFVISEFVME5BQ0FCSUFnZ0pHb2lBeUFOUVFKMElnVnFJZ3RKSUFNZ0FTQUZhaUlIU1hFTkFDQUJJQWdnSTJvaUFpQUZhaUlNU1NBQ0lBZEpjUTBBSUFFZ0JTQUlJQ0pxSWdscUlnVkpJQWNnQ1V0eERRQWdCaUFIU1NBQklBWWdEVUVGZEdvaURrRWNheUlQU1hFTkFDQUJJQTVCR0dzaUVFa2dCa0VFYWlJUklBZEpjUTBBSUFFZ0RrRVVheUlTU1NBR1FRaHFJaE1nQjBseERRQWdCeUFHUVF4cUloUkxJQUVnRGtFUWF5SUhTWEVOQUNBRElBeEpJQUlnQzBseERRQWdBeUFGU1NBSklBdEpjUTBBSUFNZ0Qwa2dCaUFMU1hFTkFDQURJQkJKSUFzZ0VVdHhEUUFnQXlBU1NTQUxJQk5MY1EwQUlBTWdCMGtnQ3lBVVMzRU5BQ0FDSUFWSklBa2dERWx4RFFBZ0FpQVBTU0FHSUF4SmNRMEFJQUlnRUVrZ0RDQVJTM0VOQUNBQ0lCSkpJQXdnRTB0eERRQWdBaUFIU1NBTUlCUkxjUTBBSUFrZ0Qwa2dCU0FHUzNFTkFDQUpJQkJKSUFVZ0VVdHhEUUFnQ1NBU1NTQUZJQk5MY1EwQUlBY2dDVXNnQlNBVVMzRU5BQ0FOUVh4eElRUkJBQ0VEQTBBZ0FTQURRUUowYWlBR0lBTkJCWFJxSWdKQjRBQnFJQUpCUUdzZ0FrRWdhaUFDL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBU0FESUFwcVFRSjBhaUFDUWVRQWFpQUNRY1FBYWlBQ1FTUnFJQUw5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUJJQU1nR21wQkFuUnFJQUpCNkFCcUlBSkJ5QUJxSUFKQktHb2dBdjFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFaYWtFQ2RHb2dBa0hzQUdvZ0FrSE1BR29nQWtFc2FpQUMvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0EwRUVhaUlESUFSSERRQUxJQVFnRFVZTkFRc0RRQ0FCSUFSQkFuUnFJQVlnQkVFRmRHb2lBeW9DQURnQ0FDQUJJQVFnQ21wQkFuUnFJQU1xQWdRNEFnQWdBU0FFSUJwcVFRSjBhaUFES2dJSU9BSUFJQUVnQkNBWmFrRUNkR29nQXlvQ0REZ0NBQ0FFUVFGcUlnUWdEVWNOQUFzTElBQW9BZ0FoQmtFQUlRUUNRQ0FOUVROTkRRQWdDQ0FoYWlJRElBZ2dJR29pQWlBTlFRSjBJZ1ZxSWd0SklBSWdBeUFGYWlJSFNYRU5BQ0FESUFnZ0gyb2lDU0FGYWlJTVNTQUhJQWxMY1EwQUlBTWdDQ0FlYWlJSUlBVnFJZ1ZKSUFjZ0NFdHhEUUFnQXlBR0lBMUJCWFJxSWc1QkRHc2lEMGtnQmtFUWFpSVFJQWRKY1EwQUlBTWdEa0VJYXlJUlNTQUdRUlJxSWhJZ0IwbHhEUUFnQXlBT1FRUnJJaE5KSUFaQkdHb2lGQ0FIU1hFTkFDQURJQTVKSUFaQkhHb2lBeUFIU1hFTkFDQUNJQXhKSUFrZ0MwbHhEUUFnQWlBRlNTQUlJQXRKY1EwQUlBSWdEMGtnQ3lBUVMzRU5BQ0FDSUJGSklBc2dFa3R4RFFBZ0FpQVRTU0FMSUJSTGNRMEFJQUlnRGtrZ0F5QUxTWEVOQUNBSUlBeEpJQVVnQ1V0eERRQWdDU0FQU1NBTUlCQkxjUTBBSUFrZ0VVa2dEQ0FTUzNFTkFDQUpJQk5KSUF3Z0ZFdHhEUUFnQ1NBT1NTQURJQXhKY1EwQUlBZ2dEMGtnQlNBUVMzRU5BQ0FJSUJGSklBVWdFa3R4RFFBZ0NDQVRTU0FGSUJSTGNRMEFJQWdnRGtrZ0F5QUZTWEVOQUNBTlFYeHhJUVJCQUNFREEwQWdBU0FESUJ0cVFRSjBhaUFHSUFOQkJYUnFJZ0pCOEFCcUlBSkIwQUJxSUFKQk1Hb2dBdjFjQWhEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFZYWtFQ2RHb2dBa0gwQUdvZ0FrSFVBR29nQWtFMGFpQUMvVndDRlAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FTQURJQmRxUVFKMGFpQUNRZmdBYWlBQ1FkZ0FhaUFDUVRocUlBTDlYQUlZL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQklBTWdGbXBCQW5ScUlBSkIvQUJxSUFKQjNBQnFJQUpCUEdvZ0F2MWNBaHo5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlDd0lBSUFOQkJHb2lBeUFFUncwQUN5QUVJQTFHRFFFTEEwQWdBU0FFSUJ0cVFRSjBhaUFHSUFSQkJYUnFJZ01xQWhBNEFnQWdBU0FFSUJocVFRSjBhaUFES2dJVU9BSUFJQUVnQkNBWGFrRUNkR29nQXlvQ0dEZ0NBQ0FCSUFRZ0ZtcEJBblJxSUFNcUFodzRBZ0FnQkVFQmFpSUVJQTFIRFFBTEN5QWRRUUZxSVIwZ0FTQVZhaUVCSUJ4QkNHb2lIQ0FBS0FJc1RRMEFDd3NnQUNnQ0FCQVVJQUFRRkF0ekFRSi9JQUFvQWh3aUFVRUlhaUlESUFBb0FpQWlBazBFUUFOQUlBQWdBQ2dDR0NBQlFRSjBhaUFBS0FJVVFRZ1FOaUFESWdGQkNHb2lBeUFBS0FJZ0lnSk5EUUFMQ3lBQklBSkpCRUFnQUNBQUtBSVlJQUZCQW5ScUlBQW9BaFFnQWlBQmF4QTJDeUFBS0FJQUVCUWdBQkFVQzBRQUlBQW9BaHdpQVNBQUtBSWdTUVJBQTBBZ0FDQUFLQUlZSUFBb0FoUWdBV3hCQW5ScUVHWWdBVUVCYWlJQklBQW9BaUJKRFFBTEN5QUFLQUlBRUJRZ0FCQVVDd1VBRUc0QUN3WUFFSmtCQUFzTkFCQUxJQUJCZ0FGcUVBb0FDd1VBRUc0QUMyd0JBWDhnQUVRQUFBQUFBQUFBQUJBTkdnSkFRY2pmQVNnQ0FFRWJRUnBCRGlBQVFRRkdHeUFBUVFKR0d5SUFRUUZyZGtFQmNRUkFRY2pnQVVISTRBRW9BZ0JCQVNBQVFRRnJkSEkyQWdBTUFRc2dBRUVDZEVHZ3lRRnFLQUlBSWdJRVFDQUFJQUlSQWdBTEN3dW9BUUVGZnlBQUtBSlVJZ01vQWdBaEJTQURLQUlFSWdRZ0FDZ0NGQ0FBS0FJY0lnZHJJZ1lnQkNBR1NSc2lCZ1JBSUFVZ0J5QUdFQllhSUFNZ0F5Z0NBQ0FHYWlJRk5nSUFJQU1nQXlnQ0JDQUdheUlFTmdJRUN5QUVJQUlnQWlBRVN4c2lCQVJBSUFVZ0FTQUVFQllhSUFNZ0F5Z0NBQ0FFYWlJRk5nSUFJQU1nQXlnQ0JDQUVhellDQkFzZ0JVRUFPZ0FBSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQ0M2WUZBZ1orQkg4Z0FTQUJLQUlBUVFkcVFYaHhJZ0ZCRUdvMkFnQWdBQ0FCS1FNQUlRSWdBU2tEQ0NFSEl3QkJJR3NpQ0NRQUlBZEMvLy8vLy8vL1A0TWhCQUorSUFkQ01JaEMvLzhCZ3lJRHB5SUtRWUg0QUd0Qi9ROU5CRUFnQkVJRWhpQUNRanlJaENFRElBcEJnUGdBYTYwaEJBSkFJQUpDLy8vLy8vLy8vLzhQZ3lJQ1FvR0FnSUNBZ0lDQUNGb0VRQ0FEUWdGOElRTU1BUXNnQWtLQWdJQ0FnSUNBZ0FoU0RRQWdBMElCZ3lBRGZDRURDMElBSUFNZ0EwTC8vLy8vLy8vL0IxWWlBQnNoQWlBQXJTQUVmQXdCQ3dKQUlBSWdCSVJRRFFBZ0EwTC8vd0ZTRFFBZ0JFSUVoaUFDUWp5SWhFS0FnSUNBZ0lDQUJJUWhBa0wvRHd3QkN5QUtRZjZIQVVzRVFFSUFJUUpDL3c4TUFRdEJnUGdBUVlINEFDQURVQ0lCR3lJQUlBcHJJZ2xCOEFCS0JFQkNBQ0VDUWdBTUFRc2dBaUVESUFRZ0JFS0FnSUNBZ0lEQUFJUWdBUnNpQlNFR0FrQkJnQUVnQ1dzaUFVSEFBSEVFUUNBQ0lBRkJRR3F0aGlFR1FnQWhBd3dCQ3lBQlJRMEFJQVlnQWEwaUJJWWdBMEhBQUNBQmE2MkloQ0VHSUFNZ0JJWWhBd3NnQ0NBRE53TVFJQWdnQmpjREdBSkFJQWxCd0FCeEJFQWdCU0FKUVVCcXJZZ2hBa0lBSVFVTUFRc2dDVVVOQUNBRlFjQUFJQWxycllZZ0FpQUpyU0lEaUlRaEFpQUZJQU9JSVFVTElBZ2dBamNEQUNBSUlBVTNBd2dnQ0NrRENFSUVoaUFJS1FNQUlnTkNQSWlFSVFJQ1FDQUFJQXBISUFncEF4QWdDQ2tER0lSQ0FGSnhyU0FEUXYvLy8vLy8vLy8vRDRPRUlnTkNnWUNBZ0lDQWdJQUlXZ1JBSUFKQ0FYd2hBZ3dCQ3lBRFFvQ0FnSUNBZ0lDQUNGSU5BQ0FDUWdHRElBSjhJUUlMSUFKQ2dJQ0FnSUNBZ0FpRklBSWdBa0wvLy8vLy8vLy9CMVlpQUJzaEFpQUFyUXNoQXlBSVFTQnFKQUFnQjBLQWdJQ0FnSUNBZ0lCL2d5QURRalNHaENBQ2hMODVBd0FMOUJjREVuOEJmQU4rSXdCQnNBUnJJZ3drQUNBTVFRQTJBaXdDUUNBQnZTSVpRZ0JUQkVCQkFTRVFRYm9JSVJRZ0Fab2lBYjBoR1F3QkN5QUVRWUFRY1FSQVFRRWhFRUc5Q0NFVURBRUxRY0FJUWJzSUlBUkJBWEVpRUJzaEZDQVFSU0VYQ3dKQUlCbENnSUNBZ0lDQWdQai9BSU5DZ0lDQWdJQ0FnUGovQUZFRVFDQUFRU0FnQWlBUVFRTnFJZ1lnQkVILy8zdHhFQ0FnQUNBVUlCQVFIaUFBUVpJSlFmWUtJQVZCSUhFaUF4dEIrd2xCbndzZ0F4c2dBU0FCWWh0QkF4QWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBNQVFzZ0RFRVFhaUVSQWtBQ1FBSkFJQUVnREVFc2FoQndJZ0VnQWFBaUFVUUFBQUFBQUFBQUFHSUVRQ0FNSUF3b0Fpd2lCa0VCYXpZQ0xDQUZRU0J5SWhWQjRRQkhEUUVNQXdzZ0JVRWdjaUlWUWVFQVJnMENJQXdvQWl3aEN3d0JDeUFNSUFaQkhXc2lDellDTENBQlJBQUFBQUFBQUxCQm9pRUJDMEVHSUFNZ0EwRUFTQnNoQ2lBTVFUQnFRYUFDUVFBZ0MwRUFUaHRxSWc0aEJ3TkFJQWNDZnlBQlJBQUFBQUFBQVBCQll5QUJSQUFBQUFBQUFBQUFabkVFUUNBQnF3d0JDMEVBQ3lJRE5nSUFJQWRCQkdvaEJ5QUJJQU80b1VRQUFBQUFaYzNOUWFJaUFVUUFBQUFBQUFBQUFHSU5BQXNDUUNBTFFRQk1CRUFnQ3lFSklBY2hCaUFPSVFnTUFRc2dEaUVJSUFzaENRTkFRUjBnQ1NBSlFSMVBHeUVEQWtBZ0IwRUVheUlHSUFoSkRRQWdBNjBoRzBJQUlSa0RRQ0FHSUJsQy8vLy8vdytESUFZMUFnQWdHNFo4SWhwQ2dKVHIzQU9BSWhsQ2dPeVVvd3grSUJwOFBnSUFJQVpCQkdzaUJpQUlUdzBBQ3lBYVFvQ1U2OXdEVkEwQUlBaEJCR3NpQ0NBWlBnSUFDd05BSUFnZ0J5SUdTUVJBSUFaQkJHc2lCeWdDQUVVTkFRc0xJQXdnRENnQ0xDQURheUlKTmdJc0lBWWhCeUFKUVFCS0RRQUxDeUFKUVFCSUJFQWdDa0VaYWtFSmJrRUJhaUVTSUJWQjVnQkdJUk1EUUVFSlFRQWdDV3NpQXlBRFFRbFBHeUVOQWtBZ0JpQUlUUVJBSUFnb0FnQkZRUUowSVFjTUFRdEJnSlRyM0FNZ0RYWWhGa0YvSUExMFFYOXpJUTlCQUNFSklBZ2hCd05BSUFjZ0J5Z0NBQ0lESUExMklBbHFOZ0lBSUFNZ0QzRWdGbXdoQ1NBSFFRUnFJZ2NnQmtrTkFBc2dDQ2dDQUVWQkFuUWhCeUFKUlEwQUlBWWdDVFlDQUNBR1FRUnFJUVlMSUF3Z0RDZ0NMQ0FOYWlJSk5nSXNJQTRnQnlBSWFpSUlJQk1iSWdNZ0VrRUNkR29nQmlBR0lBTnJRUUoxSUJKS0d5RUdJQWxCQUVnTkFBc0xRUUFoQ1FKQUlBWWdDRTBOQUNBT0lBaHJRUUoxUVFsc0lRbEJDaUVISUFnb0FnQWlBMEVLU1EwQUEwQWdDVUVCYWlFSklBTWdCMEVLYkNJSFR3MEFDd3NnQ2lBSlFRQWdGVUhtQUVjYmF5QVZRZWNBUmlBS1FRQkhjV3NpQXlBR0lBNXJRUUoxUVFsc1FRbHJTQVJBSUF4Qk1HcEJoR0JCcEdJZ0MwRUFTQnRxSUFOQmdNZ0FhaUlMUVFsdElnTkJBblJxSVExQkNpRUhJQU5CZDJ3Z0Myb2lBMEVIVEFSQUEwQWdCMEVLYkNFSElBTkJBV29pQTBFSVJ3MEFDd3NDUUNBTktBSUFJZ3NnQ3lBSGJpSVNJQWRzSWc5R0lBMUJCR29pQXlBR1JuRU5BQ0FMSUE5cklRc0NRQ0FTUVFGeFJRUkFSQUFBQUFBQUFFQkRJUUVnQjBHQWxPdmNBMGNOQVNBSUlBMVBEUUVnRFVFRWF5MEFBRUVCY1VVTkFRdEVBUUFBQUFBQVFFTWhBUXRFQUFBQUFBQUE0RDlFQUFBQUFBQUE4RDlFQUFBQUFBQUErRDhnQXlBR1JodEVBQUFBQUFBQStEOGdDeUFIUVFGMklnTkdHeUFESUF0TEd5RVlBa0FnRncwQUlCUXRBQUJCTFVjTkFDQVltaUVZSUFHYUlRRUxJQTBnRHpZQ0FDQUJJQmlnSUFGaERRQWdEU0FISUE5cUlnTTJBZ0FnQTBHQWxPdmNBMDhFUUFOQUlBMUJBRFlDQUNBSUlBMUJCR3NpRFVzRVFDQUlRUVJySWdoQkFEWUNBQXNnRFNBTktBSUFRUUZxSWdNMkFnQWdBMEgvayt2Y0Ewc05BQXNMSUE0Z0NHdEJBblZCQ1d3aENVRUtJUWNnQ0NnQ0FDSURRUXBKRFFBRFFDQUpRUUZxSVFrZ0F5QUhRUXBzSWdkUERRQUxDeUFOUVFScUlnTWdCaUFESUFaSkd5RUdDd05BSUFZaUN5QUlUU0lIUlFSQUlBWkJCR3NpQmlnQ0FFVU5BUXNMQWtBZ0ZVSG5BRWNFUUNBRVFRaHhJUk1NQVFzZ0NVRi9jMEYvSUFwQkFTQUtHeUlHSUFsS0lBbEJlMHB4SWdNYklBWnFJUXBCZjBGK0lBTWJJQVZxSVFVZ0JFRUljU0lURFFCQmR5RUdBa0FnQncwQUlBdEJCR3NvQWdBaUQwVU5BRUVLSVFOQkFDRUdJQTlCQ25BTkFBTkFJQVlpQjBFQmFpRUdJQThnQTBFS2JDSURjRVVOQUFzZ0IwRi9jeUVHQ3lBTElBNXJRUUoxUVFsc0lRTWdCVUZmY1VIR0FFWUVRRUVBSVJNZ0NpQURJQVpxUVFscklnTkJBQ0FEUVFCS0d5SURJQU1nQ2tvYklRb01BUXRCQUNFVElBb2dBeUFKYWlBR2FrRUpheUlEUVFBZ0EwRUFTaHNpQXlBRElBcEtHeUVLQzBGL0lRMGdDa0g5Ly8vL0IwSCsvLy8vQnlBS0lCTnlJZzhiU2cwQklBb2dEMEVBUjJwQkFXb2hGZ0pBSUFWQlgzRWlCMEhHQUVZRVFDQUpJQlpCLy8vLy93ZHpTZzBESUFsQkFDQUpRUUJLR3lFR0RBRUxJQkVnQ1NBSlFSOTFJZ056SUFOcnJTQVJFQzhpQm10QkFVd0VRQU5BSUFaQkFXc2lCa0V3T2dBQUlCRWdCbXRCQWtnTkFBc0xJQVpCQW1zaUVpQUZPZ0FBSUFaQkFXdEJMVUVySUFsQkFFZ2JPZ0FBSUJFZ0Vtc2lCaUFXUWYvLy8vOEhjMG9OQWdzZ0JpQVdhaUlESUJCQi8vLy8vd2R6U2cwQklBQkJJQ0FDSUFNZ0VHb2lDU0FFRUNBZ0FDQVVJQkFRSGlBQVFUQWdBaUFKSUFSQmdJQUVjeEFnQWtBQ1FBSkFJQWRCeGdCR0JFQWdERUVRYWtFSmNpRUZJQTRnQ0NBSUlBNUxHeUlESVFnRFFDQUlOUUlBSUFVUUx5RUdBa0FnQXlBSVJ3UkFJQVlnREVFUWFrME5BUU5BSUFaQkFXc2lCa0V3T2dBQUlBWWdERUVRYWtzTkFBc01BUXNnQlNBR1J3MEFJQVpCQVdzaUJrRXdPZ0FBQ3lBQUlBWWdCU0FHYXhBZUlBaEJCR29pQ0NBT1RRMEFDeUFQQkVBZ0FFSHZERUVCRUI0TElBZ2dDMDhOQVNBS1FRQk1EUUVEUUNBSU5RSUFJQVVRTHlJR0lBeEJFR3BMQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMQ3lBQUlBWkJDU0FLSUFwQkNVNGJFQjRnQ2tFSmF5RUdJQWhCQkdvaUNDQUxUdzBESUFwQkNVb2dCaUVLRFFBTERBSUxBa0FnQ2tFQVNBMEFJQXNnQ0VFRWFpQUlJQXRKR3lFRElBeEJFR3BCQ1hJaEN5QUlJUWNEUUNBTElBYzFBZ0FnQ3hBdklnWkdCRUFnQmtFQmF5SUdRVEE2QUFBTEFrQWdCeUFJUndSQUlBWWdERUVRYWswTkFRTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0RFRVFha3NOQUFzTUFRc2dBQ0FHUVFFUUhpQUdRUUZxSVFZZ0NpQVRja1VOQUNBQVFlOE1RUUVRSGdzZ0FDQUdJQXNnQm1zaUJTQUtJQVVnQ2tnYkVCNGdDaUFGYXlFS0lBZEJCR29pQnlBRFR3MEJJQXBCQUU0TkFBc0xJQUJCTUNBS1FSSnFRUkpCQUJBZ0lBQWdFaUFSSUJKckVCNE1BZ3NnQ2lFR0N5QUFRVEFnQmtFSmFrRUpRUUFRSUFzZ0FFRWdJQUlnQ1NBRVFZREFBSE1RSUNBQ0lBa2dBaUFKU2hzaERRd0JDeUFVSUFWQkduUkJIM1ZCQ1hGcUlRa0NRQ0FEUVF0TERRQkJEQ0FEYXlFR1JBQUFBQUFBQURCQUlSZ0RRQ0FZUkFBQUFBQUFBREJBb2lFWUlBWkJBV3NpQmcwQUN5QUpMUUFBUVMxR0JFQWdHQ0FCbWlBWW9hQ2FJUUVNQVFzZ0FTQVlvQ0FZb1NFQkN5QVJJQXdvQWl3aUJ5QUhRUjkxSWdaeklBWnJyU0FSRUM4aUJrWUVRQ0FHUVFGcklnWkJNRG9BQUFzZ0VFRUNjaUVLSUFWQklIRWhDeUFHUVFKcklnNGdCVUVQYWpvQUFDQUdRUUZyUVMxQkt5QUhRUUJJR3pvQUFDQUVRUWh4UlNBRFFRQk1jU0VJSUF4QkVHb2hCd05BSUFjaUJRSi9JQUdaUkFBQUFBQUFBT0JCWXdSQUlBR3FEQUVMUVlDQWdJQjRDeUlHUVpESkFXb3RBQUFnQzNJNkFBQWdBU0FHdDZGRUFBQUFBQUFBTUVDaUlRRUNRQ0FGUVFGcUlnY2dERUVRYW10QkFVY05BQ0FCUkFBQUFBQUFBQUFBWVNBSWNRMEFJQVZCTGpvQUFTQUZRUUpxSVFjTElBRkVBQUFBQUFBQUFBQmlEUUFMUVg4aERTQURRZjMvLy84SElBb2dFU0FPYXlJSWFpSUdhMG9OQUNBQVFTQWdBaUFHSUFOQkFtb2dCeUFNUVJCcUlnVnJJZ2NnQjBFQ2F5QURTQnNnQnlBREd5SURhaUlHSUFRUUlDQUFJQWtnQ2hBZUlBQkJNQ0FDSUFZZ0JFR0FnQVJ6RUNBZ0FDQUZJQWNRSGlBQVFUQWdBeUFIYTBFQVFRQVFJQ0FBSUE0Z0NCQWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBMSUF4QnNBUnFKQUFnRFFzRUFFSUFDd1FBUVFBTEhBQWdBQ2dDUEJBUklnQUVmMEhVelFFZ0FEWUNBRUYvQlVFQUN3dktBZ0VIZnlNQVFTQnJJZ01rQUNBRElBQW9BaHdpQkRZQ0VDQUFLQUlVSVFVZ0F5QUNOZ0ljSUFNZ0FUWUNHQ0FESUFVZ0JHc2lBVFlDRkNBQklBSnFJUVZCQWlFR0lBTkJFR29oQVFKL0EwQUNRQUpBQWtBZ0FDZ0NQQ0FCSUFZZ0EwRU1haEFCSWdRRWYwSFV6UUVnQkRZQ0FFRi9CVUVBQzBVRVFDQUZJQU1vQWd3aUIwWU5BU0FIUVFCT0RRSU1Bd3NnQlVGL1J3MENDeUFBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQUNBQklBQW9BakJxTmdJUUlBSU1Bd3NnQVNBSElBRW9BZ1FpQ0VzaUNVRURkR29pQkNBSElBaEJBQ0FKRzJzaUNDQUVLQUlBYWpZQ0FDQUJRUXhCQkNBSkcyb2lBU0FCS0FJQUlBaHJOZ0lBSUFVZ0Iyc2hCU0FHSUFscklRWWdCQ0VCREFFTEN5QUFRUUEyQWh3Z0FFSUFOd01RSUFBZ0FDZ0NBRUVnY2pZQ0FFRUFJQVpCQWtZTkFCb2dBaUFCS0FJRWF3c2dBMEVnYWlRQUMxSUJBWDhnQUNnQ1BDTUFRUkJySWdBa0FDQUJweUFCUWlDSXB5QUNRZjhCY1NBQVFRaHFFQWtpQWdSL1FkVE5BU0FDTmdJQVFYOEZRUUFMSVFJZ0FDa0RDQ0VCSUFCQkVHb2tBRUovSUFFZ0Foc0xCZ0FnQUJBQUN3WUFJQUFRQXd2dmdRRUZBM3d5ZndoN0EzNEdmU01BUWVEQUFHc2lHaVFBSUJwQkFEWUNJRUVDSVE0Q1FBSkFJQUFvQWdBaUNFR05sSnpVQUVZTkFDQUlRZitmL1k4RlJ3UkFBa0FnQ0VHQWdJRGdBRWNOQUNBQUtBSUVRZXFnZ1lFQ1J3MEFJQUFvQWdoQmpaU2MxQUJHRFFJTFFjMElFQUJCQVNFT0RBSUxRUUFoRGdzQ2YwRUFRUUZCNEFBUUZ5SUlSUTBBR2lBSVFRRTJBa3dDUUFKQUFrQUNRQ0FPRGdNQUF3RURDeUFJUWNRQU5nSllJQWhCeFFBMkFsUWdDRUhHQURZQ1VDQUlRY2NBTmdJUUlBaEJ5QUEyQWdRZ0NFSEpBRFlDSENBSVFjb0FOZ0lZSUFoQnl3QTJBaFFnQ0VITUFEWUNBQ0FJUWMwQU5nSmNJQWhCemdBMkFpd2dDRUhQQURZQ0tDQUlRZEFBTmdJa0lBaEIwUUEyQWlBZ0NFSFNBRFlDRENBSVFkTUFOZ0lJSUFnUVZpSU5OZ0l3SUEwTkFRd0NDeUFJUWRRQU5nSllJQWhCMVFBMkFsUWdDRUhXQURZQ1VDQUlRZGNBTmdJUUlBaEIyQUEyQWdRZ0NFSFpBRFlDWENBSVFkb0FOZ0lzSUFoQjJ3QTJBaWdnQ0VIY0FEWUNKQ0FJUWQwQU5nSWdJQWhCM2dBMkFod2dDRUhmQURZQ0dDQUlRZUFBTmdJVUlBaEI0UUEyQWd3Z0NFSGlBRFlDQ0NBSVFlTUFOZ0lBSUFnQ2YwRUJRWWdCRUJjaURRUkFJQTBRVmlJVU5nSUFBa0FnRkVVTkFDQU4vUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDYkNBTlFRQTZBSHdnRFJBNUloUTJBZ1FnRkVVTkFDQU5FRGtpRkRZQ0NDQVVSUTBBSUEwTUFnc2dEUkI5QzBFQUN5SU5OZ0l3SUExRkRRRUxJQWhCQVRZQ1NDQUlRUUUyQWtBZ0NFRUFOZ0k4SUFoQ0FEY0NOQ0FJUVFFMkFrUWdDQXdCQ3lBSUVCUkJBQXNpRFFSQUlBMUJBRFlDUENBTlFlUUFOZ0pJQ3lBTkJFQWdEVUVBTmdJNElBMUI1UUEyQWtRTElBMEVRQ0FOUVFBMkFqUWdEVUhtQURZQ1FBc2dHa0VrYWlJSUJFQWdDRUVBUWJqQUFCQVpJZ2hCQURZQ3VFQWdDRUovTndLSVFBc2dBd1JBSUJvZ0dpZ0MzRUJCQVhJMkF0eEFDeUFhSUFFMkFod2dHaUFBTmdJWUlCb2dBRFlDRkVFQklRNUJBQ0VCQWtBZ0drRVVhaUlJUlEwQVFRRkJ5QUFRRnlJQUJIOENmeUFBUVlDQXdBQTJBa0FnQUVHQWdNQUFFQmdpRkRZQ0lDQVVSUVJBSUFBUUZFRUFEQUVMSUFBZ0ZEWUNKQ0FBUVFJMkFod2dBRUVETmdJWUlBQkJCRFlDRkNBQVFRVTJBaEFnQUVFR05nSXNJQUJCQ0RZQ0tDQUFJQUFvQWtSQkFuSTJBa1FnQUFzRlFRQUxJZ0JGRFFBZ0FBUkFJQUJCQURZQ0JDQUFJQWcyQWdBTElBZzFBZ2doUWlBQUJFQWdBQ0JDTndNSUN3SkFJQUJGRFFBZ0FDMEFSRUVDY1VVTkFDQUFRY0FBTmdJUUN5QUFCRUFnQUVIQ0FEWUNHQXNnQUFSQUlBQkJ3d0EyQWh3TElBQWhBUXNnQVNFQUFuOGdHa0VrYWlFQkFrQWdEVVVOQUNBQlJRMEFJQTBvQWt4RkJFQWdEVUUwYWtFQlFZbk5BRUVBRUJOQkFBd0NDeUFOS0FJd0lBRWdEU2dDR0JFREFFRUJJUWtMSUFrTFJRUkFRZHdJRUFBZ0FCQTlJQTBRUGd3QkN3Si9JQnBCSUdvaEFVRUFJUWdDUUNBQVJRMEFJQTFGRFFBZ0RTZ0NURVVFUUNBTlFUUnFRUUZCMnMwQVFRQVFFMEVBREFJTElBQWdEU2dDTUNBQklBMUJOR29nRFNnQ0FCRUJBQ0VJQ3lBSUMwVUVRRUg0Q0JBQUlBQVFQU0FORUQ0Z0dpZ0NJQkFsREFFTElCb29BaUFoQVVFQUlRZ0NRQ0FOUlEwQUlBQkZEUUFnRFNnQ1RFVU5BQ0FOS0FJd0lBQWdBU0FOUVRScUlBMG9BZ1FSQVFBaENBc0NRQ0FJQkVCQkFDRUlBa0FnRFVVTkFDQUFSUTBBSUEwb0FreEZEUUFnRFNnQ01DQUFJQTFCTkdvZ0RTZ0NFQkVBQUNFSUN5QUlEUUVMUWY4SkVBQWdEUkErSUFBUVBTQWFLQUlnRUNVTUFRc2dBQkE5SUEwUVBpQWFLQUlnSWhRb0Fod2lBQVJBSUFBUUZDQWFLQUlnSWhSQ0FEY0NIQXNnRkNnQ0VDRWhBa0FDUUNBQ1JRUkFBa0FnQkVVTkFDQWhRUVJIRFFCQkFTRVpRUVFoSVF3REN3SkFBa0FnRkNnQ0ZDSUJRUU5HRFFBZ0lVRURSdzBBSUJRb0FoZ2lBQ2dDQUNBQUtBSUVSdzBCSUFBb0FqUkJBVVlOQVNBVVFRTTJBaFFNQXdzZ0lVRUNTdzBBSUJSQkFqWUNGQXdEQ3dKQUFrQWdBVUVEYXc0REF3RUFCQXNqQUVFUWF5SUpKQUFDUUFKQUFrQWdGQ2dDRUVFRVNRMEFJQlFvQWhnaUFDZ0NBQ0lCSUFBb0FqUkhEUUFnQVNBQUtBSm9SdzBBSUFFZ0FDZ0NuQUZIRFFBZ0FDZ0NCQ0lCSUFBb0FqaEhEUUFnQVNBQUtBSnNSdzBBSUFFZ0FDZ0NvQUZHRFFFTElBbEJuUWcyQWdRZ0NVRzRDallDQUVHd3l3RkJ6ajhnQ1JBYURBRUxBa0FnQUNnQ0RDQUFLQUlJYkNJTlJRUkFJQUFvQXNnQklRRU1BUXREQUFDQVAwRi9JQUFvQXJRQmRFRi9jN09WSVVWREFBQ0FQMEYvSUFBb0FvQUJkRUYvYzdPVklVZERBQUNBUDBGL0lBQW9Ba3gwUVg5enM1VWhTRU1BQUlBL1FYOGdBQ2dDR0hSQmYzT3psU0ZHSUFBb0FzZ0JJUUVnQUNnQ2xBRWhBaUFBS0FKZ0lRb2dBQ2dDTENFSVFRQWhBQUpBSUExQkNFa05BQ0FJSUFvZ0RVRUNkQ0lMYWlJUFNTQUtJQWdnQzJvaUZrbHhEUUFnQWlBV1NTQUlJQUlnQzJvaURFbHhEUUFnQVNBV1NTQUlJQUVnQzJvaUMwbHhEUUFnQ2lBTVNTQUNJQTlKY1EwQUlBRWdEMGtnQ2lBTFNYRU5BQ0FCSUF4SklBSWdDMGx4RFFBZ0RVRjhjU0VBSUVYOUV5RTZJRWY5RXlFN0lFajlFeUZBSUViOUV5RTlRUUFoQ3dOQUlBSWdDMEVDZENJUGFpSVcvUUFDQUNFK0lBb2dEMm9pRFAwQUFnQWhQeUFJSUE5cUloRDlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdQU0FRL1FBQ0FQMzZBZjNtQWYzbEFmME1BQUIvUXdBQWYwTUFBSDlEQUFCL1EvM21BZjBNQUFDQVB3QUFnRDhBQUlBL0FBQ0FQeUE2SUFFZ0QycjlBQUlBL2ZvQi9lWUIvZVVCSWp6OTVnSDkrQUg5Q3dJQUlBejlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdRQ0EvL2ZvQi9lWUIvZVVCL1F3QUFIOURBQUIvUXdBQWYwTUFBSDlEL2VZQklEejk1Z0g5K0FIOUN3SUFJQmI5REFBQWdEOEFBSUEvQUFDQVB3QUFnRDhnT3lBKy9mb0IvZVlCL2VVQi9Rd0FBSDlEQUFCL1F3QUFmME1BQUg5RC9lWUJJRHo5NWdIOStBSDlDd0lBSUF0QkJHb2lDeUFBUncwQUN5QUFJQTFHRFFFTEEwQUNmME1BQUlBL0lFWWdDQ0FBUVFKMElndHFJZzhvQWdDeWxKTkRBQUIvUTVSREFBQ0FQeUJGSUFFZ0Myb29BZ0N5bEpNaVNaUWlTb3REQUFBQVQxMEVRQ0JLcUF3QkMwR0FnSUNBZUFzaEZpQUNJQXRxSWd3b0FnQWhFQ0FLSUF0cUlnc29BZ0FoRGlBUElCWTJBZ0FnQ3dKL1F3QUFnRDhnU0NBT3NwU1RRd0FBZjBPVUlFbVVJa3FMUXdBQUFFOWRCRUFnU3FnTUFRdEJnSUNBZ0hnTE5nSUFJQXdDZjBNQUFJQS9JRWNnRUxLVWswTUFBSDlEbENCSmxDSkppME1BQUFCUFhRUkFJRW1vREFFTFFZQ0FnSUI0Q3pZQ0FDQUFRUUZxSWdBZ0RVY05BQXNMSUFFUUZDQVVLQUlZSWdCQkNEWUNnQUVnQUVFSU5nSk1JQUJCQ0RZQ0dDQUFRUUEyQXNnQklCUkJBVFlDRkNBVUlCUW9BaEJCQVdzaUFEWUNFQ0FBUVFSSkRRQkJBeUVBQTBBZ0ZDZ0NHQ0FBUVRSc2FpSUJJQUVvQW1RMkFqQWdBU0FCL1FBQ1ZQMExBaUFnQVNBQi9RQUNSUDBMQWhBZ0FTQUIvUUFDTlAwTEFnQWdBRUVCYWlJQUlCUW9BaEJKRFFBTEN5QUpRUkJxSkFBTUF3c2pBRUVRYXlJSkpBQUNRQUpBQWtBZ0ZDZ0NFRUVEU1EwQUlCUW9BaGdpQUNnQ0FDSUJJQUFvQWpSSERRQWdBU0FBS0FKb1J3MEFJQUFvQWdRaUFTQUFLQUk0UncwQUlBRWdBQ2dDYkVZTkFRc2dDVUhiQ0RZQ0JDQUpRYmdLTmdJQVFiRExBVUg0UHlBSkVCb01BUXNDUUNBQUtBSU1JQUFvQWdoc0lnSkZEUUJCZnlBQUtBSVlJZ3AwUVg5eklRRkJBRUVCSUFwQkFXdDBJZ29nQUNnQ2lBRWJJUTlCQUNBS0lBQW9BbFFiSVJZZ0FDZ0NsQUVoQ2lBQUtBSmdJUWdnQUNnQ0xDRU5RUUFoQUFKQUlBSkJCRWtOQUNBTklBZ2dBa0VDZENJTGFpSU1TU0FJSUFzZ0RXb2lFRWx4RFFBZ0NpQVFTU0FOSUFvZ0Myb2lDMGx4RFFBZ0NDQUxTU0FLSUF4SmNRMEFJQUpCZkhFaEFDQUIvUkVoUENBUC9SRWhQU0FXL1JFaFBrRUFJUXNEUUNBTklBdEJBblFpREdvaUVDQThJQW9nREdvaUR2MEFBZ0FnUGYyeEFmMzZBU0k2L1F4cGRMTS9hWFN6UDJsMHN6OXBkTE0vL2VZQklBZ2dER29pRFAwQUFnQWdQdjJ4QWYzNkFTSTcvUXl6V1JxNHMxa2F1TE5aR3JpeldScTQvZVlCSUJEOUFBSUEvZm9CSWtEOTVBSDk1QUg5REFBQUFEOEFBQUEvQUFBQVB3QUFBRC85NUFIOStBRWlQLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDI0QVNBOElELzlPZjFTL1FzQ0FDQU1JRHdnT3YwTUdkQTJ2eG5RTnI4WjBEYS9HZEEydi8zbUFTQkEvUXpWQ1lBLzFRbUFQOVVKZ0QvVkNZQS8vZVlCSUR2OURDY3hzTDRuTWJDK0p6R3d2aWN4c0w3OTVnSDk1QUg5NUFIOURBQUFBRDhBQUFBL0FBQUFQd0FBQUQvOTVBSDkrQUVpUC8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAyNEFTQThJRC85T2YxUy9Rc0NBQ0FPSUR3Z092ME12VGNHdDcwM0JyZTlOd2EzdlRjR3QvM21BU0JBL1F4bTlIOC9adlIvUDJiMGZ6OW05SDgvL2VZQklEdjlERFhTNGo4MTB1SS9OZExpUHpYUzRqLzk1Z0g5NUFIOTVBSDlEQUFBQUQ4QUFBQS9BQUFBUHdBQUFELzk1QUg5K0FFaU92ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMjRBU0E4SURyOU9mMVMvUXNDQUNBTFFRUnFJZ3NnQUVjTkFBc2dBQ0FDUmcwQkN3TkFBbjhnQ2lBQVFRSjBJZ3RxSWd3b0FnQWdEMnV5SWtWRGFYU3pQNVFnQ0NBTGFpSVFLQUlBSUJacnNpSkhRN05aR3JpVUlBc2dEV29pRGlnQ0FMSWlTSktTUXdBQUFEK1NJa2FMUXdBQUFFOWRCRUFnUnFnTUFRdEJnSUNBZ0hnTElRc2dEaUFCSUF0QkFDQUxRUUJLR3lBQklBdElHellDQUNBUUlBRUNmeUJGUXhuUU5yK1VJRWhEMVFtQVA1UWdSME1uTWJDK2xKS1NRd0FBQUQrU0lrYUxRd0FBQUU5ZEJFQWdScWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBTUlBRUNmeUJGUTcwM0JyZVVJRWhEWnZSL1A1UWdSME0xMHVJL2xKS1NRd0FBQUQrU0lrV0xRd0FBQUU5ZEJFQWdSYWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBQVFRRnFJZ0FnQWtjTkFBc0xJQlJCQVRZQ0ZBc2dDVUVRYWlRQURBSUxJQ0VnQWlBQ0lDRkxHeUVoUVFFaEdRd0JDd0pBQWtBQ2Z3SkFBa0FnRkNnQ0dDSUJLQUlBUVFGSERRQUNRQUpBSUFFb0FqUkJBV3NPQWdFQUFnc2dBU2dDYUVFQ1J3MEJBa0FnQVNnQ0JFRUJSdzBBSUFFb0FqaEJBa2NOQUNBQktBSnNRUUpIRFFBZ0ZDSVdLQUlZSWdBb0FoZ2hBU0FBS0FLVUFTRU9JQUFvQW1BaENpQUFLQUlzSVJBZ0FDZ0NQQ0VmSUFBb0FnZ2lDU0FBS0FJTUlnSnNRUUowSWdBUUhDRUlJQUFRSENFTklBQVFIQ0VVQWtBQ1FBSkFBa0FDUUFKQUlBaEZEUUFnRFVVTkFDQVVSUTBBUVg4Z0FYUkJmM01oREVFQklBRkJBV3QwSVJFZ0FpQVdLQUlFUVFGeElnQnJJU1lnRmlnQ0FFRUJjU0VkSUFCRkRRTWdDVVVOQXdKL1FRQWdFV3V5dXlJRlJHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSVJNQ2Z5QUZSQ2N4Q0t3Y1d2dy9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNoRlNBSlFRaEpBbjhnQlVRNzMwK05sMjcyUDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElSc05BU0FOSUFoclFSQkpEUUVnRkNBSWEwRVFTUTBCSUFnZ0VHdEJFRWtOQVNBVUlBMXJRUkJKRFFFZ0RTQVFhMEVRU1EwQklCUWdFR3RCRUVrTkFTQVVJQWxCZkhFaUQwRUNkQ0lDYWlFQUlBSWdDR29oQVNBVi9SRWhPeUFUL1JFaFFDQU0vUkVoUENBYi9SRWhQUU5BSUFnZ0YwRUNkQ0lMYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBTElCQnEvUUFDQUNJNklEMzlyZ0VpUGlBOC9iWUJJRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxUy9Rc0NBQ0FMSUExcS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb2dRUDJ4QVNJK0lEejl0Z0VnUHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBSUFzZ0ZHcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdPaUE3L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVdjBMQWdBZ0YwRUVhaUlYSUE5SERRQUxJQUlnRUdvaEVDQUNJQTFxSVFJZ0NTQVBSZzBFREFJTElBZ1FGQ0FORUJRZ0ZCQVVEQVFMSUFnaEFTQU5JUUlnRkNFQUN3TkFJQUVnRUNnQ0FDSUxJQnRxSWhjZ0RDQU1JQmRLRzBFQUlCZEJBRTRiTmdJQUlBSWdDeUFUYXlJWElBd2dEQ0FYU2h0QkFDQVhRUUJPR3pZQ0FDQUFJQXNnRldvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBRUVFYWlFQUlBSkJCR29oQWlBQlFRUnFJUUVnRUVFRWFpRVFJQTlCQVdvaUR5QUpSdzBBQ3d3QkN5QVVJUUFnRFNFQ0lBZ2hBUXNnQ1NBZGF5RWlBa0FnSmtGK2NTSW5CSDhDZjBFQUlCRnJzcnNpQlVScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVlSUNKQmZuRWlLRUVCYXdKL0lBVkVKekVJckJ4YS9EK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVnUVg1eEFuOGdCVVE3MzArTmwyNzJQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSVNNZ0owRUJheUVwUVFKcUlRc2dDVUVDZENFYkEwQWdBQ0FiYWlFWElBSWdHMm9oRlNBQklCdHFJUThnRUNBYmFpRVRJQjBFUUNBQklCQW9BZ0FpQ1NBamFpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FDSUFrZ0htc2lFaUFNSUF3Z0Vrb2JRUUFnRWtFQVRoczJBZ0FnQUNBSklDQnFJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFvb0FnQWhHQ0FQQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFUS0FJQUlnbHFJaElnRENBTUlCSktHMEVBSUJKQkFFNGJOZ0lBSUJVZ0NRSi9JQmdnRVd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FYQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQWxxSWdrZ0RDQUpJQXhJRzBFQUlBbEJBRTRiTmdJQUlCZEJCR29oRnlBVlFRUnFJUlVnRDBFRWFpRVBJQk5CQkdvaEV5QUNRUVJxSVFJZ0VFRUVhaUVRSUFGQkJHb2hBU0FBUVFScUlRQUxRUUFoQ1NBb0JFQURRQ0FLS0FJQUlSd2dBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFQ2dDQUNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNBQ0FDSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQUNBS0tBSUFJUndnQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0JDSVNhaUlZSUF3Z0RDQVlTaHRCQUNBWVFRQk9HellDQkNBQ0lCSUNmeUFjSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lHQ0FNSUF3Z0dFb2JRUUFnR0VFQVRoczJBZ1FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFTYWlJU0lBd2dEQ0FTU2h0QkFDQVNRUUJPR3pZQ0JDQUtLQUlBSVJ3Z0R3Si9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0V5Z0NBQ0lTYWlJWUlBd2dEQ0FZU2h0QkFDQVlRUUJPR3pZQ0FDQVZJQklDZnlBY0lCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpR0NBTUlBd2dHRW9iUVFBZ0dFRUFUaHMyQWdBZ0Z3Si9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBU2FpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FLS0FJQUlSd2dEd0ovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFeWdDQkNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNCQ0FWSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnUWdGd0ovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQkNBT1FRUnFJUTRnQ2tFRWFpRUtJQmRCQ0dvaEZ5QVZRUWhxSVJVZ0QwRUlhaUVQSUJOQkNHb2hFeUFBUVFocUlRQWdBa0VJYWlFQ0lBRkJDR29oQVNBUVFRaHFJUkFnQ1VFQ2FpSUpJQ2hKRFFBTElBc2hDUXNDUUNBSklDSlBEUUFnRUNnQ0FDRVNJQThDZnlBZklBbEJBWFlpR0VZRVFDQUJJQklnSTJvaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdBaUFTSUI1cklna2dEQ0FKSUF4SUcwRUFJQWxCQUU0Yk5nSUFJQUFnRWlBZ2FpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNBQ0FUS0FJQUlna2dIbXNpRHlBTUlBd2dEMG9iUVFBZ0QwRUFUaHNoRHlBSklDQnFJUk1nQ1NBamFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d3d0JDeUFLS0FJQUlROGdBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFbW9pQ1NBTUlBa2dERWdiUVFBZ0NVRUFUaHMyQWdBZ0FpQVNBbjhnRHlBUmE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFBQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRW1vaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdFeWdDQUNJSkFuOGdDaWdDQUNBUmE3SzdJZ1ZFYXJ4MGt4Z0UxaitpSUE0b0FnQWdFV3V5dXlJR1JBd0NLNGNXMmVZL29xQWlCNWxFQUFBQUFBQUE0RUZqQkVBZ0I2b01BUXRCZ0lDQWdIZ0xheUlQSUF4SUlSTWdEeUFNSUJNYklSTWdEMEVBU0NFU0FuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFscUlnOGdEQ0FNSUE5S0d5RWNJQTlCQUVnaEpFRUFJQk1nRWhzaER3Si9JQVZFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpRVRRUUFnSENBa0d3czJBZ0FnRlNBUE5nSUFJQmNnRXlBTUlBd2dFMG9iUVFBZ0UwRUFUaHMyQWdBZ0FFRUVhaUVBSUFKQkJHb2hBaUFCUVFScUlRRWdFRUVFYWlFUUlCZ2dIMDhOQUNBT1FRUnFJUTRnQ2tFRWFpRUtDeUFBSUJ0cUlRQWdBaUFiYWlFQ0lBRWdHMm9oQVNBUUlCdHFJUkFnSlVFQ2FpSWxJQ2RKRFFBTElDbEJmbkZCQW1vRlFRQUxJQ1pQRFFBZ0hRUkFJQUVDZjBFQUlCRnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElCQW9BZ0FpQ1dvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBaUFKQW44Z0JVUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0QzJzaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBQUovSUFWRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlKSUF3Z0NTQU1TQnRCQUNBSlFRQk9HellDQUNBQ1FRUnFJUUlnRUVFRWFpRVFJQUZCQkdvaEFTQUFRUVJxSVFBTElDSWdJa0YrY1NJYkJIOGdHMEVCYXlJSlFYNXhBa0FDZjBFQUlCdEJEMGtOQUJwQkFDQUJJQUlnQ1VFQmRpSVZRUU4wUVFocUloTnFJZ2xKSUFJZ0FTQVRhaUlMU1hFTkFCcEJBQ0FBSUF0SklBRWdBQ0FUYWlJUFNYRU5BQnBCQUNBQklCQWdFMm9pRTBrZ0N5QVFTM0VOQUJwQkFDQUtJQXRKSUFFZ0NpQVZRUUowUVFScUloSnFJaGRKY1EwQUdrRUFJQXNnRGtzZ0FTQU9JQkpxSWd0SmNRMEFHa0VBSUFJZ0Qwa2dBQ0FKU1hFTkFCcEJBQ0FDSUJOSklBa2dFRXR4RFFBYVFRQWdBaUFYU1NBSklBcExjUTBBR2tFQUlBSWdDMGtnQ1NBT1MzRU5BQnBCQUNBQUlCTkpJQThnRUV0eERRQWFRUUFnQUNBWFNTQUtJQTlKY1EwQUdrRUFJQUFnQzBrZ0RpQVBTWEVOQUJvZ0NpQVZRUUZxSWlWQi9QLy8vd2R4SWhkQkFuUWlKbW9oQ1NBQUlCZEJBM1FpRW1vaEN5QUJJQkpxSVE4Z0RQMFJJVHdnRWYwUklVQkJBQ0VWQTBBZ0VDQVZRUU4wSWhOQkdISWlIV29pSnlBUUlCTkJFSElpSG1vaUtDQVFJQk5CQ0hJaUlHb2lHQ0FRSUJOcUlpbjlYQUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJVG9DZnlBT0lCVkJBblFpSEdyOUFBSUFJRUQ5c1FIOStnRWlPLzFmSWozOUREdmZUNDJYYnZZL085OVBqWmR1OWovOThnRWlQdjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaEpDQUtJQnhxL1FBQ0FDRS9JQUVnRTJvaUhQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnUHYwaEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FrL1J3QkFuOGdPeUE3L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL1Y4aVB2ME1POTlQalpkdTlqODczMCtObDI3MlAvM3lBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWtIOXJnRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FCSUNCcUlpUWdPLzFhQWdBQklBRWdIbW9pTENBNy9Wb0NBQUlnQVNBZGFpSXRJRHY5V2dJQUF3Si9JRDhnUVAyeEFmMzZBU0k3L1Y4aVAvME1hcngwa3hnRTFqOXF2SFNUR0FUV1AvM3lBU0E5L1F3TUFpdUhGdG5tUHd3Q0s0Y1cyZVkvL2ZJQi9mQUJJajM5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElTb2dBaUFUYWlJdS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb0NmeUE5L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJQ3I5SEFFQ2Z5QTcvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpUGYwTWFyeDBreGdFMWo5cXZIU1RHQVRXUC8zeUFTQSsvUXdNQWl1SEZ0bm1Qd3dDSzRjVzJlWS8vZklCL2ZBQklqdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3Q0FuOGdPLzBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBTWlQdjJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlPLzFhQWdBQUlBSWdJR29pS2lBNy9Wb0NBQUVnQWlBZWFpSXZJRHY5V2dJQUFpQUNJQjFxSWpBZ08vMWFBZ0FEQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RXJJQUFnRTJvaUUvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FyL1J3QkFuOGdQZjBNSnpFSXJCeGEvRDhuTVFpc0hGcjhQLzN5QVNJNi9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQWdKL0lEcjlJUUVpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3RElqMzlyZ0VpT2lBOC9iWUJJRHI5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxU0lqcjlXZ0lBQUNBQUlDQnFJaUFnT3YxYUFnQUJJQUFnSG1vaUhpQTYvVm9DQUFJZ0FDQWRhaUlkSURyOVdnSUFBeUFjL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNkQkJHb2dLRUVFYWlBWVFRUnFJQ245WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FESWpzZ1FmMnVBU0k2SUR6OXRnRWdPdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZJaU92MWFBZ1FBSUNRZ092MWFBZ1FCSUN3Z092MWFBZ1FDSUMwZ092MWFBZ1FESUM3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ095QSsvYkVCSWpvZ1BQMjJBU0E2L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTYvVm9DQkFBZ0tpQTYvVm9DQkFFZ0x5QTYvVm9DQkFJZ01DQTYvVm9DQkFNZ0UvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTdJRDM5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQWdJRHI5V2dJRUFTQWVJRHI5V2dJRUFpQWRJRHI5V2dJRUF5QVZRUVJxSWhVZ0YwY05BQXNnRGlBbWFpRU9JQkFnRW1vaEVDQUNJQkpxSVFJZ0Z5QWxSZ1JBSUE4aEFTQUxJUUFnQ1NFS0RBSUxJQThoQVNBTElRQWdDU0VLSUJkQkFYUUxJUThEUUNBS0tBSUFJUk1nQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0FDSUphaUlMSUF3Z0N5QU1TQnRCQUNBTFFRQk9HellDQUNBQ0lBa0NmeUFUSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lDeUFNSUFzZ0RFZ2JRUUFnQzBFQVRoczJBZ0FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFKYWlJSklBd2dDU0FNU0J0QkFDQUpRUUJPR3pZQ0FDQUtLQUlBSVJNZ0FRSi9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0VDZ0NCQ0lKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3pZQ0JDQUNJQWtDZnlBVElCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpQ3lBTUlBc2dERWdiUVFBZ0MwRUFUaHMyQWdRZ0FBSi9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNCQ0FPUVFScUlRNGdDa0VFYWlFS0lBQkJDR29oQUNBQ1FRaHFJUUlnQVVFSWFpRUJJQkJCQ0dvaEVDQVBRUUpxSWc4Z0cwa05BQXNMUVFKcUJVRUFDeUlMVFEwQUlCQW9BZ0FoQ1FKOElCOGdDMEVCZGtZRVFBSi9RUUFnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnQ1dvaUNpQU1JQW9nREVnYlFRQWdDa0VBVGhzaERpQUZEQUVMQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3lFT0lBb29BZ0FnRVd1eXV3c2hCaUFCSUE0MkFnQWdBaUFKQW44Z0JrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUFTQU1JQUVnREVnYlFRQWdBVUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlBSUF3Z0FDQU1TQnRCQUNBQVFRQk9HellDQUFzZ0ZpZ0NHQ2dDTEJBVUlCWW9BaGdpQUNBSU5nSXNJQUFvQW1BUUZDQVdLQUlZSWdBZ0RUWUNZQ0FBS0FLVUFSQVVJQllvQWhnaUFDQVVOZ0tVQVNBQUlBRDlBQUlBSWp6OUN3Sm9JQUFnUFAwTEFqUWdGa0VCTmdJVUN3d0hDeUFCS0FJRVFRRkhEUUVnQVNnQ09FRUJSdzBCSUFFb0FteEJBVWNOQVNBQktBSVlJUUFnQVNnQ2xBRWhBaUFCS0FKZ0lRc2dBU2dDTENFT0lBRW9BandoSUNBQktBSUlJZ29nQVNnQ0RDSWpiRUVDZENJQkVCd2hEeUFCRUJ3aEZpQUJFQndoRENBUFJRMEZJQlpGRFFVZ0RFVU5CU0FqQkVBZ0NpQVVLQUlBUVFGeElpeHJJU1VDZjBFQVFRRWdBRUVCYTNRaUUydXl1eUlGUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJU1pCZnlBQWRDQWxRWDV4SWlKQkFXc2lDa0VCZGlJQVFRRnFJU2NDZnlBRlJDY3hDS3djV3Z3L29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2hLQ0FLUVg1eElRb2dBRUVDZENFSUlBQkJBM1FoQUNBblFYeHhJUmRCZjNNaEVRSi9JQVZFTzk5UGpaZHU5aitpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFWUlBcEJBbW9oS1NBSVFRUnFJUndnQUVFSWFpRWJJQmRCQW5RaEpDQVhRUU4wSVJJZ0YwRUJkQ0VRSUJIOUVTRThJQlA5RVNGQUlDSkJCMGtoTFNBUElRb2dGaUVBSUF3aENBTkFJQ3dFUUNBS0lBNG9BZ0FpQVNBWWFpSU5JQkVnRFNBUlNCdEJBQ0FOUVFCT0d6WUNBQ0FBSUFFZ0ptc2lEU0FSSUEwZ0VVZ2JRUUFnRFVFQVRoczJBZ0FnQ0NBQklDaHFJZ0VnRVNBQklCRklHMEVBSUFGQkFFNGJOZ0lBSUFoQkJHb2hDQ0FLUVFScUlRb2dEa0VFYWlFT0lBQkJCR29oQUFzQ2Z3Si9JQ0pGQkVBZ0N5RUpJQWdoQVNBS0lRMUJBQXdCQzBFQUlSa0NRQUpBSUMwTkFDQUtJQUFnRzJvaUFVa2dBQ0FLSUJ0cUlnMUpjUTBBSUFnZ0RVa2dDaUFJSUJ0cUlnbEpjUTBBSUFvZ0RpQWJhaUlWU1NBTklBNUxjUTBBSUFzZ0RVa2dDaUFMSUJ4cUloOUpjUTBBSUFJZ0RVa2dDaUFDSUJ4cUlnMUpjUTBBSUFBZ0NVa2dBU0FJUzNFTkFDQUFJQlZKSUFFZ0RrdHhEUUFnQUNBZlNTQUJJQXRMY1EwQUlBQWdEVWtnQVNBQ1MzRU5BQ0FJSUJWSklBa2dEa3R4RFFBZ0NDQWZTU0FKSUF0TGNRMEFJQUlnQ1VrZ0NDQU5TWEVOQUNBTElDUnFJUWtnQ0NBU2FpRUJJQW9nRW1vaERRTkFJQTRnR1VFRGRDSVZRUmh5SWg5cUlpb2dEaUFWUVJCeUloMXFJaTRnRGlBVlFRaHlJaDVxSWk4Z0RpQVZhaUl3L1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlFNkFuOGdBaUFaUVFKMElpdHEvUUFDQUNCQS9iRUIvZm9CSWp2OVh5STkvUXc3MzArTmwyNzJQenZmVDQyWGJ2WS8vZklCSWo3OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJVEVnQ3lBcmF2MEFBZ0FoUHlBS0lCVnFJaXY5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lENzlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ01mMGNBUUovSURzZ08vME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMWZJajc5RER2ZlQ0MlhidlkvTzk5UGpaZHU5ai85OGdFaU8vMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFJQ2Z5QTcvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0F5SkIvYTRCSWpzZ1BQMjJBU0E3L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTcvVm9DQUFBZ0NpQWVhaUl4SUR2OVdnSUFBU0FLSUIxcUlqTWdPLzFhQWdBQ0lBb2dIMm9pTkNBNy9Wb0NBQU1DZnlBL0lFRDlzUUg5K2dFaU8vMWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUV5SUFBZ0ZXb2lOZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0E2QW44Z1BmMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5RVNBeS9Sd0JBbjhnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8xZklqMzlER3E4ZEpNWUJOWS9hcngwa3hnRTFqLzk4Z0VnUHYwTURBSXJoeGJaNWo4TUFpdUhGdG5tUC8zeUFmM3dBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWo3OXNRRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FBSUI1cUlqSWdPLzFhQWdBQklBQWdIV29pTmlBNy9Wb0NBQUlnQUNBZmFpSTNJRHY5V2dJQUF3Si9JRC85RENjeENLd2NXdncvSnpFSXJCeGEvRC85OGdFaU8vMGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNoT0NBSUlCVnFJaFg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lEdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ09QMGNBUUovSUQzOURDY3hDS3djV3Z3L0p6RUlyQnhhL0QvOThnRWlPdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE2L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBeUk5L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVaUk2L1ZvQ0FBQWdDQ0FlYWlJZUlEcjlXZ0lBQVNBSUlCMXFJaDBnT3YxYUFnQUNJQWdnSDJvaUh5QTYvVm9DQUFNZ0svME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQXFRUVJxSUM1QkJHb2dMMEVFYWlBdy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5STdJRUg5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQXhJRHI5V2dJRUFTQXpJRHI5V2dJRUFpQTBJRHI5V2dJRUF5QTEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRHNnUHYyeEFTSTZJRHo5dGdFZ092ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVklpT3YxYUFnUUFJRElnT3YxYUFnUUJJRFlnT3YxYUFnUUNJRGNnT3YxYUFnUURJQlg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT3lBOS9hNEJJam9nUFAyMkFTQTYvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVG45VWlJNi9Wb0NCQUFnSGlBNi9Wb0NCQUVnSFNBNi9Wb0NCQUlnSHlBNi9Wb0NCQU1nR1VFRWFpSVpJQmRIRFFBTElBSWdKR29oQWlBT0lCSnFJUTRnQUNBU2FpRUFJQkFoR1NBcElCY2dKMFlOQWhvTUFRc2dDaUVOSUFnaEFTQUxJUWtMQTBBZ0NTZ0NBQ0VMSUEwQ2Z5QUNLQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUE0b0FnQWlDbW9pQ0NBUklBZ2dFVWdiUVFBZ0NFRUFUaHMyQWdBZ0FDQUtBbjhnQ3lBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVNBSUlCRklHMEVBSUFoQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnQ21vaUNpQVJJQW9nRVVnYlFRQWdDa0VBVGhzMkFnQWdDU2dDQUNFTElBMENmeUFDS0FJQUlCTnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElBNG9BZ1FpQ21vaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzMkFnUWdBQ0FLQW44Z0N5QVRhN0s3SWdaRWFyeDBreGdFMWoraUlBVkVEQUlyaHhiWjVqK2lvQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXRySWdnZ0VTQUlJQkZJRzBFQUlBaEJBRTRiTmdJRUlBRUNmeUFHUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzZ0Ntb2lDaUFSSUFvZ0VVZ2JRUUFnQ2tFQVRoczJBZ1FnQWtFRWFpRUNJQWxCQkdvaENTQUJRUWhxSVFFZ0FFRUlhaUVBSUExQkNHb2hEU0FPUVFocUlRNGdHVUVDYWlJWklDSkpEUUFMSUNrTElnZ2dKVThFUUNBQklRZ2dEU0VLSUFrTUFRc2dEaWdDQUNFS0FuOGdJQ0FJUVFGMklobEdCRUFnQ2lBbWF5SUlJQkVnQ0NBUlNCdEJBQ0FJUVFCT0d5RUxJQW9nR0dvaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzaENDQW9EQUVMSUFvQ2Z5QUpLQUlBSUJOcnNyc2lCVVJxdkhTVEdBVFdQNklnQWlnQ0FDQVRhN0s3SWdaRURBSXJoeGJaNWoraW9DSUhtVVFBQUFBQUFBRGdRV01FUUNBSHFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVVnaEN5QUlJQkVnQ3h0QkFDQUlRUUJPR3lFTEFuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFwcUlnZ2dFU0FJSUJGSUcwRUFJQWhCQUU0YklRZ0NmeUFGUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzTElSVWdEU0FJTmdJQUlBQWdDellDQUNBQklBb2dGV29pQ2lBUklBb2dFVWdiUVFBZ0NrRUFUaHMyQWdBZ0FVRUVhaUVJSUFCQkJHb2hBQ0FOUVFScUlRb2dEa0VFYWlFT0lBa2dHU0FnVHcwQUdpQUNRUVJxSVFJZ0NVRUVhZ3NoQ3lBNVFRRnFJamtnSTBjTkFBc0xJQlFvQWhnb0Fpd1FGQ0FVS0FJWUlnQWdEellDTENBQUtBSmdFQlFnRkNnQ0dDSUFJQlkyQW1BZ0FDZ0NsQUVRRkNBVUtBSVlJZ0FnRERZQ2xBRWdBQ0FBL1FBQ0FDSTgvUXNDYUNBQUlEejlDd0kwSUJSQkFUWUNGRUVBSVJrTUJnc2dBU2dDYUVFQlJ3MEFJQUVvQWdSQkFVY05BQ0FCS0FJNFFRRkhEUUFnQVNnQ2JFRUJSdzBBSUFFb0FoZ2hBaUFCS0FLVUFTRUpJQUVvQW1BaERpQUJLQUlzSVFBZ0FTZ0NEQ0FCS0FJSWJDSU1RUUowSWdFUUhDRUlJQUVRSENFUElBRVFIQ0VMQWtBZ0NFVU5BQ0FQUlEwQUlBdEZEUUFnREVVTkJFRi9JQUowUVg5eklSbEJBU0FDUVFGcmRDRVRJQXhCQ0VrTkFpQVBJQWhyUVJCSkRRSWdDeUFJYTBFUVNRMENJQWdnQUd0QkVFa05BaUFJSUE1clFSQkpEUUlnQ0NBSmEwRVFTUTBDSUFzZ0QydEJFRWtOQWlBUElBQnJRUkJKRFFJZ0R5QU9hMEVRU1EwQ0lBOGdDV3RCRUVrTkFpQUxJQUJyUVJCSkRRSWdDeUFPYTBFUVNRMENJQXNnQ1d0QkVFa05BaUFKSUF4QmZIRWlDa0VDZENJUWFpRU5JQXNnRUdvaEFTQUlJQkJxSVFJZ0dmMFJJVHdnRS8wUklUb0RRQUovSUFrZ0ZrRUNkQ0lSYXYwQUFnQWdPdjJ4QWYzNkFTSTcvVjhpUGYwTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFVklBNGdFV3I5QUFJQUlUOGdDQ0FSYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUlCRnEvUUFDQUNKQUFuOGdQdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUVTQVYvUndCQW44Z095QTcvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpTy8wTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VBSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0FnSi9JRDc5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0QvYTRCSWo0Z1BQMjJBU0ErL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVV2MExBZ0FDZnlBL0lEcjlzUUg5K2dFaVB2MWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUVWSUE4Z0VXcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdRQUovSUQzOUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUkVnRmYwY0FRSi9JRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5WHlJOS9ReHF2SFNUR0FUV1AycThkSk1ZQk5ZLy9mSUJJRHY5REF3Q0s0Y1cyZVkvREFJcmh4Ylo1ai85OGdIOThBRWlPLzBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBLzJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RVZJQXNnRVdyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1FBSi9JRHY5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9SRWdGZjBjQVFKL0lEMzlEQ2N4Q0t3Y1d2dy9KekVJckJ4YS9ELzk4Z0VpTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQUlDZnlBNy9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQS8ydUFTSTdJRHo5dGdFZ08vME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVkw5Q3dJQUlCWkJCR29pRmlBS1J3MEFDeUFLSUF4R0RRUWdEaUFRYWlFT0lBQWdFR29oQUNBUElCQnFEQU1MSUFnUUZDQVBFQlFnQ3hBVURBVUxJQnBCendNMkFnUWdHa0c0Q2pZQ0FFR3d5d0ZCbzhBQUlCb1FHZ3dFQ3lBSUlRSWdDeUVCSUFraERTQVBDeUVKQTBBZ0RpZ0NBQ0VSSUFJQ2Z5QU5LQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFBb0FnQWlGbW9pRUNBWklCQWdHVWdiUVFBZ0VFRUFUaHMyQWdBZ0NTQVdBbjhnRVNBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJaEFnR1NBUUlCbElHMEVBSUJCQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRm1vaUZpQVpJQllnR1VnYlFRQWdGa0VBVGhzMkFnQWdBVUVFYWlFQklBbEJCR29oQ1NBQ1FRUnFJUUlnRFVFRWFpRU5JQTVCQkdvaERpQUFRUVJxSVFBZ0NrRUJhaUlLSUF4SERRQUxDeUFVS0FJWUtBSXNFQlFnRkNnQ0dDSUFJQWcyQWl3Z0FDZ0NZQkFVSUJRb0FoZ2lBQ0FQTmdKZ0lBQW9BcFFCRUJRZ0ZDZ0NHQ0FMTmdLVUFTQVVRUUUyQWhSQkFDRVpEQUVMSUE4UUZDQVdFQlFnREJBVUN5QWFLQUlnSVFBQ1FDQUREUUFnSVVVTkFDQUFLQUlZSVJSQkFDRVdBMEFnRkNBV1FUUnNhaUlES0FJWUlnSkJDRWNFUUFKQUlBSkJCMDBFUUNBREtBSU1JQU1vQWdoc0lRRWdBeWdDTENFSUlBTW9BaUFFUUNBQlJRMENRUUVnQWtFQmEzU3RJVUpCQUNFS0lBRkJCRThFUUNBQlFYeHhJUW9nUXYwU0lUeEJBQ0VPQTBBZ0NDQU9RUUowYWlJQ0lBTDlBQUlBSWpyOXh3RkJCLzNMQVNJNy9SMEFJRHo5SFFBaVEzLzlFaUE3L1IwQklEejlIUUVpUkgvOUhnRWdPaUE4L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2NjQlFRZjl5d0VpT3YwZEFDQkRmLzBTSURyOUhRRWdSSC85SGdIOURRQUJBZ01JQ1FvTEVCRVNFeGdaR2h2OUN3SUFJQTVCQkdvaURpQUtSdzBBQ3lBQklBcEdEUU1MQTBBZ0NDQUtRUUowYWlJQ0lBSTBBZ0JDQjRZZ1FuOCtBZ0FnQ2tFQmFpSUtJQUZIRFFBTERBSUxJQUZGRFFGQmZ5QUNkRUYvYzYwaFFrRUFJUW9nQVVFRVR3UkFJQUZCZkhFaENpQkMvUkloUEVFQUlRNERRQ0FJSUE1QkFuUnFJZ0lnQXYwQUFnQWlPdjNKQWYwTS93QUFBQUFBQUFEL0FBQUFBQUFBQVAzVkFTSTcvUjBBSUR6OUhRQWlRNEQ5RWlBNy9SMEJJRHo5SFFFaVJJRDlIZ0VnT2lBOC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ja0IvUXovQUFBQUFBQUFBUDhBQUFBQUFBQUEvZFVCSWpyOUhRQWdRNEQ5RWlBNi9SMEJJRVNBL1I0Qi9RMEFBUUlEQ0FrS0N4QVJFaE1ZR1JvYi9Rc0NBQ0FPUVFScUlnNGdDa2NOQUFzZ0FTQUtSZzBDQ3dOQUlBZ2dDa0VDZEdvaUFpQUNOUUlBUXY4QmZpQkNnRDRDQUNBS1FRRnFJZ29nQVVjTkFBc01BUXNnQWtFSWF5RUlJQU1vQWd3Z0F5Z0NDR3doQVNBREtBSXNJUTBnQXlnQ0lBUkFJQUZGRFFGQkFDRUtJQUZCQkU4RVFDQUJRWHh4SVFwQkFDRUNBMEFnRFNBQ1FRSjBhaUlKSUFuOUFBSUFJQWo5ckFIOUN3SUFJQUpCQkdvaUFpQUtSdzBBQ3lBQklBcEdEUUlMQTBBZ0RTQUtRUUowYWlJQ0lBSW9BZ0FnQ0hVMkFnQWdDa0VCYWlJS0lBRkhEUUFMREFFTElBRkZEUUJCQUNFS0lBRkJCRThFUUNBQlFYeHhJUXBCQUNFQ0EwQWdEU0FDUVFKMGFpSUpJQW45QUFJQUlBajlyUUg5Q3dJQUlBSkJCR29pQWlBS1J3MEFDeUFCSUFwR0RRRUxBMEFnRFNBS1FRSjBhaUlDSUFJb0FnQWdDSFkyQWdBZ0NrRUJhaUlLSUFGSERRQUxDeUFEUVFnMkFoZ0xJQlpCQVdvaUZpQWhSdzBBQ3dzZ0FDZ0NEQ0FBS0FJSWJDRUJBa0FnR1VVRVFDQUFLQUlVUVFKR0JFQWdBQ2dDRUVFQlJnUkFJQUFvQWhnb0Fpd2dBUkFTREFNTElBUkZEUUlnQUNnQ0dDSUFLQUlzSUFBb0FtQWdBUkFJREFJTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUVRQnd3QkN3SkFBa0FDUUNBaFFRRnJEZ1FBQXdFQ0F3c2dBQ2dDR0NnQ0xDQUJFQVlNQWdzZ0FDZ0NHQ0lBS0FJc0lBQW9BbUFnQUNnQ2xBRWdBUkFGREFFTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUFvQXNnQklBRVFCQXNnR2lnQ0lCQWxRUUFoRGdzZ0drSGd3QUJxSkFBZ0Rnc0lBRUVJSUFBUUtRdXJBZ0lDZmdKL1FuOGhBeUFBTFFCRVFRaHhSUVJBSUFBZ0FDZ0NJQ0lHTmdJa0FrQUNRQUpBSUFBZ0FDZ0NNQ0lGQkg4RFFDQUdJQVVnQUNnQ0FDQUFLQUlVRVFBQUlnVkJmMFlOQWlBQUlBQW9BaVFnQldvaUJqWUNKQ0FBSUFBb0FqQWdCV3NpQlRZQ01DQUZEUUFMSUFBb0FpQUZJQVlMTmdJa0lBRkNBRlVOQVVJQUlRTU1BZ3NnQUNBQUtBSkVRUWh5TmdKRUlBSkJCRUhQK1FCQkFCQVRJQUJCQURZQ01DQUFJQUFvQWtSQkNISTJBa1JDZnc4TFFnQWhBd05BSUFFZ0FDZ0NBQ0FBS0FJWUVRMEFJZ1JDZjFFRVFDQUNRUVJCd1BrQVFRQVFFeUFBSUFBb0FrUkJDSEkyQWtRZ0FDQUFLUU00SUFOOE53TTRRbjhnQXlBRFVCc1BDeUFESUFSOElRTWdBU0FFZlNJQlFnQlZEUUFMQ3lBQUlBQXBBemdnQTN3M0F6Z0xJQU1MSXdFQmZ5QUJJQUVvQWdBZ0FTZ0NDQ0lCSUFDbklnSWdBU0FDU1J0cU5nSUVRUUVMUEFJQ2Z3RitJQUVvQWdBZ0FTZ0NDR29pQXlBQktBSUVJZ0pHQkVCQ2Z3OExJQUVnQWlBQXAybzJBZ1FnQUNBRElBSnJyQ0lFSUFBZ0JGTWJDNXNCQVFWL1FRRWdBaWdDQ0NJSElBZEJBVTBiSVFRZ0FpZ0NCQ0lESUFJb0FnQnJJUVlEUUNBRUlnVkJBWFFoQkNBRklBWnJJQUZKRFFBTElBVWdCMGNFUUNBRkVCZ2lBMFVFUUVGL0R3c2dBaWdDQUNJRUJFQWdBeUFFSUFZUUZob2dBaWdDQUJBVUN5QUNJQVUyQWdnZ0FpQUROZ0lBSUFJZ0F5QUdhaUlETmdJRUN5QURJQUFnQVJBV0dpQUNJQUlvQWdRZ0FXbzJBZ1FnQVF1T0F3SUNmZ0ovSUFBb0FqQWlCU0FCcHlJR1R3UkFJQUFnQlNBR2F6WUNNQ0FBSUFBb0FpUWdCbW8yQWlRZ0FDQUFLUU00SUFGOE53TTRJQUVQQ3lBQUxRQkVRUVJ4QkVBZ0FFRUFOZ0l3SUFBZ0FDZ0NKQ0FGYWpZQ0pDQUFJQVd0SWdFZ0FDa0RPSHczQXpnZ0FVSi9JQVViRHdzQ1FDQUZSUVJBREFFTElBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FTQUZyU0lEZlNFQkN5QUJRZ0JWQkVBRFFDQUFLUU1JSUFBcEF6Z2dBU0FEZkh4VUJFQWdBa0VFUWVuNUFFRUFFQk1nQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dBM3dpQXpjRE9DQUFLUU1JSWdFZ0EzMGhCQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFVRVFDQUFJQUUzQXpnTElBQWdCVUVFY2pZQ1JFSi9JQVFnQVNBRFVSc1BDeUFCSUFBb0FnQWdBQ2dDR0JFTkFDSUVRbjlSQkVBZ0FrRUVRZW41QUVFQUVCTWdBQ0FBS0FKRVFRUnlOZ0pFSUFBZ0FDa0RPQ0FEZkRjRE9FSi9JQU1nQTFBYkR3c2dBeUFFZkNFRElBRWdCSDBpQVVJQVZRMEFDd3NnQUNBQUtRTTRJQU44TndNNElBTUxSZ0VDZnlBQ0tBSUFJQUlvQWdocUlnUWdBaWdDQkNJRFJnUkFRWDhQQ3lBQUlBTWdCQ0FEYXlJQUlBRWdBQ0FCU1JzaUFCQVdHaUFDSUFJb0FnUWdBR28yQWdRZ0FBdXFBZ0VFZnlNQVFSQnJJZ1FrQUFKQUlBQW9BblFOQUNBQ1FRRk5CRUFnQTBFQlFZM0ZBRUVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FFS0FJTUlnWkIvLzhEY1NJSFJRUkFJQU5CQVVHdXhRQkJBQkFUREFFTElBZEJCbXhCQW1vZ0Frc0VRQ0FEUVFGQmpjVUFRUUFRRXd3QkN5QUdRUVpzRUJnaUEwVU5BQ0FBUVFnUUdDSUNOZ0owSUFKRkJFQWdBeEFVREFFTElBSWdBellDQUNBQ0lBUXZBUXdpQWpzQkJDQUNSUVJBUVFFaEJRd0JDMEVBSVFJRFFDQUJRUUpxSUFSQkRHb2lCVUVDRUJVZ0F5QUNRUVpzYWlJR0lBUW9BZ3c3QVFBZ0FVRUVhaUFGUVFJUUZTQUdJQVFvQWd3N0FRSWdBVUVHYWlJQklBVkJBaEFWSUFZZ0JDZ0NERHNCQkVFQklRVWdBa0VCYWlJQ0lBQW9BblF2QVFSSkRRQUxDeUFFUVJCcUpBQWdCUXZzQVFFRWZ5TUFRUkJySWdVa0FBSi9JQUFvQW5naUJFVUVRQ0FEUVFGQjM4UUFRUUFRRTBFQURBRUxJQVFvQWd3RVFDQURRUUZCcWRvQVFRQVFFMEVBREFFTElBSWdCQzBBRWlJQ1FRSjBJZ1JKQkVBZ0EwRUJRYjdFQUVFQUVCTkJBQXdCQzBFQUlBUVFHQ0lFUlEwQUdpQUNCRUJCQUNFREEwQWdBU0FGUVF4cUlnWkJBaEFWSUFRZ0EwRUNkR29pQnlBRktBSU1Pd0VBSUFGQkFtb2dCa0VCRUJVZ0J5QUZLQUlNT2dBQ0lBRkJBMm9nQmtFQkVCVWdCeUFGS0FJTU9nQURJQUZCQkdvaEFTQURRUUZxSWdNZ0FrY05BQXNMSUFBb0FuZ2dCRFlDREVFQkN5QUZRUkJxSkFBTDhBTUJDWDhqQUVFUWF5SUZKQUFDUUNBQ1FRTkpEUUFnQUNnQ2VBMEFJQUVnQlVFTWFrRUNFQlVnQlM4QkRDSUpRWUVJYTBIL2QwMEVRQ0FGSUFrMkFnQWdBMEVCUWFFYklBVVFFd3dCQ3lBQlFRSnFJQVZCREdwQkFSQVZJQVV2QVF3aUNFVUVRQ0FEUVFGQndSaEJBQkFUREFFTElBSWdDRUVEYWtrTkFDQUlJQWxzUVFKMEVCZ2lCMFVOQUNBSUVCZ2lDa1VFUUNBSEVCUU1BUXNnQ0JBWUlndEZCRUFnQnhBVUlBb1FGQXdCQzBFVUVCZ2lCa1VFUUNBSEVCUWdDaEFVSUFzUUZBd0JDeUFCUVFOcUlRTWdCaUFLTmdJSUlBWWdDellDQkNBR0lBazdBUkFnQmlBSE5nSUFJQVVvQWd3aERDQUdRUUEyQWd3Z0JpQU1PZ0FTSUFBZ0JqWUNlQU5BSUFNZ0JVRU1ha0VCRUJVZ0JDQUthaUFGTFFBTVFmOEFjVUVCYWpvQUFDQUVJQXRxSUFVb0FneEJnQUZ4UVFkMk9nQUFJQU5CQVdvaEF5QUVRUUZxSWdRZ0NFY05BQXNnQ1VVRVFFRUJJUVFNQVF0QkFDRUdBMEJCQUNFRVFRQWhBQU5BUVFRZ0JDQUthaTBBQUVFSGFrRURkaUlFSUFSQkJFOGJJZ1FnQXlBQmEyb2dBa29FUUVFQUlRUU1Bd3NnQXlBRlFReHFJQVFRRlNBSElBVW9BZ3cyQWdBZ0IwRUVhaUVISUFNZ0JHb2hBeUFBUVFGcUlnQkIvLzhEY1NJRUlBaEpEUUFMUVFFaEJDQUdRUUZxSWdaQi8vOERjU0FKU1EwQUN3c2dCVUVRYWlRQUlBUUxtQUVCQW44akFFRVFheUlGSkFBZ0FDZ0NHQ0lFUWY4QlJ3UkFJQVVnQkRZQ0FDQURRUUpCMFJRZ0JSQVRDd0pBQWtBZ0FDZ0NGQ0FDUmdSQUlBSU5BVUVCSVFRTUFndEJBQ0VFSUFOQkFVR0o4UUJCQUJBVERBRUxRUUFoQWdOQVFRRWhCQ0FCSUFBb0FrZ2dBa0VNYkdwQkNHcEJBUkFWSUFGQkFXb2hBU0FDUVFGcUlnSWdBQ2dDRkVrTkFBc0xJQVZCRUdva0FDQUVDNDRHQVFaL0l3QkIwQUJySWdRa0FBSkFJQUpCQWswRVFDQURRUUZCNmZBQVFRQVFFd3dCQ3lBQUxRQjhCRUFnQTBFRVFaVFhBRUVBRUJOQkFTRUdEQUVMUVFFaEJpQUJJQUJCS0dwQkFSQVZJQUZCQVdvZ0FFRTBha0VCRUJVZ0FVRUNhaUFBUVN4cVFRRVFGU0FCUVFOcUlRVUNRQUpBQWtBQ1FBSkFJQUFvQWlnaUIwRUJhdzRDQUFFQ0N5QUNRUVpOQkVBZ0JDQUNOZ0lRSUFOQkFVR085Z0FnQkVFUWFoQVRRUUFoQmd3RkN3SkFJQUpCQjBZTkFDQUFLQUl3UVE1R0RRQWdCQ0FDTmdJd0lBTkJBa0dPOWdBZ0JFRXdhaEFUQ3lBRklBQkJNR3BCQkJBVklBQW9BakJCRGtjTkEwRWtFQmdpQlVVRVFFRUFJUVlnQTBFQlFaUStRUUFRRXd3RkN5QUZRUTQyQWdBZ0JFRUFOZ0pBSUFSQkFEWUNPQ0FFUVFBMkFrZ2dCRUVBTmdJOElBUkJBRFlDUkNBRVFRQTJBa3hCc09xUUFpRUdJQVJCc09xUUFqWUNOQ0FGUVlDTWxhSUVOZ0lFQW44Z0FrRUhSd1JBSUFKQkkwWUVRQ0FCUVFkcUlBUkJ6QUJxUVFRUUZTQUJRUXRxSUFSQnlBQnFRUVFRRlNBQlFROXFJQVJCeEFCcVFRUVFGU0FCUVJOcUlBUkJRR3RCQkJBVklBRkJGMm9nQkVFOGFrRUVFQlVnQVVFYmFpQUVRVGhxUVFRUUZTQUJRUjlxSUFSQk5HcEJCQkFWSUFWQkFEWUNCQ0FFS0FJMElRWWdCQ2dDT0NFQ0lBUW9Ba0FoQXlBRUtBSThJUWNnQkNnQ1JDRUlJQVFvQWt3aENTQUVLQUpJREFJTElBUWdBallDSUNBRFFRSkJzdllBSUFSQklHb1FFd3RCQUNFQ1FRQWhBMEVBSVFkQkFBc2hBU0FGSUFjMkFoZ2dCU0FJTmdJUUlBVWdDVFlDQ0NBRklBWTJBaUFnQlNBQ05nSWNJQVVnQXpZQ0ZDQUZJQUUyQWd3Z0FFRUFOZ0p3SUFBZ0JUWUNiQXdEQ3lBQUlBSkJBMnNpQVRZQ2NDQUFRUUVnQVJBWElnTTJBbXdnQTBVTkFTQUNRUU5NRFFKQkFDRUNBMEFnQlNBRVFjd0Fha0VCRUJVZ0FDZ0NiQ0FDYWlBRUtBSk1PZ0FBSUFWQkFXb2hCU0FDUVFGcUlnSWdBVWNOQUFzTUFnc2dCMEVEU1EwQ0lBUWdCellDQUNBRFFRUkJxZndBSUFRUUV3d0NDMEVBSVFZZ0FFRUFOZ0p3REFFTFFRRWhCaUFBUVFFNkFId0xJQVJCMEFCcUpBQWdCZ3UwQXdFRGZ5TUFRU0JySWdRa0FBSkFJQUFvQWtnRVFDQURRUUpCd2paQkFCQVRRUUVoQWd3QkN5QUNRUTVIQkVCQkFDRUNJQU5CQVVISThBQkJBQkFUREFFTElBRWdBRUVRYWtFRUVCVWdBVUVFYWlBQVFReHFRUVFRRlNBQlFRaHFJQUJCRkdwQkFoQVZJQUFvQWd3aEJRSkFJQVFDZnlBQUtBSVFJZ1pGQkVBZ0FDZ0NGQXdCQ3lBQUtBSVVJZ0lnQlVVTkFCb2dBZzBCUVFBTE5nSUlJQVFnQmpZQ0JDQUVJQVUyQWdBZ0EwRUJRYXp2QUNBRUVCTkJBQ0VDREFFTElBSkJnWUFCYTBILy8zNU5CRUJCQUNFQ0lBTkJBVUhXN2dCQkFCQVREQUVMSUFBZ0FrRU1FQmNpQWpZQ1NDQUNSUVJBUVFBaEFpQURRUUZCKys0QVFRQVFFd3dCQzBFQklRSWdBVUVLYWlBQVFSaHFRUUVRRlNBQlFRdHFJQUJCSEdwQkFSQVZJQUFvQWh3aUJVRUhSd1JBSUFRZ0JUWUNFQ0FEUVFSQjYvNEFJQVJCRUdvUUV3c2dBVUVNYWlBQVFTQnFRUUVRRlNBQlFRMXFJQUJCSkdwQkFSQVZJQUFvQWdBaUFTQUJMUURVQVVIN0FYRWdBQ2dDR0VIL0FVWkJBblJ5T2dEVUFTQUFLQUlBSWdFZ0FDZ0NERFlDOEFFZ0FTQUFLQUlRTmdMMEFTQUFRUUU2QUlVQkN5QUVRU0JxSkFBZ0FndTNCQUVGZnlNQVFSQnJJZ1lrQUFKL0lBQXRBR1JCQW5GRkJFQWdBMEVCUWJmWUFFRUFFQk5CQUF3QkN5QUFRUUEyQW1nQ1FBSkFBa0FnQWdSQUEwQWdBa0VIVFFSQUlBTkJBVUdtR2tFQUVCTU1CUXNnQVNBR1FReHFJZ1ZCQkJBVklBWW9BZ3doQkNBQlFRUnFJQVZCQkJBVlFRZ2hCeUFHS0FJTUlRVUNRQUpBQWtBQ1FDQUVEZ0lCQUFNTElBSkJFRWtFUUVIT0dpRUVEQWNMSUFGQkNHb2dCa0VJYWtFRUVCVWdCaWdDQ0FSQVFkekJBQ0VFREFjTElBRkJER29nQmtFTWFrRUVFQlVnQmlnQ0RDSUVEUUZCbnhraEJBd0dDeUFEUVFGQm54bEJBQkFUREFZTFFSQWhCd3NnQkNBSFNRUkFJQU5CQVVHWHh3QkJBQkFUREFVTElBSWdCRWtFUUNBRFFRRkJ6OFlBUVFBUUUwRUFEQVlMQWtBQ1FDQUFJQUVnQjJvZ0JDQUhheUFEQW44Q1FBSkFBa0FnQlVIeDJMMmJCa3dFUUNBRlFlUEd3Wk1HUmcwQklBVkI1c3FSbXdaR0RRTWdCVUh3d3JXYkJrY05CVUdneFFFTUJBc2dCVUh5MkkyREIwWU5BVUdBeFFFZ0JVSHl5S0hMQmtZTkF4b2dCVUh5MkwyYkJrY05CRUdJeFFFTUF3dEJrTVVCREFJTFFaakZBUXdCQzBHb3hRRUxLQUlFRVFFQURRRkJBQXdIQ3lBQUlBQW9BbWhCLy8vLy93ZHlOZ0pvQzBFQklBZ2dCVUh5eUtITEJrWWJJUWdnQVNBRWFpRUJJQUlnQkdzaUFnMEFDeUFJRFFFTElBTkJBVUhyeFFCQkFCQVRRUUFNQXdzZ0FFRUJPZ0NFQVNBQUlBQW9BbVJCQkhJMkFtUkJBUXdDQ3lBRFFRRWdCRUVBRUJNTElBTkJBVUdMRDBFQUVCTkJBQXNnQmtFUWFpUUFDK0lCQVFGL0lBQW9BbVJCQVVjRVFDQURRUUZCNU5nQVFRQVFFMEVBRHdzQ1FDQUNRUWROQkVBTUFRc2dBU0FBUVRocVFRUVFGU0FCUVFScUlBQkJQR3BCQkJBVklBSkJBM0VFUUF3QkN5QUFJQUpCQ0dzaUFrRUNkaUlFTmdKQUFrQWdBa1VOQUNBQUlBUkJCQkFYSWdJMkFrUWdBa1VFUUNBRFFRRkJsaEZCQUJBVFFRQVBDeUFBS0FKQVJRMEFJQUZCQ0dvaEEwRUFJUUlEUUNBRElBQW9Ba1FnQWtFQ2RHcEJCQkFWSUFOQkJHb2hBeUFDUVFGcUlnSWdBQ2dDUUVrTkFBc0xJQUFnQUNnQ1pFRUNjallDWkVFQkR3c2dBMEVCUVo0dVFRQVFFMEVBQzM0QkFYOGpBRUVRYXlJRUpBQUNmeUFBS0FKa0JFQWdBMEVCUVlIWUFFRUFFQk5CQUF3QkN5QUNRUVJIQkVBZ0EwRUJRY0l1UVFBUUUwRUFEQUVMSUFFZ0JFRU1ha0VFRUJVZ0JDZ0NERUdLanFyb0FFY0VRQ0FEUVFGQjZpWkJBQkFUUVFBTUFRc2dBQ0FBS0FKa1FRRnlOZ0prUVFFTElBUkJFR29rQUF2RUFRRUNmeUFBSUFBb0FpQWlCRFlDSkFKQUlBQW9BakFpQXdSQUEwQWdCQ0FESUFBb0FnQWdBQ2dDRkJFQUFDSURRWDlHRFFJZ0FDQUFLQUlrSUFOcUlnUTJBaVFnQUNBQUtBSXdJQU5ySWdNMkFqQWdBdzBBQ3lBQUtBSWdJUVFMSUFCQkFEWUNNQ0FBSUFRMkFpUWdBU0FBS0FJQUlBQW9BaHdSQ3dCRkJFQWdBQ0FBS0FKRVFRaHlOZ0pFUVFBUEN5QUFJQUUzQXpoQkFROExJQUFnQUNnQ1JFRUljallDUkNBQ1FRUkJ6L2tBUVFBUUV5QUFJQUFvQWtSQkNISTJBa1JCQUFzTkFDQUFLQUlBSUFFZ0FoQk9Dd2tBSUFBb0FnQVFVd3NKQUNBQUtBSUFFRklMRFFBZ0FDZ0NBQ0FCSUFJUVZRdEJBUUYvSUFJRWZ5QURRUUpCeTg4QVFRQVFFeUFBS0FJQUlBRWdBaUFESUFRUVQwVUVRQ0FEUVFGQm5UQkJBQkFUUVFBUEN5QUFJQUlnQXhCK0JVRUFDd3NWQUNBQUtBSUFJQUVnQWlBRElBUWdCU0FHRUZjTER3QWdBQ2dDQUNBQklBSWdBeEJZQ3hNQUlBQW9BZ0FnQVNBQ0lBTWdCQ0FGRURFTEhRQWdBQ2dDQUNBQklBSWdBeUFFSUFVZ0JpQUhJQWdnQ1NBS0VDd0w1UVFCQm44Z0FTZ0NDRUUySUFNUUtFVUVRRUVBRHdzZ0FTZ0NCQ0lJS0FJQUlRY2dDQ2dDQ0NFR0FrQWdCd1JBUVFFaEJTQUhRUUZ4SVFrZ0IwRUJSZ1IvUVFBRklBZEJmbkVoQndOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUhSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NSc2hCUUpBSUFsRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0NFRUFOZ0lBSUFVTkFVRUFEd3NnQ0VFQU5nSUFDeUFCS0FJSUlnY29BZ0FoQkNBSEtBSUlJUVlDUUNBRUJFQkJBU0VGSUFSQkFYRWhDQ0FFUVFGR0JIOUJBQVVnQkVGK2NTRUpRUUFoQkFOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUpSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NCc2hCUUpBSUFoRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0IwRUFOZ0lBSUFVTkFVRUFEd3NnQjBFQU5nSUFDeUFCTFFDRUFVVUVRQ0FEUVFGQmk5c0FRUUFRRTBFQUR3c2dBUzBBaFFGRkJFQWdBMEVCUWU3YUFFRUFFQk5CQUE4TElBQWdBU2dDQUNBQ0lBTVFXUUpBSUFKRkRRQWdBaWdDQUNJQVJRMEFRUUVoQkFKQUFrQUNRQUpBQWtBQ1FDQUJLQUl3UVF4ckRnMERCQVFFQlFBQkJBUUVCQVFDQkF0QkFpRUVEQVFMUVFNaEJBd0RDMEVFSVFRTUFndEJCU0VFREFFTFFYOGhCQXNnQUNBRU5nSVVJQUVvQW13aUJVVU5BQ0FBSUFVMkFod2dBaWdDQUNBQktBSndOZ0lnSUFGQkFEWUNiQXNMNGdrQ0NYOEJmaU1BUWZBQWF5SURKQUJCZ0FnaENBSi9Ba0JCQVVHQUNCQVhJZ1lFUUNBRFFkd0FhaUVMSUFOQjdBQnFJUWtEUUFKQUFrQUNRQ0FCSUFOQjZBQnFJZ1JCQ0NBQ0VCMUJDRWNOQUNBRUlBTkIyQUJxUVFRUUZTQUpJQXRCQkJBVlFRZ2hCUUpBQWtBQ1FBSkFBa0FnQXlnQ1dBNENBQUVFQ3lBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2lERUw0Ly8vL0QxTU5BU0FDUVFGQjNNRUFRUUFRRXd3RUN5QUJJQU5CNkFCcUlnUkJDQ0FDRUIxQkNFY05BeUFFSUFOQjVBQnFRUVFRRlNBREtBSmtSUTBCSUFKQkFVSGN3UUJCQUJBVERBTUxJQU1nREtkQkNHbzJBbGdNQVFzZ0NTQURRZGdBYWtFRUVCVkJFQ0VGQ3lBREtBSmNJZ1JCNCtUQTB3WkdCRUFnQUNnQ1pDSUJRUVJ4QkVBZ0FDQUJRUWh5TmdKa0RBSUxJQUpCQVVHaExFRUFFQk1nQmhBVVFRQU1Cd3NnQXlnQ1dDSUhSUVJBSUFKQkFVR2ZHVUVBRUJNZ0JoQVVRUUFNQndzZ0JTQUhTd1JBSUFNZ0JEWUNCQ0FESUFjMkFnQWdBa0VCUWNqc0FDQURFQk1NQmdzQ1FBSi9BbjhDUUFKL0FrQUNRQUpBQWtBQ1FDQUVRZkhZdlpzR1RBUkFJQVJCNDhiQmt3WkdEUUlnQkVIbXlwR2JCa1lOQkNBRVFmREN0WnNHUncwQlFhREZBUXdHQ3lBRVFaL0F3TklHVEFSQUlBUkI4dGk5bXdaR0RRVkJnTVVCSUFSQjhzaWh5d1pHRFFZYUlBUkI4UExSc3daSERRRkI2TVFCREFnTElBUkI4dGlOZ3dkR0RRSWdCRUdnd01EU0JrWU5Ca0h3eEFFZ0JFSG81TURUQmtZTkJ4b0xJQUFvQW1RaUJFRUJjUTBJSUFKQkFVSHBEMEVBRUJNZ0JoQVVRUUFNRHd0QmtNVUJEQU1MUVpqRkFRd0NDMEdveFFFTUFRdEJpTVVCQ3lFS0lBTWdCRUgvQVhFMkFrd2dBeUFFUVJoMk5nSkFJQU1nQkVFSWRrSC9BWEUyQWtnZ0F5QUVRUkIyUWY4QmNUWUNSQ0FDUVFKQnRnOGdBMEZBYXhBVElBY2dCV3NpQlNBQUxRQmtRUVJ4RFFJYUlBTWdBeWdDWENJRVFSaDJOZ0l3SUFNZ0JFSC9BWEUyQWp3Z0F5QUVRUkIyUWY4QmNUWUNOQ0FESUFSQkNIWkIvd0Z4TmdJNElBSkJBa0hPTkNBRFFUQnFFQk1nQUNBQUtBSmtRZi8vLy84SGNqWUNaQ0FCSUFXdElnd2dBaUFCS0FJb0VRZ0FJQXhSRFFjZ0FrRUJRZjhjUVFBUUV5QUdFQlJCQUF3S0MwSGd4QUVMSVFvZ0J5QUZhd3NoQlNBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2dCYTFUQkVBZ0F5Z0NXQ0VFSUFNb0Fsd2hBQ0FESUFFcEF3Z2lERkFFZmtJQUJTQU1JQUVwQXpoOUN6NENLQ0FESUFVMkFpUWdBeUFBUWY4QmNUWUNJQ0FESUFCQkdIWTJBaFFnQXlBRU5nSVFJQU1nQUVFSWRrSC9BWEUyQWh3Z0F5QUFRUkIyUWY4QmNUWUNHQ0FDUVFGQm0vb0FJQU5CRUdvUUV3d0hDeUFGSUFoTkJFQWdCaUVFREFRTElBVWhDQ0FHSUFVUUd5SUVEUU1nQmhBVUlBSkJBVUhzRUVFQUVCTkJBQXdIQ3lBRVFRSnhSUVJBSUFKQkFVR3ZFRUVBRUJNZ0JoQVVRUUFNQndzZ0FDQUVRZi8vLy84SGNqWUNaQ0FCSUFjZ0JXdXRJZ3dnQWlBQktBSW9FUWdBSUF4UkRRTWdBQzBBWkVFSWNVVU5BU0FDUVFKQi94eEJBQkFUQ3lBR0VCUkJBUXdGQ3lBQ1FRRkIveHhCQUJBVElBWVFGRUVBREFRTElBRWdCQ0FGSUFJUUhTQUZSd1JBSUFKQkFVR3hIVUVBRUJNZ0JCQVVRUUFNQkFzZ0FDQUVJZ1lnQlNBQ0lBb29BZ1FSQVFBTkFBc2dCQkFVUVFBTUFnc2dBa0VCUVpZbVFRQVFFMEVBREFFTElBWVFGRUVBQ3lBRFFmQUFhaVFBQytBQkFRWi9JQUFvQWdoQk5pQUNFQ2hGQkVCQkFBOExJQUFvQWdnaUJpZ0NBQ0VESUFZb0FnZ2hCUUpBSUFNRVFFRUJJUVFnQTBFQmNTRUhJQU5CQVVZRWYwRUFCU0FEUVg1eElRTURRQUovUVFBZ0JFVU5BQnBCQUNBQUlBRWdBaUFGS0FJQUVRQUFSUTBBR2lBQUlBRWdBaUFGS0FJRUVRQUFRUUJIQ3lFRUlBVkJDR29oQlNBSVFRSnFJZ2dnQTBjTkFBc2dCRVVMSVFOQkFDQUVJQWNiSVFRQ1FDQUhSUTBBSUFNTkFDQUFJQUVnQWlBRktBSUFFUUFBUVFCSElRUUxJQVpCQURZQ0FDQUVEUUZCQUE4TElBWkJBRFlDQUFzZ0FDZ0NBQnBCQVFzS0FDQUFLQUlBR2tFQUN5a0FBa0FnQUNnQ0FDSUFSUTBBSUFBZ0FUWUMwQUVnQVVVTkFDQUFJQUF0QUZ4QkNISTZBRndMQ3lFQUlBQW9BZ0FnQVJCY0lBQkJBRG9BZkNBQUlBRW9BcmhBUVFGeE5nS0FBUXN5QUNBQ1JRUkFRUUFQQ3lBQUtBSUFJQUVnQWlBREVGRkZCRUFnQTBFQlFaMHdRUUFRRTBFQUR3c2dBQ0FDSUFNUWZndHBBZ0ovQVh3akFFRVFheUlESkFBZ0FnUkFBMEFnQUNBRFFRaHFFRTBnQVFKL0lBTXJBd2dpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMTmdJQUlBRkJCR29oQVNBQVFRaHFJUUFnQkVFQmFpSUVJQUpIRFFBTEN5QURRUkJxSkFBTGhBRUNBbjhCZlNNQVFSQnJJZ01rQUNBQ0JFQURRQ0FESUFBdEFBQTZBQThnQXlBQUxRQUJPZ0FPSUFNZ0FDMEFBam9BRFNBRElBQXRBQU02QUF3Z0FRSi9JQU1xQWd3aUJZdERBQUFBVDEwRVFDQUZxQXdCQzBHQWdJQ0FlQXMyQWdBZ0FVRUVhaUVCSUFCQkJHb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF0TEFRSi9Jd0JCRUdzaUF5UUFJQUlFUUFOQUlBQWdBMEVNYWtFRUVCVWdBU0FES0FJTU5nSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxTd0VDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NERFlDQUNBQlFRUnFJUUVnQUVFQ2FpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzBvQkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUWhxRUUwZ0FTQURLd01JdGpnQ0FDQUJRUVJxSVFFZ0FFRUlhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMyZ0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBeUFBTFFBQU9nQVBJQU1nQUMwQUFUb0FEaUFESUFBdEFBSTZBQTBnQXlBQUxRQURPZ0FNSUFFZ0F5b0NERGdDQUNBQlFRUnFJUUVnQUVFRWFpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzB3QkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUXhxUVFRUUZTQUJJQU1vQWd5ek9BSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxUQUVDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NETE00QWdBZ0FVRUVhaUVCSUFCQkFtb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF1cUNBSU5md0Y3SXdCQkVHc2lDQ1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaENRSkFJQUpGQkVBZ0EwRUJRZjRnUVFBUUV3d0JDeUFBS0FKZ0lRWkJBU0VFSUFFZ0NFRUlha0VCRUJVZ0NDZ0NDQ0lGUVFKUEJFQWdBMEVDUVp2TUFFRUFFQk1NQVFzZ0JVRUJhaUFDUndSQVFRQWhCQ0FEUVFKQi9pQkJBQkFUREFFTEFrQWdCaWdDRUNJRFJRMEFJQWtvQXRBcklRUWdBMEVJVHdSQUlBTkJlSEVoQmtFQUlRSURRQ0FFUVFBMkFyeERJQVJCQURZQ2hEc2dCRUVBTmdMTU1pQUVRUUEyQXBRcUlBUkJBRFlDM0NFZ0JFRUFOZ0trR1NBRVFRQTJBdXdRSUFSQkFEWUN0QWdnQkVIQXd3QnFJUVFnQWtFSWFpSUNJQVpIRFFBTEN5QURRUWR4SWdORkRRQkJBQ0VDQTBBZ0JFRUFOZ0swQ0NBRVFiZ0lhaUVFSUFKQkFXb2lBaUFEUncwQUN3c2dDU2dDNkNzaUFnUi9JQUlRRkNBSlFRQTJBdWdySUFnb0FnZ0ZJQVVMUlFSQVFRRWhCQXdCQ3dOQUlBRkJBV29pQVNBSVFReHFRUUVRRlFKQUlBa29Bb0FzUlEwQUlBa29BdndySWdNb0FnQWdDQ2dDREVjTkFDQURLQUlFSWdVZ0FDZ0NZQ0lHS0FJUVJ3MEFJQU1vQWdnaUFnUkFRUUFoQkNBQ0tBSVFJQVVnQld3aUJTQUNLQUlBUVFKMFFaRENBV29vQWdCc1J3MERJQWtnQlVFQ2RCQVlJZ2MyQXVncklBZEZEUU1nQWlnQ0RDQUhJQVVnQWlnQ0FFRUNkRUhBeEFGcUtBSUFFUVVBQ3lBREtBSU1JZ0pGRFFCQkFDRUVJQUlvQWhBZ0JpZ0NFQ0lESUFJb0FnQkJBblJCa01JQmFpZ0NBR3hIRFFJZ0EwRUNkQkFZSWdWRkRRSWdBaWdDRENBRklBTWdBaWdDQUVFQ2RFSFF4QUZxS0FJQUVRVUFBa0FnQmlnQ0VDSUhSUTBBSUFrb0F0QXJJUVJCQUNFTEFrQUNRQ0FIUVFSSkRRQWdCRUcwQ0dvaURDQUZJQWRCQW5ScVNRUkFJQVVnQkNBSFFiZ0liR3BKRFFFTElBUkIzQ0ZxSVEwZ0JFR2tHV29oRGlBRVFld1FhaUVQSUFVZ0IwRjhjU0lHUVFKMGFpRUNJQVFnQmtHNENHeHFJUVJCQUNFREEwQWdEQ0FEUWJnSWJDSUthaUFGSUFOQkFuUnEvUUFDQUNJUi9Wb0NBQUFnQ2lBUGFpQVIvVm9DQUFFZ0NpQU9haUFSL1ZvQ0FBSWdDaUFOYWlBUi9Wb0NBQU1nQTBFRWFpSURJQVpIRFFBTElBWWdCMFlOQWd3QkN5QUZJUUpCQUNFR0N5QUhJQVlpQTJ0QkIzRWlDZ1JBQTBBZ0JDQUNLQUlBTmdLMENDQURRUUZxSVFNZ0JFRzRDR29oQkNBQ1FRUnFJUUlnQzBFQmFpSUxJQXBIRFFBTEN5QUdJQWRyUVhoTERRQURRQ0FFSUFJb0FnQTJBclFJSUFRZ0FpZ0NCRFlDN0JBZ0JDQUNLQUlJTmdLa0dTQUVJQUlvQWd3MkF0d2hJQVFnQWlnQ0VEWUNsQ29nQkNBQ0tBSVVOZ0xNTWlBRUlBSW9BaGcyQW9RN0lBUWdBaWdDSERZQ3ZFTWdCRUhBd3dCcUlRUWdBa0VnYWlFQ0lBTkJDR29pQXlBSFJ3MEFDd3NnQlJBVUMwRUJJUVFnRUVFQmFpSVFJQWdvQWdoSkRRQUxDeUFJUVJCcUpBQWdCQXNFQUVKL0M3c0pBUXAvSXdCQkVHc2lCU1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEJ3Si9JQUpCQVUwRVFDQURRUUZCekNSQkFCQVRRUUFNQVFzZ0FTQUZRUXhxUVFJUUZTQUZLQUlNQkVBZ0EwRUNRZVF0UVFBUUUwRUJEQUVMSUFKQkJrMEVRQ0FEUVFGQnpDUkJBQkFUUVFBTUFRc2dBVUVDYWlBRlFRaHFRUUVRRlNBSEtBTDhLeUlKSVFBQ1FBSkFBa0FnQnlnQ2dDd2lCa1VOQUNBRktBSUlJUWdEUUNBQUtBSUFJQWhHRFFFZ0FFRVVhaUVBSUFSQkFXb2lCQ0FHUncwQUN3d0JDeUFFSUFaSERRRUxJQWNvQW9Rc0lBWkdCSDhnQnlBR1FRcHFJZ0EyQW9Rc0lBa2dBRUVVYkJBYklnQkZCRUFnQnlnQy9Dc1FGQ0FIUVFBMkFvUXNJQWRDQURjQy9Dc2dBMEVCUWVZa1FRQVFFMEVBREFNTElBY2dBRFlDL0NzZ0FDQUhLQUtBTENJRVFSUnNha0VBSUFjb0FvUXNJQVJyUVJSc0VCa2FJQWNvQXZ3cklRa2dCeWdDZ0N3RklBWUxRUlJzSUFscUlRQkJBU0VMQ3lBQUlBVW9BZ2cyQWdBZ0FVRURhaUFGUVF4cVFRSVFGU0FGS0FJTUJFQWdBMEVDUWVRdFFRQVFFMEVCREFFTElBRkJCV29nQlVFRWFrRUNFQlVnQlNnQ0JDSUVRUUpQQkVBZ0EwRUNRWlVZUVFBUUUwRUJEQUVMSUFKQkIyc2hCaUFFQkVBZ0FVRUhhaUVDUVFBaENRTkFJQVpCQWswRVFDQURRUUZCekNSQkFCQVRRUUFNQXdzZ0FpQUZRUXhxUVFFUUZTQUZLQUlNUVFGSEJFQWdBMEVDUWFZclFRQVFFMEVCREFNTElBSkJBV29nQlVFQ0VCVWdBQ0FGS0FJQUlnUkIvLzhCY1NJQk5nSUVJQVpCQTJzaUNDQUVRUTkyUVFGcUlnWWdBV3hCQW1vaUNra0VRQ0FEUVFGQnpDUkJBQkFUUVFBTUF3c2dBa0VEYWlFQ1FRQWhCQ0FCQkVBRFFDQUNJQVZCREdvZ0JoQVZJQVFnQlNnQ0RFY0VRQ0FEUVFKQnpqQkJBQkFUUVFFTUJRc2dBaUFHYWlFQ0lBUkJBV29pQkNBQUtBSUVTUTBBQ3dzZ0FpQUZRUUlRRlNBRklBVW9BZ0FpQkVILy93RnhJZ0UyQWdBZ0FDZ0NCQ0FCUndSQUlBTkJBa0hGR1VFQUVCTkJBUXdEQ3lBSUlBcHJJZ29nQkVFUGRrRUJhaUlHSUFGc1FRTnFJZ3hKQkVBZ0EwRUJRY3drUVFBUUUwRUFEQU1MSUFKQkFtb2hBa0VBSVFRZ0FRUkFBMEFnQWlBRlFReHFJQVlRRlNBRUlBVW9BZ3hIQkVBZ0EwRUNRYzR3UVFBUUUwRUJEQVVMSUFJZ0Jtb2hBaUFFUVFGcUlnUWdBQ2dDQkVrTkFBc0xJQUlnQlVFTWFrRURFQlVnQlNnQ0RDRUdJQUJDQURjQ0NDQUFJQVpCZ0lBRWNVVWdBQzBBRUVIK0FYRnlPZ0FRSUFVZ0JrSC9BWEVpQ0RZQ0NBSkFJQWhGRFFBZ0J5Z0M5Q3NpRFFSQUlBY29BdkFySVFSQkFDRUJBMEFnQ0NBRUtBSUlSZ1JBSUFBZ0JEWUNDQXdEQ3lBRVFSUnFJUVFnQVVFQmFpSUJJQTFIRFFBTEN5QURRUUZCekNSQkFCQVRRUUFNQXdzZ0JTQUdRUWgyUWY4QmNTSUdOZ0lJQWtBZ0JrVU5BQ0FIS0FMMEt5SUlCRUFnQnlnQzhDc2hCRUVBSVFFRFFDQUdJQVFvQWdoR0JFQWdBQ0FFTmdJTURBTUxJQVJCRkdvaEJDQUJRUUZxSWdFZ0NFY05BQXNMSUFOQkFVSE1KRUVBRUJOQkFBd0RDeUFLSUF4cklRWWdBa0VEYWlFQ0lBbEJBV29pQ1NBRktBSUVTUTBBQ3dzZ0JnUkFJQU5CQVVITUpFRUFFQk5CQUF3QkMwRUJJQXRGRFFBYUlBY2dCeWdDZ0N4QkFXbzJBb0FzUVFFTElBVkJFR29rQUF2MUFRRUZmeU1BUVJCcklnUWtBQUpBSUFBb0FtQW9BaEFpQmtFQ2FpQUNSd1JBSUFOQkFVSGtJMEVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FHSUFRb0FneEhCRUFnQTBFQlFlUWpRUUFRRXd3QkN5QUdSUVJBUVFFaEJRd0JDeUFCUVFKcUlRSWdBQ2dDWUNnQ0dDRUFRUUFoQVFOQUlBSWdCRUVJYWtFQkVCVWdBQ0FFS0FJSUlnVkIvd0J4SWdkQkFXb2lDRFlDR0NBQUlBVkJCM1pCQVhFMkFpQWdCMEVmVHdSQUlBUWdDRFlDQkNBRUlBRTJBZ0FnQTBFQlFZWDRBQ0FFRUJOQkFDRUZEQUlMSUFCQk5Hb2hBRUVCSVFVZ0FrRUJhaUVDSUFGQkFXb2lBU0FHUncwQUN3c2dCRUVRYWlRQUlBVUxsQVVCQ1g4akFFRVFheUlISkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDdEFFZ0FDZ0M1QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUZBbjhnQWtFQlRRUkFJQU5CQVVIL0gwRUFFQk5CQUF3QkN5QUJJQWRCREdwQkFoQVZBa0FnQnlnQ0RBUkFJQU5CQWtIekcwRUFFQk1NQVFzZ0FrRUdUUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFCUVFKcUlBZEJER3BCQWhBVklBVW9BdkFySVFRZ0J5MEFEQ0VLQWtBQ1FBSkFJQVVvQXZRcklnWkZCRUFnQkNFQURBRUxJQVFoQUFOQUlBQW9BZ2dnQ2tZTkFTQUFRUlJxSVFBZ0NFRUJhaUlJSUFaSERRQUxEQUVMSUFZZ0NFY05BUXNnQlNnQytDc2dCa1lFUUNBRklBWkJDbW9pQURZQytDc2dCQ0FBUVJSc0VCc2hBQ0FGS0FMd0t5RUVJQUJGQkVBZ0JCQVVJQVZCQURZQytDc2dCVUlBTndMd0t5QURRUUZCbVNCQkFCQVRRUUFNQkFzQ1FDQUFJQVJHRFFBZ0JTZ0NnQ3dpQzBVTkFDQUZLQUw4S3lFTVFRQWhDQU5BSUF3Z0NFRVViR29pQmlnQ0NDSUpCRUFnQmlBQUlBa2dCR3RxTmdJSUN5QUdLQUlNSWdrRVFDQUdJQUFnQ1NBRWEybzJBZ3dMSUFoQkFXb2lDQ0FMUncwQUN3c2dCU0FBTmdMd0t5QUFJQVVvQXZRcklnUkJGR3hxUVFBZ0JTZ0MrQ3NnQkd0QkZHd1FHUm9nQlNnQzlDc2hCaUFGS0FMd0t5RUVDeUFGSUFaQkFXbzJBdlFySUFRZ0JrRVViR29oQUFzZ0FDZ0NEQ0lFQkVBZ0JCQVVJQUJDQURjQ0RBc2dBQ0FLTmdJSUlBQWdCeWdDRENJRVFRcDJRUU54TmdJQUlBQWdCRUVJZGtFRGNUWUNCQ0FCUVFScUlBZEJER3BCQWhBVklBY29BZ3dFUUNBRFFRSkJxaGRCQUJBVERBRUxJQUFnQWtFR2F5SUNFQmdpQkRZQ0RDQUVSUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFFSUFGQkJtb2dBaEFXR2lBQUlBSTJBaEFMUVFFTElBZEJFR29rQUFzbkFFRUJJUUVnQUNnQ1lDZ0NFRUVDZENBQ1J3Ui9JQU5CQVVITElrRUFFQk5CQUFWQkFRc0xwd01CQkg4akFFRVFheUlHSkFBQ2Z5QUNRUUZOQkVBZ0EwRUJRZW9lUVFBUUUwRUFEQUVMSUFBdEFOUUJRUUZ4QkVBZ0EwRUJRZGZpQUVFQUVCTkJBQXdCQ3lBQUtBSzBBU0FBS0FMa0FVR01MR3hxSWdBZ0FDMEFpQ3hCQW5JNkFJZ3NJQUVnQmtFTWFrRUJFQlVDUUNBQUtBS3NLQ0lFUlFSQUlBQWdCaWdDREVFQmFpSUZRUWdRRnlJRU5nS3NLQ0FFUlFSQUlBTkJBVUdFSDBFQUVCTkJBQXdEQ3lBQUlBVTJBcWdvREFFTElBWW9BZ3dpQlNBQUtBS29LRWtOQUNBRUlBVkJBV29pQkVFRGRCQWJJZ1ZGQkVBZ0EwRUJRWVFmUVFBUUUwRUFEQUlMSUFBZ0JUWUNyQ2dnQlNBQUtBS29LQ0lIUVFOMGFrRUFJQVFnQjJ0QkEzUVFHUm9nQUNBRU5nS29LQ0FBS0FLc0tDRUVDeUFFSUFZb0Fnd2lCVUVEZEdvb0FnQUVRQ0FHSUFVMkFnQWdBMEVCUWZJMklBWVFFMEVBREFFTElBSkJBV3NpQWhBWUlRUWdBQ2dDckNnaUFDQUdLQUlNSWdWQkEzUnFJQVEyQWdBZ0JFVUVRQ0FEUVFGQmhCOUJBQkFUUVFBTUFRc2dBQ0FGUVFOMGFpQUNOZ0lFSUFBZ0JpZ0NERUVEZEdvb0FnQWdBVUVCYWlBQ0VCWWFRUUVMSUFaQkVHb2tBQXY2QWdFRWZ5TUFRUkJySWdZa0FBSi9JQUpCQVUwRVFDQURRUUZCc2lGQkFCQVRRUUFNQVFzZ0FDQUFMUURVQVVFQmNqb0ExQUVnQVNBR1FReHFRUUVRRlFKQUlBQW9Bb3dCSWdSRkJFQWdBQ0FHS0FJTVFRRnFJZ1ZCQ0JBWElnUTJBb3dCSUFSRkJFQWdBMEVCUWN3aFFRQVFFMEVBREFNTElBQWdCVFlDaUFFTUFRc2dCaWdDRENJRklBQW9Bb2dCU1EwQUlBUWdCVUVCYWlJRVFRTjBFQnNpQlVVRVFDQURRUUZCekNGQkFCQVRRUUFNQWdzZ0FDQUZOZ0tNQVNBRklBQW9Bb2dCSWdkQkEzUnFRUUFnQkNBSGEwRURkQkFaR2lBQUlBUTJBb2dCSUFBb0Fvd0JJUVFMSUFRZ0JpZ0NEQ0lGUVFOMGFpZ0NBQVJBSUFZZ0JUWUNBQ0FEUVFGQmlEY2dCaEFUUVFBTUFRc2dBa0VCYXlJQ0VCZ2hCQ0FBS0FLTUFTSUFJQVlvQWd3aUJVRURkR29nQkRZQ0FDQUVSUVJBSUFOQkFVSE1JVUVBRUJOQkFBd0JDeUFBSUFWQkEzUnFJQUkyQWdRZ0FDQUdLQUlNUVFOMGFpZ0NBQ0FCUVFGcUlBSVFGaHBCQVFzZ0JrRVFhaVFBQzV3QkFRTi9Jd0JCRUdzaUJDUUFBbjhnQWtVRVFDQURRUUZCNVI5QkFCQVRRUUFNQVFzZ0FTQUVRUXhxUVFFUUZVRUJJQUpCQVdzaUJVVU5BQnBCQUNFQVFRQWhBZ05BSUFGQkFXb2lBU0FFUVFocVFRRVFGU0FFS0FJSUlnWkJHSFJCSDNVZ0JrSC9BSEVnQW5KQkIzUnhJUUlnQUVFQmFpSUFJQVZIRFFBTFFRRWdBa1VOQUJvZ0EwRUJRZVVmUVFBUUUwRUFDeUFFUVJCcUpBQUxHd0JCQVNFQUlBSUVmMEVCQlNBRFFRRkI4aUZCQUJBVFFRQUxDOW9FQVFkL0l3QkJJR3NpQkNRQVFRRWhCUUpBSUFKQkFVMEVRRUVBSVFVZ0EwRUJRYW5PQUVFQUVCTU1BUXNnQUNnQ1RBMEFJQUVnQkVFY2FrRUJFQlVnQVVFQmFpQUVRUmhxUVFFUUZTQUVLQUlZSWdaQkJIWkJBM0VpQjBFRFJnUkFJQUJCQVRZQ1RDQURRUUpCZ2RvQVFRQVFFd3dCQ3lBQ1FRSnJJZ0lnQWlBR1FRVjJRUUp4UVFKcUlna2dCMm9pQ0c0aUJpQUliRWNFUUNBQVFRRTJBa3dnQTBFQ1FkN1dBRUVBRUJNTUFRc2dBaUFJU1EwQUFrQWdBQ2dDUkNJQ0lBWkJmM05OQkVBZ0FpQUdhaUlDUVlDQWdJQUNTUTBCQ3lBQVFRRTJBa3dnQTBFQ1FaUEpBRUVBRUJNTUFRc2dBQ2dDU0NBQ1FRTjBFQnNpQ0VVRVFDQUFRUUUyQWt3Z0EwRUNRYjdKQUVFQUVCTU1BUXNnQVVFQ2FpRUNJQUFnQ0RZQ1NBSkFJQWNFUUVFQklBWWdCa0VCVFJzaENrRUFJUVlEUUNBQ0lBUkJGR29nQnhBVklBUW9BaFFpQVNBQUtBS0VBU0FBS0FLQUFXeFBEUUlnQWlBSGFpSUJJQVJCRUdvZ0NSQVZJQWdnQUNnQ1JDSUNRUU4wYWlJRklBUW9BaFE3QVFBZ0JTQUVLQUlRTmdJRVFRRWhCU0FBSUFKQkFXbzJBa1FnQVNBSmFpRUNJQVpCQVdvaUJpQUtSdzBBQ3d3Q0MwRUJJQVlnQmtFQlRSc2hCeUFBS0FKRUlRRkJBQ0VHQTBBZ0JDQUJOZ0lVSUFFZ0FDZ0NoQUVnQUNnQ2dBRnNUdzBCSUFJZ0JFRVFhaUFKRUJVZ0NDQUFLQUpFSWdwQkEzUnFJZ1VnQVRzQkFDQUZJQVFvQWhBMkFnUkJBU0VGSUFBZ0NrRUJhaUlCTmdKRUlBSWdDV29oQWlBR1FRRnFJZ1lnQjBjTkFBc01BUXNnQUVFQk5nSk1JQVFnQVRZQ0FDQURRUUpCMGp3Z0JCQVRDeUFFUVNCcUpBQWdCUXNFQUVFQUN3dkx3UUVoQUVHQUNBdmdtUUZqWVc1dWIzUWdZV3hzYjJOaGRHVWdiM0JxWDNSalpGOXpaV2RmWkdGMFlWOWphSFZ1YTE5MEtpQmhjbkpoZVFBdEt5QWdJREJZTUhnQUxUQllLekJZSURCWUxUQjRLekI0SURCNEFGVnVhMjV2ZDI0Z1ptOXliV0YwQUVaaGFXeGxaQ0IwYnlCelpYUjFjQ0IwYUdVZ1pHVmpiMlJsY2dCR1lXbHNaV1FnZEc4Z2NtVmhaQ0IwYUdVZ2FHVmhaR1Z5QUc1aGJnQXFiRjkwYVd4bFgyeGxiaUErSUZWSlRsUmZUVUZZSUMwZ1QxQktYME5QVFUxUFRsOURRa3hMWDBSQlZFRmZSVmhVVWtFZ0xTQndYMm95YXkwK2JWOXpjR1ZqYVdacFkxOXdZWEpoYlM1dFgyUmxZMjlrWlhJdWJWOXpiM1JmYkdWdVozUm9BR2x1WmdCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsSUhSb1pTQnBiV0ZuWlFCSmJuWmhiR2xrSUdGalkyVnpjeUIwYnlCd2FTMCthVzVqYkhWa1pRQXZkRzF3TDI5d1pXNXFjR1ZuTDNOeVl5OWlhVzR2WTI5dGJXOXVMMk52Ykc5eUxtTUFRVXhNWDBOUVZWTUFUMUJLWDA1VlRWOVVTRkpGUVVSVEFFNUJUZ0JQU2xCZlJFOWZUazlVWDBSSlUxQk1RVmxmVkVsTVJWOUpUa1JGV0Y5SlJsOVVURTBBU1U1R0FIQmZhakpyTFQ1dFgzTndaV05wWm1salgzQmhjbUZ0TG0xZlpHVmpiMlJsY2k1dFgzTnZkRjlzWlc1bmRHZ2dQaUJWU1U1VVgwMUJXQ0F0SUU5UVNsOURUMDFOVDA1ZlEwSk1TMTlFUVZSQlgwVllWRkpCQUFrSkNTQndjbVZqWTJsdWRITnBlbVVnS0hjc2FDazlBQWtKQ1NCemRHVndjMmw2WlhNZ0tHMHNaU2s5QUZOUFZDQnRZWEpyWlhJZ1ptOXlJSFJwYkdVZ0pYVWdaR1ZqYkdGeVpYTWdiVzl5WlNCMGFXeGxMWEJoY25SeklIUm9ZVzRnWm05MWJtUWdhVzRnVkV4TklHMWhjbXRsY2k0QUtHNTFiR3dwQUNnbFpDd2xaQ2tnQUNWemZRb0FDUWtnZlFvQVcwUkZWbDBnUkhWdGNDQmhiaUJwYldGblpWOWpiMjF3WDJobFlXUmxjaUJ6ZEhKMVkzUWdld29BVzBSRlZsMGdSSFZ0Y0NCaGJpQnBiV0ZuWlY5b1pXRmtaWElnYzNSeWRXTjBJSHNLQUVsdFlXZGxJR2x1Wm04Z2V3b0FDU0JrWldaaGRXeDBJSFJwYkdVZ2V3b0FKWE1KSUdOdmJYQnZibVZ1ZENBbFpDQjdDZ0FKQ1NCamIyMXdJQ1ZrSUhzS0FBa2dWR2xzWlNCcGJtUmxlRG9nZXdvQUNTQk5ZWEpyWlhJZ2JHbHpkRG9nZXdvQVEyOWtaWE4wY21WaGJTQnBibVJsZUNCbWNtOXRJRzFoYVc0Z2FHVmhaR1Z5T2lCN0NnQkRiMlJsYzNSeVpXRnRJR2x1Wm04Z1puSnZiU0J0WVdsdUlHaGxZV1JsY2pvZ2V3b0FVM1J5WldGdElHVnljbTl5SUhkb2FXeGxJSEpsWVdScGJtY2dTbEF5SUVobFlXUmxjaUJpYjNnS0FFWnZkVzVrSUdFZ2JXbHpjR3hoWTJWa0lDY2xZeVZqSldNbFl5Y2dZbTk0SUc5MWRITnBaR1VnYW5BeWFDQmliM2dLQUUxaGJHWnZjbTFsWkNCS1VESWdabWxzWlNCbWIzSnRZWFE2SUdacGNuTjBJR0p2ZUNCdGRYTjBJR0psSUVwUVJVY2dNakF3TUNCemFXZHVZWFIxY21VZ1ltOTRDZ0JOWVd4bWIzSnRaV1FnU2xBeUlHWnBiR1VnWm05eWJXRjBPaUJ6WldOdmJtUWdZbTk0SUcxMWMzUWdZbVVnWm1sc1pTQjBlWEJsSUdKdmVBb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnYUdGdVpHeGxJR3B3WldjeU1EQXdJR0p2ZUFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2QybDBhQ0JHVkZsUUlFSnZlQW9BUVNCdFlYSnJaWElnU1VRZ2QyRnpJR1Y0Y0dWamRHVmtJQ2d3ZUdabUxTMHBJR2x1YzNSbFlXUWdiMllnSlM0NGVBb0FDUWtnYldOMFBTVjRDZ0FKQ1FrZ1kySnNhM04wZVQwbEkzZ0tBQWtKQ1NCamMzUjVQU1VqZUFvQUNRa2djSEpuUFNVamVBb0FTVzUwWldkbGNpQnZkbVZ5Wm14dmR3b0FDU0IwWkhnOUpYVXNJSFJrZVQwbGRRb0FDU0IwZHowbGRTd2dkR2c5SlhVS0FBa2dkSGd3UFNWMUxDQjBlVEE5SlhVS0FFbHVkbUZzYVdRZ1kyOXRjRzl1Wlc1MElHbHVaR1Y0T2lBbGRRb0FVM1J5WldGdElIUnZieUJ6YUc5eWRBb0FUV0Z5YTJWeUlHaGhibVJzWlhJZ1puVnVZM1JwYjI0Z1ptRnBiR1ZrSUhSdklISmxZV1FnZEdobElHMWhjbXRsY2lCelpXZHRaVzUwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCbWIzSWdZM1Z5Y21WdWRDQndjbVZqYVc1amRDQmpiMlJsWW14dlkyc2daV3hsYldWdWRBb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFVFTnZaQ0JUVUVOdll5QmxiR1Z0Wlc1MENnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUlkyUWdiM0lnVTFGall5QmxiR1Z0Wlc1MENnQkJJRUpRUTBNZ2FHVmhaR1Z5SUdKdmVDQnBjeUJoZG1GcGJHRmliR1VnWVd4MGFHOTFaMmdnUWxCRElHZHBkbVZ1SUdKNUlIUm9aU0JKU0VSU0lHSnZlQ0FvSldRcElHbHVaR2xqWVhSbElHTnZiWEJ2Ym1WdWRITWdZbWwwSUdSbGNIUm9JR2x6SUdOdmJuTjBZVzUwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJR2xzYkdWbllXd2dkR2xzWlNCdlptWnpaWFFLQUVsdWRtRnNhV1FnY0hKbFkybHVZM1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHaGhibVJzWlNCaVlXNWtJSEJ5WldOcGJuUnpDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR0ZzYkNCMWMyVmtJR052YlhCdmJtVnVkSE1LQUZOcGVtVWdiMllnWTI5a1pTQmliRzlqYXlCa1lYUmhJR1Y0WTJWbFpITWdjM2x6ZEdWdElHeHBiV2wwY3dvQVUybDZaU0J2WmlCMGFXeGxJR1JoZEdFZ1pYaGpaV1ZrY3lCemVYTjBaVzBnYkdsdGFYUnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JYVnNkR2x3YkdVZ1RVTlVJRzFoY210bGNuTUtBRU52Y25KMWNIUmxaQ0JRVUUwZ2JXRnlhMlZ5Y3dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ1ptOXlJSFJwYkdVZ2NtVnpiMngxZEdsdmJuTUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCdGRXeDBhWEJzWlNCamIyeHNaV04wYVc5dWN3b0FTVzUyWVd4cFpDQlFRMHhTSUdKdmVDNGdVbVZ3YjNKMGN5QXdJSEJoYkdWMGRHVWdZMjlzZFcxdWN3b0FWMlVnWkc4Z2JtOTBJSE4xY0hCdmNuUWdVazlKSUdsdUlHUmxZMjlrYVc1bklFaFVJR052WkdWaWJHOWphM01LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlIVnVaR1ZtYVc1bFpDQnphWHBsY3dvQVEyRnVibTkwSUhSaGEyVWdhVzRnWTJoaGNtZGxJR052Ykd4bFkzUnBiMjV6SUhkcGRHaHZkWFFnYzJGdFpTQnVkVzFpWlhJZ2IyWWdhVzVrYVhobGN3b0FTVzUyWVd4cFpDQjBhV3hsWXkwK2QybHVYM2g0ZUNCMllXeDFaWE1LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlHeGxjM01nZEdoaGJpQTRJR0o1ZEdWekNnQkRZVzV1YjNRZ2FHRnVaR3hsSUZoTUlHSnZlQ0J2WmlCc1pYTnpJSFJvWVc0Z01UWWdZbmwwWlhNS0FFTnZiWEJ2Ym1WdWRDQnBibVJsZUNBbGRTQjFjMlZrSUhObGRtVnlZV3dnZEdsdFpYTUtBRWx1ZG1Gc2FXUWdVRU5NVWlCaWIzZ3VJRkpsY0c5eWRITWdKV1FnWlc1MGNtbGxjd29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z1kzSmxZWFJsSUZSaFp5MTBjbVZsSUc1dlpHVnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JXTjBJR1JoZEdFZ2QybDBhR2x1SUcxMWJIUnBjR3hsSUUxRFZDQnlaV052Y21SekNnQkRZVzV1YjNRZ1pHVmpiMlJsSUhScGJHVXNJRzFsYlc5eWVTQmxjbkp2Y2dvQWIzQnFYMm95YTE5aGNIQnNlVjl1WWw5MGFXeGxYM0JoY25SelgyTnZjbkpsWTNScGIyNGdaWEp5YjNJS0FGQnliMkpzWlcwZ2QybDBhQ0J6YTJsd2NHbHVaeUJLVUVWSE1qQXdNQ0JpYjNnc0lITjBjbVZoYlNCbGNuSnZjZ29BVUhKdllteGxiU0IzYVhSb0lISmxZV1JwYm1jZ1NsQkZSekl3TURBZ1ltOTRMQ0J6ZEhKbFlXMGdaWEp5YjNJS0FGVnVhMjV2ZDI0Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnZEd3Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnYldnZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QjBZV3RsSUdsdUlHTm9ZWEpuWlNCVFNWb2diV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1VGQlVJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFQxUWdiV0Z5YTJWeUNnQkVhV1FnYm05MElHZGxkQ0JsZUhCbFkzUmxaQ0JUVDFRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJNVkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dUVU5VSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2NtVmhaQ0JOUTFRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lITndZV05sSUdadmNpQmxlSEJsWTNSbFpDQlRUMUFnYldGeWEyVnlDZ0JGZUhCbFkzUmxaQ0JUVDFBZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRTFEVHlCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVa2RPSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFVRTBnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRkJRVFNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVRXhOSUcxaGNtdGxjZ29BUlhod1pXTjBaV1FnUlZCSUlHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdjbVZ4ZFdseVpXUWdSVkJJSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QkRVa2NnYldGeWEyVnlDZ0JWYm10dWIzZHVJSEJ5YjJkeVpYTnphVzl1SUc5eVpHVnlJR2x1SUVOUFJDQnRZWEpyWlhJS0FGVnVhMjV2ZDI0Z1UyTnZaQ0IyWVd4MVpTQnBiaUJEVDBRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRU5QUkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVVU5FSUcxaGNtdGxjZ29BUTNKeWIzSWdjbVZoWkdsdVp5QkRRa1FnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGQlBReUJ0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1EwOURJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUlEwTWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUUxRFF5QnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1RVTkRJRzFoY210bGNnb0FjbVZ4ZFdseVpXUWdVMGxhSUcxaGNtdGxjaUJ1YjNRZ1ptOTFibVFnYVc0Z2JXRnBiaUJvWldGa1pYSUtBSEpsY1hWcGNtVmtJRU5QUkNCdFlYSnJaWElnYm05MElHWnZkVzVrSUdsdUlHMWhhVzRnYUdWaFpHVnlDZ0J5WlhGMWFYSmxaQ0JSUTBRZ2JXRnlhMlZ5SUc1dmRDQm1iM1Z1WkNCcGJpQnRZV2x1SUdobFlXUmxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2FHRnVaR3hsSUdwd1pXY3lNREF3SUdacGJHVWdhR1ZoWkdWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lHaGxZV1JsY2dvQVJYSnliM0lnZDJsMGFDQktVQ0JUYVdkdVlYUjFjbVVnT2lCaVlXUWdiV0ZuYVdNZ2JuVnRZbVZ5Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCamRYSnlaVzUwSUc1MWJXSmxjaUJ2WmlCMGFXeGxMWEJoY25RZ0tDVmtLU3dnWjJsMmFXNW5JSFZ3Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCd2NtVjJhVzkxY3lCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQVNXNGdVMDlVSUcxaGNtdGxjaXdnVkZCVGIzUWdLQ1ZrS1NCcGN5QnViM1FnZG1Gc2FXUWdjbVZuWVhKa2N5QjBieUIwYUdVZ1kzVnljbVZ1ZENCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDaG9aV0ZrWlhJcElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQWRHbHNaWE1nY21WeGRXbHlaU0JoZENCc1pXRnpkQ0J2Ym1VZ2NtVnpiMngxZEdsdmJnb0FUV0Z5YTJWeUlHbHpJRzV2ZENCamIyMXdiR2xoYm5RZ2QybDBhQ0JwZEhNZ2NHOXphWFJwYjI0S0FGQnliMkpzWlcwZ2QybDBhQ0J6WldWcklHWjFibU4wYVc5dUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUVEyOWtJRk5RUTI5aklHVnNaVzFsYm5Rc0lFbHVkbUZzYVdRZ1kySnNhM2N2WTJKc2EyZ2dZMjl0WW1sdVlYUnBiMjRLQUVsdWRtRnNhV1FnYlhWc2RHbHdiR1VnWTI5dGNHOXVaVzUwSUhSeVlXNXpabTl5YldGMGFXOXVDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ1kyOXNiR1ZqZEdsdmJuTWdiM1JvWlhJZ2RHaGhiaUJoY25KaGVTQmtaV052Y25KbGJHRjBhVzl1Q2dCVWIyOGdiR0Z5WjJVZ2RtRnNkV1VnWm05eUlFNXdjRzBLQUU1dmRDQmxibTkxWjJnZ1lubDBaWE1nZEc4Z2NtVmhaQ0JPY0hCdENnQmlZV1FnY0d4aFkyVmtJR3B3WldjZ1kyOWtaWE4wY21WaGJRb0FDU0JOWVdsdUlHaGxZV1JsY2lCemRHRnlkQ0J3YjNOcGRHbHZiajBsYkd4cENna2dUV0ZwYmlCb1pXRmtaWElnWlc1a0lIQnZjMmwwYVc5dVBTVnNiR2tLQUUxaGNtdGxjaUJ6YVhwbElHbHVZMjl1YzJsemRHVnVkQ0IzYVhSb0lITjBjbVZoYlNCc1pXNW5kR2dLQUZScGJHVWdjR0Z5ZENCc1pXNW5kR2dnYzJsNlpTQnBibU52Ym5OcGMzUmxiblFnZDJsMGFDQnpkSEpsWVcwZ2JHVnVaM1JvQ2dCRFlXNXViM1FnZEdGclpTQnBiaUJqYUdGeVoyVWdiWFZzZEdsd2JHVWdaR0YwWVNCemNHRnVibWx1WndvQVYzSnZibWNnWm14aFp3b0FSWEp5YjNJZ2QybDBhQ0JHVkZsUUlITnBaMjVoZEhWeVpTQkNiM2dnYzJsNlpRb0FSWEp5YjNJZ2QybDBhQ0JLVUNCemFXZHVZWFIxY21VZ1FtOTRJSE5wZW1VS0FFbHVkbUZzYVdRZ2NISmxZMmx1WTNRZ2MybDZaUW9BU1c1amIyNXphWE4wWlc1MElHMWhjbXRsY2lCemFYcGxDZ0JKYm5aaGJHbGtJRzFoY210bGNpQnphWHBsQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSWdjMmw2WlFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV1JrSUdFZ2JtVjNJSFpoYkdsa1lYUnBiMjRnY0hKdlkyVmtkWEpsQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmtaV052WkdVZ2RHbHNaUW9BUm1GcGJHVmtJSFJ2SUdSbFkyOWtaU0IwYUdVZ1kyOWtaWE4wY21WaGJTQnBiaUIwYUdVZ1NsQXlJR1pwYkdVS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0JqYjJ4c1pXTjBhVzl1Y3lCM2FYUm9JR2x1WkdsNElITm9kV1ptYkdVS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCVWFXVnlJREVnYUdGdVpHeGxDZ0JPYnlCa1pXTnZaR1ZrSUdGeVpXRWdjR0Z5WVcxbGRHVnljeXdnYzJWMElIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ2RHOGdkR2hsSUhkb2IyeGxJR2x0WVdkbENnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJqY21WaGRHVWdWR0ZuTFhSeVpXVUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbGFXNXBkR2xoYkdsNlpTQjBhR1VnZEdGbklIUnlaV1VLQUVWeWNtOXlJSEpsWVdScGJtY2dVMUJEYjJRZ1UxQkRiMk1nWld4bGJXVnVkQ3dnU1c1MllXeHBaQ0IwY21GdWMyWnZjbTFoZEdsdmJpQm1iM1Z1WkFvQVJYSnliM0lnY21WaFpHbHVaeUJUVUVOdlpDQlRVRU52WXlCbGJHVnRaVzUwTGlCVmJuTjFjSEJ2Y25SbFpDQk5hWGhsWkNCSVZDQmpiMlJsTFdKc2IyTnJJSE4wZVd4bElHWnZkVzVrQ2dCVWFXeGxJRmtnWTI5dmNtUnBibUYwWlhNZ1lYSmxJRzV2ZENCemRYQndiM0owWldRS0FGUnBiR1VnV0NCamIyOXlaR2x1WVhSbGN5QmhjbVVnYm05MElITjFjSEJ2Y25SbFpBb0FTVzFoWjJVZ1kyOXZjbVJwYm1GMFpYTWdZV0p2ZG1VZ1NVNVVYMDFCV0NCaGNtVWdibTkwSUhOMWNIQnZjblJsWkFvQVNsQkZSekl3TURBZ1NHVmhaR1Z5SUdKdmVDQnViM1FnY21WaFpDQjVaWFFzSUNjbFl5VmpKV01sWXljZ1ltOTRJSGRwYkd3Z1ltVWdhV2R1YjNKbFpBb0FiM0JxWDJveWExOXRaWEpuWlY5d2NIUW9LU0JvWVhNZ1lXeHlaV0ZrZVNCaVpXVnVJR05oYkd4bFpBb0FiM0JxWDJveWExOWlkV2xzWkY5MGNGOXBibVJsZUY5bWNtOXRYM1JzYlNncE9pQjBhV3hsSUdsdVpHVjRJR0ZzYkc5allYUnBiMjRnWm1GcGJHVmtDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRk5QVkNCdFlYSnJaWEl1SUZScGJHVWdhVzVrWlhnZ1lXeHNiMk5oZEdsdmJpQm1ZV2xzWldRS0FFbG5ibTl5YVc1bklHbG9aSElnWW05NExpQkdhWEp6ZENCcGFHUnlJR0p2ZUNCaGJISmxZV1I1SUhKbFlXUUtBRnB3Y0hRZ0pYVWdZV3h5WldGa2VTQnlaV0ZrQ2dCYWNIQnRJQ1YxSUdGc2NtVmhaSGtnY21WaFpBb0FVRlJGVWswZ1kyaGxZMnNnWm1GcGJIVnlaVG9nSldRZ2MzbHVkR2hsYzJsNlpXUWdNSGhHUmlCdFlYSnJaWEp6SUhKbFlXUUtBQWtKQ1NCallteHJkejB5WGlWa0NnQUpDUWtnWTJKc2EyZzlNbDRsWkFvQUNRa0pJSEZ1ZEhOMGVUMGxaQW9BSlhNZ1pIZzlKV1FzSUdSNVBTVmtDZ0FKQ1FrZ2NtOXBjMmhwWm5ROUpXUUtBQWtKQ1NCdWRXMW5ZbWwwY3owbFpBb0FDUWtnYm5WdGJHRjVaWEp6UFNWa0NnQWxjeUJ1ZFcxamIyMXdjejBsWkFvQWIzQnFYMnB3TWw5aGNIQnNlVjlqWkdWbU9pQmhZMjQ5SldRc0lHNTFiV052YlhCelBTVmtDZ0J2Y0dwZmFuQXlYMkZ3Y0d4NVgyTmtaV1k2SUdOdVBTVmtMQ0J1ZFcxamIyMXdjejBsWkFvQUNRa0pJRzUxYlhKbGMyOXNkWFJwYjI1elBTVmtDZ0FKQ1NCMGVYQmxQU1VqZUN3Z2NHOXpQU1ZzYkdrc0lHeGxiajBsWkFvQUpYTWdjMmR1WkQwbFpBb0FDUWtKSUhGdFptSnBaRDBsWkFvQUpYTWdjSEpsWXowbFpBb0FDUWtnYm1JZ2IyWWdkR2xzWlMxd1lYSjBJR2x1SUhScGJHVWdXeVZrWFQwbFpBb0FKWE1nZURFOUpXUXNJSGt4UFNWa0NnQWxjeUI0TUQwbFpDd2dlVEE5SldRS0FFWmhhV3hsWkNCMGJ5QmtaV052WkdVZ2RHbHNaU0FsWkM4bFpBb0FVMlYwZEdsdVp5QmtaV052WkdsdVp5QmhjbVZoSUhSdklDVmtMQ1ZrTENWa0xDVmtDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR052YlhCdmJtVnVkQ0FsWkFvQVNXNTJZV3hwWkNCMllXeDFaU0JtYjNJZ2JuVnRjbVZ6YjJ4MWRHbHZibk1nT2lBbFpDd2diV0Y0SUhaaGJIVmxJR2x6SUhObGRDQnBiaUJ2Y0dWdWFuQmxaeTVvSUdGMElDVmtDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0J1ZFcxaVpYSTZJQ1ZrTENCeVpXZGhjbVJwYm1jZ2RHaGxJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNWa0NnQlViMjhnYldGdWVTQlFUME56SUNWa0NnQnZjR3BmYWpKclgzSmxZV1JmZEd4dEtDazZJR2x1ZG1Gc2FXUWdkR2xzWlNCdWRXMWlaWElnSldRS0FFbHVkbUZzYVdRZ2RHbHNaU0J1ZFcxaVpYSWdKV1FLQUVsdWRtRnNhV1FnZEdsc1pTQndZWEowSUdsdVpHVjRJR1p2Y2lCMGFXeGxJRzUxYldKbGNpQWxaQzRnUjI5MElDVmtMQ0JsZUhCbFkzUmxaQ0FsWkFvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJ1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwSUdseklHbHNiR1ZuWVd3Z0xUNGdKV1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUdadmNpQmphV1ZzWVdJS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCallteHJMVDVrWldOdlpHVmtYMlJoZEdFS0FFWmhhV3hsWkNCMGJ5QnRaWEpuWlNCUVVGUWdaR0YwWVFvQVJtRnBiR1ZrSUhSdklHMWxjbWRsSUZCUVRTQmtZWFJoQ2dCSmJuWmhiR2xrSUc1MWJXSmxjaUJ2WmlCc1lYbGxjbk1nYVc0Z1EwOUVJRzFoY210bGNpQTZJQ1ZrSUc1dmRDQnBiaUJ5WVc1blpTQmJNUzAyTlRVek5WMEtBQ1Z6T2lWa09tTnZiRzl5WDJOdGVXdGZkRzlmY21kaUNnbERRVTRnVGs5VUlFTlBUbFpGVWxRS0FDVnpPaVZrT21OdmJHOXlYMlZ6ZVdOalgzUnZYM0puWWdvSlEwRk9JRTVQVkNCRFQwNVdSVkpVQ2dBbGN6b2xaRHBqYjJ4dmNsOXplV05qWDNSdlgzSm5ZZ29KUTBGT0lFNVBWQ0JEVDA1V1JWSlVDZ0JUZEhKbFlXMGdkRzl2SUhOb2IzSjBMQ0JsZUhCbFkzUmxaQ0JUVDFRS0FGVnVZV0pzWlNCMGJ5QnpaWFFnZERFZ2FHRnVaR3hsSUdGeklGUk1Vd29BVTI5MElHeGxibWQwYUNCcGN5QnNaWE56SUhSb1lXNGdiV0Z5YTJWeUlITnBlbVVnS3lCdFlYSnJaWElnU1VRS0FGTjBjbVZoYlNCa2IyVnpJRzV2ZENCbGJtUWdkMmwwYUNCRlQwTUtBRU5oYm01dmRDQm9ZVzVrYkdVZ1ltOTRJSE5wZW1WeklHaHBaMmhsY2lCMGFHRnVJREplTXpJS0FHOXdhbDl3YVY5dVpYaDBYMnh5WTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0pzWTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYMk53Y213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0JqY213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0p3WTJ3b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDkwTVY5a1pXTnZaR1ZmWTJKc2F5Z3BPaUIxYm5OMWNIQnZjblJsWkNCaWNHNXZYM0JzZFhOZmIyNWxJRDBnSldRZ1BqMGdNekVLQUVaaGFXeGxaQ0IwYnlCa1pXTnZaR1VnZEdsc1pTQXhMekVLQUVsdWMzVm1abWxqYVdWdWRDQmtZWFJoSUdadmNpQkRUVUZRSUdKdmVDNEtBRTVsWldRZ2RHOGdjbVZoWkNCaElGQkRURklnWW05NElHSmxabTl5WlNCMGFHVWdRMDFCVUNCaWIzZ3VDZ0JKYm5OMVptWnBZMmxsYm5RZ1pHRjBZU0JtYjNJZ1EwUkZSaUJpYjNndUNnQk9kVzFpWlhJZ2IyWWdZMmhoYm01bGJDQmtaWE5qY21sd2RHbHZiaUJwY3lCbGNYVmhiQ0IwYnlCNlpYSnZJR2x1SUVORVJVWWdZbTk0TGdvQVUzUnlaV0Z0SUdWeWNtOXlJSGRvYVd4bElISmxZV1JwYm1jZ1NsQXlJRWhsWVdSbGNpQmliM2c2SUc1dklDZHBhR1J5SnlCaWIzZ3VDZ0JPYjI0Z1kyOXVabTl5YldGdWRDQmpiMlJsYzNSeVpXRnRJRlJRYzI5MFBUMVVUbk52ZEM0S0FGTjBjbVZoYlNCbGNuSnZjaUIzYUdsc1pTQnlaV0ZrYVc1bklFcFFNaUJJWldGa1pYSWdZbTk0T2lCaWIzZ2diR1Z1WjNSb0lHbHpJR2x1WTI5dWMybHpkR1Z1ZEM0S0FFSnZlQ0JzWlc1bmRHZ2dhWE1nYVc1amIyNXphWE4wWlc1MExnb0FVbVZ6YjJ4MWRHbHZiaUJtWVdOMGIzSWdhWE1nWjNKbFlYUmxjaUIwYUdGdUlIUm9aU0J0WVhocGJYVnRJSEpsYzI5c2RYUnBiMjRnYVc0Z2RHaGxJR052YlhCdmJtVnVkQzRLQUVOdmJYQnZibVZ1ZENCdFlYQndhVzVuSUhObFpXMXpJSGR5YjI1bkxpQlVjbmxwYm1jZ2RHOGdZMjl5Y21WamRDNEtBRzl3YWw5cU1tdGZZblZwYkdSZmRIQmZhVzVrWlhoZlpuSnZiVjkwYkcwb0tUb2dkR2xzWlNBbFpDQm9ZWE1nYm04Z2NtVm5hWE4wWlhKbFpDQjBhV3hsTFhCaGNuUWdhVzRnVkV4TklHMWhjbXRsY2lCelpXZHRaVzUwY3k0S0FHOXdhbDlxTW10ZmNtVmhaRjkwYkcwb0tUb2dkRzl2SUcxaGJua2dWRXhOSUcxaGNtdGxjbk11Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklHTmhibTV2ZENCaGJHeHZZMkYwWlNCdFgzUnBiR1ZmY0dGeWRGOXBibVp2Y3k0S0FFbHVZMjl0Y0d4bGRHVWdZMmhoYm01bGJDQmtaV1pwYm1sMGFXOXVjeTRLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRWx1ZG1Gc2FXUWdZMjlrWldKc2IyTnJJR3hsYm1kMGFDQjJZV3gxWlhNdUNnQlhaU0JrYnlCdWIzUWdjM1Z3Y0c5eWRDQnRiM0psSUhSb1lXNGdNeUJqYjJScGJtY2djR0Z6YzJWeklHbHVJR0Z1SUVoVUlHTnZaR1ZpYkc5amF6c2dWR2hwY3lCamIyUmxZbXh2WTJ0eklHaGhjeUFsWkNCd1lYTnpaWE11Q2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJFWldOdlpHbHVaeUIwYUdseklHTnZaR1ZpYkc5amF5QnBjeUJ6ZEc5d2NHVmtMaUJVYUdWeVpTQmhjbVVnSldRZ2VtVnlieUJpYVhSd2JHRnVaWE1nYVc0Z0pXUWdZbWwwY0d4aGJtVnpMZ29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElIUnlZVzV6Wm05eWJXRjBhVzl1SUhOMFlXZGxjeTRLQUZWdWEyNXZkMjRnYldGeWEyVnlJR2hoY3lCaVpXVnVJR1JsZEdWamRHVmtJR0Z1WkNCblpXNWxjbUYwWldRZ1pYSnliM0l1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNObGRIVndYMlJsWTI5a1pYSWdablZ1WTNScGIyNGdhWE1nYm05MElHRWdaR1ZqYjIxd2NtVnpjMjl5SUdoaGJtUnNaWEl1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNKbFlXUmZhR1ZoWkdWeUlHWjFibU4wYVc5dUlHbHpJRzV2ZENCaElHUmxZMjl0Y0hKbGMzTnZjaUJvWVc1a2JHVnlMZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlVURTBnYldGeWEyVnlMZ29BVkdsc1pYTWdaRzl1SjNRZ1lXeHNJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUxpQlRhMmx3SUhSb1pTQk5RMVFnYzNSbGNDNEtBRTUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNnbFpDa2dhWE1nYVc1amIyNXphWE4wWlc1MElIZHBkR2dnWVNCTlExUXVJRk5yYVhBZ2RHaGxJRTFEVkNCemRHVndMZ29BU2xBeUlHSnZlQ0IzYUdsamFDQmhjbVVnWVdaMFpYSWdkR2hsSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0J1YjNRZ1ltVWdjbVZoWkNCaWVTQjBhR2x6SUdaMWJtTjBhVzl1TGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnVjJobGJpQjBhR1VnYm5WdFltVnlJRzltSUhwbGNtOGdjR3hoYm1WeklHSnBkSEJzWVc1bGN5QnBjeUJsY1hWaGJDQjBieUIwYUdVZ2JuVnRZbVZ5SUc5bUlHSnBkSEJzWVc1bGN5d2diMjVzZVNCMGFHVWdZMnhsWVc1MWNDQndZWE56SUcxaGEyVnpJSE5sYm5ObExDQmlkWFFnZDJVZ2FHRjJaU0FsWkNCd1lYTnpaWE1nYVc0Z2RHaHBjeUJqYjJSbFlteHZZMnN1SUZSb1pYSmxabTl5WlN3Z2IyNXNlU0IwYUdVZ1kyeGxZVzUxY0NCd1lYTnpJSGRwYkd3Z1ltVWdaR1ZqYjJSbFpDNGdWR2hwY3lCdFpYTnpZV2RsSUhkcGJHd2dibTkwSUdKbElHUnBjM0JzWVhsbFpDQmhaMkZwYmk0S0FFbHRZV2RsSUdoaGN5QnNaWE56SUdOdmJYQnZibVZ1ZEhNZ2RHaGhiaUJqYjJSbGMzUnlaV0Z0TGdvQVRtVmxaQ0IwYnlCa1pXTnZaR1VnZEdobElHMWhhVzRnYUdWaFpHVnlJR0psWm05eVpTQmlaV2RwYmlCMGJ5QmtaV052WkdVZ2RHaGxJSEpsYldGcGJtbHVaeUJqYjJSbGMzUnlaV0Z0TGdvQVVITnZkQ0IyWVd4MVpTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCMGFXeGxMWEJoY25RZ2FYTWdaWEYxWVd3Z2RHOGdlbVZ5Ynl3Z2QyVWdZWE56ZFcxcGJtY2dhWFFnYVhNZ2RHaGxJR3hoYzNRZ2RHbHNaUzF3WVhKMElHOW1JSFJvWlNCamIyUmxjM1J5WldGdExnb0FRU0J0WVd4bWIzSnRaV1FnWTI5a1pXSnNiMk5ySUhSb1lYUWdhR0Z6SUcxdmNtVWdkR2hoYmlCdmJtVWdZMjlrYVc1bklIQmhjM01zSUdKMWRDQjZaWEp2SUd4bGJtZDBhQ0JtYjNJZ01tNWtJR0Z1WkNCd2IzUmxiblJwWVd4c2VTQjBhR1VnTTNKa0lIQmhjM01nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yTGdvQUNRa0pJSFJwYkdVdGNHRnlkRnNsWkYwNklITjBZWEpmY0c5elBTVnNiR2tzSUdWdVpGOW9aV0ZrWlhJOUpXeHNhU3dnWlc1a1gzQnZjejBsYkd4cExnb0FWR2xzWlNBbGRTQm9ZWE1nVkZCemIzUWdQVDBnTUNCaGJtUWdWRTV6YjNRZ1BUMGdNQ3dnWW5WMElHNXZJRzkwYUdWeUlIUnBiR1V0Y0dGeWRITWdkMlZ5WlNCbWIzVnVaQzRnUlU5RElHbHpJR0ZzYzI4Z2JXbHpjMmx1Wnk0S0FFTnZiWEJ2Ym1WdWRDQWxaQ0JrYjJWemJpZDBJR2hoZG1VZ1lTQnRZWEJ3YVc1bkxnb0FiM0JxWDJveWExOXlaV0ZrWDNSc2JTZ3BPaUJVVEUwZ2JXRnlhMlZ5SUc1dmRDQnZaaUJsZUhCbFkzUmxaQ0J6YVhwbExnb0FRU0JqYjI1bWIzSnRhVzVuSUVwUU1pQnlaV0ZrWlhJZ2MyaGhiR3dnYVdkdWIzSmxJR0ZzYkNCRGIyeHZkWElnVTNCbFkybG1hV05oZEdsdmJpQmliM2hsY3lCaFpuUmxjaUIwYUdVZ1ptbHljM1FzSUhOdklIZGxJR2xuYm05eVpTQjBhR2x6SUc5dVpTNEtBRlJvWlNCemFXZHVZWFIxY21VZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNCbWRIbHdJR0p2ZUNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlM0S0FFMWhiR1p2Y20xbFpDQklWQ0JqYjJSbFlteHZZMnN1SUVsdVkyOXljbVZqZENCTlJVd2djMlZuYldWdWRDQnpaWEYxWlc1alpTNEtBRU52YlhCdmJtVnVkQ0FsWkNCcGN5QnRZWEJ3WldRZ2RIZHBZMlV1Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklGTlVJRDBnTXlCcGN5QnBiblpoYkdsa0xnb0FUMjVzZVNCdmJtVWdRMDFCVUNCaWIzZ2dhWE1nWVd4c2IzZGxaQzRLQUZkbElHNWxaV1FnWVc0Z2FXMWhaMlVnY0hKbGRtbHZkWE5zZVNCamNtVmhkR1ZrTGdvQVNVaEVVaUJpYjNoZmJXbHpjMmx1Wnk0Z1VtVnhkV2x5WldRdUNnQktVREpJSUdKdmVDQnRhWE56YVc1bkxpQlNaWEYxYVhKbFpDNEtBRTV2ZENCemRYSmxJR2h2ZHlCMGFHRjBJR2hoY0hCbGJtVmtMZ29BVFdGcGJpQm9aV0ZrWlhJZ2FHRnpJR0psWlc0Z1kyOXljbVZqZEd4NUlHUmxZMjlrWldRdUNnQlVhV3hsSUNWa0x5VmtJR2hoY3lCaVpXVnVJR1JsWTI5a1pXUXVDZ0JJWldGa1pYSWdiMllnZEdsc1pTQWxaQ0F2SUNWa0lHaGhjeUJpWldWdUlISmxZV1F1Q2dCRmJYQjBlU0JUVDFRZ2JXRnlhMlZ5SUdSbGRHVmpkR1ZrT2lCUWMyOTBQU1ZrTGdvQVJHbHlaV04wSUhWelpTQmhkQ0FqSldRZ2FHOTNaWFpsY2lCd1kyOXNQU1ZrTGdvQVNXMXdiR1Z0Wlc1MFlYUnBiMjRnYkdsdGFYUmhkR2x2YmpvZ1ptOXlJSEJoYkdWMGRHVWdiV0Z3Y0dsdVp5d2djR052YkZzbFpGMGdjMmh2ZFd4a0lHSmxJR1Z4ZFdGc0lIUnZJQ1ZrTENCaWRYUWdhWE1nWlhGMVlXd2dkRzhnSldRdUNnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDOXdZV3hsZEhSbElHbHVaR1Y0SUdadmNpQmthWEpsWTNRZ2JXRndjR2x1WnlBbFpDNEtBRWx1ZG1Gc2FXUWdkbUZzZFdVZ1ptOXlJR050WVhCYkpXUmRMbTEwZVhBZ1BTQWxaQzRLQUZCemIzUWdkbUZzZFdVZ2FYTWdibTkwSUdOdmNuSmxZM1FnY21WbllYSmtjeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlRvZ0pXUXVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQldURU1nWTI5a1pTQndjbTlrZFdObGN5QnphV2R1YVdacFkyRnVkQ0J6WVcxd2JHVnpJRzkxZEhOcFpHVWdkR2hsSUdOdlpHVmliRzlqYXlCaGNtVmhMZ29BVlc1bGVIQmxZM1JsWkNCUFQwMHVDZ0F6TWlCaWFYUnpJR0Z5WlNCdWIzUWdaVzV2ZFdkb0lIUnZJR1JsWTI5a1pTQjBhR2x6SUdOdlpHVmliRzlqYXl3Z2MybHVZMlVnZEdobElHNTFiV0psY2lCdlppQmlhWFJ3YkdGdVpTd2dKV1FzSUdseklHeGhjbWRsY2lCMGFHRnVJRE13TGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYzJodmRXeGtJR0psSUQ0Z01DNEtBRkpwWjJoMElIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTRNVDBsWkNrZ2MyaHZkV3hrSUdKbElENGdNQzRLQUZWd0lIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTVNRDBsWkNrZ2MyaHZkV3hrSUdKbElENDlJREF1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2djMmh2ZFd4a0lHSmxJRDQ5SURBdUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJNklIQmhZMnRsZENCb1pXRmtaWElnYUdGMlpTQmlaV1Z1SUhCeVpYWnBiM1Z6YkhrZ1ptOTFibVFnYVc0Z2RHaGxJRzFoYVc0Z2FHVmhaR1Z5SUNoUVVFMGdiV0Z5YTJWeUtTNEtBRk4wWVhKMElIUnZJSEpsWVdRZ2FqSnJJRzFoYVc0Z2FHVmhaR1Z5SUNnbGJHeGtLUzRLQUVKdmRIUnZiU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRFOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmx6YVhvOUpXUXBMZ29BVlhBZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWmMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0hOcGVqMGxaQ2t1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XSE5wZWowbFpDa3VDZ0JDYjNSMGIyMGdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t4UFNWa0tTQnBjeUJ2ZFhSemFXUmxJSFJvWlNCcGJXRm5aU0JoY21WaElDaFpUM05wZWowbFpDa3VDZ0JWY0NCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVUQTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZsUGMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0U5emFYbzlKV1FwTGdvQVRHVm1kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURBOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmhQYzJsNlBTVmtLUzRLQUZOcGVtVWdlQ0J2WmlCMGFHVWdaR1ZqYjJSbFpDQmpiMjF3YjI1bGJuUWdhVzFoWjJVZ2FYTWdhVzVqYjNKeVpXTjBJQ2hqYjIxd1d5VmtYUzUzUFNWa0tTNEtBRk5wZW1VZ2VTQnZaaUIwYUdVZ1pHVmpiMlJsWkNCamIyMXdiMjVsYm5RZ2FXMWhaMlVnYVhNZ2FXNWpiM0p5WldOMElDaGpiMjF3V3lWa1hTNW9QU1ZrS1M0S0FGUnBiR1VnY21WaFpDd2daR1ZqYjJSbFpDQmhibVFnZFhCa1lYUmxaQ0JwY3lCdWIzUWdkR2hsSUdSbGMybHlaV1FnYjI1bElDZ2xaQ0IyY3lBbFpDa3VDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JwYm1SbGVDQWxaQ0FvUGowZ0pXUXBMZ29BYjNCcVgzSmxZV1JmYUdWaFpHVnlLQ2tnYzJodmRXeGtJR0psSUdOaGJHeGxaQ0JpWldadmNtVWdiM0JxWDNObGRGOWtaV052WkdWa1gyTnZiWEJ2Ym1WdWRITW9LUzRLQUUxbGJXOXllU0JoYkd4dlkyRjBhVzl1SUdaaGFXeDFjbVVnYVc0Z2IzQnFYMnB3TWw5aGNIQnNlVjl3WTJ4eUtDa3VDZ0JwYldGblpTMCtZMjl0Y0hOYkpXUmRMbVJoZEdFZ1BUMGdUbFZNVENCcGJpQnZjR3BmYW5BeVgyRndjR3g1WDNCamJISW9LUzRLQUdsdWRtRnNhV1FnWW05NElITnBlbVVnSldRZ0tDVjRLUW9BUm1GcGJDQjBieUJ5WldGa0lIUm9aU0JqZFhKeVpXNTBJRzFoY210bGNpQnpaV2R0Wlc1MElDZ2xJM2dwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRWxJUkZJZ2R5Z2xkU2tnYUNnbGRTa2dkbk11SUZOSldpQjNLQ1YxS1NCb0tDVjFLUW9BUlhKeWIzSWdjbVZoWkdsdVp5QkRUME1nYldGeWEyVnlJQ2hpWVdRZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITXBDZ0JKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUIwYVd4bGN5QTZJQ1YxSUhnZ0pYVWdLRzFoZUdsdGRXMGdabWw0WldRZ1lua2dhbkJsWnpJd01EQWdibTl5YlNCcGN5QTJOVFV6TlNCMGFXeGxjeWtLQUVsdWRtRnNhV1FnYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZEhNZ0tHbG9aSElwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ2FXMWhaMlVnYUdWaFpHVnlJQ2hwYUdSeUtRb0FWM0p2Ym1jZ2RtRnNkV1Z6SUdadmNqb2dkeWdsWkNrZ2FDZ2xaQ2tnYm5WdFkyOXRjSE1vSldRcElDaHBhR1J5S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJR1I0UFNWMUlHUjVQU1YxSUNoemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBeElHRnVaQ0F5TlRVZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCS1VFVkhNakF3TUNCdWIzSnRLUW9BUW1Ga0lHbHRZV2RsSUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FRbUZrSUVOUFRGSWdhR1ZoWkdWeUlHSnZlQ0FvWW1Ga0lITnBlbVVwQ2dCQ1lXUWdRbEJEUXlCb1pXRmtaWElnWW05NElDaGlZV1FnYzJsNlpTa0tBRVZ5Y205eUlIZHBkR2dnVTBsYUlHMWhjbXRsY2pvZ2JtVm5ZWFJwZG1VZ2IzSWdlbVZ5YnlCcGJXRm5aU0J6YVhwbElDZ2xiR3hrSUhnZ0pXeHNaQ2tLQUhOcmFYQTZJSE5sWjIxbGJuUWdkRzl2SUd4dmJtY2dLQ1ZrS1NCM2FYUm9JRzFoZUNBb0pXUXBJR1p2Y2lCamIyUmxZbXh2WTJzZ0pXUWdLSEE5SldRc0lHSTlKV1FzSUhJOUpXUXNJR005SldRcENnQnlaV0ZrT2lCelpXZHRaVzUwSUhSdmJ5QnNiMjVuSUNnbFpDa2dkMmwwYUNCdFlYZ2dLQ1ZrS1NCbWIzSWdZMjlrWldKc2IyTnJJQ1ZrSUNod1BTVmtMQ0JpUFNWa0xDQnlQU1ZrTENCalBTVmtLUW9BUkdWemNHbDBaU0JLVURJZ1FsQkRJVDB5TlRVc0lIQnlaV05wYzJsdmJpQmhibVF2YjNJZ2MyZHVaQ0IyWVd4MVpYTWdabTl5SUdOdmJYQmJKV1JkSUdseklHUnBabVpsY21WdWRDQjBhR0Z1SUdOdmJYQmJNRjA2Q2lBZ0lDQWdJQ0FnV3pCZElIQnlaV01vSldRcElITm5ibVFvSldRcElGc2xaRjBnY0hKbFl5Z2xaQ2tnYzJkdVpDZ2xaQ2tLQUdKaFpDQmpiMjF3YjI1bGJuUWdiblZ0WW1WeUlHbHVJRkpIVGlBb0pXUWdkMmhsYmlCMGFHVnlaU0JoY21VZ2IyNXNlU0FsWkNrS0FFVnljbTl5SUhkcGRHZ2dVMGxhSUcxaGNtdGxjam9nYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZENCcGN5QnViM1FnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSFJvWlNCeVpXMWhhVzVwYm1jZ2JuVnRZbVZ5SUc5bUlIQmhjbUZ0WlhSbGNuTWdLQ0FsWkNCMmN5QWxaQ2tLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNqb2dhVzUyWVd4cFpDQjBhV3hsSUhOcGVtVWdLSFJrZURvZ0pXUXNJSFJrZVRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoaVlXUWdjMmw2WlRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoRFNVVk1ZV0lzSUdKaFpDQnphWHBsT2lBbFpDa0tBRkJVUlZKTklHTm9aV05ySUdaaGFXeDFjbVU2SUNWa0lISmxiV0ZwYm1sdVp5QmllWFJsY3lCcGJpQmpiMlJsSUdKc2IyTnJJQ2dsWkNCMWMyVmtJQzhnSldRcENnQk5ZV3htYjNKdFpXUWdTRlFnWTI5a1pXSnNiMk5yTGlCUGJtVWdiMllnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNGdhWE1nYm05MElHMWxkRG9nTWlBOFBTQlRZM1Z3SUR3OUlHMXBiaWhNWTNWd0xDQTBNRGM1S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJSEJ5WldNOUpYVWdLSE5vYjNWc1pDQmlaU0JpWlhSM1pXVnVJREVnWVc1a0lETTRJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlM0Z1QzQmxia3B3WldjZ2IyNXNlU0J6ZFhCd2IzSjBjeUIxY0NCMGJ5QXpNU2tLQUVsdWRtRnNhV1FnWW1sMElHNTFiV0psY2lBbFpDQnBiaUJ2Y0dwZmRESmZjbVZoWkY5d1lXTnJaWFJmYUdWaFpHVnlLQ2tLQUZOMGNtVmhiU0JsY25KdmNpRUtBRVZ5Y205eUlHOXVJSGR5YVhScGJtY2djM1J5WldGdElRb0FVM1J5WldGdElISmxZV05vWldRZ2FYUnpJR1Z1WkNBaENnQkZlSEJsWTNSbFpDQmhJRk5QUXlCdFlYSnJaWElnQ2dCSmJuWmhiR2xrSUdKdmVDQnphWHBsSUNWa0lHWnZjaUJpYjNnZ0p5VmpKV01sWXlWakp5NGdUbVZsWkNBbFpDQmllWFJsY3l3Z0pXUWdZbmwwWlhNZ2NtVnRZV2x1YVc1bklBb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1JHVmpiMlJwYm1jZ2RHaHBjeUJqYjJSbFlteHZZMnNnYVhNZ2MzUnZjSEJsWkM0Z1ZWOXhJR2x6SUd4aGNtZGxjaUIwYUdGdUlIcGxjbThnWW1sMGNHeGhibVZ6SUNzZ01TQUtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGVmZjU0JwYzJ4aGNtZGxjaUIwYUdGdUlHSnBkSEJzWVc1bGN5QXJJREVnQ2dCRFQweFNJRUpQV0NCdFpYUm9JSFpoYkhWbElHbHpJRzV2ZENCaElISmxaM1ZzWVhJZ2RtRnNkV1VnS0NWa0tTd2djMjhnZDJVZ2QybHNiQ0JwWjI1dmNtVWdkR2hsSUdWdWRHbHlaU0JEYjJ4dmRYSWdVM0JsWTJsbWFXTmhkR2x2YmlCaWIzZ3VJQW9BVjJocGJHVWdjbVZoWkdsdVp5QkRRMUJmVVU1VVUxUlpJR1ZzWlcxbGJuUWdhVzV6YVdSbElGRkRSQ0J2Y2lCUlEwTWdiV0Z5YTJWeUlITmxaMjFsYm5Rc0lHNTFiV0psY2lCdlppQnpkV0ppWVc1a2N5QW9KV1FwSUdseklHZHlaV0YwWlhJZ2RHOGdUMUJLWDBveVMxOU5RVmhDUVU1RVV5QW9KV1FwTGlCVGJ5QjNaU0JzYVcxcGRDQjBhR1VnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6SUhOMGIzSmxaQ0IwYnlCUFVFcGZTakpMWDAxQldFSkJUa1JUSUNnbFpDa2dZVzVrSUhOcmFYQWdkR2hsSUhKbGMzUXVJQW9BU2xBeUlFbElSRklnWW05NE9pQmpiMjF3Y21WemMybHZiaUIwZVhCbElHbHVaR2xqWVhSbElIUm9ZWFFnZEdobElHWnBiR1VnYVhNZ2JtOTBJR0VnWTI5dVptOXliV2x1WnlCS1VESWdabWxzWlNBb0pXUXBJQW9BVkdsc1pTQnBibVJsZUNCd2NtOTJhV1JsWkNCaWVTQjBhR1VnZFhObGNpQnBjeUJwYm1OdmNuSmxZM1FnSldRZ0tHMWhlQ0E5SUNWa0tTQUtBRVZ5Y205eUlHUmxZMjlrYVc1bklHTnZiWEJ2Ym1WdWRDQWxaQzRLVkdobElHNTFiV0psY2lCdlppQnlaWE52YkhWMGFXOXVjeUIwYnlCeVpXMXZkbVVnS0NWa0tTQnBjeUJuY21WaGRHVnlJRzl5SUdWeGRXRnNJSFJvWVc0Z2RHaGxJRzUxYldKbGNpQnZaaUJ5WlhOdmJIVjBhVzl1Y3lCdlppQjBhR2x6SUdOdmJYQnZibVZ1ZENBb0pXUXBDazF2WkdsbWVTQjBhR1VnWTNCZmNtVmtkV05sSUhCaGNtRnRaWFJsY2k0S0NnQkpiV0ZuWlNCa1lYUmhJR2hoY3lCaVpXVnVJSFZ3WkdGMFpXUWdkMmwwYUNCMGFXeGxJQ1ZrTGdvS0FDTUFwUUJEQUdZQWd3RHVxQlFBMzlnakFMNFFRd0QvOVlNQWZpQlZBRjlSSXdBMUFFTUFUa1NEQU03RUZBRFB6Q01BL3VKREFQK1pnd0NXQU1VQVB6RWpBS1VBUXdCZVJJTUF6c2dVQU44Ukl3RCs5RU1BLy95REFKNEFWUUIzQUNNQU5RQkRBUC94Z3dDdWlCUUF0d0FqQVA3NFF3RHY1SU1Bam9qRkFCOFJJd0NsQUVNQVpnQ0RBTzZvRkFEZlZDTUF2aEJEQU84aWd3QitJRlVBZnlJakFEVUFRd0JPUklNQXpzUVVBTDhSSXdEKzRrTUE5d0NEQUpZQXhRQS9JaU1BcFFCREFGNUVnd0RPeUJRQTF3QWpBUDcwUXdEL3VvTUFuZ0JWQUc4QUl3QTFBRU1BLythREFLNklGQUN2b2lNQS92aERBT2NBZ3dDT2lNVUFMeUlDQU1VQWhBQitJQUlBenNRa0FQY0FBZ0Qrb2tRQVZnQUNBSjRBRkFEWEFBSUF2aENFQUdZQUFnQ3VpQ1FBM3hFQ0FPNm9SQUEyQUFJQWpvZ1VBQjhSQWdERkFJUUFiZ0FDQU02SUpBRC9pQUlBL3JoRUFFNUVBZ0NXQUJRQXR3QUNBUDdraEFCZVJBSUFwZ0FrQU9jQUFnRGVWRVFBTGlJQ0FENEFGQUIzQUFJQXhRQ0VBSDRnQWdET3hDUUEvL0VDQVA2aVJBQldBQUlBbmdBVUFMOFJBZ0MrRUlRQVpnQUNBSzZJSkFEdklnSUE3cWhFQURZQUFnQ09pQlFBZnlJQ0FNVUFoQUJ1QUFJQXpvZ2tBTy9rQWdEK3VFUUFUa1FDQUpZQUZBQ3ZvZ0lBL3VTRUFGNUVBZ0NtQUNRQTM5Z0NBTjVVUkFBdUlnSUFQZ0FVQUY5UkFnQlZBSVFBWmdBQ0FONklKQUQvTWdJQS9oRkVBRTVFQWdDdUFCUUF0d0FDQUg0eGhBQmVVUUlBeGdBa0FOY0FBZ0R1SUVRQUhoRUNBSjRBRkFCM0FBSUFWUUNFQUY1VUFnRE9SQ1FBNXdBQ0FQN3hSQUEyQUFJQXBnQVVBRjlWQWdEK2RJUUFQaEVDQUw0Z0pBQi9kQUlBM3NSRUFQLzRBZ0NXQUJRQUx5SUNBRlVBaEFCbUFBSUEzb2drQVBjQUFnRCtFVVFBVGtRQ0FLNEFGQUNQaUFJQWZqR0VBRjVSQWdER0FDUUF6OGdDQU80Z1JBQWVFUUlBbmdBVUFHOEFBZ0JWQUlRQVhsUUNBTTVFSkFEZjBRSUEvdkZFQURZQUFnQ21BQlFBZnlJQ0FQNTBoQUErRVFJQXZpQWtBTDhpQWdEZXhFUUE3eUlDQUpZQUZBQS9NZ01BM3RUOTlQLzhGQUErRVZVQWo0Z0RBTDR5aFFEbkFDVUFYbEgrcW45eUF3RE9SUDM0NzBRVUFINWtSUUN2b2dNQXBnQmRWZCtaL2ZFMkFQNzFiMklEQU43Ui9mVC81aFFBZm5GVkFMK3hBd0N1aUlVQTM5VWxBRTVFL3ZKL1pnTUF4Z0Q5K08vaUZBQmVWRVVBbnhFREFKWUFYVlhQeVAzeEhoSHV5R2NBQXdEZTFQMzAvL01VQUQ0UlZRQy9FUU1BdmpLRkFOL1lKUUJlVWY2cUx5SURBTTVFL2ZqM0FCUUFmbVJGQUorWUF3Q21BRjFWMXdEOThUWUEvdlZ2UkFNQTN0SDk5UCs1RkFCK2NWVUF0d0FEQUs2SWhRRGYzQ1VBVGtUKzhuY0FBd0RHQVAzNDcrUVVBRjVVUlFCL2N3TUFsZ0JkVmIrNC9mRWVFZTdJUHpJQ0FLVUFoQUIrUUFJQTNoQWtBTjhSQWdEK2NrUUFWZ0FDQUs2b0ZBQy9zZ0lBbGdDRUFHWUFBZ0RHQUNRQTV3QUNBTzdJUkFBdUlnSUFqb2dVQUhjQUFnQ2xBSVFBYmdBQ0FNNklKQUQzQUFJQS9wRkVBRFlBQWdDdW9oUUFyNm9DQVA2NGhBQmVBQUlBdmdBa0FNL0VBZ0R1UkVRQS8vUUNBRDRpRkFBZkVRSUFwUUNFQUg1QUFnRGVFQ1FBLzVrQ0FQNXlSQUJXQUFJQXJxZ1VBTGNBQWdDV0FJUUFaZ0FDQU1ZQUpBRFhBQUlBN3NoRUFDNGlBZ0NPaUJRQVQwUUNBS1VBaEFCdUFBSUF6b2drQU8vaUFnRCtrVVFBTmdBQ0FLNmlGQUIvUkFJQS9yaUVBRjRBQWdDK0FDUUFud0FDQU81RVJBRC9kZ0lBUGlJVUFEOHhBd0RHQUlVQS85bjk4bjVrL3ZHL21RTUFycUlsQU85bS9mUldBTzdpZjNNREFMNllSUUQzQVAzNFpnRCtkcCtJQXdDT2lCVUEzOVdsQUM0aTNwaFBSQU1BdnJLRkFQLzgvZkp1SXBZQXR3QURBSzZxSlFEZjBmMzBOZ0RlMUc5a0F3Q3VxRVVBNytyOStGNUU3dWgvY1FNQVBqSVZBTS9FcFFELytzNklQekVEQU1ZQWhRRC9kLzN5Zm1UKzhiK3pBd0N1b2lVQTV3RDk5RllBN3VKM0FBTUF2cGhGQU8vay9maG1BUDUyZjJZREFJNklGUURYQUtVQUxpTGVtRDh6QXdDK3NvVUEvM1g5OG00aWxnQ2ZrUU1BcnFvbEFOK1ovZlEyQU43VVgxRURBSzZvUlFEdjdQMzRYa1R1Nkg5eUF3QStNaFVBdjdHbEFQL3p6b2dmRVFNQTNsVDk4aDRSRkFCK1pQNzR6OHdEQUw2UlJRRHZJaVVBTGlMKzg0K0lBd0RHQUlVQTl3QVVBRjRSL3Z5dnFBTUFwZ0ExQU4vSS9mRStNZjVtYjJRREFNN0kvZkwvOVJRQVpnRCs5TCs2QXdDdUlrVUE1d0FsQUQ0eS91cC9jd01BdnJLRkFOOVZGQUJXQUg1eG54RURBSllBTlFEUHhQM3hQalB1NkU5RUF3RGVWUDN5SGhFVUFINWsvdmkvbVFNQXZwRkZBTy9pSlFBdUl2N3pmMllEQU1ZQWhRRHY1QlFBWGhIKy9KK1lBd0NtQURVQTF3RDk4VDR4L21adklnTUF6c2o5OHYrNUZBQm1BUDcwdHdBREFLNGlSUURmMFNVQVBqTCs2bmNBQXdDK3NvVUE3K3dVQUZZQWZuRi9jZ01BbGdBMUFMKzQvZkUrTSs3b1gxVDg4ZDdSL2ZyWEFQejRGZ0Q5LzM5MC9QUitjZjN6djdQODh1L3E3dWhQUlB6eHJpSUZBTCs0L1BqM0FQNzhkd0Q4OUY0Ui9mVi9kZnp5MzlqdTRqOHovUEcrc3YzNno0ajgrUC83L2Y5L2MvejBiZ0Q5ODdjQS9QTHZadjc1UHpIODhaNEFCUUMvdXZ6NC8vMys5bWNBL1BRbUFQMzFqNGo4OHQvYzN0UXZJdnp4M3RIOStzL0UvUGdXQVAzL2YzTDg5SDV4L2ZPL21menk3K3p1NkVjQS9QR3VJZ1VBcHdEOCtQLzMvdnhYQVB6MFhoSDk5WmNBL1BMZjFlN2lOd0Q4OGI2eS9mckhBUHo0Ly83OS8zOW0vUFJ1QVAzenI2ajg4dWNBL3ZrL012enhuZ0FGQUwreC9QanY1UDcyWDFUODlDWUEvZldIQVB6eTM1bmUxQjhSRXdCbEFFTUEzZ0NEQUkySUl3Qk9SQk1BcFFCREFLNklnd0ExQUNNQTF3QVRBTVVBUXdDZUFJTUFWUUFqQUM0aUV3Q1ZBRU1BZmdDREFQNFFJd0IzQUJNQVpRQkRBTTZJZ3dDTmlDTUFIaEVUQUtVQVF3QmVBSU1BTlFBakFPY0FFd0RGQUVNQXZnQ0RBRlVBSXdEL0VSTUFsUUJEQUQ0QWd3RHVRQ01BcjZJVEFHVUFRd0RlQUlNQWpZZ2pBRTVFRXdDbEFFTUFyb2lEQURVQUl3RHZSQk1BeFFCREFKNEFnd0JWQUNNQUxpSVRBSlVBUXdCK0FJTUEvaEFqQUxjQUV3QmxBRU1Bem9pREFJMklJd0FlRVJNQXBRQkRBRjRBZ3dBMUFDTUF6OFFUQU1VQVF3QytBSU1BVlFBakFQY0FFd0NWQUVNQVBnQ0RBTzVBSXdCdkFBRUFoQUFCQUZZQUFRQVVBQUVBMXdBQkFDUUFBUUNXQUFFQVJRQUJBSGNBQVFDRUFBRUF4Z0FCQUJRQUFRQ1BpQUVBSkFBQkFQY0FBUUExQUFFQUx5SUJBSVFBQVFEK1FBRUFGQUFCQUxjQUFRQWtBQUVBdndBQkFFVUFBUUJuQUFFQWhBQUJBS1lBQVFBVUFBRUFUMFFCQUNRQUFRRG5BQUVBTlFBQkFEOFJBUUNFQUFFQVZnQUJBQlFBQVFEUEFBRUFKQUFCQUpZQUFRQkZBQUVBYndBQkFJUUFBUURHQUFFQUZBQUJBSjhBQVFBa0FBRUE3d0FCQURVQUFRQS9NZ0VBaEFBQkFQNUFBUUFVQUFFQXJ3QUJBQ1FBQVFEL1JBRUFSUUFCQUY4QUFRQ0VBQUVBcGdBQkFCUUFBUUIvQUFFQUpBQUJBTjhBQVFBMUFBRUFIeEVCQUNRQUFRQldBQUVBaFFBQkFMOEFBUUFVQUFFQTl3QUJBTVlBQVFCM0FBRUFKQUFCQVAvNEFRQkZBQUVBZndBQkFCUUFBUURmQUFFQXBnQUJBRDh4QVFBa0FBRUFMaUlCQUlVQUFRQzNBQUVBRkFBQkFPOUVBUUN1b2dFQVp3QUJBQ1FBQVFEL1VRRUFSUUFCQUpjQUFRQVVBQUVBendBQkFEWUFBUUEvSWdFQUpBQUJBRllBQVFDRkFBRUF2N0lCQUJRQUFRRHZRQUVBeGdBQkFHOEFBUUFrQUFFQS8zSUJBRVVBQVFDZkFBRUFGQUFCQU5jQUFRQ21BQUVBVDBRQkFDUUFBUUF1SWdFQWhRQUJBSytvQVFBVUFBRUE1d0FCQUs2aUFRQmZBQUVBSkFBQkFQOUVBUUJGQUFFQWo0Z0JBQlFBQVFDdnFnRUFOZ0FCQUI4UkFnRCsrQ1FBVmdBQ0FMWUFoUUQvWmdJQXpnQVVBQjRSQWdDV0FEVUFyNmdDQVBZQUpBQStNUUlBcGdCRkFMK3pBZ0Mrc2hRQS8vVUNBR1lBZmxGZlZBSUEvdklrQUM0aUFnQ3VJb1VBNzBRQ0FNWUFGQUQvOUFJQWRnQTFBSDlFQWdEZVFDUUFQaklDQUo0QVJRRFhBQUlBdm9nVUFQLzZBZ0JlRWY3eFQwUUNBUDc0SkFCV0FBSUF0Z0NGQU8vSUFnRE9BQlFBSGhFQ0FKWUFOUUNQaUFJQTlnQWtBRDR4QWdDbUFFVUEzMFFDQUw2eUZBRC9xQUlBWmdCK1VXOEFBZ0QrOGlRQUxpSUNBSzRpaFFEbkFBSUF4Z0FVQU8vaUFnQjJBRFVBZjNJQ0FONUFKQUErTWdJQW5nQkZBTCt4QWdDK2lCUUEvM01DQUY0Ui92RS9Nd0VBaEFBQkFPNGdBUURGQUFFQXo4UUJBRVFBQVFEL01nRUFGUUFCQUkrSUFRQ0VBQUVBWmdBQkFDVUFBUUN2QUFFQVJBQUJBTzhpQVFDbUFBRUFYd0FCQUlRQUFRQk9SQUVBeFFBQkFNL01BUUJFQUFFQTl3QUJBQlVBQVFCdkFBRUFoQUFCQUZZQUFRQWxBQUVBbndBQkFFUUFBUURmQUFFQS9qQUJBQzhpQVFDRUFBRUE3aUFCQU1VQUFRRFB5QUVBUkFBQkFQOFJBUUFWQUFFQWR3QUJBSVFBQVFCbUFBRUFKUUFCQUg4QUFRQkVBQUVBNXdBQkFLWUFBUUEzQUFFQWhBQUJBRTVFQVFERkFBRUF0d0FCQUVRQUFRQy9BQUVBRlFBQkFEOEFBUUNFQUFFQVZnQUJBQ1VBQVFDWEFBRUFSQUFCQU5jQUFRRCtNQUVBSHhFQ0FPNm9SQUNPaUFJQTFnREZBUC96QWdEKy9DVUFQZ0FDQUxZQVZRRGYyQUlBL3ZoRUFHWUFBZ0IrSUlVQS81a0NBT1lBOVFBMkFBSUFwZ0FWQUo4QUFnRCs4a1FBZGdBQ0FNNUV4UUQvZGdJQS92RWxBRTVFQWdDdUFGVUF6OGdDQVA3MFJBQmVSQUlBdmhDRkFPL2tBZ0RlVlBVQUhoRUNBSllBRlFBdklnSUE3cWhFQUk2SUFnRFdBTVVBLy9vQ0FQNzhKUUErQUFJQXRnQlZBTDhSQWdEKytFUUFaZ0FDQUg0Z2hRRHZJZ0lBNWdEMUFEWUFBZ0NtQUJVQWZ5SUNBUDd5UkFCMkFBSUF6a1RGQVAvVkFnRCs4U1VBVGtRQ0FLNEFWUUJ2QUFJQS92UkVBRjVFQWdDK0VJVUEzeEVDQU41VTlRQWVFUUlBbGdBVkFGOVJBd0QyQUJRQUhoRkVBSTZJcFFEZjFBTUFycUpWQVA5MkpBQStJcllBcjZvREFPWUFGQUQvOVVRQVpnQ0ZBTS9NQXdDZUFNVUE3MFFrQURZQS92aC9NUU1BN3VnVUFQL3hSQUIyQUtVQXo4UURBSDRpVlFEZjBTUUFUa1QrOUY5UkF3RFdBQlFBNytKRUFGNUVoUUMvSWdNQWxnREZBTi9JSkFBdUl2N3lieUlEQVBZQUZBQWVFVVFBam9pbEFMK3hBd0N1b2xVQS96TWtBRDRpdGdDdnFBTUE1Z0FVQVArNVJBQm1BSVVBdjZnREFKNEF4UUR2NUNRQU5nRCsrRzlrQXdEdTZCUUEvL3hFQUhZQXBRRFB5QU1BZmlKVkFPL3FKQUJPUlA3MGYzUURBTllBRkFELytrUUFYa1NGQUwreUF3Q1dBTVVBMzBRa0FDNGkvdkkvTWZNQS92cjk4VFlBQkFDK01uVUEzeEh6QU41VS9mTHY1TlVBZm5IKy9IOXo4d0QrOC8zNEhoRUVBSllBVlFDL3NmTUF6Z0MxQU4vWS9mUm1BUDY1WDFUekFQNTIvZkVtQUFRQXBnQjFBSjhBOHdDdUFQM3kvL2ZWQUVZQS92Vi9kUE1BNWdEOStCWUFCQUNHQUZVQWo0anpBTVlBdFFEdjR2MzBYaEh1cUQ4Ujh3RCsrdjN4TmdBRUFMNHlkUURmMGZNQTNsVDk4di83MVFCK2NmNzhmMFR6QVA3ei9mZ2VFUVFBbGdCVkFIOXk4d0RPQUxVQTd5TDk5R1lBL3JsUFJQTUEvbmI5OFNZQUJBQ21BSFVBdnhIekFLNEEvZkwvLzlVQVJnRCs5VDh5OHdEbUFQMzRGZ0FFQUlZQVZRQnZBUE1BeGdDMUFMKzQvZlJlRWU2b0x5SUFRZXloQVF1a0hnRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQkFBQUFBVUFBQUMzSVVJaFp5RkNJUkVSRVJFek16TXpkM2QzZHdBQUFBQUFBQUFBQVZZQUFBQUFBQUJRVVFBQVlGRUFBQUZXQUFBQkFBQUFZRkVBQUZCUkFBQUJOQUFBQUFBQUFIQlJBQUR3VVFBQUFUUUFBQUVBQUFDQVVRQUFBRklBQUFFWUFBQUFBQUFBa0ZFQUFGQlNBQUFCR0FBQUFRQUFBS0JSQUFCZ1VnQUF3UW9BQUFBQUFBQ3dVUUFBc0ZJQUFNRUtBQUFCQUFBQXdGRUFBTUJTQUFBaEJRQUFBQUFBQU5CUkFBRFFWQUFBSVFVQUFBRUFBQURnVVFBQTRGUUFBQ0VDQUFBQUFBQUE4RlVBQUZCVkFBQWhBZ0FBQVFBQUFBQldBQUJnVlFBQUFWWUFBQUFBQUFBUVVnQUFBRklBQUFGV0FBQUJBQUFBSUZJQUFQQlJBQUFCVkFBQUFBQUFBREJTQUFEd1VnQUFBVlFBQUFFQUFBQkFVZ0FBQUZNQUFBRklBQUFBQUFBQVVGSUFBUEJTQUFBQlNBQUFBUUFBQUdCU0FBQUFVd0FBQVRnQUFBQUFBQUJ3VWdBQThGSUFBQUU0QUFBQkFBQUFnRklBQUFCVEFBQUJNQUFBQUFBQUFKQlNBQUJRVXdBQUFUQUFBQUVBQUFDZ1VnQUFZRk1BQUFFa0FBQUFBQUFBc0ZJQUFIQlRBQUFCSkFBQUFRQUFBTUJTQUFDQVV3QUFBUndBQUFBQUFBRFFVZ0FBc0ZNQUFBRWNBQUFCQUFBQTRGSUFBTUJUQUFBQkZnQUFBQUFBQU5CVUFBRFFVd0FBQVJZQUFBRUFBQURnVkFBQTRGTUFBQUZXQUFBQUFBQUFFRk1BQUFCVEFBQUJWZ0FBQVFBQUFDQlRBQUR3VWdBQUFWUUFBQUFBQUFBd1V3QUE4RklBQUFGVUFBQUJBQUFBUUZNQUFBQlRBQUFCVVFBQUFBQUFBRkJUQUFBUVV3QUFBVkVBQUFFQUFBQmdVd0FBSUZNQUFBRklBQUFBQUFBQWNGTUFBREJUQUFBQlNBQUFBUUFBQUlCVEFBQkFVd0FBQVRnQUFBQUFBQUNRVXdBQVVGTUFBQUU0QUFBQkFBQUFvRk1BQUdCVEFBQUJOQUFBQUFBQUFMQlRBQUJ3VXdBQUFUUUFBQUVBQUFEQVV3QUFnRk1BQUFFd0FBQUFBQUFBMEZNQUFKQlRBQUFCTUFBQUFRQUFBT0JUQUFDZ1V3QUFBU2dBQUFBQUFBRHdVd0FBa0ZNQUFBRW9BQUFCQUFBQUFGUUFBS0JUQUFBQkpBQUFBQUFBQUJCVUFBQ3dVd0FBQVNRQUFBRUFBQUFnVkFBQXdGTUFBQUVpQUFBQUFBQUFNRlFBQU5CVEFBQUJJZ0FBQVFBQUFFQlVBQURnVXdBQUFSd0FBQUFBQUFCUVZBQUE4Rk1BQUFFY0FBQUJBQUFBWUZRQUFBQlVBQUFCR0FBQUFBQUFBSEJVQUFBUVZBQUFBUmdBQUFFQUFBQ0FWQUFBSUZRQUFBRVdBQUFBQUFBQWtGUUFBREJVQUFBQkZnQUFBUUFBQUtCVUFBQkFWQUFBQVJRQUFBQUFBQUN3VkFBQVVGUUFBQUVVQUFBQkFBQUF3RlFBQUdCVUFBQUJFZ0FBQUFBQUFOQlVBQUJ3VkFBQUFSSUFBQUVBQUFEZ1ZBQUFnRlFBQUFFUkFBQUFBQUFBOEZRQUFKQlVBQUFCRVFBQUFRQUFBQUJWQUFDZ1ZBQUF3UW9BQUFBQUFBQVFWUUFBc0ZRQUFNRUtBQUFCQUFBQUlGVUFBTUJVQUFEQkNRQUFBQUFBQURCVkFBRFFWQUFBd1FrQUFBRUFBQUJBVlFBQTRGUUFBS0VJQUFBQUFBQUFVRlVBQVBCVUFBQ2hDQUFBQVFBQUFHQlZBQUFBVlFBQUlRVUFBQUFBQUFCd1ZRQUFFRlVBQUNFRkFBQUJBQUFBZ0ZVQUFDQlZBQUJCQkFBQUFBQUFBSkJWQUFBd1ZRQUFRUVFBQUFFQUFBQ2dWUUFBUUZVQUFLRUNBQUFBQUFBQXNGVUFBRkJWQUFDaEFnQUFBUUFBQU1CVkFBQmdWUUFBSVFJQUFBQUFBQURRVlFBQWNGVUFBQ0VDQUFBQkFBQUE0RlVBQUlCVkFBQkJBUUFBQUFBQUFQQlZBQUNRVlFBQVFRRUFBQUVBQUFBQVZnQUFvRlVBQUJFQkFBQUFBQUFBRUZZQUFMQlZBQUFSQVFBQUFRQUFBQ0JXQUFEQVZRQUFoUUFBQUFBQUFBQXdWZ0FBMEZVQUFJVUFBQUFCQUFBQVFGWUFBT0JWQUFCSkFBQUFBQUFBQUZCV0FBRHdWUUFBU1FBQUFBRUFBQUJnVmdBQUFGWUFBQ1VBQUFBQUFBQUFjRllBQUJCV0FBQWxBQUFBQVFBQUFJQldBQUFnVmdBQUZRQUFBQUFBQUFDUVZnQUFNRllBQUJVQUFBQUJBQUFBb0ZZQUFFQldBQUFKQUFBQUFBQUFBTEJXQUFCUVZnQUFDUUFBQUFFQUFBREFWZ0FBWUZZQUFBVUFBQUFBQUFBQTBGWUFBSEJXQUFBRkFBQUFBUUFBQU9CV0FBQ0FWZ0FBQVFBQUFBQUFBQURRVmdBQWtGWUFBQUVBQUFBQkFBQUE0RllBQUtCV0FBQUJWZ0FBQUFBQUFQQldBQUR3VmdBQUFWWUFBQUVBQUFBQVZ3QUFBRmNBQUFBQkF3TUJBZ01EQlFZSEJ3WUdCd2NBQVFNREFRSURBd1VHQndjR0JnY0hCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBVUdCd2NHQmdjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0JBZ01EQWdJREF3WUdCd2NHQmdjSEFRSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3SUNBd01DQWdNREJnWUhCd1lHQndjR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQUFFRkJnRUNCZ1lEQXdjSEF3TUhCd0FCQlFZQkFnWUdBd01IQndNREJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEF3TUhCd01EQndjRUJBY0hCQVFIQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NCQWdZR0FnSUdCZ01EQndjREF3Y0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3TURCd2NEQXdjSEJBUUhCd1FFQndjRkJnZ0lCZ1lJQ0FjSENBZ0hCd2dJQlFZSUNBWUdDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FZR0NBZ0dCZ2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBRUNCZ1lDQWdZR0F3TUhCd01EQndjQkFnWUdBZ0lHQmdNREJ3Y0RBd2NIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0NBZ1lHQWdJR0JnTURCd2NEQXdjSEFnSUdCZ0lDQmdZREF3Y0hBd01IQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBWUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQVlHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdBQVFNREFRSURBd1VHQndjR0JnY0hBQUVEQXdFQ0F3TUZCZ2NIQmdZSEJ3VUdCd2NHQmdjSENBZ0lDQWdJQ0FnRkJnY0hCZ1lIQndnSUNBZ0lDQWdJQVFJREF3SUNBd01HQmdjSEJnWUhCd0VDQXdNQ0FnTURCZ1lIQndZR0J3Y0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnREF3UUVBd01FQkFjSEJ3Y0hCd2NIQXdNRUJBTURCQVFIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUFRSURBd0lDQXdNR0JnY0hCZ1lIQndFQ0F3TUNBZ01EQmdZSEJ3WUdCd2NHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBSUNBd01DQWdNREJnWUhCd1lHQndjQ0FnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUFEQVFRREJnUUhBUVFDQlFRSEJRY0FBd0VFQXdZRUJ3RUVBZ1VFQndVSEFRUUNCUVFIQlFjQ0JRSUZCUWNGQndFRUFnVUVCd1VIQWdVQ0JRVUhCUWNEQmdRSEJnZ0hDQVFIQlFjSENBY0lBd1lFQndZSUJ3Z0VCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd0VFQWdVRUJ3VUhBZ1VDQlFVSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEFnVUNCUVVIQlFjQ0JRSUZCUWNGQndRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dFQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBVUhCUWNIQ0FjSUJRY0ZCd2NJQndnREJnUUhCZ2dIQ0FRSEJRY0hDQWNJQXdZRUJ3WUlCd2dFQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0VCd1VIQndnSENBVUhCUWNIQ0FjSUJnZ0hDQWdJQ0FnSENBY0lDQWdJQ0FZSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lDUWtLQ2drSkNnb01EQTBMREF3TkN3a0pDZ29KQ1FvS0RBd0xEUXdNQ3cwTURBME5EQXdMQ3d3SkRRb0pEQW9MREF3TEN3d01EUTBNQ1FzS0NRd0tEUWtKQ2dvSkNRb0tEQXdOQ3d3TURRc0pDUW9LQ1FrS0Nnd01DdzBNREFzTkRBd05EUXdNQ3dzTUNRMEtDUXdLQ3d3TUN3c01EQTBOREFrTENna01DZzBLQ2dvS0Nnb0tDZzBMRFFzTkN3MExDZ29KQ1FvS0NRa05Dd3dNRFFzTURBME5EUTBMQ3dzTERRb05DZ29MQ2dzTkRRd01Dd3NNREEwS0RBa0tDd2tNQ2dvSkNRb0tDUWtMRFF3TUN3ME1EQW9LQ2dvS0Nnb0tDdzBMRFFzTkN3MExDd3dNRFEwTURBc0tEQWtLRFFrTUN3c0xDdzBORFEwTENnc0tDZzBLRFFCQm1jQUJDemNCQUFFQUFRQUJBQUFCQVFBQUFRRUFBUUFCQUFFQUFRQUFBQUFCQVFFQkFBQUFBQUFCQUFFQUFBQUFBUUVCQVFBQUFBRUFBUUVCQUVIWndBRUxOd0VBQVFBQkFBRUFBQUVCQUFBQkFRQUJBQUVBQVFBQkFBQUFBQUVCQVFFQUFBQUFBQUVBQVFBQUFBQUJBUUVCQUFBQUFRQUJBUUVBUVpuQkFRc0hBUUFCQUFFQUFRQkJxY0VCQzVVQ0FRQUJBQUVBQVFBQUFBQUJBUUVCQUFBQUFBQUJBQUVBQUFBQUFRRUJBUUFBQUFBQUFRQUJBUUVBQUFFQkFBQUFBUUFCQUFFQUFRRUJBUUVCQVFFQkFBRUFBUUFCQUFFQUFBQUFBUUVCQVFBQkFBQUJBUUFCQUFBQUFBRUJBUUVBQVFBQkFRRUJBUUlBQUFBRUFBQUFCQUFBQUFnQUFBQ1Evd0FBREFBQUFCa0FBQUJTL3dBQUZBQUFBQm9BQUFCVC93QUFGQUFBQUJzQUFBQmUvd0FBRkFBQUFCd0FBQUJjL3dBQUZBQUFBQjBBQUFCZC93QUFGQUFBQUI0QUFBQmYvd0FBRkFBQUFCOEFBQUJSL3dBQUFnQUFBQ0FBQUFCVi93QUFCQUFBQUNFQUFBQlgvd0FBQkFBQUFDSUFBQUJZL3dBQUVBQUFBQ01BQUFCZy93QUFCQUFBQUNRQUFBQmgvd0FBRUFBQUFDVUFBQUNSL3dCQnlNTUJDMlZqL3dBQUJBQUFBQ1lBQUFCay93QUFGQUFBQUNjQUFBQjAvd0FBRkFBQUFDZ0FBQUI0L3dBQUJBQUFBQ2tBQUFCUS93QUFCQUFBQUNvQUFBQlovd0FBQkFBQUFDc0FBQUIxL3dBQUZBQUFBQ3dBQUFCMy93QUFGQUFBQUMwQUFBQUFBQUFBRkFCQndNUUJDelV1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFDQWdVR28zQUFBQWNIbDBaamdBQUFCb01uQnFPUUJCZ01VQkN6SnlaR2hwT2dBQUFISnNiMk03QUFBQVkyTndZandBQUFCeWJHTndQUUFBQUhCaGJXTStBQUFBWm1Wa1l6OEFBQUJBWmdCQndNVUJDMEVaQUFzQUdSa1pBQUFBQUFVQUFBQUFBQUFKQUFBQUFBc0FBQUFBQUFBQUFCa0FDZ29aR1JrRENnY0FBUUFKQ3hnQUFBa0dDd0FBQ3dBR0dRQUFBQmtaR1FCQmtjWUJDeUVPQUFBQUFBQUFBQUFaQUFzTkdSa1pBQTBBQUFJQUNRNEFBQUFKQUE0QUFBNEFRY3ZHQVFzQkRBQkIxOFlCQ3hVVEFBQUFBQk1BQUFBQUNRd0FBQUFBQUF3QUFBd0FRWVhIQVFzQkVBQkJrY2NCQ3hVUEFBQUFCQThBQUFBQUNSQUFBQUFBQUJBQUFCQUFRYi9IQVFzQkVnQkJ5OGNCQ3g0UkFBQUFBQkVBQUFBQUNSSUFBQUFBQUJJQUFCSUFBQm9BQUFBYUdob0FRWUxJQVFzT0dnQUFBQm9hR2dBQUFBQUFBQWtBUWJQSUFRc0JGQUJCdjhnQkN4VVhBQUFBQUJjQUFBQUFDUlFBQUFBQUFCUUFBQlFBUWUzSUFRc0JGZ0JCK2NnQkMyUVZBQUFBQUJVQUFBQUFDUllBQUFBQUFCWUFBQllBQURBeE1qTTBOVFkzT0RsQlFrTkVSVVlBQUFBQWNBQUFBSEFBQUFCeEFBQUFjUUFBQUhFQUFBQnhBQUFBY1FBQUFIRUFBQUJ3QUFBQWNBQUFBSEVBQUFCd0FBQUFjQUFBQUhBQUFBQndBRUdBeWdFTEhYRUFBQUJ4QUFBQWNBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQnhBRUdveXdFTENWQndBUUFBQUFBQUJRQkJ2TXNCQ3dGckFFSFV5d0VMQ213QUFBQnRBQUFBdUdzQVFlekxBUXNCQWdCQi9Nc0JDd2ovLy8vLy8vLy8vd0JCd013QkN3RUZBRUhNekFFTEFXNEFRZVRNQVFzT2JBQUFBRzhBQUFESWF3QUFBQVFBUWZ6TUFRc0JBUUJCak0wQkN3WC8vLy8vQ2c9PSI7cmV0dXJuIHJlY2VpdmVJbnN0YW5jZShpbnN0YW50aWF0ZVN5bmMoZCxlKVswXSl9KCksSD0oTC51LGEuX21hbGxvYz1MLnYsYS5fZnJlZT1MLncsYS5fanAyX2RlY29kZT1MLnksTC56KTtiPWZ1bmN0aW9uIHJ1bkNhbGxlcigpe1N8fHJ1bigpO1N8fChiPXJ1bkNhbGxlcil9O2Z1bmN0aW9uIHJ1bigpe2lmKCEoeT4wKSl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKGEucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVSdW4mJihhLnByZVJ1bj1bYS5wcmVSdW5dKTtmb3IoO2EucHJlUnVuLmxlbmd0aDspZT1hLnByZVJ1bi5zaGlmdCgpLGYudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhmKX0oKTtpZighKHk+MCkpaWYoYS5zZXRTdGF0dXMpe2Euc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKCk9PntzZXRUaW1lb3V0KCgoKT0+YS5zZXRTdGF0dXMoIiIpKSwxKTtkb1J1bigpfSksMSl9ZWxzZSBkb1J1bigpfWZ1bmN0aW9uIGRvUnVuKCl7aWYoIVMpe1M9ITA7YS5jYWxsZWRSdW49ITA7aWYoIXUpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe2NhbGxSdW50aW1lQ2FsbGJhY2tzKHApfSgpO3QoYSk7YS5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZihhLnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2Zvcig7YS5wb3N0UnVuLmxlbmd0aDspZT1hLnBvc3RSdW4uc2hpZnQoKSxtLnVuc2hpZnQoZSl9dmFyIGU7Y2FsbFJ1bnRpbWVDYWxsYmFja3MobSl9KCl9fX19aWYoYS5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVJbml0JiYoYS5wcmVJbml0PVthLnByZUluaXRdKTtmb3IoO2EucHJlSW5pdC5sZW5ndGg+MDspYS5wcmVJbml0LnBvcCgpKCl9cnVuKCk7cmV0dXJuIGF9KTtjb25zdCByaT1haTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpweEVycm9yIil9fWNsYXNzIEpweEltYWdle3N0YXRpYyNiPW51bGw7c3RhdGljIGRlY29kZShlLHQpe3R8fD17fTt0aGlzLiNifHw9cmkoe3dhcm59KTtjb25zdCBpPXRoaXMuI2IuZGVjb2RlKGUsdCk7aWYoInN0cmluZyI9PXR5cGVvZiBpKXRocm93IG5ldyBKcHhFcnJvcihpKTtyZXR1cm4gaX1zdGF0aWMgY2xlYW51cCgpe3RoaXMuI2I9bnVsbH1zdGF0aWMgcGFyc2VJbWFnZVByb3BlcnRpZXMoZSl7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDt0Pj0wOyl7Y29uc3QgaT10O3Q9ZS5nZXRCeXRlKCk7aWYoNjUzNjE9PT0oaTw8OHx0KSl7ZS5za2lwKDQpO2NvbnN0IHQ9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MDtlLnNraXAoMTYpO3JldHVybnt3aWR0aDp0LWEsaGVpZ2h0OmktcixiaXRzUGVyQ29tcG9uZW50OjgsY29tcG9uZW50c0NvdW50OmUuZ2V0VWludDE2KCl9fX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe3RoaXMuZGVjb2RlSW1hZ2UobnVsbCxlKX1kZWNvZGVJbWFnZShlLHQpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1KcHhJbWFnZS5kZWNvZGUoZSx0KTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBhPTQwOTYscj17ZWFybHlDaGFuZ2U6aSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkoYSksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KGEpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShhKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtyLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtyLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1yfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxpPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9aT1pPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9aTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGk+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsaSxhPTEwMjQ7Y29uc3Qgcj10aGlzLmx6d1N0YXRlO2lmKCFyKXJldHVybjtjb25zdCBzPXIuZWFybHlDaGFuZ2U7bGV0IG49ci5uZXh0Q29kZTtjb25zdCBvPXIuZGljdGlvbmFyeVZhbHVlcyxnPXIuZGljdGlvbmFyeUxlbmd0aHMsYz1yLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGw9ci5jb2RlTGVuZ3RoLGg9ci5wcmV2Q29kZTtjb25zdCBDPXIuY3VycmVudFNlcXVlbmNlO2xldCBRPXIuY3VycmVudFNlcXVlbmNlTGVuZ3RoLEU9MCx1PXRoaXMuYnVmZmVyTGVuZ3RoLGQ9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSk7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhsKSxyPVE+MDtpZihlPDI1Nil7Q1swXT1lO1E9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7bD05O249MjU4O1E9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPG4pe1E9Z1tlXTtmb3IodD1RLTEsaT1lO3Q+PTA7dC0tKXtDW3RdPW9baV07aT1jW2ldfX1lbHNlIENbUSsrXT1DWzBdfWlmKHIpe2Nbbl09aDtnW25dPWdbaF0rMTtvW25dPUNbMF07bisrO2w9bitzJm4rcy0xP2w6MHxNYXRoLm1pbihNYXRoLmxvZyhuK3MpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfWg9ZTtFKz1RO2lmKGE8RSl7ZG97YSs9NTEyfXdoaWxlKGE8RSk7ZD10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKX1mb3IodD0wO3Q8UTt0KyspZFt1KytdPUNbdF19ci5uZXh0Q29kZT1uO3IuY29kZUxlbmd0aD1sO3IucHJldkNvZGU9aDtyLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1RO3RoaXMuYnVmZmVyTGVuZ3RoPXV9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3QgYT10aGlzLnByZWRpY3Rvcj1pLmdldCgiUHJlZGljdG9yIil8fDE7aWYoYTw9MSlyZXR1cm4gZTtpZigyIT09YSYmKGE8MTB8fGE+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PWE/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCByPXRoaXMuY29sb3JzPWkuZ2V0KCJDb2xvcnMiKXx8MSxzPXRoaXMuYml0cz1pLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LG49dGhpcy5jb2x1bW5zPWkuZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1yKnMrNz4+Mzt0aGlzLnJvd0J5dGVzPW4qcipzKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLGk9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxhPXRoaXMuYml0cyxyPXRoaXMuY29sb3JzLHM9dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IXMubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgbixvPTAsZz0wLGM9MCxsPTAsaD10O2lmKDE9PT1hJiYxPT09cilmb3Iobj0wO248ZTsrK24pe2xldCBlPXNbbl1ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O2lbaCsrXT1lfWVsc2UgaWYoOD09PWEpe2ZvcihuPTA7bjxyOysrbilpW2grK109c1tuXTtmb3IoO248ZTsrK24pe2lbaF09aVtoLXJdK3Nbbl07aCsrfX1lbHNlIGlmKDE2PT09YSl7Y29uc3QgdD0yKnI7Zm9yKG49MDtuPHQ7KytuKWlbaCsrXT1zW25dO2Zvcig7bjxlO24rPTIpe2NvbnN0IGU9KCgyNTUmc1tuXSk8PDgpKygyNTUmc1tuKzFdKSsoKDI1NSZpW2gtdF0pPDw4KSsoMjU1JmlbaC10KzFdKTtpW2grK109ZT4+OCYyNTU7aVtoKytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkocisxKSxoPSgxPDxhKS0xO2xldCBDPTAsUT10O2NvbnN0IEU9dGhpcy5jb2x1bW5zO2ZvcihuPTA7bjxFOysrbilmb3IobGV0IHQ9MDt0PHI7Kyt0KXtpZihjPGEpe289bzw8OHwyNTUmc1tDKytdO2MrPTh9ZVt0XT1lW3RdKyhvPj5jLWEpJmg7Yy09YTtnPWc8PGF8ZVt0XTtsKz1hO2lmKGw+PTgpe2lbUSsrXT1nPj5sLTgmMjU1O2wtPTh9fWw+MCYmKGlbUSsrXT0oZzw8OC1sKSsobyYoMTw8OC1sKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxpPXRoaXMuc3RyLmdldEJ5dGUoKSxhPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFhLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZW5zdXJlQnVmZmVyKHIrZSk7bGV0IG49cy5zdWJhcnJheShyLWUscik7MD09PW4ubGVuZ3RoJiYobj1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sZyxjLGw9cjtzd2l0Y2goaSl7Y2FzZSAwOmZvcihvPTA7bzxlOysrbylzW2wrK109YVtvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKXNbbCsrXT1hW29dO2Zvcig7bzxlOysrbyl7c1tsXT1zW2wtdF0rYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pc1tsKytdPW5bb10rYVtvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbylzW2wrK109KG5bb10+PjEpK2Fbb107Zm9yKDtvPGU7KytvKXtzW2xdPShuW29dK3NbbC10XT4+MSkrYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2c9bltvXTtjPWFbb107c1tsKytdPWcrY31mb3IoO288ZTsrK28pe2c9bltvXTtjb25zdCBlPW5bby10XSxpPXNbbC10XSxyPWkrZy1lO2xldCBoPXItaTtoPDAmJihoPS1oKTtsZXQgQz1yLWc7QzwwJiYoQz0tQyk7bGV0IFE9ci1lO1E8MCYmKFE9LVEpO2M9YVtvXTtzW2wrK109aDw9QyYmaDw9UT9pK2M6Qzw9UT9nK2M6ZStjfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7aX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxpPXRoaXMuYnVmZmVyTGVuZ3RoLGE9ZVswXTtpZihhPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihpK2ErMSk7dFtpKytdPWVbMV07aWYoYT4wKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKGEpO3Quc2V0KGUsaSk7aSs9YX19ZWxzZXthPTI1Ny1hO2NvbnN0IHI9ZVsxXTt0PXRoaXMuZW5zdXJlQnVmZmVyKGkrYSsxKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXRbaSsrXT1yfXRoaXMuYnVmZmVyTGVuZ3RoPWl9fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOmk9ITEscmVjb3ZlcnlNb2RlOmE9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9aTt0aGlzLnJlY292ZXJ5TW9kZT1hO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBpPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1FdDspaS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1FdCl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGk7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gaTtjYXNlIjw8Ijpjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT1FdDspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PUV0KWJyZWFrO2Euc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PUV0KXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gYTt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0oYSxlKTphO3RoaXMuc2hpZnQoKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGk9ZS5wb3M7bGV0IGEscixzPTA7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PXMpcz02OT09PWE/MTowO2Vsc2UgaWYoMT09PXMpcz03Mz09PWE/MjowO2Vsc2UgaWYoMzI9PT1hfHwxMD09PWF8fDEzPT09YSl7cj1lLnBvcztjb25zdCBpPWUucGVla0J5dGVzKDE1KSxuPWkubGVuZ3RoO2lmKDA9PT1uKWJyZWFrO2ZvcihsZXQgZT0wO2U8bjtlKyspe2E9aVtlXTtpZigoMCE9PWF8fDA9PT1pW2UrMV0pJiYoMTAhPT1hJiYxMyE9PWEmJihhPDMyfHxhPjEyNykpKXtzPTA7YnJlYWt9fWlmKDIhPT1zKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpLnNsaWNlKCkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBnPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PUV0KXtzPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgaT10W2UuY21kXTtpZighaSl7cz0wO2JyZWFrfWlmKGkudmFyaWFibGVBcmdzP2c8PWkubnVtQXJnczpnPT09aS5udW1BcmdzKWJyZWFrO2c9MH1lbHNlIGcrK31pZigyPT09cylicmVha31lbHNlIHM9MDtpZigtMT09PWEpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihyKXt3YXJuKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLXIpKX19bGV0IG49NDtlLnNraXAoLW4pO2E9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChuKTtpc1doaXRlU3BhY2UoYSl8fG4tLTtyZXR1cm4gZS5wb3Mtbi1pfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaSxhLHI9ITE7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09aSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzpyPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0OmE9ZS5nZXRVaW50MTYoKTthPjI/ZS5za2lwKGEtMik6ZS5za2lwKC0yKX1pZihyKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWkpe2NvbnN0IHQ9ZS5wb3M7aT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoaSk7KXtlLnNraXAoKTtpPWUucGVla0J5dGUoKX1pZig2Mj09PWkpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGE9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGk7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1pOyk7Y29uc3QgYT1lLnBvcy10O2lmKC0xPT09aSl7d2FybigiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGk9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09aSlpPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09aSlpPTczPT09dD8yOjA7ZWxzZSBpZigyPT09aSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGk9dC5zdHJlYW0sYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiSUQiKSYmdGhpcy5idWYxIT09RXQ7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09RXQpYnJlYWs7YVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHI9aS5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCBzPXRoaXMueHJlZi5mZXRjaElmUmVmKGEuRnx8YS5GaWx0ZXIpO2xldCBuO2lmKHMgaW5zdGFuY2VvZiBOYW1lKW49cy5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihzWzBdKTtlIGluc3RhbmNlb2YgTmFtZSYmKG49ZS5uYW1lKX1jb25zdCBvPWkucG9zO2xldCBnLGM7c3dpdGNoKG4pe2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Zz10aGlzLmZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6Zz10aGlzLmZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpnPXRoaXMuZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2RlZmF1bHQ6Zz10aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGkpfWlmKGc8MWUzJiZyPjApe2NvbnN0IGU9aS5wb3M7aS5wb3M9dC5iZWdpbklubGluZUltYWdlUG9zO2M9ZnVuY3Rpb24gZ2V0SW5saW5lSW1hZ2VDYWNoZUtleShlKXtjb25zdCB0PVtdLGk9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8aS0xOyl0LnB1c2goZVthKytdPDw4fGVbYSsrXSk7YTxpJiZ0LnB1c2goZVthXSk7cmV0dXJuIGkrIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KX0oaS5nZXRCeXRlcyhyK2cpKTtpLnBvcz1lO2NvbnN0IGE9dGhpcy5pbWFnZUNhY2hlW2NdO2lmKHZvaWQgMCE9PWEpe3RoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTthLnJlc2V0KCk7cmV0dXJuIGF9fWNvbnN0IGw9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgZSBpbiBhKWwuc2V0KGUsYVtlXSk7bGV0IGg9aS5tYWtlU3ViU3RyZWFtKG8sZyxsKTtlJiYoaD1lLmNyZWF0ZVN0cmVhbShoLGcpKTtoPXRoaXMuZmlsdGVyKGgsbCxnKTtoLmRpY3Q9bDtpZih2b2lkIDAhPT1jKXtoLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZDt0aGlzLmltYWdlQ2FjaGVbY109aH10aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGh9I0QoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXMubGV4ZXI7dC5wb3M9ZTtjb25zdCBpPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMF0pLGE9aS5sZW5ndGgscj1bbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5N10pXSxzPTktYTtmb3IoO3QucG9zPHQuZW5kOyl7Y29uc3Qgbj10LnBlZWtCeXRlcygyMDQ4KSxvPW4ubGVuZ3RoLTk7aWYobzw9MClicmVhaztsZXQgZz0wO2Zvcig7ZzxvOyl7bGV0IG89MDtmb3IoO288YSYmbltnK29dPT09aVtvXTspbysrO2lmKG8+PWEpe2xldCBhPSExO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8dCYmbltnK28rcl09PT1lW3JdOylyKys7aWYocj49cyl7YT0hMDticmVha31pZihyPj10KXtpZihpc1doaXRlU3BhY2UobltnK28rcl0pKXtpbmZvKGBGb3VuZCAiJHtieXRlc1RvU3RyaW5nKFsuLi5pLC4uLmVdKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTthPSEwfWJyZWFrfX1pZihhKXt0LnBvcys9ZztyZXR1cm4gdC5wb3MtZX19ZysrfXQucG9zKz1vfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBpPXRoaXMubGV4ZXI7bGV0IGE9aS5zdHJlYW07aS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IHI9YS5wb3MtMTtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2luZm8oYEJhZCBsZW5ndGggIiR7cyYmcy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO3M9MH1hLnBvcz1yK3M7aS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmaXNDbWQodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtzPXRoaXMuI0Qocik7aWYoczwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKTtpLm5leHRDaGFyKCk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKX10aGlzLnNoaWZ0KCk7YT1hLm1ha2VTdWJTdHJlYW0ocixzLGUpO3QmJihhPXQuY3JlYXRlU3RyZWFtKGEscykpO2E9dGhpcy5maWx0ZXIoYSxlLHMpO2EuZGljdD1lO3JldHVybiBhfWZpbHRlcihlLHQsaSl7bGV0IGE9dC5nZXQoIkYiLCJGaWx0ZXIiKSxyPXQuZ2V0KCJEUCIsIkRlY29kZVBhcm1zIik7aWYoYSBpbnN0YW5jZW9mIE5hbWUpe0FycmF5LmlzQXJyYXkocikmJndhcm4oIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxhLm5hbWUsaSxyKX1sZXQgcz1pO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IHQ9YSxpPXI7Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuPG87KytuKXthPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbbl0pO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIGZpbHRlciBuYW1lICIke2F9ImApO3I9bnVsbDtBcnJheS5pc0FycmF5KGkpJiZuIGluIGkmJihyPXRoaXMueHJlZi5mZXRjaElmUmVmKGlbbl0pKTtlPXRoaXMubWFrZUZpbHRlcihlLGEubmFtZSxzLHIpO3M9bnVsbH19cmV0dXJuIGV9bWFrZUZpbHRlcihlLHQsaSxhKXtpZigwPT09aSl7d2FybihgRW1wdHkgIiR7dH0iIHN0cmVhbS5gKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gYT9uZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShlLGkpLGksYSk6bmV3IEZsYXRlU3RyZWFtKGUsaSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKGEpe2EuaGFzKCJFYXJseUNoYW5nZSIpJiYodD1hLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0obmV3IExaV1N0cmVhbShlLGksdCksaSxhKX1yZXR1cm4gbmV3IExaV1N0cmVhbShlLGksdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IEpwZWdTdHJlYW0oZSxpLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBKcHhTdHJlYW0oZSxpLGEpO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOnJldHVybiBuZXcgQXNjaWk4NVN0cmVhbShlLGkpO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpSGV4U3RyZWFtKGUsaSk7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiBuZXcgQ0NJVFRGYXhTdHJlYW0oZSxpLGEpO2Nhc2UiUkwiOmNhc2UiUnVuTGVuZ3RoRGVjb2RlIjpyZXR1cm4gbmV3IFJ1bkxlbmd0aFN0cmVhbShlLGkpO2Nhc2UiSkJJRzJEZWNvZGUiOnJldHVybiBuZXcgSmJpZzJTdHJlYW0oZSxpLGEpfXdhcm4oYEZpbHRlciAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZC5gKTtyZXR1cm4gZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBJbnZhbGlkIHN0cmVhbTogIiR7ZX0iYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfX19Y29uc3Qgc2k9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxpPTAsYT0xO2lmKDQ1PT09ZSl7YT0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSA0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSk7aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7aT0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKGlzV2hpdGVTcGFjZShlKXx8LTE9PT1lKXtpbmZvKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IEZvcm1hdEVycm9yKHQpfWxldCByPWUtNDgscz0wLG49MTtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTA7KWlmKGU+PTQ4JiZlPD01Nyl7Y29uc3QgYT1lLTQ4O2lmKHQpcz0xMCpzK2E7ZWxzZXswIT09aSYmKGkqPTEwKTtyPTEwKnIrYX19ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT1pKWJyZWFrO2k9MX1lbHNlIGlmKDQ1PT09ZSl3YXJuKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKTtlbHNle2lmKDY5IT09ZSYmMTAxIT09ZSlicmVhaztlPXRoaXMucGVla0NoYXIoKTtpZig0Mz09PWV8fDQ1PT09ZSl7bj00NT09PWU/LTE6MTt0aGlzLm5leHRDaGFyKCl9ZWxzZSBpZihlPDQ4fHxlPjU3KWJyZWFrO3Q9ITB9MCE9PWkmJihyLz1pKTt0JiYocio9MTAqKihuKnMpKTtyZXR1cm4gYSpyfWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7bGV0IGE9dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IHI9ITE7c3dpdGNoKDB8YSl7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgNDA6KytlO2kucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6aWYoMD09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGkucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6YT10aGlzLm5leHRDaGFyKCk7c3dpdGNoKGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDppLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6aS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmkucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmkucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjppLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZhO2E9dGhpcy5uZXh0Q2hhcigpO3I9ITA7aWYoYT49NDgmJmE8PTU1KXtlPShlPDwzKSsoMTUmYSk7YT10aGlzLm5leHRDaGFyKCk7aWYoYT49NDgmJmE8PTU1KXtyPSExO2U9KGU8PDMpKygxNSZhKX19aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWlmKHQpYnJlYWs7cnx8KGE9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gaS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhc2lbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYoc2lbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7aS5wdXNoKCIjIik7YnJlYWt9Y29uc3QgYT10b0hleERpZ2l0KGUpO2lmKC0xIT09YSl7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IHI9dG9IZXhEaWdpdChlKTtpZigtMT09PXIpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTtpLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKHNpW2VdKWJyZWFrO2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1pLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPDw0fHIpKX1lbHNlIGkucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7aS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7aS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGkuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fHdhcm4oYGdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAke2V9YCk6d2FybigiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9Z2V0SGV4U3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0ckJ1ZjtlLmxlbmd0aD0wO2xldCB0PXRoaXMuY3VycmVudENoYXIsaT0tMSxhPS0xO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKHQ8MCl7d2FybigiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09c2lbdF0pe2E9dG9IZXhEaWdpdCh0KTtpZigtMT09PWEpdGhpcy5faGV4U3RyaW5nV2Fybih0KTtlbHNlIGlmKC0xPT09aSlpPWE7ZWxzZXtlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0fGEpKTtpPS0xfXQ9dGhpcy5uZXh0Q2hhcigpfWVsc2UgdD10aGlzLm5leHRDaGFyKCl9LTEhPT1pJiZlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0KSk7cmV0dXJuIGUuam9pbigiIil9Z2V0T2JqKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKDEhPT1zaVt0XSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiB0aGlzLmdldE51bWJlcigpO2Nhc2UgNDA6cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5nZXROYW1lKCk7Y2FzZSA5MTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiXSIpO2Nhc2UgNjA6dD10aGlzLm5leHRDaGFyKCk7aWYoNjA9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIjw8Iil9cmV0dXJuIHRoaXMuZ2V0SGV4U3RyaW5nKCk7Y2FzZSA2Mjp0PXRoaXMubmV4dENoYXIoKTtpZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPj4iKX1yZXR1cm4gQ21kLmdldCgiPiIpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgieyIpO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgSWxsZWdhbCBjaGFyYWN0ZXI6ICR7dH1gKX1sZXQgaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHQ8MzJ8fHQ+MTI3KXtjb25zdCBlPXRoaXMucGVla0NoYXIoKTtpZihlPj0zMiYmZTw9MTI3KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoaSl9fWNvbnN0IGE9dGhpcy5rbm93bkNvbW1hbmRzO2xldCByPXZvaWQgMCE9PWE/LltpXTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJiFzaVt0XTspe2NvbnN0IGU9aStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHImJnZvaWQgMD09PWFbZV0pYnJlYWs7aWYoMTI4PT09aS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2kubGVuZ3RofWApO2k9ZTtyPXZvaWQgMCE9PWE/LltpXX1pZigidHJ1ZSI9PT1pKXJldHVybiEwO2lmKCJmYWxzZSI9PT1pKXJldHVybiExO2lmKCJudWxsIj09PWkpcmV0dXJuIG51bGw7IkJJIj09PWkmJih0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9dGhpcy5zdHJlYW0ucG9zKTtyZXR1cm4gQ21kLmdldChpKX1za2lwVG9OZXh0TGluZSgpe2xldCBlPXRoaXMuY3VycmVudENoYXI7Zm9yKDtlPj0wOyl7aWYoMTM9PT1lKXtlPXRoaXMubmV4dENoYXIoKTsxMD09PWUmJnRoaXMubmV4dENoYXIoKTticmVha31pZigxMD09PWUpe3RoaXMubmV4dENoYXIoKTticmVha31lPXRoaXMubmV4dENoYXIoKX19fWNsYXNzIExpbmVhcml6YXRpb257c3RhdGljIGNyZWF0ZShlKXtmdW5jdGlvbiBnZXRJbnQoZSx0LGk9ITEpe2NvbnN0IGE9ZS5nZXQodCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmKGk/YT49MDphPjApKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcihgVGhlICIke3R9IiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfWNvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUpLHhyZWY6bnVsbH0pLGk9dC5nZXRPYmooKSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLHM9dC5nZXRPYmooKTtsZXQgbixvO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpKSYmTnVtYmVyLmlzSW50ZWdlcihhKSYmaXNDbWQociwib2JqIikmJnMgaW5zdGFuY2VvZiBEaWN0JiYibnVtYmVyIj09dHlwZW9mKG49cy5nZXQoIkxpbmVhcml6ZWQiKSkmJm4+MCkpcmV0dXJuIG51bGw7aWYoKG89Z2V0SW50KHMsIkwiKSkhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiTCIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lcyBub3QgZXF1YWwgdGhlIHN0cmVhbSBsZW5ndGguJyk7cmV0dXJue2xlbmd0aDpvLGhpbnRzOmZ1bmN0aW9uIGdldEhpbnRzKGUpe2NvbnN0IHQ9ZS5nZXQoIkgiKTtsZXQgaTtpZihBcnJheS5pc0FycmF5KHQpJiYoMj09PShpPXQubGVuZ3RoKXx8ND09PWkpKXtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBpPXRbZV07aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGkpJiZpPjApKXRocm93IG5ldyBFcnJvcihgSGludCAoJHtlfSkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfXJldHVybiB0fXRocm93IG5ldyBFcnJvcigiSGludCBhcnJheSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9KHMpLG9iamVjdE51bWJlckZpcnN0OmdldEludChzLCJPIiksZW5kRmlyc3Q6Z2V0SW50KHMsIkUiKSxudW1QYWdlczpnZXRJbnQocywiTiIpLG1haW5YUmVmRW50cmllc09mZnNldDpnZXRJbnQocywiVCIpLHBhZ2VGaXJzdDpzLmhhcygiUCIpP2dldEludChzLCJQIiwhMCk6MH19fWNvbnN0IG5pPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sb2k9MioqMjQtMTtjbGFzcyBDTWFwe2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzPVtbXSxbXSxbXSxbXV07dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXM9MDt0aGlzLl9tYXA9W107dGhpcy5uYW1lPSIiO3RoaXMudmVydGljYWw9ITE7dGhpcy51c2VDTWFwPW51bGw7dGhpcy5idWlsdEluQ01hcD1lfWFkZENvZGVzcGFjZVJhbmdlKGUsdCxpKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxpKTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfW1hcENpZFJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBDaWRSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtmb3IoO2U8PXQ7KXRoaXMuX21hcFtlKytdPWkrK31tYXBCZlJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9aS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1pO2NvbnN0IHQ9aS5jaGFyQ29kZUF0KGEpKzE7dD4yNTU/aT1pLnN1YnN0cmluZygwLGEtMSkrU3RyaW5nLmZyb21DaGFyQ29kZShpLmNoYXJDb2RlQXQoYS0xKSsxKSsiXDAiOmk9aS5zdWJzdHJpbmcoMCxhKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsaSl7aWYodC1lPm9pKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZVRvQXJyYXkgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3QgYT1pLmxlbmd0aDtsZXQgcj0wO2Zvcig7ZTw9dCYmcjxhOyl7dGhpcy5fbWFwW2VdPWlbcisrXTsrK2V9fW1hcE9uZShlLHQpe3RoaXMuX21hcFtlXT10fWxvb2t1cChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNvbnRhaW5zKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtjb25zdCB0PXRoaXMuX21hcCxpPXQubGVuZ3RoO2lmKGk8PTY1NTM2KWZvcihsZXQgYT0wO2E8aTthKyspdm9pZCAwIT09dFthXSYmZShhLHRbYV0pO2Vsc2UgZm9yKGNvbnN0IGkgaW4gdCllKGksdFtpXSl9Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgaSBpbiB0KWlmKHRbaV09PT1lKXJldHVybiAwfGk7cmV0dXJuLTF9Z2V0TWFwKCl7cmV0dXJuIHRoaXMuX21hcH1yZWFkQ2hhckNvZGUoZSx0LGkpe2xldCBhPTA7Y29uc3Qgcj10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IHM9MCxuPXIubGVuZ3RoO3M8bjtzKyspe2E9KGE8PDh8ZS5jaGFyQ29kZUF0KHQrcykpPj4+MDtjb25zdCBuPXJbc107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7KXtjb25zdCB0PW5bZSsrXSxyPW5bZSsrXTtpZihhPj10JiZhPD1yKXtpLmNoYXJjb2RlPWE7aS5sZW5ndGg9cysxO3JldHVybn19fWkuY2hhcmNvZGU9MDtpLmxlbmd0aD0xfWdldENoYXJDb2RlTGVuZ3RoKGUpe2NvbnN0IHQ9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07Zm9yKGxldCB0PTAscj1hLmxlbmd0aDt0PHI7KXtjb25zdCByPWFbdCsrXSxzPWFbdCsrXTtpZihlPj1yJiZlPD1zKXJldHVybiBpKzF9fXJldHVybiAxfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1nZXQgaXNJZGVudGl0eUNNYXAoKXtpZigiSWRlbnRpdHktSCIhPT10aGlzLm5hbWUmJiJJZGVudGl0eS1WIiE9PXRoaXMubmFtZSlyZXR1cm4hMTtpZig2NTUzNiE9PXRoaXMuX21hcC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTw2NTUzNjtlKyspaWYodGhpcy5fbWFwW2VdIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgSWRlbnRpdHlDTWFwIGV4dGVuZHMgQ01hcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7dGhpcy52ZXJ0aWNhbD1lO3RoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXtjb25zdCBlPW5ldyBBcnJheSg2NTUzNik7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWVbdF09dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19ZnVuY3Rpb24gc3RyVG9JbnQoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl0PXQ8PDh8ZS5jaGFyQ29kZUF0KGkpO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBleHBlY3RTdHJpbmcoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIHN0cmluZy4iKX1mdW5jdGlvbiBleHBlY3RJbnQoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhpKTtjb25zdCByPWk7ZS5tYXBPbmUoYSxyKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihpKXx8InN0cmluZyI9PXR5cGVvZiBpKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoaSk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTppO2UubWFwQmZSYW5nZShhLHIsdCl9ZWxzZXtpZighaXNDbWQoaSwiWyIpKWJyZWFrO3tpPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyFpc0NtZChpLCJdIikmJmkhPT1FdDspe3MucHVzaChpKTtpPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShhLHIscyl9fX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VDaWRDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRjaWRjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RJbnQoaSk7Y29uc3Qgcj1pO2UubWFwT25lKGEscil9fWZ1bmN0aW9uIHBhcnNlQ2lkUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PUV0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNpZHJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGkpO2NvbnN0IHM9aTtlLm1hcENpZFJhbmdlKGEscixzKX19ZnVuY3Rpb24gcGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY29kZXNwYWNlcmFuZ2UiKSlyZXR1cm47aWYoInN0cmluZyIhPXR5cGVvZiBpKWJyZWFrO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2lmKCJzdHJpbmciIT10eXBlb2YgaSlicmVhaztjb25zdCByPXN0clRvSW50KGkpO2UuYWRkQ29kZXNwYWNlUmFuZ2UoaS5sZW5ndGgsYSxyKX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlV01vZGUoZSx0KXtjb25zdCBpPXQuZ2V0T2JqKCk7TnVtYmVyLmlzSW50ZWdlcihpKSYmKGUudmVydGljYWw9ISFpKX1mdW5jdGlvbiBwYXJzZUNNYXBOYW1lKGUsdCl7Y29uc3QgaT10LmdldE9iaigpO2kgaW5zdGFuY2VvZiBOYW1lJiYoZS5uYW1lPWkubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxpLGEpe2xldCByLHM7QTpmb3IoOzspdHJ5e2NvbnN0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaSBpbnN0YW5jZW9mIE5hbWUpeyJXTW9kZSI9PT1pLm5hbWU/cGFyc2VXTW9kZShlLHQpOiJDTWFwTmFtZSI9PT1pLm5hbWUmJnBhcnNlQ01hcE5hbWUoZSx0KTtyPWl9ZWxzZSBpZihpIGluc3RhbmNlb2YgQ21kKXN3aXRjaChpLmNtZCl7Y2FzZSJlbmRjbWFwIjpicmVhayBBO2Nhc2UidXNlY21hcCI6ciBpbnN0YW5jZW9mIE5hbWUmJihzPXIubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX0hYSYmcyYmKGE9cyk7cmV0dXJuIGE/ZXh0ZW5kQ01hcChlLGksYSk6ZX1hc3luYyBmdW5jdGlvbiBleHRlbmRDTWFwKGUsdCxpKXtlLnVzZUNNYXA9YXdhaXQgY3JlYXRlQnVpbHRJbkNNYXAoaSx0KTtpZigwPT09ZS5udW1Db2Rlc3BhY2VSYW5nZXMpe2NvbnN0IHQ9ZS51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyllLmNvZGVzcGFjZVJhbmdlc1tpXT10W2ldLnNsaWNlKCk7ZS5udW1Db2Rlc3BhY2VSYW5nZXM9ZS51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlc31lLnVzZUNNYXAuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGkpfSkpO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCFuaS5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6aSxpc0NvbXByZXNzZWQ6YX09YXdhaXQgdChlKSxyPW5ldyBDTWFwKCEwKTtpZihhKXJldHVybihuZXcgQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhpLHIsKGU9PmV4dGVuZENNYXAocix0LGUpKSk7Y29uc3Qgcz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpKSk7cmV0dXJuIHBhcnNlQ01hcChyLHMsdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOml9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBhPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgTGV4ZXIoZSksdCxpKTtyZXR1cm4gYS5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChhLm5hbWUsdCk6YX10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDE3OTUpO2NvbnN0IGdpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sSWk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sY2k9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl0sbGk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxoaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLENpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sQmk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLFFpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxFaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLHVpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gUWk7Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gQmk7Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gQ2k7Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIEVpO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiB1aTtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gbGk7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGhpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IGRpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCIsIjAwMS4wMDAiLCIwMDEuMDAxIiwiMDAxLjAwMiIsIjAwMS4wMDMiLCJCbGFjayIsIkJvbGQiLCJCb29rIiwiTGlnaHQiLCJNZWRpdW0iLCJSZWd1bGFyIiwiUm9tYW4iLCJTZW1pYm9sZCJdLGZpPTM5MSxwaT1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoicmV0dXJuIixtaW46MCx1bmRlZlN0YWNrOiEwfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxtaT1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTtjbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWl9cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkY7dGhpcy5jZmY9dDtjb25zdCBpPXRoaXMucGFyc2VIZWFkZXIoKSxhPXRoaXMucGFyc2VJbmRleChpLmVuZFBvcykscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChzLmVuZFBvcyksbz10aGlzLnBhcnNlRGljdChyLm9iai5nZXQoMCkpLGc9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3Qsbyx0LnN0cmluZ3MpO3QuaGVhZGVyPWkub2JqO3QubmFtZXM9dGhpcy5wYXJzZU5hbWVJbmRleChhLm9iaik7dC5zdHJpbmdzPXRoaXMucGFyc2VTdHJpbmdJbmRleChzLm9iaik7dC50b3BEaWN0PWc7dC5nbG9iYWxTdWJySW5kZXg9bi5vYmo7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHQudG9wRGljdCk7dC5pc0NJREZvbnQ9Zy5oYXNOYW1lKCJST1MiKTtjb25zdCBjPWcuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGw9dGhpcy5wYXJzZUluZGV4KGMpLm9iaixoPWcuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7aCYmKGUuZm9udE1hdHJpeD1oKTtjb25zdCBDPWcuZ2V0QnlOYW1lKCJGb250QkJveCIpO2lmKEMpe2UuYXNjZW50PU1hdGgubWF4KENbM10sQ1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKENbMV0sQ1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IFEsRTtpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoZy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpLHI9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QoYSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3Qocik7dC5mZEFycmF5LnB1c2gocil9RT1udWxsO1E9dGhpcy5wYXJzZUNoYXJzZXRzKGcuZ2V0QnlOYW1lKCJjaGFyc2V0IiksbC5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGcuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGwuY291bnQpfWVsc2V7UT10aGlzLnBhcnNlQ2hhcnNldHMoZy5nZXRCeU5hbWUoImNoYXJzZXQiKSxsLmNvdW50LHQuc3RyaW5ncywhMSk7RT10aGlzLnBhcnNlRW5jb2RpbmcoZy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsUS5jaGFyc2V0KX10LmNoYXJzZXQ9UTt0LmVuY29kaW5nPUU7Y29uc3QgdT10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmwsbG9jYWxTdWJySW5kZXg6Zy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpuLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmcucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXUuY2hhclN0cmluZ3M7dC5zZWFjcz11LnNlYWNzO3Qud2lkdGhzPXUud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJjEhPT1lW2ldOykrK2k7aWYoaT49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1pKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGkpO3RoaXMuYnl0ZXM9ZX1jb25zdCBhPWVbMF0scj1lWzFdLHM9ZVsyXSxuPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKGEscixzLG4pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgaT1lW3QrK107aWYoMzA9PT1pKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBpPSIiO2NvbnN0IGE9MTUscj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0scz1lLmxlbmd0aDtmb3IoO3Q8czspe2NvbnN0IHM9ZVt0KytdLG49cz4+NCxvPTE1JnM7aWYobj09PWEpYnJlYWs7aSs9cltuXTtpZihvPT09YSlicmVhaztpKz1yW29dfXJldHVybiBwYXJzZUZsb2F0KGkpfSgpO2lmKDI4PT09aSl7aT1lW3QrK107aT0oaTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBpfWlmKDI5PT09aSl7aT1lW3QrK107aT1pPDw4fGVbdCsrXTtpPWk8PDh8ZVt0KytdO2k9aTw8OHxlW3QrK107cmV0dXJuIGl9aWYoaT49MzImJmk8PTI0NilyZXR1cm4gaS0xMzk7aWYoaT49MjQ3JiZpPD0yNTApcmV0dXJuIDI1NiooaS0yNDcpK2VbdCsrXSsxMDg7aWYoaT49MjUxJiZpPD0yNTQpcmV0dXJuLTI1NiooaS0yNTEpLWVbdCsrXS0xMDg7d2FybignQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicraSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgaT1bXTtjb25zdCBhPVtdO3Q9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7dDxyOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7YS5wdXNoKFtyLGldKTtpPVtdOysrdH1lbHNlIGkucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIGF9cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxpPXRoaXMuYnl0ZXMsYT1pW2UrK108PDh8aVtlKytdLHI9W107bGV0IHMsbixvPWU7aWYoMCE9PWEpe2NvbnN0IHQ9aVtlKytdLGc9ZSsoYSsxKSp0LTE7Zm9yKHM9MCxuPWErMTtzPG47KytzKXtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDsrK3Ipe2E8PD04O2ErPWlbZSsrXX1yLnB1c2goZythKX1vPXJbYV19Zm9yKHM9MCxuPXIubGVuZ3RoLTE7czxuOysrcyl7Y29uc3QgZT1yW3NdLGE9cltzKzFdO3QuYWRkKGkuc3ViYXJyYXkoZSxhKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpO3QucHVzaChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSk7dC5hZGQoYnl0ZXNUb1N0cmluZyhhKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgZShpKTtmb3IoY29uc3RbZSxpXW9mIHQpYS5zZXRCeUtleShlLGkpO3JldHVybiBhfXBhcnNlQ2hhclN0cmluZyhlLHQsaSxhKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IHI9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrO2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288bjspe2NvbnN0IGc9dFtvKytdO2xldCBjPW51bGw7aWYoMTI9PT1nKXtjb25zdCBlPXRbbysrXTtpZigwPT09ZSl7dFtvLTJdPTEzOTt0W28tMV09MjI7cj0wfWVsc2UgYz1taVtlXX1lbHNlIGlmKDI4PT09Zyl7c1tyXT0odFtvXTw8MjR8dFtvKzFdPDwxNik+PjE2O28rPTI7cisrfWVsc2UgaWYoMTQ9PT1nKXtpZihyPj00KXtyLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPXMuc2xpY2UocixyKzQpO3JldHVybiExfX1jPXBpW2ddfWVsc2UgaWYoZz49MzImJmc8PTI0Nil7c1tyXT1nLTEzOTtyKyt9ZWxzZSBpZihnPj0yNDcmJmc8PTI1NCl7c1tyXT1nPDI1MT8oZy0yNDc8PDgpK3Rbb10rMTA4Oi0oZy0yNTE8PDgpLXRbb10tMTA4O28rKztyKyt9ZWxzZSBpZigyNTU9PT1nKXtzW3JdPSh0W29dPDwyNHx0W28rMV08PDE2fHRbbysyXTw8OHx0W28rM10pLzY1NTM2O28rPTQ7cisrfWVsc2UgaWYoMTk9PT1nfHwyMD09PWcpe2UuaGludHMrPXI+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfW8rPWUuaGludHMrNz4+MztyJT0yO2M9cGlbZ119ZWxzZXtpZigxMD09PWd8fDI5PT09Zyl7Y29uc3QgdD0xMD09PWc/aTphO2lmKCF0KXtjPXBpW2ddO3dhcm4oIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1sZXQgbj0zMjc2ODt0LmNvdW50PDEyNDA/bj0xMDc6dC5jb3VudDwzMzkwMCYmKG49MTEzMSk7Y29uc3Qgbz1zWy0tcl0rbjtpZihvPDB8fG8+PXQuY291bnR8fGlzTmFOKG8pKXtjPXBpW2ddO3dhcm4oIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPXI7ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChvKSxpLGEpKXJldHVybiExO2UuY2FsbERlcHRoLS07cj1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PWcpe2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9aWYoMD09PWcmJm89PT10Lmxlbmd0aCl7dFtvLTFdPTE0O2M9cGlbMTRdfWVsc2V7aWYoOT09PWcpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfWM9cGlbZ119fWlmKGMpe2lmKGMuc3RlbSl7ZS5oaW50cys9cj4+MTtpZigzPT09Z3x8MjM9PT1nKWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09Z3x8MTg9PT1nKSl7d2FybigiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtvLTFdPTE9PT1nPzM6MjN9fWlmKCJtaW4iaW4gYyYmIWUudW5kZWZTdGFjayYmcjxjLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2MuaWQrIjsgYWN0dWFsOiAiK3IrIiwgZXhwZWN0ZWQ6ICIrYy5taW4pO2lmKDA9PT1yKXt0W28tMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmMuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7ci09Yy5taW47cj49MiYmYy5zdGVtP3IlPTI6cj4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7cj4wJiYoZS53aWR0aD1zW3ItMV0pfWlmKCJzdGFja0RlbHRhImluIGMpeyJzdGFja0ZuImluIGMmJmMuc3RhY2tGbihzLHIpO3IrPWMuc3RhY2tEZWx0YX1lbHNlIGlmKGMuc3RhY2tDbGVhcmluZylyPTA7ZWxzZSBpZihjLnJlc2V0U3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITF9ZWxzZSBpZihjLnVuZGVmU3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITA7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITF9fX1uPHQubGVuZ3RoJiZ0LmZpbGwoMTQsbik7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmksZmRTZWxlY3Q6YSxmZEFycmF5OnIscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG49W10sbz1bXSxnPWUuY291bnQ7Zm9yKGxldCBjPTA7YzxnO2MrKyl7Y29uc3QgZz1lLmdldChjKSxsPXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGg9ITAsQz1udWxsLFE9cztpZihhJiZyLmxlbmd0aCl7Y29uc3QgZT1hLmdldEZESW5kZXgoYyk7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2g9ITF9aWYoZT49ci5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2g9ITF9aWYoaCl7UT1yW2VdLnByaXZhdGVEaWN0O0M9US5zdWJyc0luZGV4fX1lbHNlIHQmJihDPXQpO2gmJihoPXRoaXMucGFyc2VDaGFyU3RyaW5nKGwsZyxDLGkpKTtpZihudWxsIT09bC53aWR0aCl7Y29uc3QgZT1RLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bY109ZStsLndpZHRofWVsc2V7Y29uc3QgZT1RLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bY109ZX1udWxsIT09bC5zZWFjJiYobltjXT1sLnNlYWMpO2h8fGUuc2V0KGMsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm4sd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGk9dFswXSxhPXRbMV07aWYoMD09PWl8fGE+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHI9YStpLHM9dGhpcy5ieXRlcy5zdWJhcnJheShhLHIpLG49dGhpcy5wYXJzZURpY3Qocyksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsbixlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bzswPT09by5nZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIpJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKCFvLmdldEJ5TmFtZSgiU3VicnMiKSlyZXR1cm47Y29uc3QgZz1vLmdldEJ5TmFtZSgiU3VicnMiKSxjPWErZztpZigwPT09Z3x8Yz49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgbD10aGlzLnBhcnNlSW5kZXgoYyk7by5zdWJyc0luZGV4PWwub2JqfXBhcnNlQ2hhcnNldHMoZSx0LGksYSl7aWYoMD09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLklTT19BRE9CRSxnaSk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVCxJaSk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVF9TVUJTRVQsY2kpO2NvbnN0IHI9dGhpcy5ieXRlcyxzPWUsbj1yW2UrK10sbz1bYT8wOiIubm90ZGVmIl07bGV0IGcsYyxsO3QtPTE7c3dpdGNoKG4pe2Nhc2UgMDpmb3IobD0wO2w8dDtsKyspe2c9cltlKytdPDw4fHJbZSsrXTtvLnB1c2goYT9nOmkuZ2V0KGcpKX1icmVhaztjYXNlIDE6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTtmb3IobD0wO2w8PWM7bCsrKW8ucHVzaChhP2crKzppLmdldChnKyspKX1icmVhaztjYXNlIDI6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTw8OHxyW2UrK107Zm9yKGw9MDtsPD1jO2wrKylvLnB1c2goYT9nKys6aS5nZXQoZysrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY2hhcnNldCBmb3JtYXQiKX1jb25zdCBoPWUsQz1yLnN1YmFycmF5KHMsaCk7cmV0dXJuIG5ldyBDRkZDaGFyc2V0KCExLG4sbyxDKX1wYXJzZUVuY29kaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPXRoaXMuYnl0ZXM7bGV0IG4sbyxnLGM9ITEsbD1udWxsO2lmKDA9PT1lfHwxPT09ZSl7Yz0hMDtuPWU7Y29uc3QgdD1lP2xpOkJpO2ZvcihvPTAsZz1hLmxlbmd0aDtvPGc7bysrKXtjb25zdCBlPXQuaW5kZXhPZihhW29dKTstMSE9PWUmJihyW2VdPW8pfX1lbHNle2NvbnN0IHQ9ZTtuPXNbZSsrXTtzd2l0Y2goMTI3Jm4pe2Nhc2UgMDpjb25zdCB0PXNbZSsrXTtmb3Iobz0xO288PXQ7bysrKXJbc1tlKytdXT1vO2JyZWFrO2Nhc2UgMTpjb25zdCBpPXNbZSsrXTtsZXQgYT0xO2ZvcihvPTA7bzxpO28rKyl7Y29uc3QgdD1zW2UrK10saT1zW2UrK107Zm9yKGxldCBlPXQ7ZTw9dCtpO2UrKylyW2VdPWErK31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICR7bn0gaW4gQ0ZGYCl9Y29uc3QgZz1lO2lmKDEyOCZuKXtzW3RdJj0xMjc7IWZ1bmN0aW9uIHJlYWRTdXBwbGVtZW50KCl7Y29uc3QgdD1zW2UrK107Zm9yKG89MDtvPHQ7bysrKXtjb25zdCB0PXNbZSsrXSxuPShzW2UrK108PDgpKygyNTUmc1tlKytdKTtyW3RdPWEuaW5kZXhPZihpLmdldChuKSl9fSgpfWw9cy5zdWJhcnJheSh0LGcpfW4mPTEyNztyZXR1cm4gbmV3IENGRkVuY29kaW5nKGMsbixyLGwpfXBhcnNlRkRTZWxlY3QoZSx0KXtjb25zdCBpPXRoaXMuYnl0ZXMsYT1pW2UrK10scj1bXTtsZXQgcztzd2l0Y2goYSl7Y2FzZSAwOmZvcihzPTA7czx0Oysrcyl7Y29uc3QgdD1pW2UrK107ci5wdXNoKHQpfWJyZWFrO2Nhc2UgMzpjb25zdCBuPWlbZSsrXTw8OHxpW2UrK107Zm9yKHM9MDtzPG47KytzKXtsZXQgdD1pW2UrK108PDh8aVtlKytdO2lmKDA9PT1zJiYwIT09dCl7d2FybigicGFyc2VGRFNlbGVjdDogVGhlIGZpcnN0IHJhbmdlIG11c3QgaGF2ZSBhIGZpcnN0IEdJRCBvZiAwIC0tIHRyeWluZyB0byByZWNvdmVyLiIpO3Q9MH1jb25zdCBhPWlbZSsrXSxuPWlbZV08PDh8aVtlKzFdO2ZvcihsZXQgZT10O2U8bjsrK2Upci5wdXNoKGEpfWUrPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke2F9Ii5gKX1pZihyLmxlbmd0aCE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IENGRkZEU2VsZWN0KGEscil9fWNsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19Y2xhc3MgQ0ZGSGVhZGVye2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMubWFqb3I9ZTt0aGlzLm1pbm9yPXQ7dGhpcy5oZHJTaXplPWk7dGhpcy5vZmZTaXplPWF9fWNsYXNzIENGRlN0cmluZ3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmluZ3M9W119Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/ZGlbZV06ZS1maTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1maV06ZGlbMF19Z2V0U0lEKGUpe2xldCB0PWRpLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrZmk6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtjb25zdHJ1Y3Rvcigpe3RoaXMub2JqZWN0cz1bXTt0aGlzLmxlbmd0aD0wfWFkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgaSBvZiB0KWlmKGlzTmFOKGkpKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBpPXRoaXMudHlwZXNbZV07Im51bSIhPT1pJiYic2lkIiE9PWkmJiJvZmZzZXQiIT09aXx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoaVswXSk/KGlbMF1bMF08PDgpK2lbMF1bMV06aVswXTt0LmtleVRvTmFtZU1hcFtlXT1pWzFdO3QubmFtZVRvS2V5TWFwW2lbMV1dPWU7dC50eXBlc1tlXT1pWzJdO3QuZGVmYXVsdHNbZV09aVszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShpWzBdKT9pWzBdOltpWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IHlpPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoeWkpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IHdpPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHdpKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGUHJpdmF0ZURpY3QudGFibGVzLGUpO3RoaXMuc3VicnNJbmRleD1udWxsfX1jb25zdCBiaT17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7Y29uc3RydWN0b3IoKXt0aGlzLm9mZnNldHM9T2JqZWN0LmNyZWF0ZShudWxsKX1pc1RyYWNraW5nKGUpe3JldHVybiBlIGluIHRoaXMub2Zmc2V0c310cmFjayhlLHQpe2lmKGUgaW4gdGhpcy5vZmZzZXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7dGhpcy5vZmZzZXRzW2VdPXR9b2Zmc2V0KGUpe2Zvcihjb25zdCB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9c2V0RW50cnlMb2NhdGlvbihlLHQsaSl7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IGE9aS5kYXRhLHI9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7Y29uc3QgaT01KmUrcixzPWkrMSxuPWkrMixvPWkrMyxnPWkrNDtpZigyOSE9PWFbaV18fDAhPT1hW3NdfHwwIT09YVtuXXx8MCE9PWFbb118fDAhPT1hW2ddKXRocm93IG5ldyBGb3JtYXRFcnJvcigid3JpdGluZyB0byBhbiBvZmZzZXQgdGhhdCBpcyBub3QgZW1wdHkiKTtjb25zdCBjPXRbZV07YVtpXT0yOTthW3NdPWM+PjI0JjI1NTthW25dPWM+PjE2JjI1NTthW29dPWM+PjgmMjU1O2FbZ109MjU1JmN9fX1jbGFzcyBDRkZDb21waWxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9e2RhdGE6W10sbGVuZ3RoOjAsYWRkKGUpe3RyeXt0aGlzLmRhdGEucHVzaCguLi5lKX1jYXRjaHt0aGlzLmRhdGE9dGhpcy5kYXRhLmNvbmNhdChlKX10aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RofX0saT10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKGkpO2NvbnN0IGE9dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3QuYWRkKGEpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IGkgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO2kuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLGkuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTtpLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHI9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3I/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBzPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgbj1zLnRyYWNrZXJzWzBdLG89dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKG8pO2NvbnN0IGc9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3QuYWRkKGcpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZCluLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3QgaT10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtuLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3QuYWRkKGkpfWNvbnN0IGM9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO24uc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KTt0LmFkZChjKTtjb25zdCBsPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO24uc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5hZGQobCk7aWYoZS5pc0NJREZvbnQpe24uc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3QgaT10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChpKTtzPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBhPXMudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxhLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbbl0sdCk7dC5hZGQoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBpPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoaSl7Y29uc3QgYT1wYXJzZUZsb2F0KCIxZSIrKChpWzJdPytpWzJdOjApK2lbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKmEpL2EpLnRvU3RyaW5nKCl9bGV0IGEscixzPSIiO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7KythKXtjb25zdCBlPXRbYV07cys9ImUiPT09ZT8iLSI9PT10WysrYV0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfXMrPTEmcy5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgbj1bMzBdO2ZvcihhPTAscj1zLmxlbmd0aDthPHI7YSs9MiluLnB1c2gocGFyc2VJbnQocy5zdWJzdHJpbmcoYSxhKzIpLDE2KSk7cmV0dXJuIG59ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGkubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWlbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7YVt0XT1lfWE9YS5qb2luKCIiKTsiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcj1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IHMgb2YgZSl7aWYoaSl7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO3MucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO3MucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO3MucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixuPXRoaXMuY29tcGlsZURpY3QocyxlKTthLnB1c2goZSk7ci5hZGQobik7ZS5vZmZzZXQodCl9cj10aGlzLmNvbXBpbGVJbmRleChyLGEpO3JldHVybnt0cmFja2VyczphLG91dHB1dDpyfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IHI9ZVthXSxzPXIucHJpdmF0ZURpY3Q7aWYoIXN8fCFyLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbj1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QocyxuKTtsZXQgZz1pLmxlbmd0aDtuLm9mZnNldChnKTtvLmxlbmd0aHx8KGc9MCk7dFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsZ10saSk7aS5hZGQobyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtuLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbby5sZW5ndGhdLGkpO2kuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUub3JkZXIpe2lmKCEoYSBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IHI9ZS52YWx1ZXNbYV0scz1lLnR5cGVzW2FdO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtpZigwIT09ci5sZW5ndGgpe2ZvcihsZXQgbj0wLG89cy5sZW5ndGg7bjxvOysrbil7Y29uc3Qgbz1zW25dLGc9cltuXTtzd2l0Y2gobyl7Y2FzZSJudW0iOmNhc2Uic2lkIjppLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoZykpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW2FdO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGkubGVuZ3RoKTtpLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6aS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGcpKTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDsrK2UpaS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKHJbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBkYXRhIHR5cGUgb2YgJHtvfWApfX1pLnB1c2goLi4uZS5vcGNvZGVzW2FdKX19cmV0dXJuIGl9Y29tcGlsZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpdC5hZGQoc3RyaW5nVG9CeXRlcyhpKSk7cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyU3RyaW5ncyhlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IobGV0IGk9MDtpPGUuY291bnQ7aSsrKXtjb25zdCBhPWUuZ2V0KGkpOzAhPT1hLmxlbmd0aD90LmFkZChhKTp0LmFkZChuZXcgVWludDhBcnJheShbMTM5LDE0XSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhcnNldChlLHQsaSxhKXtsZXQgcjtjb25zdCBzPXQtMTtpZihhKXI9bmV3IFVpbnQ4QXJyYXkoWzIsMCwwLHM+PjgmMjU1LDI1NSZzXSk7ZWxzZXtyPW5ldyBVaW50OEFycmF5KDErMipzKTtyWzBdPTA7bGV0IHQ9MDtjb25zdCBhPWUuY2hhcnNldC5sZW5ndGg7bGV0IG49ITE7Zm9yKGxldCBzPTE7czxyLmxlbmd0aDtzKz0yKXtsZXQgbz0wO2lmKHQ8YSl7Y29uc3QgYT1lLmNoYXJzZXRbdCsrXTtvPWkuZ2V0U0lEKGEpO2lmKC0xPT09byl7bz0wO2lmKCFuKXtuPSEwO3dhcm4oYENvdWxkbid0IGZpbmQgJHthfSBpbiBDRkYgc3RyaW5nc2ApfX19cltzXT1vPj44JjI1NTtyW3MrMV09MjU1Jm99fXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KHIpfWNvbXBpbGVFbmNvZGluZyhlKXtyZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShlLnJhdyl9Y29tcGlsZUZEU2VsZWN0KGUpe2NvbnN0IHQ9ZS5mb3JtYXQ7bGV0IGksYTtzd2l0Y2godCl7Y2FzZSAwOmk9bmV3IFVpbnQ4QXJyYXkoMStlLmZkU2VsZWN0Lmxlbmd0aCk7aVswXT10O2ZvcihhPTA7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspaVthKzFdPWUuZmRTZWxlY3RbYV07YnJlYWs7Y2FzZSAzOmNvbnN0IHI9MDtsZXQgcz1lLmZkU2VsZWN0WzBdO2NvbnN0IG49W3QsMCwwLHI+PjgmMjU1LDI1NSZyLHNdO2ZvcihhPTE7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspe2NvbnN0IHQ9ZS5mZFNlbGVjdFthXTtpZih0IT09cyl7bi5wdXNoKGE+PjgmMjU1LDI1NSZhLHQpO3M9dH19Y29uc3Qgbz0obi5sZW5ndGgtMykvMztuWzFdPW8+PjgmMjU1O25bMl09MjU1Jm87bi5wdXNoKGE+PjgmMjU1LDI1NSZhKTtpPW5ldyBVaW50OEFycmF5KG4pfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGkpfWNvbXBpbGVUeXBlZEFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUpfWNvbXBpbGVJbmRleChlLHQ9W10pe2NvbnN0IGk9ZS5vYmplY3RzLGE9aS5sZW5ndGg7aWYoMD09PWEpcmV0dXJuWzAsMF07Y29uc3Qgcj1bYT4+OCYyNTUsMjU1JmFdO2xldCBzLG4sbz0xO2ZvcihzPTA7czxhOysrcylvKz1pW3NdLmxlbmd0aDtuPW88MjU2PzE6bzw2NTUzNj8yOm88MTY3NzcyMTY/Mzo0O3IucHVzaChuKTtsZXQgZz0xO2ZvcihzPTA7czxhKzE7cysrKXsxPT09bj9yLnB1c2goMjU1JmcpOjI9PT1uP3IucHVzaChnPj44JjI1NSwyNTUmZyk6Mz09PW4/ci5wdXNoKGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyk6ci5wdXNoKGc+Pj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnKTtpW3NdJiYoZys9aVtzXS5sZW5ndGgpfWZvcihzPTA7czxhO3MrKyl7dFtzXSYmdFtzXS5vZmZzZXQoci5sZW5ndGgpO3IucHVzaCguLi5pW3NdKX1yZXR1cm4gcn19Y29uc3QgRGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSksRmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTMyO2UuYTE9OTk4NTtlLmEyPTk5ODY7ZS5hMjAyPTk5ODc7ZS5hMz05OTg4O2UuYTQ9OTc0MjtlLmE1PTk5OTA7ZS5hMTE5PTk5OTE7ZS5hMTE4PTk5OTI7ZS5hMTE3PTk5OTM7ZS5hMTE9OTc1NTtlLmExMj05NzU4O2UuYTEzPTk5OTY7ZS5hMTQ9OTk5NztlLmExNT05OTk4O2UuYTE2PTk5OTk7ZS5hMTA1PTFlNDtlLmExNz0xMDAwMTtlLmExOD0xMDAwMjtlLmExOT0xMDAwMztlLmEyMD0xMDAwNDtlLmEyMT0xMDAwNTtlLmEyMj0xMDAwNjtlLmEyMz0xMDAwNztlLmEyND0xMDAwODtlLmEyNT0xMDAwOTtlLmEyNj0xMDAxMDtlLmEyNz0xMDAxMTtlLmEyOD0xMDAxMjtlLmE2PTEwMDEzO2UuYTc9MTAwMTQ7ZS5hOD0xMDAxNTtlLmE5PTEwMDE2O2UuYTEwPTEwMDE3O2UuYTI5PTEwMDE4O2UuYTMwPTEwMDE5O2UuYTMxPTEwMDIwO2UuYTMyPTEwMDIxO2UuYTMzPTEwMDIyO2UuYTM0PTEwMDIzO2UuYTM1PTk3MzM7ZS5hMzY9MTAwMjU7ZS5hMzc9MTAwMjY7ZS5hMzg9MTAwMjc7ZS5hMzk9MTAwMjg7ZS5hNDA9MTAwMjk7ZS5hNDE9MTAwMzA7ZS5hNDI9MTAwMzE7ZS5hNDM9MTAwMzI7ZS5hNDQ9MTAwMzM7ZS5hNDU9MTAwMzQ7ZS5hNDY9MTAwMzU7ZS5hNDc9MTAwMzY7ZS5hNDg9MTAwMzc7ZS5hNDk9MTAwMzg7ZS5hNTA9MTAwMzk7ZS5hNTE9MTAwNDA7ZS5hNTI9MTAwNDE7ZS5hNTM9MTAwNDI7ZS5hNTQ9MTAwNDM7ZS5hNTU9MTAwNDQ7ZS5hNTY9MTAwNDU7ZS5hNTc9MTAwNDY7ZS5hNTg9MTAwNDc7ZS5hNTk9MTAwNDg7ZS5hNjA9MTAwNDk7ZS5hNjE9MTAwNTA7ZS5hNjI9MTAwNTE7ZS5hNjM9MTAwNTI7ZS5hNjQ9MTAwNTM7ZS5hNjU9MTAwNTQ7ZS5hNjY9MTAwNTU7ZS5hNjc9MTAwNTY7ZS5hNjg9MTAwNTc7ZS5hNjk9MTAwNTg7ZS5hNzA9MTAwNTk7ZS5hNzE9OTY3OTtlLmE3Mj0xMDA2MTtlLmE3Mz05NjMyO2UuYTc0PTEwMDYzO2UuYTIwMz0xMDA2NDtlLmE3NT0xMDA2NTtlLmEyMDQ9MTAwNjY7ZS5hNzY9OTY1MDtlLmE3Nz05NjYwO2UuYTc4PTk2NzA7ZS5hNzk9MTAwNzA7ZS5hODE9OTY4NztlLmE4Mj0xMDA3MjtlLmE4Mz0xMDA3MztlLmE4ND0xMDA3NDtlLmE5Nz0xMDA3NTtlLmE5OD0xMDA3NjtlLmE5OT0xMDA3NztlLmExMDA9MTAwNzg7ZS5hMTAxPTEwMDgxO2UuYTEwMj0xMDA4MjtlLmExMDM9MTAwODM7ZS5hMTA0PTEwMDg0O2UuYTEwNj0xMDA4NTtlLmExMDc9MTAwODY7ZS5hMTA4PTEwMDg3O2UuYTExMj05ODI3O2UuYTExMT05ODMwO2UuYTExMD05ODI5O2UuYTEwOT05ODI0O2UuYTEyMD05MzEyO2UuYTEyMT05MzEzO2UuYTEyMj05MzE0O2UuYTEyMz05MzE1O2UuYTEyND05MzE2O2UuYTEyNT05MzE3O2UuYTEyNj05MzE4O2UuYTEyNz05MzE5O2UuYTEyOD05MzIwO2UuYTEyOT05MzIxO2UuYTEzMD0xMDEwMjtlLmExMzE9MTAxMDM7ZS5hMTMyPTEwMTA0O2UuYTEzMz0xMDEwNTtlLmExMzQ9MTAxMDY7ZS5hMTM1PTEwMTA3O2UuYTEzNj0xMDEwODtlLmExMzc9MTAxMDk7ZS5hMTM4PTEwMTEwO2UuYTEzOT0xMDExMTtlLmExNDA9MTAxMTI7ZS5hMTQxPTEwMTEzO2UuYTE0Mj0xMDExNDtlLmExNDM9MTAxMTU7ZS5hMTQ0PTEwMTE2O2UuYTE0NT0xMDExNztlLmExNDY9MTAxMTg7ZS5hMTQ3PTEwMTE5O2UuYTE0OD0xMDEyMDtlLmExNDk9MTAxMjE7ZS5hMTUwPTEwMTIyO2UuYTE1MT0xMDEyMztlLmExNTI9MTAxMjQ7ZS5hMTUzPTEwMTI1O2UuYTE1ND0xMDEyNjtlLmExNTU9MTAxMjc7ZS5hMTU2PTEwMTI4O2UuYTE1Nz0xMDEyOTtlLmExNTg9MTAxMzA7ZS5hMTU5PTEwMTMxO2UuYTE2MD0xMDEzMjtlLmExNjE9ODU5NDtlLmExNjM9ODU5NjtlLmExNjQ9ODU5NztlLmExOTY9MTAxMzY7ZS5hMTY1PTEwMTM3O2UuYTE5Mj0xMDEzODtlLmExNjY9MTAxMzk7ZS5hMTY3PTEwMTQwO2UuYTE2OD0xMDE0MTtlLmExNjk9MTAxNDI7ZS5hMTcwPTEwMTQzO2UuYTE3MT0xMDE0NDtlLmExNzI9MTAxNDU7ZS5hMTczPTEwMTQ2O2UuYTE2Mj0xMDE0NztlLmExNzQ9MTAxNDg7ZS5hMTc1PTEwMTQ5O2UuYTE3Nj0xMDE1MDtlLmExNzc9MTAxNTE7ZS5hMTc4PTEwMTUyO2UuYTE3OT0xMDE1MztlLmExOTM9MTAxNTQ7ZS5hMTgwPTEwMTU1O2UuYTE5OT0xMDE1NjtlLmExODE9MTAxNTc7ZS5hMjAwPTEwMTU4O2UuYTE4Mj0xMDE1OTtlLmEyMDE9MTAxNjE7ZS5hMTgzPTEwMTYyO2UuYTE4ND0xMDE2MztlLmExOTc9MTAxNjQ7ZS5hMTg1PTEwMTY1O2UuYTE5ND0xMDE2NjtlLmExOTg9MTAxNjc7ZS5hMTg2PTEwMTY4O2UuYTE5NT0xMDE2OTtlLmExODc9MTAxNzA7ZS5hMTg4PTEwMTcxO2UuYTE4OT0xMDE3MjtlLmExOTA9MTAxNzM7ZS5hMTkxPTEwMTc0O2UuYTg5PTEwMDg4O2UuYTkwPTEwMDg5O2UuYTkzPTEwMDkwO2UuYTk0PTEwMDkxO2UuYTkxPTEwMDkyO2UuYTkyPTEwMDkzO2UuYTIwNT0xMDA5NDtlLmE4NT0xMDA5NTtlLmEyMDY9MTAwOTY7ZS5hODY9MTAwOTc7ZS5hODc9MTAwOTg7ZS5hODg9MTAwOTk7ZS5hOTU9MTAxMDA7ZS5hOTY9MTAxMDE7ZVsiLm5vdGRlZiJdPTB9KSksU2k9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzYzNzIxXT0xNjk7ZVs2MzE5M109MTY5O2VbNjM3MjBdPTE3NDtlWzYzMTk0XT0xNzQ7ZVs2MzcyMl09ODQ4MjtlWzYzMTk1XT04NDgyO2VbNjM3MjldPTkxMjc7ZVs2MzczMF09OTEyODtlWzYzNzMxXT05MTI5O2VbNjM3NDBdPTkxMzE7ZVs2Mzc0MV09OTEzMjtlWzYzNzQyXT05MTMzO2VbNjM3MjZdPTkxMjE7ZVs2MzcyN109OTEyMjtlWzYzNzI4XT05MTIzO2VbNjM3MzddPTkxMjQ7ZVs2MzczOF09OTEyNTtlWzYzNzM5XT05MTI2O2VbNjM3MjNdPTkxMTU7ZVs2MzcyNF09OTExNjtlWzYzNzI1XT05MTE3O2VbNjM3MzRdPTkxMTg7ZVs2MzczNV09OTExOTtlWzYzNzM2XT05MTIwfSkpO2Z1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBpPXRbZV07aWYodm9pZCAwIT09aSlyZXR1cm4gaTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKWE9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO2E9ZS5zdWJzdHJpbmcoMSl9aWYoYT09PWEudG9VcHBlckNhc2UoKSl7aT1wYXJzZUludChhLDE2KTtpZihpPj0wKXJldHVybiBpfX1yZXR1cm4tMX1jb25zdCBraT1bWzAsMTI3XSxbMTI4LDI1NV0sWzI1NiwzODNdLFszODQsNTkxXSxbNTkyLDY4Nyw3NDI0LDc1NTEsNzU1Miw3NjE1XSxbNjg4LDc2Nyw0Mjc1Miw0Mjc4M10sWzc2OCw4NzksNzYxNiw3Njc5XSxbODgwLDEwMjNdLFsxMTM5MiwxMTUxOV0sWzEwMjQsMTI3OSwxMjgwLDEzMjcsMTE3NDQsMTE3NzUsNDI1NjAsNDI2NTVdLFsxMzI4LDE0MjNdLFsxNDI0LDE1MzVdLFs0MjI0MCw0MjU1OV0sWzE1MzYsMTc5MSwxODcyLDE5MTldLFsxOTg0LDIwNDddLFsyMzA0LDI0MzFdLFsyNDMyLDI1NTldLFsyNTYwLDI2ODddLFsyNjg4LDI4MTVdLFsyODE2LDI5NDNdLFsyOTQ0LDMwNzFdLFszMDcyLDMxOTldLFszMjAwLDMzMjddLFszMzI4LDM0NTVdLFszNTg0LDM3MTFdLFszNzEyLDM4MzldLFs0MjU2LDQzNTEsMTE1MjAsMTE1NjddLFs2OTEyLDcwMzldLFs0MzUyLDQ2MDddLFs3NjgwLDc5MzUsMTEzNjAsMTEzOTEsNDI3ODQsNDMwMDddLFs3OTM2LDgxOTFdLFs4MTkyLDgzMDMsMTE3NzYsMTE5MDNdLFs4MzA0LDgzNTFdLFs4MzUyLDgzOTldLFs4NDAwLDg0NDddLFs4NDQ4LDg1MjddLFs4NTI4LDg1OTFdLFs4NTkyLDg3MDMsMTAyMjQsMTAyMzksMTA0OTYsMTA2MjMsMTEwMDgsMTEyNjNdLFs4NzA0LDg5NTksMTA3NTIsMTEwMDcsMTAxNzYsMTAyMjMsMTA2MjQsMTA3NTFdLFs4OTYwLDkyMTVdLFs5MjE2LDkyNzldLFs5MjgwLDkzMTFdLFs5MzEyLDk0NzFdLFs5NDcyLDk1OTldLFs5NjAwLDk2MzFdLFs5NjMyLDk3MjddLFs5NzI4LDk5ODNdLFs5OTg0LDEwMTc1XSxbMTIyODgsMTIzNTFdLFsxMjM1MiwxMjQ0N10sWzEyNDQ4LDEyNTQzLDEyNzg0LDEyNzk5XSxbMTI1NDQsMTI1OTEsMTI3MDQsMTI3MzVdLFsxMjU5MiwxMjY4N10sWzQzMDcyLDQzMTM1XSxbMTI4MDAsMTMwNTVdLFsxMzA1NiwxMzMxMV0sWzQ0MDMyLDU1MjE1XSxbNTUyOTYsNTczNDNdLFs2Nzg0MCw2Nzg3MV0sWzE5OTY4LDQwOTU5LDExOTA0LDEyMDMxLDEyMDMyLDEyMjU1LDEyMjcyLDEyMjg3LDEzMzEyLDE5OTAzLDEzMTA3MiwxNzM3OTEsMTI2ODgsMTI3MDNdLFs1NzM0NCw2Mzc0M10sWzEyNzM2LDEyNzgzLDYzNzQ0LDY0MjU1LDE5NDU2MCwxOTUxMDNdLFs2NDI1Niw2NDMzNV0sWzY0MzM2LDY1MDIzXSxbNjUwNTYsNjUwNzFdLFs2NTA0MCw2NTA1NV0sWzY1MTA0LDY1MTM1XSxbNjUxMzYsNjUyNzldLFs2NTI4MCw2NTUxOV0sWzY1NTIwLDY1NTM1XSxbMzg0MCw0MDk1XSxbMTc5MiwxODcxXSxbMTkyMCwxOTgzXSxbMzQ1NiwzNTgzXSxbNDA5Niw0MjU1XSxbNDYwOCw0OTkxLDQ5OTIsNTAyMywxMTY0OCwxMTc0M10sWzUwMjQsNTExOV0sWzUxMjAsNTc1OV0sWzU3NjAsNTc5MV0sWzU3OTIsNTg4N10sWzYwMTYsNjE0M10sWzYxNDQsNjMxOV0sWzEwMjQwLDEwNDk1XSxbNDA5NjAsNDIxMjddLFs1ODg4LDU5MTksNTkyMCw1OTUxLDU5NTIsNTk4Myw1OTg0LDYwMTVdLFs2NjMwNCw2NjM1MV0sWzY2MzUyLDY2MzgzXSxbNjY1NjAsNjY2MzldLFsxMTg3ODQsMTE5MDM5LDExOTA0MCwxMTkyOTUsMTE5Mjk2LDExOTM3NV0sWzExOTgwOCwxMjA4MzFdLFsxMDQ0NDgwLDEwNDg1NzNdLFs2NTAyNCw2NTAzOSw5MTc3NjAsOTE3OTk5XSxbOTE3NTA0LDkxNzYzMV0sWzY0MDAsNjQ3OV0sWzY0ODAsNjUyN10sWzY1MjgsNjYyM10sWzY2NTYsNjY4N10sWzExMjY0LDExMzU5XSxbMTE1NjgsMTE2NDddLFsxOTkwNCwxOTk2N10sWzQzMDA4LDQzMDU1XSxbNjU1MzYsNjU2NjMsNjU2NjQsNjU3OTEsNjU3OTIsNjU4NTVdLFs2NTg1Niw2NTkzNV0sWzY2NDMyLDY2NDYzXSxbNjY0NjQsNjY1MjddLFs2NjY0MCw2NjY4N10sWzY2Njg4LDY2NzM1XSxbNjc1ODQsNjc2NDddLFs2ODA5Niw2ODE5MV0sWzExOTU1MiwxMTk2NDddLFs3MzcyOCw3NDc1MSw3NDc1Miw3NDg3OV0sWzExOTY0OCwxMTk2NzldLFs3MDQwLDcxMDNdLFs3MTY4LDcyNDddLFs3MjQ4LDcyOTVdLFs0MzEzNiw0MzIzMV0sWzQzMjY0LDQzMzExXSxbNDMzMTIsNDMzNTldLFs0MzUyMCw0MzYxNV0sWzY1OTM2LDY1OTk5XSxbNjZlMyw2NjA0N10sWzY2MjA4LDY2MjcxLDY2MTc2LDY2MjA3LDY3ODcyLDY3OTAzXSxbMTI3MDI0LDEyNzEzNSwxMjY5NzYsMTI3MDIzXV07ZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKGUsdD0tMSl7aWYoLTEhPT10KXtjb25zdCBpPWtpW3RdO2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErPTIpaWYoZT49aVthXSYmZTw9aVthKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGk9a2kubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9a2lbdF07Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSs9MilpZihlPj1pW2FdJiZlPD1pW2ErMV0pcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgUmk9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLE5pPW5ldyBNYXA7Y29uc3QgR2k9ITAsTWk9MSx4aT0yLEhpPTQsSmk9MzIsdmk9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGk9Z2V0VW5pY29kZUZvckdseXBoKGUsdCk7aWYoLTEhPT1pKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWkpcmV0dXJuIGU7aW5mbygiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcixzLG47Y29uc3Qgbz0hIShlLmZsYWdzJkhpKTtpZihlLmlzSW50ZXJuYWxGb250KXtuPXQ7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl7cj1pLmluZGV4T2YobltzXSk7YVtzXT1yPj0wP3I6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe249Z2V0RW5jb2RpbmcoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKXtyPWkuaW5kZXhPZihuW3NdKTthW3NdPXI+PTA/cjowfX1lbHNlIGlmKG8pZm9yKHMgaW4gdClhW3NdPXRbc107ZWxzZXtuPUJpO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspe3I9aS5pbmRleE9mKG5bc10pO2Fbc109cj49MD9yOjB9fWNvbnN0IGc9ZS5kaWZmZXJlbmNlcztsZXQgYztpZihnKWZvcihzIGluIGcpe2NvbnN0IGU9Z1tzXTtyPWkuaW5kZXhPZihlKTtpZigtMT09PXIpe2N8fChjPURpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGMpO3QhPT1lJiYocj1pLmluZGV4T2YodCkpfWFbc109cj49MD9yOjB9cmV0dXJuIGF9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9Y29uc3QgWWk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChlPT57ZVs4MjExXT02NTA3NDtlWzgyMTJdPTY1MDczO2VbODIyOV09NjUwNzI7ZVs4MjMwXT02NTA0OTtlWzEyMjg5XT02NTA0MTtlWzEyMjkwXT02NTA0MjtlWzEyMjk2XT02NTA4NztlWzEyMjk3XT02NTA4ODtlWzEyMjk4XT02NTA4NTtlWzEyMjk5XT02NTA4NjtlWzEyMzAwXT02NTA4OTtlWzEyMzAxXT02NTA5MDtlWzEyMzAyXT02NTA5MTtlWzEyMzAzXT02NTA5MjtlWzEyMzA0XT02NTA4MztlWzEyMzA1XT02NTA4NDtlWzEyMzA4XT02NTA4MTtlWzEyMzA5XT02NTA4MjtlWzEyMzEwXT02NTA0NztlWzEyMzExXT02NTA0ODtlWzY1MTAzXT02NTA3NjtlWzY1MjgxXT02NTA0NTtlWzY1Mjg4XT02NTA3NztlWzY1Mjg5XT02NTA3ODtlWzY1MjkyXT02NTA0MDtlWzY1MzA2XT02NTA0MztlWzY1MzA3XT02NTA0NDtlWzY1MzExXT02NTA0NjtlWzY1MzM5XT02NTA5NTtlWzY1MzQxXT02NTA5NjtlWzY1MzQzXT02NTA3NTtlWzY1MzcxXT02NTA3OTtlWzY1MzczXT02NTA4MH0pKSxLaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpLFRpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiI7ZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiI7ZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiI7ZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIjtlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiO2UuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiO2UuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiI7ZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSkpLHFpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiO2VbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIjtlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIjtlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCI7ZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiO2VbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyI7ZS5HaWxsU2Fuc01UPSJIZWx2ZXRpY2EiO2VbIkdpbGxTYW5zTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiR2lsbFNhbnNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiR2lsbFNhbnNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuSW1wYWN0PSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EifSkpLE9pPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiQWRvYmUgSmVuc29uIl09ITA7ZVsiQWRvYmUgVGV4dCJdPSEwO2UuQWxiZXJ0dXM9ITA7ZS5BbGR1cz0hMDtlLkFsZXhhbmRyaWE9ITA7ZS5BbGdlcmlhbj0hMDtlWyJBbWVyaWNhbiBUeXBld3JpdGVyIl09ITA7ZS5BbnRpcXVhPSEwO2UuQXBleD0hMDtlLkFybm89ITA7ZS5Bc3Rlcj0hMDtlLkF1cm9yYT0hMDtlLkJhc2tlcnZpbGxlPSEwO2UuQmVsbD0hMDtlLkJlbWJvPSEwO2VbIkJlbWJvIFNjaG9vbGJvb2siXT0hMDtlLkJlbmd1aWF0PSEwO2VbIkJlcmtlbGV5IE9sZCBTdHlsZSJdPSEwO2VbIkJlcm5oYXJkIE1vZGVybiJdPSEwO2VbIkJlcnRob2xkIENpdHkiXT0hMDtlLkJvZG9uaT0hMDtlWyJCYXVlciBCb2RvbmkiXT0hMDtlWyJCb29rIEFudGlxdWEiXT0hMDtlLkJvb2ttYW49ITA7ZVsiQm9yZGVhdXggUm9tYW4iXT0hMDtlWyJDYWxpZm9ybmlhbiBGQiJdPSEwO2UuQ2FsaXN0bz0hMDtlLkNhbHZlcnQ9ITA7ZS5DYXBpdGFscz0hMDtlLkNhbWJyaWE9ITA7ZS5DYXJ0aWVyPSEwO2UuQ2FzbG9uPSEwO2UuQ2F0dWxsPSEwO2UuQ2VudGF1cj0hMDtlWyJDZW50dXJ5IE9sZCBTdHlsZSJdPSEwO2VbIkNlbnR1cnkgU2Nob29sYm9vayJdPSEwO2UuQ2hhcGFycmFsPSEwO2VbIkNoYXJpcyBTSUwiXT0hMDtlLkNoZWx0ZW5oYW09ITA7ZVsiQ2hvbGxhIFNsYWIiXT0hMDtlLkNsYXJlbmRvbj0hMDtlLkNsZWFyZmFjZT0hMDtlLkNvY2hpbj0hMDtlLkNvbG9ubmE9ITA7ZVsiQ29tcHV0ZXIgTW9kZXJuIl09ITA7ZVsiQ29uY3JldGUgUm9tYW4iXT0hMDtlLkNvbnN0YW50aWE9ITA7ZVsiQ29vcGVyIEJsYWNrIl09ITA7ZS5Db3JvbmE9ITA7ZS5FY290eXBlPSEwO2UuRWd5cHRpZW5uZT0hMDtlLkVsZXBoYW50PSEwO2UuRXhjZWxzaW9yPSEwO2UuRmFpcmZpZWxkPSEwO2VbIkZGIFNjYWxhIl09ITA7ZS5Gb2xrYXJkPSEwO2UuRm9vdGxpZ2h0PSEwO2UuRnJlZVNlcmlmPSEwO2VbIkZyaXogUXVhZHJhdGEiXT0hMDtlLkdhcmFtb25kPSEwO2UuR2VudGl1bT0hMDtlLkdlb3JnaWE9ITA7ZS5HbG91Y2VzdGVyPSEwO2VbIkdvdWR5IE9sZCBTdHlsZSJdPSEwO2VbIkdvdWR5IFNjaG9vbGJvb2siXT0hMDtlWyJHb3VkeSBQcm8gRm9udCJdPSEwO2UuR3Jhbmpvbj0hMDtlWyJHdWFyZGlhbiBFZ3lwdGlhbiJdPSEwO2UuSGVhdGhlcj0hMDtlLkhlcmN1bGVzPSEwO2VbIkhpZ2ggVG93ZXIgVGV4dCJdPSEwO2UuSGlyb3NoaWdlPSEwO2VbIkhvZWZsZXIgVGV4dCJdPSEwO2VbIkh1bWFuYSBTZXJpZiJdPSEwO2UuSW1wcmludD0hMDtlWyJJb25pYyBOby4gNSJdPSEwO2UuSmFuc29uPSEwO2UuSm9hbm5hPSEwO2UuS29yaW5uYT0hMDtlLkxleGljb249ITA7ZS5MaWJlcmF0aW9uU2VyaWY9ITA7ZVsiTGliZXJhdGlvbiBTZXJpZiJdPSEwO2VbIkxpbnV4IExpYmVydGluZSJdPSEwO2UuTGl0ZXJhdHVybmF5YT0hMDtlLkx1Y2lkYT0hMDtlWyJMdWNpZGEgQnJpZ2h0Il09ITA7ZS5NZWxpb3I9ITA7ZS5NZW1waGlzPSEwO2UuTWlsbGVyPSEwO2UuTWluaW9uPSEwO2UuTW9kZXJuPSEwO2VbIk1vbmEgTGlzYSJdPSEwO2VbIk1ycyBFYXZlcyJdPSEwO2VbIk1TIFNlcmlmIl09ITA7ZVsiTXVzZW8gU2xhYiJdPSEwO2VbIk5ldyBZb3JrIl09ITA7ZVsiTmltYnVzIFJvbWFuIl09ITA7ZVsiTlBTIFJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5OdXB0aWFsU2NyaXB0PSEwO2UuUGFsYXRpbm89ITA7ZS5QZXJwZXR1YT0hMDtlLlBsYW50aW49ITA7ZVsiUGxhbnRpbiBTY2hvb2xib29rIl09ITA7ZS5QbGF5YmlsbD0hMDtlWyJQb29yIFJpY2hhcmQiXT0hMDtlWyJSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuUmVuYXVsdD0hMDtlLlJlcXVpZW09ITA7ZS5Sb2Nrd2VsbD0hMDtlLlJvbWFuPSEwO2VbIlJvdGlzIFNlcmlmIl09ITA7ZS5TYWJvbj0hMDtlLlNjYWxhPSEwO2UuU2VhZ3VsbD0hMDtlLlNpc3RpbmE9ITA7ZS5Tb3V2ZW5pcj0hMDtlLlNUSVg9ITA7ZVsiU3RvbmUgSW5mb3JtYWwiXT0hMDtlWyJTdG9uZSBTZXJpZiJdPSEwO2UuU3lsZmFlbj0hMDtlLlRpbWVzPSEwO2UuVHJhamFuPSEwO2VbIlRyaW5pdMOpIl09ITA7ZVsiVHJ1bXAgTWVkaWFldmFsIl09ITA7ZS5VdG9waWE9ITA7ZVsiVmFsZSBUeXBlIl09ITA7ZVsiQml0c3RyZWFtIFZlcmEiXT0hMDtlWyJWZXJhIFNlcmlmIl09ITA7ZS5WZXJzYWlsbGVzPSEwO2UuV2FudGVkPSEwO2UuV2Vpc3M9ITA7ZVsiV2lkZSBMYXRpbiJdPSEwO2UuV2luZHNvcj0hMDtlLlhJVFM9ITB9KSksUGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pKSxXaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSksamk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzIyN109MzIyO2VbMjY0XT0yNjE7ZVsyOTFdPTM0Nn0pKSxYaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO2Z1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gS2koKVt0XX1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4hIShLaSgpW3RdfHxxaSgpW3RdfHxPaSgpW3RdfHxQaSgpW3RdKX1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY29kZVBvaW50QXQoMCkpfWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGkgaW4gdClpZih0W2ldPT09ZSlyZXR1cm4gMHxpO3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fbWFwW3RdPWVbdF19fWNsYXNzIElkZW50aXR5VG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maXJzdENoYXI9ZTt0aGlzLmxhc3RDaGFyPXR9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxhc3RDaGFyKzEtdGhpcy5maXJzdENoYXJ9Zm9yRWFjaChlKXtmb3IobGV0IHQ9dGhpcy5maXJzdENoYXIsaT10aGlzLmxhc3RDaGFyO3Q8PWk7dCsrKWUodCx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyfWdldChlKXtpZih0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgaT1uZXcgQ0ZGUGFyc2VyKGUsdCxHaSk7dGhpcy5jZmY9aS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBhPW5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7dGhpcy5zZWFjcz10aGlzLmNmZi5zZWFjczt0cnl7dGhpcy5kYXRhPWEuY29tcGlsZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIit0LmxvYWRlZE5hbWUpO3RoaXMuZGF0YT1lfXRoaXMuX2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jZmYuY2hhclN0cmluZ3MuY291bnR9Z2V0Q2hhcnNldCgpe3JldHVybiB0aGlzLmNmZi5jaGFyc2V0LmNoYXJzZXR9Z2V0R2x5cGhNYXBwaW5nKCl7Y29uc3QgZT10aGlzLmNmZix0PXRoaXMucHJvcGVydGllcyx7Y2lkVG9HaWRNYXA6aSxjTWFwOmF9PXQscj1lLmNoYXJzZXQuY2hhcnNldDtsZXQgcyxuO2lmKHQuY29tcG9zaXRlKXtsZXQgdCxvO2lmKGk/Lmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPWlbZV07dm9pZCAwIT09YSYmKHRbYV09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobj0wO248ci5sZW5ndGg7bisrKXtjb25zdCBlPXJbbl07bz1hLmNoYXJDb2RlT2YoZSk7dm9pZCAwIT09dD8uW29dJiYobz10W29dKTtzW29dPW59ZWxzZSBmb3Iobj0wO248ZS5jaGFyU3RyaW5ncy5jb3VudDtuKyspe289YS5jaGFyQ29kZU9mKG4pO3Nbb109bn1yZXR1cm4gc31sZXQgbz1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDt0LmlzSW50ZXJuYWxGb250JiYobz10LmRlZmF1bHRFbmNvZGluZyk7cz10eXBlMUZvbnRHbHlwaE1hcHBpbmcodCxvLHIpO3JldHVybiBzfWhhc0dseXBoSWQoZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9X2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpe2NvbnN0e2NoYXJzZXQ6ZSxlbmNvZGluZzp0fT10aGlzLmNmZjtpZighZXx8IXQpcmV0dXJuO2NvbnN0IGk9ZS5jaGFyc2V0LGE9dC5lbmNvZGluZyxyPVtdO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZih0Pj0wKXtjb25zdCBhPWlbdF07YSYmKHJbZV09YSl9fXIubGVuZ3RoPjAmJih0aGlzLnByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nPXIpfX1mdW5jdGlvbiBnZXRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gZ2V0VWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIGdldEludDE2KGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTYpPj4xNn1mdW5jdGlvbiBnZXRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiBnZXRGbG9hdDIxNChlLHQpe3JldHVybiBnZXRJbnQxNihlLHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MzI3Njg7dDwxMjQwP2k9MTA3OnQ8MzM5MDAmJihpPTExMzEpO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlQ21hcChlLHQsaSl7Y29uc3QgYT0xPT09Z2V0VWludDE2KGUsdCsyKT9nZXRVaW50MzIoZSx0KzgpOmdldFVpbnQzMihlLHQrMTYpLHI9Z2V0VWludDE2KGUsdCthKTtsZXQgcyxuLG87aWYoND09PXIpe2dldFVpbnQxNihlLHQrYSsyKTtjb25zdCBpPWdldFVpbnQxNihlLHQrYSs2KT4+MTtuPXQrYSsxNDtzPVtdO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb109e2VuZDpnZXRVaW50MTYoZSxuKX07bis9Mjtmb3Iobz0wO288aTtvKyssbis9MilzW29dLnN0YXJ0PWdldFVpbnQxNihlLG4pO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb10uaWREZWx0YT1nZXRVaW50MTYoZSxuKTtmb3Iobz0wO288aTtvKyssbis9Mil7bGV0IHQ9Z2V0VWludDE2KGUsbik7aWYoMCE9PXQpe3Nbb10uaWRzPVtdO2ZvcihsZXQgaT0wLGE9c1tvXS5lbmQtc1tvXS5zdGFydCsxO2k8YTtpKyspe3Nbb10uaWRzW2ldPWdldFVpbnQxNihlLG4rdCk7dCs9Mn19fXJldHVybiBzfWlmKDEyPT09cil7Y29uc3QgaT1nZXRVaW50MzIoZSx0K2ErMTIpO249dCthKzE2O3M9W107Zm9yKG89MDtvPGk7bysrKXt0PWdldFVpbnQzMihlLG4pO3MucHVzaCh7c3RhcnQ6dCxlbmQ6Z2V0VWludDMyKGUsbis0KSxpZERlbHRhOmdldFVpbnQzMihlLG4rOCktdH0pO24rPTEyfXJldHVybiBzfXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtyfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxpLGEpe2NvbnN0IHI9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGUsdCxpLXQpLHt9LGEpLnBhcnNlKCk7cmV0dXJue2dseXBoczpyLmNoYXJTdHJpbmdzLm9iamVjdHMsc3VicnM6ci50b3BEaWN0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4Py5vYmplY3RzLGdzdWJyczpyLmdsb2JhbFN1YnJJbmRleD8ub2JqZWN0cyxpc0NGRkNJREZvbnQ6ci5pc0NJREZvbnQsZmRTZWxlY3Q6ci5mZFNlbGVjdCxmZEFycmF5OnIuZmRBcnJheX19ZnVuY3Rpb24gbG9va3VwQ21hcChlLHQpe2NvbnN0IGk9dC5jb2RlUG9pbnRBdCgwKTtsZXQgYT0wLHI9MCxzPWUubGVuZ3RoLTE7Zm9yKDtyPHM7KXtjb25zdCB0PXIrcysxPj4xO2k8ZVt0XS5zdGFydD9zPXQtMTpyPXR9ZVtyXS5zdGFydDw9aSYmaTw9ZVtyXS5lbmQmJihhPWVbcl0uaWREZWx0YSsoZVtyXS5pZHM/ZVtyXS5pZHNbaS1lW3JdLnN0YXJ0XTppKSY2NTUzNSk7cmV0dXJue2NoYXJDb2RlOmksZ2x5cGhJZDphfX1mdW5jdGlvbiBjb21waWxlR2x5ZihlLHQsaSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxpLGEscil7dC5hZGQoIlEiLFtlLGksYSxyXSl9bGV0IGE9MDtjb25zdCByPWdldEludDE2KGUsYSk7bGV0IHMsbj0wLG89MDthKz0xMDtpZihyPDApZG97cz1nZXRVaW50MTYoZSxhKTtjb25zdCByPWdldFVpbnQxNihlLGErMik7YSs9NDtsZXQgZyxjO2lmKDEmcyl7aWYoMiZzKXtnPWdldEludDE2KGUsYSk7Yz1nZXRJbnQxNihlLGErMil9ZWxzZXtnPWdldFVpbnQxNihlLGEpO2M9Z2V0VWludDE2KGUsYSsyKX1hKz00fWVsc2UgaWYoMiZzKXtnPWdldEludDgoZSxhKyspO2M9Z2V0SW50OChlLGErKyl9ZWxzZXtnPWVbYSsrXTtjPWVbYSsrXX1pZigyJnMpe249ZztvPWN9ZWxzZXtuPTA7bz0wfWxldCBsPTEsaD0xLEM9MCxRPTA7aWYoOCZzKXtsPWg9Z2V0RmxvYXQyMTQoZSxhKTthKz0yfWVsc2UgaWYoNjQmcyl7bD1nZXRGbG9hdDIxNChlLGEpO2g9Z2V0RmxvYXQyMTQoZSxhKzIpO2ErPTR9ZWxzZSBpZigxMjgmcyl7bD1nZXRGbG9hdDIxNChlLGEpO0M9Z2V0RmxvYXQyMTQoZSxhKzIpO1E9Z2V0RmxvYXQyMTQoZSxhKzQpO2g9Z2V0RmxvYXQyMTQoZSxhKzYpO2ErPTh9Y29uc3QgRT1pLmdseXBoc1tyXTtpZihFKXt0LnNhdmUoKTt0LnRyYW5zZm9ybShbbCxDLFEsaCxuLG9dKTtjb21waWxlR2x5ZihFLHQsaSk7dC5yZXN0b3JlKCl9fXdoaWxlKDMyJnMpO2Vsc2V7Y29uc3QgdD1bXTtsZXQgaSxnO2ZvcihpPTA7aTxyO2krKyl7dC5wdXNoKGdldFVpbnQxNihlLGEpKTthKz0yfWErPTIrZ2V0VWludDE2KGUsYSk7Y29uc3QgYz10LmF0KC0xKSsxLGw9W107Zm9yKDtsLmxlbmd0aDxjOyl7cz1lW2ErK107bGV0IHQ9MTs4JnMmJih0Kz1lW2ErK10pO2Zvcig7dC0tID4wOylsLnB1c2goe2ZsYWdzOnN9KX1mb3IoaT0wO2k8YztpKyspe3N3aXRjaCgxOCZsW2ldLmZsYWdzKXtjYXNlIDA6bis9Z2V0SW50MTYoZSxhKTthKz0yO2JyZWFrO2Nhc2UgMjpuLT1lW2ErK107YnJlYWs7Y2FzZSAxODpuKz1lW2ErK119bFtpXS54PW59Zm9yKGk9MDtpPGM7aSsrKXtzd2l0Y2goMzYmbFtpXS5mbGFncyl7Y2FzZSAwOm8rPWdldEludDE2KGUsYSk7YSs9MjticmVhaztjYXNlIDQ6by09ZVthKytdO2JyZWFrO2Nhc2UgMzY6bys9ZVthKytdfWxbaV0ueT1vfWxldCBoPTA7Zm9yKGE9MDthPHI7YSsrKXtjb25zdCBlPXRbYV0scj1sLnNsaWNlKGgsZSsxKTtpZigxJnJbMF0uZmxhZ3Mpci5wdXNoKHJbMF0pO2Vsc2UgaWYoMSZyLmF0KC0xKS5mbGFncylyLnVuc2hpZnQoci5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihyWzBdLngrci5hdCgtMSkueCkvMix5OihyWzBdLnkrci5hdCgtMSkueSkvMn07ci51bnNoaWZ0KGUpO3IucHVzaChlKX1tb3ZlVG8oclswXS54LHJbMF0ueSk7Zm9yKGk9MSxnPXIubGVuZ3RoO2k8ZztpKyspaWYoMSZyW2ldLmZsYWdzKWxpbmVUbyhyW2ldLngscltpXS55KTtlbHNlIGlmKDEmcltpKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKHJbaV0ueCxyW2ldLnkscltpKzFdLngscltpKzFdLnkpO2krK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8ocltpXS54LHJbaV0ueSwocltpXS54K3JbaSsxXS54KS8yLChyW2ldLnkrcltpKzFdLnkpLzIpO2g9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LGksYSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxpLGEscixzLG4pe3QuYWRkKCJDIixbZSxpLGEscixzLG5dKX1jb25zdCByPVtdO2xldCBzPTAsbj0wLG89MDshZnVuY3Rpb24gcGFyc2UoZSl7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtsZXQgYyxsLGgsQyxRLEUsdSxkLGYscD0hMSxtPWVbZysrXTtzd2l0Y2gobSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9ci5sZW5ndGg+PjE7cD0hMDticmVhaztjYXNlIDQ6bis9ci5wb3AoKTttb3ZlVG8ocyxuKTtwPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWJyZWFrO2Nhc2UgNjpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1icmVhaztjYXNlIDc6Zm9yKDtyLmxlbmd0aD4wOyl7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9YnJlYWs7Y2FzZSA4OmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMTA6ZD1yLnBvcCgpO2Y9bnVsbDtpZihpLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1pLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxpLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PWkuZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7ZCs9Z2V0U3Vicm91dGluZUJpYXMoYSk7Zj1hW2RdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2UgZj1pLnN1YnJzW2QraS5zdWJyc0JpYXNdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6bT1lW2crK107c3dpdGNoKG0pe2Nhc2UgMzQ6Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbixsLFEscyxRKTtjPXMrci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsUSxsLG4scyxuKTticmVhaztjYXNlIDM1OmM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO3IucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtFPVErci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLFEsbCxFLHMsRSk7Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO3U9RStyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsRSxsLHUscyxuKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cyx0PW47Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWwrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWw7bj1DO01hdGguYWJzKHMtZSk+TWF0aC5hYnMobi10KT9zKz1yLnNoaWZ0KCk6bis9ci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke219YCl9YnJlYWs7Y2FzZSAxNDppZihyLmxlbmd0aD49NCl7Y29uc3QgZT1yLnBvcCgpLGE9ci5wb3AoKTtuPXIucG9wKCk7cz1yLnBvcCgpO3Quc2F2ZSgpO3QudHJhbnNsYXRlKHMsbik7bGV0IG89bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpO3QucmVzdG9yZSgpO289bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVthXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9ci5sZW5ndGg+PjE7Zys9bys3Pj4zO3A9ITA7YnJlYWs7Y2FzZSAyMTpuKz1yLnBvcCgpO3MrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDIyOnMrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDI0OmZvcig7ci5sZW5ndGg+Mjspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfXMrPXIuc2hpZnQoKTtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7YnJlYWs7Y2FzZSAyNTpmb3IoO3IubGVuZ3RoPjY7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2Nhc2UgMjY6ci5sZW5ndGglMiYmKHMrPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bDtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjc6ci5sZW5ndGglMiYmKG4rPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTtoPW47bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjg6ci5wdXNoKChlW2ddPDwyNHxlW2crMV08PDE2KT4+MTYpO2crPTI7YnJlYWs7Y2FzZSAyOTpkPXIucG9wKCkraS5nc3VicnNCaWFzO2Y9aS5nc3VicnNbZF07ZiYmcGFyc2UoZik7YnJlYWs7Y2FzZSAzMDpmb3IoO3IubGVuZ3RoPjA7KXtjPXM7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKX1icmVhaztjYXNlIDMxOmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2RlZmF1bHQ6aWYobTwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7bX1gKTtpZihtPDI0NylyLnB1c2gobS0xMzkpO2Vsc2UgaWYobTwyNTEpci5wdXNoKDI1NioobS0yNDcpK2VbZysrXSsxMDgpO2Vsc2UgaWYobTwyNTUpci5wdXNoKDI1NiotKG0tMjUxKS1lW2crK10tMTA4KTtlbHNle3IucHVzaCgoZVtnXTw8MjR8ZVtnKzFdPDwxNnxlW2crMl08PDh8ZVtnKzNdKS82NTUzNik7Zys9NH19cCYmKHIubGVuZ3RoPTApfX0oZSl9Y2xhc3MgQ29tbWFuZHN7Y21kcz1bXTt0cmFuc2Zvcm1TdGFjaz1bXTtjdXJyZW50VHJhbnNmb3JtPVsxLDAsMCwxLDAsMF07YWRkKGUsdCl7aWYodCl7Y29uc3RbaSxhLHIscyxuLG9dPXRoaXMuY3VycmVudFRyYW5zZm9ybTtmb3IobGV0IGU9MCxnPXQubGVuZ3RoO2U8ZztlKz0yKXtjb25zdCBnPXRbZV0sYz10W2UrMV07dFtlXT1pKmcrcipjK247dFtlKzFdPWEqZytzKmMrb310aGlzLmNtZHMucHVzaChgJHtlfSR7dC5qb2luKCIgIil9YCl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX10cmFuc2Zvcm0oZSl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPVV0aWwudHJhbnNmb3JtKHRoaXMuY3VycmVudFRyYW5zZm9ybSxlKX10cmFuc2xhdGUoZSx0KXt0aGlzLnRyYW5zZm9ybShbMSwwLDAsMSxlLHRdKX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMuY3VycmVudFRyYW5zZm9ybS5zbGljZSgpKX1yZXN0b3JlKCl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCl8fFsxLDAsMCwxLDAsMF19Z2V0U1ZHKCl7cmV0dXJuIHRoaXMuY21kcy5qb2luKCIiKX19Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udE1hdHJpeD1lO3RoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWQ9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRQYXRoSnMoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOml9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO2xldCBhLHI9dGhpcy5jb21waWxlZEdseXBoc1tpXTtpZih2b2lkIDA9PT1yKXt0cnl7cj10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tpXSxpKX1jYXRjaChlKXtyPSIiO2E9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2ldPXJ9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89aTtpZihhKXRocm93IGE7cmV0dXJuIHJ9Y29tcGlsZUdseXBoKGUsdCl7aWYoIWU/Lmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiIiO2xldCBpPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXtpPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8cn1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KGksNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBhPW5ldyBDb21tYW5kczthLnRyYW5zZm9ybShpLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLGEsdCk7YS5hZGQoIloiKTtyZXR1cm4gYS5nZXRTVkcoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbaV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9RGkoKTt0aGlzLmdzdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5nc3VicnMpO3RoaXMuc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuc3VicnMpO3RoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250O3RoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdDt0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LGkpe2NvbXBpbGVDaGFyU3RyaW5nKGUsdCx0aGlzLGkpfX1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IGEscixzLG4sbyxnO2NvbnN0IGM9Z2V0VWludDE2KGksNCk7Zm9yKGxldCBlPTAsbD0xMjtlPGM7ZSsrLGwrPTE2KXtjb25zdCBlPWJ5dGVzVG9TdHJpbmcoaS5zdWJhcnJheShsLGwrNCkpLGM9Z2V0VWludDMyKGksbCs4KSxoPWdldFVpbnQzMihpLGwrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOmE9cGFyc2VDbWFwKGksYyk7YnJlYWs7Y2FzZSJnbHlmIjpyPWkuc3ViYXJyYXkoYyxjK2gpO2JyZWFrO2Nhc2UibG9jYSI6cz1pLnN1YmFycmF5KGMsYytoKTticmVhaztjYXNlImhlYWQiOmc9Z2V0VWludDE2KGksYysxOCk7bz1nZXRVaW50MTYoaSxjKzUwKTticmVhaztjYXNlIkNGRiAiOm49cGFyc2VDZmYoaSxjLGMraCx0KX19aWYocil7Y29uc3QgdD1nP1sxL2csMCwwLDEvZywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGkpe2xldCBhLHI7aWYoaSl7YT00O3I9Z2V0VWludDMyfWVsc2V7YT0yO3I9KGUsdCk9PjIqZ2V0VWludDE2KGUsdCl9Y29uc3Qgcz1bXTtsZXQgbj1yKHQsMCk7Zm9yKGxldCBpPWE7aTx0Lmxlbmd0aDtpKz1hKXtjb25zdCBhPXIodCxpKTtzLnB1c2goZS5zdWJhcnJheShuLGEpKTtuPWF9cmV0dXJuIHN9KHIscyxvKSxhLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChuLGEsZS5mb250TWF0cml4KX19Y29uc3QgVmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9NjAwO2VbIkNvdXJpZXItQm9sZCJdPTYwMDtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09NjAwO2VbIkNvdXJpZXItT2JsaXF1ZSJdPTYwMDtlLkhlbHZldGljYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2UuU3ltYm9sPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UudW5pdmVyc2FsPTcxMztlLm51bWJlcnNpZ249NTAwO2UuZXhpc3RlbnRpYWw9NTQ5O2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2Uuc3VjaHRoYXQ9NDM5O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2ttYXRoPTUwMDtlLnBsdXM9NTQ5O2UuY29tbWE9MjUwO2UubWludXM9NTQ5O2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTQ5O2UuZXF1YWw9NTQ5O2UuZ3JlYXRlcj01NDk7ZS5xdWVzdGlvbj00NDQ7ZS5jb25ncnVlbnQ9NTQ5O2UuQWxwaGE9NzIyO2UuQmV0YT02Njc7ZS5DaGk9NzIyO2UuRGVsdGE9NjEyO2UuRXBzaWxvbj02MTE7ZS5QaGk9NzYzO2UuR2FtbWE9NjAzO2UuRXRhPTcyMjtlLklvdGE9MzMzO2UudGhldGExPTYzMTtlLkthcHBhPTcyMjtlLkxhbWJkYT02ODY7ZS5NdT04ODk7ZS5OdT03MjI7ZS5PbWljcm9uPTcyMjtlLlBpPTc2ODtlLlRoZXRhPTc0MTtlLlJobz01NTY7ZS5TaWdtYT01OTI7ZS5UYXU9NjExO2UuVXBzaWxvbj02OTA7ZS5zaWdtYTE9NDM5O2UuT21lZ2E9NzY4O2UuWGk9NjQ1O2UuUHNpPTc5NTtlLlpldGE9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UudGhlcmVmb3JlPTg2MztlLmJyYWNrZXRyaWdodD0zMzM7ZS5wZXJwZW5kaWN1bGFyPTY1ODtlLnVuZGVyc2NvcmU9NTAwO2UucmFkaWNhbGV4PTUwMDtlLmFscGhhPTYzMTtlLmJldGE9NTQ5O2UuY2hpPTU0OTtlLmRlbHRhPTQ5NDtlLmVwc2lsb249NDM5O2UucGhpPTUyMTtlLmdhbW1hPTQxMTtlLmV0YT02MDM7ZS5pb3RhPTMyOTtlLnBoaTE9NjAzO2Uua2FwcGE9NTQ5O2UubGFtYmRhPTU0OTtlLm11PTU3NjtlLm51PTUyMTtlLm9taWNyb249NTQ5O2UucGk9NTQ5O2UudGhldGE9NTIxO2UucmhvPTU0OTtlLnNpZ21hPTYwMztlLnRhdT00Mzk7ZS51cHNpbG9uPTU3NjtlLm9tZWdhMT03MTM7ZS5vbWVnYT02ODY7ZS54aT00OTM7ZS5wc2k9Njg2O2UuemV0YT00OTQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2Uuc2ltaWxhcj01NDk7ZS5FdXJvPTc1MDtlLlVwc2lsb24xPTYyMDtlLm1pbnV0ZT0yNDc7ZS5sZXNzZXF1YWw9NTQ5O2UuZnJhY3Rpb249MTY3O2UuaW5maW5pdHk9NzEzO2UuZmxvcmluPTUwMDtlLmNsdWI9NzUzO2UuZGlhbW9uZD03NTM7ZS5oZWFydD03NTM7ZS5zcGFkZT03NTM7ZS5hcnJvd2JvdGg9MTA0MjtlLmFycm93bGVmdD05ODc7ZS5hcnJvd3VwPTYwMztlLmFycm93cmlnaHQ9OTg3O2UuYXJyb3dkb3duPTYwMztlLmRlZ3JlZT00MDA7ZS5wbHVzbWludXM9NTQ5O2Uuc2Vjb25kPTQxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5tdWx0aXBseT01NDk7ZS5wcm9wb3J0aW9uYWw9NzEzO2UucGFydGlhbGRpZmY9NDk0O2UuYnVsbGV0PTQ2MDtlLmRpdmlkZT01NDk7ZS5ub3RlcXVhbD01NDk7ZS5lcXVpdmFsZW5jZT01NDk7ZS5hcHByb3hlcXVhbD01NDk7ZS5lbGxpcHNpcz0xZTM7ZS5hcnJvd3ZlcnRleD02MDM7ZS5hcnJvd2hvcml6ZXg9MWUzO2UuY2FycmlhZ2VyZXR1cm49NjU4O2UuYWxlcGg9ODIzO2UuSWZyYWt0dXI9Njg2O2UuUmZyYWt0dXI9Nzk1O2Uud2VpZXJzdHJhc3M9OTg3O2UuY2lyY2xlbXVsdGlwbHk9NzY4O2UuY2lyY2xlcGx1cz03Njg7ZS5lbXB0eXNldD04MjM7ZS5pbnRlcnNlY3Rpb249NzY4O2UudW5pb249NzY4O2UucHJvcGVyc3VwZXJzZXQ9NzEzO2UucmVmbGV4c3VwZXJzZXQ9NzEzO2Uubm90c3Vic2V0PTcxMztlLnByb3BlcnN1YnNldD03MTM7ZS5yZWZsZXhzdWJzZXQ9NzEzO2UuZWxlbWVudD03MTM7ZS5ub3RlbGVtZW50PTcxMztlLmFuZ2xlPTc2ODtlLmdyYWRpZW50PTcxMztlLnJlZ2lzdGVyc2VyaWY9NzkwO2UuY29weXJpZ2h0c2VyaWY9NzkwO2UudHJhZGVtYXJrc2VyaWY9ODkwO2UucHJvZHVjdD04MjM7ZS5yYWRpY2FsPTU0OTtlLmRvdG1hdGg9MjUwO2UubG9naWNhbG5vdD03MTM7ZS5sb2dpY2FsYW5kPTYwMztlLmxvZ2ljYWxvcj02MDM7ZS5hcnJvd2RibGJvdGg9MTA0MjtlLmFycm93ZGJsbGVmdD05ODc7ZS5hcnJvd2RibHVwPTYwMztlLmFycm93ZGJscmlnaHQ9OTg3O2UuYXJyb3dkYmxkb3duPTYwMztlLmxvemVuZ2U9NDk0O2UuYW5nbGVsZWZ0PTMyOTtlLnJlZ2lzdGVyc2Fucz03OTA7ZS5jb3B5cmlnaHRzYW5zPTc5MDtlLnRyYWRlbWFya3NhbnM9Nzg2O2Uuc3VtbWF0aW9uPTcxMztlLnBhcmVubGVmdHRwPTM4NDtlLnBhcmVubGVmdGV4PTM4NDtlLnBhcmVubGVmdGJ0PTM4NDtlLmJyYWNrZXRsZWZ0dHA9Mzg0O2UuYnJhY2tldGxlZnRleD0zODQ7ZS5icmFja2V0bGVmdGJ0PTM4NDtlLmJyYWNlbGVmdHRwPTQ5NDtlLmJyYWNlbGVmdG1pZD00OTQ7ZS5icmFjZWxlZnRidD00OTQ7ZS5icmFjZWV4PTQ5NDtlLmFuZ2xlcmlnaHQ9MzI5O2UuaW50ZWdyYWw9Mjc0O2UuaW50ZWdyYWx0cD02ODY7ZS5pbnRlZ3JhbGV4PTY4NjtlLmludGVncmFsYnQ9Njg2O2UucGFyZW5yaWdodHRwPTM4NDtlLnBhcmVucmlnaHRleD0zODQ7ZS5wYXJlbnJpZ2h0YnQ9Mzg0O2UuYnJhY2tldHJpZ2h0dHA9Mzg0O2UuYnJhY2tldHJpZ2h0ZXg9Mzg0O2UuYnJhY2tldHJpZ2h0YnQ9Mzg0O2UuYnJhY2VyaWdodHRwPTQ5NDtlLmJyYWNlcmlnaHRtaWQ9NDk0O2UuYnJhY2VyaWdodGJ0PTQ5NDtlLmFwcGxlPTc5MH0pKTtlWyJUaW1lcy1Sb21hbiJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDA4O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU2NDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NjQ7ZS5lcXVhbD01NjQ7ZS5ncmVhdGVyPTU2NDtlLnF1ZXN0aW9uPTQ0NDtlLmF0PTkyMTtlLkE9NzIyO2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTU1NjtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9Mzg5O2UuSz03MjI7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NTU2O2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NzIyO2UuVz05NDQ7ZS5YPTcyMjtlLlk9NzIyO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NDQ0O2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTMzMztlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTE4MDtlLnF1b3RlZGJsbGVmdD00NDQ7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTQ1MztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NDQ0O2UucXVvdGVkYmxyaWdodD00NDQ7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NDQ0O2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTg4OTtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NDQ0O2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NjQ7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTQ0NDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NDQ0O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NDQ0O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NDQ0O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NDQ0O2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD00NDQ7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTU1NjtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NTg4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU2NDtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NDQ0O2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz01NjQ7ZS5icm9rZW5iYXI9MjAwO2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMyNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NDQ0O2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM0NDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTY0O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU2NDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD0xZTM7ZS5hbXBlcnNhbmQ9ODMzO2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkzMDtlLkE9NzIyO2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz03Nzg7ZS5MPTY2NztlLk09OTQ0O2UuTj03MjI7ZS5PPTc3ODtlLlA9NjExO2UuUT03Nzg7ZS5SPTcyMjtlLlM9NTU2O2UuVD02Njc7ZS5VPTcyMjtlLlY9NzIyO2UuVz0xZTM7ZS5YPTcyMjtlLlk9NzIyO2UuWj02Njc7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4MTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01NTY7ZS5jPTQ0NDtlLmQ9NTU2O2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9MzMzO2Uuaz01NTY7ZS5sPTI3ODtlLm09ODMzO2Uubj01NTY7ZS5vPTUwMDtlLnA9NTU2O2UucT01NTY7ZS5yPTQ0NDtlLnM9Mzg5O2UudD0zMzM7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9Mzk0O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9Mzk0O2UuYXNjaWl0aWxkZT01MjA7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTU0MDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zMDA7ZS5Mc2xhc2g9NjY3O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zMzA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTU2O2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTY2NztlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj00NDQ7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTY2NztlLlRob3JuPTYxMTtlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjcyO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjY3O2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT00NDQ7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02Njc7ZS5aY2Fyb249NjY3O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTQxNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM5NDtlLktjb21tYWFjY2VudD03Nzg7ZS5MYWN1dGU9NjY3O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTY2NztlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTQ0NDtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02Njc7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTcwO2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU3MDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09Mzg5O2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTgzMjtlLkE9NjY3O2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02Njc7ZS5GPTY2NztlLkc9NzIyO2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz02Njc7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz04ODk7ZS5YPTY2NztlLlk9NjExO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU3MDtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01NTY7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTU1NjtlLnY9NDQ0O2Uudz02Njc7ZS54PTUwMDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9MzQ4O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9MzQ4O2UuYXNjaWl0aWxkZT01NzA7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUwMDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT05NDQ7ZS5vcmRmZW1pbmluZT0yNjY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMDA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTYxMTtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NjExO2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjA4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM2NjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTU3NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM4MjtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NjA2O2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTYwNjtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MjA7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9Njc1O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTY3NTtlLmVxdWFsPTY3NTtlLmdyZWF0ZXI9Njc1O2UucXVlc3Rpb249NTAwO2UuYXQ9OTIwO2UuQT02MTE7ZS5CPTYxMTtlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NjExO2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj00NDQ7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTY2NztlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjExO2UuUz01MDA7ZS5UPTU1NjtlLlU9NzIyO2UuVj02MTE7ZS5XPTgzMztlLlg9NjExO2UuWT01NTY7ZS5aPTU1NjtlLmJyYWNrZXRsZWZ0PTM4OTtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mzg5O2UuYXNjaWljaXJjdW09NDIyO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9Mjc4O2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTQ0NDtlLmw9Mjc4O2UubT03MjI7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj00NDQ7ZS53PTY2NztlLng9NDQ0O2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD00MDA7ZS5iYXI9Mjc1O2UuYnJhY2VyaWdodD00MDA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MjE0O2UucXVvdGVkYmxsZWZ0PTU1NjtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTIzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01NTY7ZS5xdW90ZWRibHJpZ2h0PTU1NjtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTg4OTtlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTg4OTtlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NjY3O2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NTU2O2UuZGl2aWRlPTY3NTtlLllhY3V0ZT01NTY7ZS5BY2lyY3VtZmxleD02MTE7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NjY3O2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NTU2O2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjExO2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjExO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NTU2O2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjExO2UuU2FjdXRlPTUwMDtlLmRjYXJvbj01NDQ7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02MTE7ZS5BYnJldmU9NjExO2UubXVsdGlwbHk9Njc1O2UudWFjdXRlPTUwMDtlLlRjYXJvbj01NTY7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTY2NztlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj02Njc7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTY3NTtlLmJyb2tlbmJhcj0yNzU7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTU1NjtlLlpjYXJvbj01NTY7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzAwO2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02MTE7ZS5BZGllcmVzaXM9NjExO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01MDA7ZS5sY2Fyb249MzAwO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTUwMDtlLlNjb21tYWFjY2VudD01MDA7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTY2NztlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjExO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02MTE7ZS5Bb2dvbmVrPTYxMTtlLkFyaW5nPTYxMTtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD00NDQ7ZS5taW51cz02NzU7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9Njc1O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlLlphcGZEaW5nYmF0cz1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuYTE9OTc0O2UuYTI9OTYxO2UuYTIwMj05NzQ7ZS5hMz05ODA7ZS5hND03MTk7ZS5hNT03ODk7ZS5hMTE5PTc5MDtlLmExMTg9NzkxO2UuYTExNz02OTA7ZS5hMTE9OTYwO2UuYTEyPTkzOTtlLmExMz01NDk7ZS5hMTQ9ODU1O2UuYTE1PTkxMTtlLmExNj05MzM7ZS5hMTA1PTkxMTtlLmExNz05NDU7ZS5hMTg9OTc0O2UuYTE5PTc1NTtlLmEyMD04NDY7ZS5hMjE9NzYyO2UuYTIyPTc2MTtlLmEyMz01NzE7ZS5hMjQ9Njc3O2UuYTI1PTc2MztlLmEyNj03NjA7ZS5hMjc9NzU5O2UuYTI4PTc1NDtlLmE2PTQ5NDtlLmE3PTU1MjtlLmE4PTUzNztlLmE5PTU3NztlLmExMD02OTI7ZS5hMjk9Nzg2O2UuYTMwPTc4ODtlLmEzMT03ODg7ZS5hMzI9NzkwO2UuYTMzPTc5MztlLmEzND03OTQ7ZS5hMzU9ODE2O2UuYTM2PTgyMztlLmEzNz03ODk7ZS5hMzg9ODQxO2UuYTM5PTgyMztlLmE0MD04MzM7ZS5hNDE9ODE2O2UuYTQyPTgzMTtlLmE0Mz05MjM7ZS5hNDQ9NzQ0O2UuYTQ1PTcyMztlLmE0Nj03NDk7ZS5hNDc9NzkwO2UuYTQ4PTc5MjtlLmE0OT02OTU7ZS5hNTA9Nzc2O2UuYTUxPTc2ODtlLmE1Mj03OTI7ZS5hNTM9NzU5O2UuYTU0PTcwNztlLmE1NT03MDg7ZS5hNTY9NjgyO2UuYTU3PTcwMTtlLmE1OD04MjY7ZS5hNTk9ODE1O2UuYTYwPTc4OTtlLmE2MT03ODk7ZS5hNjI9NzA3O2UuYTYzPTY4NztlLmE2ND02OTY7ZS5hNjU9Njg5O2UuYTY2PTc4NjtlLmE2Nz03ODc7ZS5hNjg9NzEzO2UuYTY5PTc5MTtlLmE3MD03ODU7ZS5hNzE9NzkxO2UuYTcyPTg3MztlLmE3Mz03NjE7ZS5hNzQ9NzYyO2UuYTIwMz03NjI7ZS5hNzU9NzU5O2UuYTIwND03NTk7ZS5hNzY9ODkyO2UuYTc3PTg5MjtlLmE3OD03ODg7ZS5hNzk9Nzg0O2UuYTgxPTQzODtlLmE4Mj0xMzg7ZS5hODM9Mjc3O2UuYTg0PTQxNTtlLmE5Nz0zOTI7ZS5hOTg9MzkyO2UuYTk5PTY2ODtlLmExMDA9NjY4O2UuYTg5PTM5MDtlLmE5MD0zOTA7ZS5hOTM9MzE3O2UuYTk0PTMxNztlLmE5MT0yNzY7ZS5hOTI9Mjc2O2UuYTIwNT01MDk7ZS5hODU9NTA5O2UuYTIwNj00MTA7ZS5hODY9NDEwO2UuYTg3PTIzNDtlLmE4OD0yMzQ7ZS5hOTU9MzM0O2UuYTk2PTMzNDtlLmExMDE9NzMyO2UuYTEwMj01NDQ7ZS5hMTAzPTU0NDtlLmExMDQ9OTEwO2UuYTEwNj02Njc7ZS5hMTA3PTc2MDtlLmExMDg9NzYwO2UuYTExMj03NzY7ZS5hMTExPTU5NTtlLmExMTA9Njk0O2UuYTEwOT02MjY7ZS5hMTIwPTc4ODtlLmExMjE9Nzg4O2UuYTEyMj03ODg7ZS5hMTIzPTc4ODtlLmExMjQ9Nzg4O2UuYTEyNT03ODg7ZS5hMTI2PTc4ODtlLmExMjc9Nzg4O2UuYTEyOD03ODg7ZS5hMTI5PTc4ODtlLmExMzA9Nzg4O2UuYTEzMT03ODg7ZS5hMTMyPTc4ODtlLmExMzM9Nzg4O2UuYTEzND03ODg7ZS5hMTM1PTc4ODtlLmExMzY9Nzg4O2UuYTEzNz03ODg7ZS5hMTM4PTc4ODtlLmExMzk9Nzg4O2UuYTE0MD03ODg7ZS5hMTQxPTc4ODtlLmExNDI9Nzg4O2UuYTE0Mz03ODg7ZS5hMTQ0PTc4ODtlLmExNDU9Nzg4O2UuYTE0Nj03ODg7ZS5hMTQ3PTc4ODtlLmExNDg9Nzg4O2UuYTE0OT03ODg7ZS5hMTUwPTc4ODtlLmExNTE9Nzg4O2UuYTE1Mj03ODg7ZS5hMTUzPTc4ODtlLmExNTQ9Nzg4O2UuYTE1NT03ODg7ZS5hMTU2PTc4ODtlLmExNTc9Nzg4O2UuYTE1OD03ODg7ZS5hMTU5PTc4ODtlLmExNjA9ODk0O2UuYTE2MT04Mzg7ZS5hMTYzPTEwMTY7ZS5hMTY0PTQ1ODtlLmExOTY9NzQ4O2UuYTE2NT05MjQ7ZS5hMTkyPTc0ODtlLmExNjY9OTE4O2UuYTE2Nz05Mjc7ZS5hMTY4PTkyODtlLmExNjk9OTI4O2UuYTE3MD04MzQ7ZS5hMTcxPTg3MztlLmExNzI9ODI4O2UuYTE3Mz05MjQ7ZS5hMTYyPTkyNDtlLmExNzQ9OTE3O2UuYTE3NT05MzA7ZS5hMTc2PTkzMTtlLmExNzc9NDYzO2UuYTE3OD04ODM7ZS5hMTc5PTgzNjtlLmExOTM9ODM2O2UuYTE4MD04Njc7ZS5hMTk5PTg2NztlLmExODE9Njk2O2UuYTIwMD02OTY7ZS5hMTgyPTg3NDtlLmEyMDE9ODc0O2UuYTE4Mz03NjA7ZS5hMTg0PTk0NjtlLmExOTc9NzcxO2UuYTE4NT04NjU7ZS5hMTk0PTc3MTtlLmExOTg9ODg4O2UuYTE4Nj05Njc7ZS5hMTk1PTg4ODtlLmExODc9ODMxO2UuYTE4OD04NzM7ZS5hMTg5PTkyNztlLmExOTA9OTcwO2UuYTE5MT05MTh9KSl9KSksWmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTtjbGFzcyBHbHlmVGFibGV7Y29uc3RydWN0b3Ioe2dseWZUYWJsZTplLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmksbnVtR2x5cGhzOmF9KXt0aGlzLmdseXBocz1bXTtjb25zdCByPW5ldyBEYXRhVmlldyhpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsaS5ieXRlTGVuZ3RoKSxzPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxuPXQ/NDoyO2xldCBvPXQ/ci5nZXRVaW50MzIoMCk6MipyLmdldFVpbnQxNigwKSxnPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Zys9bjtjb25zdCBlPXQ/ci5nZXRVaW50MzIoZyk6MipyLmdldFVpbnQxNihnKTtpZihlPT09byl7dGhpcy5nbHlwaHMucHVzaChuZXcgR2x5cGgoe30pKTtjb250aW51ZX1jb25zdCBpPUdseXBoLnBhcnNlKG8scyk7dGhpcy5nbHlwaHMucHVzaChpKTtvPWV9fWdldFNpemUoKXtyZXR1cm4gdGhpcy5nbHlwaHMucmVkdWNlKCgoZSx0KT0+ZSsodC5nZXRTaXplKCkrMyYtNCkpLDApfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGk9ZT4xMzEwNzAsYT1pPzQ6MixyPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSphKSk7aT9yLnNldFVpbnQzMigwLDApOnIuc2V0VWludDE2KDAsMCk7bGV0IHM9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe3MrPWUud3JpdGUocyx0KTtzPXMrMyYtNDtuKz1hO2k/ci5zZXRVaW50MzIobixzKTpyLnNldFVpbnQxNihuLHM+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzppLGxvY2E6bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxpPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGk7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6aT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1pfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2ksYV09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1pO2lmKGEubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBpPVtdO2Zvcig7Oyl7Y29uc3RbYSxyXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPWE7aS5wdXNoKHIpO2lmKCEoMzImci5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOmEsY29tcG9zaXRlczppfSl9Y29uc3Qgcj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsYS5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxzaW1wbGU6cn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBpPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWkud3JpdGUoZSx0KTtyZXR1cm4gZS1pfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBpIG9mIHRoaXMuY29tcG9zaXRlcylpLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46aSx4TWF4OmEseU1heDpyfSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWk7dGhpcy54TWF4PWE7dGhpcy55TWF4PXJ9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOml9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWk7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7YS5wdXNoKGkpfWNvbnN0IHI9YVtpLTFdKzEscz10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK3MpO2UrPXM7Y29uc3Qgbz1bXTtmb3IobGV0IGk9MDtpPHI7ZSsrLGkrKyl7bGV0IGE9dC5nZXRVaW50OChlKTtvLnB1c2goYSk7aWYoOCZhKXtjb25zdCByPXQuZ2V0VWludDgoKytlKTthXj04O2ZvcihsZXQgZT0wO2U8cjtlKyspby5wdXNoKGEpO2krPXJ9fWNvbnN0IGc9W107bGV0IGM9W10sbD1bXSxoPVtdO2NvbnN0IEM9W107bGV0IFE9MCxFPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3Qgcj1vW2ldO2lmKDImcil7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MTYmcj9pOi1pO2MucHVzaChFKX1lbHNlIGlmKDE2JnIpYy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO2MucHVzaChFKX1pZihhW1FdPT09aSl7USsrO2cucHVzaChjKTtjPVtdfX1FPTA7UT0wO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IHI9b1tpXTtpZig0JnIpe2NvbnN0IGk9dC5nZXRVaW50OChlKyspO0UrPTMyJnI/aTotaTtsLnB1c2goRSl9ZWxzZSBpZigzMiZyKWwucHVzaChFKTtlbHNle0UrPXQuZ2V0SW50MTYoZSk7ZSs9MjtsLnB1c2goRSl9aC5wdXNoKDEmcnw2NCZyKTtpZihhW1FdPT09aSl7Yz1nW1FdO1ErKztDLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOmgseENvb3JkaW5hdGVzOmMseUNvb3JkaW5hdGVzOmx9KSk7bD1bXTtoPVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpDLGluc3RydWN0aW9uczpufSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGk9MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtlKz1hLmZsYWdzLmxlbmd0aDtmb3IobGV0IHI9MCxzPWEueENvb3JkaW5hdGVzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWEueENvb3JkaW5hdGVzW3JdLG49YS55Q29vcmRpbmF0ZXNbcl07bGV0IG89TWF0aC5hYnMocy10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9cztvPU1hdGguYWJzKG4taSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTtpPW59fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lLGE9W10scj1bXSxzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdCBpIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWkuZmxhZ3NbZV07Y29uc3QgZz1pLnhDb29yZGluYXRlc1tlXTtsZXQgYz1nLW47aWYoMD09PWMpe3R8PTE2O2EucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzE4OjI7YS5wdXNoKGUpfWVsc2UgYS5wdXNoKGMpfW49Zztjb25zdCBsPWkueUNvb3JkaW5hdGVzW2VdO2M9bC1vO2lmKDA9PT1jKXt0fD0zMjtyLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGMpO2lmKGU8PTI1NSl7dHw9Yz49MD8zNjo0O3IucHVzaChlKX1lbHNlIHIucHVzaChjKX1vPWw7cy5wdXNoKHQpfXQuc2V0VWludDE2KGUsYS5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgaSBvZiBzKXQuc2V0VWludDgoZSsrLGkpO2ZvcihsZXQgaT0wLHI9YS5sZW5ndGg7aTxyO2krKyl7Y29uc3Qgcj1hW2ldLG49c1tpXTtpZigyJm4pdC5zZXRVaW50OChlKysscik7ZWxzZSBpZighKDE2Jm4pKXt0LnNldEludDE2KGUscik7ZSs9Mn19Zm9yKGxldCBpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXJbaV0sbj1zW2ldO2lmKDQmbil0LnNldFVpbnQ4KGUrKyxhKTtlbHNlIGlmKCEoMzImbikpe3Quc2V0SW50MTYoZSxhKTtlKz0yfX1yZXR1cm4gZS1pfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3VycylpZigwIT09aS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgYT0wLHI9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2E8cjthKyspaS54Q29vcmRpbmF0ZXNbYV09TWF0aC5yb3VuZChlKyhpLnhDb29yZGluYXRlc1thXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTppLGFyZ3VtZW50MjphLHRyYW5zZjpyLGluc3RydWN0aW9uczpzfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWk7dGhpcy5hcmd1bWVudDI9YTt0aGlzLnRyYW5zZj1yO3RoaXMuaW5zdHJ1Y3Rpb25zPXN9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgaT1lLGE9W107bGV0IHI9dC5nZXRVaW50MTYoZSk7Y29uc3Qgcz10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IG4sbztpZigxJnIpe2lmKDImcil7bj10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7bj10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtyXj0xfWVsc2V7aWYoMiZyKXtuPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7bj10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGc9bnVsbDtpZigyNTYmcil7Y29uc3QgaT10LmdldFVpbnQxNihlKTtlKz0yO2c9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWl9cmV0dXJuW2UtaSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOnIsZ2x5cGhJbmRleDpzLGFyZ3VtZW50MTpuLGFyZ3VtZW50MjpvLHRyYW5zZjphLGluc3RydWN0aW9uczpnfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWl9c2NhbGUoZSx0KXt9fWZ1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGkpe2VbdF09aT4+OCYyNTU7ZVt0KzFdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGkpe2VbdF09aT4+MjQmMjU1O2VbdCsxXT1pPj4xNiYyNTU7ZVt0KzJdPWk+PjgmMjU1O2VbdCszXT0yNTUmaX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGkpe2lmKGkgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGksdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGkpZm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKWVbdCsrXT0yNTUmaS5jaGFyQ29kZUF0KGEpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgaSllW3QrK109MjU1JmF9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgaT0xLGE9MDtmb3IoOyhpXmUpPmk7KXtpPDw9MTthKyt9Y29uc3Qgcj1pKnQ7cmV0dXJue3JhbmdlOnIsZW50cnk6YSxyYW5nZVNoaWZ0OnQqZS1yfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsaT1PYmplY3Qua2V5cyh0KTtpLnNvcnQoKTtjb25zdCBhPWkubGVuZ3RoO2xldCByLHMsbixvLGcsYz0xMisxNiphO2NvbnN0IGw9W2NdO2ZvcihyPTA7cjxhO3IrKyl7bz10W2lbcl1dO2MrPShvLmxlbmd0aCszJi00KT4+PjA7bC5wdXNoKGMpfWNvbnN0IGg9bmV3IFVpbnQ4QXJyYXkoYyk7Zm9yKHI9MDtyPGE7cisrKXtvPXRbaVtyXV07d3JpdGVEYXRhKGgsbFtyXSxvKX0idHJ1ZSI9PT1lJiYoZT1zdHJpbmczMig2NTUzNikpO2hbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtoWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7aFsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2hbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGgsNCxhKTtjb25zdCBDPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGEsMTYpO3dyaXRlSW50MTYoaCw2LEMucmFuZ2UpO3dyaXRlSW50MTYoaCw4LEMuZW50cnkpO3dyaXRlSW50MTYoaCwxMCxDLnJhbmdlU2hpZnQpO2M9MTI7Zm9yKHI9MDtyPGE7cisrKXtnPWlbcl07aFtjXT0yNTUmZy5jaGFyQ29kZUF0KDApO2hbYysxXT0yNTUmZy5jaGFyQ29kZUF0KDEpO2hbYysyXT0yNTUmZy5jaGFyQ29kZUF0KDIpO2hbYyszXT0yNTUmZy5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKHM9bFtyXSxuPWxbcisxXTtzPG47cys9NCl7ZT1lK3JlYWRVaW50MzIoaCxzKT4+PjB9d3JpdGVJbnQzMihoLGMrNCxlKTt3cml0ZUludDMyKGgsYys4LGxbcl0pO3dyaXRlSW50MzIoaCxjKzEyLHRbZ10ubGVuZ3RoKTtjKz0xNn1yZXR1cm4gaH1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fWNvbnN0IF9pPVs0XSx6aT1bNV0sJGk9WzZdLEFhPVs3XSxlYT1bOF0sdGE9WzEyLDM1XSxpYT1bMTRdLGFhPVsyMV0scmE9WzIyXSxzYT1bMzBdLG5hPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcixzLG4sbz0hMTtmb3IobGV0IGc9MDtnPGE7ZysrKXtsZXQgYT1lW2ddO2lmKGE8MzIpezEyPT09YSYmKGE9KGE8PDgpK2VbKytnXSk7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLF9pKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsemkpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSwkaSk7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLEFhKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsZWEpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbbl0pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtuXSx0LGkpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXI9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIscmEpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChpYVswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsYWEpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEscmEpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsc2EpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbmEpO2JyZWFrO2Nhc2UgMzA3ODppZihpKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsaWEpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsaWEpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyxlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxhYSk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgZz10aGlzLnN0YWNrLnBvcCgpLGM9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goYy9nKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgbD10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1uJiYzPT09bCl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsdGEsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PW4mJjA9PT1sJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrYSsnIicpfWlmKG8pYnJlYWt9ZWxzZXthPD0yNDY/YS09MTM5OmE9YTw9MjUwPzI1NiooYS0yNDcpK2VbKytnXSsxMDg6YTw9MjU0Py0yNTYqKGEtMjUxKS1lWysrZ10tMTA4OigyNTUmZVsrK2ddKTw8MjR8KDI1NSZlWysrZ10pPDwxNnwoMjU1JmVbKytnXSk8PDh8MjU1JmVbKytnXTt0aGlzLnN0YWNrLnB1c2goYSl9fXJldHVybiBvfWV4ZWN1dGVDb21tYW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+YSlyZXR1cm4hMDtjb25zdCByPWEtZTtmb3IobGV0IGU9cjtlPGE7ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO2lmKE51bWJlci5pc0ludGVnZXIodCkpdGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk7ZWxzZXt0PTY1NTM2KnR8MDt0aGlzLm91dHB1dC5wdXNoKDI1NSx0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX19dGhpcy5vdXRwdXQucHVzaCguLi50KTtpP3RoaXMuc3RhY2suc3BsaWNlKHIsZSk6dGhpcy5zdGFjay5sZW5ndGg9MDtyZXR1cm4hMX19ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gZGVjcnlwdChlLHQsaSl7aWYoaT49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBhLHIscz0wfHQ7Zm9yKGE9MDthPGk7YSsrKXM9NTI4NDUqKGVbYV0rcykrMjI3MTkmNjU1MzU7Y29uc3Qgbj1lLmxlbmd0aC1pLG89bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGE9aSxyPTA7cjxuO2ErKyxyKyspe2NvbnN0IHQ9ZVthXTtvW3JdPXRecz4+ODtzPTUyODQ1Kih0K3MpKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIGlzU3BlY2lhbChlKXtyZXR1cm4gNDc9PT1lfHw5MT09PWV8fDkzPT09ZXx8MTIzPT09ZXx8MTI1PT09ZXx8NDA9PT1lfHw0MT09PWV9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGk9ISgoaXNIZXhEaWdpdCh0WzBdKXx8aXNXaGl0ZVNwYWNlKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgU3RyZWFtKGk/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsaSl7bGV0IGE9MHx0O2NvbnN0IHI9ZS5sZW5ndGgscz1uZXcgVWludDhBcnJheShyPj4+MSk7bGV0IG4sbztmb3Iobj0wLG89MDtuPHI7bisrKXtjb25zdCB0PWVbbl07aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7bisrO2xldCBpO2Zvcig7bjxyJiYhaXNIZXhEaWdpdChpPWVbbl0pOyluKys7aWYobjxyKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxpKSwxNik7c1tvKytdPWVeYT4+ODthPTUyODQ1KihlK2EpKzIyNzE5JjY1NTM1fX1yZXR1cm4gcy5zbGljZShpLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFpO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgaT0iIjtkb3tpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiFpc1doaXRlU3BhY2UodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBpfXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGk9W10sYT1bXSxyPU9iamVjdC5jcmVhdGUobnVsbCk7ci5sZW5JVj00O2NvbnN0IHM9e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOnJ9fTtsZXQgbixvLGcsYztmb3IoO251bGwhPT0obj10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1uKXtuPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2gobil7Y2FzZSJDaGFyU3RyaW5ncyI6dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7Oyl7bj10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PW58fCJlbmQiPT09bilicmVhaztpZigiLyIhPT1uKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2c9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Yz1zLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgaT10aGlzLnJlYWRDaGFyU3RyaW5ncyhnLGMpO3RoaXMubmV4dENoYXIoKTtuPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09bj90aGlzLmdldFRva2VuKCk6Ii8iPT09biYmdGhpcy5wcmV2Q2hhcigpO2EucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOml9KX1icmVhaztjYXNlIlN1YnJzIjp0aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjPXMucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGcsYyk7dGhpcy5uZXh0Q2hhcigpO249dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1uJiZ0aGlzLmdldFRva2VuKCk7aVtlXT1hfWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOmNvbnN0IGU9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmxlbmd0aD4wJiZlLmxlbmd0aCwwO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KClbMF07YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlcigpfHwuMDY7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWRCb29sZWFuKCl9fWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6cn1vZiBhKXtjb25zdCBhPW5ldyBUeXBlMUNoYXJTdHJpbmcsbj1hLmNvbnZlcnQodCxpLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCk7bGV0IG89YS5vdXRwdXQ7biYmKG89WzE0XSk7Y29uc3QgZz17Z2x5cGhOYW1lOnIsY2hhcnN0cmluZzpvLHdpZHRoOmEud2lkdGgsbHNiOmEubHNiLHNlYWM6YS5zZWFjfTsiLm5vdGRlZiI9PT1yP3MuY2hhcnN0cmluZ3MudW5zaGlmdChnKTpzLmNoYXJzdHJpbmdzLnB1c2goZyk7aWYoZS5idWlsdEluRW5jb2Rpbmcpe2NvbnN0IHQ9ZS5idWlsdEluRW5jb2RpbmcuaW5kZXhPZihyKTt0Pi0xJiZ2b2lkIDA9PT1lLndpZHRoc1t0XSYmdD49ZS5maXJzdENoYXImJnQ8PWUubGFzdENoYXImJihlLndpZHRoc1t0XT1hLndpZHRoKX19cmV0dXJuIHN9ZXh0cmFjdEZvbnRIZWFkZXIoZSl7bGV0IHQ7Zm9yKDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dCl7dD10aGlzLmdldFRva2VuKCk7c3dpdGNoKHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3QgaT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1pO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IGE9dGhpcy5nZXRUb2tlbigpO2xldCByO2lmKC9eXGQrJC8udGVzdChhKSl7cj1bXTtjb25zdCBlPTB8cGFyc2VJbnQoYSwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCIhPT10JiYiZGVmIiE9PXQ7KXt0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dClyZXR1cm59aWYoImRlZiI9PT10KWJyZWFrO2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGk9dGhpcy5nZXRUb2tlbigpO3JbZV09aTt0aGlzLmdldFRva2VuKCl9fWVsc2Ugcj1nZXRFbmNvZGluZyhhKTtlLmJ1aWx0SW5FbmNvZGluZz1yO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHM9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heChzWzNdLHNbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihzWzFdLHNbM10pO2UuYXNjZW50U2NhbGVkPSEwfX19fWZ1bmN0aW9uIGZpbmRCbG9jayhlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aCxyPXQubGVuZ3RoLHM9YS1yO2xldCBuPWksbz0hMTtmb3IoO248czspe2xldCBpPTA7Zm9yKDtpPHImJmVbbitpXT09PXRbaV07KWkrKztpZihpPj1yKXtuKz1pO2Zvcig7bjxhJiZpc1doaXRlU3BhY2UoZVtuXSk7KW4rKztvPSEwO2JyZWFrfW4rK31yZXR1cm57Zm91bmQ6byxsZW5ndGg6bn19Y2xhc3MgVHlwZTFGb250e2NvbnN0cnVjdG9yKGUsdCxpKXtsZXQgYT1pLmxlbmd0aDEscj1pLmxlbmd0aDIscz10LnBlZWtCeXRlcyg2KTtjb25zdCBuPTEyOD09PXNbMF0mJjE9PT1zWzFdO2lmKG4pe3Quc2tpcCg2KTthPXNbNV08PDI0fHNbNF08PDE2fHNbM108PDh8c1syXX1jb25zdCBvPWZ1bmN0aW9uIGdldEhlYWRlckJsb2NrKGUsdCl7Y29uc3QgaT1bMTAxLDEwMSwxMjAsMTAxLDk5XSxhPWUucG9zO2xldCByLHMsbixvO3RyeXtyPWUuZ2V0Qnl0ZXModCk7cz1yLmxlbmd0aH1jYXRjaHt9aWYocz09PXQpe249ZmluZEJsb2NrKHIsaSx0LTIqaS5sZW5ndGgpO2lmKG4uZm91bmQmJm4ubGVuZ3RoPT09dClyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0ociksbGVuZ3RoOnR9fXdhcm4oJ0ludmFsaWQgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7ZS5wb3M9YTtmb3IoOzspe249ZmluZEJsb2NrKGUucGVla0J5dGVzKDIwNDgpLGksMCk7aWYoMD09PW4ubGVuZ3RoKWJyZWFrO2UucG9zKz1uLmxlbmd0aDtpZihuLmZvdW5kKXtvPWUucG9zLWE7YnJlYWt9fWUucG9zPWE7aWYobylyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyhvKSksbGVuZ3RoOm99O3dhcm4oJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKHQpKSxsZW5ndGg6dH19KHQsYSk7bmV3IFR5cGUxUGFyc2VyKG8uc3RyZWFtLCExLEdpKS5leHRyYWN0Rm9udEhlYWRlcihpKTtpZihuKXtzPXQuZ2V0Qnl0ZXMoNik7cj1zWzVdPDwyNHxzWzRdPDwxNnxzWzNdPDw4fHNbMl19Y29uc3QgZz1mdW5jdGlvbiBnZXRFZXhlY0Jsb2NrKGUsdCl7Y29uc3QgaT1lLmdldEJ5dGVzKCk7aWYoMD09PWkubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oaSksbGVuZ3RoOmkubGVuZ3RofX0odCksYz1uZXcgVHlwZTFQYXJzZXIoZy5zdHJlYW0sITAsR2kpLmV4dHJhY3RGb250UHJvZ3JhbShpKTtmb3IoY29uc3QgZSBpbiBjLnByb3BlcnRpZXMpaVtlXT1jLnByb3BlcnRpZXNbZV07Y29uc3QgbD1jLmNoYXJzdHJpbmdzLGg9dGhpcy5nZXRUeXBlMkNoYXJzdHJpbmdzKGwpLEM9dGhpcy5nZXRUeXBlMlN1YnJzKGMuc3VicnMpO3RoaXMuY2hhcnN0cmluZ3M9bDt0aGlzLmRhdGE9dGhpcy53cmFwKGUsaCx0aGlzLmNoYXJzdHJpbmdzLEMsaSk7dGhpcy5zZWFjcz10aGlzLmdldFNlYWNzKGMuY2hhcnN0cmluZ3MpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGgrMX1nZXRDaGFyc2V0KCl7Y29uc3QgZT1bIi5ub3RkZWYiXTtmb3IoY29uc3R7Z2x5cGhOYW1lOnR9b2YgdGhpcy5jaGFyc3RyaW5ncyllLnB1c2godCk7cmV0dXJuIGV9Z2V0R2x5cGhNYXBwaW5nKGUpe2NvbnN0IHQ9dGhpcy5jaGFyc3RyaW5ncztpZihlLmNvbXBvc2l0ZSl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyl7aVtlLmNNYXAuY2hhckNvZGVPZihhKV09YSsxfXJldHVybiBpfWNvbnN0IGk9WyIubm90ZGVmIl07bGV0IGEscjtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKWkucHVzaCh0W3JdLmdseXBoTmFtZSk7Y29uc3Qgcz1lLmJ1aWx0SW5FbmNvZGluZztpZihzKXthPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgaW4gcyl7cj1pLmluZGV4T2Yoc1tlXSk7cj49MCYmKGFbZV09cil9fXJldHVybiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSxhLGkpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXTthLnNlYWMmJih0W2krMV09YS5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl0LnB1c2goaS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgaT1lLmxlbmd0aDt0PWk8MTEzMz8xMDc6aTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPHQ7cisrKWEucHVzaChbMTFdKTtmb3Iocj0wO3I8aTtyKyspYS5wdXNoKGVbcl0pO3JldHVybiBhfXdyYXAoZSx0LGksYSxyKXtjb25zdCBzPW5ldyBDRkY7cy5oZWFkZXI9bmV3IENGRkhlYWRlcigxLDAsNCw0KTtzLm5hbWVzPVtlXTtjb25zdCBuPW5ldyBDRkZUb3BEaWN0O24uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO24uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7bi5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO24uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO24uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7bi5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtuLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsci5mb250TWF0cml4KTtuLnNldEJ5TmFtZSgiRm9udEJCb3giLHIuYmJveCk7bi5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO24uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7bi5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1uO2NvbnN0IG89bmV3IENGRlN0cmluZ3M7by5hZGQoIlZlcnNpb24gMC4xMSIpO28uYWRkKCJTZWUgb3JpZ2luYWwgbm90aWNlIik7by5hZGQoZSk7by5hZGQoZSk7by5hZGQoIk1lZGl1bSIpO3Muc3RyaW5ncz1vO3MuZ2xvYmFsU3VickluZGV4PW5ldyBDRkZJbmRleDtjb25zdCBnPXQubGVuZ3RoLGM9WyIubm90ZGVmIl07bGV0IGwsaDtmb3IobD0wO2w8ZztsKyspe2NvbnN0IGU9aVtsXS5nbHlwaE5hbWU7LTE9PT1kaS5pbmRleE9mKGUpJiZvLmFkZChlKTtjLnB1c2goZSl9cy5jaGFyc2V0PW5ldyBDRkZDaGFyc2V0KCExLDAsYyk7Y29uc3QgQz1uZXcgQ0ZGSW5kZXg7Qy5hZGQoWzEzOSwxNF0pO2ZvcihsPTA7bDxnO2wrKylDLmFkZCh0W2xdKTtzLmNoYXJTdHJpbmdzPUM7Y29uc3QgUT1uZXcgQ0ZGUHJpdmF0ZURpY3Q7US5zZXRCeU5hbWUoIlN1YnJzIixudWxsKTtjb25zdCBFPVsiQmx1ZVZhbHVlcyIsIk90aGVyQmx1ZXMiLCJGYW1pbHlCbHVlcyIsIkZhbWlseU90aGVyQmx1ZXMiLCJTdGVtU25hcEgiLCJTdGVtU25hcFYiLCJCbHVlU2hpZnQiLCJCbHVlRnV6eiIsIkJsdWVTY2FsZSIsIkxhbmd1YWdlR3JvdXAiLCJFeHBhbnNpb25GYWN0b3IiLCJGb3JjZUJvbGQiLCJTdGRIVyIsIlN0ZFZXIl07Zm9yKGw9MCxoPUUubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9RVtsXTtpZighKGUgaW4gci5wcml2YXRlRGF0YSkpY29udGludWU7Y29uc3QgdD1yLnByaXZhdGVEYXRhW2VdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPXQubGVuZ3RoLTE7ZT4wO2UtLSl0W2VdLT10W2UtMV07US5zZXRCeU5hbWUoZSx0KX1zLnRvcERpY3QucHJpdmF0ZURpY3Q9UTtjb25zdCB1PW5ldyBDRkZJbmRleDtmb3IobD0wLGg9YS5sZW5ndGg7bDxoO2wrKyl1LmFkZChhW2xdKTtRLnN1YnJzSW5kZXg9dTtyZXR1cm4gbmV3IENGRkNvbXBpbGVyKHMpLmNvbXBpbGUoKX19Y29uc3Qgb2E9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLGdhPTFlMyxJYT1bImFzY2VudCIsImJib3giLCJibGFjayIsImJvbGQiLCJjaGFyUHJvY09wZXJhdG9yTGlzdCIsImNvbXBvc2l0ZSIsImNzc0ZvbnRJbmZvIiwiZGF0YSIsImRlZmF1bHRWTWV0cmljcyIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiLCJmYWxsYmFja05hbWUiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwic3lzdGVtRm9udEluZm8iLCJ0eXBlIiwidmVydGljYWwiXSxjYT1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09clswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxpPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGkpaVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBpIGluIGUuZmFsbGJhY2tUb1VuaWNvZGUpZS50b1VuaWNvZGUuaGFzKGkpfHwodFtpXT1lLmZhbGxiYWNrVG9Vbmljb2RlW2ldKTt0Lmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZCh0KX1jbGFzcyBmb250c19HbHlwaHtjb25zdHJ1Y3RvcihlLHQsaSxhLHIscyxuLG8sZyl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWU7dGhpcy5mb250Q2hhcj10O3RoaXMudW5pY29kZT1pO3RoaXMuYWNjZW50PWE7dGhpcy53aWR0aD1yO3RoaXMudm1ldHJpYz1zO3RoaXMub3BlcmF0b3JMaXN0SWQ9bjt0aGlzLmlzU3BhY2U9bzt0aGlzLmlzSW5Gb250PWd9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYXRlZ29yeSIsZnVuY3Rpb24gZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeShlKXtjb25zdCB0PU5pLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IGk9ZS5tYXRjaChSaSksYT17aXNXaGl0ZXNwYWNlOiEhaT8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhaT8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIWk/LlszXX07Tmkuc2V0KGUsYSk7cmV0dXJuIGF9KHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGkpe2VbdCsxXT1pO2VbdF09aT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBpPShlPDw4KSt0O3JldHVybiAzMjc2OCZpP2ktNjU1MzY6aX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe3JldHVybiJ0dGNmIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfWZ1bmN0aW9uIGdldEZvbnRGaWxlVHlwZShlLHt0eXBlOnQsc3VidHlwZTppLGNvbXBvc2l0ZTphfSl7bGV0IHIscztpZihmdW5jdGlvbiBpc1RydWVUeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PXJlYWRVaW50MzIodCwwKXx8InRydWUiPT09Ynl0ZXNUb1N0cmluZyh0KX0oZSl8fGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKSlyPWE/IkNJREZvbnRUeXBlMiI6IlRydWVUeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzT3BlblR5cGVGaWxlKGUpe3JldHVybiJPVFRPIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfShlKSlyPWE/IkNJREZvbnRUeXBlMiI6Ik9wZW5UeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7cmV0dXJuIDM3PT09dFswXSYmMzM9PT10WzFdfHwxMjg9PT10WzBdJiYxPT09dFsxXX0oZSkpcj1hPyJDSURGb250VHlwZTAiOiJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7ZWxzZSBpZihmdW5jdGlvbiBpc0NGRkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gdFswXT49MSYmdFszXT49MSYmdFszXTw9NH0oZSkpaWYoYSl7cj0iQ0lERm9udFR5cGUwIjtzPSJDSURGb250VHlwZTBDIn1lbHNle3I9Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtzPSJUeXBlMUMifWVsc2V7d2FybigiZ2V0Rm9udEZpbGVUeXBlOiBVbmFibGUgdG8gZGV0ZWN0IGNvcnJlY3QgZm9udCBmaWxlIFR5cGUvU3VidHlwZS4iKTtyPXQ7cz1pfXJldHVybltyLHNdfWZ1bmN0aW9uIGFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoZSx0KXtmb3IoY29uc3QgaSBpbiB0KWVbK2ldPXRbaV19ZnVuY3Rpb24gYnVpbGRUb0ZvbnRDaGFyKGUsdCxpKXtjb25zdCBhPVtdO2xldCByO2ZvcihsZXQgaT0wLHM9ZS5sZW5ndGg7aTxzO2krKyl7cj1nZXRVbmljb2RlRm9yR2x5cGgoZVtpXSx0KTstMSE9PXImJihhW2ldPXIpfWZvcihjb25zdCBlIGluIGkpe3I9Z2V0VW5pY29kZUZvckdseXBoKGlbZV0sdCk7LTEhPT1yJiYoYVsrZV09cil9cmV0dXJuIGF9ZnVuY3Rpb24gaXNNYWNOYW1lUmVjb3JkKGUpe3JldHVybiAxPT09ZS5wbGF0Zm9ybSYmMD09PWUuZW5jb2RpbmcmJjA9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGlzV2luTmFtZVJlY29yZChlKXtyZXR1cm4gMz09PWUucGxhdGZvcm0mJjE9PT1lLmVuY29kaW5nJiYxMDMzPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxpPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBhPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYSk7d2FybihhKTtyZXR1cm4gdH1mdW5jdGlvbiBhZGp1c3RNYXBwaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPW5ldyBNYXAsbj1bXSxvPW5ldyBTZXQ7bGV0IGc9MDtsZXQgYz1vYVtnXVswXSxsPW9hW2ddWzFdO2Zvcihjb25zdCBDIGluIGUpe2xldCBRPWVbQ107aWYoIXQoUSkpY29udGludWU7aWYoYz5sKXtnKys7aWYoZz49b2EubGVuZ3RoKXt3YXJuKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31jPW9hW2ddWzBdO2w9b2FbZ11bMV19Y29uc3QgRT1jKys7MD09PVEmJihRPWkpO2xldCB1PWEuZ2V0KEMpOyJzdHJpbmciPT10eXBlb2YgdSYmKHU9dS5jb2RlUG9pbnRBdCgwKSk7aWYodSYmIShoPXUsb2FbMF1bMF08PWgmJmg8PW9hWzBdWzFdfHxvYVsxXVswXTw9aCYmaDw9b2FbMV1bMV0pJiYhby5oYXMoUSkpe3Muc2V0KHUsUSk7by5hZGQoUSl9cltFXT1RO25bQ109RX12YXIgaDtyZXR1cm57dG9Gb250Q2hhcjpuLGNoYXJDb2RlVG9HbHlwaElkOnIsdG9Vbmljb2RlRXh0cmFNYXA6cyxuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlOmN9fWZ1bmN0aW9uIGNyZWF0ZUNtYXBUYWJsZShlLHQsaSl7Y29uc3QgYT1mdW5jdGlvbiBnZXRSYW5nZXMoZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHQgaW4gZSllW3RdPj1pfHxhLnB1c2goe2ZvbnRDaGFyQ29kZTowfHQsZ2x5cGhJZDplW3RdfSk7aWYodClmb3IoY29uc3RbZSxyXW9mIHQpcj49aXx8YS5wdXNoKHtmb250Q2hhckNvZGU6ZSxnbHlwaElkOnJ9KTswPT09YS5sZW5ndGgmJmEucHVzaCh7Zm9udENoYXJDb2RlOjAsZ2x5cGhJZDowfSk7YS5zb3J0KChmdW5jdGlvbiBmb250R2V0UmFuZ2VzU29ydChlLHQpe3JldHVybiBlLmZvbnRDaGFyQ29kZS10LmZvbnRDaGFyQ29kZX0pKTtjb25zdCByPVtdLHM9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxzOyl7Y29uc3QgdD1hW2VdLmZvbnRDaGFyQ29kZSxpPVthW2VdLmdseXBoSWRdOysrZTtsZXQgbj10O2Zvcig7ZTxzJiZuKzE9PT1hW2VdLmZvbnRDaGFyQ29kZTspe2kucHVzaChhW2VdLmdseXBoSWQpOysrbjsrK2U7aWYoNjU1MzU9PT1uKWJyZWFrfXIucHVzaChbdCxuLGldKX1yZXR1cm4gcn0oZSx0LGkpLHI9YS5hdCgtMSlbMV0+NjU1MzU/MjoxO2xldCBzLG4sbyxnLGM9IlwwXDAiK3N0cmluZzE2KHIpKyJcMANcMAEiK3N0cmluZzMyKDQrOCpyKTtmb3Iocz1hLmxlbmd0aC0xO3M+PTAmJiEoYVtzXVswXTw9NjU1MzUpOy0tcyk7Y29uc3QgbD1zKzE7YVtzXVswXTw2NTUzNSYmNjU1MzU9PT1hW3NdWzFdJiYoYVtzXVsxXT02NTUzNCk7Y29uc3QgaD1hW3NdWzFdPDY1NTM1PzE6MCxDPWwraCxRPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKEMsMik7bGV0IEUsdSxkLGYscD0iIixtPSIiLHk9IiIsdz0iIixiPSIiLEQ9MDtmb3Iocz0wLG49bDtzPG47cysrKXtFPWFbc107dT1FWzBdO2Q9RVsxXTtwKz1zdHJpbmcxNih1KTttKz1zdHJpbmcxNihkKTtmPUVbMl07bGV0IGU9ITA7Zm9yKG89MSxnPWYubGVuZ3RoO288ZzsrK28paWYoZltvXSE9PWZbby0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe3krPXN0cmluZzE2KGZbMF0tdSY2NTUzNSk7dys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKEMtcykrMipEO0QrPWQtdSsxO3krPXN0cmluZzE2KDApO3crPXN0cmluZzE2KGUpO2ZvcihvPTAsZz1mLmxlbmd0aDtvPGc7KytvKWIrPXN0cmluZzE2KGZbb10pfX1pZihoPjApe20rPSLDv8O/IjtwKz0iw7/DvyI7eSs9IlwwASI7dys9IlwwXDAifWNvbnN0IFM9IlwwXDAiK3N0cmluZzE2KDIqQykrc3RyaW5nMTYoUS5yYW5nZSkrc3RyaW5nMTYoUS5lbnRyeSkrc3RyaW5nMTYoUS5yYW5nZVNoaWZ0KSttKyJcMFwwIitwK3krdytiO2xldCBrPSIiLFI9IiI7aWYocj4xKXtjKz0iXDADXDBcbiIrc3RyaW5nMzIoNCs4KnIrNCtTLmxlbmd0aCk7az0iIjtmb3Iocz0wLG49YS5sZW5ndGg7czxuO3MrKyl7RT1hW3NdO3U9RVswXTtmPUVbMl07bGV0IGU9ZlswXTtmb3Iobz0xLGc9Zi5sZW5ndGg7bzxnOysrbylpZihmW29dIT09ZltvLTFdKzEpe2Q9RVswXStvLTE7ays9c3RyaW5nMzIodSkrc3RyaW5nMzIoZCkrc3RyaW5nMzIoZSk7dT1kKzE7ZT1mW29dfWsrPXN0cmluZzMyKHUpK3N0cmluZzMyKEVbMV0pK3N0cmluZzMyKGUpfVI9IlwwXGZcMFwwIitzdHJpbmczMihrLmxlbmd0aCsxNikrIlwwXDBcMFwwIitzdHJpbmczMihrLmxlbmd0aC8xMil9cmV0dXJuIGMrIlwwBCIrc3RyaW5nMTYoUy5sZW5ndGgrNCkrUytSK2t9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGkpe2l8fD17dW5pdHNQZXJFbTowLHlNYXg6MCx5TWluOjAsYXNjZW50OjAsZGVzY2VudDowfTtsZXQgYT0wLHI9MCxzPTAsbj0wLG89bnVsbCxnPTAsYz0tMTtpZih0KXtmb3IobGV0IGUgaW4gdCl7ZXw9MDsobz5lfHwhbykmJihvPWUpO2c8ZSYmKGc9ZSk7Yz1nZXRVbmljb2RlUmFuZ2VGb3IoZSxjKTtpZihjPDMyKWF8PTE8PGM7ZWxzZSBpZihjPDY0KXJ8PTE8PGMtMzI7ZWxzZSBpZihjPDk2KXN8PTE8PGMtNjQ7ZWxzZXtpZighKGM8MTIzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuaWNvZGUgcmFuZ2VzIEJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZSIpO258PTE8PGMtOTZ9fWc+NjU1MzUmJihnPTY1NTM1KX1lbHNle289MDtnPTI1NX1jb25zdCBsPWUuYmJveHx8WzAsMCwwLDBdLGg9aS51bml0c1BlckVtfHwoZS5mb250TWF0cml4PzEvTWF0aC5tYXgoLi4uZS5mb250TWF0cml4LnNsaWNlKDAsNCkubWFwKE1hdGguYWJzKSk6MWUzKSxDPWUuYXNjZW50U2NhbGVkPzE6aC9nYSxRPWkuYXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuYXNjZW50fHxsWzNdKSk7bGV0IEU9aS5kZXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuZGVzY2VudHx8bFsxXSkpO0U+MCYmZS5kZXNjZW50PjAmJmxbMV08MCYmKEU9LUUpO2NvbnN0IHU9aS55TWF4fHxRLGQ9LWkueU1pbnx8LUU7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrc3RyaW5nMzIoYSkrc3RyaW5nMzIocikrc3RyaW5nMzIocykrc3RyaW5nMzIobikrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoZ3x8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoUSkrc3RyaW5nMTYoRSkrIlwwZCIrc3RyaW5nMTYodSkrc3RyaW5nMTYoZCkrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KG98fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7cmV0dXJuIlwwA1wwXDAiK3N0cmluZzMyKE1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSkpKyJcMFwwXDBcMCIrc3RyaW5nMzIoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBjcmVhdGVQb3N0c2NyaXB0TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bXlx4MjEtXHg3RV18W1tcXSgpe308Pi8lXS9nLCIiKS5zbGljZSgwLDYzKX1mdW5jdGlvbiBjcmVhdGVOYW1lVGFibGUoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCBpPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpLHRbMF1bN118fCJVbmtub3duIix0WzBdWzhdfHwiVW5rbm93biIsdFswXVs5XXx8IlVua25vd24iXSxhPVtdO2xldCByLHMsbixvLGc7Zm9yKHI9MCxzPWkubGVuZ3RoO3I8cztyKyspe2c9dFsxXVtyXXx8aVtyXTtjb25zdCBlPVtdO2ZvcihuPTAsbz1nLmxlbmd0aDtuPG87bisrKWUucHVzaChzdHJpbmcxNihnLmNoYXJDb2RlQXQobikpKTthLnB1c2goZS5qb2luKCIiKSl9Y29uc3QgYz1baSxhXSxsPVsiXDABIiwiXDADIl0saD1bIlwwXDAiLCJcMAEiXSxDPVsiXDBcMCIsIgRcdCJdLFE9aS5sZW5ndGgqbC5sZW5ndGg7bGV0IEU9IlwwXDAiK3N0cmluZzE2KFEpK3N0cmluZzE2KDEyKlErNiksdT0wO2ZvcihyPTAscz1sLmxlbmd0aDtyPHM7cisrKXtjb25zdCBlPWNbcl07Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKyspe2c9ZVtuXTtFKz1sW3JdK2hbcl0rQ1tyXStzdHJpbmcxNihuKStzdHJpbmcxNihnLmxlbmd0aCkrc3RyaW5nMTYodSk7dSs9Zy5sZW5ndGh9fUUrPWkuam9pbigiIikrYS5qb2luKCIiKTtyZXR1cm4gRX1jbGFzcyBGb250e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLm5hbWU9ZTt0aGlzLnBzTmFtZT1udWxsO3RoaXMubWltZXR5cGU9bnVsbDt0aGlzLmRpc2FibGVGb250RmFjZT0hMTt0aGlzLmxvYWRlZE5hbWU9aS5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9aS5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89aS5jc3NGb250SW5mbzt0aGlzLl9jaGFyc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZ2x5cGhDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSEhKGkuZmxhZ3MmeGkpO2lmKCFhJiYhaS5pc1NpbXVsYXRlZEZsYWdzKXtjb25zdCB0PWUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikuc3BsaXQoIi0iLDEpWzBdLGk9T2koKTtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIrIikpaWYoaVtlXSl7YT0hMDticmVha319dGhpcy5pc1NlcmlmRm9udD1hO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoaS5mbGFncyZIaSk7dGhpcy5pc01vbm9zcGFjZT0hIShpLmZsYWdzJk1pKTtsZXR7dHlwZTpyLHN1YnR5cGU6c309aTt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLnN5c3RlbUZvbnRJbmZvPWkuc3lzdGVtRm9udEluZm87Y29uc3Qgbj1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW47dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9blsxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWkuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9aS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9aS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9aS5jb21wb3NpdGU7dGhpcy5jTWFwPWkuY01hcDt0aGlzLmNhcEhlaWdodD1pLmNhcEhlaWdodC9nYTt0aGlzLmFzY2VudD1pLmFzY2VudC9nYTt0aGlzLmRlc2NlbnQ9aS5kZXNjZW50L2dhO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLmJib3g9aS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWkuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09aS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGkuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWkuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFpLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9aS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1pLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGkpO3JldHVybn1bcixzXT1nZXRGb250RmlsZVR5cGUodCxpKTtyPT09dGhpcy50eXBlJiZzPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3J9LyR7c30uYCk7bGV0IG87dHJ5e3N3aXRjaChyKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGE9IlR5cGUxQyI9PT1zfHwiQ0lERm9udFR5cGUwQyI9PT1zP25ldyBDRkZGb250KHQsaSk6bmV3IFR5cGUxRm9udChlLHQsaSk7YWRqdXN0V2lkdGhzKGkpO289dGhpcy5jb252ZXJ0KGUsYSxpKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7bz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxpKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhpKTtyPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZvbnQgJHtyfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpe3dhcm4oZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShpKTt0aGlzLmRhdGE9bzt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLmZvbnRNYXRyaXg9aS5mb250TWF0cml4O3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1pLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZW5kZXJlciIsRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcyxHaSkpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5JYSwuLi5jYV06SWEsaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhLHI7Zm9yKGEgb2YgdCl7cj10aGlzW2FdO3ZvaWQgMCE9PXImJihpW2FdPXIpfXJldHVybiBpfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6aX09dGhpcztsZXQgYT1ub3JtYWxpemVGb250TmFtZSh0KTtjb25zdCByPUtpKCkscz1xaSgpLG49ISFyW2FdLG89ISghc1thXXx8IXJbc1thXV0pO2E9clthXXx8c1thXXx8YTtjb25zdCBnPVppKClbYV07aWYoZyl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9Zy5hc2NlbnQvZ2EpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Zy5kZXNjZW50L2dhKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1nLmNhcEhlaWdodC9nYSl9dGhpcy5ib2xkPS9ib2xkL2dpLnRlc3QoYSk7dGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSk7dGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHQpO2NvbnN0IGM9L05hcnJvdy9nLnRlc3QodCk7dGhpcy5yZW1lYXN1cmU9KCFufHxjKSYmT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aD4wO2lmKChufHxvKSYmIkNJREZvbnRUeXBlMiI9PT1pJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpKXtjb25zdCBpPWUuY2lkVG9HaWRNYXAsYT1bXTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsV2koKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLGppKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLFhpKCkpO2lmKGkpe2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTt2b2lkIDAhPT1pW3RdJiYoYVsrZV09aVt0XSl9aS5sZW5ndGghPT10aGlzLnRvVW5pY29kZS5sZW5ndGgmJmUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1hW2VdO3ZvaWQgMD09PWlbcl0mJihhWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2FbK2VdPXR9KSk7dGhpcy50b0ZvbnRDaGFyPWE7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChhKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoRWksRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QoYSkpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcih1aSxGaSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYobnx8byl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PWl8fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZVsrdF09aX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9RGkoKSxpPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LGEpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBpPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PWkmJihhPWkpfWlbK3RdPWF9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoaSxXaSgpKTt0aGlzLnRvRm9udENoYXI9aX1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpO3RoaXMubG9hZGVkTmFtZT1hLnNwbGl0KCItIiwxKVswXX1jaGVja0FuZFJlcGFpcihlLHQsaSl7Y29uc3QgYT1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpWyJPUy8yIl09bnVsbDtpLmNtYXA9bnVsbDtpLmhlYWQ9bnVsbDtpLmhoZWE9bnVsbDtpLmhtdHg9bnVsbDtpLm1heHA9bnVsbDtpLm5hbWU9bnVsbDtpLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO2EuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoaVt0LnRhZ109dCkpfXJldHVybiBpfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksaT1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAscz1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChhKTtjb25zdCBuPWUuZ2V0Qnl0ZXMocik7ZS5wb3M9cztpZigiaGVhZCI9PT10KXtuWzhdPW5bOV09blsxMF09blsxMV09MDtuWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmksbGVuZ3RoOnIsb2Zmc2V0OmEsZGF0YTpufX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxpLGEscixzKXtjb25zdCBuPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYodDwwfHx0Pj1lLmxlbmd0aHx8aT5lLmxlbmd0aHx8aS10PD0xMilyZXR1cm4gbjtjb25zdCBvPWUuc3ViYXJyYXkodCxpKSxnPXNpZ25lZEludDE2KG9bMl0sb1szXSksYz1zaWduZWRJbnQxNihvWzRdLG9bNV0pLGw9c2lnbmVkSW50MTYob1s2XSxvWzddKSxoPXNpZ25lZEludDE2KG9bOF0sb1s5XSk7aWYoZz5sKXt3cml0ZVNpZ25lZEludDE2KG8sMixsKTt3cml0ZVNpZ25lZEludDE2KG8sNixnKX1pZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobyw0LGgpO3dyaXRlU2lnbmVkSW50MTYobyw4LGMpfWNvbnN0IEM9c2lnbmVkSW50MTYob1swXSxvWzFdKTtpZihDPDApe2lmKEM8LTEpcmV0dXJuIG47YS5zZXQobyxyKTtuLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gbn1sZXQgUSxFPTEwLHU9MDtmb3IoUT0wO1E8QztRKyspe3U9KG9bRV08PDh8b1tFKzFdKSsxO0UrPTJ9Y29uc3QgZD1FLGY9b1tFXTw8OHxvW0UrMV07bi5zaXplT2ZJbnN0cnVjdGlvbnM9ZjtFKz0yK2Y7Y29uc3QgcD1FO2xldCBtPTA7Zm9yKFE9MDtRPHU7USsrKXtjb25zdCBlPW9bRSsrXTsxOTImZSYmKG9bRS0xXT02MyZlKTtsZXQgdD0yOzImZT90PTE6MTYmZSYmKHQ9MCk7bGV0IGk9Mjs0JmU/aT0xOjMyJmUmJihpPTApO2NvbnN0IGE9dCtpO20rPWE7aWYoOCZlKXtjb25zdCBlPW9bRSsrXTswPT09ZSYmKG9bRS0xXV49OCk7USs9ZTttKz1lKmF9fWlmKDA9PT1tKXJldHVybiBuO2xldCB5PUUrbTtpZih5Pm8ubGVuZ3RoKXJldHVybiBuO2lmKCFzJiZmPjApe2Euc2V0KG8uc3ViYXJyYXkoMCxkKSxyKTthLnNldChbMCwwXSxyK2QpO2Euc2V0KG8uc3ViYXJyYXkocCx5KSxyK2QrMik7eS09ZjtvLmxlbmd0aC15PjMmJih5PXkrMyYtNCk7bi5sZW5ndGg9eTtyZXR1cm4gbn1pZihvLmxlbmd0aC15PjMpe3k9eSszJi00O2Euc2V0KG8uc3ViYXJyYXkoMCx5KSxyKTtuLmxlbmd0aD15O3JldHVybiBufWEuc2V0KG8scik7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShlKXtjb25zdCBpPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1pO2NvbnN0IGE9W1tdLFtdXSxyPVtdLHM9ZS5sZW5ndGgsbj1pK3M7aWYoMCE9PXQuZ2V0VWludDE2KCl8fHM8NilyZXR1cm5bYSxyXTtjb25zdCBvPXQuZ2V0VWludDE2KCksZz10LmdldFVpbnQxNigpO2xldCBjLGw7Zm9yKGM9MDtjPG8mJnQucG9zKzEyPD1uO2MrKyl7Y29uc3QgZT17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoaXNNYWNOYW1lUmVjb3JkKGUpfHxpc1dpbk5hbWVSZWNvcmQoZSkpJiZyLnB1c2goZSl9Zm9yKGM9MCxsPXIubGVuZ3RoO2M8bDtjKyspe2NvbnN0IGU9cltjXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBzPWkrZytlLm9mZnNldDtpZihzK2UubGVuZ3RoPm4pY29udGludWU7dC5wb3M9cztjb25zdCBvPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgaT0iIjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7YVsxXVtvXT1pfWVsc2UgYVswXVtvXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuW2Escl19Y29uc3Qgcj1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGksYSxzLG4sbyxnPWUuZGF0YSxjPTAsbD0wLGg9MDtjb25zdCBDPVtdLFE9W10sRT1bXTtsZXQgdT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxkPSExLGY9MCxwPTA7Zm9yKGxldCBlPWcubGVuZ3RoO2M8ZTspe2NvbnN0IGU9Z1tjKytdO2lmKDY0PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKUMucHVzaChnW2MrK10pfWVsc2UgaWYoNjU9PT1lKXthPWdbYysrXTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHM8PDh8Z1tjKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe2E9ZS0xNzYrMTtpZihkfHxwKWMrPWE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspQy5wdXNoKGdbYysrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe2E9ZS0xODQrMTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHNpZ25lZEludDE2KHMsZ1tjKytdKSl9fWVsc2UgaWYoNDMhPT1lfHx1KWlmKDQ0IT09ZXx8dSl7aWYoNDU9PT1lKWlmKGQpe2Q9ITE7bD1jfWVsc2V7bz1RLnBvcCgpO2lmKCFvKXt3YXJuKCJUVDogRU5ERiBiYWQgc3RhY2siKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufW49RS5wb3AoKTtnPW8uZGF0YTtjPW8uaTt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW25dPUMubGVuZ3RoLW8uc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT1lKXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIElERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9Y31lbHNlIGlmKDg4PT09ZSkrK2Y7ZWxzZSBpZigyNz09PWUpcD1mO2Vsc2UgaWYoODk9PT1lKXtwPT09ZiYmKHA9MCk7LS1mfWVsc2UgaWYoMjg9PT1lJiYhZCYmIXApe2NvbnN0IGU9Qy5hdCgtMSk7ZT4wJiYoYys9ZS0xKX19ZWxzZXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIEZERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9YztuPUMucG9wKCk7dC5mdW5jdGlvbnNEZWZpbmVkW25dPXtkYXRhOmcsaTpjfX1lbHNlIGlmKCFkJiYhcCl7bj1DLmF0KC0xKTtpZihpc05hTihuKSlpbmZvKCJUVDogQ0FMTCBlbXB0eSBzdGFjayAob3IgaW52YWxpZCBlbnRyeSkuIik7ZWxzZXt0LmZ1bmN0aW9uc1VzZWRbbl09ITA7aWYobiBpbiB0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzKXtjb25zdCBlPUMubGVuZ3RoK3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbbl07aWYoZTwwKXt3YXJuKCJUVDogQ0FMTCBpbnZhbGlkIGZ1bmN0aW9ucyBzdGFjayBkZWx0YS4iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufUMubGVuZ3RoPWV9ZWxzZSBpZihuIGluIHQuZnVuY3Rpb25zRGVmaW5lZCYmIUUuaW5jbHVkZXMobikpe1EucHVzaCh7ZGF0YTpnLGk6YyxzdGFja1RvcDpDLmxlbmd0aC0xfSk7RS5wdXNoKG4pO289dC5mdW5jdGlvbnNEZWZpbmVkW25dO2lmKCFvKXt3YXJuKCJUVDogQ0FMTCBub24tZXhpc3RlbnQgZnVuY3Rpb24iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufWc9by5kYXRhO2M9by5pfX19aWYoIWQmJiFwKXtsZXQgdD0wO2U8PTE0Mj90PXJbZV06ZT49MTkyJiZlPD0yMjM/dD0tMTplPj0yMjQmJih0PS0yKTtpZihlPj0xMTMmJmU8PTExNyl7YT1DLnBvcCgpO2lzTmFOKGEpfHwodD0yKi1hKX1mb3IoO3Q8MCYmQy5sZW5ndGg+MDspe0MucG9wKCk7dCsrfWZvcig7dD4wOyl7Qy5wdXNoKE5hTik7dC0tfX19dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM9dTtjb25zdCBtPVtnXTtjPmcubGVuZ3RoJiZtLnB1c2gobmV3IFVpbnQ4QXJyYXkoYy1nLmxlbmd0aCkpO2lmKGg+bCl7d2FybigiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKTttLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpfSFmdW5jdGlvbiBmb2xkVFRUYWJsZShlLHQpe2lmKHQubGVuZ3RoPjEpe2xldCBpLGEscj0wO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXIrPXRbaV0ubGVuZ3RoO3I9ciszJi00O2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkocik7bGV0IG49MDtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7cy5zZXQodFtpXSxuKTtuKz10W2ldLmxlbmd0aH1lLmRhdGE9cztlLmxlbmd0aD1yfX0oZSxtKX1sZXQgcyxuLG8sZztpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmksb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGk9ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbj17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmksbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cixvZmZzZXRUYWJsZTpzfTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBuO2Nhc2UgMjpuLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gbn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7aX0uYCl9KGUpLHI9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbj0wO248aTtuKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW25dO2NvbnN0IGk9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLGkubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtnXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGxldCBlPTAsYT1nLmxlbmd0aDtlPGE7ZSsrKWZvcihsZXQgYT0wLG49Z1tlXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1nW2VdW2FdPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmksdGFibGVzOm99O2lmKCEoci5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgciluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6aSx0YWJsZXM6b30pfX19aWYocyl7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO3M9ZS5oZWFkZXI7bj1lLnRhYmxlc31lbHNle3M9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO249cmVhZFRhYmxlcyh0LHMubnVtVGFibGVzKX1jb25zdCBjPSFuWyJDRkYgIl07aWYoYyl7aWYoIW4ubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighbi5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO24uZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXtjb25zdCB0PWkuY29tcG9zaXRlJiYoaS5jaWRUb0dpZE1hcD8ubGVuZ3RoPjB8fCEoaS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSk7aWYoIk9UVE8iPT09cy52ZXJzaW9uJiYhdHx8IW4uaGVhZHx8IW4uaGhlYXx8IW4ubWF4cHx8IW4ucG9zdCl7Zz1uZXcgU3RyZWFtKG5bIkNGRiAiXS5kYXRhKTtvPW5ldyBDRkZGb250KGcsaSk7YWRqdXN0V2lkdGhzKGkpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxvLGkpfWRlbGV0ZSBuLmdseWY7ZGVsZXRlIG4ubG9jYTtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIW4ubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrbi5tYXhwLm9mZnNldDtsZXQgbD10LmdldEludDMyKCk7Y29uc3QgaD10LmdldFVpbnQxNigpO2lmKDY1NTM2IT09bCYmMjA0ODAhPT1sKXtpZig2PT09bi5tYXhwLmxlbmd0aClsPTIwNDgwO2Vsc2V7aWYoIShuLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtsPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsaSl7ZVt0KzNdPTI1NSZpO2VbdCsyXT1pPj4+ODtlW3QrMV09aT4+PjE2O2VbdF09aT4+PjI0fShuLm1heHAuZGF0YSwwLGwpfWlmKGkuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1oJiZjKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09aSx0PWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLGE9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOm4uZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOm4ubG9jYS5kYXRhLG51bUdseXBoczpofSk7YS5zY2FsZShlKTtjb25zdHtnbHlmOnIsbG9jYTpzLGlzTG9jYXRpb25Mb25nOm99PWEud3JpdGUoKTtuLmdseWYuZGF0YT1yO24ubG9jYS5kYXRhPXM7aWYobyE9PSEhdCl7bi5oZWFkLmRhdGFbNTBdPTA7bi5oZWFkLmRhdGFbNTFdPW8/MTowfWNvbnN0IGc9bi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgaT00KnQsYT1NYXRoLnJvdW5kKGVbdF0qaW50MTYoZ1tpXSxnW2krMV0pKTtnW2ldPWE+PjgmMjU1O2dbaSsxXT0yNTUmYTt3cml0ZVNpZ25lZEludDE2KGcsaSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihnW2krMl0sZ1tpKzNdKSkpfX1sZXQgQz1oKzEsUT0hMDtpZihDPjY1NTM1KXtRPSExO0M9aDt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRT0wLHU9MDtpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7bi5tYXhwLmRhdGFbMTRdPTA7bi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7RT10LmdldFVpbnQxNigpO3QucG9zKz00O3U9dC5nZXRVaW50MTYoKX1uLm1heHAuZGF0YVs0XT1DPj44O24ubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IGQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxpLGEpe2NvbnN0IHI9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxyKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHIpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGk9MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7aTxhO2krKyl7aWYoaT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtpXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtpXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHIsYSk7aWYoaSYmMSZpLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpLmxlbmd0aCsxKTtlLnNldChpLmRhdGEpO2kuZGF0YT1lfXJldHVybiByLmhpbnRzVmFsaWR9KG4uZnBnbSxuLnByZXAsblsiY3Z0ICJdLEUpO2lmKCFkKXtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxpLGEscixzKXtpZighdCl7aSYmKGkuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG49ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1uKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cil7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtyfSkuYCk7bz1yO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgZz1yLW8tKGkubGVuZ3RoLTQqbz4+MSk7aWYoZz4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzIqZyk7ZS5zZXQoaS5kYXRhKTtpZihzKXtlW2kubGVuZ3RoXT1pLmRhdGFbMl07ZVtpLmxlbmd0aCsxXT1pLmRhdGFbM119aS5kYXRhPWV9fSh0LG4uaGhlYSxuLmhtdHgsbi5oZWFkLEMsUSk7aWYoIW4uaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxpKXtjb25zdCBhPWUuZGF0YSxyPWZ1bmN0aW9uIGludDMyKGUsdCxpLGEpe3JldHVybihlPDwyNCkrKHQ8PDE2KSsoaTw8OCkrYX0oYVswXSxhWzFdLGFbMl0sYVszXSk7aWYocj4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK3IpO2FbMF09MDthWzFdPTE7YVsyXT0wO2FbM109MH1jb25zdCBzPWludDE2KGFbNTBdLGFbNTFdKTtpZihzPDB8fHM+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrcyk7Y29uc3QgZT10KzE7aWYoaT09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKGkhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO2FbNTBdPTA7YVs1MV09MX19fShuLmhlYWQsaCxjP24ubG9jYS5sZW5ndGg6MCk7bGV0IGY9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihjKXtjb25zdCBlPWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsaSxhLHIscyxuKXtsZXQgbyxnLGM7aWYoYSl7bz00O2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07Yz1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGkpe2VbdF09aT4+PjI0JjI1NTtlW3QrMV09aT4+MTYmMjU1O2VbdCsyXT1pPj44JjI1NTtlW3QrM109MjU1Jml9fWVsc2V7bz0yO2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2M9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGkpe2VbdF09aT4+OSYyNTU7ZVt0KzFdPWk+PjEmMjU1fX1jb25zdCBsPXM/aSsxOmksaD1vKigxK2wpLEM9bmV3IFVpbnQ4QXJyYXkoaCk7Qy5zZXQoZS5kYXRhLnN1YmFycmF5KDAsaCkpO2UuZGF0YT1DO2NvbnN0IFE9dC5kYXRhLEU9US5sZW5ndGgsdT1uZXcgVWludDhBcnJheShFKTtsZXQgZCxmO2NvbnN0IHA9W107Zm9yKGQ9MCxmPTA7ZDxpKzE7ZCsrLGYrPW8pe2xldCBlPWcoQyxmKTtlPkUmJihlPUUpO3AucHVzaCh7aW5kZXg6ZCxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXAuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKGQ9MDtkPGk7ZCsrKXBbZF0uZW5kT2Zmc2V0PXBbZCsxXS5vZmZzZXQ7cC5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKGQ9MDtkPGk7ZCsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09cFtkXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgaT1wW2QrMV0ub2Zmc2V0O2lmKDAhPT1pKXtwW2RdLmVuZE9mZnNldD1pO2JyZWFrfX1jb25zdCBtPXAuYXQoLTIpOzAhPT1tLm9mZnNldCYmMD09PW0uZW5kT2Zmc2V0JiYobS5lbmRPZmZzZXQ9RSk7Y29uc3QgeT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB3PTA7YyhDLDAsdyk7Zm9yKGQ9MCxmPW87ZDxpO2QrKyxmKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoUSxwW2RdLm9mZnNldCxwW2RdLmVuZE9mZnNldCx1LHcsciksdD1lLmxlbmd0aDswPT09dCYmKHlbZF09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPm4mJihuPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTt3Kz10O2MoQyxmLHcpfWlmKDA9PT13KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihkPTAsZj1vO2Q8bDtkKyssZis9byljKEMsZixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihzKXtjb25zdCBpPWcoQyxvKTtpZih1Lmxlbmd0aD5pK3cpdC5kYXRhPXUuc3ViYXJyYXkoMCxpK3cpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGkrdyk7dC5kYXRhLnNldCh1LnN1YmFycmF5KDAsdykpfXQuZGF0YS5zZXQodS5zdWJhcnJheSgwLGkpLHcpO2MoZS5kYXRhLEMubGVuZ3RoLW8sdytpKX1lbHNlIHQuZGF0YT11LnN1YmFycmF5KDAsdyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eSxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6bn19KG4ubG9jYSxuLmdseWYsaCxlLGQsUSx1KTtmPXQubWlzc2luZ0dseXBocztpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe24ubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtuLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighbi5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1uLmhoZWEuZGF0YVsxMF0mJjA9PT1uLmhoZWEuZGF0YVsxMV0pe24uaGhlYS5kYXRhWzEwXT0yNTU7bi5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCBwPXt1bml0c1BlckVtOmludDE2KG4uaGVhZC5kYXRhWzE4XSxuLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYobi5oZWFkLmRhdGFbNDJdLG4uaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihuLmhlYWQuZGF0YVszOF0sbi5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNF0sbi5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNl0sbi5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbOF0sbi5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD1wLmFzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXAuZGVzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXAubGluZUdhcC9wLnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO24ucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGksYSl7Y29uc3Qgcj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjtjb25zdCBzPXIrZS5sZW5ndGgsbj10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxnLGM9ITA7c3dpdGNoKG4pe2Nhc2UgNjU1MzY6bz12aTticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PWEpe2M9ITE7YnJlYWt9Y29uc3Qgcj1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Yz0hMTticmVha31yLnB1c2goZSl9aWYoIWMpYnJlYWs7Y29uc3QgbD1bXSxoPVtdO2Zvcig7dC5wb3M8czspe2NvbnN0IGU9dC5nZXRCeXRlKCk7aC5sZW5ndGg9ZTtmb3IoZz0wO2c8ZTsrK2cpaFtnXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtsLnB1c2goaC5qb2luKCIiKSl9bz1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9cltnXTtlPDI1OD9vLnB1c2godmlbZV0pOm8ucHVzaChsW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK24pO2M9ITE7aS5kZWZhdWx0RW5jb2RpbmcmJihvPWkuZGVmYXVsdEVuY29kaW5nKX1pLmdseXBoTmFtZXM9bztyZXR1cm4gY30obi5wb3N0LGksaCk7bi5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGkpfTtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWZbZV19aWYoaS5jb21wb3NpdGUpe2NvbnN0IGU9aS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7aS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGksYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHI9LTE7dD9yPWE6dm9pZCAwIT09ZVthXSYmKHI9ZVthXSk7cj49MCYmcjxoJiZoYXNHbHlwaChyKSYmKG1baV09cil9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGksYSl7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgcixzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO3Quc2tpcCgyKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7bGV0IG8sZz0hMTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCByPXQuZ2V0VWludDE2KCkscz10LmdldFVpbnQxNigpLGM9dC5nZXRJbnQzMigpPj4+MDtsZXQgbD0hMTtpZihvPy5wbGF0Zm9ybUlkIT09cnx8bz8uZW5jb2RpbmdJZCE9PXMpe2lmKDAhPT1yfHwwIT09cyYmMSE9PXMmJjMhPT1zKWlmKDE9PT1yJiYwPT09cylsPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1zfHwhYSYmbyl7aWYoaSYmMz09PXImJjA9PT1zKXtsPSEwO2xldCBpPSEwO2lmKGU8bi0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGk9ITEpfWkmJihnPSEwKX19ZWxzZXtsPSEwO2l8fChnPSEwKX1lbHNlIGw9ITA7bCYmKG89e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOnMsb2Zmc2V0OmN9KTtpZihnKWJyZWFrfX1vJiYodC5wb3M9cytvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBjPXQuZ2V0VWludDE2KCk7bGV0IGw9ITE7Y29uc3QgaD1bXTtsZXQgQyxRO2lmKDA9PT1jKXt0LnNraXAoNCk7Zm9yKEM9MDtDPDI1NjtDKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmaC5wdXNoKHtjaGFyQ29kZTpDLGdseXBoSWQ6ZX0pfWw9ITB9ZWxzZSBpZigyPT09Yyl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGk9MDtmb3IobGV0IGE9MDthPDI1NjthKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoKT4+MztlLnB1c2goYSk7aT1NYXRoLm1heChhLGkpfWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTw9aTtlKyspYS5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBpPTA7aTwyNTY7aSsrKWlmKDA9PT1lW2ldKXt0LnBvcz1hWzBdLmlkUmFuZ2VQb3MrMippO1E9dC5nZXRVaW50MTYoKTtoLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9ZWxzZXtjb25zdCByPWFbZVtpXV07Zm9yKEM9MDtDPHIuZW50cnlDb3VudDtDKyspe2NvbnN0IGU9KGk8PDgpK0Mrci5maXJzdENvZGU7dC5wb3M9ci5pZFJhbmdlUG9zKzIqQztRPXQuZ2V0VWludDE2KCk7MCE9PVEmJihRPShRK3IuaWREZWx0YSklNjU1MzYpO2gucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOlF9KX19fWVsc2UgaWYoND09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGk9W107bGV0IGE7Zm9yKGE9MDthPGU7YSsrKWkucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKGE9MDthPGU7YSsrKWlbYV0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3IoYT0wO2E8ZTthKyspaVthXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtYSk7ci5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK3IuZW5kLXIuc3RhcnQrMSl9ZWxzZSByLm9mZnNldEluZGV4PS0xfWNvbnN0IGc9W107Zm9yKEM9MDtDPG87QysrKWcucHVzaCh0LmdldFVpbnQxNigpKTtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtzPXIuc3RhcnQ7Y29uc3QgZT1yLmVuZCx0PXIuZGVsdGE7bj1yLm9mZnNldEluZGV4O2ZvcihDPXM7Qzw9ZTtDKyspaWYoNjU1MzUhPT1DKXtRPW48MD9DOmdbbitDLXNdO1E9USt0JjY1NTM1O2gucHVzaCh7Y2hhckNvZGU6QyxnbHlwaElkOlF9KX19fWVsc2UgaWYoNj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpO2ZvcihDPTA7QzxpO0MrKyl7UT10LmdldFVpbnQxNigpO2NvbnN0IGk9ZStDO2gucHVzaCh7Y2hhckNvZGU6aSxnbHlwaElkOlF9KX19ZWxzZXtpZigxMiE9PWMpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitjKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihDPTA7QzxlO0MrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGk9dC5nZXRJbnQzMigpPj4+MDtsZXQgYT10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWk7dCsrKWgucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOmErK30pfX19aC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxoLmxlbmd0aDtlKyspaWYoaFtlLTFdLmNoYXJDb2RlPT09aFtlXS5jaGFyQ29kZSl7aC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmgsaGFzU2hvcnRDbWFwOmx9fShuLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGkuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHI9ZS5lbmNvZGluZ0lkLHM9ZS5tYXBwaW5ncztsZXQgbz1bXSxnPSExOyFpLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1pLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhpLmJhc2VFbmNvZGluZ05hbWUpKTtpZihpLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09cnx8MT09PWEmJjA9PT1yKSl7Y29uc3QgZT1EaSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IG47bj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOkJpW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGc9cmVjb3ZlckdseXBoTmFtZShuLGUpO2xldCBjOzM9PT1hJiYxPT09cj9jPWVbZ106MT09PWEmJjA9PT1yJiYoYz1DaS5pbmRleE9mKGcpKTtpZih2b2lkIDA9PT1jKXtpZighaS5nbHlwaE5hbWVzJiZpLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoYz1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1jKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHMpaWYoZS5jaGFyQ29kZT09PWMpe21bdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcyltW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtnPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1yKWZvcihjb25zdCBlIG9mIHMpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTttW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHMpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoaS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFnJiZ2b2lkIDAhPT1tW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPWkuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihtW2VdPWEpfX0wPT09bS5sZW5ndGgmJihtWzBdPTApO2xldCB5PUMtMTtRfHwoeT0wKTtpZighaS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKG0saGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtuLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLEMpfTtuWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgaT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3QgYT10LmdldFVpbnQxNigpO2lmKGk8NCYmNzY4JmEpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KG5bIk9TLzIiXSx0KXx8KG5bIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGksZS5jaGFyQ29kZVRvR2x5cGhJZCxwKX0pfWlmKCFjKXRyeXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihnLGksR2kpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7blsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2kubG9hZGVkTmFtZSl9aWYobi5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUobi5uYW1lKTtuLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2kuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsaSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1RaSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgaSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPVFpLHI9W10scz1EaSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgaT1zW3RdO3ZvaWQgMCE9PWkmJihyW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfShpLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBuLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3Qgdz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihzLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIG4pdy5hZGRUYWJsZShlLG5bZV0uZGF0YSk7cmV0dXJuIHcudG9BcnJheSgpfWNvbnZlcnQoZSx0LGkpe2kuZml4ZWRQaXRjaD0hMTtpLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGk9W10sYT1EaSgpO2Zvcihjb25zdCByIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbcl0pKWNvbnRpbnVlO2NvbnN0IHM9Z2V0VW5pY29kZUZvckdseXBoKHRbcl0sYSk7LTEhPT1zJiYoaVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oaSxpLmJ1aWx0SW5FbmNvZGluZyk7bGV0IGE9MTt0IGluc3RhbmNlb2YgQ0ZGRm9udCYmKGE9dC5udW1HbHlwaHMtMSk7Y29uc3Qgcz10LmdldEdseXBoTWFwcGluZyhpKTtsZXQgbj1udWxsLG89cyxnPW51bGw7aWYoIWkuY3NzRm9udEluZm8pe249YWRqdXN0TWFwcGluZyhzLHQuaGFzR2x5cGhJZC5iaW5kKHQpLGEsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1uLnRvRm9udENoYXI7bz1uLmNoYXJDb2RlVG9HbHlwaElkO2c9bi50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBjPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBpPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKGl8fD1bXSkucHVzaCgwfGEpO3JldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGkgaW4gZSlpZih0PT09ZVtpXSlyZXR1cm4gMHxpO24uY2hhckNvZGVUb0dseXBoSWRbbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBuLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBsPXQuc2VhY3M7aWYobiYmbD8ubGVuZ3RoKXtjb25zdCBlPWkuZm9udE1hdHJpeHx8cixhPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gbCl7dHw9MDtjb25zdCBpPWxbdF0scj1CaVtpWzJdXSxnPUJpW2lbM11dLGM9YS5pbmRleE9mKHIpLGg9YS5pbmRleE9mKGcpO2lmKGM8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IEM9e3g6aVswXSplWzBdK2lbMV0qZVsyXStlWzRdLHk6aVswXSplWzFdK2lbMV0qZVszXStlWzVdfSxRPWdldENoYXJDb2RlcyhzLHQpO2lmKFEpZm9yKGNvbnN0IGUgb2YgUSl7Y29uc3QgdD1uLmNoYXJDb2RlVG9HbHlwaElkLGk9Y3JlYXRlQ2hhckNvZGUodCxjKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTppLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDpDfX19aS5zZWFjTWFwPW99Y29uc3QgaD1pLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5pLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsQz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO0MuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7Qy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoaSxvKSk7Qy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sZyxjKSk7Qy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNihoKSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihpLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihpLmFzY2VudCkrc3RyaW5nMTYoaS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTtDLmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGkuYXNjZW50KStzYWZlU3RyaW5nMTYoaS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihpLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGkuaXRhbGljQW5nbGUpKmkueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYoYykpO0MuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGk9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IGE9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxyPWM7dDxyO3QrKyl7bGV0IHI9MDtpZihlKXtjb25zdCBpPWVbdC0xXTtyPSJ3aWR0aCJpbiBpP2kud2lkdGg6MH1lbHNlIGkmJihyPU1hdGguY2VpbChpW3RdfHwwKSk7YSs9c3RyaW5nMTYocikrc3RyaW5nMTYoMCl9cmV0dXJuIGF9KCkpO0MuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihjKSk7Qy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTtDLmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoaSkpO3JldHVybiBDLnRvQXJyYXkoKX1nZXQgX3NwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoaSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1tpXTticmVha31jb25zdCBlPURpKClbaV07bGV0IGE9MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpKXthPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGUsYSkpfSFhJiZ0aGlzLnRvVW5pY29kZSYmKGE9dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKSk7YTw9MCYmKGE9ZSk7dD10aGlzLndpZHRoc1thXTtpZih0KWJyZWFrfXJldHVybiBzaGFkb3codGhpcywiX3NwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgaSxhLHIscz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKHM/LmlzU3BhY2U9PT10KXJldHVybiBzO2xldCBuPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7bj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49Y29udmVydENpZFN0cmluZyhlLG4pKX1hPXRoaXMud2lkdGhzW25dOyJudW1iZXIiIT10eXBlb2YgYSYmKGE9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW25dO2xldCBnPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGcmJihnPVN0cmluZy5mcm9tQ2hhckNvZGUoZykpO2xldCBjPXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTtpPXRoaXMudG9Gb250Q2hhcltlXXx8ZTtpZih0aGlzLm1pc3NpbmdGaWxlKXtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdO2lmKCgiLm5vdGRlZiI9PT10fHwiIj09PXQpJiYiVHlwZTEiPT09dGhpcy50eXBlKXtpPTMyO2lmKCIiPT09dCl7YXx8PXRoaXMuX3NwYWNlV2lkdGg7Zz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfX1pPWZ1bmN0aW9uIG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/U2koKVtlXXx8ZToxNzM9PT1lPzQ1OmV9KGkpfXRoaXMuaXNUeXBlM0ZvbnQmJihyPWkpO2xldCBsPW51bGw7aWYodGhpcy5zZWFjTWFwPy5bZV0pe2M9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07aT10LmJhc2VGb250Q2hhckNvZGU7bD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGg9IiI7Im51bWJlciI9PXR5cGVvZiBpJiYoaTw9MTExNDExMT9oPVN0cmluZy5mcm9tQ29kZVBvaW50KGkpOndhcm4oYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7aX1gKSk7aWYodGhpcy5taXNzaW5nRmlsZSYmdGhpcy52ZXJ0aWNhbCYmMT09PWgubGVuZ3RoKXtjb25zdCBlPVlpKClbaC5jaGFyQ29kZUF0KDApXTtlJiYoaD1nPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfXM9bmV3IGZvbnRzX0dseXBoKGUsaCxnLGwsYSxvLHIsdCxjKTtyZXR1cm4gdGhpcy5fZ2x5cGhDYWNoZVtlXT1zfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy5fY2hhcnNDYWNoZVtlXTtpZih0KXJldHVybiB0O3Q9W107aWYodGhpcy5jTWFwKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxhOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLHIsaSk7Y29uc3R7Y2hhcmNvZGU6YSxsZW5ndGg6c309aTtyKz1zO2NvbnN0IG49dGhpcy5fY2hhclRvR2x5cGgoYSwxPT09cyYmMzI9PT1lLmNoYXJDb2RlQXQoci0xKSk7dC5wdXNoKG4pfX1lbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhOysraSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSkscj10aGlzLl9jaGFyVG9HbHlwaChhLDMyPT09YSk7dC5wdXNoKHIpfXJldHVybiB0aGlzLl9jaGFyc0NhY2hlW2VdPXR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPTA7Zm9yKDthPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLGEsaSk7Y29uc3Qgcj1pLmxlbmd0aDt0LnB1c2goW2EsYStyXSk7YSs9cn19ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpdC5wdXNoKFtpLGkrMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fZ2x5cGhDYWNoZSl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10saT1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLGE9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KHIpO3M+NTUyOTUmJihzPDU3MzQ0fHxzPjY1NTMzKSYmcisrO2lmKHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPWEocyk7aWYoLTEhPT1lKXtpZihoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChpLmpvaW4oIiIpKTtpLmxlbmd0aD0wfWZvcihsZXQgdD0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aChlKToxKS0xO3Q+PTA7dC0tKWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgqdCYyNTUpKTtjb250aW51ZX19aWYoIWhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9aS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KHMpKX10LnB1c2goaS5qb2luKCIiKSk7cmV0dXJuIHR9fWNsYXNzIEVycm9yRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWU7dGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiO3RoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YShlPSExKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IGxhPTIsaGE9MyxDYT00LEJhPTUsUWE9NixFYT03O2NsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxpLGEscil7Y29uc3Qgcz1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxuPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobil7Y2FzZSBsYTpjYXNlIGhhOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKHMsdCxpLGEscik7Y2FzZSBDYTpjYXNlIEJhOmNhc2UgUWE6Y2FzZSBFYTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxpLGEscik7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK24pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19Y2xhc3MgQmFzZVNoYWRpbmd7c3RhdGljIFNNQUxMX05VTUJFUj0xZS02O2dldElSKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0SVJgIGNhbGxlZC4iKX19Y2xhc3MgUmFkaWFsQXhpYWxTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IHM9MDt0aGlzLnNoYWRpbmdUeXBlPT09bGE/cz00OnRoaXMuc2hhZGluZ1R5cGU9PT1oYSYmKHM9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIscykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBuPUNvbG9yU3BhY2UucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBvPTAsZz0xO2NvbnN0IGM9ZS5nZXRBcnJheSgiRG9tYWluIik7aXNOdW1iZXJBcnJheShjLDIpJiYoW28sZ109Yyk7bGV0IGw9ITEsaD0hMTtjb25zdCBDPWUuZ2V0QXJyYXkoIkV4dGVuZCIpOyhmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoKGU9PiJib29sZWFuIj09dHlwZW9mIGUpKX0pKEMsMikmJihbbCxoXT1DKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1oYXx8bCYmaCkpe2NvbnN0W2UsdCxpLGEscixzXT10aGlzLmNvb3Jkc0FycixuPU1hdGguaHlwb3QoZS1hLHQtcik7aTw9cytuJiZzPD1pK24mJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PWw7dGhpcy5leHRlbmRFbmQ9aDtjb25zdCBRPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLEU9YS5jcmVhdGVGcm9tQXJyYXkoUSksdT0oZy1vKS84NDAsZD10aGlzLmNvbG9yU3RvcHM9W107aWYobz49Z3x8dTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCBmPW5ldyBGbG9hdDMyQXJyYXkobi5udW1Db21wcykscD1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCBtLHk9MDtwWzBdPW87RShwLDAsZiwwKTtsZXQgdz1uLmdldFJnYihmLDApO2NvbnN0IGI9VXRpbC5tYWtlSGV4Q29sb3Iod1swXSx3WzFdLHdbMl0pO2QucHVzaChbMCxiXSk7bGV0IEQ9MTtwWzBdPW8rdTtFKHAsMCxmLDApO2xldCBTPW4uZ2V0UmdiKGYsMCksaz1TWzBdLXdbMF0rMSxSPVNbMV0td1sxXSsxLE49U1syXS13WzJdKzEsRz1TWzBdLXdbMF0tMSxNPVNbMV0td1sxXS0xLFU9U1syXS13WzJdLTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXtwWzBdPW8rZSp1O0UocCwwLGYsMCk7bT1uLmdldFJnYihmLDApO2NvbnN0IHQ9ZS15O2s9TWF0aC5taW4oaywobVswXS13WzBdKzEpL3QpO1I9TWF0aC5taW4oUiwobVsxXS13WzFdKzEpL3QpO049TWF0aC5taW4oTiwobVsyXS13WzJdKzEpL3QpO0c9TWF0aC5tYXgoRywobVswXS13WzBdLTEpL3QpO009TWF0aC5tYXgoTSwobVsxXS13WzFdLTEpL3QpO1U9TWF0aC5tYXgoVSwobVsyXS13WzJdLTEpL3QpO2lmKCEoRzw9ayYmTTw9UiYmVTw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoU1swXSxTWzFdLFNbMl0pO2QucHVzaChbRC84NDAsZV0pO2s9bVswXS1TWzBdKzE7Uj1tWzFdLVNbMV0rMTtOPW1bMl0tU1syXSsxO0c9bVswXS1TWzBdLTE7TT1tWzFdLVNbMV0tMTtVPW1bMl0tU1syXS0xO3k9RDt3PVN9RD1lO1M9bX1jb25zdCB4PVV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtkLnB1c2goWzEseF0pO2xldCBMPSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7bT1uLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO0w9VXRpbC5tYWtlSGV4Q29sb3IobVswXSxtWzFdLG1bMl0pfWlmKCFsKXtkLnVuc2hpZnQoWzAsTF0pO2RbMV1bMF0rPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUn1pZighaCl7ZC5hdCgtMSlbMF0tPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUjtkLnB1c2goWzEsTF0pfXRoaXMuY29sb3JTdG9wcz1kfWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgaSxhLHIscyxuO2lmKHQ9PT1sYSl7YT1bZVswXSxlWzFdXTtyPVtlWzJdLGVbM11dO3M9bnVsbDtuPW51bGw7aT0iYXhpYWwifWVsc2UgaWYodD09PWhhKXthPVtlWzBdLGVbMV1dO3I9W2VbM10sZVs0XV07cz1lWzJdO249ZVs1XTtpPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsaSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLGEscixzLG5dfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgaT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShpKTtjb25zdCBhPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1pKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGkpLTE7cmV0dXJuKHQ8PDgtaXwoMjU1JmUpPj5pKT4+PjB9aWYoOD09PWUmJjA9PT1pKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDtpPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2krPTh9aS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1pO3RoaXMuYnVmZmVyPXQmKDE8PGkpLTE7cmV0dXJuIHQ+Pml9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGk9dGhpcy5yZWFkQml0cyhlKSxhPXRoaXMuY29udGV4dC5kZWNvZGUscj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0KnIqKGFbMV0tYVswXSkrYVswXSxpKnIqKGFbM10tYVsyXSkrYVsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGk9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxhPXRoaXMuY29udGV4dC5kZWNvZGUscj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgcz0wLG49NDtzPGU7cysrLG4rPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtyW3NdPWUqaSooYVtuKzFdLWFbbl0pK2Fbbl19Y29uc3Qgcz10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKHIsMCxzLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IocywwKX19bGV0IHVhPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gZ2V0QihlKXtyZXR1cm4gdWFbZV18fD1mdW5jdGlvbiBidWlsZEIoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MDtpPD1lO2krKyl7Y29uc3QgYT1pL2Uscj0xLWE7dC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoW3IqKjMsMyphKnIqKjIsMyphKioyKnIsYSoqM10pKX1yZXR1cm4gdH0oZSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG49Q29sb3JTcGFjZS5wYXJzZSh7Y3M6cy5nZXRSYXcoIkNTIil8fHMuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczppLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KTt0aGlzLmJhY2tncm91bmQ9cy5oYXMoIkJhY2tncm91bmQiKT9uLmdldFJnYihzLmdldCgiQmFja2dyb3VuZCIpLDApOm51bGw7Y29uc3Qgbz1zLmdldFJhdygiRnVuY3Rpb24iKSxnPW8/YS5jcmVhdGVGcm9tQXJyYXkobyk6bnVsbDt0aGlzLmNvb3Jkcz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLmZpZ3VyZXM9W107Y29uc3QgYz17Yml0c1BlckNvb3JkaW5hdGU6cy5nZXQoIkJpdHNQZXJDb29yZGluYXRlIiksYml0c1BlckNvbXBvbmVudDpzLmdldCgiQml0c1BlckNvbXBvbmVudCIpLGJpdHNQZXJGbGFnOnMuZ2V0KCJCaXRzUGVyRmxhZyIpLGRlY29kZTpzLmdldEFycmF5KCJEZWNvZGUiKSxjb2xvckZuOmcsY29sb3JTcGFjZTpuLG51bUNvbXBzOmc/MTpuLm51bUNvbXBzfSxsPW5ldyBNZXNoU3RyZWFtUmVhZGVyKGUsYyk7bGV0IGg9ITE7c3dpdGNoKHRoaXMuc2hhZGluZ1R5cGUpe2Nhc2UgQ2E6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKGwpO2JyZWFrO2Nhc2UgQmE6Y29uc3QgZT0wfHMuZ2V0KCJWZXJ0aWNlc1BlclJvdyIpO2lmKGU8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgVmVydGljZXNQZXJSb3ciKTt0aGlzLl9kZWNvZGVUeXBlNVNoYWRpbmcobCxlKTticmVhaztjYXNlIFFhOnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyhsKTtoPSEwO2JyZWFrO2Nhc2UgRWE6dGhpcy5fZGVjb2RlVHlwZTdTaGFkaW5nKGwpO2g9ITA7YnJlYWs7ZGVmYXVsdDp1bnJlYWNoYWJsZSgiVW5zdXBwb3J0ZWQgbWVzaCB0eXBlLiIpfWlmKGgpe3RoaXMuX3VwZGF0ZUJvdW5kcygpO2ZvcihsZXQgZT0wLHQ9dGhpcy5maWd1cmVzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuX2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpfXRoaXMuX3VwZGF0ZUJvdW5kcygpO3RoaXMuX3BhY2tEYXRhKCl9X2RlY29kZVR5cGU0U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1bXSxyPVtdO2xldCBzPTA7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBuPWUucmVhZEZsYWcoKSxvPWUucmVhZENvb3JkaW5hdGUoKSxnPWUucmVhZENvbXBvbmVudHMoKTtpZigwPT09cyl7aWYoISgwPD1uJiZuPD0yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTQgZmxhZyIpO3N3aXRjaChuKXtjYXNlIDA6cz0zO2JyZWFrO2Nhc2UgMTpyLnB1c2goci5hdCgtMiksci5hdCgtMSkpO3M9MTticmVhaztjYXNlIDI6ci5wdXNoKHIuYXQoLTMpLHIuYXQoLTEpKTtzPTF9YS5wdXNoKG4pfXIucHVzaCh0Lmxlbmd0aCk7dC5wdXNoKG8pO2kucHVzaChnKTtzLS07ZS5hbGlnbigpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJ0cmlhbmdsZXMiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxzPWUucmVhZENvbXBvbmVudHMoKTtyLnB1c2goaS5sZW5ndGgpO2kucHVzaCh0KTthLnB1c2gocyl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ImxhdHRpY2UiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkociksdmVydGljZXNQZXJSb3c6dH0pfV9kZWNvZGVUeXBlNlNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1zPzg6MTI7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVsxMV09bis3O2FbNF09bisxO2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO2w9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09bDthWzExXT1uKzM7YVs0XT1jO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbMl07Yz1yWzNdO3JbMl09YztyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzExXT1uKzM7YVs0XT1hWzJdO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX1hWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVswXV1bMF0tdFthWzE1XV1bMF0rNioodFthWzRdXVswXSt0W2FbMV1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMTNdXVswXSt0W2FbN11dWzBdKSkvOSwoLTQqdFthWzBdXVsxXS10W2FbMTVdXVsxXSs2Kih0W2FbNF1dWzFdK3RbYVsxXV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsxM11dWzFdK3RbYVs3XV1bMV0pKS85XSk7YVs2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbM11dWzBdLXRbYVsxMl1dWzBdKzYqKHRbYVsyXV1bMF0rdFthWzddXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzRdXVswXSt0W2FbMTRdXVswXSkpLzksKC00KnRbYVszXV1bMV0tdFthWzEyXV1bMV0rNioodFthWzJdXVsxXSt0W2FbN11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbNF1dWzFdK3RbYVsxNF1dWzFdKSkvOV0pO2FbOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzEyXV1bMF0tdFthWzNdXVswXSs2Kih0W2FbOF1dWzBdK3RbYVsxM11dWzBdKS0yKih0W2FbMF1dWzBdK3RbYVsxNV1dWzBdKSszKih0W2FbMTFdXVswXSt0W2FbMV1dWzBdKSkvOSwoLTQqdFthWzEyXV1bMV0tdFthWzNdXVsxXSs2Kih0W2FbOF1dWzFdK3RbYVsxM11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbMTFdXVsxXSt0W2FbMV1dWzFdKSkvOV0pO2FbMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxNV1dWzBdLXRbYVswXV1bMF0rNioodFthWzExXV1bMF0rdFthWzE0XV1bMF0pLTIqKHRbYVsxMl1dWzBdK3RbYVszXV1bMF0pKzMqKHRbYVsyXV1bMF0rdFthWzhdXVswXSkpLzksKC00KnRbYVsxNV1dWzFdLXRbYVswXV1bMV0rNioodFthWzExXV1bMV0rdFthWzE0XV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsyXV1bMV0rdFthWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNikscj1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU3IGZsYWciKTtjb25zdCBuPXQubGVuZ3RoO2ZvcihsZXQgaT0wLGE9MCE9PXM/MTI6MTY7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVs5XT1uKzEzO2FbMTBdPW4rMTQ7YVsxMV09bis3O2FbNF09bisxO2FbNV09bisxMjthWzZdPW4rMTU7YVs3XT1uKzg7YVswXT1uO2FbMV09bisxMTthWzJdPW4rMTA7YVszXT1uKzk7clsyXT1vKzE7clszXT1vKzI7clswXT1vO3JbMV09byszO2JyZWFrO2Nhc2UgMTpnPWFbMTJdO2M9YVsxM107bD1hWzE0XTtoPWFbMTVdO2FbMTJdPWg7YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1sO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YzthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9clsyXTtjPXJbM107clsyXT1jO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAyOmc9YVsxNV07Yz1hWzExXTthWzEyXT1hWzNdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVs3XTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbM107clsyXT1yWzFdO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAzOmFbMTJdPWFbMF07YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzFdO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YVsyXTthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1hWzNdO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O3JbMl09clswXTtyWzNdPW87clswXT1yWzFdO3JbMV09bysxfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJwYXRjaCIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGEpLGNvbG9yczpuZXcgSW50MzJBcnJheShyKX0pfX1fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl7Y29uc3QgdD10aGlzLmZpZ3VyZXNbZV07YXNzZXJ0KCJwYXRjaCI9PT10LnR5cGUsIlVuZXhwZWN0ZWQgcGF0Y2ggbWVzaCBmaWd1cmUiKTtjb25zdCBpPXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj10LmNvb3JkcyxzPXQuY29sb3JzLG49TWF0aC5taW4oaVtyWzBdXVswXSxpW3JbM11dWzBdLGlbclsxMl1dWzBdLGlbclsxNV1dWzBdKSxvPU1hdGgubWluKGlbclswXV1bMV0saVtyWzNdXVsxXSxpW3JbMTJdXVsxXSxpW3JbMTVdXVsxXSksZz1NYXRoLm1heChpW3JbMF1dWzBdLGlbclszXV1bMF0saVtyWzEyXV1bMF0saVtyWzE1XV1bMF0pLGM9TWF0aC5tYXgoaVtyWzBdXVsxXSxpW3JbM11dWzFdLGlbclsxMl1dWzFdLGlbclsxNV1dWzFdKTtsZXQgbD1NYXRoLmNlaWwoKGctbikqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbMl0tdGhpcy5ib3VuZHNbMF0pKTtsPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGwpKTtsZXQgaD1NYXRoLmNlaWwoKGMtbykqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0pKTtoPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGgpKTtjb25zdCBDPWwrMSxRPW5ldyBJbnQzMkFycmF5KChoKzEpKkMpLEU9bmV3IEludDMyQXJyYXkoKGgrMSkqQyk7bGV0IHU9MDtjb25zdCBkPW5ldyBVaW50OEFycmF5KDMpLGY9bmV3IFVpbnQ4QXJyYXkoMykscD1hW3NbMF1dLG09YVtzWzFdXSx5PWFbc1syXV0sdz1hW3NbM11dLGI9Z2V0QihoKSxEPWdldEIobCk7Zm9yKGxldCBlPTA7ZTw9aDtlKyspe2RbMF09KHBbMF0qKGgtZSkreVswXSplKS9ofDA7ZFsxXT0ocFsxXSooaC1lKSt5WzFdKmUpL2h8MDtkWzJdPShwWzJdKihoLWUpK3lbMl0qZSkvaHwwO2ZbMF09KG1bMF0qKGgtZSkrd1swXSplKS9ofDA7ZlsxXT0obVsxXSooaC1lKSt3WzFdKmUpL2h8MDtmWzJdPShtWzJdKihoLWUpK3dbMl0qZSkvaHwwO2ZvcihsZXQgdD0wO3Q8PWw7dCsrLHUrKyl7aWYoISgwIT09ZSYmZSE9PWh8fDAhPT10JiZ0IT09bCkpY29udGludWU7bGV0IHM9MCxuPTAsbz0wO2ZvcihsZXQgYT0wO2E8PTM7YSsrKWZvcihsZXQgZz0wO2c8PTM7ZysrLG8rKyl7Y29uc3QgYz1iW2VdW2FdKkRbdF1bZ107cys9aVtyW29dXVswXSpjO24rPWlbcltvXV1bMV0qY31RW3VdPWkubGVuZ3RoO2kucHVzaChbcyxuXSk7RVt1XT1hLmxlbmd0aDtjb25zdCBnPW5ldyBVaW50OEFycmF5KDMpO2dbMF09KGRbMF0qKGwtdCkrZlswXSp0KS9sfDA7Z1sxXT0oZFsxXSoobC10KStmWzFdKnQpL2x8MDtnWzJdPShkWzJdKihsLXQpK2ZbMl0qdCkvbHwwO2EucHVzaChnKX19UVswXT1yWzBdO0VbMF09c1swXTtRW2xdPXJbM107RVtsXT1zWzFdO1FbQypoXT1yWzEyXTtFW0MqaF09c1syXTtRW0MqaCtsXT1yWzE1XTtFW0MqaCtsXT1zWzNdO3RoaXMuZmlndXJlc1tlXT17dHlwZToibGF0dGljZSIsY29vcmRzOlEsY29sb3JzOkUsdmVydGljZXNQZXJSb3c6Q319X3VwZGF0ZUJvdW5kcygpe2xldCBlPXRoaXMuY29vcmRzWzBdWzBdLHQ9dGhpcy5jb29yZHNbMF1bMV0saT1lLGE9dDtmb3IobGV0IHI9MSxzPXRoaXMuY29vcmRzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPXRoaXMuY29vcmRzW3JdWzBdLG49dGhpcy5jb29yZHNbcl1bMV07ZT1lPnM/czplO3Q9dD5uP246dDtpPWk8cz9zOmk7YT1hPG4/bjphfXRoaXMuYm91bmRzPVtlLHQsaSxhXX1fcGFja0RhdGEoKXtsZXQgZSx0LGksYTtjb25zdCByPXRoaXMuY29vcmRzLHM9bmV3IEZsb2F0MzJBcnJheSgyKnIubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXTtzW2krK109dFswXTtzW2krK109dFsxXX10aGlzLmNvb3Jkcz1zO2NvbnN0IG49dGhpcy5jb2xvcnMsbz1uZXcgVWludDhBcnJheSgzKm4ubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXTtvW2krK109dFswXTtvW2krK109dFsxXTtvW2krK109dFsyXX10aGlzLmNvbG9ycz1vO2NvbnN0IGc9dGhpcy5maWd1cmVzO2ZvcihlPTAsdD1nLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWdbZV0scj10LmNvb3JkcyxzPXQuY29sb3JzO2ZvcihpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtyW2ldKj0yO3NbaV0qPTN9fX1nZXRJUigpe2NvbnN0e2JvdW5kczplfT10aGlzO2lmKGVbMl0tZVswXT09MHx8ZVszXS1lWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBNZXNoU2hhZGluZyBib3VuZHM6IFske2V9XS5gKTtyZXR1cm5bIk1lc2giLHRoaXMuc2hhZGluZ1R5cGUsdGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzLGUsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fWNsYXNzIER1bW15U2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2dldElSKCl7cmV0dXJuWyJEdW1teSJdfX1mdW5jdGlvbiBnZXRUaWxpbmdQYXR0ZXJuSVIoZSx0LGkpe2NvbnN0IHI9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHM9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIXN8fHNbMl0tc1swXT09MHx8c1szXS1zWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3Qgbj10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3QgZz10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoZykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGM9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsaSxlLHIscyxuLG8sZyxjXX1jb25zdCBkYT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxmYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30scGE9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sbWE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LHlhPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx3YT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sYmE9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLERhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxGYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFNhPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxrYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFJhPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sTmE9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sR2E9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxNYT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxVYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0seGE9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10sTGE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLEhhPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxKYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sdmE9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFlhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxLYT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFRhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxxYT1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sT2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFBhPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sV2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LGphPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxYYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sVmE9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFphPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxfYT1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx6YT17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sJGE9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEFyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxlcj1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHRyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxpcj1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sYXI9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHJyPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6VmEsYmFzZVdpZHRoczpLYSxiYXNlTWFwcGluZzpUYSxtZXRyaWNzOlphfTtlWyJNeXJpYWRQcm8tQm9sZCJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpxYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6T2F9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmphLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpYYX07ZVsiTXlyaWFkUHJvLUJvbGRJdCJdPWVbIk15cmlhZFByby1Cb2xkSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOlBhLGJhc2VXaWR0aHM6SGEsYmFzZU1hcHBpbmc6SmEsbWV0cmljczpXYX07ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhfTtlWyJBcmlhbC1Cb2xkTVQiXT1lWyJBcmlhbC1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGF9O2VbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczp2YSxiYXNlTWFwcGluZzpZYX07ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphfTtlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpiYSxiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6RGF9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmRhLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczpmYX07ZVsiQ2FsaWJyaS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOnlhLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp3YX07ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6cGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOm1hfTtlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczppcixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6YXJ9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOl9hLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczp6YX07ZVsiU2Vnb2V1aS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmVyLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp0cn07ZVsiU2Vnb2V1aS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6JGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOkFyfTtlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOk1hLGJhc2VXaWR0aHM6S2EsYmFzZU1hcHBpbmc6VGEsbWV0cmljczpVYX07ZVsiSGVsdmV0aWNhLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpGYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6U2F9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOk5hLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpHYX07ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczprYSxiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphLG1ldHJpY3M6UmF9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIHJyKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczppLGJhc2VNYXBwaW5nOmEsZmFjdG9yczpyfT10LHM9cj9pLm1hcCgoKGUsdCk9PmUqclt0XSkpOmk7bGV0IG4sbz0tMjtjb25zdCBnPVtdO2Zvcihjb25zdFtlLHRdb2YgYS5tYXAoKChlLHQpPT5bZSx0XSkpLnNvcnQoKChbZV0sW3RdKT0+ZS10KSkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe24ucHVzaChzW3RdKTtvKz0xfWVsc2V7bz1lO249W3NbdF1dO2cucHVzaChlLG4pfXJldHVybiBnfShlKSxpPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2kuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtpLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTtpLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2kuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2kuc2V0KCJXIix0KTtpLnNldCgiRmlyc3RDaGFyIix0WzBdKTtpLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBhPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJGb250RGVzY3JpcHRvciIsYSk7Y29uc3Qgcj1uZXcgRGljdChudWxsKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO2kuc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gaX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdChzci5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KHNyLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQoc3IuTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChzci5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KHNyLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTtpZih0aGlzLmFjY2VwdChzci5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQoc3IuTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgaT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTt0aGlzLmV4cGVjdChzci5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1pO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCBzcj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbihzci5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihzci5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7aVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCBhPWkuam9pbigiIik7c3dpdGNoKGEudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKGEpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBpPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHtpfWApO3JldHVybiBpfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGkpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfX1jbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NWU3OyNGPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0I1MoKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX2ltYWdlQ2FjaGUpZSs9dC5ieXRlU2l6ZTtyZXR1cm4gZX1nZXQjaygpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy4jUzxHbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkUpfXNob3VsZENhY2hlKGUsdCl7bGV0IGk9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFpKXtpPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsaSl9aS5hZGQodCk7cmV0dXJuIShpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKSYmISghdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuI2spfWFkZERlY29kZUZhaWxlZChlKXt0aGlzLiNGLnB1dChlKX1oYXNEZWNvZGVGYWlsZWQoZSl7cmV0dXJuIHRoaXMuI0YuaGFzKGUpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgaT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpJiYoaS5ieXRlU2l6ZXx8KGkuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSlyZXR1cm4gbnVsbDtpZihpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIWEpcmV0dXJuIG51bGw7aS5hZGQodCk7cmV0dXJuIGF9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiNrP3dhcm4oIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9Y2xlYXIoZT0hMSl7aWYoIWUpe3RoaXMuI0YuY2xlYXIoKTt0aGlzLl9yZWZDYWNoZS5jbGVhcigpfXRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y2xhc3MgUERGRnVuY3Rpb25GYWN0b3J5e2NvbnN0cnVjdG9yKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQ9ITB9KXt0aGlzLnhyZWY9ZTt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PXR9Y3JlYXRlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIFJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsaSk7cmV0dXJuIGl9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2YgUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxpKTtyZXR1cm4gaX1nZXRDYWNoZWQoZSl7bGV0IHQ7ZSBpbnN0YW5jZW9mIFJlZj90PWU6ZSBpbnN0YW5jZW9mIERpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodD1lLmRpY3Q/Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGk7ZSBpbnN0YW5jZW9mIFJlZj9pPWU6ZSBpbnN0YW5jZW9mIERpY3Q/aT1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoaT1lLmRpY3Q/Lm9iaklkKTtpJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsaSx0KX1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoKGU9PitlKSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LGksYSl7bGV0IHIscyxuPTE7Zm9yKHI9MCxzPWUubGVuZ3RoO3I8cztyKyspbio9ZVtyXTtuKj10O2NvbnN0IG89bmV3IEFycmF5KG4pO2xldCBnPTAsYz0wO2NvbnN0IGw9MS8oMioqaS0xKSxoPWEuZ2V0Qnl0ZXMoKG4qaSs3KS84KTtsZXQgQz0wO2ZvcihyPTA7cjxuO3IrKyl7Zm9yKDtnPGk7KXtjPDw9ODtjfD1oW0MrK107Zys9OH1nLT1pO29bcl09KGM+PmcpKmw7YyY9KDE8PGcpLTF9cmV0dXJuIG99c3RhdGljIHBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aX0pe2NvbnN0IGE9aS5kaWN0fHxpO3N3aXRjaChhLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pfXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9c3RhdGljIHBhcnNlQXJyYXkoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbk9iajppfSl7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppfSk7Y29uc3QgYT1bXTtmb3IoY29uc3QgciBvZiBpKWEucHVzaCh0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46ZS5mZXRjaElmUmVmKHIpfSkpO3JldHVybiBmdW5jdGlvbihlLHQsaSxyKXtmb3IobGV0IHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspYVtzXShlLHQsaSxyK3MpfX1zdGF0aWMgY29uc3RydWN0U2FtcGxlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl7ZnVuY3Rpb24gdG9NdWx0aUFycmF5KGUpe2NvbnN0IHQ9ZS5sZW5ndGgsaT1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKz0yKWlbYSsrXT1bZVtyXSxlW3IrMV1dO3JldHVybiBpfWZ1bmN0aW9uIGludGVycG9sYXRlKGUsdCxpLGEscil7cmV0dXJuIGErKHItYSkvKGktdCkqKGUtdCl9bGV0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSkscz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFyfHwhcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG49ci5sZW5ndGgvMixvPXMubGVuZ3RoLzI7cj10b011bHRpQXJyYXkocik7cz10b011bHRpQXJyYXkocyk7Y29uc3QgZz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlNpemUiKSksYz1hLmdldCgiQml0c1BlclNhbXBsZSIpLGw9YS5nZXQoIk9yZGVyIil8fDE7MSE9PWwmJmluZm8oIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK2wpO2xldCBoPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGgpaD10b011bHRpQXJyYXkoaCk7ZWxzZXtoPVtdO2ZvcihsZXQgZT0wO2U8bjsrK2UpaC5wdXNoKFswLGdbZV0tMV0pfWxldCBDPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRGVjb2RlIikpO0M9Qz90b011bHRpQXJyYXkoQyk6cztjb25zdCBRPXRoaXMuZ2V0U2FtcGxlQXJyYXkoZyxvLGMsaSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsaSxhKXtjb25zdCBjPTE8PG4sbD1uZXcgRmxvYXQ2NEFycmF5KGMpLEU9bmV3IFVpbnQzMkFycmF5KGMpO2xldCB1LGQ7Zm9yKGQ9MDtkPGM7ZCsrKWxbZF09MTtsZXQgZj1vLHA9MTtmb3IodT0wO3U8bjsrK3Upe2NvbnN0IGk9clt1XVswXSxhPXJbdV1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3VdLGkpLGEpLGksYSxoW3VdWzBdLGhbdV1bMV0pO2NvbnN0IG49Z1t1XTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksbi0xKTtjb25zdCBvPXM8bi0xP01hdGguZmxvb3Iocyk6cy0xLEM9bysxLXMsUT1zLW8sbT1vKmYseT1tK2Y7Zm9yKGQ9MDtkPGM7ZCsrKWlmKGQmcCl7bFtkXSo9UTtFW2RdKz15fWVsc2V7bFtkXSo9QztFW2RdKz1tfWYqPW47cDw8PTF9Zm9yKGQ9MDtkPG87KytkKXtsZXQgZT0wO2Zvcih1PTA7dTxjO3UrKyllKz1RW0VbdV0rZF0qbFt1XTtlPWludGVycG9sYXRlKGUsMCwxLENbZF1bMF0sQ1tkXVsxXSk7aVthK2RdPU1hdGgubWluKE1hdGgubWF4KGUsc1tkXVswXSksc1tkXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDppfSl7Y29uc3QgYT10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMwIikpfHxbMF0scj10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMxIikpfHxbMV0scz1pLmdldCgiTiIpLG49W107Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKW4ucHVzaChyW2VdLWFbZV0pO2NvbnN0IG89bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxpLHIpe2NvbnN0IGc9MT09PXM/ZVt0XTplW3RdKipzO2ZvcihsZXQgZT0wO2U8bzsrK2UpaVtyK2VdPWFbZV0rZypuW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6aX0pe2NvbnN0IGE9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJEb21haW4iKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4iKTtpZigxIT09YS5sZW5ndGgvMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdCByPVtdO2Zvcihjb25zdCBhIG9mIGkuZ2V0KCJGdW5jdGlvbnMiKSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihhKX0pKTtjb25zdCBzPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiQm91bmRzIikpLG49dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJFbmNvZGUiKSksbz1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRm4oZSx0LGksZyl7Y29uc3QgYz1mdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSQ2xpcChlLHQsaSl7ZT5pP2U9aTplPHQmJihlPXQpO3JldHVybiBlfShlW3RdLGFbMF0sYVsxXSksbD1zLmxlbmd0aDtsZXQgaDtmb3IoaD0wO2g8bCYmIShjPHNbaF0pOysraCk7bGV0IEM9YVswXTtoPjAmJihDPXNbaC0xXSk7bGV0IFE9YVsxXTtoPHMubGVuZ3RoJiYoUT1zW2hdKTtjb25zdCBFPW5bMipoXSx1PW5bMipoKzFdO29bMF09Qz09PVE/RTpFKyhjLUMpKih1LUUpLyhRLUMpO3JbaF0obywwLGksZyl9fXN0YXRpYyBjb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KXtjb25zdCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHJhbmdlLiIpO2NvbnN0IG49bmV3IFBvc3RTY3JpcHRMZXhlcihpKSxvPW5ldyBQb3N0U2NyaXB0UGFyc2VyKG4pLnBhcnNlKCk7aWYodCYmRmVhdHVyZVRlc3QuaXNFdmFsU3VwcG9ydGVkKXtjb25zdCBlPShuZXcgUG9zdFNjcmlwdENvbXBpbGVyKS5jb21waWxlKG8scixzKTtpZihlKXJldHVybiBuZXcgRnVuY3Rpb24oInNyYyIsInNyY09mZnNldCIsImRlc3QiLCJkZXN0T2Zmc2V0IixlKX1pbmZvKCJVbmFibGUgdG8gY29tcGlsZSBQUyBmdW5jdGlvbiIpO2NvbnN0IGc9cy5sZW5ndGg+PjEsYz1yLmxlbmd0aD4+MSxsPW5ldyBQb3N0U2NyaXB0RXZhbHVhdG9yKG8pLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgQz04MTkyO2NvbnN0IFE9bmV3IEZsb2F0MzJBcnJheShjKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZuKGUsdCxpLGEpe2xldCByLG4sbz0iIjtjb25zdCBFPVE7Zm9yKHI9MDtyPGM7cisrKXtuPWVbdCtyXTtFW3JdPW47bys9bisiXyJ9Y29uc3QgdT1oW29dO2lmKHZvaWQgMCE9PXUpe2kuc2V0KHUsYSk7cmV0dXJufWNvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheShnKSxmPWwuZXhlY3V0ZShFKSxwPWYubGVuZ3RoLWc7Zm9yKHI9MDtyPGc7cisrKXtuPWZbcCtyXTtsZXQgZT1zWzIqcl07aWYobjxlKW49ZTtlbHNle2U9c1syKnIrMV07bj5lJiYobj1lKX1kW3JdPW59aWYoQz4wKXtDLS07aFtvXT1kfWkuc2V0KGQsYSl9fX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y2xhc3MgUG9zdFNjcmlwdFN0YWNre3N0YXRpYyBNQVhfU1RBQ0tfU0laRT0xMDA7Y29uc3RydWN0b3IoZSl7dGhpcy5zdGFjaz1lP0FycmF5LmZyb20oZSk6W119cHVzaChlKXtpZih0aGlzLnN0YWNrLmxlbmd0aD49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTt0aGlzLnN0YWNrLnB1c2goZSl9cG9wKCl7aWYodGhpcy5zdGFjay5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4iKTtyZXR1cm4gdGhpcy5zdGFjay5wb3AoKX1jb3B5KGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoK2U+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgaT10Lmxlbmd0aC1lLGE9ZS0xO2E+PTA7YS0tLGkrKyl0LnB1c2godFtpXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IGk9dGhpcy5zdGFjayxhPWkubGVuZ3RoLWUscj1pLmxlbmd0aC0xLHM9YSsodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPWEsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX1mb3IobGV0IGU9YSx0PXMtMTtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9Zm9yKGxldCBlPXMsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX19fWNsYXNzIFBvc3RTY3JpcHRFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7dGhpcy5vcGVyYXRvcnM9ZX1leGVjdXRlKGUpe2NvbnN0IHQ9bmV3IFBvc3RTY3JpcHRTdGFjayhlKTtsZXQgaT0wO2NvbnN0IGE9dGhpcy5vcGVyYXRvcnMscj1hLmxlbmd0aDtsZXQgcyxuLG87Zm9yKDtpPHI7KXtzPWFbaSsrXTtpZigibnVtYmVyIiE9dHlwZW9mIHMpc3dpdGNoKHMpe2Nhc2UianoiOm89dC5wb3AoKTtuPXQucG9wKCk7bnx8KGk9byk7YnJlYWs7Y2FzZSJqIjpuPXQucG9wKCk7aT1uO2JyZWFrO2Nhc2UiYWJzIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguYWJzKG4pKTticmVhaztjYXNlImFkZCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobitvKTticmVhaztjYXNlImFuZCI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChuJiZvKTp0LnB1c2gobiZvKTticmVhaztjYXNlImF0YW4iOm89dC5wb3AoKTtuPXQucG9wKCk7bj1NYXRoLmF0YW4yKG4sbykvTWF0aC5QSSoxODA7bjwwJiYobis9MzYwKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6bz10LnBvcCgpO249dC5wb3AoKTtuPjA/dC5wdXNoKG48PG8pOnQucHVzaChuPj5vKTticmVhaztjYXNlImNlaWxpbmciOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG4pKTticmVhaztjYXNlImNvcHkiOm49dC5wb3AoKTt0LmNvcHkobik7YnJlYWs7Y2FzZSJjb3MiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobiUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlImN2aSI6bj0wfHQucG9wKCk7dC5wdXNoKG4pO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobi9vKTticmVhaztjYXNlImR1cCI6dC5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG49PT1vKTticmVhaztjYXNlImV4Y2giOnQucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKipvKTticmVhaztjYXNlImZhbHNlIjp0LnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5mbG9vcihuKSk7YnJlYWs7Y2FzZSJnZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj49byk7YnJlYWs7Y2FzZSJndCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj5vKTticmVhaztjYXNlImlkaXYiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4vb3wwKTticmVhaztjYXNlImluZGV4IjpuPXQucG9wKCk7dC5pbmRleChuKTticmVhaztjYXNlImxlIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPD1vKTticmVhaztjYXNlImxuIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG4pKTticmVhaztjYXNlImxvZyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmxvZzEwKG4pKTticmVhaztjYXNlImx0IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPG8pO2JyZWFrO2Nhc2UibW9kIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuJW8pO2JyZWFrO2Nhc2UibXVsIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKm8pO2JyZWFrO2Nhc2UibmUiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4hPT1vKTticmVhaztjYXNlIm5lZyI6bj10LnBvcCgpO3QucHVzaCgtbik7YnJlYWs7Y2FzZSJub3QiOm49dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuP3QucHVzaCghbik6dC5wdXNoKH5uKTticmVhaztjYXNlIm9yIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG58fG8pOnQucHVzaChufG8pO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnJvbGwobixvKTticmVhaztjYXNlInJvdW5kIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQobikpO2JyZWFrO2Nhc2Uic2luIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKG4lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChuKSk7YnJlYWs7Y2FzZSJzdWIiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4tbyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm49dC5wb3AoKTtuPW48MD9NYXRoLmNlaWwobik6TWF0aC5mbG9vcihuKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJ4b3IiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobiE9PW8pOnQucHVzaChuXm8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7c31gKX1lbHNlIHQucHVzaChzKX1yZXR1cm4gdC5zdGFja319Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXt1bnJlYWNoYWJsZSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSxhLHIpe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWk7dGhpcy5taW49YTt0aGlzLm1heD1yfXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBpPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxhPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGksYSl9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsaSl7Y29uc3QgYT1bXSxyPVtdLHM9dC5sZW5ndGg+PjEsbj1pLmxlbmd0aD4+MTtsZXQgbyxnLGMsbCxoLEMsUSxFLHU9MDtmb3IobGV0IGU9MDtlPHM7ZSsrKWEucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe0U9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIEUpc3dpdGNoKEUpe2Nhc2UiYWRkIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiY3ZyIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2Uic3ViIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7Qz1hLnBvcCgpO2EucHVzaChoLEMpO2JyZWFrO2Nhc2UicG9wIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2EucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtjPWEucG9wKCk7aWYoImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO289Yy5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8YS5sZW5ndGg8bylyZXR1cm4gbnVsbDtoPWFbYS5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLW8tMV09UTthLnB1c2goUSk7ci5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oUSxoKSk7YnJlYWs7Y2FzZSJkdXAiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7Yz1hLnBvcCgpO2EucHVzaChidWlsZE1pbk9wZXJhdGlvbihjLGVbdCsxXSkpO3QrPTY7YnJlYWt9aD1hLmF0KC0xKTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLTFdPVE7YS5wdXNoKFEpO3IucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKFEsaCkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtsPWEucG9wKCk7Yz1hLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWwudHlwZXx8ImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO2c9bC5udW1iZXI7bz1jLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoZyl8fGEubGVuZ3RoPG8pcmV0dXJuIG51bGw7Zz0oZyVvK28pJW87aWYoMD09PWcpYnJlYWs7YS5wdXNoKC4uLmEuc3BsaWNlKGEubGVuZ3RoLW8sby1nKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIGEucHVzaChuZXcgQXN0TGl0ZXJhbChFKSl9aWYoYS5sZW5ndGghPT1uKXJldHVybiBudWxsO2NvbnN0IGQ9W107Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7ZC5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWFbZV0scj1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQocik7Y29uc3Qgcz1pWzIqZV0sbj1pWzIqZSsxXSxvPVtyLnRvU3RyaW5nKCldO2lmKHM+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixzLCIsICIpO28ucHVzaCgiKSIpfWlmKG48dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixuLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7ZC5wdXNoKG8uam9pbigiIikpfXJldHVybiBkLmpvaW4oIlxuIil9fWNvbnN0IG5yPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxvcj1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4hISgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4hKDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGkpe2xldCBhLHI7Zm9yKGE9dCxyPWUubGVuZ3RoO2E8cjsrK2EpaWYoZVthXSE9PWkpcmV0dXJuIGE7cmV0dXJuIGF9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxpLGEpe2ZvcihsZXQgcj10O3I8aTsrK3IpZVtyXT1hfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGkpe2ZvcihsZXQgYT10LHI9aS0xO2E8cjsrK2EsLS1yKXtjb25zdCB0PWVbYV07ZVthXT1lW3JdO2Vbcl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LGk9ITEpe2xldCBhPSJsdHIiO2k/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCBncj1bXSxJcj1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxpPSExKXtsZXQgYT0hMDtjb25zdCByPWUubGVuZ3RoO2lmKDA9PT1yfHxpKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsaSk7Z3IubGVuZ3RoPXI7SXIubGVuZ3RoPXI7bGV0IHMsbixvPTA7Zm9yKHM9MDtzPHI7KytzKXtncltzXT1lLmNoYXJBdChzKTtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtsZXQgaT0iTCI7aWYodDw9MjU1KWk9bnJbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWk9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7aT1vclsyNTUmdF07aXx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKGk9IkFMIik7IlIiIT09aSYmIkFMIiE9PWkmJiJBTiIhPT1pfHxvKys7SXJbc109aX1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9yPC4zJiZyPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgZz1bXTtmb3Iocz0wO3M8cjsrK3MpZ1tzXT10O2NvbnN0IGM9aXNPZGQodCk/IlIiOiJMIixsPWMsaD1sO2xldCBDLFE9bDtmb3Iocz0wO3M8cjsrK3MpIk5TTSI9PT1JcltzXT9JcltzXT1ROlE9SXJbc107UT1sO2ZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiRU4iPT09Qz9JcltzXT0iQUwiPT09UT8iQU4iOiJFTiI6IlIiIT09QyYmIkwiIT09QyYmIkFMIiE9PUN8fChRPUMpfWZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiQUwiPT09QyYmKElyW3NdPSJSIil9Zm9yKHM9MTtzPHItMTsrK3MpeyJFUyI9PT1JcltzXSYmIkVOIj09PUlyW3MtMV0mJiJFTiI9PT1JcltzKzFdJiYoSXJbc109IkVOIik7IkNTIiE9PUlyW3NdfHwiRU4iIT09SXJbcy0xXSYmIkFOIiE9PUlyW3MtMV18fElyW3MrMV0hPT1JcltzLTFdfHwoSXJbc109SXJbcy0xXSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJFTiI9PT1JcltzXSl7Zm9yKGxldCBlPXMtMTtlPj0wJiYiRVQiPT09SXJbZV07LS1lKUlyW2VdPSJFTiI7Zm9yKGxldCBlPXMrMTtlPHImJiJFVCI9PT1JcltlXTsrK2UpSXJbZV09IkVOIn1mb3Iocz0wO3M8cjsrK3Mpe0M9SXJbc107IldTIiE9PUMmJiJFUyIhPT1DJiYiRVQiIT09QyYmIkNTIiE9PUN8fChJcltzXT0iT04iKX1RPWw7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdOyJFTiI9PT1DP0lyW3NdPSJMIj09PVE/IkwiOiJFTiI6IlIiIT09QyYmIkwiIT09Q3x8KFE9Qyl9Zm9yKHM9MDtzPHI7KytzKWlmKCJPTiI9PT1JcltzXSl7Y29uc3QgZT1maW5kVW5lcXVhbChJcixzKzEsIk9OIik7bGV0IHQ9bDtzPjAmJih0PUlyW3MtMV0pO2xldCBpPWg7ZSsxPHImJihpPUlyW2UrMV0pOyJMIiE9PXQmJih0PSJSIik7IkwiIT09aSYmKGk9IlIiKTt0PT09aSYmc2V0VmFsdWVzKElyLHMsZSx0KTtzPWUtMX1mb3Iocz0wO3M8cjsrK3MpIk9OIj09PUlyW3NdJiYoSXJbc109Yyk7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdO2lzRXZlbihnW3NdKT8iUiI9PT1DP2dbc10rPTE6IkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9Mik6IkwiIT09QyYmIkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9MSl9bGV0IEUsdT0tMSxkPTk5O2ZvcihzPTAsbj1nLmxlbmd0aDtzPG47KytzKXtFPWdbc107dTxFJiYodT1FKTtkPkUmJmlzT2RkKEUpJiYoZD1FKX1mb3IoRT11O0U+PWQ7LS1FKXtsZXQgZT0tMTtmb3Iocz0wLG49Zy5sZW5ndGg7czxuOysrcylpZihnW3NdPEUpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoZ3IsZSxzKTtlPS0xfX1lbHNlIGU8MCYmKGU9cyk7ZT49MCYmcmV2ZXJzZVZhbHVlcyhncixlLGcubGVuZ3RoKX1mb3Iocz0wLG49Z3IubGVuZ3RoO3M8bjsrK3Mpe2NvbnN0IGU9Z3Jbc107IjwiIT09ZSYmIj4iIT09ZXx8KGdyW3NdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoZ3Iuam9pbigiIiksYSl9Y29uc3QgY3I9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sbHI9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGhyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LENyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxRcj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOmNyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOmxyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6aHIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Q3IsdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOmNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6bHIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOmhyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOkNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTpjcix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOmxyLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6aHIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6Q3IsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6bHIsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpocixmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmxyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmhyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpjcn1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dXSksRXI9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoKGU9PiF0LmhhcyhlLnRvTG93ZXJDYXNlKCkpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6aSxmYWxsYmFjazphLHN0eWxlOnIsdWx0aW1hdGU6c30sbixvLGc9ITAsYz0hMCxsPSIiKXtjb25zdCBoPXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9bD9gICR7bH1gOiIiO2Zvcihjb25zdCBpIG9mIHQpbi5wdXNoKGBsb2NhbCgke2l9JHtlfSlgKX1pZihlKXtjb25zdCB0PVFyLmdldChlKSxzPWx8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgbHI6cmV0dXJuIkJvbGQiO2Nhc2UgaHI6cmV0dXJuIkl0YWxpYyI7Y2FzZSBDcjpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShyKTtPYmplY3QuYXNzaWduKGgsZ2VuZXJhdGVGb250KHQsbixvLGcmJiFhLGMmJiFpLHMpKX1yJiYoaC5zdHlsZT1yKTtzJiYoaC51bHRpbWF0ZT1zKTtpZihnJiZhKXtjb25zdCBlPVFyLmdldChhKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUsbixvLGcsYyYmIWksbCk7aC51bHRpbWF0ZXx8PXR9YyYmaSYmbyYmbi5wdXNoKGB1cmwoJHtvfSR7aX0pYCk7cmV0dXJuIGh9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsaSxhLHIscyl7aWYoYS5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1zJiYiVHlwZTEiIT09c3x8IS9eW0EtWl17Nn1cKy8udGVzdChhKXx8KGE9YS5zbGljZSg3KSk7Y29uc3Qgbj1hPW5vcm1hbGl6ZUZvbnROYW1lKGEpO2xldCBvPWUuZ2V0KG4pO2lmKG8pcmV0dXJuIG87bGV0IGc9UXIuZ2V0KGEpO2lmKCFnKWZvcihjb25zdFtlLHRdb2YgRXIpaWYoYS5zdGFydHNXaXRoKGUpKXthPWAke3R9JHthLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtnPVFyLmdldChhKTticmVha31sZXQgYz0hMTtpZighZyl7Zz1Rci5nZXQocik7Yz0hMH1jb25zdCBsPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFnKXtpZighdmFsaWRhdGVGb250TmFtZShhKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHthfWApO2Uuc2V0KG4sbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KGEpLGk9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSkscj10JiZpJiZDcnx8dCYmbHJ8fGkmJmhyfHxjcjtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUoYSl9Iiwke2x9YCxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6bCxiYXNlRm9udE5hbWU6YSxzcmM6YGxvY2FsKCR7YX0pYCxzdHlsZTpyfTtlLnNldChuLG8pO3JldHVybiBvfWNvbnN0IGg9W107YyYmdmFsaWRhdGVGb250TmFtZShhKSYmaC5wdXNoKGBsb2NhbCgke2F9KWApO2NvbnN0e3N0eWxlOkMsdWx0aW1hdGU6UX09Z2VuZXJhdGVGb250KGcsaCxpKSxFPW51bGw9PT1RLHU9RT8iIjpgLCR7UX1gO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7bH0ke3V9YCxndWVzc0ZhbGxiYWNrOkUsbG9hZGVkTmFtZTpsLGJhc2VGb250TmFtZTphLHNyYzpoLmpvaW4oIiwiKSxzdHlsZTpDfTtlLnNldChuLG8pO3JldHVybiBvfWNsYXNzIEltYWdlUmVzaXplcntzdGF0aWMjUj0yMDQ4O3N0YXRpYyN5PUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvYm1wIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIG5lZWRzVG9CZVJlc2l6ZWQoZSx0KXtpZihlPD10aGlzLiNSJiZ0PD10aGlzLiNSKXJldHVybiExO2NvbnN0e01BWF9ESU06aX09dGhpcztpZihlPml8fHQ+aSlyZXR1cm4hMDtjb25zdCBhPWUqdDtpZih0aGlzLl9oYXNNYXhBcmVhKXJldHVybiBhPnRoaXMuTUFYX0FSRUE7aWYoYTx0aGlzLiNSKioyKXJldHVybiExO2lmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCkpe3RoaXMuI1I9TWF0aC5tYXgodGhpcy4jUixNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSk7cmV0dXJuITF9dGhpcy4jUj10aGlzLl9ndWVzc01heCh0aGlzLiNSLGksMTI4LDApO3JldHVybiBhPih0aGlzLk1BWF9BUkVBPXRoaXMuI1IqKjIpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heCh0aGlzLiNSLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0T3B0aW9ucyh7Y2FudmFzTWF4QXJlYUluQnl0ZXM6ZT0tMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDp0PSExfSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mik7dGhpcy4jeT10fXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgaT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCksYT1pLmdldENvbnRleHQoIjJkIik7YS5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCByPWEuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107aS53aWR0aD1pLmhlaWdodD0xO3JldHVybiAwIT09cn1jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsaSxhKXtmb3IoO2UraSsxPHQ7KXtjb25zdCBpPU1hdGguZmxvb3IoKGUrdCkvMikscj1hfHxpO3RoaXMuX2FyZUdvb2REaW1zKGkscik/ZT1pOnQ9aX1yZXR1cm4gZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9PWU7aWYodCppKjQ+eXQpe2NvbnN0IGU9dGhpcy4jTigpO2lmKGUpcmV0dXJuIGV9Y29uc3QgYT10aGlzLl9lbmNvZGVCTVAoKTtsZXQgcixzO2lmKGF3YWl0IEltYWdlUmVzaXplci5jYW5Vc2VJbWFnZURlY29kZXIpe3I9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2JtcCIscHJlZmVyQW5pbWF0aW9uOiExLHRyYW5zZmVyOlthLmJ1ZmZlcl19KTtzPXIuZGVjb2RlKCkuY2F0Y2goKGU9Pnt3YXJuKGBCTVAgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkOiAke2V9YCk7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFt0aGlzLl9lbmNvZGVCTVAoKS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpfSkpLmZpbmFsbHkoKCgpPT57ci5jbG9zZSgpfSkpfWVsc2Ugcz1jcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpO2NvbnN0e01BWF9BUkVBOm4sTUFYX0RJTTpvfT1JbWFnZVJlc2l6ZXIsZz1NYXRoLm1heCh0L28saS9vLE1hdGguc3FydCh0KmkvbikpLGM9TWF0aC5tYXgoZywyKSxsPU1hdGgucm91bmQoMTAqKGcrMS4yNSkpLzEwL2MsaD1NYXRoLmZsb29yKE1hdGgubG9nMihsKSksQz1uZXcgQXJyYXkoaCsyKS5maWxsKDIpO0NbMF09YztDLnNwbGljZSgtMSwxLGwvKDE8PGgpKTtsZXQgUT10LEU9aTtjb25zdCB1PWF3YWl0IHM7bGV0IGQ9dS5pbWFnZXx8dTtmb3IoY29uc3QgZSBvZiBDKXtjb25zdCB0PVEsaT1FO1E9TWF0aC5mbG9vcihRL2UpLTE7RT1NYXRoLmZsb29yKEUvZSktMTtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoUSxFKTthLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGQsMCwwLHQsaSwwLDAsUSxFKTtkLmNsb3NlKCk7ZD1hLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfWUuZGF0YT1udWxsO2UuYml0bWFwPWQ7ZS53aWR0aD1RO2UuaGVpZ2h0PUU7cmV0dXJuIGV9I04oKXtjb25zdHtfaW1nRGF0YTplfT10aGlzLHtkYXRhOnQsd2lkdGg6aSxoZWlnaHQ6YSxraW5kOnJ9PWUscz1pKmEqNCxuPU1hdGguY2VpbChNYXRoLmxvZzIocy95dCkpLG89aT4+bixnPWE+Pm47bGV0IGMsbD1hO3RyeXtjPW5ldyBVaW50OEFycmF5KHMpfWNhdGNoe2xldCBlPU1hdGguZmxvb3IoTWF0aC5sb2cyKHMrMSkpO2Zvcig7Oyl0cnl7Yz1uZXcgVWludDhBcnJheSgyKiplLTEpO2JyZWFrfWNhdGNoe2UtPTF9bD1NYXRoLmZsb29yKCgyKiplLTEpLyg0KmkpKTtjb25zdCB0PWkqbCo0O3Q8Yy5sZW5ndGgmJihjPW5ldyBVaW50OEFycmF5KHQpKX1jb25zdCBoPW5ldyBVaW50MzJBcnJheShjLmJ1ZmZlciksQz1uZXcgVWludDMyQXJyYXkobypnKTtsZXQgUT0wLEU9MDtjb25zdCB1PU1hdGguY2VpbChhL2wpLGQ9YSVsPT0wP2E6YSVsO2ZvcihsZXQgZT0wO2U8dTtlKyspe2NvbnN0IGE9ZTx1LTE/bDpkOyh7c3JjUG9zOlF9PWNvbnZlcnRUb1JHQkEoe2tpbmQ6cixzcmM6dCxkZXN0Omgsd2lkdGg6aSxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6UX0pKTtmb3IobGV0IGU9MCx0PWE+Pm47ZTx0O2UrKyl7Y29uc3QgdD1oLnN1YmFycmF5KChlPDxuKSppKTtmb3IobGV0IGU9MDtlPG87ZSsrKUNbRSsrXT10W2U8PG5dfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGcpKXtlLmRhdGE9QztlLndpZHRoPW87ZS5oZWlnaHQ9ZztlLmtpbmQ9UjtyZXR1cm4gbnVsbH1jb25zdCBmPW5ldyBPZmZzY3JlZW5DYW52YXMobyxnKTtmLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KEMuYnVmZmVyKSxvLGcpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Zi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9ZztyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOml9PXRoaXMuX2ltZ0RhdGE7bGV0IGEscj10aGlzLl9pbWdEYXRhLmRhdGEscz1uZXcgVWludDhBcnJheSgwKSxuPXMsbz0wO3N3aXRjaChpKXtjYXNlIFM6e2E9MTtzPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGk9ZSs3Pj4zLG49aSszJi00O2lmKGkhPT1uKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4qdCk7bGV0IGE9MDtmb3IobGV0IHM9MCxvPXQqaTtzPG87cys9aSxhKz1uKWUuc2V0KHIuc3ViYXJyYXkocyxzK2kpLGEpO3I9ZX1icmVha31jYXNlIGs6YT0yNDtpZigzJmUpe2NvbnN0IGk9MyplLGE9aSszJi00LHM9YS1pLG49bmV3IFVpbnQ4QXJyYXkoYSp0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLGE9dCppO2U8YTtlKz1pKXtjb25zdCB0PXIuc3ViYXJyYXkoZSxlK2kpO2ZvcihsZXQgZT0wO2U8aTtlKz0zKXtuW28rK109dFtlKzJdO25bbysrXT10W2UrMV07bltvKytdPXRbZV19bys9c31yPW59ZWxzZSBmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PXJbZV07cltlXT1yW2UrMl07cltlKzJdPXR9YnJlYWs7Y2FzZSBSOmE9MzI7bz0zO249bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGk9bmV3IERhdGFWaWV3KG4uYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7aS5zZXRVaW50MzIoMCwyNTUsITApO2kuc2V0VWludDMyKDQsNjUyODAsITApO2kuc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2kuc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7aS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTtpLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTtpLnNldFVpbnQzMig4LDY1MjgwLCEwKTtpLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBnPTA7Y29uc3QgYz00MCtuLmxlbmd0aCxsPTE0K2Mrcy5sZW5ndGgrci5sZW5ndGgsaD1uZXcgVWludDhBcnJheShsKSxDPW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7Qy5zZXRVaW50MTYoZywxOTc3OCwhMCk7Zys9MjtDLnNldFVpbnQzMihnLGwsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMTQrYytzLmxlbmd0aCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLGMsITApO2crPTQ7Qy5zZXRJbnQzMihnLGUsITApO2crPTQ7Qy5zZXRJbnQzMihnLC10LCEwKTtnKz00O0Muc2V0VWludDE2KGcsMSwhMCk7Zys9MjtDLnNldFVpbnQxNihnLGEsITApO2crPTI7Qy5zZXRVaW50MzIoZyxvLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLHMubGVuZ3RoLzQsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O2guc2V0KG4sZyk7Zys9bi5sZW5ndGg7aC5zZXQocyxnKTtnKz1zLmxlbmd0aDtoLnNldChyLGcpO3JldHVybiBofX1jb25zdCB1cj0zMjg1Mzc3NTIwLGRyPTQyOTQ5MDE3NjAsZnI9NjU1MzU7Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTp1cjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOnVyfXVwZGF0ZShlKXtsZXQgdCxpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dD1uZXcgVWludDhBcnJheSgyKmUubGVuZ3RoKTtpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPD0yNTUpdFtpKytdPXI7ZWxzZXt0W2krK109cj4+Pjg7dFtpKytdPTI1NSZyfX19ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIGZvcm1hdCwgbXVzdCBiZSBhIHN0cmluZyBvciBUeXBlZEFycmF5LiIpO3Q9ZS5zbGljZSgpO2k9dC5ieXRlTGVuZ3RofWNvbnN0IGE9aT4+MixyPWktNCphLHM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsYSk7bGV0IG49MCxvPTAsZz10aGlzLmgxLGM9dGhpcy5oMjtjb25zdCBsPTM0MzI5MTgzNTMsaD00NjE4NDU5MDcsQz0xMTYwMSxRPTEzNzE1O2ZvcihsZXQgZT0wO2U8YTtlKyspaWYoMSZlKXtuPXNbZV07bj1uKmwmZHJ8bipDJmZyO249bjw8MTV8bj4+PjE3O249bipoJmRyfG4qUSZmcjtnXj1uO2c9Zzw8MTN8Zz4+PjE5O2c9NSpnKzM4NjQyOTIxOTZ9ZWxzZXtvPXNbZV07bz1vKmwmZHJ8bypDJmZyO289bzw8MTV8bz4+PjE3O289bypoJmRyfG8qUSZmcjtjXj1vO2M9Yzw8MTN8Yz4+PjE5O2M9NSpjKzM4NjQyOTIxOTZ9bj0wO3N3aXRjaChyKXtjYXNlIDM6bl49dFs0KmErMl08PDE2O2Nhc2UgMjpuXj10WzQqYSsxXTw8ODtjYXNlIDE6bl49dFs0KmFdO249bipsJmRyfG4qQyZmcjtuPW48PDE1fG4+Pj4xNztuPW4qaCZkcnxuKlEmZnI7MSZhP2dePW46Y149bn10aGlzLmgxPWc7dGhpcy5oMj1jfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJmRyfDM2MDQ1KmUmZnI7dD00MjgzNTQzNTExKnQmZHJ8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmZHIpPj4+MTY7ZV49dD4+PjE7ZT00NDQ5ODQ0MDMqZSZkcnw2MDQ5OSplJmZyO3Q9MzMwMTg4MjM2Nip0JmRyfCgzMTIwNDM3ODkzKih0PDwxNnxlPj4+MTYpJmRyKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxpLGEscil7bGV0IHM9ZTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoLTE7ZTxpO2UrKyl7Y29uc3QgaT10W2VdO3M9c1tpXXx8PVtdfXNbdC5hdCgtMSldPXtjaGVja0ZuOmksaXRlcmF0ZUZuOmEscHJvY2Vzc0ZuOnJ9fWNvbnN0IHByPVtdO2FkZFN0YXRlKHByLFt4QSxIQSxBdCxMQV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUlubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1BdDtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7YX1gKX0pLChmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxuPXItMixvPXItMSxnPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMjAwKTtpZihnPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGM9MDtjb25zdCBsPVtdO2xldCBoPTAsQz0xLFE9MTtmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCB0PWFbbisoZTw8MildLGk9YVtvKyhlPDwyKV1bMF07aWYoQytpLndpZHRoPjFlMyl7Yz1NYXRoLm1heChjLEMpO1ErPWgrMjtDPTA7aD0wfWwucHVzaCh7dHJhbnNmb3JtOnQseDpDLHk6USx3Omkud2lkdGgsaDppLmhlaWdodH0pO0MrPWkud2lkdGgrMjtoPU1hdGgubWF4KGgsaS5oZWlnaHQpfWNvbnN0IEU9TWF0aC5tYXgoYyxDKSsxLHU9UStoKzEsZD1uZXcgVWludDhBcnJheShFKnUqNCksZj1FPDwyO2ZvcihsZXQgZT0wO2U8ZztlKyspe2NvbnN0IHQ9YVtvKyhlPDwyKV1bMF0uZGF0YSxpPWxbZV0udzw8MjtsZXQgcj0wLHM9bFtlXS54K2xbZV0ueSpFPDwyO2Quc2V0KHQuc3ViYXJyYXkoMCxpKSxzLWYpO2ZvcihsZXQgYT0wLG49bFtlXS5oO2E8bjthKyspe2Quc2V0KHQuc3ViYXJyYXkocixyK2kpLHMpO3IrPWk7cys9Zn1kLnNldCh0LnN1YmFycmF5KHItaSxyKSxzKTtmb3IoO3M+PTA7KXt0W3MtNF09dFtzXTt0W3MtM109dFtzKzFdO3Rbcy0yXT10W3MrMl07dFtzLTFdPXRbcyszXTt0W3MraV09dFtzK2ktNF07dFtzK2krMV09dFtzK2ktM107dFtzK2krMl09dFtzK2ktMl07dFtzK2krM109dFtzK2ktMV07cy09Zn19Y29uc3QgcD17d2lkdGg6RSxoZWlnaHQ6dX07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKEUsdSk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShkLmJ1ZmZlciksRSx1KSwwLDApO3AuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7cC5kYXRhPW51bGx9ZWxzZXtwLmtpbmQ9UjtwLmRhdGE9ZH1pLnNwbGljZShzLDQqZyxldCk7YS5zcGxpY2Uocyw0KmcsW3AsbF0pO3JldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLF9lLExBXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1fZTtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZU1hc2tHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9KSwoZnVuY3Rpb24gZm91bmRJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLG49ci0yLG89ci0xO2xldCBnPU1hdGguZmxvb3IoKHQtcykvNCk7aWYoZzwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBjLGwsaD0hMTtjb25zdCBDPWFbb11bMF0sUT1hW25dWzBdLEU9YVtuXVsxXSx1PWFbbl1bMl0sZD1hW25dWzNdO2lmKEU9PT11KXtoPSEwO2M9bis0O2xldCBlPW8rNDtmb3IobGV0IHQ9MTt0PGc7dCsrLGMrPTQsZSs9NCl7bD1hW2NdO2lmKGFbZV1bMF0hPT1DfHxsWzBdIT09UXx8bFsxXSE9PUV8fGxbMl0hPT11fHxsWzNdIT09ZCl7dDwxMD9oPSExOmc9dDticmVha319fWlmKGgpe2c9TWF0aC5taW4oZywxZTMpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSgyKmcpO2M9bjtmb3IobGV0IHQ9MDt0PGc7dCsrLGMrPTQpe2w9YVtjXTtlW3Q8PDFdPWxbNF07ZVsxKyh0PDwxKV09bFs1XX1pLnNwbGljZShzLDQqZyxpdCk7YS5zcGxpY2Uocyw0KmcsW0MsUSxFLHUsZCxlXSl9ZWxzZXtnPU1hdGgubWluKGcsMTAwKTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8Zzt0Kyspe2w9YVtuKyh0PDwyKV07Y29uc3QgaT1hW28rKHQ8PDIpXVswXTtlLnB1c2goe2RhdGE6aS5kYXRhLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0LGludGVycG9sYXRlOmkuaW50ZXJwb2xhdGUsY291bnQ6aS5jb3VudCx0cmFuc2Zvcm06bH0pfWkuc3BsaWNlKHMsNCpnLHplKTthLnNwbGljZShzLDQqZyxbZV0pfXJldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLCRlLExBXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxpPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbaV1bMV0mJjA9PT10W2ldWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6aWYoaVt0XSE9PUhBKXJldHVybiExO2NvbnN0IHI9ZS5pQ3Vyci0yLHM9YVtyXVswXSxuPWFbcl1bM107cmV0dXJuIGFbdF1bMF09PT1zJiYwPT09YVt0XVsxXSYmMD09PWFbdF1bMl0mJmFbdF1bM109PT1uO2Nhc2UgMjppZihpW3RdIT09JGUpcmV0dXJuITE7Y29uc3Qgbz1hW2UuaUN1cnItMV1bMF07cmV0dXJuIGFbdF1bMF09PT1vO2Nhc2UgMzpyZXR1cm4gaVt0XT09PUxBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTMsbj1yLTIsbz1hW3ItMV1bMF0sZz1hW25dWzBdLGM9YVtuXVszXSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMWUzKTtpZihsPDMpcmV0dXJuIHQtKHQtcyklNDtjb25zdCBoPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtsZXQgQz1uO2ZvcihsZXQgZT0wO2U8bDtlKyssQys9NCl7Y29uc3QgdD1hW0NdO2hbZTw8MV09dFs0XTtoWzErKGU8PDEpXT10WzVdfWNvbnN0IFE9W28sZyxjLGhdO2kuc3BsaWNlKHMsNCpsLHR0KTthLnNwbGljZShzLDQqbCxRKTtyZXR1cm4gcysxfSkpO2FkZFN0YXRlKHByLFt0ZSxvZSxoZSxCZSxpZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PXRlO2Nhc2UgMTpyZXR1cm4gaVt0XT09PW9lO2Nhc2UgMjpyZXR1cm4gaVt0XT09PWhlO2Nhc2UgMzppZihpW3RdIT09QmUpcmV0dXJuITE7Y29uc3Qgcj1lLmlDdXJyLTMscz1hW3JdWzBdLG49YVtyXVsxXTtyZXR1cm4gYVt0XVswXT09PXMmJmFbdF1bMV09PT1uO2Nhc2UgNDpyZXR1cm4gaVt0XT09PWllfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTQsbj1yLTMsbz1yLTIsZz1yLTEsYz1yLGw9YVtuXVswXSxoPWFbbl1bMV07bGV0IEM9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS81KSwxZTMpO2lmKEM8MylyZXR1cm4gdC0odC1zKSU1O2xldCBRPXM7aWYocz49NCYmaVtzLTRdPT09aVtuXSYmaVtzLTNdPT09aVtvXSYmaVtzLTJdPT09aVtnXSYmaVtzLTFdPT09aVtjXSYmYVtzLTRdWzBdPT09bCYmYVtzLTRdWzFdPT09aCl7QysrO1EtPTV9bGV0IEU9USs0O2ZvcihsZXQgZT0xO2U8QztlKyspe2kuc3BsaWNlKEUsMyk7YS5zcGxpY2UoRSwzKTtFKz0yfXJldHVybiBFKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLmNvbnRleHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsaT1lLmxlbmd0aCxhPXRoaXMuc3RhdGUscj10aGlzLm1hdGNoO2lmKCFhJiYhciYmdCsxPT09aSYmIXByW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9aTtyZXR1cm59Y29uc3Qgcz10aGlzLmNvbnRleHQ7Zm9yKDt0PGk7KXtpZihyKXtpZigoMCxyLml0ZXJhdGVGbikocyx0KSl7dCsrO2NvbnRpbnVlfXQ9KDAsci5wcm9jZXNzRm4pKHMsdCsxKTtpPWUubGVuZ3RoO3I9bnVsbDthPW51bGw7aWYodD49aSlicmVha31hPShhfHxwcilbZVt0XV07aWYoYSYmIUFycmF5LmlzQXJyYXkoYSkpe3MuaUN1cnI9dDt0Kys7aWYoIWEuY2hlY2tGbnx8KDAsYS5jaGVja0ZuKShzKSl7cj1hO2E9bnVsbH1lbHNlIGE9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPWE7dGhpcy5tYXRjaD1yO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O2NvbnN0cnVjdG9yKGU9MCx0KXt0aGlzLl9zdHJlYW1TaW5rPXQ7dGhpcy5mbkFycmF5PVtdO3RoaXMuYXJnc0FycmF5PVtdO3RoaXMub3B0aW1pemVyPSF0fHxlJnU/bmV3IE51bGxPcHRpbWl6ZXIodGhpcyk6bmV3IFF1ZXVlT3B0aW1pemVyKHRoaXMpO3RoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQ7dGhpcy5fdG90YWxMZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMuX3Jlc29sdmVkPXQ/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1zZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoZSl7dGhpcy5vcHRpbWl6ZXIuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuYXJnc0FycmF5Lmxlbmd0aH1nZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3N0cmVhbVNpbmsucmVhZHl9Z2V0IHRvdGFsTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3RvdGFsTGVuZ3RoK3RoaXMubGVuZ3RofWFkZE9wKGUsdCl7dGhpcy5vcHRpbWl6ZXIucHVzaChlLHQpO3RoaXMud2VpZ2h0Kys7dGhpcy5fc3RyZWFtU2luayYmKHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRXx8dGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PUxBfHxlPT09aWUpKSYmdGhpcy5mbHVzaCgpfWFkZEltYWdlT3BzKGUsdCxpLGE9ITEpe2lmKGEpe3RoaXMuYWRkT3AoeEEpO3RoaXMuYWRkT3AoVUEsW1tbIlNNYXNrIiwhMV1dXSl9dm9pZCAwIT09aSYmdGhpcy5hZGRPcChLZSxbIk9DIixpXSk7dGhpcy5hZGRPcChlLHQpO3ZvaWQgMCE9PWkmJnRoaXMuYWRkT3AoVGUsW10pO2EmJnRoaXMuYWRkT3AoTEEpfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3AoREEsW2VdKX19YWRkRGVwZW5kZW5jaWVzKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGREZXBlbmRlbmN5KHQpfWFkZE9wTGlzdChlKXtpZihlIGluc3RhbmNlb2YgT3BlcmF0b3JMaXN0KXtmb3IoY29uc3QgdCBvZiBlLmRlcGVuZGVuY2llcyl0aGlzLmRlcGVuZGVuY2llcy5hZGQodCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXRoaXMuYWRkT3AoZS5mbkFycmF5W3RdLGUuYXJnc0FycmF5W3RdKX1lbHNlIHdhcm4oJ2FkZE9wTGlzdCAtIGlnbm9yaW5nIGludmFsaWQgIm9wTGlzdCIgcGFyYW1ldGVyLicpfWdldElSKCl7cmV0dXJue2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsZW5ndGg6dGhpcy5sZW5ndGh9fWdldCBfdHJhbnNmZXJzKCl7Y29uc3QgZT1bXSx7Zm5BcnJheTp0LGFyZ3NBcnJheTppLGxlbmd0aDphfT10aGlzO2ZvcihsZXQgcj0wO3I8YTtyKyspc3dpdGNoKHRbcl0pe2Nhc2UgQXQ6Y2FzZSBldDpjYXNlIF9lOmNvbnN0IHQ9aVtyXVswXTshdC5jYWNoZWQmJnQuZGF0YT8uYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJmUucHVzaCh0LmRhdGEuYnVmZmVyKX1yZXR1cm4gZX1mbHVzaChlPSExLHQ9bnVsbCl7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBpPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1pO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOml9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWZ1bmN0aW9uIGRlY29kZUFuZENsYW1wKGUsdCxpLGEpeyhlPXQrZSppKTwwP2U9MDplPmEmJihlPWEpO3JldHVybiBlfWZ1bmN0aW9uIHJlc2l6ZUltYWdlTWFzayhlLHQsaSxhLHIscyl7Y29uc3Qgbj1yKnM7bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KG4pOnQ8PTE2P25ldyBVaW50MTZBcnJheShuKTpuZXcgVWludDMyQXJyYXkobik7Y29uc3QgZz1pL3IsYz1hL3M7bGV0IGwsaCxDLFEsRT0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KHIpLGQ9aTtmb3IobD0wO2w8cjtsKyspdVtsXT1NYXRoLmZsb29yKGwqZyk7Zm9yKGw9MDtsPHM7bCsrKXtDPU1hdGguZmxvb3IobCpjKSpkO2ZvcihoPTA7aDxyO2grKyl7UT1DK3VbaF07b1tFKytdPWVbUV19fXJldHVybiBvfWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTphPSExLHNtYXNrOnI9bnVsbCxtYXNrOnM9bnVsbCxpc01hc2s6bj0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSl7dGhpcy5pbWFnZT1pO2NvbnN0IGM9aS5kaWN0LGw9Yy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgaDtpZihsIGluc3RhbmNlb2YgTmFtZSloPWwubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobCkpe2NvbnN0IHQ9ZS5mZXRjaElmUmVmKGxbMF0pO3QgaW5zdGFuY2VvZiBOYW1lJiYoaD10Lm5hbWUpfXN3aXRjaChoKXtjYXNlIkpQWERlY29kZSI6KHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodCxjb21wb25lbnRzQ291bnQ6aS5udW1Db21wcyxiaXRzUGVyQ29tcG9uZW50OmkuYml0c1BlckNvbXBvbmVudH09SnB4SW1hZ2UucGFyc2VJbWFnZVByb3BlcnRpZXMoaS5zdHJlYW0pKTtpLnN0cmVhbS5yZXNldCgpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpjLmhhcygiU01hc2tJbkRhdGEiKX07YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6aS5iaXRzUGVyQ29tcG9uZW50PTE7aS5udW1Db21wcz0xfWxldCBDPWMuZ2V0KCJXIiwiV2lkdGgiKSxRPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihpLndpZHRoKSYmaS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGkuaGVpZ2h0KSYmaS5oZWlnaHQ+MCYmKGkud2lkdGghPT1DfHxpLmhlaWdodCE9PVEpKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO0M9aS53aWR0aDtRPWkuaGVpZ2h0fWlmKEM8MXx8UTwxKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtDfSBvciBoZWlnaHQ6ICR7UX1gKTt0aGlzLndpZHRoPUM7dGhpcy5oZWlnaHQ9UTt0aGlzLmludGVycG9sYXRlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1jLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1jLmdldCgiTWF0dGUiKXx8ITE7bGV0IEU9aS5iaXRzUGVyQ29tcG9uZW50O2lmKCFFKXtFPWMuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIUUpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO0U9MX19dGhpcy5icGM9RTtpZighdGhpcy5pbWFnZU1hc2spe2xldCByPWMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpO2NvbnN0IHM9ISFyO2lmKHMpdGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJihyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIikpO2Vsc2UgaWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucylyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIik7ZWxzZSBzd2l0Y2goaS5udW1Db21wcyl7Y2FzZSAxOnI9TmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6cj1OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OnI9TmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSW1hZ2VzIHdpdGggJHtpLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9dGhpcy5jb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnIseHJlZjplLHJlc291cmNlczphP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXM/dGhpcy5udW1Db21wOjA7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5pc0luZGV4ZWRDb2xvcm1hcD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZX19dGhpcy5kZWNvZGU9Yy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLEUpfHxuJiYhQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PEUpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgaT0wLGE9MDtpPHRoaXMuZGVjb2RlLmxlbmd0aDtpKz0yLCsrYSl7Y29uc3Qgcj10aGlzLmRlY29kZVtpXSxzPXRoaXMuZGVjb2RlW2krMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbYV09dD8ocy1yKS9lOnMtcjt0aGlzLmRlY29kZUFkZGVuZHNbYV09dD9yOmUqcn19aWYocil0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7ZWxzZSBpZihzKWlmKHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtzLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpzLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTp3YXJuKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9c31zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3Qgbj1pO2xldCBvPW51bGwsZz1udWxsO2NvbnN0IGM9aS5kaWN0LmdldCgiU01hc2siKSxsPWkuZGljdC5nZXQoIk1hc2siKTtjP2MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP289Yzp3YXJuKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOmwmJihsIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShsKT9nPWw6d2FybigiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphLHNtYXNrOm8sbWFzazpnLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTpyLGludGVycG9sYXRlOnN9KXtjb25zdCBuPSh0Kzc+PjMpKmksbz1lLmJ5dGVMZW5ndGg7bGV0IGcsYztpZighYXx8ciYmIShuPT09bykpaWYocil7Zz1uZXcgVWludDhBcnJheShuKTtnLnNldChlKTtnLmZpbGwoMjU1LG8pfWVsc2UgZz1uZXcgVWludDhBcnJheShlKTtlbHNlIGc9ZTtpZihyKWZvcihjPTA7YzxvO2MrKylnW2NdXj0yNTU7cmV0dXJue2RhdGE6Zyx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnZlcnNlRGVjb2RlOnIsaW50ZXJwb2xhdGU6cyxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpuPSExfSl7Y29uc3Qgbz0xPT09dCYmMT09PWkmJnI9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKG8pcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6b307aWYobil7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQodCxpKSl7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCppKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxkZXN0OmEsd2lkdGg6dCxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpyfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpSLGRhdGE6YSx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9KX1jb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxuPWEuZ2V0Q29udGV4dCgiMmQiKSxvPW4uY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLGRlc3Q6by5kYXRhLHdpZHRoOnQsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6cn0pO24ucHV0SW1hZ2VEYXRhKG8sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6cyxiaXRtYXA6YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19cmV0dXJuIHRoaXMuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6cixpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludGVycG9sYXRlOnN9KX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxpPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscj10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxzPSgxPDx0KS0xO2xldCBuLG87aWYoMT09PXQpe2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl09KyFlW25dO3JldHVybn1sZXQgZz0wO2ZvcihuPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O248bztuKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7ZVtnXT1kZWNvZGVBbmRDbGFtcChlW2ddLGFbdF0sclt0XSxzKTtnKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMubnVtQ29tcHMscz1pKmEqcjtsZXQgbixvPTA7bj10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgZz1pKnIsYz0oMTw8dCktMTtsZXQgbCxoLEM9MDtpZigxPT09dCl7bGV0IHQsaSxyO2ZvcihsZXQgcz0wO3M8YTtzKyspe2k9QysoLTgmZyk7cj1DK2c7Zm9yKDtDPGk7KXtoPWVbbysrXTtuW0NdPWg+PjcmMTtuW0MrMV09aD4+NiYxO25bQysyXT1oPj41JjE7bltDKzNdPWg+PjQmMTtuW0MrNF09aD4+MyYxO25bQys1XT1oPj4yJjE7bltDKzZdPWg+PjEmMTtuW0MrN109MSZoO0MrPTh9aWYoQzxyKXtoPWVbbysrXTt0PTEyODtmb3IoO0M8cjspe25bQysrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBpPTA7aD0wO2ZvcihDPTAsbD1zO0M8bDsrK0Mpe2lmKEMlZz09MCl7aD0wO2k9MH1mb3IoO2k8dDspe2g9aDw8OHxlW28rK107aSs9OH1jb25zdCBhPWktdDtsZXQgcj1oPj5hO3I8MD9yPTA6cj5jJiYocj1jKTtuW0NdPXI7aCY9KDE8PGEpLTE7aT1hfX1yZXR1cm4gbn1hc3luYyBmaWxsT3BhY2l0eShlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5zbWFzayxuPXRoaXMubWFzaztsZXQgbyxnLGMsbCxoLEM7aWYocyl7Zz1zLndpZHRoO2M9cy5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZypjKTthd2FpdCBzLmZpbGxHcmF5QnVmZmVyKG8pO2c9PT10JiZjPT09aXx8KG89cmVzaXplSW1hZ2VNYXNrKG8scy5icGMsZyxjLHQsaSkpfWVsc2UgaWYobilpZihuIGluc3RhbmNlb2YgUERGSW1hZ2Upe2c9bi53aWR0aDtjPW4uaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcqYyk7bi5udW1Db21wcz0xO2F3YWl0IG4uZmlsbEdyYXlCdWZmZXIobyk7Zm9yKGw9MCxoPWcqYztsPGg7KytsKW9bbF09MjU1LW9bbF07Zz09PXQmJmM9PT1pfHwobz1yZXNpemVJbWFnZU1hc2sobyxuLmJwYyxnLGMsdCxpKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqaSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2ZvcihsPTAsaD10Kmk7bDxoOysrbCl7bGV0IHQ9MDtjb25zdCBpPWwqZTtmb3IoQz0wO0M8ZTsrK0Mpe2NvbnN0IGU9cltpK0NdLGE9MipDO2lmKGU8blthXXx8ZT5uW2ErMV0pe3Q9MjU1O2JyZWFrfX1vW2xdPXR9fX1pZihvKWZvcihsPTAsQz0zLGg9dCphO2w8aDsrK2wsQys9NCllW0NdPW9bbF07ZWxzZSBmb3IobD0wLEM9MyxoPXQqYTtsPGg7KytsLEMrPTQpZVtDXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCByPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKSxzPXJbMF0sbj1yWzFdLG89clsyXSxnPXQqaSo0O2ZvcihsZXQgdD0wO3Q8Zzt0Kz00KXtjb25zdCBpPWVbdCszXTtpZigwPT09aSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGE9MjU1L2k7ZVt0XT0oZVt0XS1zKSphK3M7ZVt0KzFdPShlW3QrMV0tbikqYStuO2VbdCsyXT0oZVt0KzJdLW8pKmErb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgaT10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxyPXt3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scz10aGlzLm51bUNvbXBzLG49dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGc9dGhpcy5icGMsYz1uKnMqZys3Pj4zLGw9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoaSxhKTtpZighdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe3Iua2luZD1SO2NvbnN0IGU9ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKm4qNCx7fSk7cmV0dXJuIHQ/bD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UociwhMSk6dGhpcy5jcmVhdGVCaXRtYXAoUixpLGEsZSk6cn1pZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1nP2U9UzoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09Z3x8dGhpcy5uZWVkc0RlY29kZXx8KGU9ayk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmk9PT1uJiZhPT09byl7Y29uc3Qgcz1hd2FpdCB0aGlzLiNHKG4sbyk7aWYocylyZXR1cm4gcztjb25zdCBnPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse30pO2lmKHQpcmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOmcsa2luZDplLHdpZHRoOmksaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxuLG8sZyk7ci5raW5kPWU7ci5kYXRhPWc7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT1TLCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXIuZGF0YTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdFtlXV49MjU1fXJldHVybiByfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qYztpZih0JiYhbCl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PWF3YWl0IHRoaXMuI0coaSxhKTtpZih0KXJldHVybiB0O2NvbnN0IHI9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDppLGRyYXdIZWlnaHQ6YSxmb3JjZVJHQkE6ITB9KTtyZXR1cm4gdGhpcy5jcmVhdGVCaXRtYXAoUixpLGEscil9fWVsc2Ugc3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTM7Y2FzZSJEZXZpY2VSR0IiOmNhc2UiRGV2aWNlQ01ZSyI6ci5raW5kPWs7ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6aSxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6ITB9KTtyZXR1cm4gbD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocik6cn19fWNvbnN0IGg9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qYyx7aW50ZXJuYWw6ITB9KSxDPTB8aC5sZW5ndGgvYyphL28sUT10aGlzLmdldENvbXBvbmVudHMoaCk7bGV0IEUsdSxkLGYscCxtO2lmKHQmJiFsKXtkPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKTtmPWQuZ2V0Q29udGV4dCgiMmQiKTtwPWYuY3JlYXRlSW1hZ2VEYXRhKGksYSk7bT1wLmRhdGF9ci5raW5kPVI7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXt0JiYhbHx8KG09bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSo0KSk7RT0xO3U9ITA7YXdhaXQgdGhpcy5maWxsT3BhY2l0eShtLGksYSxDLFEpfWVsc2V7aWYoIXR8fGwpe3Iua2luZD1rO209bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSozKTtFPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkobS5idWZmZXIpLmZpbGwoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO0U9MX11PSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKFEpO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKG0sbixvLGksYSxDLGcsUSxFKTt1JiZ0aGlzLnVuZG9QcmVibGVuZChtLGksQyk7aWYodCYmIWwpe2YucHV0SW1hZ2VEYXRhKHAsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmksaGVpZ2h0OmEsYml0bWFwOmQudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19ci5kYXRhPW07cmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIpOnJ9YXN5bmMgZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHt0fWApO2NvbnN0IGk9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5icGMscz1pKnQqcis3Pj4zLG49YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGEqcyx7aW50ZXJuYWw6ITB9KSxvPXRoaXMuZ2V0Q29tcG9uZW50cyhuKTtsZXQgZyxjO2lmKDE9PT1yKXtjPWkqYTtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihnPTA7ZzxjOysrZyllW2ddPW9bZ10tMSYyNTU7ZWxzZSBmb3IoZz0wO2c8YzsrK2cpZVtnXT0yNTUmLW9bZ107cmV0dXJufXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG8pO2M9aSphO2NvbnN0IGw9MjU1LygoMTw8ciktMSk7Zm9yKGc9MDtnPGM7KytnKWVbZ109bCpvW2ddfWNyZWF0ZUJpdG1hcChlLHQsaSxhKXtjb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxzPXIuZ2V0Q29udGV4dCgiMmQiKTtsZXQgbjtpZihlPT09UiluPW5ldyBJbWFnZURhdGEoYSx0LGkpO2Vsc2V7bj1zLmNyZWF0ZUltYWdlRGF0YSh0LGkpO2NvbnZlcnRUb1JHQkEoe2tpbmQ6ZSxzcmM6YSxkZXN0Om5ldyBVaW50MzJBcnJheShuLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfXMucHV0SW1hZ2VEYXRhKG4sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksYml0bWFwOnIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19YXN5bmMjRyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5pbWFnZS5nZXRUcmFuc2ZlcmFibGVJbWFnZSgpO3JldHVybiBpP3tkYXRhOm51bGwsd2lkdGg6ZSxoZWlnaHQ6dCxiaXRtYXA6aSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfTpudWxsfWFzeW5jIGdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDppLGZvcmNlUkdCQTphPSExLGZvcmNlUkdCOnI9ITEsaW50ZXJuYWw6cz0hMX0pe3RoaXMuaW1hZ2UucmVzZXQoKTt0aGlzLmltYWdlLmRyYXdXaWR0aD10fHx0aGlzLndpZHRoO3RoaXMuaW1hZ2UuZHJhd0hlaWdodD1pfHx0aGlzLmhlaWdodDt0aGlzLmltYWdlLmZvcmNlUkdCQT0hIWE7dGhpcy5pbWFnZS5mb3JjZVJHQj0hIXI7Y29uc3Qgbj1hd2FpdCB0aGlzLmltYWdlLmdldEltYWdlRGF0YShlLHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpO2lmKHN8fHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0pcmV0dXJuIG47YXNzZXJ0KG4gaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobil9fWNvbnN0IG1yPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSx5cj0xLHdyPTIsYnI9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciI7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In1pZih0KXJldHVybiBudWxsO3dhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICR7ZS5uYW1lfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkTG9jYWxseUNhY2hlZEltYWdlT3BzKGUsdCl7dC5vYmpJZCYmZS5hZGREZXBlbmRlbmN5KHQub2JqSWQpO2UuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQsdC5oYXNNYXNrKTt0LmZuPT09X2UmJnQuYXJnc1swXT8uY291bnQ+MCYmdC5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmksaWRGYWN0b3J5OmEsZm9udENhY2hlOnIsYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLGdsb2JhbEltYWdlQ2FjaGU6byxzeXN0ZW1Gb250Q2FjaGU6ZyxvcHRpb25zOmM9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWk7dGhpcy5pZEZhY3Rvcnk9YTt0aGlzLmZvbnRDYWNoZT1yO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1zO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW47dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW87dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Zzt0aGlzLm9wdGlvbnM9Y3x8bXI7dGhpcy50eXBlM0ZvbnRSZWZzPW51bGw7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlPW5ldyBSZWdpb25hbEltYWdlQ2FjaGU7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpO0ltYWdlUmVzaXplci5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyk7SnBlZ1N0cmVhbS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGk9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCBhPVtlXSxyPXRoaXMueHJlZjtmb3IoO2EubGVuZ3RoOyl7Y29uc3QgZT1hLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgcz1lLmdldCgiWE9iamVjdCIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiBzLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihpLmhhcyhlKSljb250aW51ZTt0cnl7ZT1yLmZldGNoKGUpfWNhdGNoKHQpe2kucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmaS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFpLmhhcyh0Lm9iaklkKSkpe2EucHVzaCh0KTt0Lm9iaklkJiZpLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGkpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMjTShlKXtjb25zdCB0PWF3YWl0IGZldGNoKGUpO2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF3YWl0IHQuYXJyYXlCdWZmZXIoKSl9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgaTtpZihudWxsIT09dGhpcy5vcHRpb25zLmNNYXBVcmwpe2k9e2NNYXBEYXRhOmF3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGApLGlzQ29tcHJlc3NlZDohMH19ZWxzZSBpPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsaSk7cmV0dXJuIGl9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBpPVRpKClbZV07bGV0IGE7dHJ5e2E9bnVsbCE9PXRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsP2F3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHtpfWApOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoU3RhbmRhcmRGb250RGF0YSIse2ZpbGVuYW1lOml9KX1jYXRjaChlKXt3YXJuKGUpO3JldHVybiBudWxsfXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLGEpO3JldHVybiBuZXcgU3RyZWFtKGEpfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz10LmRpY3QsZz1sb29rdXBNYXRyaXgoby5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksYz1sb29rdXBOb3JtYWxSZWN0KG8uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgbCxoO28uaGFzKCJPQyIpJiYobD1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKG8uZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT1sJiZhLmFkZE9wKEtlLFsiT0MiLGxdKTtjb25zdCBDPW8uZ2V0KCJHcm91cCIpO2lmKEMpe2g9e21hdHJpeDpnLGJib3g6YyxzbWFzazppLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShDLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7aC5pc29sYXRlZD1DLmdldCgiSSIpfHwhMTtoLmtub2Nrb3V0PUMuZ2V0KCJLIil8fCExO2lmKEMuaGFzKCJDUyIpKXtjb25zdCBpPUMuZ2V0UmF3KCJDUyIpLGE9Q29sb3JTcGFjZS5nZXRDYWNoZWQoaSx0aGlzLnhyZWYsbik7dD1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6aSxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl9fWlmKGk/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtpLmJhY2tkcm9wPXQuZ2V0UmdiKGkuYmFja2Ryb3AsMCl9YS5hZGRPcChqZSxbaF0pfWNvbnN0IFE9Qz9bZyxudWxsXTpbZyxjXTthLmFkZE9wKFBlLFEpO2F3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOm8uZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6YSxpbml0aWFsU3RhdGU6c30pO2EuYWRkT3AoV2UsW10pO0MmJmEuYWRkT3AoWGUsW2hdKTt2b2lkIDAhPT1sJiZhLmFkZE9wKFRlLFtdKX1fc2VuZEltZ0RhdGEoZSx0LGk9ITEpe2NvbnN0IGE9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8aT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLGEpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0sYSl9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTppPSExLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OnIsbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IG89dC5kaWN0LGc9by5vYmpJZCxjPW8uZ2V0KCJXIiwiV2lkdGgiKSxsPW8uZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWN8fCJudW1iZXIiIT10eXBlb2YgY3x8IWx8fCJudW1iZXIiIT10eXBlb2YgbCl7d2FybigiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGg9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWgmJmMqbD5oKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IEM7by5oYXMoIk9DIikmJihDPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO2xldCBRLEU7aWYoby5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPW8uZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxpPWMrNz4+MyxuPXQuZ2V0Qnl0ZXMoaSpsKSxoPW8uZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe1E9UERGSW1hZ2UuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6bix3aWR0aDpjLGhlaWdodDpsLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTpoPy5bMF0+MCxpbnRlcnBvbGF0ZTplfSk7US5jYWNoZWQ9ISFyO0U9W1FdO2EuYWRkSW1hZ2VPcHMoX2UsRSxDKTtpZihyKXtjb25zdCBlPXtmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59UT1hd2FpdCBQREZJbWFnZS5jcmVhdGVNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OmwsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmg/LlswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoUS5pc1NpbmdsZU9wYXF1ZVBpeGVsKXthLmFkZEltYWdlT3BzKGF0LFtdLEMpO2lmKHIpe2NvbnN0IGU9e2ZuOmF0LGFyZ3M6W10sb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1gbWFza18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDthLmFkZERlcGVuZGVuY3kodSk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO3RoaXMuX3NlbmRJbWdEYXRhKHUsUSk7RT1be2RhdGE6dSx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodCxpbnRlcnBvbGF0ZTpRLmludGVycG9sYXRlLGNvdW50OjF9XTthLmFkZEltYWdlT3BzKF9lLEUsQyk7aWYocil7Y29uc3QgZT17b2JqSWQ6dSxmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1vLmhhcygiU01hc2siKXx8by5oYXMoIk1hc2siKTtpZihpJiZjK2w8MjAwJiYhdSl7dHJ5e2NvbnN0IHI9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7UT1hd2FpdCByLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7YS5hZGRJbWFnZU9wcyhBdCxbUV0sQyl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgZD1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGY9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KWQ9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtkfWA7ZWxzZSBpZihyJiZnKXtmPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShnLHRoaXMucGFnZUluZGV4KTtpZihmKXthc3NlcnQoIWksIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7ZD1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke2R9YH19YS5hZGREZXBlbmRlbmN5KGQpO0U9W2QsYyxsXTthLmFkZEltYWdlT3BzKCRlLEUsQyx1KTtpZihmKXtpZih0aGlzLmdsb2JhbEltYWdlQ2FjaGUuaGFzRGVjb2RlRmFpbGVkKGcpKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDpkLGZuOiRlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6QyxoYXNNYXNrOnUsYnl0ZVNpemU6MH0pO3RoaXMuX3NlbmRJbWdEYXRhKGQsbnVsbCxmKTtyZXR1cm59aWYoYypsPjI1ZTR8fHUpe2NvbnN0IGU9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiY29tbW9ub2JqIixbZCwiQ29weUxvY2FsSW1hZ2UiLHtpbWFnZVJlZjpnfV0pO2lmKGUpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGcse29iaklkOmQsZm46JGUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpDLGhhc01hc2s6dSxieXRlU2l6ZTowfSk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsZSk7cmV0dXJufX19UERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTppLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pLnRoZW4oKGFzeW5jIGU9PntRPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLHRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO1EucmVmPWc7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsUS5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoZCxRLGYpfSkpLmNhdGNoKChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHtkfSI6ICIke2V9Ii5gKTtnJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKGcpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YShkLG51bGwsZil9KSk7aWYocil7Y29uc3QgZT17b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1fTtzLnNldChyLGcsZSk7aWYoZyl7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGcsZSk7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoZyx7b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1LGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxpLGEscixzKXtjb25zdCBuPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGc9ZS5nZXQoIlRSIik7aWYoaXNQREZGdW5jdGlvbihnKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGcpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtpWzBdPWEvMjU1O2UoaSwwLGksMCk7dFthXT0yNTUqaVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbixvLGksYSxyLnN0YXRlLmNsb25lKCkscyl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCFpc1BERkZ1bmN0aW9uKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGk9W107bGV0IGE9MCxyPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTthKys7aWYoaXNOYW1lKHQsIklkZW50aXR5Iikpe2kucHVzaChudWxsKTtjb250aW51ZX1pZighaXNQREZGdW5jdGlvbih0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbj1uZXcgVWludDhBcnJheSgyNTYpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe29bMF09ZS8yNTU7cyhvLDAsbywwKTtuW2VdPTI1NSpvWzBdfDB9aS5wdXNoKG4pO3IrK31yZXR1cm4gMSE9PWEmJjQhPT1hfHwwPT09cj9udWxsOml9aGFuZGxlVGlsaW5nVHlwZShlLHQsaSxhLHIscyxuLG8pe2NvbnN0IGc9bmV3IE9wZXJhdG9yTGlzdCxjPURpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbci5nZXQoIlJlc291cmNlcyIpLGldfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06YSx0YXNrOm4scmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0Omd9KS50aGVuKChmdW5jdGlvbigpe2NvbnN0IGk9Zy5nZXRJUigpLGE9Z2V0VGlsaW5nUGF0dGVybklSKGkscix0KTtzLmFkZERlcGVuZGVuY2llcyhnLmRlcGVuZGVuY2llcyk7cy5hZGRPcChlLGEpO3Iub2JqSWQmJm8uc2V0KG51bGwsci5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6aSxkaWN0OnJ9KX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBoYW5kbGVUaWxpbmdUeXBlIC0gaWdub3JpbmcgcGF0dGVybjogIiR7ZX0iLmApfX0pKX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxpLGEscixzLG49bnVsbCxvPW51bGwpe2NvbnN0IGc9dD8uWzBdaW5zdGFuY2VvZiBOYW1lP3RbMF0ubmFtZTpudWxsO2xldCBjPWF3YWl0IHRoaXMubG9hZEZvbnQoZyxpLGUsbixvKTtpZihjLmZvbnQuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IGMubG9hZFR5cGUzRGF0YSh0aGlzLGUscik7YS5hZGREZXBlbmRlbmNpZXMoYy50eXBlM0RlcGVuZGVuY2llcyl9Y2F0Y2goZSl7Yz1uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBUeXBlMyBmb250IGxvYWQgZXJyb3I6ICR7ZX1gKSxkaWN0OmMuZm9udCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pfXMuZm9udD1jLmZvbnQ7Yy5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGMubG9hZGVkTmFtZX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgaT10LmZvbnQsYT1pLmNoYXJzVG9HbHlwaHMoZSk7aWYoaS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZEKXx8IlBhdHRlcm4iPT09dC5maWxsQ29sb3JTcGFjZS5uYW1lfHxpLmRpc2FibGVGb250RmFjZXx8dGhpcy5vcHRpb25zLmRpc2FibGVGb250RmFjZSkmJlBhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHMoaSxhLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpfXJldHVybiBhfWVuc3VyZVN0YXRlRm9udChlKXtpZihlLmZvbnQpcmV0dXJuO2NvbnN0IHQ9bmV3IEZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDt3YXJuKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoe3Jlc291cmNlczplLGdTdGF0ZTp0LG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OmEsdGFzazpyLHN0YXRlTWFuYWdlcjpzLGxvY2FsR1N0YXRlQ2FjaGU6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSl7Y29uc3QgZz10Lm9iaklkO2xldCBjPSEwO2NvbnN0IGw9W107bGV0IGg9UHJvbWlzZS5yZXNvbHZlKCk7Zm9yKGNvbnN0IGEgb2YgdC5nZXRLZXlzKCkpe2NvbnN0IG49dC5nZXQoYSk7c3dpdGNoKGEpe2Nhc2UiVHlwZSI6YnJlYWs7Y2FzZSJMVyI6Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpsLnB1c2goW2Esbl0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTtoPWgudGhlbigoKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsblswXSxpLHIscy5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7aS5hZGREZXBlbmRlbmN5KGUpO2wucHVzaChbYSxbZSxuWzFdXV0pfSkpKSk7YnJlYWs7Y2FzZSJCTSI6bC5wdXNoKFthLG5vcm1hbGl6ZUJsZW5kTW9kZShuKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKGlzTmFtZShuLCJOb25lIikpe2wucHVzaChbYSwhMV0pO2JyZWFrfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjPSExO2g9aC50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhuLGUsaSxyLHMsbykpKTtsLnB1c2goW2EsITBdKX1lbHNlIHdhcm4oIlVuc3VwcG9ydGVkIFNNYXNrIHR5cGUiKTticmVhaztjYXNlIlRSIjpjb25zdCB0PXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihuKTtsLnB1c2goW2EsdF0pO2JyZWFrO2Nhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiU00iOmNhc2UiU0EiOmNhc2UiQUlTIjpjYXNlIlRLIjppbmZvKCJncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrYSk7YnJlYWs7ZGVmYXVsdDppbmZvKCJVbmtub3duIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKX19YXdhaXQgaDtsLmxlbmd0aD4wJiZpLmFkZE9wKFVBLFtsXSk7YyYmbi5zZXQoYSxnLGwpfWxvYWRGb250KGUsdCxpLGE9bnVsbCxyPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pO2xldCBzO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKHM9dCk7ZWxzZXtjb25zdCB0PWkuZ2V0KCJGb250Iik7dCYmKHM9dC5nZXRSYXcoZSkpfWlmKHMpe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKHMpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMocykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihzKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1hfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpuLHJlc29sdmU6b309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGc7dHJ5e2c9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7Zy5jc3NGb250SW5mbz1yfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmMsaGFzaDpsfT1nLGg9cyBpbnN0YW5jZW9mIFJlZjtsZXQgQztpZihsJiZjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW2xdKXtjb25zdCB0PWVbbF0uYWxpYXNSZWY7aWYoaCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhzLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyl9fWVsc2UgZVtsXT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtoJiYoZVtsXS5hbGlhc1JlZj1zKTtDPWVbbF0uZm9udElEfWVsc2UgQz10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQoQz8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGgpdGhpcy5mb250Q2FjaGUucHV0KHMsbik7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke0N9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxuKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtDfWA7dGhpcy50cmFuc2xhdGVGb250KGcpLnRoZW4oKGU9PntvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pKX0pKS5jYXRjaCgoZT0+e3dhcm4oYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgRXJyb3JGb250KGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpO3JldHVybiBufWJ1aWxkUGF0aChlLHQsaSxhPSExKXtjb25zdCByPWUubGVuZ3RoLTE7aXx8KGk9W10pO2lmKHI8MHx8ZS5mbkFycmF5W3JdIT09cnQpe2lmKGEpe3dhcm4oYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3AoeEEsbnVsbCl9bGV0IHI7c3dpdGNoKHQpe2Nhc2UgT0E6Y29uc3QgZT1pWzBdK2lbMl0sdD1pWzFdK2lbM107cj1bTWF0aC5taW4oaVswXSxlKSxNYXRoLm1pbihpWzFdLHQpLE1hdGgubWF4KGlbMF0sZSksTWF0aC5tYXgoaVsxXSx0KV07YnJlYWs7Y2FzZSBKQTpjYXNlIHZBOnI9W2lbMF0saVsxXSxpWzBdLGlbMV1dO2JyZWFrO2RlZmF1bHQ6cj1bMS8wLDEvMCwtMS8wLC0xLzBdfWUuYWRkT3AocnQsW1t0XSxpLHJdKTthJiZlLmFkZE9wKExBLG51bGwpfWVsc2V7Y29uc3QgYT1lLmFyZ3NBcnJheVtyXTthWzBdLnB1c2godCk7YVsxXS5wdXNoKC4uLmkpO2NvbnN0IHM9YVsyXTtzd2l0Y2godCl7Y2FzZSBPQTpjb25zdCBlPWlbMF0raVsyXSx0PWlbMV0raVszXTtzWzBdPU1hdGgubWluKHNbMF0saVswXSxlKTtzWzFdPU1hdGgubWluKHNbMV0saVsxXSx0KTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSxlKTtzWzNdPU1hdGgubWF4KHNbM10saVsxXSx0KTticmVhaztjYXNlIEpBOmNhc2UgdkE6c1swXT1NYXRoLm1pbihzWzBdLGlbMF0pO3NbMV09TWF0aC5taW4oc1sxXSxpWzFdKTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSk7c1szXT1NYXRoLm1heChzWzNdLGlbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtyZXR1cm4gQ29sb3JTcGFjZS5wYXJzZUFzeW5jKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLmNhdGNoKChlPT57aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpfXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcixzPWEuZ2V0KGUpO2lmKHMpcmV0dXJuIHM7dHJ5e3I9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksaSkuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1zPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHM9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtzfWApO2Euc2V0KGUscyk7dGhpcy5wYXJzaW5nVHlwZTNGb250P3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtzLCJQYXR0ZXJuIixyXSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW3MsdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLHJdKTtyZXR1cm4gc31oYW5kbGVDb2xvck4oZSx0LGksYSxyLHMsbixvLGcsYyl7Y29uc3QgbD1pLnBvcCgpO2lmKGwgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBoPXIuZ2V0UmF3KGwubmFtZSksQz1oIGluc3RhbmNlb2YgUmVmJiZnLmdldEJ5UmVmKGgpO2lmKEMpdHJ5e2NvbnN0IHI9YS5iYXNlP2EuYmFzZS5nZXRSZ2IoaSwwKTpudWxsLHM9Z2V0VGlsaW5nUGF0dGVybklSKEMub3BlcmF0b3JMaXN0SVIsQy5kaWN0LHIpO2UuYWRkT3AodCxzKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IFE9dGhpcy54cmVmLmZldGNoSWZSZWYoaCk7aWYoUSl7Y29uc3Qgcj1RIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9RLmRpY3Q6USxsPXIuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKGw9PT15cil7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYihpLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scyxRLHIsZSxuLGcpfWlmKGw9PT13cil7Y29uc3QgaT1yLmdldCgiU2hhZGluZyIpLGE9dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6aSxyZXNvdXJjZXM6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpjfSk7aWYoYSl7Y29uc3QgaT1sb29rdXBNYXRyaXgoci5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ZS5hZGRPcCh0LFsiU2hhZGluZyIsYSxpXSl9cmV0dXJufXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtsfWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7bH1gKX1fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLHQsaSl7aWYoKyt0PjEwKXt3YXJuKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3QgYT1lLmxlbmd0aCxyPXRoaXMueHJlZi5mZXRjaElmUmVmKGVbMF0pO2lmKCEoYTwyKSYmciBpbnN0YW5jZW9mIE5hbWUpe3N3aXRjaChyLm5hbWUpe2Nhc2UiQW5kIjpjYXNlIk9yIjpjYXNlIk5vdCI6aS5wdXNoKHIubmFtZSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJbnZhbGlkIG9wZXJhdG9yICR7ci5uYW1lfSBpbiB2aXNpYmlsaXR5IGV4cHJlc3Npb25gKTtyZXR1cm59Zm9yKGxldCByPTE7cjxhO3IrKyl7Y29uc3QgYT1lW3JdLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoYSk7aWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT1bXTtpLnB1c2goZSk7dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihzLHQsZSl9ZWxzZSBhIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goYS50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7bGV0IGk7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2k9dC5nZXQoIlByb3BlcnRpZXMiKS5nZXQoZS5uYW1lKX1lbHNle2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTtpPWV9Y29uc3QgYT1pLmdldCgiVHlwZSIpPy5uYW1lO2lmKCJPQ0ciPT09YSlyZXR1cm57dHlwZTphLGlkOmkub2JqSWR9O2lmKCJPQ01EIj09PWEpe2NvbnN0IGU9aS5nZXQoIlZFIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsMCx0KTtpZih0Lmxlbmd0aD4wKXJldHVybnt0eXBlOiJPQ01EIixleHByZXNzaW9uOnR9fWNvbnN0IHQ9aS5nZXQoIk9DR3MiKTtpZihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBpIG9mIHQpZS5wdXNoKGkudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6YSxpZHM6ZSxwb2xpY3k6aS5nZXQoIlAiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKHQgaW5zdGFuY2VvZiBSZWYpcmV0dXJue3R5cGU6YSxpZDp0LnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczppLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpyPW51bGwsZmFsbGJhY2tGb250RGljdDpzPW51bGx9KXtpfHw9RGljdC5lbXB0eTtyfHw9bmV3IEV2YWxTdGF0ZTtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTtjb25zdCBuPXRoaXMsbz10aGlzLnhyZWY7bGV0IGc9ITE7Y29uc3QgYz1uZXcgTG9jYWxJbWFnZUNhY2hlLGw9bmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlLGg9bmV3IExvY2FsR1N0YXRlQ2FjaGUsQz1uZXcgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsUT1uZXcgTWFwLEU9aS5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSx1PWkuZ2V0KCJQYXR0ZXJuIil8fERpY3QuZW1wdHksZD1uZXcgU3RhdGVNYW5hZ2VyKHIpLGY9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLG8sZCkscD1uZXcgVGltZVNsb3RNYW5hZ2VyO2Z1bmN0aW9uIGNsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoZSl7Zm9yKGxldCBlPTAsdD1mLnNhdmVkU3RhdGVzRGVwdGg7ZTx0O2UrKylhLmFkZE9wKExBLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxhLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSxyKX1jYXRjaChlKXtyKGUpfX0pLHIpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtwLnJlc2V0KCk7Y29uc3QgbT17fTtsZXQgeSx3LGIsRCxTLGs7Zm9yKDshKHk9cC5jaGVjaygpKTspe20uYXJncz1udWxsO2lmKCFmLnJlYWQobSkpYnJlYWs7bGV0IGU9bS5hcmdzLHI9bS5mbjtzd2l0Y2goMHxyKXtjYXNlIEhlOms9ZVswXWluc3RhbmNlb2YgTmFtZTtTPWVbMF0ubmFtZTtpZihrKXtjb25zdCB0PWMuZ2V0QnlOYW1lKFMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpZighayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBzPUUuZ2V0UmF3KFMpO2lmKHMgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9Yy5nZXRCeVJlZihzKXx8bi5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKHMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2UoKTtyZXR1cm59Y29uc3QgaT1uLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShzLG4ucGFnZUluZGV4KTtpZihpKXthLmFkZERlcGVuZGVuY3koaS5vYmpJZCk7YS5hZGRJbWFnZU9wcyhpLmZuLGkuYXJncyxpLm9wdGlvbmFsQ29udGVudCxpLmhhc01hc2spO2UoKTtyZXR1cm59cz1vLmZldGNoKHMpfWlmKCEocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBnPXMuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGcgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpaWYoIkltYWdlIiE9PWcubmFtZSl7aWYoIlBTIiE9PWcubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtnLm5hbWV9YCk7aW5mbygiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOnMsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbihlLHIpO2Vsc2V7ZC5zYXZlKCk7bi5idWlsZEZvcm1YT2JqZWN0KGkscyxudWxsLGEsdCxkLnN0YXRlLmNsb25lKCksbCkudGhlbigoZnVuY3Rpb24oKXtkLnJlc3RvcmUoKTtlKCl9KSxyKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBvZTpjb25zdCBmPWVbMV07bmV4dChuLmhhbmRsZVNldEZvbnQoaSxlLG51bGwsYSx0LGQuc3RhdGUscykudGhlbigoZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO2EuYWRkT3Aob2UsW2UsZl0pfSkpKTtyZXR1cm47Y2FzZSB0ZTpnPSEwO2JyZWFrO2Nhc2UgaWU6Zz0hMTticmVhaztjYXNlIExlOmNvbnN0IHA9ZVswXS5jYWNoZUtleTtpZihwKXtjb25zdCB0PWMuZ2V0QnlOYW1lKHApO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cCxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkpO3JldHVybjtjYXNlIEJlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWVbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7YnJlYWs7Y2FzZSBRZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX1jb25zdCBtPVtdLHk9ZC5zdGF0ZTtmb3IoY29uc3QgdCBvZiBlWzBdKSJzdHJpbmciPT10eXBlb2YgdD9tLnB1c2goLi4ubi5oYW5kbGVUZXh0KHQseSkpOiJudW1iZXIiPT10eXBlb2YgdCYmbS5wdXNoKHQpO2VbMF09bTtyPUJlO2JyZWFrO2Nhc2UgRWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgdWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7YS5hZGRPcChyZSxbZS5zaGlmdCgpXSk7YS5hZGRPcChhZSxbZS5zaGlmdCgpXSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgZ2U6ZC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2UgbWU6e2NvbnN0IHQ9Q29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxvLGwpO2lmKHQpe2Quc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KG4ucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKChmdW5jdGlvbihlKXtkLnN0YXRlLmZpbGxDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBwZTp7Y29uc3QgdD1Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLG8sbCk7aWYodCl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbigoZnVuY3Rpb24oZSl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBiZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3I9UmU7YnJlYWs7Y2FzZSB5ZTpEPWQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPUQuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFNlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgRmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIEdlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgTmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFJlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBrZTpkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBEZTpEPWQuc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1SZTticmVha31lPVtdO3I9bnQ7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsRGUsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2Ugd2U6RD1kLnN0YXRlLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVha31lPVtdO3I9c3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsd2UsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPWtlO2JyZWFrO2Nhc2UgTWU6bGV0IFI7dHJ5e2NvbnN0IHQ9aS5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtSPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIVIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBOPW4ucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlIscmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6UX0pO2lmKCFOKWNvbnRpbnVlO2U9W05dO3I9TWU7YnJlYWs7Y2FzZSBVQTprPWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoayl7Y29uc3QgdD1oLmdldEJ5TmFtZShTKTtpZih0KXt0Lmxlbmd0aD4wJiZhLmFkZE9wKFVBLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe2lmKCFrKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBzPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89cy5nZXQoUyk7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtuLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmksZ1N0YXRlOm8sb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyx0YXNrOnQsc3RhdGVNYW5hZ2VyOmQsbG9jYWxHU3RhdGVDYWNoZTpoLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKGUscil9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIEpBOmNhc2UgdkE6Y2FzZSBZQTpjYXNlIEtBOmNhc2UgVEE6Y2FzZSBxQTpjYXNlIE9BOm4uYnVpbGRQYXRoKGEscixlLGcpO2NvbnRpbnVlO2Nhc2UgSmU6Y2FzZSB2ZTpjYXNlIHFlOmNhc2UgT2U6Y29udGludWU7Y2FzZSBLZTppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KG4ucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxpKS50aGVuKChlPT57YS5hZGRPcChLZSxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2Zvcih3PTAsYj1lLmxlbmd0aDt3PGImJiEoZVt3XWluc3RhbmNlb2YgRGljdCk7dysrKTtpZih3PGIpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3IpO2NvbnRpbnVlfX19YS5hZGRPcChyLGUpfWlmKHkpbmV4dChicik7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmksc3RhdGVNYW5hZ2VyOnM9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpuPSExLHNpbms6byxzZWVuU3R5bGVzOmc9bmV3IFNldCx2aWV3Qm94OmMsbGFuZzpsPW51bGwsbWFya2VkQ29udGVudERhdGE6aD1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOkM9ITEsa2VlcFdoaXRlU3BhY2U6UT0hMX0pe2l8fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO24mJihofHw9e2xldmVsOjB9KTtjb25zdCBFPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOmx9LHU9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sZD1bIiAiLCIgIl07bGV0IGY9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oZisxKSUyLGk9IiAiIT09ZFtmXSYmIiAiPT09ZFt0XTtkW2ZdPWU7Zj10O3JldHVybiFRJiZpfWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hUSYmIiAiIT09ZFtmXSYmIiAiPT09ZFsoZisxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2RbMF09ZFsxXT0iICI7Zj0wfWNvbnN0IHA9dGhpcyxtPXRoaXMueHJlZix5PVtdO2xldCB3PW51bGw7Y29uc3QgYj1uZXcgTG9jYWxJbWFnZUNhY2hlLEQ9bmV3IExvY2FsR1N0YXRlQ2FjaGUsUz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbSxzKTtsZXQgaztmdW5jdGlvbiBwdXNoV2hpdGVzcGFjZSh7d2lkdGg6ZT0wLGhlaWdodDp0PTAsdHJhbnNmb3JtOmk9dS5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOmE9dS5mb250TmFtZX0pe0UuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6ZSxoZWlnaHQ6dCx0cmFuc2Zvcm06aSxmb250TmFtZTphLGhhc0VPTDohMX0pfWZ1bmN0aW9uIGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCl7Y29uc3QgZT1rLmZvbnQsdD1bay5mb250U2l6ZSprLnRleHRIU2NhbGUsMCwwLGsuZm9udFNpemUsMCxrLnRleHRSaXNlXTtpZihlLmlzVHlwZTNGb250JiYoay5mb250U2l6ZTw9MXx8ZS5pc0NoYXJCQm94KSYmIWlzQXJyYXlFcXVhbChrLmZvbnRNYXRyaXgscikpe2NvbnN0IGk9ZS5iYm94WzNdLWUuYmJveFsxXTtpPjAmJih0WzNdKj1pKmsuZm9udE1hdHJpeFszXSl9cmV0dXJuIFV0aWwudHJhbnNmb3JtKGsuY3RtLFV0aWwudHJhbnNmb3JtKGsudGV4dE1hdHJpeCx0KSl9ZnVuY3Rpb24gZW5zdXJlVGV4dENvbnRlbnRJdGVtKCl7aWYodS5pbml0aWFsaXplZClyZXR1cm4gdTtjb25zdHtmb250OmUsbG9hZGVkTmFtZTp0fT1rO2lmKCFnLmhhcyh0KSl7Zy5hZGQodCk7RS5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9O2lmKHAub3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzJiZlLnN5c3RlbUZvbnRJbmZvKXtjb25zdCBpPUUuc3R5bGVzW3RdO2kuZm9udFN1YnN0aXR1dGlvbj1lLnN5c3RlbUZvbnRJbmZvLmNzcztpLmZvbnRTdWJzdGl0dXRpb25Mb2FkZWROYW1lPWUuc3lzdGVtRm9udEluZm8ubG9hZGVkTmFtZX19dS5mb250TmFtZT10O2NvbnN0IGk9dS50cmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtpZihlLnZlcnRpY2FsKXt1LndpZHRoPXUudG90YWxXaWR0aD1NYXRoLmh5cG90KGlbMF0saVsxXSk7dS5oZWlnaHQ9dS50b3RhbEhlaWdodD0wO3UudmVydGljYWw9ITB9ZWxzZXt1LndpZHRoPXUudG90YWxXaWR0aD0wO3UuaGVpZ2h0PXUudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChpWzJdLGlbM10pO3UudmVydGljYWw9ITF9Y29uc3QgYT1NYXRoLmh5cG90KGsudGV4dExpbmVNYXRyaXhbMF0say50ZXh0TGluZU1hdHJpeFsxXSkscj1NYXRoLmh5cG90KGsuY3RtWzBdLGsuY3RtWzFdKTt1LnRleHRBZHZhbmNlU2NhbGU9ciphO2NvbnN0e2ZvbnRTaXplOnN9PWs7dS50cmFja2luZ1NwYWNlTWluPS4xMDIqczt1Lm5vdEFTcGFjZT0uMDMqczt1Lm5lZ2F0aXZlU3BhY2VNYXg9LS4yKnM7dS5zcGFjZUluRmxvd01pbj0uMTAyKnM7dS5zcGFjZUluRmxvd01heD0uNipzO3UuaGFzRU9MPSExO3UuaW5pdGlhbGl6ZWQ9ITA7cmV0dXJuIHV9ZnVuY3Rpb24gdXBkYXRlQWR2YW5jZVNjYWxlKCl7aWYoIXUuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChrLnRleHRMaW5lTWF0cml4WzBdLGsudGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChrLmN0bVswXSxrLmN0bVsxXSkqZTtpZih0IT09dS50ZXh0QWR2YW5jZVNjYWxlKXtpZih1LnZlcnRpY2FsKXt1LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU7dS5oZWlnaHQ9MH1lbHNle3UudG90YWxXaWR0aCs9dS53aWR0aCp1LnRleHRBZHZhbmNlU2NhbGU7dS53aWR0aD0wfXUudGV4dEFkdmFuY2VTY2FsZT10fX1mdW5jdGlvbiBydW5CaWRpVHJhbnNmb3JtKGUpe2xldCB0PWUuc3RyLmpvaW4oIiIpO0N8fCh0PWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUoZSl7aWYoIUN0KXtDdD0vKFtcdTAwYTBcdTAwYjVcdTAzN2VcdTBlYjNcdTIwMDAtXHUyMDBhXHUyMDJmXHUyMTI2XHVmYjAwLVx1ZmIwNFx1ZmIwNlx1ZmIyMC1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwLVx1ZmI0MVx1ZmI0My1cdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmMtXHVmYmZkXHVmYzAwLVx1ZmM1ZFx1ZmM2NC1cdWZjZjFcdWZjZjUtXHVmZDNkXHVmZDg4XHVmZGY0XHVmZGZhLVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7QnQ9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwoQ3QsKChlLHQsaSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpCdC5nZXQoaSkpKX0odCkpO2NvbnN0IGk9YmlkaSh0LC0xLGUudmVydGljYWwpO3JldHVybntzdHI6aS5zdHIsZGlyOmkuZGlyLHdpZHRoOk1hdGguYWJzKGUudG90YWxXaWR0aCksaGVpZ2h0Ok1hdGguYWJzKGUudG90YWxIZWlnaHQpLHRyYW5zZm9ybTplLnRyYW5zZm9ybSxmb250TmFtZTplLmZvbnROYW1lLGhhc0VPTDplLmhhc0VPTH19YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLGEpe2NvbnN0IHM9YXdhaXQgcC5sb2FkRm9udChlLGEsaSk7aWYocy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBzLmxvYWRUeXBlM0RhdGEocCxpLHQpfWNhdGNoe31rLmxvYWRlZE5hbWU9cy5sb2FkZWROYW1lO2suZm9udD1zLmZvbnQ7ay5mb250TWF0cml4PXMuZm9udC5mb250TWF0cml4fHxyfWZ1bmN0aW9uIGFwcGx5SW52ZXJzZVJvdGF0aW9uKGUsdCxpKXtjb25zdCBhPU1hdGguaHlwb3QoaVswXSxpWzFdKTtyZXR1cm5bKGlbMF0qZStpWzFdKnQpL2EsKGlbMl0qZStpWzNdKnQpL2FdfWZ1bmN0aW9uIGNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgaT10WzRdLGE9dFs1XTtpZihrLmZvbnQ/LnZlcnRpY2FsKXtpZihpPGNbMF18fGk+Y1syXXx8YStlPGNbMV18fGE+Y1szXSlyZXR1cm4hMX1lbHNlIGlmKGkrZTxjWzBdfHxpPmNbMl18fGE8Y1sxXXx8YT5jWzNdKXJldHVybiExO2lmKCFrLmZvbnR8fCF1LnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IHI9dS5wcmV2VHJhbnNmb3JtWzRdLHM9dS5wcmV2VHJhbnNmb3JtWzVdO2lmKHI9PT1pJiZzPT09YSlyZXR1cm4hMDtsZXQgbj0tMTt0WzBdJiYwPT09dFsxXSYmMD09PXRbMl0/bj10WzBdPjA/MDoxODA6dFsxXSYmMD09PXRbMF0mJjA9PT10WzNdJiYobj10WzFdPjA/OTA6MjcwKTtzd2l0Y2gobil7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W2ksYV09W2EsaV07W3Isc109W3Mscl07YnJlYWs7Y2FzZSAxODA6W2ksYSxyLHNdPVstaSwtYSwtciwtc107YnJlYWs7Y2FzZSAyNzA6W2ksYV09Wy1hLC1pXTtbcixzXT1bLXMsLXJdO2JyZWFrO2RlZmF1bHQ6W2ksYV09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxhLHQpO1tyLHNdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKHIscyx1LnByZXZUcmFuc2Zvcm0pfWlmKGsuZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0ocy1hKS91LnRleHRBZHZhbmNlU2NhbGUsdD1pLXIsbj1NYXRoLnNpZ24odS5oZWlnaHQpO2lmKGU8bip1Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHQpPi41KnUud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyh0KT51LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHUuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSx1LnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXUuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB1LmhlaWdodCs9ZTtNYXRoLmFicyh0KT4uMjUqdS53aWR0aCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBvPShpLXIpL3UudGV4dEFkdmFuY2VTY2FsZSxnPWEtcyxsPU1hdGguc2lnbih1LndpZHRoKTtpZihvPGwqdS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhnKT4uNSp1LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKGcpPnUuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1vPD1sKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKG88PWwqdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgdS53aWR0aCs9bztlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKG8sdS5wcmV2VHJhbnNmb3JtLGwpKWlmKDA9PT11LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB1LndpZHRoKz1vO01hdGguYWJzKGcpPi4yNSp1LmhlaWdodCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1mdW5jdGlvbiBidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dH0pe2NvbnN0IGk9ay5mb250O2lmKCFlKXtjb25zdCBlPWsuY2hhclNwYWNpbmcrdDtlJiYoaS52ZXJ0aWNhbD9rLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6ay50cmFuc2xhdGVUZXh0TWF0cml4KGUqay50ZXh0SFNjYWxlLDApKTtRJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3QgYT1pLmNoYXJzVG9HbHlwaHMoZSkscj1rLmZvbnRNYXRyaXhbMF0qay5mb250U2l6ZTtmb3IobGV0IGU9MCxzPWEubGVuZ3RoO2U8cztlKyspe2NvbnN0IG49YVtlXSx7Y2F0ZWdvcnk6b309bjtpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgZz1rLmNoYXJTcGFjaW5nKyhlKzE9PT1zP3Q6MCksYz1uLndpZHRoO2kudmVydGljYWwmJihjPW4udm1ldHJpYz9uLnZtZXRyaWNbMF06LWMpO2xldCBsPWMqcjtpZighUSYmby5pc1doaXRlc3BhY2Upe2lmKGkudmVydGljYWwpe2crPS1sK2sud29yZFNwYWNpbmc7ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpfWVsc2V7Zys9bCtrLndvcmRTcGFjaW5nO2sudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKX1zYXZlTGFzdENoYXIoIiAiKTtjb250aW51ZX1pZighby5pc1plcm9XaWR0aERpYWNyaXRpYyYmIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGwpKXtpLnZlcnRpY2FsP2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChsKmsudGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCBoPWVuc3VyZVRleHRDb250ZW50SXRlbSgpO28uaXNaZXJvV2lkdGhEaWFjcml0aWMmJihsPTApO2lmKGkudmVydGljYWwpe2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpO2w9TWF0aC5hYnMobCk7aC5oZWlnaHQrPWx9ZWxzZXtsKj1rLnRleHRIU2NhbGU7ay50cmFuc2xhdGVUZXh0TWF0cml4KGwsMCk7aC53aWR0aCs9bH1sJiYoaC5wcmV2VHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCkpO2NvbnN0IEM9bi51bmljb2RlO3NhdmVMYXN0Q2hhcihDKSYmaC5zdHIucHVzaCgiICIpO2guc3RyLnB1c2goQyk7ZyYmKGkudmVydGljYWw/ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYodS5pbml0aWFsaXplZCl7dS5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIEUuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOmsubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxpKXtpZihpKnUuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWkqdS5zcGFjZUluRmxvd01heCl7aWYodS5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt1LnN0ci5wdXNoKCIgIil9cmV0dXJuITF9Y29uc3QgYT11LmZvbnROYW1lO2xldCByPTA7aWYodS52ZXJ0aWNhbCl7cj1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhyKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih1LmluaXRpYWxpemVkJiZ1LnN0cil7dS52ZXJ0aWNhbD91LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU6dS50b3RhbFdpZHRoKz11LndpZHRoKnUudGV4dEFkdmFuY2VTY2FsZTtFLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh1KSk7dS5pbml0aWFsaXplZD0hMTt1LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9RS5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe28uZW5xdWV1ZShFLHQpO0UuaXRlbXM9W107RS5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgUj1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3Qsby5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19KSxyKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Ui5yZXNldCgpO2NvbnN0IHU9e307bGV0IGQsZixOLEc9W107Zm9yKDshKGQ9Ui5jaGVjaygpKTspe0cubGVuZ3RoPTA7dS5hcmdzPUc7aWYoIVMucmVhZCh1KSlicmVhaztjb25zdCBlPWs7az1zLnN0YXRlO2NvbnN0IHI9dS5mbjtHPXUuYXJncztzd2l0Y2goMHxyKXtjYXNlIG9lOmNvbnN0IHI9R1swXS5uYW1lLHU9R1sxXTtpZihrLmZvbnQmJnI9PT1rLmZvbnROYW1lJiZ1PT09ay5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9cjtrLmZvbnRTaXplPXU7bmV4dChoYW5kbGVTZXRGb250KHIsbnVsbCkpO3JldHVybjtjYXNlIEllOmsudGV4dFJpc2U9R1swXTticmVhaztjYXNlIHNlOmsudGV4dEhTY2FsZT1HWzBdLzEwMDticmVhaztjYXNlIG5lOmsubGVhZGluZz1HWzBdO2JyZWFrO2Nhc2UgY2U6ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBsZTprLmxlYWRpbmc9LUdbMV07ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBDZTprLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBoZTprLnNldFRleHRNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO2suc2V0VGV4dExpbmVNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2UgYWU6ay5jaGFyU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgcmU6ay53b3JkU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgdGU6ay50ZXh0TWF0cml4PWEuc2xpY2UoKTtrLnRleHRMaW5lTWF0cml4PWEuc2xpY2UoKTticmVhaztjYXNlIFFlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGQ9KGsuZm9udC52ZXJ0aWNhbD8xOi0xKSprLmZvbnRTaXplLzFlMyxTPUdbMF07Zm9yKGxldCBlPTAsdD1TLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PVNbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXkucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9eS5qb2luKCIiKTt5Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0KmR9KX19aWYoeS5sZW5ndGg+MCl7Y29uc3QgZT15LmpvaW4oIiIpO3kubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIEJlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBFZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1rLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOkdbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHVlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWsud29yZFNwYWNpbmc9R1swXTtrLmNoYXJTcGFjaW5nPUdbMV07ay5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBIZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO3c/Pz1pLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5O049R1swXWluc3RhbmNlb2YgTmFtZTtmPUdbMF0ubmFtZTtpZihOJiZiLmdldEJ5TmFtZShmKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGEpe2lmKCFOKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHI9dy5nZXRSYXcoZik7aWYociBpbnN0YW5jZW9mIFJlZil7aWYoYi5nZXRCeVJlZihyKSl7ZSgpO3JldHVybn1pZihwLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShyLHAucGFnZUluZGV4KSl7ZSgpO3JldHVybn1yPW0uZmV0Y2gocil9aWYoIShyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IEU9ci5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoRSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PUUubmFtZSl7Yi5zZXQoZixyLmRpY3Qub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3QgdT1zLnN0YXRlLmNsb25lKCksZD1uZXcgU3RhdGVNYW5hZ2VyKHUpLHk9bG9va3VwTWF0cml4KHIuZGljdC5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7eSYmZC50cmFuc2Zvcm0oeSk7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgRD17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZShlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7by5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBvLmRlc2lyZWRTaXplfSxnZXQgcmVhZHkoKXtyZXR1cm4gby5yZWFkeX19O3AuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpyLHRhc2s6dCxyZXNvdXJjZXM6ci5kaWN0LmdldCgiUmVzb3VyY2VzIil8fGksc3RhdGVNYW5hZ2VyOmQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixzaW5rOkQsc2VlblN0eWxlczpnLHZpZXdCb3g6YyxsYW5nOmwsbWFya2VkQ29udGVudERhdGE6aCxkaXNhYmxlTm9ybWFsaXphdGlvbjpDLGtlZXBXaGl0ZVNwYWNlOlF9KS50aGVuKChmdW5jdGlvbigpe0QuZW5xdWV1ZUludm9rZWR8fGIuc2V0KGYsci5kaWN0Lm9iaklkLCEwKTtlKCl9KSxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgVUE6Tj1HWzBdaW5zdGFuY2VvZiBOYW1lO2Y9R1swXS5uYW1lO2lmKE4mJkQuZ2V0QnlOYW1lKGYpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIU4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IGE9aS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcj1hLmdldChmKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9ci5nZXQoIkZvbnQiKTtpZihzKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9bnVsbDtrLmZvbnRTaXplPXNbMV07aGFuZGxlU2V0Rm9udChudWxsLHNbMF0pLnRoZW4oZSx0KX1lbHNle0Quc2V0KGYsci5vYmpJZCwhMCk7ZSgpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBZZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztFLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOkdbMF1pbnN0YW5jZW9mIE5hbWU/R1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIEtlOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aC5sZXZlbCsrO2xldCBlPW51bGw7R1sxXWluc3RhbmNlb2YgRGljdCYmKGU9R1sxXS5nZXQoIk1DSUQiKSk7RS5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtwLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzpHWzBdaW5zdGFuY2VvZiBOYW1lP0dbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBUZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2lmKDA9PT1oLmxldmVsKWJyZWFrO2gubGV2ZWwtLTtFLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSBMQTohZXx8ZS5mb250PT09ay5mb250JiZlLmZvbnRTaXplPT09ay5mb250U2l6ZSYmZS5mb250TmFtZT09PWsuZm9udE5hbWV8fGZsdXNoVGV4dENvbnRlbnRJdGVtKCl9aWYoRS5pdGVtcy5sZW5ndGg+PW8uZGVzaXJlZFNpemUpe2Q9ITA7YnJlYWt9fWlmKGQpbmV4dChicik7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pKX1hc3luYyBleHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0KXtjb25zdCBpPXRoaXMueHJlZjtsZXQgYTtjb25zdCByPXRoaXMucmVhZFRvVW5pY29kZSh0LnRvVW5pY29kZSk7aWYodC5jb21wb3NpdGUpe2NvbnN0IGk9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTtpIGluc3RhbmNlb2YgRGljdCYmKHQuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6c3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOnN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmkuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3Qgcz1bXTtsZXQgbixvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe249ZS5nZXQoIkVuY29kaW5nIik7aWYobiBpbnN0YW5jZW9mIERpY3Qpe289bi5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYobi5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9bi5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtzW3QrK109ZS5uYW1lfX19fWVsc2UgaWYobiBpbnN0YW5jZW9mIE5hbWUpbz1uLm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBGb3JtYXRFcnJvcihlKTt3YXJuKGUpfSJNYWNSb21hbkVuY29kaW5nIiE9PW8mJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1vJiYiV2luQW5zaUVuY29kaW5nIiE9PW8mJihvPW51bGwpfWNvbnN0IGc9IXQuZmlsZXx8dC5pc0ludGVybmFsRm9udCxjPVBpKClbdC5uYW1lXTtvJiZnJiZjJiYobz1udWxsKTtpZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7Y29uc3QgZT0hISh0LmZsYWdzJkhpKSxpPSEhKHQuZmxhZ3MmSmkpO249Qmk7IlRydWVUeXBlIiE9PXQudHlwZXx8aXx8KG49UWkpO2lmKGV8fGMpe249Q2k7ZyYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/bj1FaTovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/bj11aTovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYobj1RaSkpfXQuZGVmYXVsdEVuY29kaW5nPW59dC5kaWZmZXJlbmNlcz1zO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxzLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHI7Y29uc3QgbD1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWw7YSYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAoYSxsKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgaT1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscj1lLmJhc2VFbmNvZGluZ05hbWUscz1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBuPURpKCk7Zm9yKGNvbnN0IHMgaW4gYSl7bGV0IG89YVtzXTtpZigiIj09PW8pY29udGludWU7bGV0IGc9bltvXTtpZih2b2lkIDAhPT1nKXtpW3NdPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk7Y29udGludWV9bGV0IGM9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgaT1vLnN1YnN0cmluZygxKTtpZih0KXtjPXBhcnNlSW50KGksMTYpO2JyZWFrfWM9K2k7aWYoTnVtYmVyLmlzTmFOKGMpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGksMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmc9Z2V0VW5pY29kZUZvckdseXBoKG8sbik7LTEhPT1nJiYoYz1nKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjppW3NdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihjPjAmJmM8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoYykpe2lmKHImJmM9PT0rcyl7Y29uc3QgZT1nZXRFbmNvZGluZyhyKTtpZihlJiYobz1lW3NdKSl7aVtzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10pO2NvbnRpbnVlfX1pW3NdPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpfX1yZXR1cm4gaX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzppfT1lLmNpZFN5c3RlbUluZm8sYT1OYW1lLmdldChgJHt0fS0ke2l9LVVDUzJgKSxyPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6YSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxzPVtdLG49W107ZS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBpPXIubG9va3VwKHQpO2lmKGkpe24ubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9MiluLnB1c2goKGkuY2hhckNvZGVBdChlKTw8OCkraS5jaGFyQ29kZUF0KGUrMSkpO3NbZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5uKX19KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAocyl9cmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcChlLmZpcnN0Q2hhcixlLmxhc3RDaGFyKX1hc3luYyByZWFkVG9Vbmljb2RlKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtyZXR1cm4gdCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcD9uZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IFRvVW5pY29kZU1hcCh0LmdldE1hcCgpKX1pZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl0cnl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7aWYodCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcClyZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpO2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoKTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtpW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBpPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JmkpKXthLnB1c2goaSk7Y29udGludWV9ZSs9Mjtjb25zdCByPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTthLnB1c2goKCgxMDIzJmkpPDwxMCkrKDEwMjMmcikrNjU1MzYpfWlbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSl9KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoaSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgaT1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthKytdPDw4fGVbYV0scz1hPj4xOygwIT09cnx8dC5oYXMocykpJiYoaVtzXT1yKX1yZXR1cm4gaX1leHRyYWN0V2lkdGhzKGUsdCxpKXtjb25zdCBhPXRoaXMueHJlZjtsZXQgcj1bXSxzPTA7Y29uc3Qgbj1bXTtsZXQgbztpZihpLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtzPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGc9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGcpKWZvcihsZXQgZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKGdbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgaT1hLmZldGNoSWZSZWYoZ1tlXSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgZSBvZiBpKXtjb25zdCBpPWEuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGkmJihyW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKWJyZWFrO3tjb25zdCBzPWEuZmV0Y2hJZlJlZihnWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygcyljb250aW51ZTtmb3IobGV0IGU9dDtlPD1pO2UrKylyW2VdPXN9fX1pZihpLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBpPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1baVsxXSwuNSpzLGlbMF1dO2k9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihpW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IHI9YS5mZXRjaElmUmVmKGlbZV0pO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPVthLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlXSldO2lzTnVtYmVyQXJyYXkoaSxudWxsKSYmKG5bdF09aSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocikpYnJlYWs7e2NvbnN0IHM9W2EuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShzLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PXI7ZSsrKW5bZV09c319fX19ZWxzZXtjb25zdCBuPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG4pKXtsZXQgZT1pLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBpPWEuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGkmJihyW2VdPWkpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtzPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7cj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGkpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgZz0hMCxjPXM7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKHQpaWYoYyl7aWYoYyE9PXQpe2c9ITE7YnJlYWt9fWVsc2UgYz10fWc/aS5mbGFnc3w9TWk6aS5mbGFncyY9fk1pO2kuZGVmYXVsdFdpZHRoPXM7aS53aWR0aHM9cjtpLmRlZmF1bHRWTWV0cmljcz1vO2kudm1ldHJpY3M9bn1pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIE9pKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPSExO2xldCByPUtpKClbZV18fGU7Y29uc3Qgcz1WaSgpO3IgaW4gc3x8KHI9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBuPXNbcl07aWYoIm51bWJlciI9PXR5cGVvZiBuKXt0PW47YT0hMH1lbHNlIGk9bigpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6aX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHI9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9pW3RdPWVbYVt0XV06dCBpbiByJiZlW3JbdF1dJiYoaVt0XT1lW3JbdF1dKTtyZXR1cm4gaX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHI9ITE7aWYoIlR5cGUwIj09PWkubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2k9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cj0hMH1sZXQgcz1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9MCk7bGV0IG49ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49cj82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksZz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBpPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGkgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGkubmFtZSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGkudG9TdHJpbmcoKSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBpLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9pW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGlbYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShpLmpvaW4oKSl9YS51cGRhdGUoYCR7c30tJHtufWApO2lmKGcgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWcuc3RyfHxnLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBnIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUoZy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHIpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgaT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgaSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmkucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7aS5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCByPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtyIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUoci50b1N0cmluZygpKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUoci5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOnIsdHlwZTppLm5hbWUsZmlyc3RDaGFyOnMsbGFzdENoYXI6bix0b1VuaWNvZGU6ZyxoYXNoOmE/YS5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6dCxiYXNlRGljdDppLGNvbXBvc2l0ZTphLHR5cGU6cyxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLGNzc0ZvbnRJbmZvOmN9KXtjb25zdCBsPSJUeXBlMyI9PT1zO2lmKCFlKXtpZighbCl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IGE9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSkscj1lLnNwbGl0KCItIiwxKVswXSxjPSh0aGlzLmlzU2VyaWZGb250KHIpP3hpOjApfChhLm1vbm9zcGFjZT9NaTowKXwoUGkoKVtyXT9IaTpKaSksaD17dHlwZTpzLG5hbWU6ZSxsb2FkZWROYW1lOmkubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczphLndpZHRocyxkZWZhdWx0V2lkdGg6YS5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpjLGZpcnN0Q2hhcjpuLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmcseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6bH0sQz10LmdldCgiV2lkdGhzIiksUT1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBFPW51bGw7aWYoUSl7RT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShRKTtoLmlzSW50ZXJuYWxGb250PSEhRX0haC5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoaC5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsUSxzKSk7Y29uc3QgdT1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LGgpO2lmKEFycmF5LmlzQXJyYXkoQykpe2NvbnN0IGU9W107bGV0IHQ9bjtmb3IoY29uc3QgaSBvZiBDKXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaElmUmVmKGkpOyJudW1iZXIiPT10eXBlb2YgYSYmKGVbdF09YSk7dCsrfXUud2lkdGhzPWV9ZWxzZSB1LndpZHRocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGEud2lkdGhzLHUpO3JldHVybiBuZXcgRm9udChlLEUsdSl9e2NvbnN0IGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJGb250QkJveCIpLFswLDAsMCwwXSk7KGU9bmV3IERpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLE5hbWUuZ2V0KHMpKTtlLnNldCgiRm9udEJCb3giLGkpfX1sZXQgaD1lLmdldCgiRm9udE5hbWUiKSxDPXQuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgaCYmKGg9TmFtZS5nZXQoaCkpOyJzdHJpbmciPT10eXBlb2YgQyYmKEM9TmFtZS5nZXQoQykpO2NvbnN0IFE9aD8ubmFtZSxFPUM/Lm5hbWU7aWYoIWwmJlEhPT1FKXtpbmZvKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtRfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke0V9Ii5gKTtRJiZFJiYoRS5zdGFydHNXaXRoKFEpfHwhaXNLbm93bkZvbnROYW1lKFEpJiZpc0tub3duRm9udE5hbWUoRSkpJiYoaD1udWxsKX1ofHw9QztpZighKGggaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBuYW1lIik7bGV0IHUsZCxmLHAsbTt0cnl7dT1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKTtpZih1KXtpZighKHUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIHNob3VsZCBiZSBhIHN0cmVhbSIpO2lmKHUuaXNFbXB0eSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIGlzIGVtcHR5Iil9fWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke2gubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO3U9bnVsbH1sZXQgeT0hMSx3PW51bGwsYj1udWxsO2lmKHUpe2lmKHUuZGljdCl7Y29uc3QgZT11LmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihkPWUubmFtZSk7Zj11LmRpY3QuZ2V0KCJMZW5ndGgxIik7cD11LmRpY3QuZ2V0KCJMZW5ndGgyIik7bT11LmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoYyl7Y29uc3QgZT1nZXRYZmFGb250TmFtZShoLm5hbWUpO2lmKGUpe2MuZm9udEZhbWlseT1gJHtjLmZvbnRGYW1pbHl9LVBkZkpTLVhGQWA7Yy5tZXRyaWNzPWUubWV0cmljc3x8bnVsbDt3PWUuZmFjdG9yc3x8bnVsbDt1PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUubmFtZSk7eT0hIXU7aT10PWdldFhmYUZvbnREaWN0KGgubmFtZSk7YT0hMH19ZWxzZSBpZighbCl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSk7aWYoZSl7dT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTt5PSEhdX0heSYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoYj1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHMpKX1jb25zdCBEPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJGb250TWF0cml4IiksciksUz1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94Iiksdm9pZCAwKTtsZXQgaz1lLmdldCgiQXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBrJiYoaz12b2lkIDApO2xldCBSPWUuZ2V0KCJEZXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj12b2lkIDApO2xldCBOPWUuZ2V0KCJYSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBOJiYoTj0wKTtsZXQgRz1lLmdldCgiQ2FwSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBHJiYoRz0wKTtsZXQgTT1lLmdldCgiRmxhZ3MiKTtOdW1iZXIuaXNJbnRlZ2VyKE0pfHwoTT0wKTtsZXQgVT1lLmdldCgiSXRhbGljQW5nbGUiKTsibnVtYmVyIiE9dHlwZW9mIFUmJihVPTApO2NvbnN0IHg9e3R5cGU6cyxuYW1lOmgubmFtZSxzdWJ0eXBlOmQsZmlsZTp1LGxlbmd0aDE6ZixsZW5ndGgyOnAsbGVuZ3RoMzptLGlzSW50ZXJuYWxGb250OnksbG9hZGVkTmFtZTppLmxvYWRlZE5hbWUsY29tcG9zaXRlOmEsZml4ZWRQaXRjaDohMSxmb250TWF0cml4OkQsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6ZyxiYm94OlMsYXNjZW50OmssZGVzY2VudDpSLHhIZWlnaHQ6TixjYXBIZWlnaHQ6RyxmbGFnczpNLGl0YWxpY0FuZ2xlOlUsaXNUeXBlM0ZvbnQ6bCxjc3NGb250SW5mbzpjLHNjYWxlRmFjdG9yczp3LHN5c3RlbUZvbnRJbmZvOmJ9O2lmKGEpe2NvbnN0IGU9aS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIE5hbWUmJih4LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7eC5jTWFwPXQ7eC52ZXJ0aWNhbD14LmNNYXAudmVydGljYWx9Y29uc3QgTD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LHgpO3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsTCk7cmV0dXJuIG5ldyBGb250KGgubmFtZSx1LEwpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsaSxhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcj1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjtpLnNlbmQoImNvbW1vbm9iaiIsW3IsIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7cn0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250e2NvbnN0cnVjdG9yKHtsb2FkZWROYW1lOmUsZm9udDp0LGRpY3Q6aSxldmFsdWF0b3JPcHRpb25zOmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9aTt0aGlzLl9ldmFsdWF0b3JPcHRpb25zPWF8fG1yO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxpKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBhPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHI9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXIuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnIucHV0KHRoaXMuZGljdC5vYmpJZCk7YS50eXBlM0ZvbnRSZWZzPXI7Y29uc3Qgcz10aGlzLmZvbnQsbj10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBvPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGc9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksYz10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxsPU9iamVjdC5jcmVhdGUobnVsbCksaD1VdGlsLm5vcm1hbGl6ZVJlY3Qocy5iYm94fHxbMCwwLDAsMF0pLEM9aFsyXS1oWzBdLFE9aFszXS1oWzFdLEU9TWF0aC5oeXBvdChDLFEpO2Zvcihjb25zdCBlIG9mIGcuZ2V0S2V5cygpKW89by50aGVuKCgoKT0+e2NvbnN0IHQ9Zy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBhLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKCk9PntyLmZuQXJyYXlbMF09PT1mZSYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhyLEUpO2xbZV09ci5nZXRJUigpO2Zvcihjb25zdCBlIG9mIHIuZGVwZW5kZW5jaWVzKW4uYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGk9bmV3IE9wZXJhdG9yTGlzdDtsW2VdPWkuZ2V0SVIoKX0pKX0pKTt0aGlzLnR5cGUzTG9hZGVkPW8udGhlbigoKCk9PntzLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWw7aWYodGhpcy5fYmJveCl7cy5pc0NoYXJCQm94PSEwO3MuYmJveD10aGlzLl9iYm94fX0pKTtyZXR1cm4gdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlLHQ9TmFOKXtjb25zdCBpPVV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksYT1pWzJdLWlbMF0scj1pWzNdLWlbMV0scz1NYXRoLmh5cG90KGEscik7aWYoMD09PWF8fDA9PT1yKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGlbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxpWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0saVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGlbM10pfWxldCBuPTAsbz1lLmxlbmd0aDtmb3IoO248bzspe3N3aXRjaChlLmZuQXJyYXlbbl0pe2Nhc2UgZmU6YnJlYWs7Y2FzZSBwZTpjYXNlIG1lOmNhc2UgeWU6Y2FzZSB3ZTpjYXNlIGJlOmNhc2UgRGU6Y2FzZSBGZTpjYXNlIFNlOmNhc2Uga2U6Y2FzZSBSZTpjYXNlIE5lOmNhc2UgR2U6Y2FzZSBNZTpjYXNlIEdBOmUuZm5BcnJheS5zcGxpY2UobiwxKTtlLmFyZ3NBcnJheS5zcGxpY2UobiwxKTtvLS07Y29udGludWU7Y2FzZSBVQTpjb25zdFt0XT1lLmFyZ3NBcnJheVtuXTtsZXQgaT0wLGE9dC5sZW5ndGg7Zm9yKDtpPGE7KXtjb25zdFtlXT10W2ldO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGksMSk7YS0tO2NvbnRpbnVlfWkrK319bisrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoYSk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmxvYWRlZE5hbWU9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9cjt0aGlzLnRleHRNYXRyaXg9YS5zbGljZSgpO3RoaXMudGV4dExpbmVNYXRyaXg9YS5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGksYSxyLHMpe2NvbnN0IG49dGhpcy50ZXh0TWF0cml4O25bMF09ZTtuWzFdPXQ7blsyXT1pO25bM109YTtuWzRdPXI7bls1XT1zfXNldFRleHRMaW5lTWF0cml4KGUsdCxpLGEscixzKXtjb25zdCBuPXRoaXMudGV4dExpbmVNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cjtuWzVdPXN9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGk9dGhpcy50ZXh0TWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShhKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPWI7dGhpcy5fZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTt0aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3RoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbH1nZXQgZmlsbENvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yU3BhY2V9c2V0IGZpbGxDb2xvclNwYWNlKGUpe3RoaXMuX2ZpbGxDb2xvclNwYWNlPXRoaXMucGF0dGVybkZpbGxDb2xvclNwYWNlPWV9Z2V0IHN0cm9rZUNvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlQ29sb3JTcGFjZX1zZXQgc3Ryb2tlQ29sb3JTcGFjZShlKXt0aGlzLl9zdHJva2VDb2xvclNwYWNlPXRoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9ZX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6RkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6U0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6a0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6UkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6TkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOkdBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOk1BLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDpVQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDp4QSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDpMQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6SEEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6SkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6dkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6WUEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6S0EsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6VEEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6cUEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOk9BLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOlBBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOlhBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOlZBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOlpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOl9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOnpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOiRBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOkFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOmVlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDp0ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6aWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOmFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDpyZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6c2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOm5lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDpvZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6Z2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOkllLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpjZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6bGUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOmhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOkNlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpCZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6UWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpFZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOnVlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDpkZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6ZmUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOnBlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6eWUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDp3ZSxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOmJlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6RGUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOkZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOlNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDprZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6UmUsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6TmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6R2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOk1lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6eGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOkxlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDpIZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6SmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOnZlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6WWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDpLZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOlRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDpxZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6T2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWk7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBpPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9aS5jbWQscj1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbYV07aWYoIXIpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHthfSIuYCk7Y29udGludWV9Y29uc3Qgcz1yLmlkLG49ci5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1zPj1KQSYmczw9JEE7aWYoci52YXJpYWJsZUFyZ3Mpbz5uJiZpbmZvKGBDb21tYW5kICR7YX06IGV4cGVjdGVkIFswLCAke259XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PW4pe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5uOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxuJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88bil7Y29uc3QgZT1gY29tbWFuZCAke2F9OiBleHBlY3RlZCAke259IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihpPT09RXQpcmV0dXJuITE7aWYobnVsbCE9PWkpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGkpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgeEE6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2UgTEE6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgSEE6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjppLGFyZ3M6YX09ZTtzd2l0Y2goMHxpKXtjYXNlIG9lOmNvbnN0W2UsaV09YTtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0saT0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihpfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnIsYXJnczpzfT1lO3N3aXRjaCgwfHIpe2Nhc2UgeEE6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBMQTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBoZTp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBvZTpjb25zdFtlLHJdPXM7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiByJiZyPjAmJih0LmZvbnRTaXplPXIqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBtZTp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnNbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIGJlOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIEJlOmNhc2UgUWU6Y2FzZSBFZTpjYXNlIHVlOmk9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9aS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10saT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IGE9bnVsbCxyPW51bGw7Zm9yKGNvbnN0W2Usc11vZiBpKWlmKGEpaWYoZT09PWErci5sZW5ndGgpci5wdXNoKHMpO2Vsc2V7dC5wdXNoKGEscik7YT1lO3I9W3NdfWVsc2V7YT1lO3I9W3NdfWEmJnQucHVzaChhLHIpO2Uuc2V0KCJXIix0KTtjb25zdCBzPW5ldyBEaWN0KHRoaXMueHJlZik7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGkuc3BsaXQoIiIpKXtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoaSkpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHI9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChpLHIpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGksdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoaSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFthLHIsbyxnXT1lO2xldCBjPW8tYSxsPWctcjt0JTE4MCE9MCYmKFtjLGxdPVtsLGNdKTtjb25zdCBoPXMqaTtyZXR1cm57Y29vcmRzOlswLGwrbippLWhdLGJib3g6WzAsMCxjLGxdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LGwsaCk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLGEscixvKXtjb25zdCBnPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxjPVtdO2xldCBsPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7Yy5wdXNoKHQpO2NvbnN0IGU9Zy5tZWFzdXJlVGV4dCh0KS53aWR0aDtsPU1hdGgubWF4KGwsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgaT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09aSl7Y29uc3QgYT1nLm1lYXN1cmVUZXh0KHQpO2k9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fWwqPWEvMWUzO2NvbnN0W2gsQyxRLEVdPXQ7bGV0IHU9US1oLGQ9RS1DO2klMTgwIT0wJiYoW3UsZF09W2QsdV0pO2xldCBmPTE7bD51JiYoZj11L2wpO2xldCBwPTE7Y29uc3QgbT1zKmEseT1uKmEsdz1tKmMubGVuZ3RoO3c+ZCYmKHA9ZC93KTtjb25zdCBiPWEqTWF0aC5taW4oZixwKSxEPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHUpfSAke251bWJlclRvU3RyaW5nKGQpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKGQreSl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihyLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoYil9IFRmYF0se3Jlc291cmNlczpTfT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7RC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO1Muc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IGs9bnVtYmVyVG9TdHJpbmcobSk7Zm9yKGNvbnN0IGUgb2YgYylELnB1c2goYDAgLSR7a30gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7RC5wdXNoKCJFVCIsIlEiKTtjb25zdCBSPUQuam9pbigiXG4iKSxOPW5ldyBEaWN0KHRoaXMueHJlZik7Ti5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO04uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtOLnNldCgiQkJveCIsWzAsMCx1LGRdKTtOLnNldCgiTGVuZ3RoIixSLmxlbmd0aCk7Ti5zZXQoIlJlc291cmNlcyIsUyk7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHUsZCk7Ti5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRz1uZXcgU3RyaW5nU3RyZWFtKFIpO0cuZGljdD1OO3JldHVybiBHfX1jbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWl9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsaT1uZXcgUmVmU2V0O2kucHV0KHRoaXMucm9vdCk7Y29uc3QgYT1bdGhpcy5yb290XTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCByPXQuZmV0Y2hJZlJlZihhLnNoaWZ0KCkpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKHIuaGFzKCJLaWRzIikpe2NvbnN0IGU9ci5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZihpLmhhcyh0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTthLnB1c2godCk7aS5wdXQodCl9Y29udGludWV9Y29uc3Qgcz1yLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHMpKWZvcihsZXQgaT0wLGE9cy5sZW5ndGg7aTxhO2krPTIpZS5zZXQodC5mZXRjaElmUmVmKHNbaV0pLHQuZmV0Y2hJZlJlZihzW2krMV0pKX1yZXR1cm4gZX1nZXRSYXcoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgaT10LmZldGNoSWZSZWYodGhpcy5yb290KSxhPTA7Zm9yKDtpLmhhcygiS2lkcyIpOyl7aWYoKythPjEwKXt3YXJuKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3Qgcj1pLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBudWxsO2xldCBzPTAsbj1yLmxlbmd0aC0xO2Zvcig7czw9bjspe2NvbnN0IGE9cytuPj4xLG89dC5mZXRjaElmUmVmKHJbYV0pLGc9by5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGdbMF0pKW49YS0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihnWzFdKSkpe2k9bzticmVha31zPWErMX19aWYocz5uKXJldHVybiBudWxsfWNvbnN0IHI9aS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShyKSl7bGV0IGk9MCxhPXIubGVuZ3RoLTI7Zm9yKDtpPD1hOyl7Y29uc3Qgcz1pK2E+PjEsbj1zKygxJnMpLG89dC5mZXRjaElmUmVmKHJbbl0pO2lmKGU8bylhPW4tMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gcltuKzFdO2k9bisyfX19cmV0dXJuIG51bGx9Z2V0KGUpe3JldHVybiB0aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmdldFJhdyhlKSl9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7dWE9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXt1dD1PYmplY3QuY3JlYXRlKG51bGwpO2R0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnQ9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7TmkuY2xlYXIoKX0oKTtKcHhJbWFnZS5jbGVhbnVwKCl9ZnVuY3Rpb24gcGlja1BsYXRmb3JtSXRlbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3Q/ZS5oYXMoIlVGIik/ZS5nZXQoIlVGIik6ZS5oYXMoIkYiKT9lLmdldCgiRiIpOmUuaGFzKCJVbml4Iik/ZS5nZXQoIlVuaXgiKTplLmhhcygiTWFjIik/ZS5nZXQoIk1hYyIpOmUuaGFzKCJET1MiKT9lLmdldCgiRE9TIik6bnVsbDpudWxsfWNsYXNzIEZpbGVTcGVjeyNVPSExO2NvbnN0cnVjdG9yKGUsdCxpPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy54cmVmPXQ7dGhpcy5yb290PWU7ZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKTtlLmhhcygiUkYiKSYmd2FybigiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7aXx8KGUuaGFzKCJFRiIpP3RoaXMuI1U9ITA6d2FybigiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSl9fWdldCBmaWxlbmFtZSgpe2xldCBlPSIiO2NvbnN0IHQ9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbGVuYW1lIixlfHwidW5uYW1lZCIpfWdldCBjb250ZW50KCl7aWYoIXRoaXMuI1UpcmV0dXJuIG51bGw7dGhpcy5fY29udGVudFJlZnx8PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290Py5nZXQoIkVGIikpO2xldCBlPW51bGw7aWYodGhpcy5fY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLl9jb250ZW50UmVmKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lPXQuZ2V0Qnl0ZXMoKTp3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKX1lbHNlIHdhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IGRlc2NyaXB0aW9uKCl7bGV0IGU9IiI7Y29uc3QgdD10aGlzLnJvb3Q/LmdldCgiRGVzYyIpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkpO3JldHVybiBzaGFkb3codGhpcywiZGVzY3JpcHRpb24iLGUpfWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cmF3RmlsZW5hbWU6dGhpcy5maWxlbmFtZSxmaWxlbmFtZTooZT10aGlzLmZpbGVuYW1lLGUuc3Vic3RyaW5nKGUubGFzdEluZGV4T2YoIi8iKSsxKSksY29udGVudDp0aGlzLmNvbnRlbnQsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbn07dmFyIGV9fWNvbnN0IERyPTAsRnI9LTIsU3I9LTMsa3I9LTQsUnI9LTUsTnI9LTYsR3I9LTk7ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgaT1lW3RdO3JldHVybiIgIj09PWl8fCJcbiI9PT1pfHwiXHIiPT09aXx8Ilx0Ij09PWl9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGk9W107bGV0IGE9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7c2tpcFdzKCk7Zm9yKDthPGUubGVuZ3RoJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdJiYiPyIhPT1lW2FdOyl7c2tpcFdzKCk7bGV0IHQ9IiIscj0iIjtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj0iIT09ZVthXTspe3QrPWVbYV07KythfXNraXBXcygpO2lmKCI9IiE9PWVbYV0pcmV0dXJuIG51bGw7KythO3NraXBXcygpO2NvbnN0IHM9ZVthXTtpZignIichPT1zJiYiJyIhPT1zKXJldHVybiBudWxsO2NvbnN0IG49ZS5pbmRleE9mKHMsKythKTtpZihuPDApcmV0dXJuIG51bGw7cj1lLnN1YnN0cmluZyhhLG4pO2kucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKX0pO2E9bisxO3NraXBXcygpfXJldHVybntuYW1lOnIsYXR0cmlidXRlczppLHBhcnNlZDphLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBpPXQ7Zm9yKDtpPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsaSkmJiI+IiE9PWVbaV0mJiI/IiE9PWVbaV0mJiIvIiE9PWVbaV07KSsraTtjb25zdCBhPWUuc3Vic3RyaW5nKHQsaSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7aTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsaSk7KSsraX0oKTtjb25zdCByPWk7Zm9yKDtpPGUubGVuZ3RoJiYoIj8iIT09ZVtpXXx8Ij4iIT09ZVtpKzFdKTspKytpO3JldHVybntuYW1lOmEsdmFsdWU6ZS5zdWJzdHJpbmcocixpKSxwYXJzZWQ6aS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBpPXQ7aWYoIjwiPT09ZVt0XSl7KytpO2xldCB0O3N3aXRjaChlW2ldKXtjYXNlIi8iOisraTt0PWUuaW5kZXhPZigiPiIsaSk7aWYodDwwKXt0aGlzLm9uRXJyb3IoR3IpO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhpLHQpKTtpPXQrMTticmVhaztjYXNlIj8iOisraTtjb25zdCBhPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsaSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGkrYS5wYXJzZWQsaSthLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKFNyKTtyZXR1cm59dGhpcy5vblBpKGEubmFtZSxhLnZhbHVlKTtpKz1hLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGkrMSxpKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixpKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFJyKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoaSszLHQpKTtpPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGkrMSxpKzgpKXt0PWUuaW5kZXhPZigiXV0+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEZyKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGkrOCx0KSk7aT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhpKzEsaSs4KSl7dGhpcy5vbkVycm9yKE5yKTtyZXR1cm59e2NvbnN0IGE9ZS5pbmRleE9mKCJbIixpKzgpO2xldCByPSExO3Q9ZS5pbmRleE9mKCI+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKGtyKTtyZXR1cm59aWYoYT4wJiZ0PmEpe3Q9ZS5pbmRleE9mKCJdPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihrcik7cmV0dXJufXI9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhpKzgsdCsocj8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTtpPXQrKHI/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCByPXRoaXMuX3BhcnNlQ29udGVudChlLGkpO2lmKG51bGw9PT1yKXt0aGlzLm9uRXJyb3IoTnIpO3JldHVybn1sZXQgcz0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoaStyLnBhcnNlZCxpK3IucGFyc2VkKzIpKXM9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhpK3IucGFyc2VkLGkrci5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihHcik7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQoci5uYW1lLHIuYXR0cmlidXRlcyxzKTtpKz1yLnBhcnNlZCsocz8yOjEpfX1lbHNle2Zvcig7aTxlLmxlbmd0aCYmIjwiIT09ZVtpXTspaSsrO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxpKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMoYSkpfXQ9aX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGkpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pKS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBpPWVbdF07aWYoaS5uYW1lLnN0YXJ0c1dpdGgoIiMiKSYmdDxlLmxlbmd0aC0xKXJldHVybiB0aGlzLnNlYXJjaE5vZGUoZSx0KzEpO2NvbnN0IGE9W107bGV0IHI9dGhpcztmb3IoOzspe2lmKGkubmFtZT09PXIubm9kZU5hbWUpe2lmKDAhPT1pLnBvcyl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtzXT1hLnBvcCgpO2xldCBuPTA7Zm9yKGNvbnN0IGEgb2Ygcy5jaGlsZE5vZGVzKWlmKGkubmFtZT09PWEubm9kZU5hbWUpe2lmKG49PT1pLnBvcylyZXR1cm4gYS5zZWFyY2hOb2RlKGUsdCsxKTtuKyt9cmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCBpPXIuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PWkpcmV0dXJuIGl9fWlmKHIuY2hpbGROb2Rlcz8ubGVuZ3RoPjApe2EucHVzaChbciwwXSk7cj1yLmNoaWxkTm9kZXNbMF19ZWxzZXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09YS5sZW5ndGg7KXtjb25zdFtlLHRdPWEucG9wKCksaT10KzE7aWYoaTxlLmNoaWxkTm9kZXMubGVuZ3RoKXthLnB1c2goW2UsaV0pO3I9ZS5jaGlsZE5vZGVzW2ldO2JyZWFrfX1pZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGx9fX1kdW1wKGUpe2lmKCIjdGV4dCIhPT10aGlzLm5vZGVOYW1lKXtlLnB1c2goYDwke3RoaXMubm9kZU5hbWV9YCk7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcihjb25zdCB0IG9mIHRoaXMuYXR0cmlidXRlcyllLnB1c2goYCAke3QubmFtZX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcodC52YWx1ZSl9ImApO2lmKHRoaXMuaGFzQ2hpbGROb2RlcygpKXtlLnB1c2goIj4iKTtmb3IoY29uc3QgdCBvZiB0aGlzLmNoaWxkTm9kZXMpdC5kdW1wKGUpO2UucHVzaChgPC8ke3RoaXMubm9kZU5hbWV9PmApfWVsc2UgdGhpcy5ub2RlVmFsdWU/ZS5wdXNoKGA+JHtlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSl9PC8ke3RoaXMubm9kZU5hbWV9PmApOmUucHVzaCgiLz4iKX1lbHNlIGUucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSkpfX1jbGFzcyBTaW1wbGVYTUxQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKHtoYXNBdHRyaWJ1dGVzOmU9ITEsbG93ZXJDYXNlTmFtZTp0PSExfSl7c3VwZXIoKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bnVsbDt0aGlzLl9zdGFjaz1udWxsO3RoaXMuX2Vycm9yQ29kZT1Ecjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlIT09RHIpcmV0dXJuO2NvbnN0W3RdPXRoaXMuX2N1cnJlbnRGcmFnbWVudDtyZXR1cm4gdD97ZG9jdW1lbnRFbGVtZW50OnR9OnZvaWQgMH1vblRleHQoZSl7aWYoZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU3RyaW5nKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKylpZighaXNXaGl0ZXNwYWNlKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUpKXJldHVybjtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25DZGF0YShlKXtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25CZWdpbkVsZW1lbnQoZSx0LGkpe3RoaXMuX2xvd2VyQ2FzZU5hbWUmJihlPWUudG9Mb3dlckNhc2UoKSk7Y29uc3QgYT1uZXcgU2ltcGxlRE9NTm9kZShlKTthLmNoaWxkTm9kZXM9W107dGhpcy5faGFzQXR0cmlidXRlcyYmKGEuYXR0cmlidXRlcz10KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaChhKTtpZighaSl7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50RnJhZ21lbnQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1hLmNoaWxkTm9kZXN9fW9uRW5kRWxlbWVudChlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9dGhpcy5fc3RhY2sucG9wKCl8fFtdO2NvbnN0IHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpZS5wYXJlbnROb2RlPXQ7cmV0dXJuIHR9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgTWV0YWRhdGFQYXJzZXJ7Y29uc3RydWN0b3IoZSl7ZT10aGlzLl9yZXBhaXIoZSk7Y29uc3QgdD1uZXcgU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxpLGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCppKzEqYSl9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLGE9WyI+Il07Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqaS5jaGFyQ29kZUF0KGUpK2kuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6YS5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIGEuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsaT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsaS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1jb25zdCBNcj0xLFVyPTIseHI9MyxMcj00LEhyPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRpY3Q9ZTt0aGlzLnJlZj10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsfWluaXQoKXt0aGlzLnJlYWRSb2xlTWFwKCl9I3goZSx0LGkpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IGE9dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLGEpfWEucHVzaChbdCxpXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jeChlLHQsTHIpfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3QsaV1vZiBlKWkgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KHQsaS5uYW1lKX1zdGF0aWMgYXN5bmMgY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjplLHBkZk1hbmFnZXI6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTppfSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl7d2FybigiQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBubyBjYXRhbG9nIHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT0wLHI9ITA7Zm9yKGNvbnN0W2Usc11vZiBpKXtjb25zdHtyZWY6aX09YXdhaXQgdC5nZXRQYWdlKGUpO2lmKCEoaSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke2V9IGhhcyBubyByZWYuYCk7cj0hMDticmVha31mb3IoY29uc3QgZSBvZiBzKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPWErKztyPSExfX1pZihyKXtmb3IoY29uc3QgZSBvZiBpLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpZGVsZXRlIHQucGFyZW50VHJlZUlkO3JldHVybiExfXJldHVybiEwfXN0YXRpYyBhc3luYyBjcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHhyZWY6dCxjYXRhbG9nUmVmOmkscGRmTWFuYWdlcjphLGNoYW5nZXM6cn0pe2NvbnN0IHM9YS5jYXRhbG9nLmNsb25lRGljdCgpLG49bmV3IFJlZlNldENhY2hlO24ucHV0KGkscyk7Y29uc3Qgbz10LmdldE5ld1RlbXBvcmFyeVJlZigpO3Muc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsbyk7Y29uc3QgZz1uZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIlN0cnVjdFRyZWVSb290IikpO2NvbnN0IGM9dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtnLnNldCgiUGFyZW50VHJlZSIsYyk7Y29uc3QgbD1bXTtnLnNldCgiSyIsbCk7bi5wdXQobyxnKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9W107aC5zZXQoIk51bXMiLEMpO2NvbnN0IFE9YXdhaXQgdGhpcy4jTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpvLHN0cnVjdFRyZWVSb290Om51bGwsa2lkczpsLG51bXM6Qyx4cmVmOnQscGRmTWFuYWdlcjphLGNoYW5nZXM6cixjYWNoZTpufSk7Zy5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixRKTtuLnB1dChjLGgpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKXIucHV0KGUse2RhdGE6dH0pfWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSx4cmVmOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCF0aGlzLnJlZil7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG5vIHJvb3QgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWVOZXh0S2V5Iik7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IGludmFsaWQgbmV4dCBrZXkuIik7cmV0dXJuITF9Y29uc3Qgcj10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBQYXJlbnRUcmVlIGlzbid0IGEgZGljdC4iKTtyZXR1cm4hMX1jb25zdCBzPXIuZ2V0KCJOdW1zIik7aWYoIUFycmF5LmlzQXJyYXkocykpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBudW1zIGlzbid0IGFuIGFycmF5LiIpO3JldHVybiExfWNvbnN0IG49bmV3IE51bWJlclRyZWUocix0KTtmb3IoY29uc3QgdCBvZiBpLmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6aX09YXdhaXQgZS5nZXRQYWdlKHQpO2lmKCFpLmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IUFycmF5LmlzQXJyYXkobi5nZXQoYSkpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHt0fSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IG89ITA7Zm9yKGNvbnN0W3Qscl1vZiBpKXtjb25zdHtwYWdlRGljdDppfT1hd2FpdCBlLmdldFBhZ2UodCk7U3RydWN0VHJlZVJvb3QuI0goe2VsZW1lbnRzOnIseHJlZjp0aGlzLmRpY3QueHJlZixwYWdlRGljdDppLG51bWJlclRyZWU6bn0pO2Zvcihjb25zdCBlIG9mIHIpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5hY2Nlc3NpYmlsaXR5RGF0YS5zdHJ1Y3RQYXJlbnQ+PTB8fChlLnBhcmVudFRyZWVJZD1hKyspO289ITF9fWlmKG8pe2Zvcihjb25zdCBlIG9mIGkudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxwZGZNYW5hZ2VyOnQsY2hhbmdlczppfSl7Y29uc3QgYT10aGlzLmRpY3QueHJlZixyPXRoaXMuZGljdC5jbG9uZSgpLHM9dGhpcy5yZWYsbj1uZXcgUmVmU2V0Q2FjaGU7bi5wdXQocyxyKTtsZXQgbyxnPXIuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYoZyBpbnN0YW5jZW9mIFJlZilvPWEuZmV0Y2goZyk7ZWxzZXtvPWc7Zz1hLmdldE5ld1RlbXBvcmFyeVJlZigpO3Iuc2V0KCJQYXJlbnRUcmVlIixnKX1vPW8uY2xvbmUoKTtuLnB1dChnLG8pO2xldCBjPW8uZ2V0UmF3KCJOdW1zIiksbD1udWxsO2lmKGMgaW5zdGFuY2VvZiBSZWYpe2w9YztjPWEuZmV0Y2gobCl9Yz1jLnNsaWNlKCk7bHx8by5zZXQoIk51bXMiLGMpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6cyxzdHJ1Y3RUcmVlUm9vdDp0aGlzLGtpZHM6bnVsbCxudW1zOmMseHJlZjphLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmksY2FjaGU6bn0pO2lmKC0xIT09aCl7ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixoKTtsJiZuLnB1dChsLGMpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKWkucHV0KGUse2RhdGE6dH0pfX1zdGF0aWMgYXN5bmMjTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LHN0cnVjdFRyZWVSb290Omksa2lkczphLG51bXM6cix4cmVmOnMscGRmTWFuYWdlcjpuLGNoYW5nZXM6byxjYWNoZTpnfSl7Y29uc3QgYz1OYW1lLmdldCgiT0JKUiIpO2xldCBsLGg9LTE7Zm9yKGNvbnN0W0MsUV1vZiBlKXtjb25zdCBlPWF3YWl0IG4uZ2V0UGFnZShDKSx7cmVmOkV9PWUsdT1FIGluc3RhbmNlb2YgUmVmO2Zvcihjb25zdHthY2Nlc3NpYmlsaXR5RGF0YTpuLHJlZjpkLHBhcmVudFRyZWVJZDpmLHN0cnVjdFRyZWVQYXJlbnQ6cH1vZiBRKXtpZighbj8udHlwZSljb250aW51ZTtjb25zdHtzdHJ1Y3RQYXJlbnQ6UX09bjtpZihpJiZOdW1iZXIuaXNJbnRlZ2VyKFEpJiZRPj0wKXtsZXQgdD0obHx8PW5ldyBNYXApLmdldChDKTtpZih2b2lkIDA9PT10KXt0PW5ldyBTdHJ1Y3RUcmVlUGFnZShpLGUucGFnZURpY3QpLmNvbGxlY3RPYmplY3RzKEUpO2wuc2V0KEMsdCl9Y29uc3QgYT10Py5nZXQoUSk7aWYoYSl7Y29uc3QgZT1zLmZldGNoKGEpLmNsb25lKCk7U3RydWN0VHJlZVJvb3QuI0ooZSxuKTtvLnB1dChhLHtkYXRhOmV9KTtjb250aW51ZX19aD1NYXRoLm1heChoLGYpO2NvbnN0IG09cy5nZXROZXdUZW1wb3JhcnlSZWYoKSx5PW5ldyBEaWN0KHMpO1N0cnVjdFRyZWVSb290LiNKKHksbik7YXdhaXQgdGhpcy4jdih7c3RydWN0VHJlZVBhcmVudDpwLHRhZ0RpY3Q6eSxuZXdUYWdSZWY6bSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LGZhbGxiYWNrS2lkczphLHhyZWY6cyxjYWNoZTpnfSk7Y29uc3Qgdz1uZXcgRGljdChzKTt5LnNldCgiSyIsdyk7dy5zZXQoIlR5cGUiLGMpO3UmJncuc2V0KCJQZyIsRSk7dy5zZXQoIk9iaiIsZCk7Zy5wdXQobSx5KTtyLnB1c2goZixtKX19cmV0dXJuIGgrMX1zdGF0aWMjSihlLHt0eXBlOnQsdGl0bGU6aSxsYW5nOmEsYWx0OnIsZXhwYW5kZWQ6cyxhY3R1YWxUZXh0Om59KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2kmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGkpKTthJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShhKSk7ciYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShyKSk7cyYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocykpO24mJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKG4pKX1zdGF0aWMjSCh7ZWxlbWVudHM6ZSx4cmVmOnQscGFnZURpY3Q6aSxudW1iZXJUcmVlOmF9KXtjb25zdCByPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlpZih0LnN0cnVjdFRyZWVQYXJlbnRJZCl7Y29uc3QgZT1wYXJzZUludCh0LnN0cnVjdFRyZWVQYXJlbnRJZC5zcGxpdCgiX21jIilbMV0sMTApO2xldCBpPXIuZ2V0KGUpO2lmKCFpKXtpPVtdO3Iuc2V0KGUsaSl9aS5wdXNoKHQpfWNvbnN0IHM9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihzKSlyZXR1cm47Y29uc3Qgbj1hLmdldChzKSx1cGRhdGVFbGVtZW50PShlLGksYSk9Pntjb25zdCBzPXIuZ2V0KGUpO2lmKHMpe2NvbnN0IGU9aS5nZXRSYXcoIlAiKSxyPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZyIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOmEsZGljdDppfTtmb3IoY29uc3QgdCBvZiBzKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBuKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGk9dC5mZXRjaChlKSxhPWkuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSl1cGRhdGVFbGVtZW50KGEsaSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCByIG9mIGEpe3I9dC5mZXRjaElmUmVmKHIpO2lmKE51bWJlci5pc0ludGVnZXIocikmJnVwZGF0ZUVsZW1lbnQocixpLGUpKWJyZWFrO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUoci5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3QgYT1yLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJnVwZGF0ZUVsZW1lbnQoYSxpLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI3Yoe3N0cnVjdFRyZWVQYXJlbnQ6ZSx0YWdEaWN0OnQsbmV3VGFnUmVmOmksc3RydWN0VHJlZVJvb3RSZWY6YSxmYWxsYmFja0tpZHM6cix4cmVmOnMsY2FjaGU6bn0pe2xldCBvLGc9bnVsbDtpZihlKXsoe3JlZjpnfT1lKTtvPWUuZGljdC5nZXRSYXcoIlAiKXx8YX1lbHNlIG89YTt0LnNldCgiUCIsbyk7Y29uc3QgYz1zLmZldGNoSWZSZWYobyk7aWYoIWMpe3IucHVzaChpKTtyZXR1cm59bGV0IGw9bi5nZXQobyk7aWYoIWwpe2w9Yy5jbG9uZSgpO24ucHV0KG8sbCl9Y29uc3QgaD1sLmdldFJhdygiSyIpO2xldCBDPWggaW5zdGFuY2VvZiBSZWY/bi5nZXQoaCk6bnVsbDtpZighQyl7Qz1zLmZldGNoSWZSZWYoaCk7Qz1BcnJheS5pc0FycmF5KEMpP0Muc2xpY2UoKTpbaF07Y29uc3QgZT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO2wuc2V0KCJLIixlKTtuLnB1dChlLEMpfWNvbnN0IFE9Qy5pbmRleE9mKGcpO0Muc3BsaWNlKFE+PTA/USsxOkMubGVuZ3RoLDAsaSl9fWNsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDppfT10aGlzLnRyZWU7cmV0dXJuIGkucm9sZU1hcC5oYXModCk/aS5yb2xlTWFwLmdldCh0KTp0fXBhcnNlS2lkcygpe2xldCBlPW51bGw7Y29uc3QgdD10aGlzLmRpY3QuZ2V0UmF3KCJQZyIpO3QgaW5zdGFuY2VvZiBSZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3QgaT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBpPXRoaXMucGFyc2VLaWQoZSx0KTtpJiZ0aGlzLmtpZHMucHVzaChpKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLGkpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpNcixtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgaT1udWxsO3QgaW5zdGFuY2VvZiBSZWY/aT10aGlzLmRpY3QueHJlZi5mZXRjaCh0KTp0IGluc3RhbmNlb2YgRGljdCYmKGk9dCk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1pLmdldFJhdygiUGciKTthIGluc3RhbmNlb2YgUmVmJiYoZT1hLnRvU3RyaW5nKCkpO2NvbnN0IHI9aS5nZXQoIlR5cGUiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiVHlwZSIpLm5hbWU6bnVsbDtpZigiTUNSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgdD1pLmdldFJhdygiU3RtIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlVyLHJlZk9iaklkOnQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDppLmdldCgiTUNJRCIpfSl9aWYoIk9CSlIiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCB0PWkuZ2V0UmF3KCJPYmoiKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6eHIscmVmT2JqSWQ6dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pfXJldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpIcixkaWN0Oml9KX19Y2xhc3MgU3RydWN0RWxlbWVudHtjb25zdHJ1Y3Rvcih7dHlwZTplLGRpY3Q6dD1udWxsLG1jaWQ6aT1udWxsLHBhZ2VPYmpJZDphPW51bGwscmVmT2JqSWQ6cj1udWxsfSl7dGhpcy50eXBlPWU7dGhpcy5kaWN0PXQ7dGhpcy5tY2lkPWk7dGhpcy5wYWdlT2JqSWQ9YTt0aGlzLnJlZk9iaklkPXI7dGhpcy5wYXJlbnROb2RlPW51bGx9fWNsYXNzIFN0cnVjdFRyZWVQYWdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yb290PWU7dGhpcy5yb290RGljdD1lP2UuZGljdDpudWxsO3RoaXMucGFnZURpY3Q9dDt0aGlzLm5vZGVzPVtdfWNvbGxlY3RPYmplY3RzKGUpe2lmKCEodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0JiZlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLnJvb3Quc3RydWN0UGFyZW50SWRzPy5nZXQoZSk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgTWFwLHI9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2Zvcihjb25zdFtlXW9mIGkpe2NvbnN0IHQ9ci5nZXRSYXcoZSk7dCBpbnN0YW5jZW9mIFJlZiYmYS5zZXQoZSx0KX1yZXR1cm4gYX1wYXJzZShlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm47Y29uc3QgaT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpJiYhYSlyZXR1cm47Y29uc3Qgcj1uZXcgTWFwLHM9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2lmKE51bWJlci5pc0ludGVnZXIoaSkpe2NvbnN0IGU9cy5nZXQoaSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnJvb3REaWN0LnhyZWYuZmV0Y2godCkscil9aWYoYSlmb3IoY29uc3RbZSx0XW9mIGEpe2NvbnN0IGk9cy5nZXQoZSk7aWYoaSl7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoSWZSZWYoaSkscik7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT14ciYmKGUua2lkc1swXS50eXBlPXQpfX19YWRkTm9kZShlLHQsaT0wKXtpZihpPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCBhPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUsYSk7Y29uc3Qgcj1lLmdldCgiUCIpO2lmKCFyfHxpc05hbWUoci5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSl7dGhpcy5hZGRUb3BMZXZlbE5vZGUoZSxhKXx8dC5kZWxldGUoZSk7cmV0dXJuIGF9Y29uc3Qgcz10aGlzLmFkZE5vZGUocix0LGkrMSk7aWYoIXMpcmV0dXJuIGE7bGV0IG49ITE7Zm9yKGNvbnN0IHQgb2Ygcy5raWRzKWlmKHQudHlwZT09PUhyJiZ0LmRpY3Q9PT1lKXt0LnBhcmVudE5vZGU9YTtuPSEwfW58fHQuZGVsZXRlKGUpO3JldHVybiBhfWFkZFRvcExldmVsTm9kZShlLHQpe2NvbnN0IGk9dGhpcy5yb290RGljdC5nZXQoIksiKTtpZighaSlyZXR1cm4hMTtpZihpIGluc3RhbmNlb2YgRGljdCl7aWYoaS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiEwO2xldCBhPSExO2ZvcihsZXQgcj0wO3I8aS5sZW5ndGg7cisrKXtjb25zdCBzPWlbcl07aWYocz8udG9TdHJpbmcoKT09PWUub2JqSWQpe3RoaXMubm9kZXNbcl09dDthPSEwfX1yZXR1cm4gYX1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxpPTApe2lmKGk+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2Eucm9sZT1lLnJvbGU7YS5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2goYSk7bGV0IHI9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiByJiYocj1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgciYmKGEuYWx0PXN0cmluZ1RvUERGU3RyaW5nKHIpKTtjb25zdCBzPWUuZGljdC5nZXQoIkEiKTtpZihzIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBOb3JtYWxSZWN0KHMuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKWEuYmJveD1lO2Vsc2V7Y29uc3QgZT1zLmdldCgiV2lkdGgiKSx0PXMuZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJihhLmJib3g9WzAsMCxlLHRdKX19Y29uc3Qgbj1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBuJiYoYS5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKG4pKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09SHI/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxhLGkrMSk6dC50eXBlPT09TXJ8fHQudHlwZT09PVVyP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT14cj9hLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PUxyJiZhLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWZ1bmN0aW9uIGlzVmFsaWRFeHBsaWNpdERlc3QoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPDIpcmV0dXJuITE7Y29uc3RbdCxpLC4uLmFdPWU7aWYoISh0IGluc3RhbmNlb2YgUmVmfHxOdW1iZXIuaXNJbnRlZ2VyKHQpKSlyZXR1cm4hMTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4hMTtjb25zdCByPWEubGVuZ3RoO2xldCBzPSEwO3N3aXRjaChpLm5hbWUpe2Nhc2UiWFlaIjppZihyPDJ8fHI+MylyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PXI7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKHI+MSlyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1yKXJldHVybiExO3M9ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiBhKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxzJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gaXNWYWxpZEV4cGxpY2l0RGVzdChlKT9lOm51bGx9ZnVuY3Rpb24gZmV0Y2hSZW1vdGVEZXN0KGUpe2xldCB0PWUuZ2V0KCJEIik7aWYodCl7dCBpbnN0YW5jZW9mIE5hbWUmJih0PXQubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBzdHJpbmdUb1BERlN0cmluZyh0KTtpZihpc1ZhbGlkRXhwbGljaXREZXN0KHQpKXJldHVybiBKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gbnVsbH1jbGFzcyBDYXRhbG9ne2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy54cmVmPXQ7dGhpcy5fY2F0RGljdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuX2NhdERpY3QgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1udWxsO3RoaXMuZm9udENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcDt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlSW5kZXhDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlRGljdENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9bmV3IFJlZlNldDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1uZXcgTWFwfWNsb25lRGljdCgpe3JldHVybiB0aGlzLl9jYXREaWN0LmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2lmKG10LnRlc3QoZS5uYW1lKSlyZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLGUubmFtZSk7d2FybihgSW52YWxpZCBQREYgY2F0YWxvZyB2ZXJzaW9uOiAke2UubmFtZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybiBzaGFkb3codGhpcywibGFuZyIsZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJDb2xsZWN0aW9uIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiY29sbGVjdGlvbiIsZSl9Z2V0IGFjcm9Gb3JtKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQWNyb0Zvcm0iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybSIsZSl9Z2V0IGFjcm9Gb3JtUmVmKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGk9dGhpcy54cmVmLmZldGNoKGUsIXRoaXMueHJlZi5lbmNyeXB0Py5lbmNyeXB0TWV0YWRhdGEpO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZpLmRpY3QgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWkuZGljdC5nZXQoIlR5cGUiKSxhPWkuZGljdC5nZXQoIlN1YnR5cGUiKTtpZihpc05hbWUoZSwiTWV0YWRhdGEiKSYmaXNOYW1lKGEsIlhNTCIpKXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhpLmdldFN0cmluZygpKTtlJiYodD1uZXcgTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oYFNraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIix0KX1nZXQgbWFya0luZm8oKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRNYXJrSW5mbygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX1fcmVhZE1hcmtJbmZvKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBpIGluIHQpe2NvbnN0IGE9ZS5nZXQoaSk7ImJvb2xlYW4iPT10eXBlb2YgYSYmKHRbaV09YSl9cmV0dXJuIHR9Z2V0IHN0cnVjdFRyZWVSb290KCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkU3RydWN0VHJlZVJvb3QoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfV9yZWFkU3RydWN0VHJlZVJvb3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgU3RydWN0VHJlZVJvb3QodCxlKTtpLmluaXQoKTtyZXR1cm4gaX1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4gc2hhZG93KHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkRG9jdW1lbnRPdXRsaW5lKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtlPWUuZ2V0UmF3KCJGaXJzdCIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD17aXRlbXM6W119LGk9W3tvYmo6ZSxwYXJlbnQ6dH1dLGE9bmV3IFJlZlNldDthLnB1dChlKTtjb25zdCByPXRoaXMueHJlZixzPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2kubGVuZ3RoPjA7KXtjb25zdCB0PWkuc2hpZnQoKSxuPXIuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PW4pY29udGludWU7bi5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IG89e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpuLHJlc3VsdE9iajpvLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBnPW4uZ2V0KCJUaXRsZSIpLGM9bi5nZXQoIkYiKXx8MCxsPW4uZ2V0QXJyYXkoIkMiKSxoPW4uZ2V0KCJDb3VudCIpO2xldCBDPXM7IWlzTnVtYmVyQXJyYXkobCwzKXx8MD09PWxbMF0mJjA9PT1sWzFdJiYwPT09bFsyXXx8KEM9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IobCwwKSk7Y29uc3QgUT17YWN0aW9uOm8uYWN0aW9uLGF0dGFjaG1lbnQ6by5hdHRhY2htZW50LGRlc3Q6by5kZXN0LHVybDpvLnVybCx1bnNhZmVVcmw6by51bnNhZmVVcmwsbmV3V2luZG93Om8ubmV3V2luZG93LHNldE9DR1N0YXRlOm8uc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBnP3N0cmluZ1RvUERGU3RyaW5nKGcpOiIiLGNvbG9yOkMsY291bnQ6TnVtYmVyLmlzSW50ZWdlcihoKT9oOnZvaWQgMCxib2xkOiEhKDImYyksaXRhbGljOiEhKDEmYyksaXRlbXM6W119O3QucGFyZW50Lml0ZW1zLnB1c2goUSk7ZT1uLmdldFJhdygiRmlyc3QiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhYS5oYXMoZSkpe2kucHVzaCh7b2JqOmUscGFyZW50OlF9KTthLnB1dChlKX1lPW4uZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGUpKXtpLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pO2EucHV0KGUpfX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGVybWlzc2lvbnMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwZXJtaXNzaW9ucy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBpPVtdO2Zvcihjb25zdCBlIGluIHcpe2NvbnN0IGE9d1tlXTt0JmEmJmkucHVzaChhKX1yZXR1cm4gaX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGk9dC5nZXQoIkQiKTtpZighaSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCByPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiBSZWYmJiFyLmhhcyhlKSYmci5wdXQoZSx0aGlzLiNZKGUpKTtlPXRoaXMuI0soaSxyKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jWShlKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaChlKSxpPXtpZDplLnRvU3RyaW5nKCksbmFtZTpudWxsLGludGVudDpudWxsLHVzYWdlOntwcmludDpudWxsLHZpZXc6bnVsbH0scmJHcm91cHM6W119LGE9dC5nZXQoIk5hbWUiKTsic3RyaW5nIj09dHlwZW9mIGEmJihpLm5hbWU9c3RyaW5nVG9QREZTdHJpbmcoYSkpO2xldCByPXQuZ2V0QXJyYXkoIkludGVudCIpO0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7ci5ldmVyeSgoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpKSYmKGkuaW50ZW50PXIubWFwKChlPT5lLm5hbWUpKSk7Y29uc3Qgcz10LmdldCgiVXNhZ2UiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gaTtjb25zdCBuPWkudXNhZ2Usbz1zLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpuLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGc9cy5nZXQoIlZpZXciKTtpZihnIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1nLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOm4udmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBpfSNLKGUsdCl7ZnVuY3Rpb24gcGFyc2VPbk9mZihlKXtjb25zdCBpPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSlhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmaS5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGk9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhzKSl7YS5wdXQocyk7ci5wdXNoKHMudG9TdHJpbmcoKSk7Y29udGludWV9Y29uc3QgZT1wYXJzZU5lc3RlZE9yZGVyKHMsaSk7ZSYmci5wdXNoKGUpfWlmKGk+MClyZXR1cm4gcjtjb25zdCBzPVtdO2Zvcihjb25zdFtlXW9mIHQuaXRlbXMoKSlhLmhhcyhlKXx8cy5wdXNoKGUudG9TdHJpbmcoKSk7cy5sZW5ndGgmJnIucHVzaCh7bmFtZTpudWxsLG9yZGVyOnN9KTtyZXR1cm4gcn1mdW5jdGlvbiBwYXJzZU5lc3RlZE9yZGVyKGUsdCl7aWYoKyt0PnIpe3dhcm4oInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpO3JldHVybiBudWxsfWNvbnN0IGE9aS5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHM9aS5mZXRjaElmUmVmKGFbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgcylyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlT3JkZXIoYS5zbGljZSgxKSx0KTtyZXR1cm4gbj8ubGVuZ3RoP3tuYW1lOnN0cmluZ1RvUERGU3RyaW5nKHMpLG9yZGVyOm59Om51bGx9Y29uc3QgaT10aGlzLnhyZWYsYT1uZXcgUmVmU2V0LHI9MTA7IWZ1bmN0aW9uIHBhcnNlUkJHcm91cHMoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZighQXJyYXkuaXNBcnJheShlKXx8IWUubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHI9bmV3IFNldDtmb3IoY29uc3QgaSBvZiBlKWlmKGkgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKGkpJiYhci5oYXMoaS50b1N0cmluZygpKSl7ci5hZGQoaS50b1N0cmluZygpKTt0LmdldChpKS5yYkdyb3Vwcy5wdXNoKHIpfX19KGUuZ2V0KCJSQkdyb3VwcyIpKTtyZXR1cm57bmFtZToic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJOYW1lIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIk5hbWUiKSk6bnVsbCxjcmVhdG9yOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIkNyZWF0b3IiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiQ3JlYXRvciIpKTpudWxsLGJhc2VTdGF0ZTplLmdldCgiQmFzZVN0YXRlIilpbnN0YW5jZW9mIE5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpbLi4udF19fXNldEFjdHVhbE51bVBhZ2VzKGU9bnVsbCl7dGhpcy5fYWN0dWFsTnVtUGFnZXM9ZX1nZXQgaGFzQWN0dWFsTnVtUGFnZXMoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FjdHVhbE51bVBhZ2VzfWdldCBfcGFnZXNDb3VudCgpe2NvbnN0IGU9dGhpcy50b3BsZXZlbFBhZ2VzRGljdC5nZXQoIkNvdW50Iik7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybiBzaGFkb3codGhpcywiX3BhZ2VzQ291bnQiLGUpfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuX2FjdHVhbE51bVBhZ2VzOnRoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy5fcmVhZERlc3RzKCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBOYW1lVHJlZSlmb3IoY29uc3RbaSxhXW9mIGUuZ2V0QWxsKCkpe2NvbnN0IGU9ZmV0Y2hEZXN0KGEpO2UmJih0W3N0cmluZ1RvUERGU3RyaW5nKGkpXT1lKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgZSl7Y29uc3QgZT1mZXRjaERlc3QoYSk7ZSYmKHRbaV09ZSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJkZXN0aW5hdGlvbnMiLHQpfWdldERlc3RpbmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fcmVhZERlc3RzKCk7aWYodCBpbnN0YW5jZW9mIE5hbWVUcmVlKXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPXRoaXMuZGVzdGluYXRpb25zW2VdO2lmKGEpe3dhcm4oYEZvdW5kICIke2V9IiBhdCBhbiBpbmNvcnJlY3QgcG9zaXRpb24gaW4gdGhlIE5hbWVUcmVlLmApO3JldHVybiBhfX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH1fcmVhZERlc3RzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtyZXR1cm4gZT8uaGFzKCJEZXN0cyIpP25ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwYWdlIGxhYmVscy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgaT1udWxsLGE9IiI7Y29uc3Qgcj1uZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IHM9IiIsbj0xO2ZvcihsZXQgZT0wLG89dGhpcy5udW1QYWdlcztlPG87ZSsrKXtjb25zdCBvPXIuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2k9ZS5uYW1lfWVsc2UgaT1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2UgYT0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtuPWV9ZWxzZSBuPTF9c3dpdGNoKGkpe2Nhc2UiRCI6cz1uO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjpzPXRvUm9tYW5OdW1lcmFscyhuLCJyIj09PWkpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09aT85Nzo2NSxhPW4tMTtzPVN0cmluZy5mcm9tQ2hhckNvZGUodCthJWUpLnJlcGVhdChNYXRoLmZsb29yKGEvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHtpfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7cz0iIn10W2VdPWErcztuKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTGF5b3V0Iik7bGV0IHQ9IiI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIkZ1bGxTY3JlZW4iOmNhc2UiVXNlT0MiOmNhc2UiVXNlQXR0YWNobWVudHMiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3QgaSBvZiBlLmdldEtleXMoKSl7Y29uc3QgYT1lLmdldChpKTtsZXQgcjtzd2l0Y2goaSl7Y2FzZSJIaWRlVG9vbGJhciI6Y2FzZSJIaWRlTWVudWJhciI6Y2FzZSJIaWRlV2luZG93VUkiOmNhc2UiRml0V2luZG93IjpjYXNlIkNlbnRlcldpbmRvdyI6Y2FzZSJEaXNwbGF5RG9jVGl0bGUiOmNhc2UiUGlja1RyYXlCeVBERlNpemUiOiJib29sZWFuIj09dHlwZW9mIGEmJihyPWEpO2JyZWFrO2Nhc2UiTm9uRnVsbFNjcmVlblBhZ2VNb2RlIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTWVkaWFCb3giOmNhc2UiQ3JvcEJveCI6Y2FzZSJCbGVlZEJveCI6Y2FzZSJUcmltQm94IjpjYXNlIkFydEJveCI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJDcm9wQm94In1icmVhaztjYXNlIlByaW50U2NhbGluZyI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCUyPT0wKXthLmV2ZXJ5KCgoZSx0LGkpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49aVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocj1hKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wJiYocj1hKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7aX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cil7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtpXT1yfWVsc2Ugd2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPW5ldyBEaWN0KHRoaXMueHJlZik7aS5zZXQoIkEiLGUpO2NvbnN0IGE9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDppLHJlc3VsdE9iajphfSk7QXJyYXkuaXNBcnJheShhLmRlc3QpP3QuZGVzdD1hLmRlc3Q6YS5hY3Rpb24mJih0LmFjdGlvbj1hLmFjdGlvbil9ZWxzZSBBcnJheS5pc0FycmF5KGUpJiYodC5kZXN0PWUpO3JldHVybiBzaGFkb3codGhpcywib3BlbkFjdGlvbiIsb2JqZWN0U2l6ZSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBpPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXtjb25zdCBpPW5ldyBGaWxlU3BlYyhhLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtzdHJpbmdUb1BERlN0cmluZyhlKV09aS5zZXJpYWxpemFibGV9fXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7Y29uc3QgaT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXt0fHwodD1uZXcgRGljdCh0aGlzLnhyZWYpKTt0LnNldChzdHJpbmdUb1BERlN0cmluZyhlKSxhKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfV9jb2xsZWN0SmF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtmdW5jdGlvbiBhcHBlbmRJZkphdmFTY3JpcHREaWN0KGUsaSl7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKCFpc05hbWUoaS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgYT1pLmdldCgiSlMiKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhPWEuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuO2E9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiYodHx8PW5ldyBNYXApLnNldChlLGEpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsaV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSksaSl9Y29uc3QgaT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpO2kmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGkpO3JldHVybiB0fWdldCBqc0FjdGlvbnMoKXtjb25zdCBlPXRoaXMuX2NvbGxlY3RKYXZhU2NyaXB0KCk7bGV0IHQ9Y29sbGVjdEFjdGlvbnModGhpcy54cmVmLHRoaXMuX2NhdERpY3QsbUEpO2lmKGUpe3R8fD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgZSlpIGluIHQ/dFtpXS5wdXNoKGEpOnRbaV09W2FdfXJldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBpPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgYSBvZiBpKWlmKGEubG9hZGVkTmFtZT09PWUpe2EuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe2NsZWFyR2xvYmFsQ2FjaGVzKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMucGFnZURpY3RDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxpPW5ldyBSZWZTZXQsYT10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTthIGluc3RhbmNlb2YgUmVmJiZpLnB1dChhKTtjb25zdCByPXRoaXMueHJlZixzPXRoaXMucGFnZUtpZHNDb3VudENhY2hlLG49dGhpcy5wYWdlSW5kZXhDYWNoZSxvPXRoaXMucGFnZURpY3RDYWNoZTtsZXQgZz0wO2Zvcig7dC5sZW5ndGg7KXtjb25zdCBhPXQucG9wKCk7aWYoYSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgYz1zLmdldChhKTtpZihjPj0wJiZnK2M8PWUpe2crPWM7Y29udGludWV9aWYoaS5oYXMoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTtpLnB1dChhKTtjb25zdCBsPWF3YWl0KG8uZ2V0KGEpfHxyLmZldGNoQXN5bmMoYSkpO2lmKGwgaW5zdGFuY2VvZiBEaWN0KXtsZXQgdD1sLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWwuaGFzKCJLaWRzIikpe3MuaGFzKGEpfHxzLnB1dChhLDEpO24uaGFzKGEpfHxuLnB1dChhLGcpO2lmKGc9PT1lKXJldHVybltsLGFdO2crKztjb250aW51ZX19dC5wdXNoKGwpO2NvbnRpbnVlfWlmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmN9PWE7bGV0IGw9YS5nZXRSYXcoIkNvdW50Iik7bCBpbnN0YW5jZW9mIFJlZiYmKGw9YXdhaXQgci5mZXRjaEFzeW5jKGwpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGwpJiZsPj0wKXtjJiYhcy5oYXMoYykmJnMucHV0KGMsbCk7aWYoZytsPD1lKXtnKz1sO2NvbnRpbnVlfX1sZXQgaD1hLmdldFJhdygiS2lkcyIpO2ggaW5zdGFuY2VvZiBSZWYmJihoPWF3YWl0IHIuZmV0Y2hBc3luYyhoKSk7aWYoIUFycmF5LmlzQXJyYXkoaCkpe2xldCB0PWEuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgci5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhYS5oYXMoIktpZHMiKSl7aWYoZz09PWUpcmV0dXJuW2EsbnVsbF07ZysrO2NvbnRpbnVlfXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9aC5sZW5ndGgtMTtlPj0wO2UtLSl7Y29uc3QgaT1oW2VdO3QucHVzaChpKTthPT09dGhpcy50b3BsZXZlbFBhZ2VzRGljdCYmaSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGkpJiZvLnB1dChpLHIuZmV0Y2hBc3luYyhpKSl9fXRocm93IG5ldyBFcnJvcihgUGFnZSBpbmRleCAke2V9IG5vdCBmb3VuZC5gKX1hc3luYyBnZXRBbGxQYWdlRGljdHMoZT0hMSl7Y29uc3R7aWdub3JlRXJyb3JzOnR9PXRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLGk9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgUmVmU2V0LHI9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7ciBpbnN0YW5jZW9mIFJlZiYmYS5wdXQocik7Y29uc3Qgcz1uZXcgTWFwLG49dGhpcy54cmVmLG89dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgZz0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIW8uaGFzKHQpJiZvLnB1dCh0LGcpO3Muc2V0KGcrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IGk7aWYoZSYmdCYmMD09PWcpe3dhcm4oYGdldEFsbFBhZ2VEaWN0cyAtIFNraXBwaW5nIGludmFsaWQgZmlyc3QgcGFnZTogIiR7aX0iLmApO2k9RGljdC5lbXB0eX1zLnNldChnKyssW2ksbnVsbF0pfWZvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOnJ9PWU7bGV0IHM9dC5nZXRSYXcoIktpZHMiKTtpZihzIGluc3RhbmNlb2YgUmVmKXRyeXtzPWF3YWl0IG4uZmV0Y2hBc3luYyhzKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkocykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIikpO2JyZWFrfWlmKHI+PXMubGVuZ3RoKXtpLnBvcCgpO2NvbnRpbnVlfWNvbnN0IG89c1tyXTtsZXQgZztpZihvIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhvKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KG8pO3RyeXtnPWF3YWl0IG4uZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgZz1vO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBjPWcuZ2V0UmF3KCJUeXBlIik7aWYoYyBpbnN0YW5jZW9mIFJlZil0cnl7Yz1hd2FpdCBuLmZldGNoQXN5bmMoYyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlzTmFtZShjLCJQYWdlIil8fCFnLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGcsbyBpbnN0YW5jZW9mIFJlZj9vOm51bGwpOmkucHVzaCh7Y3VycmVudE5vZGU6Zyxwb3NJbktpZHM6MH0pO2UucG9zSW5LaWRzKyt9cmV0dXJuIHN9Z2V0UGFnZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXhDYWNoZS5nZXQoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO2NvbnN0IGk9dGhpcy54cmVmO2xldCBhPTA7Y29uc3QgbmV4dD10PT5mdW5jdGlvbiBwYWdlc0JlZm9yZVJlZih0KXtsZXQgYSxyPTA7cmV0dXJuIGkuZmV0Y2hBc3luYyh0KS50aGVuKChmdW5jdGlvbihpKXtpZihpc1JlZnNFcXVhbCh0LGUpJiYhaXNEaWN0KGksIlBhZ2UiKSYmIShpIGluc3RhbmNlb2YgRGljdCYmIWkuaGFzKCJUeXBlIikmJmkuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFpKXJldHVybiBudWxsO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTthPWkuZ2V0UmF3KCJQYXJlbnQiKTtyZXR1cm4gaS5nZXRBc3luYygiUGFyZW50Iil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJuIGUuZ2V0QXN5bmMoIktpZHMiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBzPVtdO2xldCBuPSExO2Zvcihjb25zdCBhIG9mIGUpe2lmKCEoYSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChhLHQpKXtuPSEwO2JyZWFrfXMucHVzaChpLmZldGNoQXN5bmMoYSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9yKz1lLmdldCgiQ291bnQiKTpyKyt9KSkpfWlmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcixhXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLGEpO3JldHVybiBhfWNvbnN0W2kscl09dDthKz1pO3JldHVybiBuZXh0KHIpfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLHRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsKX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOmk9bnVsbCxkb2NBdHRhY2htZW50czphPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IHIscyxuPWUuZ2V0KCJBIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSluPWUuZ2V0KCJEZXN0Iik7ZWxzZXtuPWUuZ2V0KCJBQSIpO24gaW5zdGFuY2VvZiBEaWN0JiYobi5oYXMoIkQiKT9uPW4uZ2V0KCJEIik6bi5oYXMoIlUiKSYmKG49bi5nZXQoIlUiKSkpfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW4uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgaT1lLm5hbWU7c3dpdGNoKGkpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPW4uZ2V0KCJGbGFncyIpLG89ISgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZz1bXSxjPVtdO2Zvcihjb25zdCBlIG9mIG4uZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9jLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmcucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpnLHJlZnM6YyxpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpyPW4uZ2V0KCJVUkkiKTtyIGluc3RhbmNlb2YgTmFtZSYmKHI9Ii8iK3IubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpzPW4uZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGw9bi5nZXQoIkYiKTtpZihsIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uZXcgRmlsZVNwZWMobCxudWxsLCEwKSx7cmF3RmlsZW5hbWU6dH09ZS5zZXJpYWxpemFibGU7cj10fWVsc2Uic3RyaW5nIj09dHlwZW9mIGwmJihyPWwpO2NvbnN0IGg9ZmV0Y2hSZW1vdGVEZXN0KG4pO2gmJiJzdHJpbmciPT10eXBlb2YgciYmKHI9ci5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IEM9bi5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIEMmJih0Lm5ld1dpbmRvdz1DKTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBRPW4uZ2V0KCJUIik7bGV0IEU7aWYoYSYmUSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9US5nZXQoIlIiKSx0PVEuZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoRT1hW3N0cmluZ1RvUERGU3RyaW5nKHQpXSl9aWYoRSl7dC5hdHRhY2htZW50PUU7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3Qobik7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB1PW4uZ2V0KCJOIik7dSBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj11Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IGQ9bi5nZXQoIlN0YXRlIiksZj1uLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KGQpfHwwPT09ZC5sZW5ndGgpYnJlYWs7Y29uc3QgcD1bXTtmb3IoY29uc3QgZSBvZiBkKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6cC5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZwLnB1c2goZS50b1N0cmluZygpKTtpZihwLmxlbmd0aCE9PWQubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOnAscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBmfHxmfTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IG09bi5nZXQoIkpTIik7bGV0IHk7bSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/eT1tLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgbSYmKHk9bSk7Y29uc3Qgdz15JiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoeSkpO2lmKHcpe3I9dy51cmw7dC5uZXdXaW5kb3c9dy5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1pfHwiU3VibWl0Rm9ybSI9PT1pKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2l9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYocz1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChyLGkse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVmKTt0LnVuc2FmZVVybD1yfWlmKHMpe3MgaW5zdGFuY2VvZiBOYW1lJiYocz1zLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygcz90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcocyk6aXNWYWxpZEV4cGxpY2l0RGVzdChzKSYmKHQuZGVzdD1zKX19fWZ1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGEgb2YgZSkoKGk9YSlpbnN0YW5jZW9mIFJlZnx8aSBpbnN0YW5jZW9mIERpY3R8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGkpKSYmdC5wdXNoKGEpO3ZhciBpfWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWk7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IFJlZlNldDtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcoYSk7dm9pZCAwIT09ZSYmaS5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKGkpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10saT1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGE9ZS5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZih0aGlzLnJlZlNldC5oYXMoYSkpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChhKTthPXRoaXMueHJlZi5mZXRjaChhKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpe3dhcm4oYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKGEpO2kucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCByPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtyPSEwO2kucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1yJiZ0LnB1c2goYSl9fWFkZENoaWxkcmVuKGEsZSl9aWYoaS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGkpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO3JldHVybiB0aGlzLl93YWxrKHQpfXRoaXMucmVmU2V0PW51bGx9fWNvbnN0IEpyPVN5bWJvbCgpLHZyPVN5bWJvbCgpLFlyPVN5bWJvbCgpLEtyPVN5bWJvbCgpLFRyPVN5bWJvbCgpLHFyPVN5bWJvbCgpLE9yPVN5bWJvbCgpLFByPVN5bWJvbCgpLFdyPVN5bWJvbCgpLGpyPVN5bWJvbCgiY29udGVudCIpLFhyPVN5bWJvbCgiZGF0YSIpLFZyPVN5bWJvbCgpLFpyPVN5bWJvbCgiZXh0cmEiKSxfcj1TeW1ib2woKSx6cj1TeW1ib2woKSwkcj1TeW1ib2woKSxBcz1TeW1ib2woKSxlcz1TeW1ib2woKSx0cz1TeW1ib2woKSxpcz1TeW1ib2woKSxhcz1TeW1ib2woKSxycz1TeW1ib2woKSxzcz1TeW1ib2woKSxucz1TeW1ib2woKSxvcz1TeW1ib2woKSxncz1TeW1ib2woKSxJcz1TeW1ib2woKSxjcz1TeW1ib2woKSxscz1TeW1ib2woKSxocz1TeW1ib2woKSxDcz1TeW1ib2woKSxCcz1TeW1ib2woKSxRcz1TeW1ib2woKSxFcz1TeW1ib2woKSx1cz1TeW1ib2woKSxkcz1TeW1ib2woKSxmcz1TeW1ib2woKSxwcz1TeW1ib2woKSxtcz1TeW1ib2woKSx5cz1TeW1ib2woKSx3cz1TeW1ib2woKSxicz1TeW1ib2woKSxEcz1TeW1ib2woKSxGcz1TeW1ib2woKSxTcz1TeW1ib2woKSxrcz1TeW1ib2woIm5hbWVzcGFjZUlkIiksUnM9U3ltYm9sKCJub2RlTmFtZSIpLE5zPVN5bWJvbCgpLEdzPVN5bWJvbCgpLE1zPVN5bWJvbCgpLFVzPVN5bWJvbCgpLHhzPVN5bWJvbCgpLExzPVN5bWJvbCgpLEhzPVN5bWJvbCgpLEpzPVN5bWJvbCgpLHZzPVN5bWJvbCgicm9vdCIpLFlzPVN5bWJvbCgpLEtzPVN5bWJvbCgpLFRzPVN5bWJvbCgpLHFzPVN5bWJvbCgpLE9zPVN5bWJvbCgpLFdzPVN5bWJvbCgpLGpzPVN5bWJvbCgpLFhzPVN5bWJvbCgpLFZzPVN5bWJvbCgpLFpzPVN5bWJvbCgpLF9zPVN5bWJvbCgpLHpzPVN5bWJvbCgidWlkIiksJHM9U3ltYm9sKCksQW49e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX0sZW49e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LHRuPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiJyIpfHxlLnN0YXJ0c1dpdGgoJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gZ2V0SW50ZWdlcih7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIWlzTmFOKGEpJiZpKGEpP2E6dH1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4oYSkmJmkoYSk/YTp0fWZ1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7cmV0dXJuIGUmJmkoZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldFN0cmluZ09wdGlvbihlLHQpe3JldHVybiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGk9ZS50cmltKCkubWF0Y2godG4pO2lmKCFpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdFssYSxyXT1pLHM9cGFyc2VGbG9hdChhKTtpZihpc05hTihzKSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7aWYoMD09PXMpcmV0dXJuIDA7Y29uc3Qgbj1lbltyXTtyZXR1cm4gbj9uKHMpOnN9ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtpLGFdPXQ7cmV0dXJue251bTppLGRlbjphfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpOltdfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJGQUlMVVJFIixuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsbnVsbCkpfXN0YXRpYyBnZXQgRU1QVFkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVNUFRZIixuZXcgSFRNTFJlc3VsdCghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuc3VjY2Vzcz1lO3RoaXMuaHRtbD10O3RoaXMuYmJveD1pO3RoaXMuYnJlYWtOb2RlPWF9aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUsdD1udWxsKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSx0LG51bGwpfX1jbGFzcyBGb250RmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcDt0aGlzLmNhY2hlPW5ldyBNYXA7dGhpcy53YXJuZWQ9bmV3IFNldDt0aGlzLmRlZmF1bHRGb250PW51bGw7dGhpcy5hZGQoZSl9YWRkKGUsdD1udWxsKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkUGRmRm9udCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhcnx8KGUucmVndWxhcj1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWMpO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBpPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsaSl9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8saT10LmZvbnRGYW1pbHk7bGV0IGE9dGhpcy5mb250cy5nZXQoaSk7aWYoIWEpe2E9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZvbnRzLnNldChpLGEpO3RoaXMuZGVmYXVsdEZvbnR8fCh0aGlzLmRlZmF1bHRGb250PWEpfWxldCByPSIiO2NvbnN0IHM9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3I9cz49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpzPj03MDAmJihyPSJib2xkIik7aWYoIXIpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocj0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihyKz0iaXRhbGljIil9cnx8KHI9InJlZ3VsYXIiKTthW3JdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgaT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcj1lLnJlcGxhY2VBbGwoYSwiIik7aT10aGlzLmZvbnRzLmdldChyKTtpZihpKXt0aGlzLmNhY2hlLnNldChlLGkpO3JldHVybiBpfXI9ci50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2godCk7aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZigwPT09cy5sZW5ndGgpe3I9ci5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaCh0KX1pZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZihzLmxlbmd0aD49MSl7MSE9PXMubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHNbMF0pO3JldHVybiBzWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgRm9udEluZm97Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5saW5lSGVpZ2h0PWk7dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCByPWEuZmluZChlLnR5cGVmYWNlKTtpZihyKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLHIpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5mb250RmluZGVyPWE7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxpLGEpXX1wdXNoRGF0YShlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1hLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09YS5wYXJhTWFyZ2luW2VdKTtjb25zdCByPW5ldyBGb250SW5mbyhlLHQsaXx8YS5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7ci5wZGZGb250fHwoci5wZGZGb250PWEucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKHIpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGksYSk7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxpKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsaSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxpPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3QgYT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxyPXQucGRmRm9udCxzPXIubGluZUhlaWdodHx8MS4yLG49dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscykqaSxvPXMtKHZvaWQgMD09PXIubGluZUdhcD8uMjpyLmxpbmVHYXApLGc9TWF0aC5tYXgoMSxvKSppLGM9aS8xZTMsbD1yLmRlZmF1bHRXaWR0aHx8ci5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXIuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGk9ci5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9ZS53aWR0aHx8bDt0aGlzLmdseXBocy5wdXNoKFt0KmMrYSxuLGcsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWVsc2V7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFtpLDEuMippLGksZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX19Y29tcHV0ZShlKXtsZXQgdD0tMSxpPTAsYT0wLHI9MCxzPTAsbj0wLG89ITEsZz0hMDtmb3IobGV0IGM9MCxsPXRoaXMuZ2x5cGhzLmxlbmd0aDtjPGw7YysrKXtjb25zdFtsLGgsQyxRLEVdPXRoaXMuZ2x5cGhzW2NdLHU9IiAiPT09USxkPWc/QzpoO2lmKEUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7Zz0hMX1lbHNlIGlmKHUpaWYocytsPmUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7bz0hMDtnPSExfWVsc2V7bj1NYXRoLm1heChkLG4pO2k9cztzKz1sO3Q9Y31lbHNlIGlmKHMrbD5lKXtyKz1uO249ZDtpZigtMSE9PXQpe2M9dDthPU1hdGgubWF4KGEsaSk7cz0wO3Q9LTE7aT0wfWVsc2V7YT1NYXRoLm1heChhLHMpO3M9bH1vPSEwO2c9ITF9ZWxzZXtzKz1sO249TWF0aC5tYXgoZCxuKX19YT1NYXRoLm1heChhLHMpO3IrPW4rdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMiphLGhlaWdodDpyLGlzQnJva2VuOm99fX1jb25zdCBhbj0vXlteLltdKy8scm49L15bXlxdXSsvLHNuPTAsbm49MSxvbj0yLGduPTMsSW49NCxjbj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW29zXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxsbj1uZXcgV2Vha01hcDtmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LGk9ITApe2xldCBhPWUubWF0Y2goYW4pO2lmKCFhKXJldHVybiBudWxsO2xldFtyXT1hO2NvbnN0IHM9W3tuYW1lOnIsY2FjaGVOYW1lOiIuIityLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOnNufV07bGV0IG49ci5sZW5ndGg7Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3QgZz1uO2lmKCJbIj09PWUuY2hhckF0KG4rKykpe2E9ZS5zbGljZShuKS5tYXRjaChybik7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1zLmF0KC0xKS5pbmRleD0iKiI9PT0obz0obz1hWzBdKS50cmltKCkpPzEvMDpwYXJzZUludChvLDEwKXx8MDtuKz1hWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBjO3N3aXRjaChlLmNoYXJBdChuKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtuKys7Yz1ubjticmVhaztjYXNlIiMiOm4rKztjPW9uO2JyZWFrO2Nhc2UiWyI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPWduO2JyZWFrO2Nhc2UiKCI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWM9SW47YnJlYWs7ZGVmYXVsdDpjPXNufWE9ZS5zbGljZShuKS5tYXRjaChhbik7aWYoIWEpYnJlYWs7W3JdPWE7bis9ci5sZW5ndGg7cy5wdXNoKHtuYW1lOnIsY2FjaGVOYW1lOmUuc2xpY2UoZyxuKSxvcGVyYXRvcjpjLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIG87cmV0dXJuIHN9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsaSxhPSEwLHI9ITApe2NvbnN0IHM9cGFyc2VFeHByZXNzaW9uKGksYSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3Qgbj1jbi5nZXQoc1swXS5uYW1lKTtsZXQgbyxnPTA7aWYobil7bz0hMDtlPVtuKGUsdCldO2c9MX1lbHNle289bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBpPXMubGVuZ3RoO2c8aTtnKyspe2NvbnN0e25hbWU6aSxjYWNoZU5hbWU6YSxvcGVyYXRvcjpuLGluZGV4OmN9PXNbZ10sbD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5pc1hGQU9iamVjdCljb250aW51ZTtsZXQgZSxzO2lmKHIpe3M9bG4uZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7bG4uc2V0KHQscyl9ZT1zLmdldChhKX1pZighZSl7c3dpdGNoKG4pe2Nhc2Ugc246ZT10W2lzXShpLCExKTticmVhaztjYXNlIG5uOmU9dFtpc10oaSwhMCk7YnJlYWs7Y2FzZSBvbjplPXRbdHNdKGkpO2U9ZS5pc1hGQU9iamVjdEFycmF5P2UuY2hpbGRyZW46W2VdfXImJnMuc2V0KGEsZSl9ZS5sZW5ndGg+MCYmbC5wdXNoKGUpfWlmKDAhPT1sLmxlbmd0aHx8b3x8MCE9PWcpZT1pc0Zpbml0ZShjKT9sLmZpbHRlcigoZT0+YzxlLmxlbmd0aCkpLm1hcCgoZT0+ZVtjXSkpOmwuZmxhdCgpO2Vsc2V7Y29uc3QgaT10W2xzXSgpO2lmKCEodD1pKSlyZXR1cm4gbnVsbDtnPS0xO2U9W3RdfX1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsaSl7Y29uc3QgYT1wYXJzZUV4cHJlc3Npb24oaSk7aWYoIWEpcmV0dXJuIG51bGw7aWYoYS5zb21lKChlPT5lLm9wZXJhdG9yPT09bm4pKSlyZXR1cm4gbnVsbDtjb25zdCByPWNuLmdldChhWzBdLm5hbWUpO2xldCBzPTA7aWYocil7ZT1yKGUsdCk7cz0xfWVsc2UgZT10fHxlO2ZvcihsZXQgdD1hLmxlbmd0aDtzPHQ7cysrKXtjb25zdHtuYW1lOnQsb3BlcmF0b3I6aSxpbmRleDpyfT1hW3NdO2lmKCFpc0Zpbml0ZShyKSl7YVtzXS5pbmRleD0wO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfWxldCBuO3N3aXRjaChpKXtjYXNlIHNuOm49ZVtpc10odCwhMSk7YnJlYWs7Y2FzZSBubjpuPWVbaXNdKHQsITApO2JyZWFrO2Nhc2Ugb246bj1lW3RzXSh0KTtuPW4uaXNYRkFPYmplY3RBcnJheT9uLmNoaWxkcmVuOltuXX1pZigwPT09bi5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSk7aWYoIShyPG4ubGVuZ3RoKSl7YVtzXS5pbmRleD1yLW4ubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfXtjb25zdCB0PW5bcl07aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgaG49U3ltYm9sKCksQ249U3ltYm9sKCksQm49U3ltYm9sKCksUW49U3ltYm9sKCJfY2hpbGRyZW4iKSxFbj1TeW1ib2woKSx1bj1TeW1ib2woKSxkbj1TeW1ib2woKSxmbj1TeW1ib2woKSxwbj1TeW1ib2woKSxtbj1TeW1ib2woKSx5bj1TeW1ib2woKSx3bj1TeW1ib2woKSxibj1TeW1ib2woKSxEbj1TeW1ib2woInBhcmVudCIpLEZuPVN5bWJvbCgpLFNuPVN5bWJvbCgpLGtuPVN5bWJvbCgpO2xldCBSbj0wO2NvbnN0IE5uPUFuLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7dGhpc1trc109ZTt0aGlzW1JzXT10O3RoaXNbeW5dPWk7dGhpc1tEbl09bnVsbDt0aGlzW1FuXT1bXTt0aGlzW3pzXT1gJHt0fSR7Um4rK31gO3RoaXNbQ3NdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGk9bnVsbDtmb3IoY29uc3R7bmFtZTphLGluZGV4OnJ9b2YgZSl7Zm9yKGxldCBlPTAscz1pc0Zpbml0ZShyKT9yOjA7ZTw9cztlKyspe2NvbnN0IGU9dFtrc109PT1Obj8tMTp0W2tzXTtpPW5ldyBYbWxPYmplY3QoZSxhKTt0W1lyXShpKX10PWl9cmV0dXJuIGl9W0dzXShlKXtpZighdGhpc1t5bl18fCF0aGlzW01zXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbUnNdLGk9dGhpc1t0XTtpZighKGkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1pJiZ0aGlzW0pzXShpKTt0aGlzW3RdPWU7dGhpc1tZcl0oZSk7cmV0dXJuITB9aWYoaS5wdXNoKGUpKXt0aGlzW1lyXShlKTtyZXR1cm4hMH1sZXQgYT0iIjt0aGlzLmlkP2E9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihhPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW1JzXX0iJHthfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtNc10oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtSc10pJiZlW2tzXT09PXRoaXNba3NdfVt5c10oKXtyZXR1cm4hMX1bSnJdKCl7cmV0dXJuITF9W2RzXSgpe3JldHVybiExfVtmc10oKXtyZXR1cm4hMX1bTHNdKCl7dGhpcy5wYXJhJiZ0aGlzW2hzXSgpW1pyXS5wYXJhU3RhY2sucG9wKCl9W0hzXSgpe3RoaXNbaHNdKClbWnJdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W1RzXShlKXt0aGlzLmlkJiZ0aGlzW2tzXT09PUFuLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtoc10oKXtyZXR1cm4gdGhpc1tDc10udGVtcGxhdGV9W3dzXSgpe3JldHVybiExfVtic10oKXtyZXR1cm4hMX1bWXJdKGUpe2VbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChlKTshZVtDc10mJnRoaXNbQ3NdJiYoZVtDc109dGhpc1tDc10pfVtKc10oZSl7Y29uc3QgdD10aGlzW1FuXS5pbmRleE9mKGUpO3RoaXNbUW5dLnNwbGljZSh0LDEpfVtCc10oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1bT3NdKGUpe31bVXNdKGUpe31bX3JdKCl7fVtUcl0oZSl7ZGVsZXRlIHRoaXNbeW5dO2lmKHRoaXNbT3JdKXtlLmNsZWFuKHRoaXNbT3JdKTtkZWxldGUgdGhpc1tPcl19fVtFc10oZSl7cmV0dXJuIHRoaXNbUW5dLmluZGV4T2YoZSl9W3VzXShlLHQpe3RbRG5dPXRoaXM7dGhpc1tRbl0uc3BsaWNlKGUsMCx0KTshdFtDc10mJnRoaXNbQ3NdJiYodFtDc109dGhpc1tDc10pfVtEc10oKXtyZXR1cm4hdGhpcy5uYW1lfVtTc10oKXtyZXR1cm4iIn1banNdKCl7cmV0dXJuIDA9PT10aGlzW1FuXS5sZW5ndGg/dGhpc1tqcl06dGhpc1tRbl0ubWFwKChlPT5lW2pzXSgpKSkuam9pbigiIil9Z2V0W0JuXSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybiBzaGFkb3codGhpcyxCbixlLl9hdHRyaWJ1dGVzKX1bbXNdKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W2xzXSgpfXJldHVybiExfVtsc10oKXtyZXR1cm4gdGhpc1tEbl19W2NzXSgpe3JldHVybiB0aGlzW2xzXSgpfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW2VdOnRoaXNbUW5dfVtWcl0oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tqcl0mJihlLiRjb250ZW50PXRoaXNbanJdKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgaT10aGlzW3RdO251bGwhPT1pJiYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdD9lW3RdPWlbVnJdKCk6aSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2kuaXNFbXB0eSgpfHwoZVt0XT1pLmR1bXAoKSk6ZVt0XT1pKX1yZXR1cm4gZX1bX3NdKCl7cmV0dXJuIG51bGx9W1ZzXSgpe3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfSpbZ3NdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpc1tvc10oKSl5aWVsZCBlfSpbZm5dKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tnc10oKSlpZighZXx8dD09PWUuaGFzKGlbUnNdKSl7Y29uc3QgZT10aGlzW2VzXSgpLHQ9aVtWc10oZSk7dC5zdWNjZXNzfHwodGhpc1tacl0uZmFpbGluZ05vZGU9aSk7eWllbGQgdH19W3pyXSgpe3JldHVybiBudWxsfVt2cl0oZSx0KXt0aGlzW1pyXS5jaGlsZHJlbi5wdXNoKGUpfVtlc10oKXt9W0tyXSh7ZmlsdGVyOmU9bnVsbCxpbmNsdWRlOnQ9ITB9KXtpZih0aGlzW1pyXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tlc10oKSx0PXRoaXNbWnJdLmZhaWxpbmdOb2RlW1ZzXShlKTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbWnJdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tacl0uZ2VuZXJhdG9yPXRoaXNbZm5dKGUsdCk7Zm9yKDs7KXtjb25zdCBlPXRoaXNbWnJdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCl9dGhpc1tacl0uZ2VuZXJhdG9yPW51bGw7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9W3FzXShlKXt0aGlzW1NuXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bbW5dKGUpe2NvbnN0IHQ9dGhpc1tCbl0saT10aGlzW1NuXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWkuaGFzKGUpKSl9W1lzXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0paVtGbl0oZSx0KX1bRm5dKGUsdCl7Y29uc3QgaT10aGlzW3BuXShlLHQpO2k/dGhpc1tobl0oaSxlLHQpOnRoaXNbWXNdKGUsdCl9W3BuXShlLHQpe2NvbnN0e3VzZTppLHVzZWhyZWY6YX09dGhpcztpZighaSYmIWEpcmV0dXJuIG51bGw7bGV0IHI9bnVsbCxzPW51bGwsbj1udWxsLG89aTtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cz1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9zPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/bj1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKG49YS5zbGljZSgyKSl9ZWxzZSBpLnN0YXJ0c1dpdGgoIiMiKT9uPWkuc2xpY2UoMSk6cz1pO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihuKXI9ZS5nZXQobik7ZWxzZXtyPXNlYXJjaE5vZGUoZS5nZXQodnMpLHRoaXMscywhMCwhMSk7ciYmKHI9clswXSl9aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihyW1JzXSE9PXRoaXNbUnNdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3JbUnNdfSAhPT0gJHt0aGlzW1JzXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocikpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHIpO2NvbnN0IGc9cltwbl0oZSx0KTtnJiZyW2huXShnLGUsdCk7cltZc10oZSx0KTt0LmRlbGV0ZShyKTtyZXR1cm4gcn1baG5dKGUsdCxpKXtpZihpLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2pyXSYmZVtqcl0mJih0aGlzW2pyXT1lW2pyXSk7bmV3IFNldChpKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1ttbl0oZVtTbl0pKXt0aGlzW3RdPWVbdF07dGhpc1tTbl0mJnRoaXNbU25dLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tCbl0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHI9dGhpc1thXSxzPWVbYV07aWYociBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiByW1FuXSllW0ZuXSh0LGkpO2ZvcihsZXQgYT1yW1FuXS5sZW5ndGgsbj1zW1FuXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgcz1lW1FuXVthXVtQcl0oKTtpZighci5wdXNoKHMpKWJyZWFrO3NbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChzKTtzW0ZuXSh0LGkpfX1lbHNlIGlmKG51bGw9PT1yKXtpZihudWxsIT09cyl7Y29uc3QgZT1zW1ByXSgpO2VbRG5dPXRoaXM7dGhpc1thXT1lO3RoaXNbUW5dLnB1c2goZSk7ZVtGbl0odCxpKX19ZWxzZXtyW1lzXSh0LGkpO3MmJnJbaG5dKHMsdCxpKX19fXN0YXRpY1tFbl0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoKGU9PlhGQU9iamVjdFtFbl0oZSkpKToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lP09iamVjdC5hc3NpZ24oe30sZSk6ZX1bUHJdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoe3NoYWRvdyhlLHQsdGhpc1t0XSl9ZVt6c109YCR7ZVtSc119JHtSbisrfWA7ZVtRbl09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbQm5dLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbRW5dKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1t0XTtlW3RdPWkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoaVt3bl0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pe2NvbnN0IGk9dFtSc10sYT10W1ByXSgpO2VbUW5dLnB1c2goYSk7YVtEbl09ZTtudWxsPT09ZVtpXT9lW2ldPWE6ZVtpXVtRbl0ucHVzaChhKX1yZXR1cm4gZX1bb3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tRbl0uZmlsdGVyKCh0PT50W1JzXT09PWUpKTp0aGlzW1FuXX1bdHNdKGUpe3JldHVybiB0aGlzW2VdfVtpc10oZSx0LGk9ITApe3JldHVybiBBcnJheS5mcm9tKHRoaXNbYXNdKGUsdCxpKSl9Klthc10oZSx0LGk9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0pe2lbUnNdPT09ZSYmKHlpZWxkIGkpO2kubmFtZT09PWUmJih5aWVsZCBpKTsodHx8aVtEc10oKSkmJih5aWVsZCppW2FzXShlLHQsITEpKX1pJiZ0aGlzW0JuXS5oYXMoZSkmJih5aWVsZCBuZXcgWEZBQXR0cmlidXRlKHRoaXMsZSx0aGlzW2VdKSl9ZWxzZSB5aWVsZCB0aGlzW0RuXX19Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbd25dPWU7dGhpc1tRbl09W119Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITF9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMH1wdXNoKGUpe2lmKHRoaXNbUW5dLmxlbmd0aDw9dGhpc1t3bl0pe3RoaXNbUW5dLnB1c2goZSk7cmV0dXJuITB9d2FybihgWEZBIC0gbm9kZSAiJHtlW1JzXX0iIGFjY2VwdHMgbm8gbW9yZSB0aGFuICR7dGhpc1t3bl19IGNoaWxkcmVuYCk7cmV0dXJuITF9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tRbl0ubGVuZ3RofWR1bXAoKXtyZXR1cm4gMT09PXRoaXNbUW5dLmxlbmd0aD90aGlzW1FuXVswXVtWcl0oKTp0aGlzW1FuXS5tYXAoKGU9PmVbVnJdKCkpKX1bUHJdKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1t3bl0pO2VbUW5dPXRoaXNbUW5dLm1hcCgoZT0+ZVtQcl0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW1FuXX1jbGVhcigpe3RoaXNbUW5dLmxlbmd0aD0wfX1jbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXNbRG5dPWU7dGhpc1tSc109dDt0aGlzW2pyXT1pO3RoaXNbV3JdPSExO3RoaXNbenNdPSJhdHRyaWJ1dGUiK1JuKyt9W2xzXSgpe3JldHVybiB0aGlzW0RuXX1bcHNdKCl7cmV0dXJuITB9W3JzXSgpe3JldHVybiB0aGlzW2pyXS50cmltKCl9W09zXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbanJdPWUudG9TdHJpbmcoKX1banNdKCl7cmV0dXJuIHRoaXNbanJdfVttc10oZSl7cmV0dXJuIHRoaXNbRG5dPT09ZXx8dGhpc1tEbl1bbXNdKGUpfX1jbGFzcyBYbWxPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGk9e30pe3N1cGVyKGUsdCk7dGhpc1tqcl09IiI7dGhpc1t1bl09bnVsbDtpZigiI3RleHQiIT09dCl7Y29uc3QgZT1uZXcgTWFwO3RoaXNbQ25dPWU7Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhpKSllLnNldCh0LG5ldyBYRkFBdHRyaWJ1dGUodGhpcyx0LGEpKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1pW05zXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW3VuXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW3VuXT0hMCkpfX10aGlzW1dyXT0hMX1bWnNdKGUpe2NvbnN0IHQ9dGhpc1tSc107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2pyXSkpO3JldHVybn1jb25zdCBpPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNba3NdPT09Tm4/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke2l9YCk7Zm9yKGNvbnN0W3QsaV1vZiB0aGlzW0NuXS5lbnRyaWVzKCkpe2NvbnN0IGE9dXRmOFN0cmluZ1RvU3RyaW5nKHQpO2UucHVzaChgICR7YX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcoaVtqcl0pfSJgKX1udWxsIT09dGhpc1t1bl0mJih0aGlzW3VuXT9lLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFWYWx1ZSInKTplLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFHcm91cCInKSk7aWYodGhpc1tqcl18fDAhPT10aGlzW1FuXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbanJdKSJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0/ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbanJdKSk6dGhpc1tqcl1bWnNdKGUpO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pdFtac10oZSk7ZS5wdXNoKGA8LyR7YX0ke2l9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtHc10oZSl7aWYodGhpc1tqcl0pe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTt0aGlzW2pyXT0iIn10aGlzW1lyXShlKTtyZXR1cm4hMH1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXtpZih0aGlzW2pyXSYmdGhpc1tRbl0ubGVuZ3RoPjApe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTtkZWxldGUgdGhpc1tqcl19fVtWc10oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tSc10/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tqcl19KTpIVE1MUmVzdWx0LkVNUFRZfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW1FuXS5maWx0ZXIoKHQ9PnRbUnNdPT09ZSkpOnRoaXNbUW5dfVtBc10oKXtyZXR1cm4gdGhpc1tDbl19W3RzXShlKXtjb25zdCB0PXRoaXNbQ25dLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbb3NdKGUpfSpbYXNdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7aSYmKHlpZWxkIGkpO2Zvcihjb25zdCBpIG9mIHRoaXNbUW5dKXtpW1JzXT09PWUmJih5aWVsZCBpKTt0JiYoeWllbGQqaVthc10oZSx0KSl9fSpbJHJdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7IWl8fHQmJmlbV3JdfHwoeWllbGQgaSk7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0peWllbGQqaVskcl0oZSx0KX0qW25zXShlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tRbl0pe2FbUnNdIT09ZXx8aSYmYVtXcl18fCh5aWVsZCBhKTt0JiYoeWllbGQqYVtuc10oZSx0LGkpKX19W3BzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aHx8dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ6dGhpc1t1bl19W3JzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aD90aGlzW2pyXS50cmltKCk6dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ/dGhpc1tRbl1bMF1banNdKCkudHJpbSgpOm51bGw6dGhpc1tqcl0udHJpbSgpfVtPc10oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2pyXT1lLnRvU3RyaW5nKCl9W1ZyXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNba3NdKTt0aGlzW2pyXSYmKHQuJGNvbnRlbnQ9dGhpc1tqcl0pO3QuJG5hbWU9dGhpc1tSc107dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzW1FuXSl0LmNoaWxkcmVuLnB1c2goaVtWcl0oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLGldb2YgdGhpc1tDbl0pdC5hdHRyaWJ1dGVzW2VdPWlbanJdO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW2pyXT0iIn1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUsdCk7dGhpc1tibl09aX1bX3JdKCl7dGhpc1tqcl09Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW2pyXSxkZWZhdWx0VmFsdWU6dGhpc1tibl1bMF0sdmFsaWRhdGU6ZT0+dGhpc1tibl0uaW5jbHVkZXMoZSl9KX1bVHJdKGUpe3N1cGVyW1RyXShlKTtkZWxldGUgdGhpc1tibl19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoZSx0KTt0aGlzW2RuXT1pO3RoaXNba25dPWF9W19yXSgpe3RoaXNbanJdPWdldEludGVnZXIoe2RhdGE6dGhpc1tqcl0sZGVmYXVsdFZhbHVlOnRoaXNbZG5dLHZhbGlkYXRlOnRoaXNba25dfSl9W1RyXShlKXtzdXBlcltUcl0oZSk7ZGVsZXRlIHRoaXNbZG5dO2RlbGV0ZSB0aGlzW2tuXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsKGU9PjE9PT1lKSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLChlPT4wPT09ZSkpfX1mdW5jdGlvbiBtZWFzdXJlVG9TdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyIwcHgiOk51bWJlci5pc0ludGVnZXIoZSk/YCR7ZX1weGA6YCR7ZS50b0ZpeGVkKDIpfXB4YH1jb25zdCBHbj17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGk9ZVtjc10oKTtpZihpJiYoIWkubGF5b3V0fHwicG9zaXRpb24iPT09aS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2xldCBhPWUudztjb25zdCByPWUuaDtpZihpLmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCB0PWlbWnJdLHI9ZS5jb2xTcGFuO2xldCBzO2lmKC0xPT09cil7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPTB9ZWxzZXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49KHQuY3VycmVudENvbHVtbitlLmNvbFNwYW4pJXQuY29sdW1uV2lkdGhzLmxlbmd0aH1pc05hTihzKXx8KGE9ZS53PXMpfXQud2lkdGg9IiIhPT1hP21lYXN1cmVUb1N0cmluZyhhKToiYXV0byI7dC5oZWlnaHQ9IiIhPT1yP21lYXN1cmVUb1N0cmluZyhyKToiYXV0byJ9LHBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2lmKCFpPy5sYXlvdXR8fCJwb3NpdGlvbiI9PT1pLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW1JzXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bX3NdKCkubWFyZ2luKX19O2Z1bmN0aW9uIHNldE1pbk1heERpbWVuc2lvbnMoZSx0KXtpZigicG9zaXRpb24iPT09ZVtjc10oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsaSxhLHIscyl7Y29uc3Qgbj1uZXcgVGV4dE1lYXN1cmUodCxpLGEscik7InN0cmluZyI9PXR5cGVvZiBlP24uYWRkU3RyaW5nKGUpOmVbeHNdKG4pO3JldHVybiBuLmNvbXB1dGUocyl9ZnVuY3Rpb24gbGF5b3V0Tm9kZShlLHQpe2xldCBpPW51bGwsYT1udWxsLHI9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgcz0wLG49MDtpZihlLm1hcmdpbil7cz1lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDtuPWUubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0fWxldCBvPW51bGwsZz1udWxsO2lmKGUucGFyYSl7Zz1PYmplY3QuY3JlYXRlKG51bGwpO289IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0O2cudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZTtnLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3c7Zy5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdDtnLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0fWxldCBjPWUuZm9udDtpZighYyl7Y29uc3QgdD1lW2hzXSgpO2xldCBpPWVbbHNdKCk7Zm9yKDtpJiZpIT09dDspe2lmKGkuZm9udCl7Yz1pLmZvbnQ7YnJlYWt9aT1pW2xzXSgpfX1jb25zdCBsPShlLnd8fHQud2lkdGgpLXMsaD1lW0NzXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtqcl0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtqcl0sYyxnLG8saCxsKTthPXQud2lkdGg7aT10LmhlaWdodDtyPXQuaXNCcm9rZW59ZWxzZXtjb25zdCB0PWUudmFsdWVbanNdKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsYyxnLG8saCxsKTthPWUud2lkdGg7aT1lLmhlaWdodDtyPWUuaXNCcm9rZW59fW51bGw9PT1hfHxlLnd8fChhKz1zKTtudWxsPT09aXx8ZS5ofHwoaSs9bil9cmV0dXJue3c6YSxoOmksaXNCcm9rZW46cn19ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGkpe2xldCBhO2lmKCIiIT09ZS53JiYiIiE9PWUuaClhPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHI9ZS53O2lmKCIiPT09cil7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW2NzXSgpO3I9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIHI9TWF0aC5taW4oZS5tYXhXLGkud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcocil9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW2NzXSgpO3M9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQuaD8wOmUubWluSH1lbHNlIHM9TWF0aC5taW4oZS5tYXhILGkuaGVpZ2h0KTt0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhzKX1hPVtlLngsZS55LHIsc119cmV0dXJuIGF9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbY3NdKCk7aWYodC5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgaT10W1pyXSxhPWUuY29sU3BhbjtsZXQgcjtyPS0xPT09YT9pLmNvbHVtbldpZHRocy5zbGljZShpLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6aS5jb2x1bW5XaWR0aHMuc2xpY2UoaS5jdXJyZW50Q29sdW1uLGkuY3VycmVudENvbHVtbithKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKHIpfHwoZS53PXIpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWVbYV07aWYobnVsbCE9PXQpaWYoR24uaGFzT3duUHJvcGVydHkoYSkpR25bYV0oZSxpKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtfc10oKTtlP09iamVjdC5hc3NpZ24oaSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7YX0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gaX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczppfT10LHtzdHlsZTphfT1pLHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2kuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6aSxpbnNldHM6c309ZS5ib3JkZXJbWnJdO2xldCBuLG8sZz1zWzBdLGM9c1szXTtjb25zdCBsPXNbMF0rc1syXSxoPXNbMV0rc1szXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpnLT1pWzBdLzI7Yy09aVszXS8yO249YGNhbGMoMTAwJSArICR7KGlbMV0raVszXSkvMi1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHsoaVswXStpWzJdKS8yLWx9cHgpYDticmVhaztjYXNlImxlZnQiOmctPWlbMF07Yy09aVszXTtuPWBjYWxjKDEwMCUgKyAke2lbMV0raVszXS1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHtpWzBdK2lbMl0tbH1weClgO2JyZWFrO2Nhc2UicmlnaHQiOm49aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUiO289bD9gY2FsYygxMDAlIC0gJHtsfXB4KWA6IjEwMCUifWNvbnN0IEM9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJkMucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgUT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpDLHN0eWxlOnt0b3A6YCR7Z31weGAsbGVmdDpgJHtjfXB4YCx3aWR0aDpuLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1hW2VdKXtRLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmNoaWxkcmVuLnB1c2goUSx0KX1lbHNlIHIuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1hW2VdKXtyLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PWEucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSBhLnBvc2l0aW9uO2lmKGEuYWxpZ25TZWxmKXtyLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPWEuYWxpZ25TZWxmO2RlbGV0ZSBhLmFsaWduU2VsZn1yZXR1cm4gcn1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBpPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLGE9Z2V0TWVhc3VyZW1lbnQoZVtpXSwiMHB4Iik7ZVtpXT1hLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbaHNdKClbWnJdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxpKXtpZihpLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBhPWdldEN1cnJlbnRQYXJhKGUpO2lmKGEpe2NvbnN0IGU9aS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChhLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PWFbX3NdKCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyh0KSlpIGluIGV8fChlW2ldPWEpfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsaSxhKXtpZighaSl7ZGVsZXRlIGEuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgcj1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTthLmZvbnRGYW1pbHk9YCIke3J9ImA7Y29uc3Qgcz1pLmZpbmQocik7aWYocyl7Y29uc3R7Zm9udEZhbWlseTppfT1zLnJlZ3VsYXIuY3NzRm9udEluZm87aSE9PXImJihhLmZvbnRGYW1pbHk9YCIke2l9ImApO2NvbnN0IG49Z2V0Q3VycmVudFBhcmEodCk7aWYobiYmIiIhPT1uLmxpbmVIZWlnaHQpcmV0dXJuO2lmKGEubGluZUhlaWdodClyZXR1cm47Y29uc3Qgbz1zZWxlY3RGb250KGUscyk7byYmKGEubGluZUhlaWdodD1NYXRoLm1heCgxLjIsby5saW5lSGVpZ2h0KSl9fWZ1bmN0aW9uIGZpeFVSTChlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW1pyXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtacl0uYXR0cmlidXRlcyxjaGlsZHJlbjplW1pyXS5jaGlsZHJlbn07aWYoZVtacl0uZmFpbGluZ05vZGUpe2NvbnN0IGk9ZVtacl0uZmFpbGluZ05vZGVbenJdKCk7aSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFtpXSkpOnQuY2hpbGRyZW4ucHVzaChpKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9ZnVuY3Rpb24gYWRkSFRNTChlLHQsaSl7Y29uc3QgYT1lW1pyXSxyPWEuYXZhaWxhYmxlU3BhY2UsW3MsbixvLGddPWk7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjphLndpZHRoPU1hdGgubWF4KGEud2lkdGgscytvKTthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxuK2cpO2EuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjppZighYS5saW5lfHwxPT09YS5hdHRlbXB0KXthLmxpbmU9Y3JlYXRlTGluZShlLFtdKTthLmNoaWxkcmVuLnB1c2goYS5saW5lKTthLm51bWJlckluTGluZT0wfWEubnVtYmVySW5MaW5lKz0xO2EubGluZS5jaGlsZHJlbi5wdXNoKHQpO2lmKDA9PT1hLmF0dGVtcHQpe2EuY3VycmVudFdpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGEucHJldkhlaWdodCtnKX1lbHNle2EuY3VycmVudFdpZHRoPW87YS5wcmV2SGVpZ2h0PWEuaGVpZ2h0O2EuaGVpZ2h0Kz1nO2EuYXR0ZW1wdD0wfWEud2lkdGg9TWF0aC5tYXgoYS53aWR0aCxhLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93Ijp7YS5jaGlsZHJlbi5wdXNoKHQpO2Eud2lkdGgrPW87YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsZyk7Y29uc3QgZT1tZWFzdXJlVG9TdHJpbmcoYS5oZWlnaHQpO2Zvcihjb25zdCB0IG9mIGEuY2hpbGRyZW4pdC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1lO2JyZWFrfWNhc2UidGFibGUiOmNhc2UidGIiOmEud2lkdGg9TWF0aC5taW4oci53aWR0aCxNYXRoLm1heChhLndpZHRoLG8pKTthLmhlaWdodCs9ZzthLmNoaWxkcmVuLnB1c2godCl9fWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtacl0uYXZhaWxhYmxlU3BhY2UsaT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGE9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtacl0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1hLWVbWnJdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtaS1lW1pyXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtacl0uY29sdW1uV2lkdGhzLnNsaWNlKGVbWnJdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbaHNdKClbWnJdLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgaT1lW2NzXSgpLGE9aVtacl0/LmF0dGVtcHR8fDAsWyxyLHMsbl09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGksYT0iIj09PWUudz9OYU46ZS53LHI9IiI9PT1lLmg/TmFOOmUuaCxbcyxuXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltzLG5dPVthLzIscl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcyxuXT1bMCxyXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcyxuXT1bYSxyXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3Msbl09W2EvMixyLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3Msbl09WzAsci8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcyxuXT1bYSxyLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcyxuXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltzLG5dPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGldPVstcywtbl07YnJlYWs7Y2FzZSA5MDpbdCxpXT1bLW4sc107W2Escl09W3IsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LGldPVtzLG5dO1thLHJdPVstYSwtcl07YnJlYWs7Y2FzZSAyNzA6W3QsaV09W24sLXNdO1thLHJdPVstcixhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkraStNYXRoLm1pbigwLHIpLE1hdGguYWJzKGEpLE1hdGguYWJzKHIpXX0oZSk7c3dpdGNoKGkubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChuLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mnx8MD09PWlbWnJdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fCFpW2JzXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW2hzXSgpW1pyXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVt3c10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWlbYnNdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQobi10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChuK3ItdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBuK3I+ZVtoc10oKVtacl0uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBNbj1Bbi50ZW1wbGF0ZS5pZCxVbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhuPS9eSChcZCspJC8sTG49bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxIbj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3NzXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtZcl0odCk7ZS52YWx1ZT10fWUudmFsdWVbT3NdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbb3NdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtnc10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWlmKGVbV3NdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBpIG9mIGUudHJhdmVyc2FsW29zXSgpKWlmKCJuZXh0Ij09PWkub3BlcmF0aW9uKXt0PWk7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWNvbnN0IGk9ZVtoc10oKTtlW1dzXT0rK2lbV3NdO2NvbnN0IGE9aVtLc10odC5yZWYsZSk7aWYoIWEpcmV0dXJuO2U9YVswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBpPWUuYXNzaXN0O2lmKGkpe2NvbnN0IGU9aVtWc10oKTtlJiYodC50aXRsZT1lKTtjb25zdCBhPWkucm9sZS5tYXRjaCh4bik7aWYoYSl7Y29uc3QgZT0iaGVhZGluZyIsaT1hWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1pfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGk9ZVtsc10oKTsicm93Ij09PWkubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1pLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tqcl0/dC5zcGVha1tqcl06dC50b29sVGlwP3QudG9vbFRpcFtqcl06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO2lmKG51bGw9PT10W1pyXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtacl0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W1pyXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO3RbWnJdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtacl0pcmV0dXJuITE7ZVtacl09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW2hzXSgpO2xldCBpPW51bGw7aWYoZS50YXJnZXQpe2k9dFtLc10oZS50YXJnZXQsZVtsc10oKSk7aWYoIWkpcmV0dXJuITE7aT1pWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTphLGN1cnJlbnRDb250ZW50QXJlYTpyfT10W1pyXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtpIGluc3RhbmNlb2YgUGFnZUFyZWF8fChpPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbWnJdLnRhcmdldD1pfHxhO3JldHVybiEwfWlmKGkmJmkhPT1hKXtlW1pyXS50YXJnZXQ9aTtyZXR1cm4hMH1yZXR1cm4hMX1pIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChpPW51bGwpO2NvbnN0IHM9aSYmaVtsc10oKTtsZXQgbixvPXM7aWYoZS5zdGFydE5ldylpZihpKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YociksYT1lLmluZGV4T2YoaSk7LTEhPT10JiZ0PGEmJihvPW51bGwpO249YS0xfWVsc2Ugbj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocik7ZWxzZXtpZighaXx8aT09PXIpcmV0dXJuITE7bj1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSktMTtvPXM9PT1hP251bGw6c31lW1pyXS50YXJnZXQ9bztlW1pyXS5pbmRleD1uO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxpKXtjb25zdCBhPWVbaHNdKCkscj1hW1pyXS5ub0xheW91dEZhaWx1cmUscz10W2NzXTt0W2NzXT0oKT0+ZTthW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgbj10W1ZzXShpKTtlW3ZyXShuLmh0bWwsbi5iYm94KTthW1pyXS5ub0xheW91dEZhaWx1cmU9cjt0W2NzXT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtfc10oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGksdGhpcy5maWxsW19zXSgpKTppLmZpbGw9InRyYW5zcGFyZW50IjtpLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2kuc3Ryb2tlPXQuY29sb3I7bGV0IGE7Y29uc3Qgcj17eG1sbnM6VW4sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpVbixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTppfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxzPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtuLG8sZyxjXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07YT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6VW4sZDpgTSAke259ICR7b30gQSA1MCA1MCAwICR7c30gMCAke2d9ICR7Y31gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTppfX07T2JqZWN0LmFzc2lnbihyLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBzPXtuYW1lOiJzdmciLGNoaWxkcmVuOlthXSxhdHRyaWJ1dGVzOnJ9O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3NdfSk7cy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltnc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bRHNdKCl7cmV0dXJuITB9W2ZzXSgpe3JldHVybiEwfVt2cl0oZSx0KXtjb25zdFtpLGEscixzXT10O3RoaXNbWnJdLndpZHRoPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoLGkrcik7dGhpc1tacl0uaGVpZ2h0PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCxhK3MpO3RoaXNbWnJdLmNoaWxkcmVuLnB1c2goZSl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5hdmFpbGFibGVTcGFjZX1bVnNdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGk9e3N0eWxlOnQsaWQ6dGhpc1t6c10sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZpLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGE9W107dGhpc1tacl09e2NoaWxkcmVuOmEsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCByPXRoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXIuc3VjY2Vzcyl7aWYoci5pc0JyZWFrKCkpcmV0dXJuIHI7ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tacl0ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW1pyXS5oZWlnaHQpO2NvbnN0IHM9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOmF9LG49W3RoaXMueCx0aGlzLnksdGhpc1tacl0ud2lkdGgsdGhpc1tacl0uaGVpZ2h0XTtkZWxldGUgdGhpc1tacl07cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzLG4pfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bVnNdKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW2pyXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tqcl0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bc3NdKCl7aWYoIXRoaXNbWnJdKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGk9ZS5sZW5ndGg7aTw0O2krKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxpPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7aVswXT10aGlzLm1hcmdpbi50b3BJbnNldDtpWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDtpWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW1pyXT17d2lkdGhzOnQsaW5zZXRzOmksZWRnZXM6ZX19cmV0dXJuIHRoaXNbWnJdfVtfc10oKXtjb25zdHtlZGdlczplfT10aGlzW3NzXSgpLHQ9ZS5tYXAoKGU9Pntjb25zdCB0PWVbX3NdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oaSx0aGlzLm1hcmdpbltfc10oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW19zXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBpPWUubGVuZ3RoO2k8NDtpKyspZS5wdXNoKHQpfWkuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjppLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmkuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6aS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1pLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2kuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGl9fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bVnNdKGUpe3RoaXNbWnJdPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tsc10oKVtsc10oKSxpPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbenNdLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W2pyXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJmkuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbenNdLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtPc10oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3NzXShlKXtpZighdGhpc1tacl0pe2xldHt3aWR0aDp0LGhlaWdodDppfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppPXRoaXMucmVzZXJ2ZTw9MD9pOnRoaXMucmVzZXJ2ZX10aGlzW1pyXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9KX1yZXR1cm4gdGhpc1tacl19W1ZzXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtWc10oZSkuaHRtbDtpZighdCl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBpPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOml9PXRoaXNbc3NdKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9aX19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCByPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihyLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbTHNdKCk7dGhpcy5yZXNlcnZlPWk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpyLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUoIm1hcmdpbiIpLGk9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1pO2xldCBhLHIscztjb25zdCBuPXRoaXNbbHNdKClbbHNdKCksbz1uLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbi5pdGVtcy5jaGlsZHJlblswXVtWc10oKS5odG1sfHxbXSxnPXtvbjoodm9pZCAwIT09b1swXT9vWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1vWzFdP29bMV06Im9mZiIpLnRvU3RyaW5nKCl9LGM9KG4udmFsdWU/Lltqc10oKXx8Im9mZiIpPT09Zy5vbnx8dm9pZCAwLGw9bltjc10oKSxoPW5benNdO2xldCBDO2lmKGwgaW5zdGFuY2VvZiBFeGNsR3JvdXApe3M9bFt6c107YT0icmFkaW8iO3I9InhmYVJhZGlvIjtDPWxbWHJdPy5benNdfHxsW3pzXX1lbHNle2E9ImNoZWNrYm94IjtyPSJ4ZmFDaGVja2JveCI7Qz1uW1hyXT8uW3pzXXx8blt6c119Y29uc3QgUT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltyXSxzdHlsZTp0LGZpZWxkSWQ6aCxkYXRhSWQ6Qyx0eXBlOmEsY2hlY2tlZDpjLHhmYU9uOmcub24seGZhT2ZmOmcub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07cyYmKFEuYXR0cmlidXRlcy5uYW1lPXMpO2lmKGlzUmVxdWlyZWQobikpe1EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO1EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbUV19KX19Y2xhc3MgQ2hvaWNlTGlzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249Z2V0U3RyaW5nT3B0aW9uKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPWdldFN0cmluZ09wdGlvbihlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT1nZXRJbnRlZ2VyKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtmb250U2l6ZTpgY2FsYygke2kuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LHI9W107aWYoaS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1pLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbj1lLmNoaWxkcmVuW3RdW1ZzXSgpLmh0bWwsbz1lLmNoaWxkcmVuW3NdW1ZzXSgpLmh0bWw7bGV0IGc9ITE7Y29uc3QgYz1pLnZhbHVlPy5banNdKCl8fCIiO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD17bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOnt2YWx1ZTpvW2VdfHxuW2VdLHN0eWxlOmF9LHZhbHVlOm5bZV19O29bZV09PT1jJiYodC5hdHRyaWJ1dGVzLnNlbGVjdGVkPWc9ITApO3IucHVzaCh0KX1nfHxyLnNwbGljZSgwLDAse25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7aGlkZGVuOiEwLHNlbGVjdGVkOiEwfSx2YWx1ZToiICJ9KX1jb25zdCBzPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6aVt6c10sZGF0YUlkOmlbWHJdPy5benNdfHxpW3pzXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGkpKXtzWyJhcmlhLXJlcXVpcmVkIl09ITA7cy5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYocy5tdWx0aXBsZT0hMCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3tuYW1lOiJzZWxlY3QiLGNoaWxkcmVuOnIsYXR0cmlidXRlczpzfV19KX19Y2xhc3MgQ29sb3IgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9Z2V0U3RyaW5nT3B0aW9uKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/ZnVuY3Rpb24gZ2V0Q29sb3IoZSx0PVswLDAsMF0pe2xldFtpLGEscl09dDtpZighZSlyZXR1cm57cjppLGc6YSxiOnJ9O2NvbnN0IHM9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9Pk1hdGgubWluKE1hdGgubWF4KDAscGFyc2VJbnQoZS50cmltKCksMTApKSwyNTUpKSkubWFwKChlPT5pc05hTihlKT8wOmUpKTtpZihzLmxlbmd0aDwzKXJldHVybntyOmksZzphLGI6cn07W2ksYSxyXT1zO3JldHVybntyOmksZzphLGI6cn19KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W0JzXSgpe3JldHVybiExfVtfc10oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W1ZzXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGk9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczppLGlkOnRoaXNbenNdfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKTt0aGlzW2pyXT1lP25ldyBEYXRlKGUpOm51bGx9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2pyXS50cmltKCkpO3RoaXNbanJdPWlzTmFOKGUpP251bGw6ZX1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy53LGk9dGhpcy5oLHt3OmEsaDpyLGlzQnJva2VuOnN9PWxheW91dE5vZGUodGhpcyxlKTtpZihhJiYiIj09PXRoaXMudyl7aWYocyYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1hfXImJiIiPT09dGhpcy5oJiYodGhpcy5oPXIpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbj10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbik7aWYobi5tYXJnaW4pe24ucGFkZGluZz1uLm1hcmdpbjtkZWxldGUgbi5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGc9e3N0eWxlOm4saWQ6dGhpc1t6c10sY2xhc3M6b307dGhpcy5uYW1lJiYoZy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgYz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmcsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgbD1jb21wdXRlQmJveCh0aGlzLGMsZSksaD10aGlzLnZhbHVlP3RoaXMudmFsdWVbVnNdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09aCl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX1jLmNoaWxkcmVuLnB1c2goaCk7c2V0UGFyYSh0aGlzLG4saCk7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW19zXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtkc10oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W0dzXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVba3NdPT09QW4ueGh0bWwuaWQpe3RoaXNbanJdPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbanJdPWU7cmV0dXJuITB9cmV0dXJuITF9W1ZzXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbanJdP3RoaXNbanJdW1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W2ZzXSgpe3JldHVybiEwfVtCc10oKXtyZXR1cm4hMH1bT3NdKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtZcl0oZSk7dC52YWx1ZT1lfXQudmFsdWVbT3NdKGUpfX1bYnNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJnRoaXNbWnJdLm51bWJlckluTGluZT4wfHx0aGlzW2xzXSgpW2JzXSgpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtacl0ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3pyXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W3ZyXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtlc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W1ZzXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6aSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1t3c10oKTthfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCByPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tjc10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tacl0uY29sdW1uV2lkdGhzPWU7dGhpc1tacl0uY3VycmVudENvbHVtbj0wfX1jb25zdCBzPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbj1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmbi5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZuLnB1c2goInhmYVByaW50T25seSIpO2kuc3R5bGU9cztpLmNsYXNzPW47dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tIc10oKTtjb25zdCBnPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGM9Zz8yOjE7Zm9yKDt0aGlzW1pyXS5hdHRlbXB0PGM7dGhpc1tacl0uYXR0ZW1wdCsrKXtnJiYxPT09dGhpc1tacl0uYXR0ZW1wdCYmKHRoaXNbWnJdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbS3JdKHtmaWx0ZXI6cixpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW0xzXSgpO3JldHVybiBlfWlmKGcmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiYwPT09dGhpc1tacl0ubnVtYmVySW5MaW5lJiYhdGhpc1toc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW1pyXS5hdHRlbXB0PWM7YnJlYWt9fXRoaXNbTHNdKCk7YXx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW1pyXS5hdHRlbXB0PT09Yyl7YXx8ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IGw9MCxoPTA7aWYodGhpcy5tYXJnaW4pe2w9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBDPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK2wsdGhpcy53fHwwKSxRPU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtoLHRoaXMuaHx8MCksRT1bdGhpcy54LHRoaXMueSxDLFFdOyIiPT09dGhpcy53JiYocy53aWR0aD1tZWFzdXJlVG9TdHJpbmcoQykpOyIiPT09dGhpcy5oJiYocy5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKFEpKTtjb25zdCB1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2RlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxFKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bZnNdKCl7cmV0dXJuITB9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVtDc109dGhpc1tDc107dGhpc1tZcl0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtZcl0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW1pyXTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvbltWc10oZSkuaHRtbDpudWxsLGk9dGhpcy53LGE9dGhpcy5oO2xldCByPTAscz0wO2lmKHRoaXMubWFyZ2luKXtyPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3M9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG49bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsaT1udWxsLGE9MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilhPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6aX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXthPXQ7bz1pfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGk9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLGE9ZVtDc10uZm9udEZpbmRlci5maW5kKHQpO2k9c2VsZWN0Rm9udChlLGEpfWlmKCFpKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IGE9ZS5zaXplfHwxMCxyPWkubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGkubGluZUhlaWdodCk6MS4yLHM9dm9pZCAwPT09aS5saW5lR2FwPy4yOmkubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpyKmEsbGluZUdhcDpzKmEsbGluZU5vR2FwOk1hdGgubWF4KDEsci1zKSphfX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9bj1nZXRCb3JkZXJEaW1zKHRoaXMudWlbc3NdKCkpO2ErPW4udztvKz1uLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnIsaDpzLGlzQnJva2VuOm59PXRoaXMuY2FwdGlvbltzc10oZSk7aWYobiYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9cjtpPXM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppKz1vfX1lbHNle3Q9YTtpPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXI7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGkmJiIiPT09dGhpcy5oKXtpKz1zO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxpP2k6dGhpcy5taW5IKX19dGhpc1tMc10oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWk7dGhpcy5oPWE7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgZz1bInhmYUZpZWxkIl07dGhpcy5mb250JiZnLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmZy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBjPXtzdHlsZTpvLGlkOnRoaXNbenNdLGNsYXNzOmd9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGcpO3RoaXMubmFtZSYmKGMueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGw9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46bH07YXBwbHlBc3Npc3QodGhpcyxjKTtjb25zdCBDPXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW19zXSgpOm51bGwsUT1jb21wdXRlQmJveCh0aGlzLGgsZSksRT10aGlzLnVpW1ZzXSgpLmh0bWw7aWYoIUUpe09iamVjdC5hc3NpZ24obyxDKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX10aGlzW1dzXSYmKEUuY2hpbGRyZW4/LlswXT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tXc106RS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbV3NdKTtFLmF0dHJpYnV0ZXMuc3R5bGV8fChFLmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IHU9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PUUuY2hpbGRyZW4ubGVuZ3RoJiYoW3VdPUUuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oRS5hdHRyaWJ1dGVzLnN0eWxlLEMpfWVsc2UgT2JqZWN0LmFzc2lnbihvLEMpO2wucHVzaChFKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KUUuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW1ZzXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW2pzXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3NzXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW1ZzXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1FLmNoaWxkcmVuWzBdLm5hbWU/RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmRS5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe249bnx8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3NzXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bc3NdKGUpLmgpO2NvbnN0IGk9dGhpcy5oLXQtcy1uLmg7RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoaSl9ZWxzZSBFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn11JiZFLmNoaWxkcmVuLnB1c2godSk7aWYoIXQpe0UuYXR0cmlidXRlcy5jbGFzcyYmRS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9aTt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7RS5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCxRKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtFLmF0dHJpYnV0ZXMuY2xhc3N8fChFLmF0dHJpYnV0ZXMuY2xhc3M9W10pO0UuY2hpbGRyZW4uc3BsaWNlKDAsMCx0KTtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9dGhpcy53PWk7dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9fWNsYXNzIEZpbGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZpbGwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubGluZWFyPW51bGw7dGhpcy5wYXR0ZXJuPW51bGw7dGhpcy5yYWRpYWw9bnVsbDt0aGlzLnNvbGlkPW51bGw7dGhpcy5zdGlwcGxlPW51bGx9W19zXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PWVbbHNdKClbbHNdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSJjb2xvciIscj1hO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe2E9ImJhY2tncm91bmQtY29sb3IiO3I9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGkuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe2E9cj0iZmlsbCI7aS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIFhGQU9iamVjdCkpY29udGludWU7Y29uc3Qgcz10W19zXSh0aGlzLmNvbG9yKTtzJiYoaVtzLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPXMpO3JldHVybiBpfWlmKHRoaXMuY29sb3I/LnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3JbX3NdKCk7aVtlLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPWV9cmV0dXJuIGl9fWNsYXNzIEZpbHRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz1nZXRTdHJpbmdPcHRpb24oZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj1nZXRJbnRlZ2VyKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmbG9hdCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tqcl0udHJpbSgpKTt0aGlzW2pyXT1pc05hTihlKT9udWxsOmV9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbanJdP3RoaXNbanJdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyB0ZW1wbGF0ZV9Gb250IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PWdldE1lYXN1cmVtZW50KGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPWdldFN0cmluZ09wdGlvbihlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9Z2V0SW50ZWdlcih7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PWdldFN0cmluZ09wdGlvbihlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzW0NzXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX1bX3NdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz1tZWFzdXJlVG9TdHJpbmcodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKC45OSp0aGlzLnNpemUpO3NldEZvbnRGYW1pbHkodGhpcyx0aGlzLHRoaXNbQ3NdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImhhbmRsZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEh5cGhlbmF0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW1hZ2UiKTt0aGlzLmFzcGVjdD1nZXRTdHJpbmdPcHRpb24oZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtWc10oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhTG4uaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tDc10uaW1hZ2VzJiZ0aGlzW0NzXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW2pyXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPWZ1bmN0aW9uIGZyb21CYXNlNjRVdGlsKGUpe3JldHVybiBVaW50OEFycmF5LmZyb21CYXNlNjQ/VWludDhBcnJheS5mcm9tQmFzZTY0KGUpOnN0cmluZ1RvQnl0ZXMoYXRvYihlKSl9KHRoaXNbanJdKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGldb2YgSG4paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGkpPT50PT09ZVtpXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWk7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBpO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6aT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmk9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmk9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBhPXRoaXNbbHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6aSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6YT9hcmlhTGFiZWwoYVtsc10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bVnNdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbanJdLnRyaW0oKSwxMCk7dGhpc1tqcl09aXNOYU4oZSk/bnVsbDplfVtWc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtWc10oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbb3NdKCkpZS5wdXNoKHRbanNdKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtWc10oKXtjb25zdCBlPXRoaXNbbHNdKClbbHNdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxpPXRbX3NdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHIpO2Euc3Ryb2tlPWkuY29sb3I7bGV0IHMsbixvLGcsYz0iMTAwJSIsbD0iMTAwJSI7aWYoZS53PD1yKXtbcyxuLG8sZ109WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtjPWEuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXIpe1tzLG4sbyxnXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2w9YS5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W3MsbixvLGddPVswLDAsIjEwMCUiLCIxMDAlIl06W3MsbixvLGddPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgaD17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHgxOnMseTE6bix4MjpvLHkyOmcsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbix3aWR0aDpjLGhlaWdodDpsLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaF19KTtoLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgpfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxpbmVhciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b1JpZ2h0IiwidG9Cb3R0b20iLCJ0b0xlZnQiLCJ0b1RvcCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltfc10oKToiIzAwMDAwMCJ9KWB9fWNsYXNzIExvY2tEb2N1bWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bX3JdKCl7dGhpc1tqcl09Z2V0U3RyaW5nT3B0aW9uKHRoaXNbanJdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWFuaWZlc3QiLCEwKTt0aGlzLmFjdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtYXJnaW4iLCEwKTt0aGlzLmJvdHRvbUluc2V0PWdldE1lYXN1cmVtZW50KGUuYm90dG9tSW5zZXQsIjAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVmdEluc2V0PWdldE1lYXN1cmVtZW50KGUubGVmdEluc2V0LCIwIik7dGhpcy5yaWdodEluc2V0PWdldE1lYXN1cmVtZW50KGUucmlnaHRJbnNldCwiMCIpO3RoaXMudG9wSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS50b3BJbnNldCwiMCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtyZXR1cm57bWFyZ2luOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRvcEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMucmlnaHRJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmJvdHRvbUluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWRwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBlcm1pc3Npb25zPWdldEludGVnZXIoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KTt0aGlzLnNpZ25hdHVyZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lZGl1bSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBpPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoaS5sZW5ndGg8NHx8aVsyXTwwfHxpWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbYSxyLHMsbl09aTtyZXR1cm57eDphLHk6cix3aWR0aDpzLGhlaWdodDpufX0oZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPWdldE1lYXN1cmVtZW50KGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9Z2V0TWVhc3VyZW1lbnQoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj1nZXRTdHJpbmdPcHRpb24oZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PWdldFN0cmluZ09wdGlvbihlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgT2NjdXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD9nZXRJbnRlZ2VyKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj9nZXRJbnRlZ2VyKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W1RyXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PXRoaXMubWluOyIiPT09dGhpcy5taW4mJih0aGlzLm1pbj1lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0PzA6MSk7IiI9PT10aGlzLm1heCYmKHRoaXMubWF4PSIiPT09dD9lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0Py0xOjE6dGhpcy5taW4pOy0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pOyIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBUZW1wbGF0ZT8xOnRoaXMubWluKX19Y2xhc3MgT2lkIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvaWQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT2lkcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE92ZXJmbG93IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NzXSgpe2lmKCF0aGlzW1pyXSl7Y29uc3QgZT10aGlzW2xzXSgpLHQ9dGhpc1toc10oKSxpPXRbS3NdKHRoaXMudGFyZ2V0LGUpLGE9dFtLc10odGhpcy5sZWFkZXIsZSkscj10W0tzXSh0aGlzLnRyYWlsZXIsZSk7dGhpc1tacl09e3RhcmdldDppPy5bMF18fG51bGwsbGVhZGVyOmE/LlswXXx8bnVsbCx0cmFpbGVyOnI/LlswXXx8bnVsbCxhZGRMZWFkZXI6ITEsYWRkVHJhaWxlcjohMX19cmV0dXJuIHRoaXNbWnJdfX1jbGFzcyBQYWdlQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz1nZXRTdHJpbmdPcHRpb24oZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPWdldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj1nZXRTdHJpbmdPcHRpb24oZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtGc10oKXtpZighdGhpc1tacl0pe3RoaXNbWnJdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tacl0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3FyXSgpe2RlbGV0ZSB0aGlzW1pyXX1bSXNdKCl7dGhpc1tacl18fCh0aGlzW1pyXT17bnVtYmVyT2ZVc2U6MH0pO2NvbnN0IGU9dGhpc1tsc10oKTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09ZS5yZWxhdGlvbiYmdGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7cmV0dXJuIHRoaXN9cmV0dXJuIGVbSXNdKCl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5zcGFjZXx8e3dpZHRoOjAsaGVpZ2h0OjB9fVtWc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW1pyXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tacl0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbWnJdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tLcl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1t6c10sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W3FyXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVtxcl0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtxcl0oKX1bRnNdKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbWnJdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtJc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9KTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09dGhpcy5yZWxhdGlvbil7aWYodGhpc1tacl0ucGFnZUluZGV4KzE8dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW1pyXS5wYWdlSW5kZXhdW0lzXSgpfWlmKHRoaXNbWnJdLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VTZXRJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbWnJdLnBhZ2VTZXRJbmRleF1bSXNdKCl9aWYodGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7dGhpc1tacl0ucGFnZUluZGV4PS0xO3RoaXNbWnJdLnBhZ2VTZXRJbmRleD0tMTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbbHNdKCk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VTZXQpcmV0dXJuIGVbSXNdKCk7dGhpc1txcl0oKTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbaHNdKClbWnJdLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLGk9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IGE9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT5lLm9kZE9yRXZlbj09PXQmJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pKTtyZXR1cm4gYXx8dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXX19Y2xhc3MgUGFyYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFyYSIsITApO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpbmVIZWlnaHQ9ZS5saW5lSGVpZ2h0P2dldE1lYXN1cmVtZW50KGUubGluZUhlaWdodCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5MZWZ0PWUubWFyZ2luTGVmdD9nZXRNZWFzdXJlbWVudChlLm1hcmdpbkxlZnQsIjBwdCIpOiIiO3RoaXMubWFyZ2luUmlnaHQ9ZS5tYXJnaW5SaWdodD9nZXRNZWFzdXJlbWVudChlLm1hcmdpblJpZ2h0LCIwcHQiKToiIjt0aGlzLm9ycGhhbnM9Z2V0SW50ZWdlcih7ZGF0YTplLm9ycGhhbnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucHJlc2VydmU9ZS5wcmVzZXJ2ZXx8IiI7dGhpcy5yYWRpeE9mZnNldD1lLnJhZGl4T2Zmc2V0P2dldE1lYXN1cmVtZW50KGUucmFkaXhPZmZzZXQsIjBwdCIpOiIiO3RoaXMuc3BhY2VBYm92ZT1lLnNwYWNlQWJvdmU/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUFib3ZlLCIwcHQiKToiIjt0aGlzLnNwYWNlQmVsb3c9ZS5zcGFjZUJlbG93P2dldE1lYXN1cmVtZW50KGUuc3BhY2VCZWxvdywiMHB0Iik6IiI7dGhpcy50YWJEZWZhdWx0PWUudGFiRGVmYXVsdD9nZXRNZWFzdXJlbWVudCh0aGlzLnRhYkRlZmF1bHQpOiIiO3RoaXMudGFiU3RvcHM9KGUudGFiU3RvcHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoKGUsdCk9PnQlMj09MT9nZXRNZWFzdXJlbWVudChlKTplKSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdSaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW19zXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiLGk9InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke2l9KHRvIHRvcCwke2F9KSAke2l9KHRvIHJpZ2h0LCR7YX0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke2l9KDQ1ZGVnLCR7YX0pICR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7aX0oNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke2l9KHRvIHRvcCwke2F9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7aX0odG8gcmlnaHQsJHthfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbX3NdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk6aS5maWxsPSJ0cmFuc3BhcmVudCI7aS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtpLnN0cm9rZT10LmNvbG9yO2NvbnN0IGE9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlbX3NdKCkscj17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6YS5yYWRpdXMscnk6YS5yYWRpdXMsc3R5bGU6aX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbixzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifSx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3JdfSk7ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgUmVmRWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNldFByb3BlcnR5Iik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIn19Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25EYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtyZXR1cm4gZT9lW19zXSgpOiIjRkZGRkZGIn19Y2xhc3MgU3BlYWsgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNwZWFrIik7dGhpcy5kaXNhYmxlPWdldEludGVnZXIoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PWdldFN0cmluZ09wdGlvbihlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihNYXRoLnJvdW5kKGUudmFsdWUuciooMS10KSt0aGlzLnZhbHVlLnIqdCksTWF0aC5yb3VuZChlLnZhbHVlLmcqKDEtdCkrdGhpcy52YWx1ZS5nKnQpLE1hdGgucm91bmQoZS52YWx1ZS5iKigxLXQpK3RoaXMudmFsdWUuYip0KSl9fWNsYXNzIFN1YmZvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPWdldFN0cmluZ09wdGlvbihlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtjc10oKXtjb25zdCBlPXRoaXNbbHNdKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P2VbY3NdKCk6ZX1bZnNdKCl7cmV0dXJuITB9W2JzXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiZ0aGlzW1pyXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tsc10oKVtic10oKX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVt6cl0oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVt2cl0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bZXNdKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbWnJdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW1pyXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtWc10oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYodGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0FmdGVyKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtDc109dGhpc1tDc107dGhpc1tZcl0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW0NzXT10aGlzW0NzXTt0aGlzW1lyXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2VbQ3NdPXRoaXNbQ3NdO3RoaXNbWXJdKGUpO3RoaXMub3ZlcmZsb3cucHVzaChlKX10aGlzW0pzXSh0aGlzLmJyZWFrKTt0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmd2FybigiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW1pyXT8uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmksYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1toc10oKSxyPWFbWnJdLm5vTGF5b3V0RmFpbHVyZSxzPXRoaXNbd3NdKCk7c3x8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgbj1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW2NzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW1pyXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW1pyXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG89dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxnPVsieGZhU3ViZm9ybSJdLGM9bGF5b3V0Q2xhc3ModGhpcyk7YyYmZy5wdXNoKGMpO2kuc3R5bGU9bztpLmNsYXNzPWc7dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3NzXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW0hzXSgpO2NvbnN0IGw9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsaD1sPzI6MTtmb3IoO3RoaXNbWnJdLmF0dGVtcHQ8aDt0aGlzW1pyXS5hdHRlbXB0Kyspe2wmJjE9PT10aGlzW1pyXS5hdHRlbXB0JiYodGhpc1tacl0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tLcl0oe2ZpbHRlcjpuLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbTHNdKCk7cmV0dXJuIGV9aWYobCYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJjA9PT10aGlzW1pyXS5udW1iZXJJbkxpbmUmJiFhW1pyXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbWnJdLmF0dGVtcHQ9aDticmVha319dGhpc1tMc10oKTtzfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2FbWnJdLm5vTGF5b3V0RmFpbHVyZT1yO2lmKHRoaXNbWnJdLmF0dGVtcHQ9PT1oKXt0aGlzLm92ZXJmbG93JiYodGhpc1toc10oKVtacl0ub3ZlcmZsb3dOb2RlPXRoaXMub3ZlcmZsb3cpO3N8fGRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tzc10oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IEM9MCxRPTA7aWYodGhpcy5tYXJnaW4pe0M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7UT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBFPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK0MsdGhpcy53fHwwKSx1PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtRLHRoaXMuaHx8MCksZD1bdGhpcy54LHRoaXMueSxFLHVdOyIiPT09dGhpcy53JiYoby53aWR0aD1tZWFzdXJlVG9TdHJpbmcoRSkpOyIiPT09dGhpcy5oJiYoby5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHUpKTtpZigoIjBweCI9PT1vLndpZHRofHwiMHB4Ij09PW8uaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsaSk7Y29uc3QgcD1IVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGQpO2lmKHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXt0aGlzW1pyXS5hZnRlckJyZWFrQWZ0ZXI9cDtyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gcH19Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic3ViZm9ybVNldCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWQiLCJjaG9pY2UiLCJ1bm9yZGVyZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtjc10oKXtsZXQgZT10aGlzW2xzXSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtsc10oKTtyZXR1cm4gZX1bZnNdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETiIpO3RoaXMuZGVsaW1pdGVyPWUuZGVsaW1pdGVyfHwiLCI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe3RoaXNbanJdPW5ldyBNYXAodGhpc1tqcl0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9Z2V0SW50ZWdlcih7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT1nZXRTdHJpbmdPcHRpb24oZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bX3JdKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJndhcm4oIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIik7dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmd2FybigiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW1dzXT01ZTN9W3dzXSgpe3JldHVybiEwfVtLc10oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbUXNdLmdldChlLnNsaWNlKDEpKV06c2VhcmNoTm9kZSh0aGlzLHQsZSwhMCwhMCl9KltYc10oKXtpZighdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tacl09e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbcXJdKCk7Y29uc3QgdD1lLnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4saT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX07bGV0IGE9bnVsbCxyPW51bGwscz1udWxsO2lmKGUuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtyPWUuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1yLnRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9ci50YXJnZXR9ZWxzZSBpZihlLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5icmVhaztzPXIuYmVmb3JlVGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrO3M9ci5iZWZvcmVUYXJnZXR9aWYocil7Y29uc3QgZT10aGlzW0tzXShzLHJbbHNdKCkpO2lmKGUgaW5zdGFuY2VvZiBQYWdlQXJlYSl7YT1lO3JbWnJdPXt9fX1hfHwoYT10WzBdKTthW1pyXT17bnVtYmVyT2ZVc2U6MX07Y29uc3Qgbj1hW2xzXSgpO25bWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpuLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSkscGFnZVNldEluZGV4OjB9O2xldCBvLGc9bnVsbCxjPW51bGwsbD0hMCxoPTAsQz0wO2Zvcig7Oyl7aWYobCloPTA7ZWxzZXtpLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsraCl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBpfX1vPW51bGw7dGhpc1tacl0uY3VycmVudFBhZ2VBcmVhPWE7Y29uc3QgdD1hW1ZzXSgpLmh0bWw7aS5jaGlsZHJlbi5wdXNoKHQpO2lmKGcpe3RoaXNbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZ1tWc10oYVtacl0uc3BhY2UpLmh0bWwpO2c9bnVsbH1pZihjKXt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGNbVnNdKGFbWnJdLnNwYWNlKS5odG1sKTtjPW51bGx9Y29uc3Qgcj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2w9ITE7dGhpc1tacl0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGk9ZVt6cl0oKTtpZihpKXtsfHw9aS5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGkpfX07Zm9yKGxldCB0PUMsYT1yLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPXRoaXNbWnJdLmN1cnJlbnRDb250ZW50QXJlYT1yW3RdLG49e3dpZHRoOmEudyxoZWlnaHQ6YS5ofTtDPTA7aWYoZyl7c1t0XS5jaGlsZHJlbi5wdXNoKGdbVnNdKG4pLmh0bWwpO2c9bnVsbH1pZihjKXtzW3RdLmNoaWxkcmVuLnB1c2goY1tWc10obikuaHRtbCk7Yz1udWxsfWNvbnN0IGg9ZVtWc10obik7aWYoaC5zdWNjZXNzKXtpZihoLmh0bWwpe2x8fD1oLmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChoLmh0bWwpfWVsc2UhbCYmaS5jaGlsZHJlbi5sZW5ndGg+MSYmaS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gaX1pZihoLmlzQnJlYWsoKSl7Y29uc3QgZT1oLmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe2c9dGhpc1tLc10oZS5sZWFkZXIsZVtsc10oKSk7Zz1nP2dbMF06bnVsbH1pZihlLnRyYWlsZXIpe2M9dGhpc1tLc10oZS50cmFpbGVyLGVbbHNdKCkpO2M9Yz9jWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7bz1lW1pyXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW1pyXS50YXJnZXQpe289ZVtacl0udGFyZ2V0O0M9ZVtacl0uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVtacl0uaW5kZXh9ZWxzZSBpZih0aGlzW1pyXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tacl0ub3ZlcmZsb3dOb2RlO3RoaXNbWnJdLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGk9ZVtzc10oKSxhPWkudGFyZ2V0O2kuYWRkTGVhZGVyPW51bGwhPT1pLmxlYWRlcjtpLmFkZFRyYWlsZXI9bnVsbCE9PWkudHJhaWxlcjtmbHVzaCh0KTtjb25zdCBzPXQ7dD0xLzA7aWYoYSBpbnN0YW5jZW9mIFBhZ2VBcmVhKW89YTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1yLmluZGV4T2YoYSk7aWYoLTEhPT1lKWU+cz90PWUtMTpDPWU7ZWxzZXtvPWFbbHNdKCk7Qz1vLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSl9fX1lbHNlIGZsdXNoKHQpfXRoaXNbWnJdLnBhZ2VOdW1iZXIrPTE7byYmKG9bRnNdKCk/b1tacl0ubnVtYmVyT2ZVc2UrPTE6bz1udWxsKTthPW98fGFbSXNdKCk7eWllbGQgbnVsbH19fWNsYXNzIFRleHQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heENoYXJzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bSnJdKCl7cmV0dXJuITB9W0dzXShlKXtpZihlW2tzXT09PUFuLnhodG1sLmlkKXt0aGlzW2pyXT1lO3JldHVybiEwfXdhcm4oYFhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAke2VbUnNdfS5gKTtyZXR1cm4hMX1bVXNdKGUpe3RoaXNbanJdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHN1cGVyW1VzXShlKX1bX3JdKCl7InN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXSYmKHRoaXNbanJdPXRoaXNbanJdLnJlcGxhY2VBbGwoIlxyXG4iLCJcbiIpKX1bc3NdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXT90aGlzW2pyXS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9Pnt0JiZlLnB1c2godCk7cmV0dXJuIGV9KSxbXSkuam9pbigiXG4iKTp0aGlzW2pyXVtqc10oKX1bVnNdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tqcl0pLmh0bWw7aWYodGhpc1tqcl0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pO3JldHVybiBlfSksW10pKSkuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSkpfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tqcl0pKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW2pyXVtWc10oZSl9fWNsYXNzIFRleHRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKTtsZXQgaTtjb25zdCBhPXRoaXNbbHNdKClbbHNdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPWEgaW5zdGFuY2VvZiBEcmF3PzE6MCk7aT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7aS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7aS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBUaW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0b29sVGlwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUcmF2ZXJzYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYXZlcnNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bRHNdKCl7cmV0dXJuITF9fWNsYXNzIFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3NzXSgpe2lmKHZvaWQgMD09PXRoaXNbWnJdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW1pyXT10O3JldHVybiB0fX10aGlzW1pyXT1udWxsfXJldHVybiB0aGlzW1pyXX1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tzc10oKTtyZXR1cm4gdD90W1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD1nZXRTdHJpbmdPcHRpb24oZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInZhbHVlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldEludGVnZXIoe2RhdGE6ZS5vdmVycmlkZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYXJjPW51bGw7dGhpcy5ib29sZWFuPW51bGw7dGhpcy5kYXRlPW51bGw7dGhpcy5kYXRlVGltZT1udWxsO3RoaXMuZGVjaW1hbD1udWxsO3RoaXMuZXhEYXRhPW51bGw7dGhpcy5mbG9hdD1udWxsO3RoaXMuaW1hZ2U9bnVsbDt0aGlzLmludGVnZXI9bnVsbDt0aGlzLmxpbmU9bnVsbDt0aGlzLnJlY3RhbmdsZT1udWxsO3RoaXMudGV4dD1udWxsO3RoaXMudGltZT1udWxsfVtPc10oZSl7Y29uc3QgdD10aGlzW2xzXSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aT8uaW1hZ2VFZGl0KXtpZighdGhpcy5pbWFnZSl7dGhpcy5pbWFnZT1uZXcgSW1hZ2Uoe30pO3RoaXNbWXJdKHRoaXMuaW1hZ2UpfXRoaXMuaW1hZ2VbanJdPWVbanJdO3JldHVybn1jb25zdCBpPWVbUnNdO2lmKG51bGw9PT10aGlzW2ldKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbZV09bnVsbDt0aGlzW0pzXSh0KX19dGhpc1tlW1JzXV09ZTt0aGlzW1lyXShlKX1lbHNlIHRoaXNbaV1banJdPWVbanJdfVtqc10oKXtpZih0aGlzLmV4RGF0YSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuZXhEYXRhW2pyXT90aGlzLmV4RGF0YVtqcl0udHJpbSgpOnRoaXMuZXhEYXRhW2pyXVtqc10oKS50cmltKCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJpbWFnZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybih0W2pyXXx8IiIpLnRvU3RyaW5nKCkudHJpbSgpfXJldHVybiBudWxsfVtWc10oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGk9dGhpc1t0XTtpZihpIGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybiBpW1ZzXShlKX1yZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFyaWFibGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ2YXJpYWJsZXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtEc10oKXtyZXR1cm4hMH19Y2xhc3MgVGVtcGxhdGVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFRlbXBsYXRlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXtjb25zdCBpPVRlbXBsYXRlTmFtZXNwYWNlW2VdKHQpO2lbcXNdKHQpO3JldHVybiBpfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgdGVtcGxhdGVfRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX1BhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fWNvbnN0IEpuPUFuLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIGNyZWF0ZVRleHQoZSl7Y29uc3QgdD1uZXcgVGV4dCh7fSk7dFtqcl09ZTtyZXR1cm4gdH1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO3RoaXMuZGF0YT1lLmRhdGFzZXRzPy5kYXRhfHxuZXcgWG1sT2JqZWN0KEFuLmRhdGFzZXRzLmlkLCJkYXRhIik7dGhpcy5lbXB0eU1lcmdlPTA9PT10aGlzLmRhdGFbb3NdKCkubGVuZ3RoO3RoaXMucm9vdC5mb3JtPXRoaXMuZm9ybT1lLnRlbXBsYXRlW1ByXSgpfV9pc0NvbnN1bWVEYXRhKCl7cmV0dXJuIXRoaXMuZW1wdHlNZXJnZSYmdGhpcy5fbWVyZ2VNb2RlfV9pc01hdGNoVGVtcGxhdGUoKXtyZXR1cm4hdGhpcy5faXNDb25zdW1lRGF0YSgpfWJpbmQoKXt0aGlzLl9iaW5kRWxlbWVudCh0aGlzLmZvcm0sdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5mb3JtfWdldERhdGEoKXtyZXR1cm4gdGhpcy5kYXRhfV9iaW5kVmFsdWUoZSx0LGkpe2VbWHJdPXQ7aWYoZVtCc10oKSlpZih0W3BzXSgpKXtjb25zdCBpPXRbcnNdKCk7ZVtPc10oY3JlYXRlVGV4dChpKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgRmllbGQmJiJtdWx0aVNlbGVjdCI9PT1lLnVpPy5jaG9pY2VMaXN0Py5vcGVuKXtjb25zdCBpPXRbb3NdKCkubWFwKChlPT5lW2pyXS50cmltKCkpKS5qb2luKCJcbiIpO2VbT3NdKGNyZWF0ZVRleHQoaSkpfWVsc2UgdGhpcy5faXNDb25zdW1lRGF0YSgpJiZ3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIik7ZWxzZSF0W3BzXSgpfHx0aGlzLl9pc01hdGNoVGVtcGxhdGUoKT90aGlzLl9iaW5kRWxlbWVudChlLHQpOndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKX1fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoZSx0LGksYSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHIscztmb3IobGV0IGE9MDthPDM7YSsrKXtyPWlbbnNdKGUsITEsITApO2Zvcig7Oyl7cz1yLm5leHQoKS52YWx1ZTtpZighcylicmVhaztpZih0PT09c1twc10oKSlyZXR1cm4gc31pZihpW2tzXT09PUFuLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1pW1JzXSlicmVhaztpPWlbbHNdKCl9aWYoIWEpcmV0dXJuIG51bGw7cj10aGlzLmRhdGFbbnNdKGUsITAsITEpO3M9ci5uZXh0KCkudmFsdWU7aWYocylyZXR1cm4gcztyPXRoaXMuZGF0YVskcl0oZSwhMCk7cz1yLm5leHQoKS52YWx1ZTtyZXR1cm4gcz8uW3BzXSgpP3M6bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjppLHRhcmdldDphLGNvbm5lY3Rpb246cn1vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihyKWNvbnRpbnVlO2lmKCFpKWNvbnRpbnVlO2NvbnN0IHM9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxpLCExLCExKTtpZighcyl7d2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7aX0uYCk7Y29udGludWV9Y29uc3Rbbl09cztpZighblttc10odGhpcy5kYXRhKSl7d2FybigiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IG89c2VhcmNoTm9kZSh0aGlzLnJvb3QsZSxhLCExLCExKTtpZighbyl7d2FybihgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7YX0uYCk7Y29udGludWV9Y29uc3RbZ109bztpZighZ1ttc10oZSkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgYz1nW2xzXSgpO2lmKGcgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eXx8YyBpbnN0YW5jZW9mIFNldFByb3BlcnR5KXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGcgaW5zdGFuY2VvZiBCaW5kSXRlbXN8fGMgaW5zdGFuY2VvZiBCaW5kSXRlbXMpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGw9bltqc10oKSxoPWdbUnNdO2lmKGcgaW5zdGFuY2VvZiBYRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW2hdPWw7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YoYykuY29uc3RydWN0b3IsW2VdKTtjW2hdPXRbaF19ZWxzZSBpZihnLmhhc093blByb3BlcnR5KGpyKSl7Z1tYcl09bjtnW2pyXT1sO2dbX3JdKCl9ZWxzZSB3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtKc10odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGk9bmV3IEl0ZW1zKHt9KSxhPW5ldyBJdGVtcyh7fSk7ZVtZcl0oaSk7ZS5pdGVtcy5wdXNoKGkpO2VbWXJdKGEpO2UuaXRlbXMucHVzaChhKTtmb3IoY29uc3R7cmVmOnIsbGFiZWxSZWY6cyx2YWx1ZVJlZjpuLGNvbm5lY3Rpb246b31vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYobyljb250aW51ZTtpZighciljb250aW51ZTtjb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFttc10odGhpcy5kYXRhc2V0cykpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmICgke3J9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCEwLCExKTtpZighZSl7d2FybihgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtvXT1lO2lmKCFvW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGc9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxuLCEwLCExKTtpZighZyl7d2FybihgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtufS5gKTtjb250aW51ZX1jb25zdFtjXT1nO2lmKCFjW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGw9Y3JlYXRlVGV4dChvW2pzXSgpKSxoPWNyZWF0ZVRleHQoY1tqc10oKSk7aVtZcl0obCk7aS50ZXh0LnB1c2gobCk7YVtZcl0oaCk7YS50ZXh0LnB1c2goaCl9ZWxzZSB3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtyfS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsaSl7bGV0IGE7aWYodC5sZW5ndGg+MSl7YT1lW1ByXSgpO2FbSnNdKGEub2NjdXIpO2Eub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGkpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9ZVtsc10oKSxzPWVbUnNdLG49cltFc10oZSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV0sZz1hW1ByXSgpO3Jbc10ucHVzaChnKTtyW3VzXShuK2UsZyk7dGhpcy5fYmluZFZhbHVlKGcsbyxpKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGcsbyk7dGhpcy5fYmluZEl0ZW1zKGcsbyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGk9ZVtsc10oKSxhPWVbUnNdO2lmKCEoaVthXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgcjtyPWUubmFtZT9pW2FdLmNoaWxkcmVuLmZpbHRlcigodD0+dC5uYW1lPT09ZS5uYW1lKSkubGVuZ3RoOmlbYV0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IHM9aVtFc10oZSkrMSxuPXQuaW5pdGlhbC1yO2lmKG4pe2NvbnN0IHQ9ZVtQcl0oKTt0W0pzXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7aVthXS5wdXNoKHQpO2lbdXNdKHMsdCk7Zm9yKGxldCBlPTE7ZTxuO2UrKyl7Y29uc3Qgcj10W1ByXSgpO2lbYV0ucHVzaChyKTtpW3VzXShzK2Uscil9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjppfT1lO2lmKCFpfHwhdClyZXR1cm5bMSwxXTtjb25zdCBhPS0xPT09aS5tYXg/MS8wOmkubWF4O3JldHVybltpLm1pbixhXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGk9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtvc10oKSl7aWYoYVtYcl0pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1hW1JzXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1hLm1lcmdlTW9kZTtjb25zdCBlPXRbb3NdKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFtrc109PT1Kbj8tMTp0W2tzXSxpPWFbWHJdPW5ldyBYbWxPYmplY3QoZSxhLm5hbWV8fCJyb290Iik7dFtZcl0oaSk7dGhpcy5fYmluZEVsZW1lbnQoYSxpKX1jb250aW51ZX1pZighYVtmc10oKSljb250aW51ZTtsZXQgZT0hMSxyPW51bGwscz1udWxsLG49bnVsbDtpZihhLmJpbmQpe3N3aXRjaChhLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIWEuYmluZC5yZWYpe3dhcm4oYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7YVtSc119LmApO3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1zPWEuYmluZC5yZWZ9YS5iaW5kLnBpY3R1cmUmJihyPWEuYmluZC5waWN0dXJlW2pyXSl9Y29uc3RbbyxnXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYocyl7bj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKG51bGw9PT1uKXtuPWNyZWF0ZURhdGFOb2RlKHRoaXMuZGF0YSx0LHMpO2lmKCFuKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKG5bV3JdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKGEsbik7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYobj1uLmZpbHRlcigoZT0+IWVbV3JdKSkpO24ubGVuZ3RoPmc/bj1uLnNsaWNlKDAsZyk6MD09PW4ubGVuZ3RoJiYobj1udWxsKTtuJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJm4uZm9yRWFjaCgoZT0+e2VbV3JdPSEwfSkpfWVsc2V7aWYoIWEubmFtZSl7dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgaT1bXTtmb3IoO2kubGVuZ3RoPGc7KXtjb25zdCByPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGEubmFtZSxhW0JzXSgpLHQsZSk7aWYoIXIpYnJlYWs7cltXcl09ITA7aS5wdXNoKHIpfW49aS5sZW5ndGg+MD9pOm51bGx9ZWxzZXtuPXRbbnNdKGEubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighbil7aWYoMD09PW8pe2kucHVzaChhKTtjb250aW51ZX1jb25zdCBlPXRba3NdPT09Sm4/LTE6dFtrc107bj1hW1hyXT1uZXcgWG1sT2JqZWN0KGUsYS5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihuW1dyXT0hMCk7dFtZcl0obik7dGhpcy5fc2V0QW5kQmluZChhLG4pO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKG5bV3JdPSEwKTtuPVtuXX19bj90aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxuLHIpOm8+MD90aGlzLl9zZXRBbmRCaW5kKGEsdCk6aS5wdXNoKGEpfWkuZm9yRWFjaCgoZT0+ZVtsc10oKVtKc10oZSkpKX19Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtvc10oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGk9dC5hdCgtMSksW2Escl09aTtpZihhKzE9PT1yLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCBzPXJbKytpWzBdXSxuPWUuZ2V0KHNbenNdKTtpZihuKXNbT3NdKG4pO2Vsc2V7Y29uc3QgdD1zW0FzXSgpO2Zvcihjb25zdCBpIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQoaVt6c10pO2lmKHQpe2lbT3NdKHQpO2JyZWFrfX19Y29uc3Qgbz1zW29zXSgpO28ubGVuZ3RoPjAmJnQucHVzaChbLTEsb10pfWNvbnN0IGk9Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W29zXSgpKSJkYXRhIiE9PWVbUnNdJiZlW1pzXShpKTt0aGlzLmRhdGFbWnNdKGkpO2kucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIGkuam9pbigiIil9fWNvbnN0IHZuPUFuLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsKGU9PmU+PTEmJmU8PTgpKX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFtZCIpfX1jbGFzcyBjb25maWdfQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYXJlYSIpO3RoaXMubGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYmVoYXZpb3JPdmVycmlkZSIpfVtfcl0oKXt0aGlzW2pyXT1uZXcgTWFwKHRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lLmluY2x1ZGVzKCI6IikpKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzIik7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29waWVzIiwxLChlPT5lPj0xKSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PWdldFN0cmluZ09wdGlvbihlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW1iZWQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZSIpO3RoaXMuZm9yY2U9Z2V0SW50ZWdlcih7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxpPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IGEgb2YgaS5zcGxpdCgiLCIpLm1hcCgoZT0+ZS50cmltKCkpKS5maWx0ZXIoKGU9PiEhZSkpKXthPWEuc3BsaXQoIi0iLDIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT9wYXJzZUludChpWzFdLDE2KTowfSkpOzE9PT1hLmxlbmd0aCYmYS5wdXNoKGFbMF0pO2UucHVzaChhKX1yZXR1cm4gc2hhZG93KHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJleGNsdWRlIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGV2ZWwiLDAsKGU9PmU+MCkpfX1jbGFzcyBMaW5lYXJpemVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImxpbmVhcml6ZWQiKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGVTZXQiKX19Y2xhc3MgTG9nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2ciLCEwKTt0aGlzLm1vZGU9bnVsbDt0aGlzLnRocmVzaG9sZD1udWxsO3RoaXMudG89bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBNYXBFbGVtZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lcXVhdGVSYW5nZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lZGl1bUluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm1lZGl1bUluZm8iLCEwKTt0aGlzLm1hcD1udWxsfX1jbGFzcyBjb25maWdfTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnZSIsITApO3RoaXMubXNnSWQ9bnVsbDt0aGlzLnNldmVyaXR5PW51bGx9fWNsYXNzIE1lc3NhZ2luZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTW9kZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgTXNnSWQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtc2dJZCIsMSwoZT0+ZT49MSkpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJudW1iZXJPZkNvcGllcyIsbnVsbCwoZT0+ZT49MiYmZTw9NSkpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwYWNrZXRzIil9W19yXSgpeyIqIiE9PXRoaXNbanJdJiYodGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKSl9fWNsYXNzIFBhZ2VPZmZzZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhZ2VPZmZzZXQiKTt0aGlzLng9Z2V0SW50ZWdlcih7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT1nZXRJbnRlZ2VyKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnZVJhbmdlIil9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKz0yKXQucHVzaChlLnNsaWNlKGksaSsyKSk7dGhpc1tqcl09dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhcnQiLDEsKGU9PiExKSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJyYW5nZSIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+ZS5zcGxpdCgiLSIpLm1hcCgoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkpKS5maWx0ZXIoKGU9PmUuZXZlcnkoKGU9PiFpc05hTihlKSkpKSkubWFwKChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KSl9fWNsYXNzIFJlY29yZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInJlY29yZCIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW2pyXSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tqcl09ZSl9fWNsYXNzIFJlbGV2YW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVsZXZhbnQiKX1bX3JdKCl7dGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuYW1lIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKTsodGhpc1tqcl0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJ4bWwiKXx8bmV3IFJlZ0V4cCgiW1xccHtMfV9dW1xccHtMfVxcZC5fXFxwe019LV0qIiwidSIpLnRlc3QodGhpc1tqcl0pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdGFydFBhZ2UiLDAsKGU9PiEwKSl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJzZXRCZWxvdyIsMTAwLChlPT5lPj0wJiZlPD0xMDApKX19Y2xhc3MgU3VwcHJlc3NCYW5uZXIgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRhZ2dlZCIpfX1jbGFzcyBjb25maWdfVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlPW51bGw7dGhpcy5yZWxldmFudD1udWxsO3RoaXMuc3RhcnRQYWdlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLnhzbD1udWxsfX1jbGFzcyBUaHJlc2hvbGQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRocmVzaG9sZCIsWyJ0cmFjZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ3YXJuaW5nIl0pfX1jbGFzcyBUbyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidGVtcGxhdGVDYWNoZSIpO3RoaXMubWF4RW50cmllcz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4RW50cmllcyxkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIFRyYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ0cmFjZSIsITApO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHJhbnNmb3JtIiwhMCk7dGhpcy5ncm91cFBhcmVudD1udWxsO3RoaXMuaWZFbXB0eT1udWxsO3RoaXMubmFtZUF0dHI9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnByZXNlbmNlPW51bGw7dGhpcy5yZW5hbWU9bnVsbDt0aGlzLndoaXRlc3BhY2U9bnVsbH19Y2xhc3MgVHlwZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ1cmkiKX19Y2xhc3MgY29uZmlnX1ZhbGlkYXRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0ZSIsWyJwcmVTdWJtaXQiLCJwcmVQcmludCIsInByZUV4ZWN1dGUiLCJwcmVTYXZlIl0pfX1jbGFzcyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIndpbmRvdyIpfVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW2pyXT1bMCwwXTtlbHNlezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3RoaXNbanJdPWV9fX1jbGFzcyBYZGMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInhkYyIsITApO3RoaXMudXJpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieGRwIiwhMCk7dGhpcy5wYWNrZXRzPW51bGx9fWNsYXNzIFhzbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieHNsIiwhMCk7dGhpcy5kZWJ1Zz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIFpwbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IGNvbmZpZ19BcmVhKGUpfXN0YXRpYyBhdHRyaWJ1dGVzKGUpe3JldHVybiBuZXcgQXR0cmlidXRlcyhlKX1zdGF0aWMgYXV0b1NhdmUoZSl7cmV0dXJuIG5ldyBBdXRvU2F2ZShlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEJhc2UoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgQmF0Y2hPdXRwdXQoZSl9c3RhdGljIGJlaGF2aW9yT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBCZWhhdmlvck92ZXJyaWRlKGUpfXN0YXRpYyBjYWNoZShlKXtyZXR1cm4gbmV3IENhY2hlKGUpfXN0YXRpYyBjaGFuZ2UoZSl7cmV0dXJuIG5ldyBDaGFuZ2UoZSl9c3RhdGljIGNvbW1vbihlKXtyZXR1cm4gbmV3IENvbW1vbihlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBDb21wcmVzcyhlKX1zdGF0aWMgY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpe3JldHVybiBuZXcgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IENvbXByZXNzT2JqZWN0U3RyZWFtKGUpfXN0YXRpYyBjb21wcmVzc2lvbihlKXtyZXR1cm4gbmV3IENvbXByZXNzaW9uKGUpfXN0YXRpYyBjb25maWcoZSl7cmV0dXJuIG5ldyBDb25maWcoZSl9c3RhdGljIGNvbmZvcm1hbmNlKGUpe3JldHVybiBuZXcgQ29uZm9ybWFuY2UoZSl9c3RhdGljIGNvbnRlbnRDb3B5KGUpe3JldHVybiBuZXcgQ29udGVudENvcHkoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IENvcGllcyhlKX1zdGF0aWMgY3JlYXRvcihlKXtyZXR1cm4gbmV3IENyZWF0b3IoZSl9c3RhdGljIGN1cnJlbnRQYWdlKGUpe3JldHVybiBuZXcgQ3VycmVudFBhZ2UoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IERlYnVnKGUpfXN0YXRpYyBkZWZhdWx0VHlwZWZhY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VHlwZWZhY2UoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgRGVzdGluYXRpb24oZSl9c3RhdGljIGRvY3VtZW50QXNzZW1ibHkoZSl7cmV0dXJuIG5ldyBEb2N1bWVudEFzc2VtYmx5KGUpfXN0YXRpYyBkcml2ZXIoZSl7cmV0dXJuIG5ldyBEcml2ZXIoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IER1cGxleE9wdGlvbihlKX1zdGF0aWMgZHluYW1pY1JlbmRlcihlKXtyZXR1cm4gbmV3IER5bmFtaWNSZW5kZXIoZSl9c3RhdGljIGVtYmVkKGUpe3JldHVybiBuZXcgRW1iZWQoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBjb25maWdfRm9udEluZm8oZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBGb3JtRmllbGRGaWxsaW5nKGUpfXN0YXRpYyBncm91cFBhcmVudChlKXtyZXR1cm4gbmV3IEdyb3VwUGFyZW50KGUpfXN0YXRpYyBpZkVtcHR5KGUpe3JldHVybiBuZXcgSWZFbXB0eShlKX1zdGF0aWMgaW5jbHVkZVhEUENvbnRlbnQoZSl7cmV0dXJuIG5ldyBJbmNsdWRlWERQQ29udGVudChlKX1zdGF0aWMgaW5jcmVtZW50YWxMb2FkKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxMb2FkKGUpfXN0YXRpYyBpbmNyZW1lbnRhbE1lcmdlKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxNZXJnZShlKX1zdGF0aWMgaW50ZXJhY3RpdmUoZSl7cmV0dXJuIG5ldyBJbnRlcmFjdGl2ZShlKX1zdGF0aWMgam9nKGUpe3JldHVybiBuZXcgSm9nKGUpfXN0YXRpYyBsYWJlbFByaW50ZXIoZSl7cmV0dXJuIG5ldyBMYWJlbFByaW50ZXIoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IExheW91dChlKX1zdGF0aWMgbGV2ZWwoZSl7cmV0dXJuIG5ldyBMZXZlbChlKX1zdGF0aWMgbGluZWFyaXplZChlKXtyZXR1cm4gbmV3IExpbmVhcml6ZWQoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBsb2coZSl7cmV0dXJuIG5ldyBMb2coZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IE1hcEVsZW1lbnQoZSl9c3RhdGljIG1lZGl1bUluZm8oZSl7cmV0dXJuIG5ldyBNZWRpdW1JbmZvKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgY29uZmlnX01lc3NhZ2UoZSl9c3RhdGljIG1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IE1lc3NhZ2luZyhlKX1zdGF0aWMgbW9kZShlKXtyZXR1cm4gbmV3IE1vZGUoZSl9c3RhdGljIG1vZGlmeUFubm90cyhlKXtyZXR1cm4gbmV3IE1vZGlmeUFubm90cyhlKX1zdGF0aWMgbXNnSWQoZSl7cmV0dXJuIG5ldyBNc2dJZChlKX1zdGF0aWMgbmFtZUF0dHIoZSl7cmV0dXJuIG5ldyBOYW1lQXR0cihlKX1zdGF0aWMgbmV2ZXJFbWJlZChlKXtyZXR1cm4gbmV3IE5ldmVyRW1iZWQoZSl9c3RhdGljIG51bWJlck9mQ29waWVzKGUpe3JldHVybiBuZXcgTnVtYmVyT2ZDb3BpZXMoZSl9c3RhdGljIG9wZW5BY3Rpb24oZSl7cmV0dXJuIG5ldyBPcGVuQWN0aW9uKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBPdXRwdXQoZSl9c3RhdGljIG91dHB1dEJpbihlKXtyZXR1cm4gbmV3IE91dHB1dEJpbihlKX1zdGF0aWMgb3V0cHV0WFNMKGUpe3JldHVybiBuZXcgT3V0cHV0WFNMKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBPdmVycHJpbnQoZSl9c3RhdGljIHBhY2tldHMoZSl7cmV0dXJuIG5ldyBQYWNrZXRzKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgUGFnZU9mZnNldChlKX1zdGF0aWMgcGFnZVJhbmdlKGUpe3JldHVybiBuZXcgUGFnZVJhbmdlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbihlKX1zdGF0aWMgcGFnaW5hdGlvbk92ZXJyaWRlKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbk92ZXJyaWRlKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgUGFydChlKX1zdGF0aWMgcGNsKGUpe3JldHVybiBuZXcgUGNsKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyBQZGYoZSl9c3RhdGljIHBkZmEoZSl7cmV0dXJuIG5ldyBQZGZhKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IFBlcm1pc3Npb25zKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IFBpY2tUcmF5QnlQREZTaXplKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgY29uZmlnX1BpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgY29uZmlnX1NjcmlwdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBTY3JpcHRNb2RlbChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBTZXZlcml0eShlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBTaWxlbnRQcmludChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgU3RhcGxlKGUpfXN0YXRpYyBzdGFydE5vZGUoZSl7cmV0dXJuIG5ldyBTdGFydE5vZGUoZSl9c3RhdGljIHN0YXJ0UGFnZShlKXtyZXR1cm4gbmV3IFN0YXJ0UGFnZShlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgU3VibWl0Rm9ybWF0KGUpfXN0YXRpYyBzdWJtaXRVcmwoZSl7cmV0dXJuIG5ldyBTdWJtaXRVcmwoZSl9c3RhdGljIHN1YnNldEJlbG93KGUpe3JldHVybiBuZXcgU3Vic2V0QmVsb3coZSl9c3RhdGljIHN1cHByZXNzQmFubmVyKGUpe3JldHVybiBuZXcgU3VwcHJlc3NCYW5uZXIoZSl9c3RhdGljIHRhZ2dlZChlKXtyZXR1cm4gbmV3IFRhZ2dlZChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVGVtcGxhdGUoZSl9c3RhdGljIHRlbXBsYXRlQ2FjaGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZUNhY2hlKGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyBUaHJlc2hvbGQoZSl9c3RhdGljIHRvKGUpe3JldHVybiBuZXcgVG8oZSl9c3RhdGljIHRyYWNlKGUpe3JldHVybiBuZXcgVHJhY2UoZSl9c3RhdGljIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IFRyYW5zZm9ybShlKX1zdGF0aWMgdHlwZShlKXtyZXR1cm4gbmV3IFR5cGUoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fWNvbnN0IFluPUFuLmNvbm5lY3Rpb25TZXQuaWQ7Y2xhc3MgQ29ubmVjdGlvblNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiY29ubmVjdGlvblNldCIsITApO3RoaXMud3NkbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueG1sQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRWZmZWN0aXZlSW5wdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZWZmZWN0aXZlT3V0cHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9wZXJhdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwib3BlcmF0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmlucHV0PWUuaW5wdXR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMub3V0cHV0PWUub3V0cHV0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJvb3RFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWN0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBjb25uZWN0aW9uX3NldF9VcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwid3NkbEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sIndzZGxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuZWZmZWN0aXZlSW5wdXRQb2xpY3k9bnVsbDt0aGlzLmVmZmVjdGl2ZU91dHB1dFBvbGljeT1udWxsO3RoaXMub3BlcmF0aW9uPW51bGw7dGhpcy5zb2FwQWN0aW9uPW51bGw7dGhpcy5zb2FwQWRkcmVzcz1udWxsO3RoaXMud3NkbEFkZHJlc3M9bnVsbH19Y2xhc3MgWG1sQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJ4c2RDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucm9vdEVsZW1lbnQ9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBDb25uZWN0aW9uU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBjb25uZWN0aW9uX3NldF9VcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19Y29uc3QgS249QW4uZGF0YXNldHMuaWQ7Y2xhc3MgZGF0YXNldHNfRGF0YSBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YSIsZSl9W3lzXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtHc10oZSl7Y29uc3QgdD1lW1JzXTsoImRhdGEiPT09dCYmZVtrc109PT1Lbnx8IlNpZ25hdHVyZSI9PT10JiZlW2tzXT09PUFuLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbWXJdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgZGF0YXNldHNfRGF0YShlKX19Y29uc3QgVG49QW4ubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY2FsZW5kYXJTeW1ib2xzIiwhMCk7dGhpcy5uYW1lPSJncmVnb3JpYW4iO3RoaXMuZGF5TmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBDdXJyZW5jeVN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImN1cnJlbmN5U3ltYm9scyIsITApO3RoaXMuY3VycmVuY3lTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIERhdGVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm5zIiwhMCk7dGhpcy5kYXRlUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIERhdGVUaW1lU3ltYm9scyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRhdGVUaW1lU3ltYm9scyIpfX1jbGFzcyBEYXkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF5TmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmRheT1uZXcgWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZXJhIil9fWNsYXNzIEVyYU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJlcmFOYW1lcyIsITApO3RoaXMuZXJhPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibG9jYWxlU2V0IiwhMCk7dGhpcy5sb2NhbGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZXJpZGllbSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW0iKX19Y2xhc3MgTWVyaWRpZW1OYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBNb250aCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGhOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMubW9udGg9bmV3IFhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibnVtYmVyUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgTnVtYmVyUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclBhdHRlcm5zIiwhMCk7dGhpcy5udW1iZXJQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgTnVtYmVyU3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJudW1iZXJTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImRlY2ltYWwiLCJncm91cGluZyIsInBlcmNlbnQiLCJtaW51cyIsInplcm8iXSl9fWNsYXNzIE51bWJlclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoNSl9fWNsYXNzIFRpbWVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybnMiLCEwKTt0aGlzLnRpbWVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sInR5cGVGYWNlIiwhMCk7dGhpcy5uYW1lPSIifGUubmFtZX19Y2xhc3MgVHlwZUZhY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0eXBlRmFjZXMiLCEwKTt0aGlzLnR5cGVGYWNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTG9jYWxlU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihMb2NhbGVTZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19Y29uc3QgcW49QW4uc2lnbmF0dXJlLmlkO2NsYXNzIHNpZ25hdHVyZV9TaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBzaWduYXR1cmVfU2lnbmF0dXJlKGUpfX1jb25zdCBPbj1Bbi5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoU3R5bGVzaGVldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU3R5bGVzaGVldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IFN0eWxlc2hlZXQoZSl9fWNvbnN0IFBuPUFuLnhkcC5pZDtjbGFzcyB4ZHBfWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGVtcGxhdGU9bnVsbH1bTXNdKGUpe2NvbnN0IHQ9QW5bZVtSc11dO3JldHVybiB0JiZlW2tzXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IHhkcF9YZHAoZSl9fWNvbnN0IFduPUFuLnhodG1sLmlkLGpuPVN5bWJvbCgpLFhuPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksVm49bmV3IE1hcChbWyJwYWdlLWJyZWFrLWFmdGVyIiwiYnJlYWtBZnRlciJdLFsicGFnZS1icmVhay1iZWZvcmUiLCJicmVha0JlZm9yZSJdLFsicGFnZS1icmVhay1pbnNpZGUiLCJicmVha0luc2lkZSJdLFsia2VybmluZy1tb2RlIixlPT4ibm9uZSI9PT1lPyJub25lIjoibm9ybWFsIl0sWyJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIixlPT5gc2NhbGVYKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1zcGFjZXJ1biIsIiJdLFsieGZhLXRhYi1zdG9wcyIsIiJdLFsiZm9udC1zaXplIiwoZSx0KT0+bWVhc3VyZVRvU3RyaW5nKC45OSooZT10LmZvbnRTaXplPU1hdGguYWJzKGdldE1lYXN1cmVtZW50KGUpKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLFpuPS9ccysvZyxfbj0vW1xyXG5dKy9nLHpuPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGE7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGldb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1Wbi5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCBzPWk7ZSYmKHM9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShpLHIpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7c31gOnM6YVt0LnJlcGxhY2VBbGwoLy0oW2EtekEtWl0pL2csKChlLHQpPT50LnRvVXBwZXJDYXNlKCkpKV09c31hLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOmEuZm9udEZhbWlseSx3ZWlnaHQ6YS5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOmEuZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnIuZm9udFNpemV8fDB9LHQsdFtDc10uZm9udEZpbmRlcixhKTtpZihpJiZhLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09YS52ZXJ0aWNhbEFsaWduJiZhLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGk9Z2V0TWVhc3VyZW1lbnQoYS5mb250U2l6ZSk7YS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoaSplKTthLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChhLnZlcnRpY2FsQWxpZ24pKSppKnQpfWkmJmEuZm9udFNpemUmJihhLmZvbnRTaXplPWBjYWxjKCR7YS5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQoYSk7cmV0dXJuIGF9Y29uc3QgJG49bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoV24sdCk7dGhpc1tqbl09ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxpXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtDc10udXNlZFR5cGVmYWNlcy5hZGQoaSk7cmV0dXJuIFhuLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1bSnJdKCl7cmV0dXJuISRuLmhhcyh0aGlzW1JzXSl9W1VzXShlLHQ9ITEpe2lmKHQpdGhpc1tqbl09ITA7ZWxzZXtlPWUucmVwbGFjZUFsbChfbiwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoWm4sIiAiKSl9ZSYmKHRoaXNbanJdKz1lKX1beHNdKGUsdD0hMCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCByPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjppLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjppLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6aS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmkucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmkubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6YS50b3A9YS5ib3R0b209YS5sZWZ0PWEucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6YS50b3A9YS5ib3R0b209ZVswXTthLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzphLnRvcD1lWzBdO2EuYm90dG9tPWVbMl07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6YS50b3A9ZVswXTthLmxlZnQ9ZVsxXTthLmJvdHRvbT1lWzJdO2EucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmEudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6YS5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6YS5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjphLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOnI9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShpLGEscik7aWYodGhpc1tqcl0pZS5hZGRTdHJpbmcodGhpc1tqcl0pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tvc10oKSkiI3RleHQiIT09dFtSc10/dFt4c10oZSk6ZS5hZGRTdHJpbmcodFtqcl0pO3QmJmUucG9wRm9udCgpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbanJdKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBpO2k9dGhpc1tqbl0/dGhpc1tqcl0/dGhpc1tqcl0ucmVwbGFjZUFsbCh6biwiXG4iKTp2b2lkIDA6dGhpc1tqcl18fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbUnNdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW2puXSl9LGNoaWxkcmVuOnQsdmFsdWU6aX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W3hzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVtWc10oZSl7Y29uc3QgdD1zdXBlcltWc10oZSkse2h0bWw6aX09dDtpZighaSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpLm5hbWU9ImRpdiI7aS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W2pzXSgpe3JldHVybiJcbiJ9W3hzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bVnNdKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW2pyXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W3hzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1beHNdKGUpe3N1cGVyW3hzXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1banNdKCl7cmV0dXJuIHRoaXNbbHNdKClbb3NdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltqc10oKTpzdXBlcltqc10oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBBbz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bJHNdKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW1FzXT1lfVtHc10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W19yXSgpe3N1cGVyW19yXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW1FzXS5zZXQodnMsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbWXNdKHRoaXNbUXNdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbUXNdPXRoaXNbUXNdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bR3NdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhBbikubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6aSxuYW1lc3BhY2U6YSxwcmVmaXhlczpyfSl7Y29uc3Qgcz1udWxsIT09YTtpZihzKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpfXImJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChyKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1Bby5kYXRhc2V0cyx0PWlbTnNdO2xldCBhPW51bGw7Zm9yKGNvbnN0W2kscl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoaSk9PT1lKXthPXt4ZmE6cn07YnJlYWt9fWE/aVtOc109YTpkZWxldGUgaVtOc119Y29uc3Qgbj10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPW4/Llskc10odCxpKXx8bmV3IEVtcHR5O29beXNdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhzfHxyfHxvW3lzXSgpKSYmKG9bT3JdPXtoYXNOYW1lc3BhY2U6cyxwcmVmaXhlczpyLG5zQWdub3N0aWM6b1t5c10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2kse2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKEFuKSlpZihhKGUpKXt0PUFvW2ldO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOml9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoaSk7bGV0IGE9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFhKXthPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LGEpfWEucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6aSxuc0Fnbm9zdGljOmF9PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2kmJmkuZm9yRWFjaCgoKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSkpO2EmJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09RHIpe3RoaXMuX2N1cnJlbnRbX3JdKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLChlPT5lLnNsaWNlKDEpKyIgIikpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W0pyXSgpP3RoaXMuX2N1cnJlbnRbVXNdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtVc10oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtVc10oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBpPW51bGwsYT1udWxsO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cyx2YWx1ZTpufW9mIGUpaWYoInhtbG5zIj09PXMpaT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTppPW47ZWxzZSBpZihzLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXMuc3Vic3RyaW5nKDYpO2F8fChhPVtdKTthLnB1c2goe3ByZWZpeDplLHZhbHVlOm59KX1lbHNle2NvbnN0IGU9cy5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXJbc109bjtlbHNle2xldCB0PXJbTnNdO3R8fCh0PXJbTnNdPU9iamVjdC5jcmVhdGUobnVsbCkpO2NvbnN0W2ksYV09W3Muc2xpY2UoMCxlKSxzLnNsaWNlKGUrMSldOyh0W2ldfHw9T2JqZWN0LmNyZWF0ZShudWxsKSlbYV09bn19cmV0dXJuW2ksYSxyXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IGk9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1pP1tlLG51bGxdOltlLnN1YnN0cmluZyhpKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxpKV19b25CZWdpbkVsZW1lbnQoZSx0LGkpe2NvbnN0W2EscixzXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbixvXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksZz10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpvLG5hbWU6bixhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOmEscHJlZml4ZXM6cn0pO2dbQ3NdPXRoaXMuX2dsb2JhbERhdGE7aWYoaSl7Z1tfcl0oKTt0aGlzLl9jdXJyZW50W0dzXShnKSYmZ1tUc10odGhpcy5faWRzKTtnW1RyXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1nfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbZHNdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtqcl0pe2NvbnN0IGU9bmV3IFhGQVBhcnNlcjtlLl9nbG9iYWxEYXRhPXRoaXMuX2dsb2JhbERhdGE7Y29uc3QgaT1lLnBhcnNlKHRbanJdKTt0W2pyXT1udWxsO3RbR3NdKGkpfXRbX3JdKCk7dGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKTt0aGlzLl9jdXJyZW50W0dzXSh0KSYmdFtUc10odGhpcy5faWRzKTt0W1RyXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBYRkFGYWN0b3J5e2NvbnN0cnVjdG9yKGUpe3RyeXt0aGlzLnJvb3Q9KG5ldyBYRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBCaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgRGF0YUhhbmRsZXIodGhpcy5yb290LHQuZ2V0RGF0YSgpKTt0aGlzLmZvcm1bQ3NdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW1hzXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsaSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGk9ZS5uZXh0KCk7aS5kb25lP3QoaS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2koZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDppfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChpKV19KSl9Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW0NzXS5pbWFnZXM9ZX1zZXRGb250cyhlKXt0aGlzLmZvcm1bQ3NdLmZvbnRGaW5kZXI9bmV3IEZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW0NzXS51c2VkVHlwZWZhY2VzKXtlPXN0cmlwUXVvdGVzKGUpO3RoaXMuZm9ybVtDc10uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW0NzXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbUnNdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW1lyXSh0KTt0PWV9Y29uc3QgaT10W1ZzXSgpO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1pLHthdHRyaWJ1dGVzOnJ9PWE7aWYocil7ci5jbGFzcyYmKHIuY2xhc3M9ci5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO3IuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDphLHN0cjp0W2pzXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKV0pLnRoZW4oKChbdCxpLGEscixzXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czppLHN0cnVjdFRyZWVSb290OmEsYmFzZVVybDpyLGF0dGFjaG1lbnRzOnN9KSksKGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsaSxhLHIscyxuKXtjb25zdCBvPXI/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxpLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGkucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxpLGEscixzLG8sbl0pfXN0YXRpYyBfY3JlYXRlKGUsdCxpLGEscj0hMSxzPW51bGwsbj1udWxsLG89bnVsbCl7Y29uc3QgZz1lLmZldGNoSWZSZWYodCk7aWYoIShnIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0e2Fjcm9Gb3JtOmMscGRmTWFuYWdlcjpsfT1pLGg9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7YS5jcmVhdGVPYmpJZCgpfWA7bGV0IEM9Zy5nZXQoIlN1YnR5cGUiKTtDPUMgaW5zdGFuY2VvZiBOYW1lP0MubmFtZTpudWxsO2NvbnN0IFE9e3hyZWY6ZSxyZWY6dCxkaWN0Omcsc3VidHlwZTpDLGlkOmgsYW5ub3RhdGlvbkdsb2JhbHM6aSxjb2xsZWN0RmllbGRzOnIsb3JwaGFuRmllbGRzOnMsbmVlZEFwcGVhcmFuY2VzOiFyJiYhMD09PWMuZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6bixldmFsdWF0b3JPcHRpb25zOmwuZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOm99O3N3aXRjaChDKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24oUSk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0Omcsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24oUSk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24oUSl9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKFEpO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihRKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKFEpO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKFEpO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKFEpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24oUSk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihRKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKFEpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKFEpO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24oUSk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24oUSk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24oUSk7ZGVmYXVsdDpyfHx3YXJuKEM/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke0N9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihRKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGkpe3RyeXtjb25zdCBhPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IHI9YS5nZXRSYXcoIlAiKTtpZihyIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtyXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEuaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgcz1hd2FpdCBpLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBhPWF3YWl0IGkuZ2V0UGFnZShlKSxyPWF3YWl0IGkuZW5zdXJlKGEsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGkgb2YgcilpZihpIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChpLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxpKXtpZighaSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBhO2Zvcihjb25zdHtiaXRtYXBJZDppLGJpdG1hcDpyfW9mIGUpaWYocil7YXx8PW5ldyBNYXA7YS5zZXQoaSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocix0KSl9cmV0dXJuIGF9c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2NvbnN0IHM9ZS54cmVmO2xldCBuO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmd9PWUub3B0aW9ucztmb3IoY29uc3QgYyBvZiBpKWlmKCFjLmRlbGV0ZWQpc3dpdGNoKGMuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjppZighbil7Y29uc3QgZT1uZXcgRGljdChzKTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO249cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChuLHtkYXRhOmV9KX1vLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpufSkpO2JyZWFrO2Nhc2UgcDpjLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIpKTticmVhaztjYXNlIHk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpO2JyZWFrO2Nhc2UgbTpjb25zdCBpPWc/YXdhaXQoYT8uZ2V0KGMuYml0bWFwSWQpKTpudWxsO2lmKGk/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWk7aWYodCl7Y29uc3QgaT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KGkse2RhdGE6dH0pO2UuZGljdC5zZXQoIlNNYXNrIixpKX1jb25zdCBhPWkuaW1hZ2VSZWY9cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChhLHtkYXRhOmV9KTtpLmltYWdlU3RyZWFtPWkuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2ltYWdlOml9KSl9cmV0dXJue2Fubm90YXRpb25zOmF3YWl0IFByb21pc2UuYWxsKG8pfX1zdGF0aWMgYXN5bmMgcHJpbnROZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0e29wdGlvbnM6cyx4cmVmOm59PXQsbz1bXTtmb3IoY29uc3QgZyBvZiBhKWlmKCFnLmRlbGV0ZWQpc3dpdGNoKGcuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjpvLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yOnQsdGFzazppLGV2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIHA6Zy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpO2JyZWFrO2Nhc2UgeTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIG06Y29uc3QgYT1zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkP2F3YWl0KHI/LmdldChnLmJpdG1hcElkKSk6bnVsbDtpZihhPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1hO3QmJmUuZGljdC5zZXQoIlNNYXNrIix0KTthLmltYWdlUmVmPW5ldyBKcGVnU3RyZWFtKGUsZS5sZW5ndGgpO2EuaW1hZ2VTdHJlYW09YS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6c30pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGk9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2Nhc2UgMzpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7Y2FzZSA0OkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlLChlPT5lLzI1NSkpfWZ1bmN0aW9uIGdldFF1YWRQb2ludHMoZSx0KXtjb25zdCBpPWUuZ2V0QXJyYXkoIlF1YWRQb2ludHMiKTtpZighaXNOdW1iZXJBcnJheShpLG51bGwpfHwwPT09aS5sZW5ndGh8fGkubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBGbG9hdDMyQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgZT0wLHI9aS5sZW5ndGg7ZTxyO2UrPTgpe2NvbnN0W3IscyxuLG8sZyxjLGwsaF09aS5zbGljZShlLGUrOCksQz1NYXRoLm1pbihyLG4sZyxsKSxRPU1hdGgubWF4KHIsbixnLGwpLEU9TWF0aC5taW4ocyxvLGMsaCksdT1NYXRoLm1heChzLG8sYyxoKTtpZihudWxsIT09dCYmKEM8dFswXXx8UT50WzJdfHxFPHRbMV18fHU+dFszXSkpcmV0dXJuIG51bGw7YS5zZXQoW0MsdSxRLHUsQyxFLFEsRV0sZSl9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxpKXtjb25zdFthLHIscyxuXT1VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsaSk7aWYoYT09PXN8fHI9PT1uKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3Qgbz0oZVsyXS1lWzBdKS8ocy1hKSxnPShlWzNdLWVbMV0pLyhuLXIpO3JldHVybltvLDAsMCxnLGVbMF0tYSpvLGVbMV0tcipnXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YSxyZWY6cixvcnBoYW5GaWVsZHM6c309ZSxuPXM/LmdldChyKTtuJiZ0LnNldCgiUGFyZW50IixuKTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG89dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG8pO3RoaXMuc2V0Um90YXRpb24obyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBnPSEhKHRoaXMuZmxhZ3MmaUEpLGM9ISEodGhpcy5mbGFncyZhQSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZlQSksbm9IVE1MOmcmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKGEuc3RydWN0VHJlZVJvb3Qpe2xldCBpPXQuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWk9TnVtYmVyLmlzSW50ZWdlcihpKSYmaT49MD9pOi0xO2Euc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixpKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IGE9dC5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpdCBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLHQscEEpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgbD10LmdldCgiSVQiKTtsIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1sLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczppfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2kmfkFBOmkmfiR8QUF9aWYoZSl7aXw9QUE7cmV0dXJuIHQ/aSZ+dEF8JDppJn4kfHRBfWkmPX4oJHx0QSk7cmV0dXJuIHQ/aSZ+QUE6aXxBQX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLHopJiYhdGhpcy5faGFzRmxhZyhlLHRBKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxBQSkmJiF0aGlzLl9oYXNGbGFnKGUsJCkmJiF0aGlzLl9oYXNGbGFnKGUseil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3QgaT1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1pPyFpOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsJCl9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtyZXR1cm4gZT8hdGhpcy5kYXRhLmlzRWRpdGFibGU6IXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fGkuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZ6JiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj16KX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IGk9ZVt0XTtpZihpIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goaS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWkubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7aX1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IGk9ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihpKSYmMCE9PWkpe2klPTM2MDtpPDAmJihpKz0zNjApO2klOTA9PTAmJih0aGlzLnJvdGF0aW9uPWkpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPj0zKXt0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKTt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpOzQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCl9fWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGk9dC5nZXQoIk4iKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWk7cmV0dXJufWlmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWUuZ2V0KCJBUyIpO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUmJmkuaGFzKGEubmFtZSkpKXJldHVybjtjb25zdCByPWkuZ2V0KGEubmFtZSk7ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9cil9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBOYW1lP3dhcm4oInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBEaWN0JiYodGhpcy5vYz10KX1sb2FkUmVzb3VyY2VzKGUsdCl7cmV0dXJuIHQuZGljdC5nZXRBc3luYygiUmVzb3VyY2VzIikudGhlbigodD0+e2lmKCF0KXJldHVybjtyZXR1cm4gbmV3IE9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGkscil7Y29uc3R7aGFzT3duQ2FudmFzOnMsaWQ6bixyZWN0Om99PXRoaXMuZGF0YTtsZXQgZz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShzJiZpJmMpO2lmKGwmJihvWzBdPT09b1syXXx8b1sxXT09PW9bM10pKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWlmKCFnKXtpZighbClyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtnPW5ldyBTdHJpbmdTdHJlYW0oIiIpO2cuZGljdD1uZXcgRGljdH1jb25zdCBoPWcuZGljdCxDPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkNvbG9yU3BhY2UiLCJQYXR0ZXJuIiwiU2hhZGluZyIsIlhPYmplY3QiLCJGb250Il0sZyksUT1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLEU9bG9va3VwTWF0cml4KGguZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHU9Z2V0VHJhbnNmb3JtTWF0cml4KG8sUSxFKSxkPW5ldyBPcGVyYXRvckxpc3Q7bGV0IGY7dGhpcy5vYyYmKGY9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1mJiZkLmFkZE9wKEtlLFsiT0MiLGZdKTtkLmFkZE9wKFZlLFtuLG8sdSxFLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmcsdGFzazp0LHJlc291cmNlczpDLG9wZXJhdG9yTGlzdDpkLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2QuYWRkT3AoWmUsW10pO3ZvaWQgMCE9PWYmJmQuYWRkT3AoVGUsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmQsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmx9fWFzeW5jIHNhdmUoZSx0LGksYSl7cmV0dXJuIG51bGx9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuITF9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxpKXtpZighdGhpcy5hcHBlYXJhbmNlKXJldHVybjtjb25zdCBhPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdLHRoaXMuYXBwZWFyYW5jZSkscj1bXSxzPVtdO2xldCBuPW51bGw7Y29uc3Qgbz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcylpZih2b2lkIDAhPT10LnN0cil7bnx8PXQudHJhbnNmb3JtLnNsaWNlKC0yKTtzLnB1c2godC5zdHIpO2lmKHQuaGFzRU9MKXtyLnB1c2gocy5qb2luKCIiKS50cmltRW5kKCkpO3MubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczphLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGtlZXBXaGl0ZVNwYWNlOiEwLHNpbms6byx2aWV3Qm94Oml9KTt0aGlzLnJlc2V0KCk7cy5sZW5ndGgmJnIucHVzaChzLmpvaW4oIiIpLnRyaW1FbmQoKSk7aWYoci5sZW5ndGg+MXx8clswXSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2UuZGljdCx0PWxvb2t1cFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpLGk9bG9va3VwTWF0cml4KGUuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQobix0LGkpO3RoaXMuZGF0YS50ZXh0Q29udGVudD1yfX1fdHJhbnNmb3JtUG9pbnQoZSx0LGkpe2NvbnN0e3JlY3Q6YX09dGhpcy5kYXRhO3R8fD1bMCwwLDEsMV07aXx8PVsxLDAsMCwxLDAsMF07Y29uc3Qgcj1nZXRUcmFuc2Zvcm1NYXRyaXgoYSx0LGkpO3JbNF0tPWFbMF07cls1XS09YVsxXTtlPVV0aWwuYXBwbHlUcmFuc2Zvcm0oZSxyKTtyZXR1cm4gVXRpbC5hcHBseVRyYW5zZm9ybShlLGkpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIHRoaXMuZGF0YS5raWRJZHM/e2lkOnRoaXMuZGF0YS5pZCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3IsdHlwZToiIixraWRJZHM6dGhpcy5kYXRhLmtpZElkcyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgscm90YXRpb246dGhpcy5yb3RhdGlvbn06bnVsbH1yZXNldCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3N0cmVhbXMpZS5yZXNldCgpfV9jb25zdHJ1Y3RGaWVsZE5hbWUoZSl7aWYoIWUuaGFzKCJUIikmJiFlLmhhcygiUGFyZW50Iikpe3dhcm4oIlVua25vd24gZmllbGQgbmFtZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IGZpZWxkIG5hbWUuIik7cmV0dXJuIiJ9aWYoIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSk7Y29uc3QgdD1bXTtlLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSkpO2xldCBpPWU7Y29uc3QgYT1uZXcgUmVmU2V0O2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2Zvcig7aS5oYXMoIlBhcmVudCIpOyl7aT1pLmdldCgiUGFyZW50Iik7aWYoIShpIGluc3RhbmNlb2YgRGljdCl8fGkub2JqSWQmJmEuaGFzKGkub2JqSWQpKWJyZWFrO2kub2JqSWQmJmEucHV0KGkub2JqSWQpO2kuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhpLmdldCgiVCIpKSl9cmV0dXJuIHQuam9pbigiLiIpfX1jbGFzcyBBbm5vdGF0aW9uQm9yZGVyU3R5bGV7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTE7dGhpcy5yYXdXaWR0aD0xO3RoaXMuc3R5bGU9UUE7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7dGhpcy5yYXdXaWR0aD1lO2NvbnN0IGk9KHRbMl0tdFswXSkvMixhPSh0WzNdLXRbMV0pLzI7aWYoaT4wJiZhPjAmJihlPml8fGU+YSkpe3dhcm4oYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1RQTticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9RUE7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPXVBO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1kQTticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ZkF9fXNldERhc2hBcnJheShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCBpPSEwLGE9ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe2k9ITE7YnJlYWt9dD4wJiYoYT0hMSl9aWYoMD09PWUubGVuZ3RofHxpJiYhYSl7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKE5hbWUuZ2V0KCJEIikpfWVsc2UgdGhpcy53aWR0aD0wfWVsc2UgZSYmKHRoaXMud2lkdGg9MCl9c2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPWUpfXNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPWUpfX1jbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7aWYodC5oYXMoIklSVCIpKXtjb25zdCBlPXQuZ2V0UmF3KCJJUlQiKTt0aGlzLmRhdGEuaW5SZXBseVRvPWUgaW5zdGFuY2VvZiBSZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3QgaT10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPWkgaW5zdGFuY2VvZiBOYW1lP2kubmFtZTpffWxldCBpPW51bGw7aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PVope2NvbnN0IGU9dC5nZXQoIklSVCIpO3RoaXMuc2V0VGl0bGUoZS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoZS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpZihlLmhhcygiQ3JlYXRpb25EYXRlIikpe3RoaXMuc2V0Q3JlYXRpb25EYXRlKGUuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5jcmVhdGlvbkRhdGU9bnVsbDtpZihlLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoZS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpPWUuZ2V0UmF3KCJQb3B1cCIpO2lmKGUuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoZS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2V7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZTtpPXQuZ2V0UmF3KCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dGhpcy5kYXRhLnBvcHVwUmVmPWkgaW5zdGFuY2VvZiBSZWY/aS50b1N0cmluZygpOm51bGw7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9WEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbCh0LmdldCgiUkMiKSkpfXNldENyZWF0aW9uRGF0ZShlKXt0aGlzLmNyZWF0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfV9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLGV4dHJhOnQsc3Ryb2tlQ29sb3I6aSxmaWxsQ29sb3I6YSxibGVuZE1vZGU6cixzdHJva2VBbHBoYTpzLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOm99KXtsZXQgZz1OdW1iZXIuTUFYX1ZBTFVFLGM9TnVtYmVyLk1BWF9WQUxVRSxsPU51bWJlci5NSU5fVkFMVUUsaD1OdW1iZXIuTUlOX1ZBTFVFO2NvbnN0IEM9WyJxIl07dCYmQy5wdXNoKHQpO2kmJkMucHVzaChgJHtpWzBdfSAke2lbMV19ICR7aVsyXX0gUkdgKTthJiZDLnB1c2goYCR7YVswXX0gJHthWzFdfSAke2FbMl19IHJnYCk7Y29uc3QgUT10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1RLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3RbdCxpLGEscl09byhDLFEuc3ViYXJyYXkoZSxlKzgpKTtnPU1hdGgubWluKGcsdCk7bD1NYXRoLm1heChsLGkpO2M9TWF0aC5taW4oYyxhKTtoPU1hdGgubWF4KGgscil9Qy5wdXNoKCJRIik7Y29uc3QgRT1uZXcgRGljdChlKSx1PW5ldyBEaWN0KGUpO3Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjb25zdCBkPW5ldyBTdHJpbmdTdHJlYW0oQy5qb2luKCIgIikpO2QuZGljdD11O0Uuc2V0KCJGbTAiLGQpO2NvbnN0IGY9bmV3IERpY3QoZSk7ciYmZi5zZXQoIkJNIixOYW1lLmdldChyKSk7Im51bWJlciI9PXR5cGVvZiBzJiZmLnNldCgiQ0EiLHMpOyJudW1iZXIiPT10eXBlb2YgbiYmZi5zZXQoImNhIixuKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGYpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLEUpO2NvbnN0IHk9bmV3IERpY3QoZSk7eS5zZXQoIlJlc291cmNlcyIsbSk7Y29uc3Qgdz10aGlzLmRhdGEucmVjdD1bZyxjLGwsaF07eS5zZXQoIkJCb3giLHcpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD15O3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpO2xldCBuO2lmKHMpe2NvbnN0IGE9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOmF9KTtpLnB1dChhLHtkYXRhOnN9KX1lbHNlIG49dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJm4uc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTtpLnB1dChyLHtkYXRhOm59KTtyZXR1cm57cmVmOnJ9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oaSx0LGEpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KGksdCxyP3thcDpyfTp7fSksbj1uZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe2RpY3Q6cyx4cmVmOnQsYW5ub3RhdGlvbkdsb2JhbHM6ZSxldmFsdWF0b3JPcHRpb25zOmEuZXZhbHVhdG9yT3B0aW9uc30pO2kucmVmJiYobi5yZWY9bi5yZWZUb1JlcGxhY2U9aS5yZWYpO3JldHVybiBufX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppLGFubm90YXRpb25HbG9iYWxzOmF9PWUscj10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO3IuYW5ub3RhdGlvblR5cGU9Vjt2b2lkIDA9PT1yLmZpZWxkTmFtZSYmKHIuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09ci5hY3Rpb25zJiYoci5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGksdCxwQSkpO2xldCBzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlYiLGdldEFycmF5OiEwfSk7ci5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShzKTtjb25zdCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRWIixnZXRBcnJheTohMH0pO3IuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4pO2lmKHZvaWQgMD09PXMmJmEueGZhRGF0YXNldHMpe2NvbnN0IGU9dGhpcy5fdGl0bGUuc3RyO2lmKGUpe3RoaXMuX2hhc1ZhbHVlRnJvbVhGQT0hMDtyLmZpZWxkVmFsdWU9cz1hLnhmYURhdGFzZXRzLmdldFZhbHVlKGUpfX12b2lkIDA9PT1zJiZudWxsIT09ci5kZWZhdWx0RmllbGRWYWx1ZSYmKHIuZmllbGRWYWx1ZT1yLmRlZmF1bHRGaWVsZFZhbHVlKTtyLmFsdGVybmF0aXZlVGV4dD1zdHJpbmdUb1BERlN0cmluZyh0LmdldCgiVFUiKXx8IiIpO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7ci5oYXNBcHBlYXJhbmNlfHw9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1yLmZpZWxkVmFsdWUmJm51bGwhPT1yLmZpZWxkVmFsdWU7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KTtyLmZpZWxkVHlwZT1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtjb25zdCBnPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRSIn0pLGM9YS5hY3JvRm9ybS5nZXQoIkRSIiksbD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6ZyxhY3JvRm9ybVJlc291cmNlczpjLGFwcGVhcmFuY2VSZXNvdXJjZXM6bCxtZXJnZWRSZXNvdXJjZXM6RGljdC5tZXJnZSh7eHJlZjppLGRpY3RBcnJheTpbZyxsLGNdLG1lcmdlU3ViRGljdHM6ITB9KX07ci5maWVsZEZsYWdzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihyLmZpZWxkRmxhZ3MpfHxyLmZpZWxkRmxhZ3M8MCkmJihyLmZpZWxkRmxhZ3M9MCk7ci5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyQSk7ci5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhzQSk7ci5oaWRkZW49dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncywkKXx8dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncyx0QSl9X2RlY29kZUZvcm1WYWx1ZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmZpbHRlcigoZT0+InN0cmluZyI9PXR5cGVvZiBlKSkubWFwKChlPT5zdHJpbmdUb1BERlN0cmluZyhlKSkpOmUgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiEwfW11c3RCZVZpZXdlZChlLHQpe3JldHVybiB0P3RoaXMudmlld2FibGU6c3VwZXIubXVzdEJlVmlld2VkKGUsdCkmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsdEEpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gYTtyZXR1cm4gZ2V0Um90YXRpb25NYXRyaXgodCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPTA9PT10fHwxODA9PT10P2AwIDAgJHtpfSAke2F9IHJlYDpgMCAwICR7YX0gJHtpfSByZWA7bGV0IHM9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihzPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtyfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3MrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtyfSBTIGB9cmV0dXJuIHN9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpe2lmKGkmQyYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpO2NvbnN0IHI9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaSxhKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1yKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGksYSk7Y29uc3Qgcz1uZXcgT3BlcmF0b3JMaXN0O2lmKCF0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8bnVsbD09PXIpcmV0dXJue29wTGlzdDpzLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Y29uc3Qgbj0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZpJmMpLG89WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZz1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbyxbMSwwLDAsMSwwLDBdKTtsZXQgbDt0aGlzLm9jJiYobD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWwmJnMuYWRkT3AoS2UsWyJPQyIsbF0pO3MuYWRkT3AoVmUsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxnLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSksbl0pO2NvbnN0IGg9bmV3IFN0cmluZ1N0cmVhbShyKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmgsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OnN9KTtzLmFkZE9wKFplLFtdKTt2b2lkIDAhPT1sJiZzLmFkZE9wKFRlLFtdKTtyZXR1cm57b3BMaXN0OnMsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOm59fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dGhpcy5ib3JkZXJDb2xvciYmdC5zZXQoIkJDIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYm9yZGVyQ29sb3IpKTt0aGlzLmJhY2tncm91bmRDb2xvciYmdC5zZXQoIkJHIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYmFja2dyb3VuZENvbG9yKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hbWVuZFNhdmVkRGljdChlLHQpe31zZXRWYWx1ZShlLHQsaSxhKXtjb25zdHtkaWN0OnIscmVmOnN9PWZ1bmN0aW9uIGdldFBhcmVudFRvVXBkYXRlKGUsdCxpKXtjb25zdCBhPW5ldyBSZWZTZXQscj1lLHM9e2RpY3Q6bnVsbCxyZWY6bnVsbH07Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmIWEuaGFzKHQpOyl7YS5wdXQodCk7aWYoZS5oYXMoIlQiKSlicmVhaztpZighKCh0PWUuZ2V0UmF3KCJQYXJlbnQiKSlpbnN0YW5jZW9mIFJlZikpcmV0dXJuIHM7ZT1pLmZldGNoKHQpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlIT09cil7cy5kaWN0PWU7cy5yZWY9dH1yZXR1cm4gc30oZSx0aGlzLnJlZixpKTtpZihyKXtpZighYS5oYXMocykpe2NvbnN0IGU9ci5jbG9uZSgpO2Uuc2V0KCJWIix0KTthLnB1dChzLHtkYXRhOmV9KTtyZXR1cm4gZX19ZWxzZSBlLnNldCgiViIsdCk7cmV0dXJuIG51bGx9YXN5bmMgc2F2ZShlLHQsaSxyKXtjb25zdCBzPWk/LmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhzPy5ub1ZpZXcscz8ubm9QcmludCk7bGV0IG89cz8udmFsdWUsZz1zPy5yb3RhdGlvbjtpZihvPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PW8pe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PWcmJnZvaWQgMD09PW4pcmV0dXJuO298fD10aGlzLmRhdGEuZmllbGRWYWx1ZX1pZih2b2lkIDA9PT1nJiYhdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZBcnJheS5pc0FycmF5KG8pJiZBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmaXNBcnJheUVxdWFsKG8sdGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZ2b2lkIDA9PT1uKXJldHVybjt2b2lkIDA9PT1nJiYoZz10aGlzLnJvdGF0aW9uKTtsZXQgYz1udWxsO2lmKCF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpe2M9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaCxpKTtpZihudWxsPT09YyYmdm9pZCAwPT09bilyZXR1cm59bGV0IGw9ITE7aWYoYz8ubmVlZEFwcGVhcmFuY2VzKXtsPSEwO2M9bnVsbH1jb25zdHt4cmVmOkN9PWUsUT1DLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoUSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBFPW5ldyBEaWN0KEMpO2Zvcihjb25zdCBlIG9mIFEuZ2V0S2V5cygpKSJBUCIhPT1lJiZFLnNldChlLFEuZ2V0UmF3KGUpKTtpZih2b2lkIDAhPT1uKXtFLnNldCgiRiIsbik7aWYobnVsbD09PWMmJiFsKXtjb25zdCBlPVEuZ2V0UmF3KCJBUCIpO2UmJkUuc2V0KCJBUCIsZSl9fWNvbnN0IHU9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvfSxkPXRoaXMuc2V0VmFsdWUoRSxBcnJheS5pc0FycmF5KG8pP28ubWFwKHN0cmluZ1RvQXNjaWlPclVURjE2QkUpOnN0cmluZ1RvQXNjaWlPclVURjE2QkUobyksQyxyKTt0aGlzLmFtZW5kU2F2ZWREaWN0KGksZHx8RSk7Y29uc3QgZj10aGlzLl9nZXRNS0RpY3QoZyk7ZiYmRS5zZXQoIk1LIixmKTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpFLHhmYTp1LG5lZWRBcHBlYXJhbmNlczpsfSk7aWYobnVsbCE9PWMpe2NvbnN0IGU9Qy5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KEMpO0Uuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2NvbnN0IHM9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKEMpLG49bmV3IFN0cmluZ1N0cmVhbShjKSxvPW4uZGljdD1uZXcgRGljdChDKTtvLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7by5zZXQoIlJlc291cmNlcyIscyk7by5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBnPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSk7ZyE9PWEmJm8uc2V0KCJNYXRyaXgiLGcpO3IucHV0KGUse2RhdGE6bix4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KX1FLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCl9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGksYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcob0EpKXJldHVybiBudWxsO2NvbnN0IHI9YT8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHMsbjtpZihyKXtzPXIuZm9ybWF0dGVkVmFsdWV8fHIudmFsdWU7bj1yLnJvdGF0aW9ufWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2NvbnN0IGc9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoYSk7aWYodm9pZCAwPT09cyl7cz10aGlzLmRhdGEuZmllbGRWYWx1ZTtpZighcylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2B9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTthc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltRW5kKCk7aWYodGhpcy5kYXRhLmNvbWJvKXtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmZpbmQoKCh7ZXhwb3J0VmFsdWU6ZX0pPT5zPT09ZSkpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2A7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IGMsbD0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKChlPT5lLm5vcm1hbGl6ZSgiTkZDIikpKTtsPWMubGVuZ3RofWVsc2UgYz1bcy5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldCBDPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLFE9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1uJiYyNzAhPT1ufHwoW1EsQ109W0MsUV0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2xldCBFLHUsZCxmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7Y29uc3QgcD1bXTtsZXQgbT0hMTtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PWYuZW5jb2RlU3RyaW5nKGUpO3QubGVuZ3RoPjEmJihtPSEwKTtwLnB1c2godC5qb2luKCIiKSl9aWYobSYmaSZoKXJldHVybntuZWVkQXBwZWFyYW5jZXM6ITB9O2lmKG0mJnRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBpPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixhPW5ldyBGYWtlVW5pY29kZUZvbnQoZS54cmVmLGkpLHI9YS5jcmVhdGVGb250UmVzb3VyY2VzKGMuam9pbigiIikpLG49ci5nZXRSYXcoIkZvbnQiKTtpZih0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuaGFzKCJGb250Iikpe2NvbnN0IGU9dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmdldCgiRm9udCIpO2Zvcihjb25zdCB0IG9mIG4uZ2V0S2V5cygpKWUuc2V0KHQsbi5nZXRSYXcodCkpfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIsbik7Y29uc3Qgbz1hLmZvbnROYW1lLm5hbWU7Zj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scik7Zm9yKGxldCBlPTAsdD1wLmxlbmd0aDtlPHQ7ZSsrKXBbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhjW2VdKTtjb25zdCBnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9Z31lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpfWxldCB5PWYuZGVzY2VudDt5PWlzTmFOKHkpP28qZDpNYXRoLm1heChvKmQsTWF0aC5hYnMoeSkqdSk7Y29uc3Qgdz1NYXRoLm1pbihNYXRoLmZsb29yKChDLXUpLzIpLDEpLGI9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShFLHAsZix1LFEsQyxiLDIsdyx5LGQsYSk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKEUsZixwWzBdLHUsUSxDLDIsdyx5LGQsYSk7Y29uc3QgRD13K3k7aWYoMD09PWJ8fGI+MilyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcoMil9ICR7bnVtYmVyVG9TdHJpbmcoRCl9IFRtICgke2VzY2FwZVN0cmluZyhwWzBdKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQocFswXSxmLHUsUSxiLHtzaGlmdDowfSwyLEQpfSBFVCBRIEVNQ2B9c3RhdGljIGFzeW5jIF9nZXRGb250RGF0YShlLHQsaSxhKXtjb25zdCByPW5ldyBPcGVyYXRvckxpc3Qscz17Zm9udDpudWxsLGNsb25lKCl7cmV0dXJuIHRoaXN9fSx7Zm9udE5hbWU6bixmb250U2l6ZTpvfT1pO2F3YWl0IGUuaGFuZGxlU2V0Rm9udChhLFtuJiZOYW1lLmdldChuKSxvXSxudWxsLHIsdCxzLG51bGwpO3JldHVybiBzLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsaSxhLHIpe2xldHtmb250U2l6ZTpufT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG89KG58fDEyKSpzLGc9TWF0aC5yb3VuZChlL28pO2lmKCFuKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0V2lkdGgoaSxhKTtuPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3MsdC9yKSk7Zz0xfWVsc2V7Y29uc3QgYz1pLnNwbGl0KC9cclxuP3xcbi8pLGw9W107Zm9yKGNvbnN0IGUgb2YgYyl7Y29uc3QgdD1hLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxpPWEuY2hhcnNUb0dseXBocyh0KSxyPWEuZ2V0Q2hhclBvc2l0aW9ucyh0KTtsLnB1c2goe2xpbmU6dCxnbHlwaHM6aSxwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPWk9PntsZXQgcj0wO2Zvcihjb25zdCBzIG9mIGwpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLGEsaSx0LHMpLmxlbmd0aCppO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07Zz1NYXRoLm1heChnLHIpO2Zvcig7Oyl7bz1lL2c7bj1yb3VuZFdpdGhUd29EaWdpdHMoby9zKTtpZighaXNUb29CaWcobikpYnJlYWs7ZysrfX1jb25zdHtmb250TmFtZTpjLGZvbnRDb2xvcjpsfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOml9KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGksITApfWB9KHtmb250U2l6ZTpuLGZvbnROYW1lOmMsZm9udENvbG9yOmx9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UsbixlL2ddfV9yZW5kZXJUZXh0KGUsdCxpLGEscixzLG4sbyl7bGV0IGc7aWYoMT09PXIpe2c9KGEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaSkvMn1lbHNlIGlmKDI9PT1yKXtnPWEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaS1ufWVsc2UgZz1uO2NvbnN0IGM9bnVtYmVyVG9TdHJpbmcoZy1zLnNoaWZ0KTtzLnNoaWZ0PWc7cmV0dXJuYCR7Y30gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6aSxhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxyPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFyKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsaV0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMocikpcmV0dXJuIGV9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGk9YS5nZXQoIkZvbnQiKTtpZihpIGluc3RhbmNlb2YgRGljdCYmaS5oYXMocikpe2NvbnN0IGE9bmV3IERpY3QoZSk7YS5zZXQocixpLmdldFJhdyhyKSk7Y29uc3Qgcz1uZXcgRGljdChlKTtzLnNldCgiRm9udCIsYSk7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W3MsdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9JDt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihpKXx8aTwwfHxpPjIpJiYoaT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1pO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCkmJihhPTApO3RoaXMuZGF0YS5tYXhMZW49YTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKG5BKTt0aGlzLmRhdGEuY29tYj10aGlzLmhhc0ZpZWxkRmxhZyhCQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhuQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhvQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhsQSkmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhDQSl9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCl7Y29uc3QgaD1yL3RoaXMuZGF0YS5tYXhMZW4sQz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhsKSxRPVtdLEU9dC5nZXRDaGFyUG9zaXRpb25zKGkpO2Zvcihjb25zdFtlLHRdb2YgRSlRLnB1c2goYCgke2VzY2FwZVN0cmluZyhpLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7Y29uc3QgdT1RLmpvaW4oYCAke251bWJlclRvU3RyaW5nKGgpfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtDfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyhuKX0gJHtudW1iZXJUb1N0cmluZyhvK2cpfSBUbSAke3V9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsaSxhLHIscyxuLG8sZyxjLGwsaCl7Y29uc3QgQz1bXSxRPXItMipvLEU9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLHM9dC5sZW5ndGg7ZTxzO2UrKyl7Y29uc3Qgcz10W2VdLGg9dGhpcy5fc3BsaXRMaW5lKHMsaSxhLFEpO2ZvcihsZXQgdD0wLHM9aC5sZW5ndGg7dDxzO3QrKyl7Y29uc3Qgcz1oW3RdLFE9MD09PWUmJjA9PT10Py1nLShsLWMpOi1sO0MucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHMsaSxhLHIsbixFLG8sUSkpfX1jb25zdCB1PXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGQ9Qy5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHt1fUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKHMpfSBUbSAke2R9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxpLGEscj17fSl7ZT1yLmxpbmV8fGU7Y29uc3Qgcz1yLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKHMubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBuPXIucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1pLzFlMyxnPVtdO2xldCBjPS0xLGw9LTEsaD0tMSxDPTAsUT0wO2ZvcihsZXQgdD0wLGk9cy5sZW5ndGg7dDxpO3QrKyl7Y29uc3RbaSxyXT1uW3RdLEU9c1t0XSx1PUUud2lkdGgqbztpZigiICI9PT1FLnVuaWNvZGUpaWYoUSt1PmEpe2cucHVzaChlLnN1YnN0cmluZyhDLGkpKTtDPWk7UT11O2M9LTE7aD0tMX1lbHNle1ErPXU7Yz1pO2w9cjtoPXR9ZWxzZSBpZihRK3U+YSlpZigtMSE9PWMpe2cucHVzaChlLnN1YnN0cmluZyhDLGwpKTtDPWw7dD1oKzE7Yz0tMTtRPTB9ZWxzZXtnLnB1c2goZS5zdWJzdHJpbmcoQyxpKSk7Qz1pO1E9dX1lbHNlIFErPXV9QzxlLmxlbmd0aCYmZy5wdXNoKGUuc3Vic3RyaW5nKEMsZS5sZW5ndGgpKTtyZXR1cm4gZ31hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGkpe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsaSk7Y29uc3QgYT10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIWEpcmV0dXJuO2NvbnN0IHI9YS5qb2luKCJcbiIpO2lmKHI9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgcz1yLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKChlLHQpPT50P2BcXCR7dH1gOiJcXHMrIikpO25ldyBSZWdFeHAoYF5cXHMqJHtzfVxccyokYCkudGVzdCh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUuc3BsaXQoIlxuIikpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmhhc0ZpZWxkRmxhZyhvQSksY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMuZGF0YS5jaGVja0JveD0hdGhpcy5oYXNGaWVsZEZsYWcoZ0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhnQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhJQSk7dGhpcy5kYXRhLnB1c2hCdXR0b249dGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO2lmKHRoaXMuZGF0YS5jaGVja0JveCl0aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk7ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pdGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpO2Vsc2UgaWYodGhpcy5kYXRhLnB1c2hCdXR0b24pe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKX1lbHNlIHdhcm4oIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsaSxyKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLCExLHIpO2xldCBzPW51bGwsbj1udWxsO2lmKHIpe2NvbnN0IGU9ci5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO249ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLHIpO251bGw9PXMmJihzPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3Qgbz1zP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKG8pe2NvbnN0IHM9dGhpcy5hcHBlYXJhbmNlLGc9bG9va3VwTWF0cml4KG8uZGljdC5nZXRBcnJheSgiTWF0cml4IiksYSk7biYmby5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpKTt0aGlzLmFwcGVhcmFuY2U9bztjb25zdCBjPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxyKTt0aGlzLmFwcGVhcmFuY2U9cztvLmRpY3Quc2V0KCJNYXRyaXgiLGcpO3JldHVybiBjfXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGksYSl7dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3NhdmVDaGVja2JveChlLHQsaSxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24mJnRoaXMuX3NhdmVSYWRpb0J1dHRvbihlLHQsaSxhKX1hc3luYyBfc2F2ZUNoZWNrYm94KGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1uJiYobj10aGlzLnJvdGF0aW9uKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTt0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiJPZmYiKTtvJiZ0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgaT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxhPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLHI9WzAsMCxpLGFdLHM9LjgqTWF0aC5taW4oaSxhKTtsZXQgbixvO2lmKCJjaGVjayI9PT10KXtuPXt3aWR0aDouNzU1KnMsaGVpZ2h0Oi43MDUqc307bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtuPXt3aWR0aDouNzkxKnMsaGVpZ2h0Oi43MDUqc307bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBnPWBxIEJUIC9QZGZKc1phRGIgJHtzfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoaS1uLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoYS1uLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxjPW5ldyBEaWN0KGUueHJlZik7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdChlLnhyZWYpLGg9bmV3IERpY3QoZS54cmVmKTtoLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2wuc2V0KCJGb250IixoKTtjLnNldCgiUmVzb3VyY2VzIixsKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oZyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWM7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBpPXQuZ2V0KCJOIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgYSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPWEpO2NvbnN0IHI9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLHM9aS5nZXRLZXlzKCk7aWYoMD09PXMubGVuZ3RoKXMucHVzaCgiT2ZmIixyKTtlbHNlIGlmKDE9PT1zLmxlbmd0aCkiT2ZmIj09PXNbMF0/cy5wdXNoKHIpOnMudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihzLmluY2x1ZGVzKHIpKXtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixyKX1lbHNle2NvbnN0IGU9cy5maW5kKChlPT4iT2ZmIiE9PWUpKTtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixlKX1zLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9c1sxXTtjb25zdCBuPWkuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9uOm51bGw7Y29uc3Qgbz1pLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgaT10LmdldCgiViIpO2kgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGkpKX1jb25zdCBpPWUuZGljdC5nZXQoIkFQIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9aS5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IHI9YS5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3I6bnVsbDtjb25zdCBzPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/czpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJaYXBmRGluZ2JhdHMiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiWmFwZkRpbmdiYXRzRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pLmZldGNoSWZSZWYoYVtlXSkscj1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9pLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShyP2kuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pOzA9PT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgmJnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wJiYodGhpcy5kYXRhLm9wdGlvbnM9dGhpcy5kYXRhLmZpZWxkVmFsdWUubWFwKChlPT4oe2V4cG9ydFZhbHVlOmUsZGlzcGxheVZhbHVlOmV9KSkpKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoY0EpO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhoQSk7dGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2NvbnN0IGE9W10se29wdGlvbnM6cn09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxzPXIubGVuZ3RoO2U8cztlKyspaWYocltlXS5leHBvcnRWYWx1ZT09PWlbdF0pe2EucHVzaChlKTt0Kz0xfXQuc2V0KCJJIixhKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmRhdGEuY29tYm8pcmV0dXJuIHN1cGVyLl9nZXRBcHBlYXJhbmNlKGUsdCxpLGEpO2xldCByLG47Y29uc3Qgbz1hPy5nZXQodGhpcy5kYXRhLmlkKTtpZihvKXtuPW8ucm90YXRpb247cj1vLnZhbHVlfWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXImJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09cj9yPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkocil8fChyPVtyXSk7bGV0IGc9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW4mJjI3MCE9PW58fChbYyxnXT1bZyxjXSk7Y29uc3QgbD10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsaD1bXTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtyLmluY2x1ZGVzKHQpJiZoLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgQz1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBRLHtmb250U2l6ZTpFfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKEUpUT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGctMSkvbDtsZXQgdCxpPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxDKTtpZihhPmkpe2k9YTt0PWV9fVtRLEVdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLGMtNCx0LEMsLTEpfWNvbnN0IHU9RSpzLGQ9KHUtRSkvMixmPU1hdGguZmxvb3IoZy91KTtsZXQgcD0wO2lmKGgubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uaCksdD1NYXRoLm1heCguLi5oKTtwPU1hdGgubWF4KDAsdC1mKzEpO3A+ZSYmKHA9ZSl9Y29uc3QgbT1NYXRoLm1pbihwK2YrMSxsKSx5PVsiL1R4IEJNQyBxIixgMSAxICR7Y30gJHtnfSByZSBXIG5gXTtpZihoLmxlbmd0aCl7eS5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGgpcDw9ZSYmZTxtJiZ5LnB1c2goYDEgJHtnLShlLXArMSkqdX0gJHtjfSAke3V9IHJlIGZgKX15LnB1c2goIkJUIixRLGAxIDAgMCAxIDAgJHtnfSBUbWApO2NvbnN0IHc9e3NoaWZ0OjB9O2ZvcihsZXQgZT1wO2U8bTtlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxpPWU9PT1wP2Q6MDt5LnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LEMsRSxjLDAsdywyLC11K2kpKX15LnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIHkuam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmZpZWxkVmFsdWU9bnVsbDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSF0aGlzLmRhdGEuaGFzT3duQ2FudmFzfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TjtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1HO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3QgYT1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO2EmJih0aGlzLmRhdGEucXVhZFBvaW50cz1hKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ajt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yZWN0WzBdIT09dGhpcy5kYXRhLnJlY3RbMl0mJnRoaXMuZGF0YS5yZWN0WzFdIT09dGhpcy5kYXRhLnJlY3RbM118fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgaT10LmdldCgiUGFyZW50Iik7aWYoIWkpe3dhcm4oIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn10aGlzLmRhdGEucGFyZW50UmVjdD1sb29rdXBOb3JtYWxSZWN0KGkuZ2V0QXJyYXkoIlJlY3QiKSxudWxsKTtpc05hbWUoaS5nZXQoIlJUIiksWikmJihpPWkuZ2V0KCJJUlQiKSk7aWYoaS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGkuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoaS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihpLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9aS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoaS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoaS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGkuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZXZhbHVhdG9yT3B0aW9uczp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3RoaXMuX2hhc0FwcGVhcmFuY2U9ISF0aGlzLmFwcGVhcmFuY2U7aWYodGhpcy5faGFzQXBwZWFyYW5jZSl7Y29uc3R7Zm9udENvbG9yOmUsZm9udFNpemU6YX09ZnVuY3Rpb24gcGFyc2VBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IoZSx0LGkpLnBhcnNlKCl9KHRoaXMuYXBwZWFyYW5jZSx0LGkpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udENvbG9yPWU7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT1hfHwxMH1lbHNle3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fD0xMDtjb25zdHtmb250Q29sb3I6dCxmb250U2l6ZTphfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHRoaXMuX2NvbnRlbnRzLnN0cil7dGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuX2NvbnRlbnRzLnN0ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUudHJpbUVuZCgpKSk7Y29uc3R7Y29vcmRzOmUsYmJveDp0LG1hdHJpeDppfT1GYWtlVW5pY29kZUZvbnQuZ2V0Rmlyc3RQb3NpdGlvbkluZm8odGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KGUsdCxpKX1pZih0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1lLmRpY3QuZ2V0KCJDQSIpLHM9bmV3IEZha2VVbmljb2RlRm9udChpLCJzYW5zLXNlcmlmIik7dGhpcy5hcHBlYXJhbmNlPXMuY3JlYXRlQXBwZWFyYW5jZSh0aGlzLl9jb250ZW50cy5zdHIsdGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhLHQscik7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSl9ZWxzZSB3YXJuKCJGcmVlVGV4dEFubm90YXRpb246IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKX19Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuX2hhc0FwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLGZvbnRTaXplOnMsb2xkQW5ub3RhdGlvbjpuLHJlY3Q6byxyb3RhdGlvbjpnLHVzZXI6Yyx2YWx1ZTpsfT1lLGg9bnx8bmV3IERpY3QodCk7aC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtoLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZyZWVUZXh0IikpO2lmKG4pe2guc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtoLmRlbGV0ZSgiUkMiKX1lbHNlIGguc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJSZWN0IixvKTtjb25zdCBDPWAvSGVsdiAke3N9IFRmICR7Z2V0UGRmQ29sb3IociwhMCl9YDtoLnNldCgiREEiLEMpO2guc2V0KCJDb250ZW50cyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShsKSk7aC5zZXQoIkYiLDQpO2guc2V0KCJCb3JkZXIiLFswLDAsMF0pO2guc2V0KCJSb3RhdGUiLGcpO2MmJmguc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGMpKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO2guc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtiYXNlRm9udFJlZjphLGV2YWx1YXRvcjpyLHRhc2s6bn09aSx7Y29sb3I6byxmb250U2l6ZTpnLHJlY3Q6Yyxyb3RhdGlvbjpsLHZhbHVlOmh9PWUsQz1uZXcgRGljdCh0KSxRPW5ldyBEaWN0KHQpO2lmKGEpUS5zZXQoIkhlbHYiLGEpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO1Euc2V0KCJIZWx2IixlKX1DLnNldCgiRm9udCIsUSk7Y29uc3QgRT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShyLG4se2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpnfSxDKSxbdSxkLGYscF09YztsZXQgbT1mLXUseT1wLWQ7bCUxODAhPTAmJihbbSx5XT1beSxtXSk7Y29uc3Qgdz1oLnNwbGl0KCJcbiIpLGI9Zy8xZTM7bGV0IEQ9LTEvMDtjb25zdCBTPVtdO2ZvcihsZXQgZSBvZiB3KXtjb25zdCB0PUUuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO1MucHVzaChlKTtsZXQgaT0wO2NvbnN0IGE9RS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpaSs9ZS53aWR0aCpiO0Q9TWF0aC5tYXgoRCxpKX1sZXQgaz0xO0Q+bSYmKGs9bS9EKTtsZXQgUj0xO2NvbnN0IE49cypnLEc9MSpnLE09Tip3Lmxlbmd0aDtNPnkmJihSPXkvTSk7Y29uc3QgVT1nKk1hdGgubWluKGssUik7bGV0IHgsTCxIO3N3aXRjaChsKXtjYXNlIDA6SD1bMSwwLDAsMV07TD1bY1swXSxjWzFdLG0seV07eD1bY1swXSxjWzNdLUddO2JyZWFrO2Nhc2UgOTA6SD1bMCwxLC0xLDBdO0w9W2NbMV0sLWNbMl0sbSx5XTt4PVtjWzFdLC1jWzBdLUddO2JyZWFrO2Nhc2UgMTgwOkg9Wy0xLDAsMCwtMV07TD1bLWNbMl0sLWNbM10sbSx5XTt4PVstY1syXSwtY1sxXS1HXTticmVhaztjYXNlIDI3MDpIPVswLC0xLDEsMF07TD1bLWNbM10sY1swXSxtLHldO3g9Wy1jWzNdLGNbMl0tR119Y29uc3QgSj1bInEiLGAke0guam9pbigiICIpfSAwIDAgY21gLGAke0wuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKFUpfSBUZmBdO0oucHVzaChgJHt4LmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKFNbMF0pfSkgVGpgKTtjb25zdCB2PW51bWJlclRvU3RyaW5nKE4pO2ZvcihsZXQgZT0xLHQ9Uy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1TW2VdO0oucHVzaChgMCAtJHt2fSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfUoucHVzaCgiRVQiLCJRIik7Y29uc3QgWT1KLmpvaW4oIlxuIiksSz1uZXcgRGljdCh0KTtLLnNldCgiRm9ybVR5cGUiLDEpO0suc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtLLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Sy5zZXQoIkJCb3giLGMpO0suc2V0KCJSZXNvdXJjZXMiLEMpO0suc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1jWzBdLC1jWzFdXSk7Y29uc3QgVD1uZXcgU3RyaW5nU3RyZWFtKFkpO1QuZGljdD1LO3JldHVybiBUfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9VTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksbj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxvPW4/cjpudWxsLGc9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxjPTIqZyxsPVt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzBdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1sxXS1jLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMl0rYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzNdK2NdO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLGwpfHwodGhpcy5yZWN0YW5nbGU9bCk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHtnfSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpuLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7YVswXX0gJHthWzFdfSBtYCxgJHthWzJdfSAke2FbM119IGxgLCJTIik7cmV0dXJuW3RbMF0tZyx0WzJdK2csdFs3XS1nLHRbM10rZ119fSl9fX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT14O3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxzPXI/Z2V0UGRmQ29sb3JBcnJheShyKTpudWxsLG49cz9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFs0XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzVdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdFs0XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLG49dFszXS10WzddLXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7ZS5wdXNoKGAke2l9ICR7YX0gJHtyfSAke259IHJlYCk7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1MO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxyPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkscz1yP2dldFBkZkNvbG9yQXJyYXkocik6bnVsbCxuPXM/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsZz1pKyhyLWkpLzIsYz1hKyhuLWEpLzIsbD0oci1pKS8yKm8saD0obi1hKS8yKm87ZS5wdXNoKGAke2d9ICR7bn0gbWAsYCR7ZytsfSAke259ICR7cn0gJHtjK2h9ICR7cn0gJHtjfSBjYCxgJHtyfSAke2MtaH0gJHtnK2x9ICR7YX0gJHtnfSAke2F9IGNgLGAke2ctbH0gJHthfSAke2l9ICR7Yy1ofSAke2l9ICR7Y30gY2AsYCR7aX0gJHtjK2h9ICR7Zy1sfSAke259ICR7Z30gJHtufSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1KO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShhLG51bGwpKXJldHVybjtjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShhKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLG49MipzLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0yKXtvWzBdPU1hdGgubWluKG9bMF0scltlXS1uKTtvWzFdPU1hdGgubWluKG9bMV0scltlKzFdLW4pO29bMl09TWF0aC5tYXgob1syXSxyW2VdK24pO29bM109TWF0aC5tYXgob1szXSxyW2UrMV0rbil9VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbyl8fCh0aGlzLnJlY3RhbmdsZT1vKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3N9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpO3QrPTIpZS5wdXNoKGAke3JbdF19ICR7clt0KzFdfSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUh9fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU99fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Vzt0aGlzLmRhdGEuaW5rTGlzdHM9W107dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtjb25zdCBhPXQuZ2V0QXJyYXkoIklua0xpc3QiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upe2lmKCFBcnJheS5pc0FycmF5KGFbZV0pKWNvbnRpbnVlO2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShhW2VdLmxlbmd0aCk7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2godCk7Zm9yKGxldCByPTAscz1hW2VdLmxlbmd0aDtyPHM7cis9Mil7Y29uc3Qgcz1pLmZldGNoSWZSZWYoYVtlXVtyXSksbj1pLmZldGNoSWZSZWYoYVtlXVtyKzFdKTtpZigibnVtYmVyIj09dHlwZW9mIHMmJiJudW1iZXIiPT10eXBlb2Ygbil7dFtyXT1zO3RbcisxXT1ufX19aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxzPTIqcixuPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTIpe25bMF09TWF0aC5taW4oblswXSxlW3RdLXMpO25bMV09TWF0aC5taW4oblsxXSxlW3QrMV0tcyk7blsyXT1NYXRoLm1heChuWzJdLGVbdF0rcyk7blszXT1NYXRoLm1heChuWzNdLGVbdCsxXStzKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKz0yKWUucHVzaChgJHt0W2ldfSAke3RbaSsxXX0gJHswPT09aT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7b2xkQW5ub3RhdGlvbjpyLGNvbG9yOnMsb3BhY2l0eTpuLHBhdGhzOm8sb3V0bGluZXM6ZyxyZWN0OmMscm90YXRpb246bCx0aGlja25lc3M6aCx1c2VyOkN9PWUsUT1yfHxuZXcgRGljdCh0KTtRLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO1Euc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSW5rIikpO1Euc2V0KHI/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO1Euc2V0KCJSZWN0IixjKTtRLnNldCgiSW5rTGlzdCIsZz8ucG9pbnRzfHxvLnBvaW50cyk7US5zZXQoIkYiLDQpO1Euc2V0KCJSb3RhdGUiLGwpO0MmJlEuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKEMpKTtnJiZRLnNldCgiSVQiLE5hbWUuZ2V0KCJJbmtIaWdobGlnaHQiKSk7Y29uc3QgRT1uZXcgRGljdCh0KTtRLnNldCgiQlMiLEUpO0Uuc2V0KCJXIixoKTtRLnNldCgiQyIsQXJyYXkuZnJvbShzLChlPT5lLzI1NSkpKTtRLnNldCgiQ0EiLG4pO2NvbnN0IHU9bmV3IERpY3QodCk7US5zZXQoIkFQIix1KTtpP3Uuc2V0KCJOIixpKTp1LnNldCgiTiIsYSk7cmV0dXJuIFF9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsaSk7Y29uc3R7Y29sb3I6YSxyZWN0OnIscGF0aHM6cyx0aGlja25lc3M6bixvcGFjaXR5Om99PWUsZz1bYCR7bn0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmZy5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiBzLmxpbmVzKXtnLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixpPWUubGVuZ3RoO3Q8aTt0Kz02KWlmKGlzTmFOKGVbdF0pKWcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W2ksYSxyLHMsbixvXT1lLnNsaWNlKHQsdCs2KTtnLnB1c2goW2ksYSxyLHMsbixvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWcucHVzaCgiUyIpO2NvbnN0IGM9Zy5qb2luKCJcbiIpLGw9bmV3IERpY3QodCk7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2wuc2V0KCJCQm94IixyKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksaT1uZXcgRGljdCh0KSxhPW5ldyBEaWN0KHQpO2Euc2V0KCJDQSIsbyk7YS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7aS5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixpKTtsLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOntvdXRsaW5lOnN9LG9wYWNpdHk6bn09ZSxvPVtgJHtnZXRQZGZDb2xvcihhLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1s0XSl9ICR7bnVtYmVyVG9TdHJpbmcoc1s1XSl9IG1gKTtmb3IobGV0IGU9Nix0PXMubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKHNbZV0pKW8ucHVzaChgJHtudW1iZXJUb1N0cmluZyhzW2UrNF0pfSAke251bWJlclRvU3RyaW5nKHNbZSs1XSl9IGxgKTtlbHNle2NvbnN0W3QsaSxhLHIsbixnXT1zLnNsaWNlKGUsZSs2KTtvLnB1c2goW3QsaSxhLHIsbixnXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX1vLnB1c2goImggZiIpO2NvbnN0IGc9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdCh0KSxoPW5ldyBEaWN0KHQpO2wuc2V0KCJFeHRHU3RhdGUiLGgpO2Muc2V0KCJSZXNvdXJjZXMiLGwpO2NvbnN0IEM9bmV3IERpY3QodCk7aC5zZXQoIlIwIixDKTtDLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09bil7Qy5zZXQoImNhIixuKTtDLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBRPW5ldyBTdHJpbmdTdHJlYW0oZyk7US5kaWN0PWM7cmV0dXJuIFF9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXY7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmd2FybigiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLG9sZEFubm90YXRpb246cyxvcGFjaXR5Om4scmVjdDpvLHJvdGF0aW9uOmcsdXNlcjpjLHF1YWRQb2ludHM6bH09ZSxoPXN8fG5ldyBEaWN0KHQpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7aC5zZXQocz8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIlJlY3QiLG8pO2guc2V0KCJGIiw0KTtoLnNldCgiQm9yZGVyIixbMCwwLDBdKTtoLnNldCgiUm90YXRlIixnKTtoLnNldCgiUXVhZFBvaW50cyIsbCk7aC5zZXQoIkMiLEFycmF5LmZyb20ociwoZT0+ZS8yNTUpKSk7aC5zZXQoIkNBIixuKTtjJiZoLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShjKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtoLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixpfHxhKX1yZXR1cm4gaH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7Y29uc3R7Y29sb3I6YSxyZWN0OnIsb3V0bGluZXM6cyxvcGFjaXR5Om59PWUsbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl0sZz1bXTtmb3IoY29uc3QgZSBvZiBzKXtnLmxlbmd0aD0wO2cucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGk9ZS5sZW5ndGg7dDxpO3QrPTIpZy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdF0pfSAke251bWJlclRvU3RyaW5nKGVbdCsxXSl9IGxgKTtnLnB1c2goImgiKTtvLnB1c2goZy5qb2luKCJcbiIpKX1vLnB1c2goImYqIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksbD1uZXcgRGljdCh0KTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtsLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7bC5zZXQoIkJCb3giLHIpO2wuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9bmV3IERpY3QodCk7aC5zZXQoIkV4dEdTdGF0ZSIsQyk7bC5zZXQoIlJlc291cmNlcyIsaCk7Y29uc3QgUT1uZXcgRGljdCh0KTtDLnNldCgiUjAiLFEpO1Euc2V0KCJCTSIsTmFtZS5nZXQoIk11bHRpcGx5IikpO2lmKDEhPT1uKXtRLnNldCgiY2EiLG4pO1Euc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpfWNvbnN0IEU9bmV3IFN0cmluZ1N0cmVhbShjKTtFLmRpY3Q9bDtyZXR1cm4gRX19Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUs7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT0odFsxXS10WzVdKS82O2xldCBhPWkscj10WzRdO2NvbnN0IHM9dFs1XSxuPXRbNl07ZS5wdXNoKGAke3J9ICR7cythfSBtYCk7ZG97cis9MjthPTA9PT1hP2k6MDtlLnB1c2goYCR7cn0gJHtzK2F9IGxgKX13aGlsZShyPG4pO2UucHVzaCgiUyIpO3JldHVyblt0WzRdLG4scy0yKmkscysyKmldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1UO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaCgodFswXSt0WzRdKS8yKyIgIisodFsxXSt0WzVdKS8yKyIgbSIsKHRbMl0rdFs2XSkvMisiICIrKHRbM10rdFs3XSkvMisiIGwiLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ueyNUO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1xO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMX1tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhlLHQ9bnVsbCl7aWYoZSl7aWYoIXRoaXMuZGF0YS5pc0VkaXRhYmxlKXJldHVybiExO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhczt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3JldHVybiEwfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy4jVDtyZXR1cm4hdD8uaGFzKHRoaXMuZGF0YS5pZCl9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09ZSxyPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKSxzPXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO3MuZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBuPXMuZ2V0SW1hZ2VEYXRhKDAsMCxpLGEpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkobi5idWZmZXIpLGc9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PiEhKDI1NSZ+ZSkpO2lmKGcpe3MuZmlsbFN0eWxlPSJ3aGl0ZSI7cy5maWxsUmVjdCgwLDAsaSxhKTtzLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgYz1yLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oKGU9PmUuYXJyYXlCdWZmZXIoKSkpLGw9TmFtZS5nZXQoIlhPYmplY3QiKSxoPU5hbWUuZ2V0KCJJbWFnZSIpLEM9bmV3IERpY3QodCk7Qy5zZXQoIlR5cGUiLGwpO0Muc2V0KCJTdWJ0eXBlIixoKTtDLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7Qy5zZXQoIkNvbG9yU3BhY2UiLE5hbWUuZ2V0KCJEZXZpY2VSR0IiKSk7Qy5zZXQoIkZpbHRlciIsTmFtZS5nZXQoIkRDVERlY29kZSIpKTtDLnNldCgiQkJveCIsWzAsMCxpLGFdKTtDLnNldCgiV2lkdGgiLGkpO0Muc2V0KCJIZWlnaHQiLGEpO2xldCBRPW51bGw7aWYoZyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShvLmxlbmd0aCk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09b1t0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09MjU1Jm9bdF07Y29uc3Qgcj1uZXcgRGljdCh0KTtyLnNldCgiVHlwZSIsbCk7ci5zZXQoIlN1YnR5cGUiLGgpO3Iuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtyLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZUdyYXkiKSk7ci5zZXQoIldpZHRoIixpKTtyLnNldCgiSGVpZ2h0IixhKTtRPW5ldyBTdHJlYW0oZSwwLDAscil9cmV0dXJue2ltYWdlU3RyZWFtOm5ldyBTdHJlYW0oYXdhaXQgYywwLDAsQyksc21hc2tTdHJlYW06USx3aWR0aDppLGhlaWdodDphfX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e29sZEFubm90YXRpb246cixyZWN0OnMscm90YXRpb246bix1c2VyOm99PWUsZz1yfHxuZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2cuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7Zy5zZXQocj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Zy5zZXQoIlJlY3QiLHMpO2cuc2V0KCJGIiw0KTtnLnNldCgiQm9yZGVyIixbMCwwLDBdKTtnLnNldCgiUm90YXRlIixuKTtvJiZnLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShvKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtnLnNldCgiQVAiLGUpO2k/ZS5zZXQoIk4iLGkpOmUuc2V0KCJOIixhKX1yZXR1cm4gZ31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7aWYoZS5vbGRBbm5vdGF0aW9uKXJldHVybiBudWxsO2NvbnN0e3JvdGF0aW9uOmF9PWUse2ltYWdlUmVmOnIsd2lkdGg6cyxoZWlnaHQ6bn09aS5pbWFnZSxvPW5ldyBEaWN0KHQpLGc9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGcpO2cuc2V0KCJJbTAiLHIpO2NvbnN0IGM9YHEgJHtzfSAwIDAgJHtufSAwIDAgY20gL0ltMCBEbyBRYCxsPW5ldyBEaWN0KHQpO2wuc2V0KCJGb3JtVHlwZSIsMSk7bC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2wuc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtsLnNldCgiQkJveCIsWzAsMCxzLG5dKTtsLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscyxuKTtsLnNldCgiTWF0cml4IixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZSxhPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSxpKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlPWEuc2VyaWFsaXphYmxlO2NvbnN0IHI9dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1yIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhyLm5hbWUpOiJQdXNoUGluIjtjb25zdCBzPXQuZ2V0KCJjYSIpO3RoaXMuZGF0YS5maWxsQWxwaGE9Im51bWJlciI9PXR5cGVvZiBzJiZzPj0wJiZzPD0xP3M6bnVsbH19Y2xhc3MgRGVjcnlwdFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1pO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aCxhPWkrZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIoYSkuc2V0KGUsaSk7dGhpcy5idWZmZXJMZW5ndGg9YX19Y2xhc3MgQVJDRm91ckNpcGhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmE9MDt0aGlzLmI9MDtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1NiksaT1lLmxlbmd0aDtmb3IobGV0IGU9MDtlPDI1NjsrK2UpdFtlXT1lO2ZvcihsZXQgYT0wLHI9MDthPDI1NjsrK2Epe2NvbnN0IHM9dFthXTtyPXIrcytlW2ElaV0mMjU1O3RbYV09dFtyXTt0W3JdPXN9dGhpcy5zPXR9ZW5jcnlwdEJsb2NrKGUpe2xldCB0PXRoaXMuYSxpPXRoaXMuYjtjb25zdCBhPXRoaXMucyxyPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBuPTA7bjxyOysrbil7dD10KzEmMjU1O2NvbnN0IHI9YVt0XTtpPWkrciYyNTU7Y29uc3Qgbz1hW2ldO2FbdF09bzthW2ldPXI7c1tuXT1lW25dXmFbcitvJjI1NV19dGhpcy5hPXQ7dGhpcy5iPWk7cmV0dXJuIHN9ZGVjcnlwdEJsb2NrKGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX1lbmNyeXB0KGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX19Y29uc3QgZW89ZnVuY3Rpb24gY2FsY3VsYXRlTUQ1Q2xvc3VyZSgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pLHQ9bmV3IEludDMyQXJyYXkoWy02ODA4NzY5MzYsLTM4OTU2NDU4Niw2MDYxMDU4MTksLTEwNDQ1MjUzMzAsLTE3NjQxODg5NywxMjAwMDgwNDI2LC0xNDczMjMxMzQxLC00NTcwNTk4MywxNzcwMDM1NDE2LC0xOTU4NDE0NDE3LC00MjA2MywtMTk5MDQwNDE2MiwxODA0NjAzNjgyLC00MDM0MTEwMSwtMTUwMjAwMjI5MCwxMjM2NTM1MzI5LC0xNjU3OTY1MTAsLTEwNjk1MDE2MzIsNjQzNzE3NzEzLC0zNzM4OTczMDIsLTcwMTU1ODY5MSwzODAxNjA4MywtNjYwNDc4MzM1LC00MDU1Mzc4NDgsNTY4NDQ2NDM4LC0xMDE5ODAzNjkwLC0xODczNjM5NjEsMTE2MzUzMTUwMSwtMTQ0NDY4MTQ2NywtNTE0MDM3ODQsMTczNTMyODQ3MywtMTkyNjYwNzczNCwtMzc4NTU4LC0yMDIyNTc0NDYzLDE4MzkwMzA1NjIsLTM1MzA5NTU2LC0xNTMwOTkyMDYwLDEyNzI4OTMzNTMsLTE1NTQ5NzYzMiwtMTA5NDczMDY0MCw2ODEyNzkxNzQsLTM1ODUzNzIyMiwtNzIyNTIxOTc5LDc2MDI5MTg5LC02NDAzNjQ0ODcsLTQyMTgxNTgzNSw1MzA3NDI1MjAsLTk5NTMzODY1MSwtMTk4NjMwODQ0LDExMjY4OTE0MTUsLTE0MTYzNTQ5MDUsLTU3NDM0MDU1LDE3MDA0ODU1NzEsLTE4OTQ5ODY2MDYsLTEwNTE1MjMsLTIwNTQ5MjI3OTksMTg3MzMxMzM1OSwtMzA2MTE3NDQsLTE1NjAxOTgzODAsMTMwOTE1MTY0OSwtMTQ1NTIzMDcwLC0xMTIwMjEwMzc5LDcxODc4NzI1OSwtMzQzNDg1NTUxXSk7cmV0dXJuIGZ1bmN0aW9uIGhhc2goaSxhLHIpe2xldCBzPTE3MzI1ODQxOTMsbj0tMjcxNzMzODc5LG89LTE3MzI1ODQxOTQsZz0yNzE3MzM4Nzg7Y29uc3QgYz1yKzcyJi02NCxsPW5ldyBVaW50OEFycmF5KGMpO2xldCBoLEM7Zm9yKGg9MDtoPHI7KytoKWxbaF09aVthKytdO2xbaCsrXT0xMjg7Y29uc3QgUT1jLTg7Zm9yKDtoPFE7KWxbaCsrXT0wO2xbaCsrXT1yPDwzJjI1NTtsW2grK109cj4+NSYyNTU7bFtoKytdPXI+PjEzJjI1NTtsW2grK109cj4+MjEmMjU1O2xbaCsrXT1yPj4+MjkmMjU1O2xbaCsrXT0wO2xbaCsrXT0wO2xbaCsrXT0wO2NvbnN0IEU9bmV3IEludDMyQXJyYXkoMTYpO2ZvcihoPTA7aDxjOyl7Zm9yKEM9MDtDPDE2OysrQyxoKz00KUVbQ109bFtoXXxsW2grMV08PDh8bFtoKzJdPDwxNnxsW2grM108PDI0O2xldCBpLGEscj1zLGM9bixRPW8sdT1nO2ZvcihDPTA7Qzw2NDsrK0Mpe2lmKEM8MTYpe2k9YyZRfH5jJnU7YT1DfWVsc2UgaWYoQzwzMil7aT11JmN8fnUmUTthPTUqQysxJjE1fWVsc2UgaWYoQzw0OCl7aT1jXlFedTthPTMqQys1JjE1fWVsc2V7aT1RXihjfH51KTthPTcqQyYxNX1jb25zdCBzPXUsbj1yK2krdFtDXStFW2FdfDAsbz1lW0NdO3U9UTtRPWM7Yz1jKyhuPDxvfG4+Pj4zMi1vKXwwO3I9c31zPXMrcnwwO249bitjfDA7bz1vK1F8MDtnPWcrdXwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1Jm4sbj4+OCYyNTUsbj4+MTYmMjU1LG4+Pj4yNCYyNTUsMjU1Jm8sbz4+OCYyNTUsbz4+MTYmMjU1LG8+Pj4yNCYyNTUsMjU1JmcsZz4+OCYyNTUsZz4+MTYmMjU1LGc+Pj4yNCYyNTVdKX19KCk7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGk7aWYoMzImZSl7aT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7aT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8aTw8MzItZTt0aGlzLmhpZ2g9aT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGk9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihpKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8aX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3QgdG89ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMjU2Q2xvc3VyZSgpe2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjaChlLHQsaSl7cmV0dXJuIGUmdF5+ZSZpfWZ1bmN0aW9uIG1haihlLHQsaSl7cmV0dXJuIGUmdF5lJmledCZpfWZ1bmN0aW9uIHNpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSw2KV5yb3RyKGUsMTEpXnJvdHIoZSwyNSl9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSl7cmV0dXJuIHJvdHIoZSw3KV5yb3RyKGUsMTgpXmU+Pj4zfWNvbnN0IGU9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxpLGEpe2xldCByPTE3NzkwMzM3MDMscz0zMTQ0MTM0Mjc3LG49MTAxMzkwNDI0MixvPTI3NzM0ODA3NjIsZz0xMzU5ODkzMTE5LGM9MjYwMDgyMjkyNCxsPTUyODczNDYzNSxoPTE1NDE0NTkyMjU7Y29uc3QgQz02NCpNYXRoLmNlaWwoKGErOSkvNjQpLFE9bmV3IFVpbnQ4QXJyYXkoQyk7bGV0IEUsdTtmb3IoRT0wO0U8YTsrK0UpUVtFXT10W2krK107UVtFKytdPTEyODtjb25zdCBkPUMtODtmb3IoO0U8ZDspUVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPWE+Pj4yOSYyNTU7UVtFKytdPWE+PjIxJjI1NTtRW0UrK109YT4+MTMmMjU1O1FbRSsrXT1hPj41JjI1NTtRW0UrK109YTw8MyYyNTU7Y29uc3QgZj1uZXcgVWludDMyQXJyYXkoNjQpO2ZvcihFPTA7RTxDOyl7Zm9yKHU9MDt1PDE2OysrdSl7Zlt1XT1RW0VdPDwyNHxRW0UrMV08PDE2fFFbRSsyXTw8OHxRW0UrM107RSs9NH1mb3IodT0xNjt1PDY0OysrdSlmW3VdPShyb3RyKHA9Zlt1LTJdLDE3KV5yb3RyKHAsMTkpXnA+Pj4xMCkrZlt1LTddK2xpdHRsZVNpZ21hKGZbdS0xNV0pK2ZbdS0xNl18MDtsZXQgdCxpLGE9cixDPXMsZD1uLG09byx5PWcsdz1jLGI9bCxEPWg7Zm9yKHU9MDt1PDY0OysrdSl7dD1EK3NpZ21hUHJpbWUoeSkrY2goeSx3LGIpK2VbdV0rZlt1XTtpPXNpZ21hKGEpK21haihhLEMsZCk7RD1iO2I9dzt3PXk7eT1tK3R8MDttPWQ7ZD1DO0M9YTthPXQraXwwfXI9cithfDA7cz1zK0N8MDtuPW4rZHwwO289byttfDA7Zz1nK3l8MDtjPWMrd3wwO2w9bCtifDA7aD1oK0R8MH12YXIgcDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW3I+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIscz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaF0pfX0oKSxpbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGksYSxyKXtlLmFzc2lnbih0KTtlLmFuZChpKTtyLmFzc2lnbih0KTtyLm5vdCgpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIG1haihlLHQsaSxhLHIpe2UuYXNzaWduKHQpO2UuYW5kKGkpO3IuYXNzaWduKHQpO3IuYW5kKGEpO2UueG9yKHIpO3IuYXNzaWduKGkpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIHNpZ21hKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihpKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kuc2hpZnRSaWdodCg3KTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnNoaWZ0UmlnaHQoNik7ZS54b3IoaSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsaSxhLHI9ITEpe2xldCBzLG4sbyxnLGMsbCxoLEM7aWYocil7cz1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7bj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2c9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7Yz1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7bD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7aD1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7Qz1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtzPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtuPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtnPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtjPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtsPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2g9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7Qz1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBRPTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksRT1uZXcgVWludDhBcnJheShRKTtsZXQgdSxkO2Zvcih1PTA7dTxhOysrdSlFW3VdPXRbaSsrXTtFW3UrK109MTI4O2NvbnN0IGY9US0xNjtmb3IoO3U8ZjspRVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPWE+Pj4yOSYyNTU7RVt1KytdPWE+PjIxJjI1NTtFW3UrK109YT4+MTMmMjU1O0VbdSsrXT1hPj41JjI1NTtFW3UrK109YTw8MyYyNTU7Y29uc3QgcD1uZXcgQXJyYXkoODApO2Zvcih1PTA7dTw4MDt1KyspcFt1XT1uZXcgV29yZDY0KDAsMCk7bGV0IG09bmV3IFdvcmQ2NCgwLDApLHk9bmV3IFdvcmQ2NCgwLDApLHc9bmV3IFdvcmQ2NCgwLDApLGI9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IE49bmV3IFdvcmQ2NCgwLDApLEc9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLFU9bmV3IFdvcmQ2NCgwLDApO2xldCB4LEw7Zm9yKHU9MDt1PFE7KXtmb3IoZD0wO2Q8MTY7KytkKXtwW2RdLmhpZ2g9RVt1XTw8MjR8RVt1KzFdPDwxNnxFW3UrMl08PDh8RVt1KzNdO3BbZF0ubG93PUVbdSs0XTw8MjR8RVt1KzVdPDwxNnxFW3UrNl08PDh8RVt1KzddO3UrPTh9Zm9yKGQ9MTY7ZDw4MDsrK2Qpe3g9cFtkXTtsaXR0bGVTaWdtYVByaW1lKHgscFtkLTJdLFUpO3guYWRkKHBbZC03XSk7bGl0dGxlU2lnbWEoTSxwW2QtMTVdLFUpO3guYWRkKE0pO3guYWRkKHBbZC0xNl0pfW0uYXNzaWduKHMpO3kuYXNzaWduKG4pO3cuYXNzaWduKG8pO2IuYXNzaWduKGcpO0QuYXNzaWduKGMpO1MuYXNzaWduKGwpO2suYXNzaWduKGgpO1IuYXNzaWduKEMpO2ZvcihkPTA7ZDw4MDsrK2Qpe04uYXNzaWduKFIpO3NpZ21hUHJpbWUoTSxELFUpO04uYWRkKE0pO2NoKE0sRCxTLGssVSk7Ti5hZGQoTSk7Ti5hZGQoZVtkXSk7Ti5hZGQocFtkXSk7c2lnbWEoRyxtLFUpO21haihNLG0seSx3LFUpO0cuYWRkKE0pO3g9UjtSPWs7az1TO1M9RDtiLmFkZChOKTtEPWI7Yj13O3c9eTt5PW07eC5hc3NpZ24oTik7eC5hZGQoRyk7bT14fXMuYWRkKG0pO24uYWRkKHkpO28uYWRkKHcpO2cuYWRkKGIpO2MuYWRkKEQpO2wuYWRkKFMpO2guYWRkKGspO0MuYWRkKFIpfWlmKHIpe0w9bmV3IFVpbnQ4QXJyYXkoNDgpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKX1lbHNle0w9bmV3IFVpbnQ4QXJyYXkoNjQpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKTtoLmNvcHlUbyhMLDQ4KTtDLmNvcHlUbyhMLDU2KX1yZXR1cm4gTH19KCk7Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3Rvcigpe3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGksYSxyO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wLGk9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2kpc1tlXV49dFtpXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2k9c1sxM107c1sxM109c1s5XTtzWzldPXNbNV07c1s1XT1zWzFdO3NbMV09aTtpPXNbMTRdO2E9c1sxMF07c1sxNF09c1s2XTtzWzEwXT1zWzJdO3NbNl09aTtzWzJdPWE7aT1zWzE1XTthPXNbMTFdO3I9c1s3XTtzWzE1XT1zWzNdO3NbMTFdPWk7c1s3XT1hO3NbM109cjtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPXRoaXMuX2ludl9zW3NbZV1dO2ZvcihsZXQgaT0wLGE9MTYqZTtpPDE2OysraSwrK2Epc1tpXV49dFthXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W3NbZV1dLGE9dGhpcy5fbWl4W3NbZSsxXV0scj10aGlzLl9taXhbc1tlKzJdXSxuPXRoaXMuX21peFtzW2UrM11dO2k9dF5hPj4+OF5hPDwyNF5yPj4+MTZecjw8MTZebj4+PjI0Xm48PDg7c1tlXT1pPj4+MjQmMjU1O3NbZSsxXT1pPj4xNiYyNTU7c1tlKzJdPWk+PjgmMjU1O3NbZSszXT0yNTUmaX19aT1zWzEzXTtzWzEzXT1zWzldO3NbOV09c1s1XTtzWzVdPXNbMV07c1sxXT1pO2k9c1sxNF07YT1zWzEwXTtzWzE0XT1zWzZdO3NbMTBdPXNbMl07c1s2XT1pO3NbMl09YTtpPXNbMTVdO2E9c1sxMV07cj1zWzddO3NbMTVdPXNbM107c1sxMV09aTtzWzddPWE7c1szXT1yO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtzW2VdPXRoaXMuX2ludl9zW3NbZV1dO3NbZV1ePXRbZV19cmV0dXJuIHN9X2VuY3J5cHQoZSx0KXtjb25zdCBpPXRoaXMuX3M7bGV0IGEscixzO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPWlbbltlXV07cz1uWzFdO25bMV09bls1XTtuWzVdPW5bOV07bls5XT1uWzEzXTtuWzEzXT1zO3M9blsyXTtyPW5bNl07blsyXT1uWzEwXTtuWzZdPW5bMTRdO25bMTBdPXM7blsxNF09cjtzPW5bM107cj1uWzddO2E9blsxMV07blszXT1uWzE1XTtuWzddPXM7blsxMV09cjtuWzE1XT1hO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1uW2UrMF0saT1uW2UrMV0scj1uW2UrMl0scz1uW2UrM107YT10Xmlecl5zO25bZSswXV49YV50aGlzLl9taXhDb2xbdF5pXTtuW2UrMV1ePWFedGhpcy5fbWl4Q29sW2lecl07bltlKzJdXj1hXnRoaXMuX21peENvbFtyXnNdO25bZSszXV49YV50aGlzLl9taXhDb2xbc150XX1mb3IobGV0IGk9MCxhPTE2KmU7aTwxNjsrK2ksKythKW5baV1ePXRbYV19Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXT1pW25bZV1dO3M9blsxXTtuWzFdPW5bNV07bls1XT1uWzldO25bOV09blsxM107blsxM109cztzPW5bMl07cj1uWzZdO25bMl09blsxMF07bls2XT1uWzE0XTtuWzEwXT1zO25bMTRdPXI7cz1uWzNdO3I9bls3XTthPW5bMTFdO25bM109blsxNV07bls3XT1zO25bMTFdPXI7blsxNV09YTtmb3IobGV0IGU9MCxpPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKytpKW5bZV1ePXRbaV07cmV0dXJuIG59X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO2xldCBuPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtyXT1lW3RdOysrcjtpZihyPDE2KWNvbnRpbnVlO2NvbnN0IGk9dGhpcy5fZGVjcnlwdChhLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49bltlXTtuPWE7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj1uO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqcy5sZW5ndGg7aWYodCl7Y29uc3QgZT1zLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBpPTE1LGE9MTYtdDtpPj1hOy0taSlpZihlW2ldIT09dCl7dD0wO2JyZWFrfW8tPXQ7c1tzLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGc9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGk9cy5sZW5ndGg7ZTxpOysrZSx0Kz0xNilnLnNldChzW2VdLHQpO3JldHVybiBnfWRlY3J5cHRCbG9jayhlLHQsaT1udWxsKXtjb25zdCBhPWUubGVuZ3RoLHI9dGhpcy5idWZmZXI7bGV0IHM9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihpKXRoaXMuaXY9aTtlbHNle2ZvcihsZXQgdD0wO3M8MTYmJnQ8YTsrK3QsKytzKXJbc109ZVt0XTtpZihzPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1zO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PXI7ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBuPTA7bjxpOysrbil7YVtyXT1lW25dOysrcjtpZihyPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKWFbZV1ePXRbZV07Y29uc3QgaT10aGlzLl9lbmNyeXB0KGEsdGhpcy5fa2V5KTt0PWk7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj10O2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgbj0xNipzLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgZT0wLHQ9MCxpPXMubGVuZ3RoO2U8aTsrK2UsdCs9MTYpby5zZXQoc1tlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPXRoaXMuX3Jjb24sYT1uZXcgVWludDhBcnJheSgxNzYpO2Euc2V0KGUpO2ZvcihsZXQgZT0xNixyPTE7ZTwxNzY7KytyKXtsZXQgcz1hW2UtM10sbj1hW2UtMl0sbz1hW2UtMV0sZz1hW2UtNF07cz10W3NdO249dFtuXTtvPXRbb107Zz10W2ddO3NePWlbcl07Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1zXj1hW2UtMTZdO2UrKzthW2VdPW5ePWFbZS0xNl07ZSsrO2FbZV09b149YVtlLTE2XTtlKys7YVtlXT1nXj1hW2UtMTZdO2UrK319cmV0dXJuIGF9fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPW5ldyBVaW50OEFycmF5KDI0MCk7aS5zZXQoZSk7bGV0IGEscixzLG4sbz0xO2ZvcihsZXQgZT0zMixnPTE7ZTwyNDA7KytnKXtpZihlJTMyPT0xNil7YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dfWVsc2UgaWYoZSUzMj09MCl7YT1pW2UtM107cj1pW2UtMl07cz1pW2UtMV07bj1pW2UtNF07YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dO2FePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXtpW2VdPWFePWlbZS0zMl07ZSsrO2lbZV09cl49aVtlLTMyXTtlKys7aVtlXT1zXj1pW2UtMzJdO2UrKztpW2VdPW5ePWlbZS0zMl07ZSsrfX1yZXR1cm4gaX19Y2xhc3MgUERGMTd7Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhyLDAsci5sZW5ndGgpLGEpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhhLDAsYS5sZW5ndGgpLGkpfWdldE93bmVyS2V5KGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz10byhyLDAsci5sZW5ndGgpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO2NvbnN0IHI9dG8oYSwwLGEubGVuZ3RoKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soaSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYyMHtfaGFzaChlLHQsaSl7bGV0IGE9dG8odCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxyPVswXSxzPTA7Zm9yKDtzPDY0fHxyLmF0KC0xKT5zLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCthLmxlbmd0aCtpLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KHQpO2xldCBsPTA7Yy5zZXQoZSxsKTtsKz1lLmxlbmd0aDtjLnNldChhLGwpO2wrPWEubGVuZ3RoO2Muc2V0KGksbCk7Y29uc3QgaD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxpPTA7ZTw2NDtlKyssaSs9dCloLnNldChjLGkpO3I9bmV3IEFFUzEyOENpcGhlcihhLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGgsYS5zdWJhcnJheSgxNiwzMikpO2NvbnN0IEM9ci5zbGljZSgwLDE2KS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApJTM7MD09PUM/YT10byhyLDAsci5sZW5ndGgpOjE9PT1DP2E9KG49cixvPTAsZz1yLmxlbmd0aCxpbyhuLG8sZywhMCkpOjI9PT1DJiYoYT1pbyhyLDAsci5sZW5ndGgpKTtzKyt9dmFyIG4sbyxnO3JldHVybiBhLnN1YmFycmF5KDAsMzIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLHIsaSksYSl9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxhLFtdKSxpKX1nZXRPd25lcktleShlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHM9dGhpcy5faGFzaChlLHIsaSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocykuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUsYSxbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKGksITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBpPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsKGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZSx0KXtyZXR1cm4gaS5kZWNyeXB0QmxvY2soZSx0KX0pKX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZGVjcnlwdEJsb2NrKGksITApO3JldHVybiBieXRlc1RvU3RyaW5nKGkpfWVuY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtpZih0IGluc3RhbmNlb2YgQUVTQmFzZUNpcGhlcil7Y29uc3QgaT0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpLnJlcGVhdChpKTtjb25zdCBhPW5ldyBVaW50OEFycmF5KDE2KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO2Vsc2UgZm9yKGxldCBlPTA7ZTwxNjtlKyspYVtlXT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtsZXQgcj1zdHJpbmdUb0J5dGVzKGUpO3I9dC5lbmNyeXB0KHIsYSk7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNityLmxlbmd0aCk7cy5zZXQoYSk7cy5zZXQociwxNik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcocyl9bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZW5jcnlwdChpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtzdGF0aWMjcT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pOyNPKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZih0KXtjb25zdCBlPU1hdGgubWluKDEyNyx0Lmxlbmd0aCk7dD10LnN1YmFycmF5KDAsZSl9ZWxzZSB0PVtdO2NvbnN0IEM9Nj09PWU/bmV3IFBERjIwOm5ldyBQREYxNztyZXR1cm4gQy5jaGVja1VzZXJQYXNzd29yZCh0LG8sbik/Qy5nZXRVc2VyS2V5KHQsZyxsKTp0Lmxlbmd0aCYmQy5jaGVja093bmVyUGFzc3dvcmQodCxhLHMsaSk/Qy5nZXRPd25lcktleSh0LHIscyxjKTpudWxsfSNQKGUsdCxpLGEscixzLG4sbyl7Y29uc3QgZz00MCtpLmxlbmd0aCtlLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KGcpO2xldCBsLGgsQz0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7QzxoOysrQyljW0NdPXRbQ119bD0wO2Zvcig7QzwzMjspY1tDKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbCsrXTtmb3IobD0wLGg9aS5sZW5ndGg7bDxoOysrbCljW0MrK109aVtsXTtjW0MrK109MjU1JnI7Y1tDKytdPXI+PjgmMjU1O2NbQysrXT1yPj4xNiYyNTU7Y1tDKytdPXI+Pj4yNCYyNTU7Zm9yKGw9MCxoPWUubGVuZ3RoO2w8aDsrK2wpY1tDKytdPWVbbF07aWYocz49NCYmIW8pe2NbQysrXT0yNTU7Y1tDKytdPTI1NTtjW0MrK109MjU1O2NbQysrXT0yNTV9bGV0IFE9ZW8oYywwLEMpO2NvbnN0IEU9bj4+MztpZihzPj0zKWZvcihsPTA7bDw1MDsrK2wpUT1lbyhRLDAsRSk7Y29uc3QgdT1RLnN1YmFycmF5KDAsRSk7bGV0IGQsZjtpZihzPj0zKXtmb3IoQz0wO0M8MzI7KytDKWNbQ109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jcVtDXTtmb3IobD0wLGg9ZS5sZW5ndGg7bDxoOysrbCljW0MrK109ZVtsXTtkPW5ldyBBUkNGb3VyQ2lwaGVyKHUpO2Y9ZC5lbmNyeXB0QmxvY2soZW8oYywwLEMpKTtoPXUubGVuZ3RoO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoaCk7Zm9yKGw9MTtsPD0xOTsrK2wpe2ZvcihsZXQgZT0wO2U8aDsrK2UpdFtlXT11W2VdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcih0KTtmPWQuZW5jcnlwdEJsb2NrKGYpfWZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfWVsc2V7ZD1uZXcgQVJDRm91ckNpcGhlcih1KTtmPWQuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3EpO2ZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfXJldHVybiB1fSNXKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBzPTA7Y29uc3Qgbj1NYXRoLm1pbigzMixlLmxlbmd0aCk7Zm9yKDtzPG47KytzKXJbc109ZVtzXTtsZXQgbz0wO2Zvcig7czwzMjspcltzKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbysrXTtsZXQgZz1lbyhyLDAscyk7Y29uc3QgYz1hPj4zO2lmKGk+PTMpZm9yKG89MDtvPDUwOysrbylnPWVvKGcsMCxnLmxlbmd0aCk7bGV0IGwsaDtpZihpPj0zKXtoPXQ7Y29uc3QgZT1uZXcgVWludDhBcnJheShjKTtmb3Iobz0xOTtvPj0wO28tLSl7Zm9yKGxldCB0PTA7dDxjOysrdCllW3RdPWdbdF1ebztsPW5ldyBBUkNGb3VyQ2lwaGVyKGUpO2g9bC5lbmNyeXB0QmxvY2soaCl9fWVsc2V7bD1uZXcgQVJDRm91ckNpcGhlcihnLnN1YmFycmF5KDAsYykpO2g9bC5lbmNyeXB0QmxvY2sodCl9cmV0dXJuIGh9I2ooZSx0LGksYT0hMSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShpLmxlbmd0aCs5KSxzPWkubGVuZ3RoO2xldCBuO2ZvcihuPTA7bjxzOysrbilyW25dPWlbbl07cltuKytdPTI1NSZlO3JbbisrXT1lPj44JjI1NTtyW24rK109ZT4+MTYmMjU1O3JbbisrXT0yNTUmdDtyW24rK109dD4+OCYyNTU7aWYoYSl7cltuKytdPTExNTtyW24rK109NjU7cltuKytdPTEwODtyW24rK109ODR9cmV0dXJuIGVvKHIsMCxuKS5zdWJhcnJheSgwLE1hdGgubWluKGkubGVuZ3RoKzUsMTYpKX0jWChlLHQsaSxhLHIpe2lmKCEodCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjcnlwdCBmaWx0ZXIgbmFtZS4iKTtjb25zdCBzPXRoaXMsbj1lLmdldCh0Lm5hbWUpLG89bj8uZ2V0KCJDRk0iKTtpZighb3x8Ik5vbmUiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgTnVsbENpcGhlcn07aWYoIlYyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIocy4jaihpLGEsciwhMSkpfTtpZigiQUVTVjIiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMTI4Q2lwaGVyKHMuI2ooaSxhLHIsITApKX07aWYoIkFFU1YzIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKX07dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1jb25zdHJ1Y3RvcihlLHQsaSl7Y29uc3QgYT1lLmdldCgiRmlsdGVyIik7aWYoIWlzTmFtZShhLCJTdGFuZGFyZCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpO3RoaXMuZmlsdGVyTmFtZT1hLm5hbWU7dGhpcy5kaWN0PWU7Y29uc3Qgcj1lLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwxIT09ciYmMiE9PXImJjQhPT1yJiY1IT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIik7dGhpcy5hbGdvcml0aG09cjtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIXMpaWYocjw9MylzPTQwO2Vsc2V7Y29uc3QgdD1lLmdldCgiQ0YiKSxpPWUuZ2V0KCJTdG1GIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJmkgaW5zdGFuY2VvZiBOYW1lKXt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMDtjb25zdCBlPXQuZ2V0KGkubmFtZSk7cz1lPy5nZXQoIkxlbmd0aCIpfHwxMjg7czw0MCYmKHM8PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIocyl8fHM8NDB8fHMlOCE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IG49c3RyaW5nVG9CeXRlcyhlLmdldCgiTyIpKSxvPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlUiKSksZz1uLnN1YmFycmF5KDAsMzIpLGM9by5zdWJhcnJheSgwLDMyKSxsPWUuZ2V0KCJQIiksaD1lLmdldCgiUiIpLEM9KDQ9PT1yfHw1PT09cikmJiExIT09ZS5nZXQoIkVuY3J5cHRNZXRhZGF0YSIpO3RoaXMuZW5jcnlwdE1ldGFkYXRhPUM7Y29uc3QgUT1zdHJpbmdUb0J5dGVzKHQpO2xldCBFLHU7aWYoaSl7aWYoNj09PWgpdHJ5e2k9dXRmOFN0cmluZ1RvU3RyaW5nKGkpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1FPXN0cmluZ1RvQnl0ZXMoaSl9aWYoNSE9PXIpdT10aGlzLiNQKFEsRSxnLGMsbCxoLHMsQyk7ZWxzZXtjb25zdCB0PW4uc3ViYXJyYXkoMzIsNDApLGk9bi5zdWJhcnJheSg0MCw0OCksYT1vLnN1YmFycmF5KDAsNDgpLHI9by5zdWJhcnJheSgzMiw0MCkscz1vLnN1YmFycmF5KDQwLDQ4KSxsPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLEM9c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksUT1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTt1PXRoaXMuI08oaCxFLGcsdCxpLGEsYyxyLHMsbCxDLFEpfWlmKCF1JiYhaSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixvdCk7aWYoIXUmJmkpe2NvbnN0IGU9dGhpcy4jVyhFLGcsaCxzKTt1PXRoaXMuI1AoUSxlLGcsYyxsLGgscyxDKX1pZighdSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsZ3QpO3RoaXMuZW5jcnlwdGlvbktleT11O2lmKHI+PTQpe2NvbnN0IHQ9ZS5nZXQoIkNGIik7dCBpbnN0YW5jZW9mIERpY3QmJih0LnN1cHByZXNzRW5jcnlwdGlvbj0hMCk7dGhpcy5jZj10O3RoaXMuc3RtZj1lLmdldCgiU3RtRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLnN0cmY9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5lZmY9ZS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHRoaXMuI1godGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksdGhpcy4jWCh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgaT10aGlzLiNqKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpLGNpcGhlckNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGkpfTtyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShjaXBoZXJDb25zdHJ1Y3RvcixjaXBoZXJDb25zdHJ1Y3Rvcil9fWZ1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaCh0KXt3YXJuKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIFNpbXBsZVhNTFBhcnNlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLm5vZGU9bnVsbH1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBpPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09aT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgWFJlZnsjVj1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsaSxhO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7aT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxhPWU/Lmxlbmd0aD9lWzBdOiIiO2kuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShpLGEsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7YT10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl0cnl7aWYoYS5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1hO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0saT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9aS5zdHJlYW1Qb3M7ZS5idWYxPWkucGFyc2VyQnVmMTtlLmJ1ZjI9aS5wYXJzZXJCdWYyO2xldCBhO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBpKXx8ISgiZW50cnlDb3VudCJpbiBpKSl7aWYoaXNDbWQoYT1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7aS5maXJzdEVudHJ5TnVtPWE7aS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHI9aS5maXJzdEVudHJ5TnVtO2NvbnN0IHM9aS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IGE9aS5lbnRyeU51bTthPHM7YSsrKXtpLnN0cmVhbVBvcz10LnBvcztpLmVudHJ5TnVtPWE7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IG49e307bi5vZmZzZXQ9ZS5nZXRPYmooKTtuLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjpuLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpuLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihuLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4uZ2VuKXx8IW4uZnJlZSYmIW4udW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7cn0sICR7c31gKTswPT09YSYmbi5mcmVlJiYxPT09ciYmKHI9MCk7dGhpcy5lbnRyaWVzW2Ercl18fCh0aGlzLmVudHJpZXNbYStyXT1uKX1pLmVudHJ5TnVtPTA7aS5zdHJlYW1Qb3M9dC5wb3M7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBpLmZpcnN0RW50cnlOdW07ZGVsZXRlIGkuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gYX1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3R7ZGljdDp0LHBvczppfT1lLGE9dC5nZXQoIlciKSxyPXQuZ2V0KCJJbmRleCIpfHxbMCx0LmdldCgiU2l6ZSIpXTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczpyLGJ5dGVXaWR0aHM6YSxlbnRyeU51bTowLHN0cmVhbVBvczppfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2ksYSxyXT10LmJ5dGVXaWR0aHMscz10LmVudHJ5UmFuZ2VzO2Zvcig7cy5sZW5ndGg+MDspe2NvbnN0W24sb109cztpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke259LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke259LCAke299YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxvOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsZz0wLGM9MDtmb3IobGV0IHQ9MDt0PGk7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09aSYmKG89MSk7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtnPWc8PDh8dH1mb3IobGV0IHQ9MDt0PHI7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtjPWM8PDh8dH1jb25zdCBsPXt9O2wub2Zmc2V0PWc7bC5nZW49Yztzd2l0Y2gobyl7Y2FzZSAwOmwuZnJlZT0hMDticmVhaztjYXNlIDE6bC51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tuK3NdfHwodGhpcy5lbnRyaWVzW24rc109bCl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Muc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBpPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gaX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGkpe2NvbnN0IGE9aS5sZW5ndGgscj1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7dDxyOyl7bGV0IHI9MDtmb3IoO3I8YSYmZVt0K3JdPT09aVtyXTspKytyO2lmKHI+PWEpYnJlYWs7dCsrO3MrK31yZXR1cm4gc31jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGk9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscj1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHM9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBuPXRoaXMuc3RyZWFtO24ucG9zPTA7Y29uc3Qgbz1uLmdldEJ5dGVzKCksZz1ieXRlc1RvU3RyaW5nKG8pLGM9by5sZW5ndGg7bGV0IGw9bi5zdGFydDtjb25zdCBoPVtdLEM9W107Zm9yKDtsPGM7KXtsZXQgUT1vW2xdO2lmKDk9PT1RfHwxMD09PVF8fDEzPT09UXx8MzI9PT1RKXsrK2w7Y29udGludWV9aWYoMzc9PT1RKXtkb3srK2w7aWYobD49YylicmVhaztRPW9bbF19d2hpbGUoMTAhPT1RJiYxMyE9PVEpO2NvbnRpbnVlfWNvbnN0IEU9cmVhZFRva2VuKG8sbCk7bGV0IHU7aWYoRS5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzRdKSkpe2wrPXNraXBVbnRpbChvLGwsYSk7aC5wdXNoKGwpO2wrPXNraXBVbnRpbChvLGwscil9ZWxzZSBpZih1PWkuZXhlYyhFKSl7Y29uc3QgdD0wfHVbMV0saT0wfHVbMl0sYT1sK0UubGVuZ3RoO2xldCByLGg9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09aSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4ubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtFfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0Omwtbi5zdGFydCxnZW46aSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1hO2NvbnN0IFE9ZS5leGVjKGcpO2lmKFEpe3I9ZS5sYXN0SW5kZXgrMS1sO2lmKCJlbmRvYmoiIT09UVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtRWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO3ItPVFbMV0ubGVuZ3RoKzF9fWVsc2Ugcj1jLWw7Y29uc3QgZD1vLnN1YmFycmF5KGwsbCtyKSxmPXNraXBVbnRpbChkLDAscyk7aWYoZjxyJiZkW2YrNV08NjQpe0MucHVzaChsLW4uc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChsLW4uc3RhcnQpfWwrPXJ9ZWxzZSBpZihFLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1FLmxlbmd0aHx8L1xzLy50ZXN0KEVbN10pKSl7aC5wdXNoKGwpO2NvbnN0IGU9bCtFLmxlbmd0aDtsZXQgaTt0Lmxhc3RJbmRleD1lO2NvbnN0IGE9dC5leGVjKGcpO2lmKGEpe2k9dC5sYXN0SW5kZXgrMS1sO2lmKCJzdGFydHhyZWYiIT09YVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHthWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1hWzFdLmxlbmd0aCsxfX1lbHNlIGk9Yy1sO2wrPWl9ZWxzZSBsKz1FLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIEMpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBRPVtdO2xldCBFLHUsZD0hMTtmb3IoY29uc3QgZSBvZiBoKXtuLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4pLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe1EucHVzaChpKTtpLmhhcygiRW5jcnlwdCIpJiYoZD0hMCl9fWZvcihjb25zdCBlIG9mWy4uLlEsImdlbkZhbGxiYWNrIiwuLi5RXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF1KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgaT1lLmdldCgiUm9vdCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlBhZ2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgcj1hLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKHIpJiYodD0hMCl9Y2F0Y2goZSl7dT1lO2NvbnRpbnVlfWlmKHQmJighZHx8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO0U9ZX1pZihFKXJldHVybiBFO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFRLmxlbmd0aClmb3IoY29uc3RbZSx0XW9mIHRoaXMuZW50cmllcy5lbnRyaWVzKCkpe2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9UmVmLmdldChlLHQuZ2VuKTtsZXQgYTt0cnl7YT10aGlzLmZldGNoKGkpfWNhdGNoe2NvbnRpbnVlfWEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT1hLmRpY3QpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcygiUm9vdCIpKXJldHVybiBhfXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoaS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWkuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCBhPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IHIscz1hLmdldE9iaigpO2lmKGlzQ21kKHMsInhyZWYiKSl7cj10aGlzLnByb2Nlc3NYUmVmVGFibGUoYSk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PXIpO3M9ci5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHMpJiYhdGhpcy5feHJlZlN0bXMuaGFzKHMpKXt0aGlzLl94cmVmU3Rtcy5hZGQocyk7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpO3RoaXMuI1Y/Pz1zfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoYS5nZXRPYmooKSkmJmlzQ21kKGEuZ2V0T2JqKCksIm9iaiIpJiYocz1hLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7cj10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKHMpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1yKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9cz1yLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIocyk/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpOnMgaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Z2V0IGxhc3RYUmVmU3RyZWFtUG9zKCl7cmV0dXJuIHRoaXMuI1Y/Pyh0aGlzLl94cmVmU3Rtcy5zaXplPjA/TWF0aC5tYXgoLi4udGhpcy5feHJlZlN0bXMpOm51bGwpfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgaT1lLm51bSxhPXRoaXMuX2NhY2hlTWFwLmdldChpKTtpZih2b2lkIDAhPT1hKXthIGluc3RhbmNlb2YgRGljdCYmIWEub2JqSWQmJihhLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIGF9bGV0IHI9dGhpcy5nZXRFbnRyeShpKTtpZihudWxsPT09cil7dGhpcy5fY2FjaGVNYXAuc2V0KGkscik7cmV0dXJuIHJ9aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBRdH10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3I9ci51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHIsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxyLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1yIGluc3RhbmNlb2YgRGljdD9yLm9iaklkPWUudG9TdHJpbmcoKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHIuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiByfWZldGNoVW5jb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPWUuZ2VuO2xldCByPWUubnVtO2lmKHQuZ2VuIT09YSl7Y29uc3Qgcz1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxhKXt3YXJuKHMpO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQocix0LmdlbiksdCxpKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IHM9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksbj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocykseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89bi5nZXRPYmooKSxnPW4uZ2V0T2JqKCksYz1uLmdldE9iaigpO2lmKG8hPT1yfHxnIT09YXx8IShjIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09Yy5jbWQpe2lmKGMuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtyPXBhcnNlSW50KGMuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihyKSlyZXR1cm4gcn10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWk/bi5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShyLGEpKTpuLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KHIsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPXQub2Zmc2V0LHI9dGhpcy5mZXRjaChSZWYuZ2V0KGEsMCkpO2lmKCEociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBzPXIuZGljdC5nZXQoIkZpcnN0Iiksbj1yLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBnPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBpPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7aX1gKTtnW2VdPXQ7Y1tlXT1pfWNvbnN0IGw9KHIuc3RhcnR8fDApK3MsaD1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1lPG4tMT9jW2UrMV0tY1tlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7bz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoci5tYWtlU3ViU3RyZWFtKGwrY1tlXSx0LHIuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBpPW8uZ2V0T2JqKCk7aFtlXT1pO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IHM9Z1tlXSxDPXRoaXMuZW50cmllc1tzXTtDJiZDLm9mZnNldD09PWEmJkMuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KHMsaSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBpO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoaS5iZWdpbixpLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3QgYW89WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdle2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDppLHBhZ2VEaWN0OmEscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnMsZm9udENhY2hlOm4sYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpnLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6bCxub25CbGVuZE1vZGVzU2V0OmgseGZhRmFjdG9yeTpDfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLnBhZ2VEaWN0PWE7dGhpcy54cmVmPXQ7dGhpcy5yZWY9cjt0aGlzLmZvbnRDYWNoZT1uO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWc7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT1DO2NvbnN0IFE9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHN7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2l9XyR7KytRLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7ci50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGkpPzEhPT1pLmxlbmd0aCYmaVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6aX0pOmlbMF06aX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIk1lZGlhQm94Iil8fGFvKX1nZXQgY3JvcEJveCgpe3JldHVybiBzaGFkb3codGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7Y29uc3QgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IiwibnVtYmVyIj09dHlwZW9mIGUmJmU+MD9lOjEpfWdldCB2aWV3KCl7Y29uc3R7Y3JvcEJveDplLG1lZGlhQm94OnR9PXRoaXM7aWYoZSE9PXQmJiFpc0FycmF5RXF1YWwoZSx0KSl7Y29uc3QgaT1VdGlsLmludGVyc2VjdChlLHQpO2lmKGkmJmlbMl0taVswXT4wJiZpWzNdLWlbMV0+MClyZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLGkpO3dhcm4oIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybiBzaGFkb3codGhpcywidmlldyIsdCl9Z2V0IHJvdGF0ZSgpe2xldCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJvdGF0ZSIpfHwwO2UlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApO3JldHVybiBzaGFkb3codGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9Z2V0Q29udGVudFN0cmVhbSgpe3JldHVybiB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImNvbnRlbnQiKS50aGVuKChlPT5lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lOkFycmF5LmlzQXJyYXkoZSk/bmV3IFN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzKSk6bmV3IE51bGxTdHJlYW0pKX1nZXQgeGZhRGF0YSgpe3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jI1ooZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHIuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7ci5pZH1gKTtjb250aW51ZX1pZihyLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYoci5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhyLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWk/LnB1dChlKTtyLnJlZj1lO2EucHVzaCh0aGlzLnhyZWYuZmV0Y2hBc3luYyhlKS50aGVuKChlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihyLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0pLCgoKT0+e3dhcm4oYENhbm5vdCBmZXRjaCBcYG9sZEFubm90YXRpb25cYCBmb3I6ICR7ZX0uYCl9KSkpO2RlbGV0ZSByLmlkfWF3YWl0IFByb21pc2UuYWxsKGEpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKHRoaXMueGZhRmFjdG9yeSl0aHJvdyBuZXcgRXJyb3IoIlhGQTogQ2Fubm90IHNhdmUgbmV3IGFubm90YXRpb25zLiIpO2NvbnN0IHM9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksbj1uZXcgUmVmU2V0Q2FjaGUsbz1uZXcgUmVmU2V0O2F3YWl0IHRoaXMuI1ooaSxuLG8pO2NvbnN0IGc9dGhpcy5wYWdlRGljdCxjPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKChlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJm4uaGFzKGUpKSkpLGw9YXdhaXQgQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKHMsdCxpLGEscik7Zm9yKGNvbnN0e3JlZjplfW9mIGwuYW5ub3RhdGlvbnMpZSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGUpJiZjLnB1c2goZSk7Y29uc3QgaD1nLmNsb25lKCk7aC5zZXQoIkFubm90cyIsYyk7ci5wdXQodGhpcy5yZWYse2RhdGE6aH0pO2Zvcihjb25zdCBlIG9mIG4pci5wdXQoZSx7ZGF0YTpudWxsfSl9c2F2ZShlLHQsaSxhKXtjb25zdCByPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pO3JldHVybiB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucy50aGVuKChmdW5jdGlvbihlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBuIG9mIGUpcy5wdXNoKG4uc2F2ZShyLHQsaSxhKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2Fybihgc2F2ZSAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwocyl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpO3JldHVybiB0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoKCk9Pm5ldyBPYmplY3RMb2FkZXIodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpLmxvYWQoKSkpfWdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmksaW50ZW50OmEsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTpzPW51bGwsbW9kaWZpZWRJZHM6bj1udWxsfSl7Y29uc3Qgbz10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxoPXRoaXMubG9hZFJlc291cmNlcyhbIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdKSx1PW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLGY9dGhpcy54ZmFGYWN0b3J5P251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAocykscD1mPy5nZXQodGhpcy5wYWdlSW5kZXgpO2xldCBtPVByb21pc2UucmVzb2x2ZShudWxsKSx5PW51bGw7aWYocCl7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpO2xldCB0O2NvbnN0IGE9bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6ZSxiaXRtYXA6dH1vZiBwKSFlfHx0fHxhLmhhcyhlKXx8YS5hZGQoZSk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6cn09dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKGEuc2l6ZT4wKXtjb25zdCBlPXAuc2xpY2UoKTtmb3IoY29uc3RbdCxpXW9mIHMpdC5zdGFydHNXaXRoKGQpJiZpLmJpdG1hcCYmYS5oYXMoaS5iaXRtYXBJZCkmJmUucHVzaChpKTt0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGUsdGhpcy54cmVmLHIpfWVsc2UgdD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhwLHRoaXMueHJlZixyKTt5PW5ldyBSZWZTZXQ7bT1Qcm9taXNlLmFsbChbZSx0aGlzLiNaKHAseSxudWxsKV0pLnRoZW4oKChbZV0pPT5lP0Fubm90YXRpb25GYWN0b3J5LnByaW50TmV3QW5ub3RhdGlvbnMoZSx1LGkscCx0KTpudWxsKSl9Y29uc3Qgdz1Qcm9taXNlLmFsbChbbyxoXSkudGhlbigoKFtzXSk9Pntjb25zdCBuPW5ldyBPcGVyYXRvckxpc3QoYSx0KTtlLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTp1Lmhhc0JsZW5kTW9kZXModGhpcy5yZXNvdXJjZXMsdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsY2FjaGVLZXk6cn0pO3JldHVybiB1LmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnMsdGFzazppLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxvcGVyYXRvckxpc3Q6bn0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt3LHRoaXMuX3BhcnNlZEFubm90YXRpb25zLG1dKS50aGVuKChmdW5jdGlvbihbZSx0LHJdKXtpZihyKXt0PXQuZmlsdGVyKChlPT4hKGUucmVmJiZ5LmhhcyhlLnJlZikpKSk7Zm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBhPXJbZV07aWYoYS5yZWZUb1JlcGxhY2Upe2NvbnN0IHM9dC5maW5kSW5kZXgoKGU9PmUucmVmJiZpc1JlZnNFcXVhbChlLnJlZixhLnJlZlRvUmVwbGFjZSkpKTtpZihzPj0wKXt0LnNwbGljZShzLDEsYSk7ci5zcGxpY2UoZS0tLDEpO2ktLX19fXQ9dC5jb25jYXQocil9aWYoMD09PXQubGVuZ3RofHxhJlEpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3Qgbz0hIShhJkMpLGg9ISEoYSZFKSxkPSEhKGEmZyksZj0hIShhJmMpLHA9ISEoYSZsKSxtPVtdO2Zvcihjb25zdCBlIG9mIHQpKGR8fGYmJmUubXVzdEJlVmlld2VkKHMsbykmJmUubXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoaCxuKXx8cCYmZS5tdXN0QmVQcmludGVkKHMpKSYmbS5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsaSxhLHMpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2kubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKG0pLnRoZW4oKGZ1bmN0aW9uKHQpe2xldCBpPSExLGE9ITE7Zm9yKGNvbnN0e29wTGlzdDpyLHNlcGFyYXRlRm9ybTpzLHNlcGFyYXRlQ2FudmFzOm59b2YgdCl7ZS5hZGRPcExpc3Qocik7aXx8PXM7YXx8PW59ZS5mbHVzaCghMCx7Zm9ybTppLGNhbnZhczphfSk7cmV0dXJue2xlbmd0aDplLnRvdGFsTGVuZ3RofX0pKX0pKX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cn0pe2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbj10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSksbz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtnLCxjXT1hd2FpdCBQcm9taXNlLmFsbChbcyxuLG9dKTtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpnLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cix2aWV3Qm94OnRoaXMudmlldyxsYW5nOmN9KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztjb25zdCB0PWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX3BhcnNlU3RydWN0VHJlZSIsW2VdKTtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0LCJzZXJpYWxpemFibGUiKX1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IFN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSh0aGlzLnJlZik7cmV0dXJuIHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxpKXtjb25zdCBhPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gYTtjb25zdCByPVtdLHM9W107bGV0IG47Y29uc3Qgbz0hIShpJmcpLGg9ISEoaSZjKSxDPSEhKGkmbCk7Zm9yKGNvbnN0IGkgb2YgYSl7Y29uc3QgYT1vfHxoJiZpLnZpZXdhYmxlOyhhfHxDJiZpLnByaW50YWJsZSkmJnIucHVzaChpLmRhdGEpO2lmKGkuaGFzVGV4dENvbnRlbnQmJmEpe258fD1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtzLnB1c2goaS5leHRyYWN0VGV4dENvbnRlbnQobix0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApfSkpKX19YXdhaXQgUHJvbWlzZS5hbGwocyk7cmV0dXJuIHJ9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJBbm5vdHMiKTtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYXJzZWRBbm5vdGF0aW9ucyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxpXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IGE9aT8ub3JwaGFuRmllbGRzLHI9W107Zm9yKGNvbnN0IGkgb2YgZSlyLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixpLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsYSx0aGlzLnJlZikuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYF9wYXJzZWRBbm5vdGF0aW9uczogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtjb25zdCBzPVtdO2xldCBuLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwocikpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8obnx8PVtdKS5wdXNoKGUpOnMucHVzaChlKSk7byYmcy5wdXNoKC4uLm8pO24mJnMucHVzaCguLi5uKTtyZXR1cm4gc30pKSl9Z2V0IGpzQWN0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIixjb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCx5QSkpfX1jb25zdCBybz1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxzbz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLG5vPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsaT0xMDI0LGE9ITEpe2NvbnN0IHI9dC5sZW5ndGgscz1lLnBlZWtCeXRlcyhpKSxuPXMubGVuZ3RoLXI7aWYobjw9MClyZXR1cm4hMTtpZihhKXtjb25zdCBpPXItMTtsZXQgYT1zLmxlbmd0aC0xO2Zvcig7YT49aTspe2xldCBuPTA7Zm9yKDtuPHImJnNbYS1uXT09PXRbaS1uXTspbisrO2lmKG4+PXIpe2UucG9zKz1hLWk7cmV0dXJuITB9YS0tfX1lbHNle2xldCBpPTA7Zm9yKDtpPD1uOyl7bGV0IGE9MDtmb3IoO2E8ciYmc1tpK2FdPT09dFthXTspYSsrO2lmKGE+PXIpe2UucG9zKz1pO3JldHVybiEwfWkrK319cmV0dXJuITF9Y2xhc3MgUERGRG9jdW1lbnR7Y29uc3RydWN0b3IoZSx0KXtpZih0Lmxlbmd0aDw9MCl0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5zdHJlYW09dDt0aGlzLnhyZWY9bmV3IFhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgaT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKytpLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBDYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfWdldCBsaW5lYXJpemF0aW9uKCl7bGV0IGU9bnVsbDt0cnl7ZT1MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhlKX1yZXR1cm4gc2hhZG93KHRoaXMsImxpbmVhcml6YXRpb24iLGUpfWdldCBzdGFydFhSZWYoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKXtlLnJlc2V0KCk7aWYoZmluZChlLG5vKSl7ZS5za2lwKDYpO2xldCBpPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShpKTspe2UucG9zKys7aT1lLnBlZWtCeXRlKCl9dD1lLnBvcy1lLnN0YXJ0fX1lbHNle2NvbnN0IGk9MTAyNCxhPXNvLmxlbmd0aDtsZXQgcj0hMSxzPWUuZW5kO2Zvcig7IXImJnM+MDspe3MtPWktYTtzPDAmJihzPTApO2UucG9zPXM7cj1maW5kKGUsc28saSwhMCl9aWYocil7ZS5za2lwKDkpO2xldCBpO2Rve2k9ZS5nZXRCeXRlKCl9d2hpbGUoaXNXaGl0ZVNwYWNlKGkpKTtsZXQgYT0iIjtmb3IoO2k+PTMyJiZpPD01Nzspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUoaSk7aT1lLmdldEJ5dGUoKX10PXBhcnNlSW50KGEsMTApO2lzTmFOKHQpJiYodD0wKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxybykpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHJvLmxlbmd0aCk7bGV0IHQsaT0iIjtmb3IoOyh0PWUuZ2V0Qnl0ZSgpKT4zMiYmaS5sZW5ndGg8NzspaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTttdC50ZXN0KGkpP3RoaXMuX3ZlcnNpb249aTp3YXJuKGBJbnZhbGlkIFBERiBoZWFkZXIgdmVyc2lvbjogJHtpfWApfXBhcnNlU3RhcnRYUmVmKCl7dGhpcy54cmVmLnNldFN0YXJ0WFJlZih0aGlzLnN0YXJ0WFJlZil9Z2V0IG51bVBhZ2VzKCl7bGV0IGU9MDtlPXRoaXMuY2F0YWxvZy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLmNhdGFsb2cubnVtUGFnZXM6dGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXROdW1QYWdlcygpOnRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dGhpcy5jYXRhbG9nLm51bVBhZ2VzO3JldHVybiBzaGFkb3codGhpcywibnVtUGFnZXMiLGUpfV9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoKGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXt3YXJuKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgaT1pc05hbWUoZS5nZXQoIkZUIiksIlNpZyIpLGE9ZS5nZXQoIlJlY3QiKSxyPUFycmF5LmlzQXJyYXkoYSkmJmEuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGkmJnJ9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksaT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXtpWyJ4ZHA6eGRwIl09dDtyZXR1cm4gaX1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrPTIpe2xldCByO3I9MD09PWU/InhkcDp4ZHAiOmU9PT1hLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFpLmhhc093blByb3BlcnR5KHIpKWNvbnRpbnVlO2NvbnN0IHM9dGhpcy54cmVmLmZldGNoSWZSZWYodFtlKzFdKTtzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIXMuaXNFbXB0eSYmKGlbcl09cyl9cmV0dXJuIGl9Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgaT1lW3RdO2lmKGkpdHJ5e2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKGkuZ2V0U3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG5ldyBEYXRhc2V0UmVhZGVyKHtbdF06ZX0pKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTticmVha319cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYoYSl0cnl7dFtpXT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYUZhY3RvcnkiLGU/bmV3IFhGQUZhY3RvcnkoZSk6bnVsbCl9Z2V0IGlzUHVyZVhmYSgpe3JldHVybiEhdGhpcy54ZmFGYWN0b3J5JiZ0aGlzLnhmYUZhY3RvcnkuaXNWYWxpZCgpfWdldCBodG1sRm9yWGZhKCl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0UGFnZXMoKTpudWxsfWFzeW5jIGxvYWRYZmFJbWFnZXMoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJ4ZmFJbWFnZXMiKTtpZighZSlyZXR1cm47Y29uc3QgdD1lLmdldEtleXMoKSxpPW5ldyBPYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgaS5sb2FkKCk7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoaSk7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEuc2V0KGksdC5nZXRCeXRlcygpKX10aGlzLnhmYUZhY3Rvcnkuc2V0SW1hZ2VzKGEpfWFzeW5jIGxvYWRYZmFGb250cyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIik7aWYoIWkpcmV0dXJuO2NvbnN0IGE9YXdhaXQgaS5nZXRBc3luYygiRFIiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1uZXcgT2JqZWN0TG9hZGVyKGEsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCByLmxvYWQoKTtjb25zdCBzPWEuZ2V0KCJGb250Iik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zKTtuLnVzZVN5c3RlbUZvbnRzPSExO2NvbnN0IG89bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6LTEsaWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5jYXRhbG9nLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuY2F0YWxvZy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLmNhdGFsb2cuc3RhbmRhcmRGb250RGF0YUNhY2hlLG9wdGlvbnM6bn0pLGc9bmV3IE9wZXJhdG9yTGlzdCxjPVtdLGw9e2dldCBmb250KCl7cmV0dXJuIGMuYXQoLTEpfSxzZXQgZm9udChlKXtjLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxoPVtdO2Zvcihjb25zdFtlLGldb2Ygcyl7Y29uc3Qgcj1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcz1yLmdldCgiRm9udEZhbWlseSIpO3M9cy5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cyxmb250V2VpZ2h0OnIuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXIuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJmgucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsbCxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwoaCk7Y29uc3QgQz10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIUMpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2gubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBRPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgQylnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fFEuYWRkKGUpO1Euc2l6ZSYmQy5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIEMpaWYoIVEuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCByPWAke2V9LSR7aS5uYW1lfWAscz1nZXRYZmFGb250RGljdChyKTtoLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHIpLDFdLG51bGwsZyx0LGwscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKGgpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLFEpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IGksYTtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7aT1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKGE9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBpPWVvKHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaW5nZXJwcmludHMiLFt0b0hleFV0aWwoaSksYT90b0hleFV0aWwoYSk6bnVsbF0pfWFzeW5jIF9nZXRMaW5lYXJpemF0aW9uUGFnZShlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjppLHhyZWY6YX09dGhpcyxyPVJlZi5nZXQoaS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCBhLmZldGNoQXN5bmMocik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBpPWUuZ2V0UmF3KCJUeXBlIik7aSBpbnN0YW5jZW9mIFJlZiYmKGk9YXdhaXQgYS5mZXRjaEFzeW5jKGkpKTtpZihpc05hbWUoaSwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMocil8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChyLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKHIpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChyLDApO3JldHVybltlLHJdfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChpKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2kubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy5fcGFnZVByb21pc2VzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0e2NhdGFsb2c6aSxsaW5lYXJpemF0aW9uOmEseGZhRmFjdG9yeTpyfT10aGlzO2xldCBzO3M9cj9Qcm9taXNlLnJlc29sdmUoW0RpY3QuZW1wdHksbnVsbF0pOmE/LnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6aS5nZXRQYWdlRGljdChlKTtzPXMudGhlbigoKFt0LGFdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOmEsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6aS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTppLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmkuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6aS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTppLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0Omkubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5OnJ9KSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKTtyZXR1cm4gc31hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoMCk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7dGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6aX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IGE7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGkuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksaS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjthPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYoYTw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKGEtMSl9Y2F0Y2gocil7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShhLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHIgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke2F9LmApO2xldCBzO3RyeXtzPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW2Escl1db2Ygcyl7bGV0IHM7aWYoYSBpbnN0YW5jZW9mIEVycm9yKXtzPVByb21pc2UucmVqZWN0KGEpO3MuY2F0Y2goKCgpPT57fSkpfWVsc2Ugcz1Qcm9taXNlLnJlc29sdmUobmV3IFBhZ2Uoe3BkZk1hbmFnZXI6aSx4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDphLHJlZjpyLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKX10LnNldEFjdHVhbE51bVBhZ2VzKHMuc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOmNsZWFyR2xvYmFsQ2FjaGVzKCl9YXN5bmMjXyhlLHQsaSxhLHIscyxuKXtjb25zdHt4cmVmOm99PXRoaXM7aWYoIShpIGluc3RhbmNlb2YgUmVmKXx8cy5oYXMoaSkpcmV0dXJuO3MucHV0KGkpO2NvbnN0IGc9YXdhaXQgby5mZXRjaEFzeW5jKGkpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZihnLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGcuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCBpPWc7Zm9yKDs7KXtpPWkuZ2V0UmF3KCJQYXJlbnQiKXx8dDtpZihpIGluc3RhbmNlb2YgUmVmKXtpZihzLmhhcyhpKSlicmVhaztpPWF3YWl0IG8uZmV0Y2hBc3luYyhpKX1pZighKGkgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZihpLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGkuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YDticmVha319fXQmJiFnLmhhcygiUGFyZW50IikmJmlzTmFtZShnLmdldCgiU3VidHlwZSIpLCJXaWRnZXQiKSYmbi5wdXQoaSx0KTthLmhhcyhlKXx8YS5zZXQoZSxbXSk7YS5nZXQoZSkucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUobyxpLHIsbnVsbCwhMCxuLG51bGwpLnRoZW4oKGU9PmU/LmdldEZpZWxkT2JqZWN0KCkpKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7aWYoIWcuaGFzKCJLaWRzIikpcmV0dXJuO2NvbnN0IGM9YXdhaXQgZy5nZXRBc3luYygiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYykpZm9yKGNvbnN0IHQgb2YgYylhd2FpdCB0aGlzLiNfKGUsaSx0LGEscixzLG4pfWdldCBmaWVsZE9iamVjdHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKChhc3luYyBlPT57aWYoIWUuaGFzRmllbGRzKXJldHVybiBudWxsO2NvbnN0W3QsaV09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIildKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBSZWZTZXQscj1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxuPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhd2FpdCBpLmdldEFzeW5jKCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNfKCIiLG51bGwsZSxzLHQsYSxuKTtjb25zdCBvPVtdO2Zvcihjb25zdFtlLHRdb2YgcylvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigodD0+eyh0PXQuZmlsdGVyKChlPT4hIWUpKSkubGVuZ3RoPjAmJihyW2VdPXQpfSkpKTthd2FpdCBQcm9taXNlLmFsbChvKTtyZXR1cm57YWxsRmllbGRzOnIsb3JwaGFuRmllbGRzOm59fSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdCYmT2JqZWN0LnZhbHVlcyh0LmFsbEZpZWxkcykuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtPy5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fDA9PT1lLmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSlpIGluc3RhbmNlb2YgUmVmJiZ0LnB1c2goaS50b1N0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLHQubGVuZ3RoP3Q6bnVsbCl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7ZS5ldmFsdWF0b3JPcHRpb25zLmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUoZS5ldmFsdWF0b3JPcHRpb25zKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9Z2V0IGNhdGFsb2coKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGkpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsaSl7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGkpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBvbz0xLGdvPTIsSW89MSxjbz0yLGxvPTMsaG89NCxDbz01LEJvPTYsUW89NyxFbz04O2Z1bmN0aW9uIG9uRm4oKXt9ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgTWlzc2luZ1BERkV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uKXJldHVybiBlO2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8dW5yZWFjaGFibGUoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBBYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKX1yZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX1jbGFzcyBNZXNzYWdlSGFuZGxlcnsjej1uZXcgQWJvcnRDb250cm9sbGVyO2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnNvdXJjZU5hbWU9ZTt0aGlzLnRhcmdldE5hbWU9dDt0aGlzLmNvbU9iaj1pO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTtpLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuIyQuYmluZCh0aGlzKSx7c2lnbmFsOnRoaXMuI3ouc2lnbmFsfSl9IyQoe2RhdGE6ZX0pe2lmKGUudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYoZS5zdHJlYW0pe3RoaXMuI0FBKGUpO3JldHVybn1pZihlLmNhbGxiYWNrKXtjb25zdCB0PWUuY2FsbGJhY2tJZCxpPXRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAke3R9YCk7ZGVsZXRlIHRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoZS5jYWxsYmFjaz09PW9vKWkucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PWdvKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7aS5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpfXJldHVybn1jb25zdCB0PXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl07aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHtlLmFjdGlvbn1gKTtpZihlLmNhbGxiYWNrSWQpe2NvbnN0IGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmo7UHJvbWlzZS50cnkodCxlLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsY2FsbGJhY2s6b28sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTp0fSl9KSwoZnVuY3Rpb24odCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxjYWxsYmFjazpnbyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfWVsc2UgZS5zdHJlYW1JZD90aGlzLiNlQShlKTp0KGUuZGF0YSl9b24oZSx0KXtjb25zdCBpPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihpW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTtpW2VdPXR9c2VuZChlLHQsaSl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0saSl9c2VuZFdpdGhQcm9taXNlKGUsdCxpKXtjb25zdCBhPXRoaXMuY2FsbGJhY2tJZCsrLHI9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1thXT1yO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDphLGRhdGE6dH0saSl9Y2F0Y2goZSl7ci5yZWplY3QoZSl9cmV0dXJuIHIucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsaSxhKXtjb25zdCByPXRoaXMuc3RyZWFtSWQrKyxzPXRoaXMuc291cmNlTmFtZSxuPXRoaXMudGFyZ2V0TmFtZSxvPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0Omk9Pntjb25zdCBnPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6aSxzdGFydENhbGw6ZyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixhY3Rpb246ZSxzdHJlYW1JZDpyLGRhdGE6dCxkZXNpcmVkU2l6ZTppLmRlc2lyZWRTaXplfSxhKTtyZXR1cm4gZy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0ucHVsbENhbGw9dDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpCbyxzdHJlYW1JZDpyLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemV9KTtyZXR1cm4gdC5wcm9taXNlfSxjYW5jZWw6ZT0+e2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06SW8sc3RyZWFtSWQ6cixyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxpKX0jZUEoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmoscz10aGlzLG49dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscz0xLG4pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpobyxzdHJlYW1JZDp0LGNodW5rOmV9LG4pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmxvLHN0cmVhbUlkOnR9KTtkZWxldGUgcy5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkNvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87UHJvbWlzZS50cnkobixlLmRhdGEsbykudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSl9I0FBKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxpPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxuPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIEVvOmUuc3VjY2Vzcz9zLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6cy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIFFvOmUuc3VjY2Vzcz9zLnB1bGxDYWxsLnJlc29sdmUoKTpzLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBCbzppZighbil7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9bi5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZuLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtuLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7UHJvbWlzZS50cnkobi5vblB1bGx8fG9uRm4pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO2JyZWFrO2Nhc2UgaG86YXNzZXJ0KHMsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihzLmlzQ2xvc2VkKWJyZWFrO3MuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgbG86YXNzZXJ0KHMsImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmlzQ2xvc2VkPSEwO3MuY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBDbzphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBjbzplLnN1Y2Nlc3M/cy5jYW5jZWxDYWxsLnJlc29sdmUoKTpzLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiN0QShzLHQpO2JyZWFrO2Nhc2UgSW86aWYoIW4pYnJlYWs7Y29uc3Qgbz13cmFwUmVhc29uKGUucmVhc29uKTtQcm9taXNlLnRyeShuLm9uQ2FuY2VsfHxvbkZuLG8pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO24uc2lua0NhcGFiaWxpdHkucmVqZWN0KG8pO24uaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjdEEoZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuI3o/LmFib3J0KCk7dGhpcy4jej1udWxsfX1hc3luYyBmdW5jdGlvbiB3cml0ZU9iamVjdChlLHQsaSx7ZW5jcnlwdDphPW51bGx9KXtjb25zdCByPWE/LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbik7aS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdCh0LGkscik6dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgd3JpdGVTdHJlYW0odCxpLHIpOihBcnJheS5pc0FycmF5KHQpfHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkpJiZhd2FpdCB3cml0ZUFycmF5KHQsaSxyKTtpLnB1c2goIlxuZW5kb2JqXG4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZURpY3QoZSx0LGkpe3QucHVzaCgiPDwiKTtmb3IoY29uc3QgYSBvZiBlLmdldEtleXMoKSl7dC5wdXNoKGAgLyR7ZXNjYXBlUERGTmFtZShhKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShlLmdldFJhdyhhKSx0LGkpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVN0cmVhbShlLHQsaSl7bGV0IGE9ZS5nZXRCeXRlcygpO2NvbnN0e2RpY3Q6cn09ZSxbcyxuXT1hd2FpdCBQcm9taXNlLmFsbChbci5nZXRBc3luYygiRmlsdGVyIiksci5nZXRBc3luYygiRGVjb2RlUGFybXMiKV0pLG89aXNOYW1lKEFycmF5LmlzQXJyYXkocyk/YXdhaXQgci54cmVmLmZldGNoSWZSZWZBc3luYyhzWzBdKTpzLCJGbGF0ZURlY29kZSIpO2lmKGEubGVuZ3RoPj0yNTZ8fG8pdHJ5e2NvbnN0IGU9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksdD1lLndyaXRhYmxlLmdldFdyaXRlcigpO2F3YWl0IHQucmVhZHk7dC53cml0ZShhKS50aGVuKChhc3luYygpPT57YXdhaXQgdC5yZWFkeTthd2FpdCB0LmNsb3NlKCl9KSkuY2F0Y2goKCgpPT57fSkpO2NvbnN0IGk9YXdhaXQgbmV3IFJlc3BvbnNlKGUucmVhZGFibGUpLmFycmF5QnVmZmVyKCk7YT1uZXcgVWludDhBcnJheShpKTtsZXQgZyxjO2lmKHMpe2lmKCFvKXtnPUFycmF5LmlzQXJyYXkocyk/W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLC4uLnNdOltOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSxzXTtuJiYoYz1BcnJheS5pc0FycmF5KG4pP1tudWxsLC4uLm5dOltudWxsLG5dKX19ZWxzZSBnPU5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpO2cmJnIuc2V0KCJGaWx0ZXIiLGcpO2MmJnIuc2V0KCJEZWNvZGVQYXJtcyIsYyl9Y2F0Y2goZSl7aW5mbyhgd3JpdGVTdHJlYW0gLSBjYW5ub3QgY29tcHJlc3MgZGF0YTogIiR7ZX0iLmApfWxldCBnPWJ5dGVzVG9TdHJpbmcoYSk7aSYmKGc9aS5lbmNyeXB0U3RyaW5nKGcpKTtyLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7YXdhaXQgd3JpdGVEaWN0KHIsdCxpKTt0LnB1c2goIiBzdHJlYW1cbiIsZywiXG5lbmRzdHJlYW0iKX1hc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxpKXt0LnB1c2goIlsiKTtsZXQgYT0hMDtmb3IoY29uc3QgciBvZiBlKXthP2E9ITE6dC5wdXNoKCIgIik7YXdhaXQgd3JpdGVWYWx1ZShyLHQsaSl9dC5wdXNoKCJdIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsaSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdC5wdXNoKGAvJHtlc2NhcGVQREZOYW1lKGUubmFtZSl9YCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXQucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gUmApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKXx8QXJyYXlCdWZmZXIuaXNWaWV3KGUpKWF3YWl0IHdyaXRlQXJyYXkoZSx0LGkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtpJiYoZT1pLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlP3QucHVzaChudW1iZXJUb1N0cmluZyhlKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QoZSx0LGkpOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKGUsdCxpKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTp3YXJuKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGksYSl7Zm9yKGxldCByPXQraS0xO3I+aS0xO3ItLSl7YVtyXT0yNTUmZTtlPj49OH1yZXR1cm4gaSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaVt0K2FdPTI1NSZlLmNoYXJDb2RlQXQoYSl9ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOmkseHJlZjphfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBpPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTphfT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9cGFyc2VYRkFQYXRoKHQpO2xldCBzPWkuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUociwwKTshcyYmci5sZW5ndGg+MSYmKHM9aS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbci5hdCgtMSldLDApKTtzP3MuY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KGEpP2EubWFwKChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsYSldOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3QgYT1bXTtpLmRvY3VtZW50RWxlbWVudC5kdW1wKGEpO3JldHVybiBhLmpvaW4oIiIpfShhLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksaSl9Y29uc3Qgcj1uZXcgU3RyaW5nU3RyZWFtKGUpO3IuZGljdD1uZXcgRGljdChhKTtyLmRpY3Quc2V0KCJUeXBlIixOYW1lLmdldCgiRW1iZWRkZWRGaWxlIikpO2kucHV0KHQse2RhdGE6cn0pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOml9b2YgZSlpLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGkubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGkpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBhPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBpPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGE9dC5maWxlbmFtZXx8IiIscj1baS50b1N0cmluZygpLGEsZS50b1N0cmluZygpXTtsZXQgcz1yLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5pbmZvKSl7ci5wdXNoKGUpO3MrPWUubGVuZ3RofWNvbnN0IG49bmV3IFVpbnQ4QXJyYXkocyk7bGV0IG89MDtmb3IoY29uc3QgZSBvZiByKXt3cml0ZVN0cmluZyhlLG8sbik7bys9ZS5sZW5ndGh9cmV0dXJuIGJ5dGVzVG9TdHJpbmcoZW8obikpfShlLHQpO2kuc2V0KCJJRCIsW3QuZmlsZUlkc1swXSxhXSl9fWFzeW5jIGZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LGNoYW5nZXM6aSx4cmVmOmE9bnVsbCxoYXNYZmE6cj0hMSx4ZmFEYXRhc2V0c1JlZjpzPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTpuPSExLG5lZWRBcHBlYXJhbmNlczpvLGFjcm9Gb3JtUmVmOmc9bnVsbCxhY3JvRm9ybTpjPW51bGwseGZhRGF0YTpsPW51bGwsdXNlWHJlZlN0cmVhbTpoPSExfSl7YXdhaXQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQWNyb2Zvcm0oe3hyZWY6ZSxhY3JvRm9ybTp0LGFjcm9Gb3JtUmVmOmksaGFzWGZhOmEsaGFzWGZhRGF0YXNldHNFbnRyeTpyLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm4sY2hhbmdlczpvfSl7IWF8fHJ8fHN8fHdhcm4oIlhGQSAtIENhbm5vdCBzYXZlIGl0Iik7aWYoIW4mJighYXx8IXN8fHIpKXJldHVybjtjb25zdCBnPXQuY2xvbmUoKTtpZihhJiYhcil7Y29uc3QgZT10LmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIik7ZS5zcGxpY2UoMywwLHMpO2cuc2V0KCJYRkEiLGUpfW4mJmcuc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtvLnB1dChpLHtkYXRhOmd9KX0oe3hyZWY6YSxhY3JvRm9ybTpjLGFjcm9Gb3JtUmVmOmcsaGFzWGZhOnIsaGFzWGZhRGF0YXNldHNFbnRyeTpuLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm8sY2hhbmdlczppfSk7ciYmdXBkYXRlWEZBKHt4ZmFEYXRhOmwseGZhRGF0YXNldHNSZWY6cyxjaGFuZ2VzOmkseHJlZjphfSk7Y29uc3QgQz1mdW5jdGlvbiBnZXRUcmFpbGVyRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgRGljdChudWxsKTthLnNldCgiUHJldiIsZS5zdGFydFhSZWYpO2NvbnN0IHI9ZS5uZXdSZWY7aWYoaSl7dC5wdXQocix7ZGF0YToiIn0pO2Euc2V0KCJTaXplIixyLm51bSsxKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhSZWYiKSl9ZWxzZSBhLnNldCgiU2l6ZSIsci5udW0pO251bGwhPT1lLnJvb3RSZWYmJmEuc2V0KCJSb290IixlLnJvb3RSZWYpO251bGwhPT1lLmluZm9SZWYmJmEuc2V0KCJJbmZvIixlLmluZm9SZWYpO251bGwhPT1lLmVuY3J5cHRSZWYmJmEuc2V0KCJFbmNyeXB0IixlLmVuY3J5cHRSZWYpO3JldHVybiBhfSh0LGksaCksUT1bXSxFPWF3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ2hhbmdlcyhlLHQsaT1bXSl7Y29uc3QgYT1bXTtmb3IoY29uc3Rbcix7ZGF0YTpzfV1vZiBlLml0ZW1zKCkpaWYobnVsbCE9PXMmJiJzdHJpbmciIT10eXBlb2Ygcyl7YXdhaXQgd3JpdGVPYmplY3QocixzLGksdCk7YS5wdXNoKHtyZWY6cixkYXRhOmkuam9pbigiIil9KTtpLmxlbmd0aD0wfWVsc2UgYS5wdXNoKHtyZWY6cixkYXRhOnN9KTtyZXR1cm4gYS5zb3J0KCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSkpfShpLGEsUSk7bGV0IHU9ZS5sZW5ndGg7Y29uc3QgZD1lLmF0KC0xKTtpZigxMCE9PWQmJjEzIT09ZCl7US5wdXNoKCJcbiIpO3UrPTF9Zm9yKGNvbnN0e2RhdGE6ZX1vZiBFKW51bGwhPT1lJiZRLnB1c2goZSk7YXdhaXQoaD9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGksYSxyKXtjb25zdCBzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOmF9b2YgaSl7bGV0IGk7bj1NYXRoLm1heChuLHQpO2lmKG51bGwhPT1hKXtpPU1hdGgubWluKGUuZ2VuLDY1NTM1KTtzLnB1c2goWzEsdCxpXSk7dCs9YS5sZW5ndGh9ZWxzZXtpPU1hdGgubWluKGUuZ2VuKzEsNjU1MzUpO3MucHVzaChbMCwwLGldKX1vPU1hdGgubWF4KG8saSl9YS5zZXQoIkluZGV4IixnZXRJbmRleGVzKGkpKTtjb25zdCBnPVsxLGdldFNpemVJbkJ5dGVzKG4pLGdldFNpemVJbkJ5dGVzKG8pXTthLnNldCgiVyIsZyk7Y29tcHV0ZUlEcyh0LGUsYSk7Y29uc3QgYz1nLnJlZHVjZSgoKGUsdCk9PmUrdCksMCksbD1uZXcgVWludDhBcnJheShjKnMubGVuZ3RoKSxoPW5ldyBTdHJlYW0obCk7aC5kaWN0PWE7bGV0IEM9MDtmb3IoY29uc3RbZSx0LGldb2Ygcyl7Qz13cml0ZUludChlLGdbMF0sQyxsKTtDPXdyaXRlSW50KHQsZ1sxXSxDLGwpO0M9d3JpdGVJbnQoaSxnWzJdLEMsbCl9YXdhaXQgd3JpdGVPYmplY3QoZS5uZXdSZWYsaCxyLHt9KTtyLnB1c2goInN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LHUsRSxDLFEpOmFzeW5jIGZ1bmN0aW9uIGdldFhSZWZUYWJsZShlLHQsaSxhLHIpe3IucHVzaCgieHJlZlxuIik7Y29uc3Qgcz1nZXRJbmRleGVzKGkpO2xldCBuPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBpKXtpZihlLm51bT09PXNbbl0pe3IucHVzaChgJHtzW25dfSAke3NbbisxXX1cbmApO24rPTJ9aWYobnVsbCE9PWEpe3IucHVzaChgJHt0LnRvU3RyaW5nKCkucGFkU3RhcnQoMTAsIjAiKX0gJHtNYXRoLm1pbihlLmdlbiw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IG5cclxuYCk7dCs9YS5sZW5ndGh9ZWxzZSByLnB1c2goYDAwMDAwMDAwMDAgJHtNYXRoLm1pbihlLmdlbisxLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gZlxyXG5gKX1jb21wdXRlSURzKHQsZSxhKTtyLnB1c2goInRyYWlsZXJcbiIpO2F3YWl0IHdyaXRlRGljdChhLHIpO3IucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCx1LEUsQyxRKSk7Y29uc3QgZj1RLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLGUubGVuZ3RoKSxwPW5ldyBVaW50OEFycmF5KGYpO3Auc2V0KGUpO2xldCBtPWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIFEpe3dyaXRlU3RyaW5nKGUsbSxwKTttKz1lLmxlbmd0aH1yZXR1cm4gcH1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgaT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChpKTtyZXR1cm4gaX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7Y29uc3QgdD10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9dC5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzUmVhZHk9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlJlYWRlckhlYWRlcnNSZWFkeSIpLnRoZW4oKGU9Pnt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5jb250ZW50TGVuZ3RofSkpfWdldCBoZWFkZXJzUmVhZHkoKXtyZXR1cm4gdGhpcy5faGVhZGVyc1JlYWR5fWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5fbXNnSGFuZGxlcj1pO3RoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IGE9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjplLGVuZDp0fSk7dGhpcy5fcmVhZGVyPWEuZ2V0UmVhZGVyKCl9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuITF9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBXb3JrZXJUYXNre2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lO3RoaXMudGVybWluYXRlZD0hMTt0aGlzLl9jYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX1jbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWN7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFpJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJmdW5jdGlvbiI9PXR5cGVvZiBzZWxmLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIHNlbGYmJnRoaXMuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfXN0YXRpYyBzZXR1cChlLHQpe2xldCBpPSExO2Uub24oInRlc3QiLCh0PT57aWYoIWkpe2k9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSkpO2Uub24oImNvbmZpZ3VyZSIsKGU9PnshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKEl0PWUpfShlLnZlcmJvc2l0eSl9KSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsKGU9PnRoaXMuY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCkpKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IGksYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LG49Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmd9PWUsYz0iNC4xMC4zOCI7aWYoZyE9PWMpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Z30iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtjfSIuYCk7Y29uc3QgbD1bXTtmb3IoY29uc3QgZSBpbltdKWwucHVzaChlKTtpZihsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIitsLmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2NvbnN0IGg9bysiX3dvcmtlciI7bGV0IEM9bmV3IE1lc3NhZ2VIYW5kbGVyKGgsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtzLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7cy5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBpLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYUZvbnRzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IFByb21pc2UuYWxsKFtpLmxvYWRYZmFGb250cyhDLGUpLmNhdGNoKChlPT57fSkpLnRoZW4oKCgpPT5maW5pc2hXb3JrZXJUYXNrKGUpKSksaS5sb2FkWGZhSW1hZ2VzKCldKX1jb25zdFthLHJdPWF3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygibnVtUGFnZXMiKSxpLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6YSxmaW5nZXJwcmludHM6cixodG1sRm9yWGZhOnQ/YXdhaXQgaS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBzZXR1cERvYyhlKXtmdW5jdGlvbiBvblN1Y2Nlc3MoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO0Muc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gb25GYWlsdXJlKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7Qy5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2kudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTtDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsd3JhcFJlYXNvbihlKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uP2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0pKTpvbkZhaWx1cmUoZSl9KSl9ZW5zdXJlTm90VGVybWluYXRlZCgpOyhhc3luYyBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmkscmFuZ2VDaHVua1NpemU6YSxsZW5ndGg6cyxkb2NCYXNlVXJsOm4sZW5hYmxlWGZhOmcsZXZhbHVhdG9yT3B0aW9uczpjfSl7Y29uc3QgbD17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDppLGRvY0Jhc2VVcmw6bixkb2NJZDpvLGVuYWJsZVhmYTpnLGV2YWx1YXRvck9wdGlvbnM6YyxoYW5kbGVyOkMsbGVuZ3RoOnMscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTphfTtpZihlKXtsLnNvdXJjZT1lO3JldHVybiBuZXcgTG9jYWxQZGZNYW5hZ2VyKGwpfWNvbnN0IGg9bmV3IFBERldvcmtlclN0cmVhbShDKSxRPWguZ2V0RnVsbFJlYWRlcigpLEU9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IHUsZD1bXSxmPTA7US5oZWFkZXJzUmVhZHkudGhlbigoZnVuY3Rpb24oKXtpZihRLmlzUmFuZ2VTdXBwb3J0ZWQpe2wuc291cmNlPWg7bC5sZW5ndGg9US5jb250ZW50TGVuZ3RoO2wuZGlzYWJsZUF1dG9GZXRjaHx8PVEuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7dT1uZXcgTmV0d29ya1BkZk1hbmFnZXIobCk7Zm9yKGNvbnN0IGUgb2YgZCl1LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7ZD1bXTtFLnJlc29sdmUodSk7cj1udWxsfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO25ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2NvbnN0IHJlYWRDaHVuaz1mdW5jdGlvbih7dmFsdWU6ZSxkb25lOml9KXt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGkpe2lmKCF1KXtjb25zdCBlPWFycmF5QnVmZmVyc1RvQnl0ZXMoZCk7ZD1bXTtzJiZlLmxlbmd0aCE9PXMmJndhcm4oInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO2wuc291cmNlPWU7dT1uZXcgTG9jYWxQZGZNYW5hZ2VyKGwpO0UucmVzb2x2ZSh1KX1yPW51bGw7cmV0dXJufWYrPWUuYnl0ZUxlbmd0aDtRLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHxDLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOmYsdG90YWw6TWF0aC5tYXgoZixRLmNvbnRlbnRMZW5ndGh8fDApfSk7dT91LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6ZC5wdXNoKGUpO1EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTtRLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO3I9ZT0+e2guY2FuY2VsQWxsUmVxdWVzdHMoZSl9O3JldHVybiBFLnByb21pc2V9KShlKS50aGVuKChmdW5jdGlvbihlKXtpZihhKXtlLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1pPWU7aS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCEwKS50aGVuKChlPT57Qy5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSkpfSkpLnRoZW4ocGRmTWFuYWdlclJlYWR5LG9uRmFpbHVyZSl9Qy5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmUoZSwicm90YXRlIiksaS5lbnN1cmUoZSwicmVmIiksaS5lbnN1cmUoZSwidXNlclVuaXQiKSxpLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGksYV0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCxyZWZTdHI6dD8udG9TdHJpbmcoKT8/bnVsbCx1c2VyVW5pdDppLHZpZXc6YX19KSl9KSl9KSk7Qy5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24oZSl7Y29uc3QgdD1SZWYuZ2V0KGUubnVtLGUuZ2VuKTtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFt0XSl9KSk7Qy5vbigiR2V0RGVzdGluYXRpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KSk7Qy5vbigiR2V0RGVzdGluYXRpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2UuaWRdKX0pKTtDLm9uKCJHZXRQYWdlTGFiZWxzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSkpO0Mub24oIkdldFBhZ2VMYXlvdXQiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7Qy5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSkpO0Mub24oIkdldFZpZXdlclByZWZlcmVuY2VzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pKTtDLm9uKCJHZXRPcGVuQWN0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSkpO0Mub24oIkdldEF0dGFjaG1lbnRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pKTtDLm9uKCJHZXREb2NKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pKTtDLm9uKCJHZXRQYWdlSlNBY3Rpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmUoZSwianNBY3Rpb25zIil9KSl9KSk7Qy5vbigiR2V0T3V0bGluZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSkpO0Mub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm9wdGlvbmFsQ29udGVudENvbmZpZyIpfSkpO0Mub24oIkdldFBlcm1pc3Npb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pKTtDLm9uKCJHZXRNZXRhZGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGkuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKV0pfSkpO0Mub24oIkdldE1hcmtJbmZvIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTtDLm9uKCJHZXREYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVzfSkpfSkpO0Mub24oIkdldEFubm90YXRpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBHZXRBbm5vdGF0aW9uczogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiBpLmdldEFubm90YXRpb25zRGF0YShDLGEsdCkudGhlbigoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7cmV0dXJuIGV9KSwoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7dGhyb3cgZX0pKX0pKX0pKTtDLm9uKCJHZXRGaWVsZE9iamVjdHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oKGU9PmU/LmFsbEZpZWxkc3x8bnVsbCkpfSkpO0Mub24oIkhhc0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KSk7Qy5vbigiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSkpO0Mub24oIlNhdmVEb2N1bWVudCIsKGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOmEsZmlsZW5hbWU6cn0pe2NvbnN0IHM9W2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLGkuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxpLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksaS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLGkuZW5zdXJlRG9jKCJ4cmVmIiksaS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxpLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLG49bmV3IFJlZlNldENhY2hlLG89W10sZz1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoYSksW2MsbCxoLFEsRSx1LGRdPWF3YWl0IFByb21pc2UuYWxsKHMpLGY9RS50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCBwO2lmKGcpe2Q/YXdhaXQgZC5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmkseHJlZjpFLG5ld0Fubm90YXRpb25zQnlQYWdlOmd9KSYmKHA9ZCk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxuZXdBbm5vdGF0aW9uc0J5UGFnZTpnfSkmJihwPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoYS52YWx1ZXMoKSxFLGkuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1wP286W107Zm9yKGNvbnN0W2Escl1vZiBnKXQucHVzaChpLmdldFBhZ2UoYSkudGhlbigodD0+e2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmUgKGVkaXRvcik6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlTmV3QW5ub3RhdGlvbnMoQyxpLHIsZSxuKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSl9KSl9KSkpO251bGw9PT1wP28ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKChhc3luYygpPT57YXdhaXQgU3RydWN0VHJlZVJvb3QuY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6Zyx4cmVmOkUsY2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxjaGFuZ2VzOm59KX0pKSk6cCYmby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKGFzeW5jKCk9Pnthd2FpdCBwLnVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmcscGRmTWFuYWdlcjppLGNoYW5nZXM6bn0pfSkpKX1pZihlKW8ucHVzaChpLnNlcmlhbGl6ZVhmYURhdGEoYSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylvLnB1c2goaS5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmU6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlKEMsaSxhLG4pLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKX0pKX0pKSk7Y29uc3QgbT1hd2FpdCBQcm9taXNlLmFsbChvKTtsZXQgeT1udWxsO2lmKGUpe3k9bVswXTtpZigheSlyZXR1cm4gYy5ieXRlc31lbHNlIGlmKDA9PT1uLnNpemUpcmV0dXJuIGMuYnl0ZXM7Y29uc3Qgdz1oJiZsIGluc3RhbmNlb2YgRGljdCYmbi52YWx1ZXMoKS5zb21lKChlPT5lLm5lZWRBcHBlYXJhbmNlcykpLGI9bCBpbnN0YW5jZW9mIERpY3QmJmwuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgRD1udWxsLFM9ITE7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGxldCBlPTAsdD1iLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09YltlXSl7RD1iW2UrMV07Uz0hMH1udWxsPT09RCYmKEQ9RS5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBiJiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgaz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKEUudHJhaWxlcil7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9RS50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgdCkic3RyaW5nIj09dHlwZW9mIGEmJihlW2ldPXN0cmluZ1RvUERGU3RyaW5nKGEpKTtrPXtyb290UmVmOmYsZW5jcnlwdFJlZjpFLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOkUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpFLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mbzplLGZpbGVJZHM6RS50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6dT9ROkUubGFzdFhSZWZTdHJlYW1Qb3M/P1EsZmlsZW5hbWU6cn19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6Yy5ieXRlcyx4cmVmSW5mbzprLGNoYW5nZXM6bix4cmVmOkUsaGFzWGZhOiEhYix4ZmFEYXRhc2V0c1JlZjpELGhhc1hmYURhdGFzZXRzRW50cnk6UyxuZWVkQXBwZWFyYW5jZXM6dyxhY3JvRm9ybVJlZjpoLGFjcm9Gb3JtOmwseGZhRGF0YTp5LHVzZVhyZWZTdHJlYW06aXNEaWN0KEUudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKCk9PntFLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSk7Qy5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUucGFnZUluZGV4O2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhyKTtjb25zdCBzPW4+PWJBP0RhdGUubm93KCk6MDtpLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpDLHNpbms6dCx0YXNrOnIsaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZSxtb2RpZmllZElkczplLm1vZGlmaWVkSWRzfSkudGhlbigoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhyKTtzJiZpbmZvKGBwYWdlPSR7YSsxfSAtIGdldE9wZXJhdG9yTGlzdDogdGltZT0ke0RhdGUubm93KCktc31tcywgbGVuPSR7ZS5sZW5ndGh9YCk7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2socik7ci50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO0Mub24oIkdldFRleHRDb250ZW50IiwoZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSW5kZXg6YSxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9PWU7aS5nZXRQYWdlKGEpLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soIkdldFRleHRDb250ZW50OiBwYWdlICIrYSk7c3RhcnRXb3JrZXJUYXNrKGkpO2NvbnN0IG89bj49YkE/RGF0ZS5ub3coKTowO2UuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOkMsdGFzazppLHNpbms6dCxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9KS50aGVuKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSk7byYmaW5mbyhgcGFnZT0ke2ErMX0gLSBnZXRUZXh0Q29udGVudDogdGltZT1gKyhEYXRlLm5vdygpLW8pKyJtcyIpO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtDLm9uKCJHZXRTdHJ1Y3RUcmVlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlKGUsImdldFN0cnVjdFRyZWUiKX0pKX0pKTtDLm9uKCJGb250RmFsbGJhY2siLChmdW5jdGlvbihlKXtyZXR1cm4gaS5mb250RmFsbGJhY2soZS5pZCxDKX0pKTtDLm9uKCJDbGVhbnVwIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2xlYW51cCghMCl9KSk7Qy5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24oZSl7YT0hMDtjb25zdCB0PVtdO2lmKGkpe2kudGVybWluYXRlKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWkuY2xlYW51cCgpO3QucHVzaChlKTtpPW51bGx9ZWxzZSBjbGVhckdsb2JhbENhY2hlcygpO3I/LihuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7Qy5kZXN0cm95KCk7Qz1udWxsfSkpfSkpO0Mub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7c2V0dXBEb2MoZSk7ZT1udWxsfSkpO3JldHVybiBofXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO3RoaXMuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dmFyIHVvPV9fd2VicGFja19leHBvcnRzX18uV29ya2VyTWVzc2FnZUhhbmRsZXI7ZXhwb3J0e3VvIGFzIFdvcmtlck1lc3NhZ2VIYW5kbGVyfTs=";function y1t(s,e,t){const i=s.contentWindow.document.createElement("style");i.textContent=`
- @page {
- margin: 3mm;
- size: ${e}pt ${t}pt;
- }
- body {
- margin: 0;
- }
- canvas {
- width: 100%;
- page-break-after: always;
- page-break-before: avoid;
- page-break-inside: avoid;
- }
- `,s.contentWindow.document.head.appendChild(i),s.contentWindow.document.body.style.width="100%"}function Q1t(s){return new Promise(e=>{const t=document.createElement("iframe");t.width="0",t.height="0",t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.border="none",t.style.overflow="hidden",t.onload=()=>e(t),s.appendChild(t)})}function M1t(s,e){const t=URL.createObjectURL(new Blob([s],{type:"application/pdf"})),i=document.createElement("a");i.href=t,i.download=e,i.style.display="none",document.body.append(i),i.click(),setTimeout(()=>{URL.revokeObjectURL(t),document.body.removeChild(i)},1e3)}function pbe(s){for(;s!=null&&s.firstChild;)s.removeChild(s.firstChild)}function A4(s){s==null||s.querySelectorAll("canvas").forEach(e=>{var t;e.width=1,e.height=1,(t=e.getContext("2d"))==null||t.clearRect(0,0,1,1)})}function gbe(s){return Object.prototype.hasOwnProperty.call(s,"_pdfInfo")}function Uwe({onError:s,onPasswordRequest:e,onProgress:t,source:i}){const n=uy(null),o=uy(null);return eBe(async()=>{const r=Fae(i);if(r){if(gbe(r)){n.value=r;return}try{o.value=V1t(r),e&&(o.value.onPassword=(l,a)=>{e({callback:l,isWrongPassword:a===N1t.INCORRECT_PASSWORD})}),t&&(o.value.onProgress=t),n.value=await o.value.promise}catch(l){if(n.value=null,s)s(l);else throw l}}}),Rd(n,(r,l)=>{l==null||l.destroy()}),Ene(()=>{var r,l,a,d;(r=o.value)!=null&&r.onPassword&&(o.value.onPassword=null),(l=o.value)!=null&&l.onProgress&&(o.value.onProgress=null),(a=o.value)==null||a.destroy(),gbe(Fae(i))||(d=n.value)==null||d.destroy()}),{doc:n}}var $2={};$2.d=(s,e)=>{for(var t in e)$2.o(e,t)&&!$2.o(s,t)&&Object.defineProperty(s,t,{enumerable:!0,get:e[t]})};$2.o=(s,e)=>Object.prototype.hasOwnProperty.call(s,e);var vr=globalThis.pdfjsViewer={};$2.d(vr,{AnnotationLayerBuilder:()=>Cwe,DownloadManager:()=>Ryt,EventBus:()=>Lwe,FindState:()=>Kb,GenericL10n:()=>fO,LinkTarget:()=>wZ,PDFFindController:()=>cyt,PDFHistory:()=>SQt,PDFLinkService:()=>Twe,PDFPageView:()=>$we,PDFScriptingManager:()=>kQt,PDFSinglePageViewer:()=>DQt,PDFViewer:()=>dTe,ProgressBar:()=>G1t,RenderingStates:()=>Dr,ScrollMode:()=>Ks,SimpleLinkService:()=>aae,SpreadMode:()=>Zd,StructTreeLayerBuilder:()=>zwe,TextLayerBuilder:()=>Kwe,XfaLayerBuilder:()=>qwe,parseQueryString:()=>pO});const w1t="auto",Fwe=1,fbe=1.1,T1t=.1,C1t=10,Z4=0,B1t=1.25,Awe=40,Zwe=5,Dr={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3},oy={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3},Cg={DISABLE:0,ENABLE:1,ENABLE_PERMISSIONS:2},Ks={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2,PAGE:3},Zd={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};function Swe(s,e,t=!1){let i=s.offsetParent;if(!i){console.error("offsetParent is not set -- cannot scroll");return}let n=s.offsetTop+s.clientTop,o=s.offsetLeft+s.clientLeft;for(;i.clientHeight===i.scrollHeight&&i.clientWidth===i.scrollWidth||t&&(i.classList.contains("markedContent")||getComputedStyle(i).overflow==="hidden");)if(n+=i.offsetTop,o+=i.offsetLeft,i=i.offsetParent,!i)return;e&&(e.top!==void 0&&(n+=e.top),e.left!==void 0&&(o+=e.left,i.scrollLeft=o)),i.scrollTop=n}function L1t(s,e,t=void 0){const i=function(r){o||(o=window.requestAnimationFrame(function(){o=null;const l=s.scrollLeft,a=n.lastX;l!==a&&(n.right=l>a),n.lastX=l;const d=s.scrollTop,c=n.lastY;d!==c&&(n.down=d>c),n.lastY=d,e(n)}))},n={right:!0,down:!0,lastX:s.scrollLeft,lastY:s.scrollTop,_eventHandler:i};let o=null;return s.addEventListener("scroll",i,{useCapture:!0,signal:t}),t==null||t.addEventListener("abort",()=>window.cancelAnimationFrame(o),{once:!0}),n}function pO(s){const e=new Map;for(const[t,i]of new URLSearchParams(s))e.set(t.toLowerCase(),i);return e}const bbe=/[\x00-\x1F]/g;function eB(s,e=!1){return bbe.test(s)?e?s.replaceAll(bbe,t=>t==="\0"?"":" "):s.replaceAll("\0",""):s}function Zv(s,e,t=0){let i=t,n=s.length-1;if(n<0||!e(s[n]))return s.length;if(e(s[i]))return i;for(;i<n;){const o=i+n>>1,r=s[o];e(r)?n=o:i=o+1}return i}function Ube(s){if(Math.floor(s)===s)return[s,1];const e=1/s,t=8;if(e>t)return[1,t];if(Math.floor(e)===e)return[1,e];const i=s>1?e:s;let n=0,o=1,r=1,l=1;for(;;){const d=n+r,c=o+l;if(c>t)break;i<=d/c?(r=d,l=c):(n=d,o=c)}let a;return i-n/o<r/l-i?a=i===s?[n,o]:[o,n]:a=i===s?[r,l]:[l,r],a}function JE(s,e){return s-s%e}function v1t(s,e,t){if(s<2)return s;let i=e[s].div,n=i.offsetTop+i.clientTop;n>=t&&(i=e[s-1].div,n=i.offsetTop+i.clientTop);for(let o=s-2;o>=0&&(i=e[o].div,!(i.offsetTop+i.clientTop+i.clientHeight<=n));--o)s=o;return s}function k1t({scrollEl:s,views:e,sortByVisibility:t=!1,horizontal:i=!1,rtl:n=!1}){const o=s.scrollTop,r=o+s.clientHeight,l=s.scrollLeft,a=l+s.clientWidth;function d(U){const S=U.div;return S.offsetTop+S.clientTop+S.clientHeight>o}function c(U){const S=U.div,Z=S.offsetLeft+S.clientLeft,R=Z+S.clientWidth;return n?Z<a:R>l}const h=[],u=new Set,m=e.length;let p=Zv(e,i?c:d);p>0&&p<m&&!i&&(p=v1t(p,e,o));let g=i?a:-1;for(let U=p;U<m;U++){const S=e[U],Z=S.div,R=Z.offsetLeft+Z.clientLeft,y=Z.offsetTop+Z.clientTop,N=Z.clientWidth,w=Z.clientHeight,Q=R+N,C=y+w;if(g===-1)C>=r&&(g=C);else if((i?R:y)>g)break;if(C<=o||y>=r||Q<=l||R>=a)continue;const v=Math.max(0,o-y)+Math.max(0,C-r),Y=Math.max(0,l-R)+Math.max(0,Q-a),J=(w-v)/w,k=(N-Y)/N,E=J*k*100|0;h.push({id:S.id,x:R,y,view:S,percent:E,widthPercent:k*100|0}),u.add(S.id)}const f=h[0],b=h.at(-1);return t&&h.sort(function(U,S){const Z=U.percent-S.percent;return Math.abs(Z)>.001?-Z:U.id-S.id}),{first:f,last:b,views:h,ids:u}}function Nwe(s){return Number.isInteger(s)&&s%90===0}function x1t(s){return Number.isInteger(s)&&Object.values(Ks).includes(s)&&s!==Ks.UNKNOWN}function I1t(s){return Number.isInteger(s)&&Object.values(Zd).includes(s)&&s!==Zd.UNKNOWN}function Rwe(s){return s.width<=s.height}new Promise(function(s){window.requestAnimationFrame(s)});const E1t=document.documentElement.style;function D1t(s,e,t){return Math.min(Math.max(s,e),t)}var QZ,sW,MZ,yC,oW;class G1t{constructor(e){O(this,QZ,null),O(this,sW,null),O(this,MZ,0),O(this,yC,null),O(this,oW,!0),I(this,QZ,e.classList),I(this,yC,e.style)}get percent(){return A(this,MZ)}set percent(e){if(I(this,MZ,D1t(e,0,100)),isNaN(e)){A(this,QZ).add("indeterminate");return}A(this,QZ).remove("indeterminate"),A(this,yC).setProperty("--progressBar-percent",`${A(this,MZ)}%`)}setWidth(e){if(!e)return;const t=e.parentNode.offsetWidth-e.offsetWidth;t>0&&A(this,yC).setProperty("--progressBar-end-offset",`${t}px`)}setDisableAutoFetch(e=5e3){A(this,MZ)===100||isNaN(A(this,MZ))||(A(this,sW)&&clearTimeout(A(this,sW)),this.show(),I(this,sW,setTimeout(()=>{I(this,sW,null),this.hide()},e)))}hide(){A(this,oW)&&(I(this,oW,!1),A(this,QZ).add("hidden"))}show(){A(this,oW)||(I(this,oW,!0),A(this,QZ).remove("hidden"))}}QZ=new WeakMap,sW=new WeakMap,MZ=new WeakMap,yC=new WeakMap,oW=new WeakMap;function J1t(s){let e=Ks.VERTICAL,t=Zd.NONE;switch(s){case"SinglePage":e=Ks.PAGE;break;case"OneColumn":break;case"TwoPageLeft":e=Ks.PAGE;case"TwoColumnLeft":t=Zd.ODD;break;case"TwoPageRight":e=Ks.PAGE;case"TwoColumnRight":t=Zd.EVEN;break}return{scrollMode:e,spreadMode:t}}const XE=function(){const s=document.createElement("div");return s.style.width="round(down, calc(1.6666666666666665 * 792px), 1px)",s.style.width==="calc(1320px)"?Math.fround:e=>e}(),Sm={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};function X1t(s){return s<11904}function Y1t(s){return(s&65408)===0}function _1t(s){return s>=97&&s<=122||s>=65&&s<=90}function z1t(s){return s>=48&&s<=57}function O1t(s){return s===32||s===9||s===13||s===10}function j1t(s){return s>=13312&&s<=40959||s>=63744&&s<=64255}function P1t(s){return s>=12448&&s<=12543}function H1t(s){return s>=12352&&s<=12447}function K1t(s){return s>=65376&&s<=65439}function q1t(s){return(s&65408)===3584}function YE(s){return X1t(s)?Y1t(s)?O1t(s)?Sm.SPACE:_1t(s)||z1t(s)||s===95?Sm.ALPHA_LETTER:Sm.PUNCT:q1t(s)?Sm.THAI_LETTER:s===160?Sm.SPACE:Sm.ALPHA_LETTER:j1t(s)?Sm.HAN_LETTER:P1t(s)?Sm.KATAKANA_LETTER:H1t(s)?Sm.HIRAGANA_LETTER:K1t(s)?Sm.HALFWIDTH_KATAKANA_LETTER:Sm.ALPHA_LETTER}let S4;function $1t(){return S4||(S4=" ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩"),S4}const Kb={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3},eyt=250,tyt=-50,iyt=-400,Fbe={"‐":"-","‘":"'","’":"'","‚":"'","‛":"'","“":'"',"”":'"',"„":'"',"‟":'"',"¼":"1/4","½":"1/2","¾":"3/4"},Abe=new Set([12441,12442,2381,2509,2637,2765,2893,3021,3149,3277,3387,3388,3405,3530,3642,3770,3972,4153,4154,5908,5940,6098,6752,6980,7082,7083,7154,7155,11647,43014,43052,43204,43347,43456,43766,44013,3158,3953,3954,3962,3963,3964,3965,3968,3956]);let N4;const nyt=new RegExp("\\p{M}+","gu"),syt=new RegExp("([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})","gu"),oyt=new RegExp("([^\\p{M}])\\p{M}*$","u"),ryt=new RegExp("^\\p{M}*([^\\p{M}])","u"),lyt=/[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g,Zbe=new Map,ayt="[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]",Sbe=new Map;let R4=null,V4=null;function W4(s){const e=[];let t;for(;(t=lyt.exec(s))!==null;){let{index:g}=t;for(const f of t[0]){let b=Zbe.get(f);b||(b=f.normalize("NFD").length,Zbe.set(f,b)),e.push([b,g++])}}let i;if(e.length===0&&R4)i=R4;else if(e.length>0&&V4)i=V4;else{const g=Object.keys(Fbe).join(""),f=$1t(),b=`([${g}])|([${f}])|((?:゙|゚)\\n)|(\\p{M}+(?:-\\n)?)|(\\p{Ll}-\\n\\p{Lu})|(\\S-\\n)|((?:\\p{Ideographic}|[-ヿ])\\n)|(\\n)`;e.length===0?i=R4=new RegExp(b+"|(\\u0000)","gum"):i=V4=new RegExp(b+`|(${ayt})`,"gum")}const n=[];for(;(t=nyt.exec(s))!==null;)n.push([t[0].length,t.index]);let o=s.normalize("NFD");const r=[0,0];let l=0,a=0,d=0,c=0,h=0,u=!1;o=o.replace(i,(g,f,b,U,S,Z,R,y,N,w,Q)=>{var C,v,Y;if(Q-=c,f){const J=Fbe[f],k=J.length;for(let E=1;E<k;E++)r.push(Q-d+E,d-E);return d-=k-1,J}if(b){let J=Sbe.get(b);J||(J=b.normalize("NFKC"),Sbe.set(b,J));const k=J.length;for(let E=1;E<k;E++)r.push(Q-d+E,d-E);return d-=k-1,J}if(U)return u=!0,Q+h===((C=n[l])==null?void 0:C[1])?++l:(r.push(Q-1-d+1,d-1),d-=1,c+=1),r.push(Q-d+1,d),c+=1,h+=1,U.charAt(0);if(S){const J=S.endsWith(`
- `),k=J?S.length-2:S.length;u=!0;let E=k;Q+h===((v=n[l])==null?void 0:v[1])&&(E-=n[l][0],++l);for(let K=1;K<=E;K++)r.push(Q-1-d+K,d-K);return d-=E,c+=E,J?(Q+=k-1,r.push(Q-d+1,1+d),d+=1,c+=1,h+=1,S.slice(0,k)):S}if(Z)return c+=1,h+=1,Z.replace(`
- `,"");if(R){const J=R.length-2;return r.push(Q-d+J,1+d),d+=1,c+=1,h+=1,R.slice(0,-2)}if(y){const J=y.length-1;return r.push(Q-d+J,d),c+=1,h+=1,y.slice(0,-1)}if(N)return r.push(Q-d+1,d-1),d-=1,c+=1,h+=1," ";if(Q+h===((Y=e[a])==null?void 0:Y[1])){const J=e[a][0]-1;++a;for(let k=1;k<=J;k++)r.push(Q-(d-k),d-k);d-=J,c+=J}return w}),r.push(o.length,d);const m=new Uint32Array(r.length>>1),p=new Int32Array(r.length>>1);for(let g=0,f=r.length;g<f;g+=2)m[g>>1]=r[g],p[g>>1]=r[g+1];return[o,[m,p],u]}function dyt(s,e,t){if(!s)return[e,t];const[i,n]=s,o=e,r=e+t-1;let l=Zv(i,h=>h>=o);i[l]>o&&--l;let a=Zv(i,h=>h>=r,l);i[a]>r&&--a;const d=o+n[l],c=r+n[a]+1-d;return[d,c]}var Ma,tB,rW,os,Vwe,une,y4,Nbe,Wwe,mne,Rbe,Vbe,_E,uT,VV,Wbe,Q4,M4,zE,ywe,w4,T4,mT;class cyt{constructor({linkService:e,eventBus:t,updateMatchesCountOnProgress:i=!0}){O(this,os),O(this,Ma,null),O(this,tB,!0),O(this,rW,0),this._linkService=e,this._eventBus=t,I(this,tB,i),this.onIsPageVisible=null,_(this,os,une).call(this),t._on("find",_(this,os,Vwe).bind(this)),t._on("findbarclose",_(this,os,ywe).bind(this))}get highlightMatches(){return this._highlightMatches}get pageMatches(){return this._pageMatches}get pageMatchesLength(){return this._pageMatchesLength}get selected(){return this._selected}get state(){return A(this,Ma)}setDocument(e){this._pdfDocument&&_(this,os,une).call(this),e&&(this._pdfDocument=e,this._firstPageCapability.resolve())}scrollMatchIntoView({element:e=null,selectedLeft:t=0,pageIndex:i=-1,matchIndex:n=-1}){if(!this._scrollMatches||!e||n===-1||n!==this._selected.matchIdx||i===-1||i!==this._selected.pageIdx)return;this._scrollMatches=!1;const o={top:tyt,left:t+iyt};Swe(e,o,!0)}match(e,t,i){const n=this._hasDiacritics[i];let o=!1;if(typeof e=="string"?[o,e]=_(this,os,mne).call(this,e,n):e=e.sort().reverse().map(h=>{const[u,m]=_(this,os,mne).call(this,h,n);return o||(o=u),`(${m})`}).join("|"),!e)return;const{caseSensitive:r,entireWord:l}=A(this,Ma),a=`g${o?"u":""}${r?"":"i"}`;e=new RegExp(e,a);const d=[];let c;for(;(c=e.exec(t))!==null;)l&&!_(this,os,Wwe).call(this,t,c.index,c[0].length)||d.push({index:c.index,length:c[0].length});return d}}Ma=new WeakMap,tB=new WeakMap,rW=new WeakMap,os=new WeakSet,Vwe=function(s){if(!s)return;const e=this._pdfDocument,{type:t}=s;(A(this,Ma)===null||_(this,os,Nbe).call(this,s))&&(this._dirtyMatch=!0),I(this,Ma,s),t!=="highlightallchange"&&_(this,os,mT).call(this,Kb.PENDING),this._firstPageCapability.promise.then(()=>{if(!this._pdfDocument||e&&this._pdfDocument!==e)return;_(this,os,Vbe).call(this);const i=!this._highlightMatches,n=!!this._findTimeout;this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),t?this._dirtyMatch?_(this,os,VV).call(this):t==="again"?(_(this,os,VV).call(this),i&&A(this,Ma).highlightAll&&_(this,os,uT).call(this)):t==="highlightallchange"?(n?_(this,os,VV).call(this):this._highlightMatches=!0,_(this,os,uT).call(this)):_(this,os,VV).call(this):this._findTimeout=setTimeout(()=>{_(this,os,VV).call(this),this._findTimeout=null},eyt)})},une=function(){this._highlightMatches=!1,this._scrollMatches=!1,this._pdfDocument=null,this._pageMatches=[],this._pageMatchesLength=[],I(this,rW,0),I(this,Ma,null),this._selected={pageIdx:-1,matchIdx:-1},this._offset={pageIdx:null,matchIdx:null,wrapped:!1},this._extractTextPromises=[],this._pageContents=[],this._pageDiffs=[],this._hasDiacritics=[],this._matchesCountTotal=0,this._pagesToSearch=null,this._pendingFindMatches=new Set,this._resumePageIdx=null,this._dirtyMatch=!1,clearTimeout(this._findTimeout),this._findTimeout=null,this._firstPageCapability=Promise.withResolvers()},y4=function(){const{query:s}=A(this,Ma);return typeof s=="string"?(s!==this._rawQuery&&(this._rawQuery=s,[this._normalizedQuery]=W4(s)),this._normalizedQuery):(s||[]).filter(e=>!!e).map(e=>W4(e)[0])},Nbe=function(s){var e;const t=s.query,i=A(this,Ma).query,n=typeof t;if(n!==typeof i)return!0;if(n==="string"){if(t!==i)return!0}else if(JSON.stringify(t)!==JSON.stringify(i))return!0;switch(s.type){case"again":const o=this._selected.pageIdx+1,r=this._linkService;return o>=1&&o<=r.pagesCount&&o!==r.page&&!(((e=this.onIsPageVisible)==null?void 0:e.call(this,o))??!0);case"highlightallchange":return!1}return!0},Wwe=function(s,e,t){let i=s.slice(0,e).match(oyt);if(i){const n=s.charCodeAt(e),o=i[1].charCodeAt(0);if(YE(n)===YE(o))return!1}if(i=s.slice(e+t).match(ryt),i){const n=s.charCodeAt(e+t-1),o=i[1].charCodeAt(0);if(YE(n)===YE(o))return!1}return!0},mne=function(s,e){const{matchDiacritics:t}=A(this,Ma);let i=!1;s=s.replaceAll(syt,(o,r,l,a,d,c)=>r?`[ ]*\\${r}[ ]*`:l?`[ ]*${l}[ ]*`:a?"[ ]+":t?d||c:d?Abe.has(d.charCodeAt(0))?d:"":e?(i=!0,`${c}\\p{M}*`):c);const n="[ ]*";return s.endsWith(n)&&(s=s.slice(0,s.length-n.length)),t&&e&&(N4||(N4=String.fromCharCode(...Abe)),i=!0,s=`${s}(?=[${N4}]|[^\\p{M}]|$)`),[i,s]},Rbe=function(s){const e=A(this,os,y4);if(e.length===0)return;const t=this._pageContents[s],i=this.match(e,t,s),n=this._pageMatches[s]=[],o=this._pageMatchesLength[s]=[],r=this._pageDiffs[s];i==null||i.forEach(({index:a,length:d})=>{const[c,h]=dyt(r,a,d);h&&(n.push(c),o.push(h))}),A(this,Ma).highlightAll&&_(this,os,_E).call(this,s),this._resumePageIdx===s&&(this._resumePageIdx=null,_(this,os,Q4).call(this));const l=n.length;this._matchesCountTotal+=l,A(this,tB)?l>0&&_(this,os,T4).call(this):++mc(this,rW)._===this._linkService.pagesCount&&_(this,os,T4).call(this)},Vbe=function(){if(this._extractTextPromises.length>0)return;let s=Promise.resolve();const e={disableNormalization:!0};for(let t=0,i=this._linkService.pagesCount;t<i;t++){const{promise:n,resolve:o}=Promise.withResolvers();this._extractTextPromises[t]=n,s=s.then(()=>this._pdfDocument.getPage(t+1).then(r=>r.getTextContent(e)).then(r=>{const l=[];for(const a of r.items)l.push(a.str),a.hasEOL&&l.push(`
- `);[this._pageContents[t],this._pageDiffs[t],this._hasDiacritics[t]]=W4(l.join("")),o()},r=>{console.error(`Unable to get text content for page ${t+1}`,r),this._pageContents[t]="",this._pageDiffs[t]=null,this._hasDiacritics[t]=!1,o()}))}},_E=function(s){this._scrollMatches&&this._selected.pageIdx===s&&(this._linkService.page=s+1),this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:s})},uT=function(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1})},VV=function(){const s=A(this,Ma).findPrevious,e=this._linkService.page-1,t=this._linkService.pagesCount;if(this._highlightMatches=!0,this._dirtyMatch){this._dirtyMatch=!1,this._selected.pageIdx=this._selected.matchIdx=-1,this._offset.pageIdx=e,this._offset.matchIdx=null,this._offset.wrapped=!1,this._resumePageIdx=null,this._pageMatches.length=0,this._pageMatchesLength.length=0,I(this,rW,0),this._matchesCountTotal=0,_(this,os,uT).call(this);for(let n=0;n<t;n++)this._pendingFindMatches.has(n)||(this._pendingFindMatches.add(n),this._extractTextPromises[n].then(()=>{this._pendingFindMatches.delete(n),_(this,os,Rbe).call(this,n)}))}if(A(this,os,y4).length===0){_(this,os,mT).call(this,Kb.FOUND);return}if(this._resumePageIdx)return;const i=this._offset;if(this._pagesToSearch=t,i.matchIdx!==null){const n=this._pageMatches[i.pageIdx].length;if(!s&&i.matchIdx+1<n||s&&i.matchIdx>0){i.matchIdx=s?i.matchIdx-1:i.matchIdx+1,_(this,os,zE).call(this,!0);return}_(this,os,M4).call(this,s)}_(this,os,Q4).call(this)},Wbe=function(s){const e=this._offset,t=s.length,i=A(this,Ma).findPrevious;return t?(e.matchIdx=i?t-1:0,_(this,os,zE).call(this,!0),!0):(_(this,os,M4).call(this,i),e.wrapped&&(e.matchIdx=null,this._pagesToSearch<0)?(_(this,os,zE).call(this,!1),!0):!1)},Q4=function(){this._resumePageIdx!==null&&console.error("There can only be one pending page.");let s=null;do{const e=this._offset.pageIdx;if(s=this._pageMatches[e],!s){this._resumePageIdx=e;break}}while(!_(this,os,Wbe).call(this,s))},M4=function(s){const e=this._offset,t=this._linkService.pagesCount;e.pageIdx=s?e.pageIdx-1:e.pageIdx+1,e.matchIdx=null,this._pagesToSearch--,(e.pageIdx>=t||e.pageIdx<0)&&(e.pageIdx=s?t-1:0,e.wrapped=!0)},zE=function(s=!1){let e=Kb.NOT_FOUND;const t=this._offset.wrapped;if(this._offset.wrapped=!1,s){const i=this._selected.pageIdx;this._selected.pageIdx=this._offset.pageIdx,this._selected.matchIdx=this._offset.matchIdx,e=t?Kb.WRAPPED:Kb.FOUND,i!==-1&&i!==this._selected.pageIdx&&_(this,os,_E).call(this,i)}_(this,os,mT).call(this,e,A(this,Ma).findPrevious),this._selected.pageIdx!==-1&&(this._scrollMatches=!0,_(this,os,_E).call(this,this._selected.pageIdx))},ywe=function(s){const e=this._pdfDocument;this._firstPageCapability.promise.then(()=>{!this._pdfDocument||e&&this._pdfDocument!==e||(this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),this._resumePageIdx&&(this._resumePageIdx=null,this._dirtyMatch=!0),_(this,os,mT).call(this,Kb.FOUND),this._highlightMatches=!1,_(this,os,uT).call(this))})},w4=function(){var s;const{pageIdx:e,matchIdx:t}=this._selected;let i=0,n=this._matchesCountTotal;if(t!==-1){for(let o=0;o<e;o++)i+=((s=this._pageMatches[o])==null?void 0:s.length)||0;i+=t+1}return(i<1||i>n)&&(i=n=0),{current:i,total:n}},T4=function(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:_(this,os,w4).call(this)})},mT=function(s,e=!1){var t,i;!A(this,tB)&&(A(this,rW)!==this._linkService.pagesCount||s===Kb.PENDING)||this._eventBus.dispatch("updatefindcontrolstate",{source:this,state:s,previous:e,entireWord:((t=A(this,Ma))==null?void 0:t.entireWord)??null,matchesCount:_(this,os,w4).call(this),rawQuery:((i=A(this,Ma))==null?void 0:i.query)??null})};const hyt="noopener noreferrer nofollow",wZ={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};var pne,Qwe;const Mwe=class wwe{constructor({eventBus:e,externalLinkTarget:t=null,externalLinkRel:i=null,ignoreDestinationZoom:n=!1}={}){Rn(this,"externalLinkEnabled",!0),this.eventBus=e,this.externalLinkTarget=t,this.externalLinkRel=i,this._ignoreDestinationZoom=n,this.baseUrl=null,this.pdfDocument=null,this.pdfViewer=null,this.pdfHistory=null}setDocument(e,t=null){this.baseUrl=t,this.pdfDocument=e}setViewer(e){this.pdfViewer=e}setHistory(e){this.pdfHistory=e}get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0}get page(){return this.pdfDocument?this.pdfViewer.currentPageNumber:1}set page(e){this.pdfDocument&&(this.pdfViewer.currentPageNumber=e)}get rotation(){return this.pdfDocument?this.pdfViewer.pagesRotation:0}set rotation(e){this.pdfDocument&&(this.pdfViewer.pagesRotation=e)}get isInPresentationMode(){return this.pdfDocument?this.pdfViewer.isInPresentationMode:!1}async goToDestination(e){if(!this.pdfDocument)return;let t,i,n;if(typeof e=="string"?(t=e,i=await this.pdfDocument.getDestination(e)):(t=null,i=await e),!Array.isArray(i)){console.error(`goToDestination: "${i}" is not a valid destination array, for dest="${e}".`);return}const[o]=i;if(o&&typeof o=="object"){if(n=this.pdfDocument.cachedPageNumber(o),!n)try{n=await this.pdfDocument.getPageIndex(o)+1}catch{console.error(`goToDestination: "${o}" is not a valid page reference, for dest="${e}".`);return}}else Number.isInteger(o)&&(n=o+1);if(!n||n<1||n>this.pagesCount){console.error(`goToDestination: "${n}" is not a valid page number, for dest="${e}".`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.push({namedDest:t,explicitDest:i,pageNumber:n})),this.pdfViewer.scrollPageIntoView({pageNumber:n,destArray:i,ignoreDestinationZoom:this._ignoreDestinationZoom})}goToPage(e){if(!this.pdfDocument)return;const t=typeof e=="string"&&this.pdfViewer.pageLabelToPageNumber(e)||e|0;if(!(Number.isInteger(t)&&t>0&&t<=this.pagesCount)){console.error(`PDFLinkService.goToPage: "${e}" is not a valid page.`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.pushPage(t)),this.pdfViewer.scrollPageIntoView({pageNumber:t})}addLinkAttributes(e,t,i=!1){if(!t||typeof t!="string")throw new Error('A valid "url" parameter must provided.');const n=i?wZ.BLANK:this.externalLinkTarget,o=this.externalLinkRel;this.externalLinkEnabled?e.href=e.title=t:(e.href="",e.title=`Disabled: ${t}`,e.onclick=()=>!1);let r="";switch(n){case wZ.NONE:break;case wZ.SELF:r="_self";break;case wZ.BLANK:r="_blank";break;case wZ.PARENT:r="_parent";break;case wZ.TOP:r="_top";break}e.target=r,e.rel=typeof o=="string"?o:hyt}getDestinationHash(e){if(typeof e=="string"){if(e.length>0)return this.getAnchorUrl("#"+escape(e))}else if(Array.isArray(e)){const t=JSON.stringify(e);if(t.length>0)return this.getAnchorUrl("#"+escape(t))}return this.getAnchorUrl("")}getAnchorUrl(e){return this.baseUrl?this.baseUrl+e:e}setHash(e){var t;if(!this.pdfDocument)return;let i,n;if(e.includes("=")){const o=pO(e);if(o.has("search")){const r=o.get("search").replaceAll('"',""),l=o.get("phrase")==="true";this.eventBus.dispatch("findfromurlhash",{source:this,query:l?r:r.match(/\S+/g)})}if(o.has("page")&&(i=o.get("page")|0||1),o.has("zoom")){const r=o.get("zoom").split(","),l=r[0],a=parseFloat(l);l.includes("Fit")?l==="Fit"||l==="FitB"?n=[null,{name:l}]:l==="FitH"||l==="FitBH"||l==="FitV"||l==="FitBV"?n=[null,{name:l},r.length>1?r[1]|0:null]:l==="FitR"?r.length!==5?console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'):n=[null,{name:l},r[1]|0,r[2]|0,r[3]|0,r[4]|0]:console.error(`PDFLinkService.setHash: "${l}" is not a valid zoom value.`):n=[null,{name:"XYZ"},r.length>1?r[1]|0:null,r.length>2?r[2]|0:null,a?a/100:l]}n?this.pdfViewer.scrollPageIntoView({pageNumber:i||this.page,destArray:n,allowNegativeOffset:!0}):i&&(this.page=i),o.has("pagemode")&&this.eventBus.dispatch("pagemode",{source:this,mode:o.get("pagemode")}),o.has("nameddest")&&this.goToDestination(o.get("nameddest"));return}n=unescape(e);try{n=JSON.parse(n),Array.isArray(n)||(n=n.toString())}catch{}if(typeof n=="string"||_(t=wwe,pne,Qwe).call(t,n)){this.goToDestination(n);return}console.error(`PDFLinkService.setHash: "${unescape(e)}" is not a valid destination.`)}executeNamedAction(e){var t,i;if(this.pdfDocument){switch(e){case"GoBack":(t=this.pdfHistory)==null||t.back();break;case"GoForward":(i=this.pdfHistory)==null||i.forward();break;case"NextPage":this.pdfViewer.nextPage();break;case"PrevPage":this.pdfViewer.previousPage();break;case"LastPage":this.page=this.pagesCount;break;case"FirstPage":this.page=1;break}this.eventBus.dispatch("namedaction",{source:this,action:e})}}async executeSetOCGState(e){if(!this.pdfDocument)return;const t=this.pdfDocument,i=await this.pdfViewer.optionalContentConfigPromise;t===this.pdfDocument&&(i.setOCGState(e),this.pdfViewer.optionalContentConfigPromise=Promise.resolve(i))}};pne=new WeakSet,Qwe=function(s){if(!Array.isArray(s)||s.length<2)return!1;const[e,t,...i]=s;if(!(typeof e=="object"&&Number.isInteger(e==null?void 0:e.num)&&Number.isInteger(e==null?void 0:e.gen))&&!Number.isInteger(e)||!(typeof t=="object"&&typeof(t==null?void 0:t.name)=="string"))return!1;const n=i.length;let o=!0;switch(t.name){case"XYZ":if(n<2||n>3)return!1;break;case"Fit":case"FitB":return n===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(n>1)return!1;break;case"FitR":if(n!==4)return!1;o=!1;break;default:return!1}for(const r of i)if(!(typeof r=="number"||o&&r===null))return!1;return!0},O(Mwe,pne);let Twe=Mwe;class aae extends Twe{setDocument(e,t=null){}}const{AbortException:uyt,AnnotationEditorLayer:myt,AnnotationEditorParamsType:cvt,AnnotationEditorType:wh,AnnotationEditorUIManager:pyt,AnnotationLayer:gyt,AnnotationMode:Cf,build:hvt,ColorPicker:uvt,createValidAbsoluteUrl:fyt,DOMSVGFactory:mvt,DrawLayer:byt,FeatureTest:pvt,fetchData:ybe,getDocument:gvt,getFilenameFromUrl:fvt,getPdfFilenameFromUrl:Uyt,getXfaPageViewport:bvt,GlobalWorkerOptions:Uvt,ImageKind:Fvt,InvalidPDFException:Avt,isDataScheme:Zvt,isPdfFile:Fyt,MissingPDFException:Svt,noContextMenu:Nvt,normalizeUnicode:Ayt,OPS:Rvt,OutputScale:Zyt,PasswordResponses:Vvt,PDFDataRangeTransport:Wvt,PDFDateString:yvt,PDFWorker:Qvt,PermissionFlag:OE,PixelsPerInch:bf,RenderingCancelledException:dae,setLayerDimensions:Syt,shadow:p_,stopEvent:gne,TextLayer:Nyt,TouchManager:Mvt,UnexpectedResponseException:wvt,Util:Tvt,VerbosityLevel:Cvt,version:Qbe,XfaLayer:C4}=globalThis.pdfjsLib;var zG,TZ,OG,fne;class Cwe{constructor({pdfPage:e,linkService:t,downloadManager:i,annotationStorage:n=null,imageResourcesPath:o="",renderForms:r=!0,enableScripting:l=!1,hasJSActionsPromise:a=null,fieldObjectsPromise:d=null,annotationCanvasMap:c=null,accessibilityManager:h=null,annotationEditorUIManager:u=null,onAppend:m=null}){O(this,OG),O(this,zG,null),O(this,TZ,null),this.pdfPage=e,this.linkService=t,this.downloadManager=i,this.imageResourcesPath=o,this.renderForms=r,this.annotationStorage=n,this.enableScripting=l,this._hasJSActionsPromise=a||Promise.resolve(!1),this._fieldObjectsPromise=d||Promise.resolve(null),this._annotationCanvasMap=c,this._accessibilityManager=h,this._annotationEditorUIManager=u,I(this,zG,m),this.annotationLayer=null,this.div=null,this._cancelled=!1,this._eventBus=t.eventBus}async render(e,t,i="display"){var n,o;if(this.div){if(this._cancelled||!this.annotationLayer)return;this.annotationLayer.update({viewport:e.clone({dontFlip:!0})});return}const[r,l,a]=await Promise.all([this.pdfPage.getAnnotations({intent:i}),this._hasJSActionsPromise,this._fieldObjectsPromise]);if(this._cancelled)return;const d=this.div=document.createElement("div");if(d.className="annotationLayer",(n=A(this,zG))==null||n.call(this,d),r.length===0){this.hide();return}this.annotationLayer=new gyt({div:d,accessibilityManager:this._accessibilityManager,annotationCanvasMap:this._annotationCanvasMap,annotationEditorUIManager:this._annotationEditorUIManager,page:this.pdfPage,viewport:e.clone({dontFlip:!0}),structTreeLayer:(t==null?void 0:t.structTreeLayer)||null}),await this.annotationLayer.render({annotations:r,imageResourcesPath:this.imageResourcesPath,renderForms:this.renderForms,linkService:this.linkService,downloadManager:this.downloadManager,annotationStorage:this.annotationStorage,enableScripting:this.enableScripting,hasJSActions:l,fieldObjects:a}),this.linkService.isInPresentationMode&&_(this,OG,fne).call(this,oy.FULLSCREEN),A(this,TZ)||(I(this,TZ,new AbortController),(o=this._eventBus)==null||o._on("presentationmodechanged",c=>{_(this,OG,fne).call(this,c.state)},{signal:A(this,TZ).signal}))}cancel(){var e;this._cancelled=!0,(e=A(this,TZ))==null||e.abort(),I(this,TZ,null)}hide(){this.div&&(this.div.hidden=!0)}hasEditableAnnotations(){var e;return!!((e=this.annotationLayer)!=null&&e.hasEditableAnnotations())}}zG=new WeakMap,TZ=new WeakMap,OG=new WeakSet,fne=function(s){if(!this.div)return;let e=!1;switch(s){case oy.FULLSCREEN:e=!0;break;case oy.NORMAL:break;default:return}for(const t of this.div.childNodes)t.hasAttribute("data-internal-link")||(t.inert=e)};function Mbe(s,e){const t=document.createElement("a");if(!t.click)throw new Error('DownloadManager: "a.click()" is not supported.');t.href=s,t.target="_parent","download"in t&&(t.download=e),(document.body||document.documentElement).append(t),t.click(),t.remove()}var Bwe;class Ryt{constructor(){O(this,Bwe,new WeakMap)}downloadData(e,t,i){const n=URL.createObjectURL(new Blob([e],{type:i}));Mbe(n,t)}openOrDownloadData(e,t,i=null){const n=Fyt(t)?"application/pdf":"";return this.downloadData(e,t,n),!1}download(e,t,i){let n;if(e)n=URL.createObjectURL(new Blob([e],{type:"application/pdf"}));else{if(!fyt(t,"http://example.com")){console.error(`download - not a valid URL: ${t}`);return}n=t+"#pdfjs.action=download"}Mbe(n,i)}}Bwe=new WeakMap;const wbe={EVENT:"event",TIMEOUT:"timeout"};async function Vyt({target:s,name:e,delay:t=0}){if(typeof s!="object"||!(e&&typeof e=="string")||!(Number.isInteger(t)&&t>=0))throw new Error("waitOnEventOrTimeout - invalid parameters.");const{promise:i,resolve:n}=Promise.withResolvers(),o=new AbortController;function r(d){o.abort(),clearTimeout(a),n(d)}const l=s instanceof Lwe?"_on":"addEventListener";s[l](e,r.bind(null,wbe.EVENT),{signal:o.signal});const a=setTimeout(r.bind(null,wbe.TIMEOUT),t);return i}var QC;class Lwe{constructor(){O(this,QC,Object.create(null))}on(e,t,i=null){this._on(e,t,{external:!0,once:i==null?void 0:i.once,signal:i==null?void 0:i.signal})}off(e,t,i=null){this._off(e,t)}dispatch(e,t){const i=A(this,QC)[e];if(!i||i.length===0)return;let n;for(const{listener:o,external:r,once:l}of i.slice(0)){if(l&&this._off(e,o),r){(n||(n=[])).push(o);continue}o(t)}if(n){for(const o of n)o(t);n=null}}_on(e,t,i=null){var n;let o=null;if((i==null?void 0:i.signal)instanceof AbortSignal){const{signal:r}=i;if(r.aborted){console.error("Cannot use an `aborted` signal.");return}const l=()=>this._off(e,t);o=()=>r.removeEventListener("abort",l),r.addEventListener("abort",l)}((n=A(this,QC))[e]||(n[e]=[])).push({listener:t,external:(i==null?void 0:i.external)===!0,once:(i==null?void 0:i.once)===!0,rmAbort:o})}_off(e,t,i=null){var n;const o=A(this,QC)[e];if(o)for(let r=0,l=o.length;r<l;r++){const a=o[r];if(a.listener===t){(n=a.rmAbort)==null||n.call(a),o.splice(r,1);return}}}}QC=new WeakMap;class gO{constructor(e){this.value=e}valueOf(){return this.value}}class wl extends gO{constructor(e="???"){super(e)}toString(e){return`{${this.value}}`}}class Jf extends gO{constructor(e,t={}){super(e),this.opts=t}toString(e){try{return e.memoizeIntlObject(Intl.NumberFormat,this.opts).format(this.value)}catch(t){return e.reportError(t),this.value.toString(10)}}}class iB extends gO{constructor(e,t={}){super(e),this.opts=t}toString(e){try{return e.memoizeIntlObject(Intl.DateTimeFormat,this.opts).format(this.value)}catch(t){return e.reportError(t),new Date(this.value).toISOString()}}}const Tbe=100,Wyt="",yyt="";function Qyt(s,e,t){if(t===e||t instanceof Jf&&e instanceof Jf&&t.value===e.value)return!0;if(e instanceof Jf&&typeof t=="string"){let i=s.memoizeIntlObject(Intl.PluralRules,e.opts).select(e.value);if(t===i)return!0}return!1}function Cbe(s,e,t){return e[t]?dQ(s,e[t].value):(s.reportError(new RangeError("No default")),new wl)}function bne(s,e){const t=[],i=Object.create(null);for(const n of e)n.type==="narg"?i[n.name]=Sv(s,n.value):t.push(Sv(s,n));return{positional:t,named:i}}function Sv(s,e){switch(e.type){case"str":return e.value;case"num":return new Jf(e.value,{minimumFractionDigits:e.precision});case"var":return Myt(s,e);case"mesg":return wyt(s,e);case"term":return Tyt(s,e);case"func":return Cyt(s,e);case"select":return Byt(s,e);default:return new wl}}function Myt(s,{name:e}){let t;if(s.params)if(Object.prototype.hasOwnProperty.call(s.params,e))t=s.params[e];else return new wl(`$${e}`);else if(s.args&&Object.prototype.hasOwnProperty.call(s.args,e))t=s.args[e];else return s.reportError(new ReferenceError(`Unknown variable: $${e}`)),new wl(`$${e}`);if(t instanceof gO)return t;switch(typeof t){case"string":return t;case"number":return new Jf(t);case"object":if(t instanceof Date)return new iB(t.getTime());default:return s.reportError(new TypeError(`Variable type not supported: $${e}, ${typeof t}`)),new wl(`$${e}`)}}function wyt(s,{name:e,attr:t}){const i=s.bundle._messages.get(e);if(!i)return s.reportError(new ReferenceError(`Unknown message: ${e}`)),new wl(e);if(t){const n=i.attributes[t];return n?dQ(s,n):(s.reportError(new ReferenceError(`Unknown attribute: ${t}`)),new wl(`${e}.${t}`))}return i.value?dQ(s,i.value):(s.reportError(new ReferenceError(`No value: ${e}`)),new wl(e))}function Tyt(s,{name:e,attr:t,args:i}){const n=`-${e}`,o=s.bundle._terms.get(n);if(!o)return s.reportError(new ReferenceError(`Unknown term: ${n}`)),new wl(n);if(t){const l=o.attributes[t];if(l){s.params=bne(s,i).named;const a=dQ(s,l);return s.params=null,a}return s.reportError(new ReferenceError(`Unknown attribute: ${t}`)),new wl(`${n}.${t}`)}s.params=bne(s,i).named;const r=dQ(s,o.value);return s.params=null,r}function Cyt(s,{name:e,args:t}){let i=s.bundle._functions[e];if(!i)return s.reportError(new ReferenceError(`Unknown function: ${e}()`)),new wl(`${e}()`);if(typeof i!="function")return s.reportError(new TypeError(`Function ${e}() is not callable`)),new wl(`${e}()`);try{let n=bne(s,t);return i(n.positional,n.named)}catch(n){return s.reportError(n),new wl(`${e}()`)}}function Byt(s,{selector:e,variants:t,star:i}){let n=Sv(s,e);if(n instanceof wl)return Cbe(s,t,i);for(const o of t){const r=Sv(s,o.key);if(Qyt(s,n,r))return dQ(s,o.value)}return Cbe(s,t,i)}function vwe(s,e){if(s.dirty.has(e))return s.reportError(new RangeError("Cyclic reference")),new wl;s.dirty.add(e);const t=[],i=s.bundle._useIsolating&&e.length>1;for(const n of e){if(typeof n=="string"){t.push(s.bundle._transform(n));continue}if(s.placeables++,s.placeables>Tbe)throw s.dirty.delete(e),new RangeError(`Too many placeables expanded: ${s.placeables}, max allowed is ${Tbe}`);i&&t.push(Wyt),t.push(Sv(s,n).toString(s)),i&&t.push(yyt)}return s.dirty.delete(e),t.join("")}function dQ(s,e){return typeof e=="string"?s.bundle._transform(e):vwe(s,e)}class Lyt{constructor(e,t,i){this.dirty=new WeakSet,this.params=null,this.placeables=0,this.bundle=e,this.errors=t,this.args=i}reportError(e){if(!this.errors||!(e instanceof Error))throw e;this.errors.push(e)}memoizeIntlObject(e,t){let i=this.bundle._intls.get(e);i||(i={},this.bundle._intls.set(e,i));let n=JSON.stringify(t);return i[n]||(i[n]=new e(this.bundle.locales,t)),i[n]}}function g_(s,e){const t=Object.create(null);for(const[i,n]of Object.entries(s))e.includes(i)&&(t[i]=n.valueOf());return t}const Bbe=["unitDisplay","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function vyt(s,e){let t=s[0];if(t instanceof wl)return new wl(`NUMBER(${t.valueOf()})`);if(t instanceof Jf)return new Jf(t.valueOf(),{...t.opts,...g_(e,Bbe)});if(t instanceof iB)return new Jf(t.valueOf(),{...g_(e,Bbe)});throw new TypeError("Invalid argument to NUMBER")}const Lbe=["dateStyle","timeStyle","fractionalSecondDigits","dayPeriod","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function kyt(s,e){let t=s[0];if(t instanceof wl)return new wl(`DATETIME(${t.valueOf()})`);if(t instanceof iB)return new iB(t.valueOf(),{...t.opts,...g_(e,Lbe)});if(t instanceof Jf)return new iB(t.valueOf(),{...g_(e,Lbe)});throw new TypeError("Invalid argument to DATETIME")}const vbe=new Map;function xyt(s){const e=Array.isArray(s)?s.join(" "):s;let t=vbe.get(e);return t===void 0&&(t=new Map,vbe.set(e,t)),t}class Iyt{constructor(e,{functions:t,useIsolating:i=!0,transform:n=o=>o}={}){this._terms=new Map,this._messages=new Map,this.locales=Array.isArray(e)?e:[e],this._functions={NUMBER:vyt,DATETIME:kyt,...t},this._useIsolating=i,this._transform=n,this._intls=xyt(e)}hasMessage(e){return this._messages.has(e)}getMessage(e){return this._messages.get(e)}addResource(e,{allowOverrides:t=!1}={}){const i=[];for(let n=0;n<e.body.length;n++){let o=e.body[n];if(o.id.startsWith("-")){if(t===!1&&this._terms.has(o.id)){i.push(new Error(`Attempt to override an existing term: "${o.id}"`));continue}this._terms.set(o.id,o)}else{if(t===!1&&this._messages.has(o.id)){i.push(new Error(`Attempt to override an existing message: "${o.id}"`));continue}this._messages.set(o.id,o)}}return i}formatPattern(e,t=null,i=null){if(typeof e=="string")return this._transform(e);let n=new Lyt(this,i,t);try{return vwe(n,e).toString(n)}catch(o){if(n.errors&&o instanceof Error)return n.errors.push(o),new wl().toString(n);throw o}}}const B4=/^(-?[a-zA-Z][\w-]*) *= */gm,kbe=/\.([a-zA-Z][\w-]*) *= */y,Eyt=/\*?\[/y,L4=/(-?[0-9]+(?:\.([0-9]+))?)/y,Dyt=/([a-zA-Z][\w-]*)/y,xbe=/([$-])?([a-zA-Z][\w-]*)(?:\.([a-zA-Z][\w-]*))?/y,Gyt=/^[A-Z][A-Z0-9_-]*$/,jE=/([^{}\n\r]+)/y,Jyt=/([^\\"\n\r]*)/y,Ibe=/\\([\\"])/y,Ebe=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{6})/y,Xyt=/^\n+/,Dbe=/ +$/,Yyt=/ *\r?\n/g,_yt=/( *)$/,zyt=/{\s*/y,Gbe=/\s*}/y,Oyt=/\[\s*/y,jyt=/\s*] */y,Pyt=/\s*\(\s*/y,Hyt=/\s*->\s*/y,Kyt=/\s*:\s*/y,qyt=/\s*,?\s*/y,$yt=/\s+/y;class eQt{constructor(e){this.body=[],B4.lastIndex=0;let t=0;for(;;){let Q=B4.exec(e);if(Q===null)break;t=B4.lastIndex;try{this.body.push(a(Q[1]))}catch(C){if(C instanceof SyntaxError)continue;throw C}}function i(Q){return Q.lastIndex=t,Q.test(e)}function n(Q,C){if(e[t]===Q)return t++,!0;if(C)throw new C(`Expected ${Q}`);return!1}function o(Q,C){if(i(Q))return t=Q.lastIndex,!0;if(C)throw new C(`Expected ${Q.toString()}`);return!1}function r(Q){Q.lastIndex=t;let C=Q.exec(e);if(C===null)throw new SyntaxError(`Expected ${Q.toString()}`);return t=Q.lastIndex,C}function l(Q){return r(Q)[1]}function a(Q){let C=c(),v=d();if(C===null&&Object.keys(v).length===0)throw new SyntaxError("Expected message value or attributes");return{id:Q,value:C,attributes:v}}function d(){let Q=Object.create(null);for(;i(kbe);){let C=l(kbe),v=c();if(v===null)throw new SyntaxError("Expected attribute value");Q[C]=v}return Q}function c(){let Q;if(i(jE)&&(Q=l(jE)),e[t]==="{"||e[t]==="}")return h(Q?[Q]:[],1/0);let C=y();return C?Q?h([Q,C],C.length):(C.value=N(C.value,Xyt),h([C],C.length)):Q?N(Q,Dbe):null}function h(Q=[],C){for(;;){if(i(jE)){Q.push(l(jE));continue}if(e[t]==="{"){Q.push(u());continue}if(e[t]==="}")throw new SyntaxError("Unbalanced closing brace");let k=y();if(k){Q.push(k),C=Math.min(C,k.length);continue}break}let v=Q.length-1,Y=Q[v];typeof Y=="string"&&(Q[v]=N(Y,Dbe));let J=[];for(let k of Q)k instanceof Jbe&&(k=k.value.slice(0,k.value.length-C)),k&&J.push(k);return J}function u(){o(zyt,SyntaxError);let Q=m();if(o(Gbe))return Q;if(o(Hyt)){let C=f();return o(Gbe,SyntaxError),{type:"select",selector:Q,...C}}throw new SyntaxError("Unclosed placeable")}function m(){if(e[t]==="{")return u();if(i(xbe)){let[,Q,C,v=null]=r(xbe);if(Q==="$")return{type:"var",name:C};if(o(Pyt)){let Y=p();if(Q==="-")return{type:"term",name:C,attr:v,args:Y};if(Gyt.test(C))return{type:"func",name:C,args:Y};throw new SyntaxError("Function names must be all upper-case")}return Q==="-"?{type:"term",name:C,attr:v,args:[]}:{type:"mesg",name:C,attr:v}}return U()}function p(){let Q=[];for(;;){switch(e[t]){case")":return t++,Q;case void 0:throw new SyntaxError("Unclosed argument list")}Q.push(g()),o(qyt)}}function g(){let Q=m();return Q.type!=="mesg"?Q:o(Kyt)?{type:"narg",name:Q.name,value:U()}:Q}function f(){let Q=[],C=0,v;for(;i(Eyt);){n("*")&&(v=C);let Y=b(),J=c();if(J===null)throw new SyntaxError("Expected variant value");Q[C++]={key:Y,value:J}}if(C===0)return null;if(v===void 0)throw new SyntaxError("Expected default variant");return{variants:Q,star:v}}function b(){o(Oyt,SyntaxError);let Q;return i(L4)?Q=S():Q={type:"str",value:l(Dyt)},o(jyt,SyntaxError),Q}function U(){if(i(L4))return S();if(e[t]==='"')return Z();throw new SyntaxError("Invalid expression")}function S(){let[,Q,C=""]=r(L4),v=C.length;return{type:"num",value:parseFloat(Q),precision:v}}function Z(){n('"',SyntaxError);let Q="";for(;;){if(Q+=l(Jyt),e[t]==="\\"){Q+=R();continue}if(n('"'))return{type:"str",value:Q};throw new SyntaxError("Unclosed string literal")}}function R(){if(i(Ibe))return l(Ibe);if(i(Ebe)){let[,Q,C]=r(Ebe),v=parseInt(Q||C,16);return v<=55295||57344<=v?String.fromCodePoint(v):"�"}throw new SyntaxError("Unknown escape sequence")}function y(){let Q=t;switch(o($yt),e[t]){case".":case"[":case"*":case"}":case void 0:return!1;case"{":return w(e.slice(Q,t))}return e[t-1]===" "?w(e.slice(Q,t)):!1}function N(Q,C){return Q.replace(C,"")}function w(Q){let C=Q.replace(Yyt,`
- `),v=_yt.exec(Q)[1].length;return new Jbe(C,v)}}}class Jbe{constructor(e,t){this.value=e,this.length=t}}const tQt=/<|&#?\w+;/,iQt={"http://www.w3.org/1999/xhtml":["em","strong","small","s","cite","q","dfn","abbr","data","time","code","var","samp","kbd","sub","sup","i","b","u","mark","bdi","bdo","span","br","wbr"]},nQt={"http://www.w3.org/1999/xhtml":{global:["title","aria-label","aria-valuetext"],a:["download"],area:["download","alt"],input:["alt","placeholder"],menuitem:["label"],menu:["label"],optgroup:["label"],option:["label"],track:["label"],img:["alt"],textarea:["placeholder"],th:["abbr"]},"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul":{global:["accesskey","aria-label","aria-valuetext","label","title","tooltiptext"],description:["value"],key:["key","keycode"],label:["value"],textbox:["placeholder","value"]}};function sQt(s,e){const{value:t}=e;if(typeof t=="string")if(s.localName==="title"&&s.namespaceURI==="http://www.w3.org/1999/xhtml")s.textContent=t;else if(!tQt.test(t))s.textContent=t;else{const i=s.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","template");i.innerHTML=t,oQt(i.content,s)}kwe(e,s)}function oQt(s,e){for(const t of s.childNodes)if(t.nodeType!==t.TEXT_NODE){if(t.hasAttribute("data-l10n-name")){const i=lQt(e,t);s.replaceChild(i,t);continue}if(dQt(t)){const i=aQt(t);s.replaceChild(i,t);continue}console.warn(`An element of forbidden type "${t.localName}" was found in the translation. Only safe text-level elements and elements with data-l10n-name are allowed.`),s.replaceChild(Une(t),t)}e.textContent="",e.appendChild(s)}function rQt(s,e){if(!s)return!1;for(let t of s)if(t.name===e)return!0;return!1}function kwe(s,e){const t=e.hasAttribute("data-l10n-attrs")?e.getAttribute("data-l10n-attrs").split(",").map(i=>i.trim()):null;for(const i of Array.from(e.attributes))Xbe(i.name,e,t)&&!rQt(s.attributes,i.name)&&e.removeAttribute(i.name);if(s.attributes)for(const i of Array.from(s.attributes))Xbe(i.name,e,t)&&e.getAttribute(i.name)!==i.value&&e.setAttribute(i.name,i.value)}function lQt(s,e){const t=e.getAttribute("data-l10n-name"),i=s.querySelector(`[data-l10n-name="${t}"]`);if(!i)return console.warn(`An element named "${t}" wasn't found in the source.`),Une(e);if(i.localName!==e.localName)return console.warn(`An element named "${t}" was found in the translation but its type ${e.localName} didn't match the element found in the source (${i.localName}).`),Une(e);s.removeChild(i);const n=i.cloneNode(!1);return xwe(e,n)}function aQt(s){const e=s.ownerDocument.createElement(s.localName);return xwe(s,e)}function Une(s){return s.ownerDocument.createTextNode(s.textContent)}function dQt(s){const e=iQt[s.namespaceURI];return e&&e.includes(s.localName)}function Xbe(s,e,t=null){if(t&&t.includes(s))return!0;const i=nQt[e.namespaceURI];if(!i)return!1;const n=s.toLowerCase(),o=e.localName;if(i.global.includes(n))return!0;if(!i[o])return!1;if(i[o].includes(n))return!0;if(e.namespaceURI==="http://www.w3.org/1999/xhtml"&&o==="input"&&n==="value"){const r=e.type.toLowerCase();if(r==="submit"||r==="button"||r==="reset")return!0}return!1}function xwe(s,e){return e.textContent=s.textContent,kwe(s,e),e}class cQt extends Array{static from(e){return e instanceof this?e:new this(e)}}class hQt extends cQt{constructor(e){if(super(),Symbol.asyncIterator in Object(e))this.iterator=e[Symbol.asyncIterator]();else if(Symbol.iterator in Object(e))this.iterator=e[Symbol.iterator]();else throw new TypeError("Argument must implement the iteration protocol.")}[Symbol.asyncIterator](){const e=this;let t=0;return{async next(){return e.length<=t&&e.push(e.iterator.next()),e[t++]}}}async touchNext(e=1){let t=0;for(;t++<e;){const i=this[this.length-1];if(i&&(await i).done)break;this.push(this.iterator.next())}return this[this.length-1]}}class uQt{constructor(e=[],t){this.resourceIds=e,this.generateBundles=t,this.onChange(!0)}addResourceIds(e,t=!1){return this.resourceIds.push(...e),this.onChange(t),this.resourceIds.length}removeResourceIds(e){return this.resourceIds=this.resourceIds.filter(t=>!e.includes(t)),this.onChange(),this.resourceIds.length}async formatWithFallback(e,t){const i=[];let n=!1;for await(const o of this.bundles){n=!0;const r=gQt(t,o,e,i);if(r.size===0)break;if(typeof console<"u"){const l=o.locales[0],a=Array.from(r).join(", ");console.warn(`[fluent] Missing translations in ${l}: ${a}`)}}return!n&&typeof console<"u"&&console.warn(`[fluent] Request for keys failed because no resource bundles got generated.
- keys: ${JSON.stringify(e)}.
- resourceIds: ${JSON.stringify(this.resourceIds)}.`),i}formatMessages(e){return this.formatWithFallback(e,pQt)}formatValues(e){return this.formatWithFallback(e,mQt)}async formatValue(e,t){const[i]=await this.formatValues([{id:e,args:t}]);return i}handleEvent(){this.onChange()}onChange(e=!1){this.bundles=hQt.from(this.generateBundles(this.resourceIds)),e&&this.bundles.touchNext(2)}}function mQt(s,e,t,i){return t.value?s.formatPattern(t.value,i,e):null}function pQt(s,e,t,i){const n={value:null,attributes:null};t.value&&(n.value=s.formatPattern(t.value,i,e));let o=Object.keys(t.attributes);if(o.length>0){n.attributes=new Array(o.length);for(let[r,l]of o.entries()){let a=s.formatPattern(t.attributes[l],i,e);n.attributes[r]={name:l,value:a}}}return n}function gQt(s,e,t,i){const n=[],o=new Set;return t.forEach(({id:r,args:l},a)=>{if(i[a]!==void 0)return;let d=e.getMessage(r);if(d){if(n.length=0,i[a]=s(e,n,d,l),n.length>0&&typeof console<"u"){const c=e.locales[0],h=n.join(", ");console.warn(`[fluent][resolver] errors in ${c}/${r}: ${h}.`)}}else o.add(r)}),o}const CZ="data-l10n-id",pT="data-l10n-args",fQt=`[${CZ}]`;class bQt extends uQt{constructor(e,t){super(e,t),this.roots=new Set,this.pendingrAF=null,this.pendingElements=new Set,this.windowElement=null,this.mutationObserver=null,this.observerConfig={attributes:!0,characterData:!1,childList:!0,subtree:!0,attributeFilter:[CZ,pT]}}onChange(e=!1){super.onChange(e),this.roots&&this.translateRoots()}setAttributes(e,t,i){return e.setAttribute(CZ,t),i?e.setAttribute(pT,JSON.stringify(i)):e.removeAttribute(pT),e}getAttributes(e){return{id:e.getAttribute(CZ),args:JSON.parse(e.getAttribute(pT)||null)}}connectRoot(e){for(const t of this.roots)if(t===e||t.contains(e)||e.contains(t))throw new Error("Cannot add a root that overlaps with existing root.");if(this.windowElement){if(this.windowElement!==e.ownerDocument.defaultView)throw new Error(`Cannot connect a root:
- DOMLocalization already has a root from a different window.`)}else this.windowElement=e.ownerDocument.defaultView,this.mutationObserver=new this.windowElement.MutationObserver(t=>this.translateMutations(t));this.roots.add(e),this.mutationObserver.observe(e,this.observerConfig)}disconnectRoot(e){return this.roots.delete(e),this.pauseObserving(),this.roots.size===0?(this.mutationObserver=null,this.windowElement&&this.pendingrAF&&this.windowElement.cancelAnimationFrame(this.pendingrAF),this.windowElement=null,this.pendingrAF=null,this.pendingElements.clear(),!0):(this.resumeObserving(),!1)}translateRoots(){const e=Array.from(this.roots);return Promise.all(e.map(t=>this.translateFragment(t)))}pauseObserving(){this.mutationObserver&&(this.translateMutations(this.mutationObserver.takeRecords()),this.mutationObserver.disconnect())}resumeObserving(){if(this.mutationObserver)for(const e of this.roots)this.mutationObserver.observe(e,this.observerConfig)}translateMutations(e){for(const t of e)switch(t.type){case"attributes":t.target.hasAttribute("data-l10n-id")&&this.pendingElements.add(t.target);break;case"childList":for(const i of t.addedNodes)if(i.nodeType===i.ELEMENT_NODE)if(i.childElementCount)for(const n of this.getTranslatables(i))this.pendingElements.add(n);else i.hasAttribute(CZ)&&this.pendingElements.add(i);break}this.pendingElements.size>0&&this.pendingrAF===null&&(this.pendingrAF=this.windowElement.requestAnimationFrame(()=>{this.translateElements(Array.from(this.pendingElements)),this.pendingElements.clear(),this.pendingrAF=null}))}translateFragment(e){return this.translateElements(this.getTranslatables(e))}async translateElements(e){if(!e.length)return;const t=e.map(this.getKeysForElement),i=await this.formatMessages(t);return this.applyTranslations(e,i)}applyTranslations(e,t){this.pauseObserving();for(let i=0;i<e.length;i++)t[i]!==void 0&&sQt(e[i],t[i]);this.resumeObserving()}getTranslatables(e){const t=Array.from(e.querySelectorAll(fQt));return typeof e.hasAttribute=="function"&&e.hasAttribute(CZ)&&t.push(e),t}getKeysForElement(e){return{id:e.getAttribute(CZ),args:JSON.parse(e.getAttribute(pT)||null)}}}var jG,qb,MC,Rh,f_,Iwe,Ewe;const Dwe=class Fne{constructor({lang:e,isRTL:t},i=null){O(this,jG),O(this,qb),O(this,MC),O(this,Rh);var n,o;I(this,MC,_(n=Fne,f_,Iwe).call(n,e)),I(this,Rh,i),I(this,jG,t??_(o=Fne,f_,Ewe).call(o,A(this,MC))?"rtl":"ltr")}_setL10n(e){I(this,Rh,e)}getLanguage(){return A(this,MC)}getDirection(){return A(this,jG)}async get(e,t=null,i){var n;return Array.isArray(e)?(e=e.map(o=>({id:o})),(await A(this,Rh).formatMessages(e)).map(o=>o.value)):((n=(await A(this,Rh).formatMessages([{id:e,args:t}]))[0])==null?void 0:n.value)||i}async translate(e){(A(this,qb)||I(this,qb,new Set)).add(e);try{A(this,Rh).connectRoot(e),await A(this,Rh).translateRoots()}catch{}}async translateOnce(e){try{await A(this,Rh).translateElements([e])}catch(t){console.error("translateOnce:",t)}}async destroy(){if(A(this,qb)){for(const e of A(this,qb))A(this,Rh).disconnectRoot(e);A(this,qb).clear(),I(this,qb,null)}A(this,Rh).pauseObserving()}pause(){A(this,Rh).pauseObserving()}resume(){A(this,Rh).resumeObserving()}};jG=new WeakMap,qb=new WeakMap,MC=new WeakMap,Rh=new WeakMap,f_=new WeakSet,Iwe=function(s){return s=(s==null?void 0:s.toLowerCase())||"en-us",{en:"en-us",es:"es-es",fy:"fy-nl",ga:"ga-ie",gu:"gu-in",hi:"hi-in",hy:"hy-am",nb:"nb-no",ne:"ne-np",nn:"nn-no",pa:"pa-in",pt:"pt-pt",sv:"sv-se",zh:"zh-cn"}[s]||s},Ewe=function(s){const e=s.split("-",1)[0];return["ar","he","fa","ps","ur"].includes(e)},O(Dwe,f_);let UQt=Dwe;function Ybe(s,e){const t=new eQt(e),i=new Iyt(s),n=i.addResource(t);return n.length&&console.error("L10n errors",n),i}var hU,Gwe,_be,zbe,Jwe,v4;const Xwe=class wC extends UQt{constructor(e){super({lang:e});const t=e?_(wC,hU,Gwe).bind(wC,"en-us",this.getLanguage()):_(wC,hU,Jwe).bind(wC,this.getLanguage());this._setL10n(new bQt([],t))}};hU=new WeakSet,Gwe=async function*(s,e){const{baseURL:t,paths:i}=await _(this,hU,zbe).call(this),n=[e];if(s!==e){const o=e.split("-",1)[0];o!==e&&n.push(o),n.push(s)}for(const o of n){const r=await _(this,hU,_be).call(this,o,t,i);r?yield r:o==="en-us"&&(yield _(this,hU,v4).call(this,o))}},_be=async function(s,e,t){const i=t[s];if(!i)return null;const n=new URL(i,e),o=await ybe(n,"text");return Ybe(s,o)},zbe=async function(){try{const{href:s}=document.querySelector('link[type="application/l10n"]'),e=await ybe(s,"json");return{baseURL:s.replace(/[^/]*$/,"")||"./",paths:e}}catch{}return{baseURL:"./",paths:Object.create(null)}},Jwe=async function*(s){yield _(this,hU,v4).call(this,s)},v4=async function(s){return Ybe(s,`pdfjs-previous-button =
- .title = Previous Page
- pdfjs-previous-button-label = Previous
- pdfjs-next-button =
- .title = Next Page
- pdfjs-next-button-label = Next
- pdfjs-page-input =
- .title = Page
- pdfjs-of-pages = of { $pagesCount }
- pdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })
- pdfjs-zoom-out-button =
- .title = Zoom Out
- pdfjs-zoom-out-button-label = Zoom Out
- pdfjs-zoom-in-button =
- .title = Zoom In
- pdfjs-zoom-in-button-label = Zoom In
- pdfjs-zoom-select =
- .title = Zoom
- pdfjs-presentation-mode-button =
- .title = Switch to Presentation Mode
- pdfjs-presentation-mode-button-label = Presentation Mode
- pdfjs-open-file-button =
- .title = Open File
- pdfjs-open-file-button-label = Open
- pdfjs-print-button =
- .title = Print
- pdfjs-print-button-label = Print
- pdfjs-save-button =
- .title = Save
- pdfjs-save-button-label = Save
- pdfjs-download-button =
- .title = Download
- pdfjs-download-button-label = Download
- pdfjs-bookmark-button =
- .title = Current Page (View URL from Current Page)
- pdfjs-bookmark-button-label = Current Page
- pdfjs-tools-button =
- .title = Tools
- pdfjs-tools-button-label = Tools
- pdfjs-first-page-button =
- .title = Go to First Page
- pdfjs-first-page-button-label = Go to First Page
- pdfjs-last-page-button =
- .title = Go to Last Page
- pdfjs-last-page-button-label = Go to Last Page
- pdfjs-page-rotate-cw-button =
- .title = Rotate Clockwise
- pdfjs-page-rotate-cw-button-label = Rotate Clockwise
- pdfjs-page-rotate-ccw-button =
- .title = Rotate Counterclockwise
- pdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise
- pdfjs-cursor-text-select-tool-button =
- .title = Enable Text Selection Tool
- pdfjs-cursor-text-select-tool-button-label = Text Selection Tool
- pdfjs-cursor-hand-tool-button =
- .title = Enable Hand Tool
- pdfjs-cursor-hand-tool-button-label = Hand Tool
- pdfjs-scroll-page-button =
- .title = Use Page Scrolling
- pdfjs-scroll-page-button-label = Page Scrolling
- pdfjs-scroll-vertical-button =
- .title = Use Vertical Scrolling
- pdfjs-scroll-vertical-button-label = Vertical Scrolling
- pdfjs-scroll-horizontal-button =
- .title = Use Horizontal Scrolling
- pdfjs-scroll-horizontal-button-label = Horizontal Scrolling
- pdfjs-scroll-wrapped-button =
- .title = Use Wrapped Scrolling
- pdfjs-scroll-wrapped-button-label = Wrapped Scrolling
- pdfjs-spread-none-button =
- .title = Do not join page spreads
- pdfjs-spread-none-button-label = No Spreads
- pdfjs-spread-odd-button =
- .title = Join page spreads starting with odd-numbered pages
- pdfjs-spread-odd-button-label = Odd Spreads
- pdfjs-spread-even-button =
- .title = Join page spreads starting with even-numbered pages
- pdfjs-spread-even-button-label = Even Spreads
- pdfjs-document-properties-button =
- .title = Document Properties…
- pdfjs-document-properties-button-label = Document Properties…
- pdfjs-document-properties-file-name = File name:
- pdfjs-document-properties-file-size = File size:
- pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)
- pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
- pdfjs-document-properties-title = Title:
- pdfjs-document-properties-author = Author:
- pdfjs-document-properties-subject = Subject:
- pdfjs-document-properties-keywords = Keywords:
- pdfjs-document-properties-creation-date = Creation Date:
- pdfjs-document-properties-modification-date = Modification Date:
- pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
- pdfjs-document-properties-creator = Creator:
- pdfjs-document-properties-producer = PDF Producer:
- pdfjs-document-properties-version = PDF Version:
- pdfjs-document-properties-page-count = Page Count:
- pdfjs-document-properties-page-size = Page Size:
- pdfjs-document-properties-page-size-unit-inches = in
- pdfjs-document-properties-page-size-unit-millimeters = mm
- pdfjs-document-properties-page-size-orientation-portrait = portrait
- pdfjs-document-properties-page-size-orientation-landscape = landscape
- pdfjs-document-properties-page-size-name-a-three = A3
- pdfjs-document-properties-page-size-name-a-four = A4
- pdfjs-document-properties-page-size-name-letter = Letter
- pdfjs-document-properties-page-size-name-legal = Legal
- pdfjs-document-properties-page-size-dimension-string = { $width } × { $height } { $unit } ({ $orientation })
- pdfjs-document-properties-page-size-dimension-name-string = { $width } × { $height } { $unit } ({ $name }, { $orientation })
- pdfjs-document-properties-linearized = Fast Web View:
- pdfjs-document-properties-linearized-yes = Yes
- pdfjs-document-properties-linearized-no = No
- pdfjs-document-properties-close-button = Close
- pdfjs-print-progress-message = Preparing document for printing…
- pdfjs-print-progress-percent = { $progress }%
- pdfjs-print-progress-close-button = Cancel
- pdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.
- pdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.
- pdfjs-toggle-sidebar-button =
- .title = Toggle Sidebar
- pdfjs-toggle-sidebar-notification-button =
- .title = Toggle Sidebar (document contains outline/attachments/layers)
- pdfjs-toggle-sidebar-button-label = Toggle Sidebar
- pdfjs-document-outline-button =
- .title = Show Document Outline (double-click to expand/collapse all items)
- pdfjs-document-outline-button-label = Document Outline
- pdfjs-attachments-button =
- .title = Show Attachments
- pdfjs-attachments-button-label = Attachments
- pdfjs-layers-button =
- .title = Show Layers (double-click to reset all layers to the default state)
- pdfjs-layers-button-label = Layers
- pdfjs-thumbs-button =
- .title = Show Thumbnails
- pdfjs-thumbs-button-label = Thumbnails
- pdfjs-current-outline-item-button =
- .title = Find Current Outline Item
- pdfjs-current-outline-item-button-label = Current Outline Item
- pdfjs-findbar-button =
- .title = Find in Document
- pdfjs-findbar-button-label = Find
- pdfjs-additional-layers = Additional Layers
- pdfjs-thumb-page-title =
- .title = Page { $page }
- pdfjs-thumb-page-canvas =
- .aria-label = Thumbnail of Page { $page }
- pdfjs-find-input =
- .title = Find
- .placeholder = Find in document…
- pdfjs-find-previous-button =
- .title = Find the previous occurrence of the phrase
- pdfjs-find-previous-button-label = Previous
- pdfjs-find-next-button =
- .title = Find the next occurrence of the phrase
- pdfjs-find-next-button-label = Next
- pdfjs-find-highlight-checkbox = Highlight All
- pdfjs-find-match-case-checkbox-label = Match Case
- pdfjs-find-match-diacritics-checkbox-label = Match Diacritics
- pdfjs-find-entire-word-checkbox-label = Whole Words
- pdfjs-find-reached-top = Reached top of document, continued from bottom
- pdfjs-find-reached-bottom = Reached end of document, continued from top
- pdfjs-find-match-count =
- { $total ->
- [one] { $current } of { $total } match
- *[other] { $current } of { $total } matches
- }
- pdfjs-find-match-count-limit =
- { $limit ->
- [one] More than { $limit } match
- *[other] More than { $limit } matches
- }
- pdfjs-find-not-found = Phrase not found
- pdfjs-page-scale-width = Page Width
- pdfjs-page-scale-fit = Page Fit
- pdfjs-page-scale-auto = Automatic Zoom
- pdfjs-page-scale-actual = Actual Size
- pdfjs-page-scale-percent = { $scale }%
- pdfjs-page-landmark =
- .aria-label = Page { $page }
- pdfjs-loading-error = An error occurred while loading the PDF.
- pdfjs-invalid-file-error = Invalid or corrupted PDF file.
- pdfjs-missing-file-error = Missing PDF file.
- pdfjs-unexpected-response-error = Unexpected server response.
- pdfjs-rendering-error = An error occurred while rendering the page.
- pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
- pdfjs-text-annotation-type =
- .alt = [{ $type } Annotation]
- pdfjs-password-label = Enter the password to open this PDF file.
- pdfjs-password-invalid = Invalid password. Please try again.
- pdfjs-password-ok-button = OK
- pdfjs-password-cancel-button = Cancel
- pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.
- pdfjs-editor-free-text-button =
- .title = Text
- pdfjs-editor-free-text-button-label = Text
- pdfjs-editor-ink-button =
- .title = Draw
- pdfjs-editor-ink-button-label = Draw
- pdfjs-editor-stamp-button =
- .title = Add or edit images
- pdfjs-editor-stamp-button-label = Add or edit images
- pdfjs-editor-highlight-button =
- .title = Highlight
- pdfjs-editor-highlight-button-label = Highlight
- pdfjs-highlight-floating-button1 =
- .title = Highlight
- .aria-label = Highlight
- pdfjs-highlight-floating-button-label = Highlight
- pdfjs-editor-remove-ink-button =
- .title = Remove drawing
- pdfjs-editor-remove-freetext-button =
- .title = Remove text
- pdfjs-editor-remove-stamp-button =
- .title = Remove image
- pdfjs-editor-remove-highlight-button =
- .title = Remove highlight
- pdfjs-editor-free-text-color-input = Color
- pdfjs-editor-free-text-size-input = Size
- pdfjs-editor-ink-color-input = Color
- pdfjs-editor-ink-thickness-input = Thickness
- pdfjs-editor-ink-opacity-input = Opacity
- pdfjs-editor-stamp-add-image-button =
- .title = Add image
- pdfjs-editor-stamp-add-image-button-label = Add image
- pdfjs-editor-free-highlight-thickness-input = Thickness
- pdfjs-editor-free-highlight-thickness-title =
- .title = Change thickness when highlighting items other than text
- pdfjs-free-text2 =
- .aria-label = Text Editor
- .default-content = Start typing…
- pdfjs-ink =
- .aria-label = Draw Editor
- pdfjs-ink-canvas =
- .aria-label = User-created image
- pdfjs-editor-alt-text-button =
- .aria-label = Alt text
- pdfjs-editor-alt-text-button-label = Alt text
- pdfjs-editor-alt-text-edit-button =
- .aria-label = Edit alt text
- pdfjs-editor-alt-text-dialog-label = Choose an option
- pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.
- pdfjs-editor-alt-text-add-description-label = Add a description
- pdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.
- pdfjs-editor-alt-text-mark-decorative-label = Mark as decorative
- pdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.
- pdfjs-editor-alt-text-cancel-button = Cancel
- pdfjs-editor-alt-text-save-button = Save
- pdfjs-editor-alt-text-decorative-tooltip = Marked as decorative
- pdfjs-editor-alt-text-textarea =
- .placeholder = For example, “A young man sits down at a table to eat a meal”
- pdfjs-editor-resizer-top-left =
- .aria-label = Top left corner — resize
- pdfjs-editor-resizer-top-middle =
- .aria-label = Top middle — resize
- pdfjs-editor-resizer-top-right =
- .aria-label = Top right corner — resize
- pdfjs-editor-resizer-middle-right =
- .aria-label = Middle right — resize
- pdfjs-editor-resizer-bottom-right =
- .aria-label = Bottom right corner — resize
- pdfjs-editor-resizer-bottom-middle =
- .aria-label = Bottom middle — resize
- pdfjs-editor-resizer-bottom-left =
- .aria-label = Bottom left corner — resize
- pdfjs-editor-resizer-middle-left =
- .aria-label = Middle left — resize
- pdfjs-editor-highlight-colorpicker-label = Highlight color
- pdfjs-editor-colorpicker-button =
- .title = Change color
- pdfjs-editor-colorpicker-dropdown =
- .aria-label = Color choices
- pdfjs-editor-colorpicker-yellow =
- .title = Yellow
- pdfjs-editor-colorpicker-green =
- .title = Green
- pdfjs-editor-colorpicker-blue =
- .title = Blue
- pdfjs-editor-colorpicker-pink =
- .title = Pink
- pdfjs-editor-colorpicker-red =
- .title = Red
- pdfjs-editor-highlight-show-all-button-label = Show all
- pdfjs-editor-highlight-show-all-button =
- .title = Show all
- pdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)
- pdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)
- pdfjs-editor-new-alt-text-textarea =
- .placeholder = Write your description here…
- pdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.
- pdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.
- pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more
- pdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically
- pdfjs-editor-new-alt-text-not-now-button = Not now
- pdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically
- pdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.
- pdfjs-editor-new-alt-text-error-close-button = Close
- pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
- .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
- pdfjs-editor-new-alt-text-added-button =
- .aria-label = Alt text added
- pdfjs-editor-new-alt-text-added-button-label = Alt text added
- pdfjs-editor-new-alt-text-missing-button =
- .aria-label = Missing alt text
- pdfjs-editor-new-alt-text-missing-button-label = Missing alt text
- pdfjs-editor-new-alt-text-to-review-button =
- .aria-label = Review alt text
- pdfjs-editor-new-alt-text-to-review-button-label = Review alt text
- pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }
- pdfjs-image-alt-text-settings-button =
- .title = Image alt text settings
- pdfjs-image-alt-text-settings-button-label = Image alt text settings
- pdfjs-editor-alt-text-settings-dialog-label = Image alt text settings
- pdfjs-editor-alt-text-settings-automatic-title = Automatic alt text
- pdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically
- pdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.
- pdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)
- pdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.
- pdfjs-editor-alt-text-settings-delete-model-button = Delete
- pdfjs-editor-alt-text-settings-download-model-button = Download
- pdfjs-editor-alt-text-settings-downloading-model-button = Downloading…
- pdfjs-editor-alt-text-settings-editor-title = Alt text editor
- pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image
- pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.
- pdfjs-editor-alt-text-settings-close-button = Close
- pdfjs-editor-undo-bar-message-highlight = Highlight removed
- pdfjs-editor-undo-bar-message-freetext = Text removed
- pdfjs-editor-undo-bar-message-ink = Drawing removed
- pdfjs-editor-undo-bar-message-stamp = Image removed
- pdfjs-editor-undo-bar-message-multiple =
- { $count ->
- [one] { $count } annotation removed
- *[other] { $count } annotations removed
- }
- pdfjs-editor-undo-bar-undo-button =
- .title = Undo
- pdfjs-editor-undo-bar-undo-button-label = Undo
- pdfjs-editor-undo-bar-close-button =
- .title = Close
- pdfjs-editor-undo-bar-close-button-label = Close`)},O(Xwe,hU);let fO=Xwe;const FQt=1e3,AQt=50,ZQt=1e3;function Ane(){return document.location.hash}var BZ,Uo,Uf,PG,b_,nB,HG,Zne,Obe,jbe,Sne,Ywe,_we;class SQt{constructor({linkService:e,eventBus:t}){O(this,Uo),O(this,BZ,null),this.linkService=e,this.eventBus=t,this._initialized=!1,this._fingerprint="",this.reset(),this.eventBus._on("pagesinit",()=>{this._isPagesLoaded=!1,this.eventBus._on("pagesloaded",i=>{this._isPagesLoaded=!!i.pagesCount},{once:!0})})}initialize({fingerprint:e,resetHistory:t=!1,updateUrl:i=!1}){if(!e||typeof e!="string"){console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');return}this._initialized&&this.reset();const n=this._fingerprint!==""&&this._fingerprint!==e;this._fingerprint=e,this._updateUrl=i===!0,this._initialized=!0,_(this,Uo,Ywe).call(this);const o=window.history.state;if(this._popStateInProgress=!1,this._blockHashChange=0,this._currentHash=Ane(),this._numPositionUpdates=0,this._uid=this._maxUid=0,this._destination=null,this._position=null,!_(this,Uo,nB).call(this,o,!0)||t){const{hash:l,page:a,rotation:d}=_(this,Uo,Zne).call(this,!0);if(!l||n||t){_(this,Uo,Uf).call(this,null,!0);return}_(this,Uo,Uf).call(this,{hash:l,page:a,rotation:d},!0);return}const r=o.destination;_(this,Uo,HG).call(this,r,o.uid,!0),r.rotation!==void 0&&(this._initialRotation=r.rotation),r.dest?(this._initialBookmark=JSON.stringify(r.dest),this._destination.page=null):r.hash?this._initialBookmark=r.hash:r.page&&(this._initialBookmark=`page=${r.page}`)}reset(){this._initialized&&(_(this,Uo,Sne).call(this),this._initialized=!1,_(this,Uo,_we).call(this)),this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._initialBookmark=null,this._initialRotation=null}push({namedDest:e=null,explicitDest:t,pageNumber:i}){if(!this._initialized)return;if(e&&typeof e!="string"){console.error(`PDFHistory.push: "${e}" is not a valid namedDest parameter.`);return}else if(Array.isArray(t)){if(!_(this,Uo,b_).call(this,i)&&(i!==null||this._destination)){console.error(`PDFHistory.push: "${i}" is not a valid pageNumber parameter.`);return}}else{console.error(`PDFHistory.push: "${t}" is not a valid explicitDest parameter.`);return}const n=e||JSON.stringify(t);if(!n)return;let o=!1;if(this._destination&&(NQt(this._destination.hash,n)||RQt(this._destination.dest,t))){if(this._destination.page)return;o=!0}this._popStateInProgress&&!o||(_(this,Uo,Uf).call(this,{dest:t,hash:n,page:i,rotation:this.linkService.rotation},o),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1})))}pushPage(e){var t;if(this._initialized){if(!_(this,Uo,b_).call(this,e)){console.error(`PDFHistory.pushPage: "${e}" is not a valid page number.`);return}((t=this._destination)==null?void 0:t.page)!==e&&(this._popStateInProgress||(_(this,Uo,Uf).call(this,{dest:null,hash:`page=${e}`,page:e,rotation:this.linkService.rotation}),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1}))))}}pushCurrentPosition(){!this._initialized||this._popStateInProgress||_(this,Uo,PG).call(this)}back(){if(!this._initialized||this._popStateInProgress)return;const e=window.history.state;_(this,Uo,nB).call(this,e)&&e.uid>0&&window.history.back()}forward(){if(!this._initialized||this._popStateInProgress)return;const e=window.history.state;_(this,Uo,nB).call(this,e)&&e.uid<this._maxUid&&window.history.forward()}get popStateInProgress(){return this._initialized&&(this._popStateInProgress||this._blockHashChange>0)}get initialBookmark(){return this._initialized?this._initialBookmark:null}get initialRotation(){return this._initialized?this._initialRotation:null}}BZ=new WeakMap,Uo=new WeakSet,Uf=function(s,e=!1){const t=e||!this._destination,i={fingerprint:this._fingerprint,uid:t?this._uid:this._uid+1,destination:s};_(this,Uo,HG).call(this,s,i.uid);let n;if(this._updateUrl&&s!=null&&s.hash){const o=document.location.href.split("#",1)[0];o.startsWith("file://")||(n=`${o}#${s.hash}`)}t?window.history.replaceState(i,"",n):window.history.pushState(i,"",n)},PG=function(s=!1){if(!this._position)return;let e=this._position;if(s&&(e=Object.assign(Object.create(null),this._position),e.temporary=!0),!this._destination){_(this,Uo,Uf).call(this,e);return}if(this._destination.temporary){_(this,Uo,Uf).call(this,e,!0);return}if(this._destination.hash===e.hash||!this._destination.page&&this._numPositionUpdates<=AQt)return;let t=!1;if(this._destination.page>=e.first&&this._destination.page<=e.page){if(this._destination.dest!==void 0||!this._destination.first)return;t=!0}_(this,Uo,Uf).call(this,e,t)},b_=function(s){return Number.isInteger(s)&&s>0&&s<=this.linkService.pagesCount},nB=function(s,e=!1){if(!s)return!1;if(s.fingerprint!==this._fingerprint)if(e){if(typeof s.fingerprint!="string"||s.fingerprint.length!==this._fingerprint.length)return!1;const[t]=performance.getEntriesByType("navigation");if((t==null?void 0:t.type)!=="reload")return!1}else return!1;return!(!Number.isInteger(s.uid)||s.uid<0||s.destination===null||typeof s.destination!="object")},HG=function(s,e,t=!1){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),t&&s!=null&&s.temporary&&delete s.temporary,this._destination=s,this._uid=e,this._maxUid=Math.max(this._maxUid,e),this._numPositionUpdates=0},Zne=function(s=!1){const e=unescape(Ane()).substring(1),t=pO(e),i=t.get("nameddest")||"";let n=t.get("page")|0;return(!_(this,Uo,b_).call(this,n)||s&&i.length>0)&&(n=null),{hash:e,page:n,rotation:this.linkService.rotation}},Obe=function({location:s}){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._position={hash:s.pdfOpenParams.substring(1),page:this.linkService.page,first:s.pageNumber,rotation:s.rotation},!this._popStateInProgress&&(this._isPagesLoaded&&this._destination&&!this._destination.page&&this._numPositionUpdates++,this._updateViewareaTimeout=setTimeout(()=>{this._popStateInProgress||_(this,Uo,PG).call(this,!0),this._updateViewareaTimeout=null},ZQt))},jbe=function({state:s}){const e=Ane(),t=this._currentHash!==e;if(this._currentHash=e,!s){this._uid++;const{hash:n,page:o,rotation:r}=_(this,Uo,Zne).call(this);_(this,Uo,Uf).call(this,{hash:n,page:o,rotation:r},!0);return}if(!_(this,Uo,nB).call(this,s))return;this._popStateInProgress=!0,t&&(this._blockHashChange++,Vyt({target:window,name:"hashchange",delay:FQt}).then(()=>{this._blockHashChange--}));const i=s.destination;_(this,Uo,HG).call(this,i,s.uid,!0),Nwe(i.rotation)&&(this.linkService.rotation=i.rotation),i.dest?this.linkService.goToDestination(i.dest):i.hash?this.linkService.setHash(i.hash):i.page&&(this.linkService.page=i.page),Promise.resolve().then(()=>{this._popStateInProgress=!1})},Sne=function(){(!this._destination||this._destination.temporary)&&_(this,Uo,PG).call(this)},Ywe=function(){if(A(this,BZ))return;I(this,BZ,new AbortController);const{signal:s}=A(this,BZ);this.eventBus._on("updateviewarea",_(this,Uo,Obe).bind(this),{signal:s}),window.addEventListener("popstate",_(this,Uo,jbe).bind(this),{signal:s}),window.addEventListener("pagehide",_(this,Uo,Sne).bind(this),{signal:s})},_we=function(){var s;(s=A(this,BZ))==null||s.abort(),I(this,BZ,null)};function NQt(s,e){return typeof s!="string"||typeof e!="string"?!1:s===e||pO(s).get("nameddest")===e}function RQt(s,e){function t(i,n){if(typeof i!=typeof n||Array.isArray(i)||Array.isArray(n))return!1;if(i!==null&&typeof i=="object"&&n!==null){if(Object.keys(i).length!==Object.keys(n).length)return!1;for(const o in i)if(!t(i[o],n[o]))return!1;return!0}return i===n||Number.isNaN(i)&&Number.isNaN(n)}if(!(Array.isArray(s)&&Array.isArray(e))||s.length!==e.length)return!1;for(let i=0,n=s.length;i<n;i++)if(!t(s[i],e[i]))return!1;return!0}var KG,qG,$G,eJ,tJ,TC;class VQt{constructor(e){O(this,KG,null),O(this,qG,null),O(this,$G,null),O(this,eJ,null),O(this,tJ,null),O(this,TC),this.pdfPage=e.pdfPage,this.accessibilityManager=e.accessibilityManager,this.l10n=e.l10n,this.l10n||(this.l10n=new fO),this.annotationEditorLayer=null,this.div=null,this._cancelled=!1,I(this,TC,e.uiManager),I(this,KG,e.annotationLayer||null),I(this,tJ,e.textLayer||null),I(this,qG,e.drawLayer||null),I(this,$G,e.onAppend||null),I(this,eJ,e.structTreeLayer||null)}async render(e,t="display"){var i;if(t!=="display"||this._cancelled)return;const n=e.clone({dontFlip:!0});if(this.div){this.annotationEditorLayer.update({viewport:n}),this.show();return}const o=this.div=document.createElement("div");o.className="annotationEditorLayer",o.hidden=!0,o.dir=A(this,TC).direction,(i=A(this,$G))==null||i.call(this,o),this.annotationEditorLayer=new myt({uiManager:A(this,TC),div:o,structTreeLayer:A(this,eJ),accessibilityManager:this.accessibilityManager,pageIndex:this.pdfPage.pageNumber-1,l10n:this.l10n,viewport:n,annotationLayer:A(this,KG),textLayer:A(this,tJ),drawLayer:A(this,qG)});const r={viewport:n,div:o,annotations:null,intent:t};this.annotationEditorLayer.render(r),this.show()}cancel(){this._cancelled=!0,this.div&&this.annotationEditorLayer.destroy()}hide(){this.div&&(this.annotationEditorLayer.pause(!0),this.div.hidden=!0)}show(){!this.div||this.annotationEditorLayer.isInvisible||(this.div.hidden=!1,this.annotationEditorLayer.pause(!1))}}KG=new WeakMap,qG=new WeakMap,$G=new WeakMap,eJ=new WeakMap,tJ=new WeakMap,TC=new WeakMap;{var Nne=new Map;const s=navigator.userAgent||"",e=navigator.platform||"",t=navigator.maxTouchPoints||1,i=/Android/.test(s),n=/\b(iPad|iPhone|iPod)(?=;)/.test(s)||e==="MacIntel"&&t>1;(function(){(n||i)&&Nne.set("maxCanvasPixels",5242880)})(),function(){i&&Nne.set("useSystemFonts",!1)}()}const kt={BROWSER:1,VIEWER:2,API:4,WORKER:8,EVENT_DISPATCH:16,PREFERENCE:128},Rne={BOOLEAN:1,NUMBER:2,OBJECT:4,STRING:8,UNDEFINED:16},Bg={allowedGlobalEvents:{value:null,kind:kt.BROWSER},canvasMaxAreaInBytes:{value:-1,kind:kt.BROWSER+kt.API},isInAutomation:{value:!1,kind:kt.BROWSER},localeProperties:{value:{lang:navigator.language||"en-US"},kind:kt.BROWSER},nimbusDataStr:{value:"",kind:kt.BROWSER},supportsCaretBrowsingMode:{value:!1,kind:kt.BROWSER},supportsDocumentFonts:{value:!0,kind:kt.BROWSER},supportsIntegratedFind:{value:!1,kind:kt.BROWSER},supportsMouseWheelZoomCtrlKey:{value:!0,kind:kt.BROWSER},supportsMouseWheelZoomMetaKey:{value:!0,kind:kt.BROWSER},supportsPinchToZoom:{value:!0,kind:kt.BROWSER},toolbarDensity:{value:0,kind:kt.BROWSER+kt.EVENT_DISPATCH},altTextLearnMoreUrl:{value:"",kind:kt.VIEWER+kt.PREFERENCE},annotationEditorMode:{value:0,kind:kt.VIEWER+kt.PREFERENCE},annotationMode:{value:2,kind:kt.VIEWER+kt.PREFERENCE},cursorToolOnLoad:{value:0,kind:kt.VIEWER+kt.PREFERENCE},debuggerSrc:{value:"./debugger.mjs",kind:kt.VIEWER},defaultZoomDelay:{value:400,kind:kt.VIEWER+kt.PREFERENCE},defaultZoomValue:{value:"",kind:kt.VIEWER+kt.PREFERENCE},disableHistory:{value:!1,kind:kt.VIEWER},disablePageLabels:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},enableAltText:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},enableAltTextModelDownload:{value:!0,kind:kt.VIEWER+kt.PREFERENCE+kt.EVENT_DISPATCH},enableGuessAltText:{value:!0,kind:kt.VIEWER+kt.PREFERENCE+kt.EVENT_DISPATCH},enableHighlightFloatingButton:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},enableNewAltTextWhenAddingImage:{value:!0,kind:kt.VIEWER+kt.PREFERENCE},enablePermissions:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},enablePrintAutoRotate:{value:!0,kind:kt.VIEWER+kt.PREFERENCE},enableScripting:{value:!0,kind:kt.VIEWER+kt.PREFERENCE},enableUpdatedAddImage:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:kt.VIEWER},externalLinkTarget:{value:0,kind:kt.VIEWER+kt.PREFERENCE},highlightEditorColors:{value:"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",kind:kt.VIEWER+kt.PREFERENCE},historyUpdateUrl:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},ignoreDestinationZoom:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},imageResourcesPath:{value:"./images/",kind:kt.VIEWER},maxCanvasPixels:{value:2**25,kind:kt.VIEWER},forcePageColors:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},pageColorsBackground:{value:"Canvas",kind:kt.VIEWER+kt.PREFERENCE},pageColorsForeground:{value:"CanvasText",kind:kt.VIEWER+kt.PREFERENCE},pdfBugEnabled:{value:!1,kind:kt.VIEWER+kt.PREFERENCE},printResolution:{value:150,kind:kt.VIEWER},sidebarViewOnLoad:{value:-1,kind:kt.VIEWER+kt.PREFERENCE},scrollModeOnLoad:{value:-1,kind:kt.VIEWER+kt.PREFERENCE},spreadModeOnLoad:{value:-1,kind:kt.VIEWER+kt.PREFERENCE},textLayerMode:{value:1,kind:kt.VIEWER+kt.PREFERENCE},viewOnLoad:{value:0,kind:kt.VIEWER+kt.PREFERENCE},cMapPacked:{value:!0,kind:kt.API},cMapUrl:{value:"../web/cmaps/",kind:kt.API},disableAutoFetch:{value:!1,kind:kt.API+kt.PREFERENCE},disableFontFace:{value:!1,kind:kt.API+kt.PREFERENCE},disableRange:{value:!1,kind:kt.API+kt.PREFERENCE},disableStream:{value:!1,kind:kt.API+kt.PREFERENCE},docBaseUrl:{value:"",kind:kt.API},enableHWA:{value:!0,kind:kt.API+kt.VIEWER+kt.PREFERENCE},enableXfa:{value:!0,kind:kt.API+kt.PREFERENCE},fontExtraProperties:{value:!1,kind:kt.API},isEvalSupported:{value:!0,kind:kt.API},isOffscreenCanvasSupported:{value:!0,kind:kt.API},maxImageSize:{value:-1,kind:kt.API},pdfBug:{value:!1,kind:kt.API},standardFontDataUrl:{value:"../web/standard_fonts/",kind:kt.API},useSystemFonts:{value:void 0,kind:kt.API,type:Rne.BOOLEAN+Rne.UNDEFINED},verbosity:{value:1,kind:kt.API},workerPort:{value:null,kind:kt.WORKER},workerSrc:{value:"../build/pdf.worker.mjs",kind:kt.WORKER}};Bg.defaultUrl={value:"compressed.tracemonkey-pldi-09.pdf",kind:kt.VIEWER},Bg.sandboxBundleSrc={value:"../build/pdf.sandbox.mjs",kind:kt.VIEWER},Bg.viewerCssTheme={value:0,kind:kt.VIEWER+kt.PREFERENCE},Bg.enableFakeMLManager={value:!0,kind:kt.VIEWER};Bg.disablePreferences={value:!1,kind:kt.VIEWER};var wS;const k0=class{static get(e){return A(this,wS).get(e)}static getAll(e=null,t=!1){const i=Object.create(null);for(const n in Bg){const o=Bg[n];e&&!(e&o.kind)||(i[n]=t?o.value:A(this,wS).get(n))}return i}static set(e,t){this.setAll({[e]:t})}static setAll(e,t=!1){this._hasInvokedSet||(this._hasInvokedSet=!0);let i;for(const n in e){const o=Bg[n],r=e[n];if(!o||!(typeof r==typeof o.value||Rne[(typeof r).toUpperCase()]&o.type))continue;const{kind:l}=o;t&&!(l&kt.BROWSER||l&kt.PREFERENCE)||(this.eventBus&&l&kt.EVENT_DISPATCH&&(i||(i=new Map)).set(n,r),A(this,wS).set(n,r))}if(i)for(const[n,o]of i)this.eventBus.dispatch(n.toLowerCase(),{source:this,value:o})}};wS=new WeakMap,Rn(k0,"eventBus"),O(k0,wS,new Map),(()=>{for(const s in Bg)A(k0,wS).set(s,Bg[s].value);for(const[s,e]of Nne)A(k0,wS).set(s,e);k0._hasInvokedSet=!1,k0._checkDisablePreferences=()=>k0.get("disablePreferences")?!0:(k0._hasInvokedSet&&console.warn('The Preferences may override manually set AppOptions; please use the "disablePreferences"-option to prevent that.'),!1)})();let WQt=k0;var x0;class yQt{constructor(e){O(this,x0,null),this.pageIndex=e.pageIndex}async render(e="display"){e!=="display"||A(this,x0)||this._cancelled||I(this,x0,new byt({pageIndex:this.pageIndex}))}cancel(){this._cancelled=!0,A(this,x0)&&(A(this,x0).destroy(),I(this,x0,null))}setParent(e){var t;(t=A(this,x0))==null||t.setParent(e)}getDrawLayer(){return A(this,x0)}}x0=new WeakMap;const Pbe={Document:null,DocumentFragment:null,Part:"group",Sect:"group",Div:"group",Aside:"note",NonStruct:"none",P:null,H:"heading",Title:null,FENote:"note",Sub:"group",Lbl:null,Span:null,Em:null,Strong:null,Link:"link",Annot:"note",Form:"form",Ruby:null,RB:null,RT:null,RP:null,Warichu:null,WT:null,WP:null,L:"list",LI:"listitem",LBody:null,Table:"table",TR:"row",TH:"columnheader",TD:"cell",THead:"columnheader",TBody:null,TFoot:null,Caption:null,Figure:"figure",Formula:null,Artifact:null},QQt=/^H(\d+)$/;var CC,zp,BC,sB,oB,kU,rS,k4,Hbe,Vne;class zwe{constructor(e,t){O(this,rS),O(this,CC),O(this,zp,null),O(this,BC),O(this,sB,new Map),O(this,oB),O(this,kU,null),I(this,CC,e.getStructTree()),I(this,oB,t)}async render(){var e;if(A(this,BC))return A(this,BC);const{promise:t,resolve:i,reject:n}=Promise.withResolvers();I(this,BC,t);try{I(this,zp,_(this,rS,Vne).call(this,await A(this,CC)))}catch(o){n(o)}return I(this,CC,null),(e=A(this,zp))==null||e.classList.add("structTree"),i(A(this,zp)),t}async getAriaAttributes(e){try{return await this.render(),A(this,sB).get(e)}catch{}return null}hide(){A(this,zp)&&!A(this,zp).hidden&&(A(this,zp).hidden=!0)}show(){var e;(e=A(this,zp))!=null&&e.hidden&&(A(this,zp).hidden=!1)}addElementsToTextLayer(){var e;if(A(this,kU)){for(const[t,i]of A(this,kU))(e=document.getElementById(t))==null||e.append(i);A(this,kU).clear(),I(this,kU,null)}}}CC=new WeakMap,zp=new WeakMap,BC=new WeakMap,sB=new WeakMap,oB=new WeakMap,kU=new WeakMap,rS=new WeakSet,k4=function(s,e){const{alt:t,id:i,lang:n}=s;if(t!==void 0){let o=!1;const r=eB(t);for(const l of s.children)if(l.type==="annotation"){let a=A(this,sB).get(l.id);a||(a=new Map,A(this,sB).set(l.id,a)),a.set("aria-label",r),o=!0}o||e.setAttribute("aria-label",r)}i!==void 0&&e.setAttribute("aria-owns",i),n!==void 0&&e.setAttribute("lang",eB(n,!0))},Hbe=function(s,e){const{alt:t,bbox:i,children:n}=s,o=n==null?void 0:n[0];if(!A(this,oB)||!t||!i||(o==null?void 0:o.type)!=="content")return!1;const{id:r}=o;if(!r)return!1;e.setAttribute("aria-owns",r);const l=document.createElement("span");(A(this,kU)||I(this,kU,new Map)).set(r,l),l.setAttribute("role","img"),l.setAttribute("aria-label",eB(t));const{pageHeight:a,pageX:d,pageY:c}=A(this,oB),h="calc(var(--scale-factor)*",{style:u}=l;return u.width=`${h}${i[2]-i[0]}px)`,u.height=`${h}${i[3]-i[1]}px)`,u.left=`${h}${i[0]-d}px)`,u.top=`${h}${a-i[3]+c}px)`,!0},Vne=function(s){if(!s)return null;const e=document.createElement("span");if("role"in s){const{role:t}=s,i=t.match(QQt);if(i?(e.setAttribute("role","heading"),e.setAttribute("aria-level",i[1])):Pbe[t]&&e.setAttribute("role",Pbe[t]),t==="Figure"&&_(this,rS,Hbe).call(this,s,e))return e}if(_(this,rS,k4).call(this,s,e),s.children)if(s.children.length===1&&"id"in s.children[0])_(this,rS,k4).call(this,s.children[0],e);else for(const t of s.children)e.append(_(this,rS,Vne).call(this,t));return e};var $b,wm,eU,LZ,rB,iJ,nJ,Wne;const Owe=class sJ{constructor(){O(this,nJ),O(this,$b,!1),O(this,wm,null),O(this,eU,new Map),O(this,LZ,new Map)}setTextMapping(e){I(this,wm,e)}enable(){if(A(this,$b))throw new Error("TextAccessibilityManager is already enabled.");if(!A(this,wm))throw new Error("Text divs and strings have not been set.");if(I(this,$b,!0),I(this,wm,A(this,wm).slice()),A(this,wm).sort(_(sJ,rB,iJ)),A(this,eU).size>0){const e=A(this,wm);for(const[t,i]of A(this,eU)){if(!document.getElementById(t)){A(this,eU).delete(t);continue}_(this,nJ,Wne).call(this,t,e[i])}}for(const[e,t]of A(this,LZ))this.addPointerInTextLayer(e,t);A(this,LZ).clear()}disable(){A(this,$b)&&(A(this,LZ).clear(),I(this,wm,null),I(this,$b,!1))}removePointerInTextLayer(e){if(!A(this,$b)){A(this,LZ).delete(e);return}const t=A(this,wm);if(!t||t.length===0)return;const{id:i}=e,n=A(this,eU).get(i);if(n===void 0)return;const o=t[n];A(this,eU).delete(i);let r=o.getAttribute("aria-owns");r!=null&&r.includes(i)&&(r=r.split(" ").filter(l=>l!==i).join(" "),r?o.setAttribute("aria-owns",r):(o.removeAttribute("aria-owns"),o.setAttribute("role","presentation")))}addPointerInTextLayer(e,t){const{id:i}=e;if(!i)return null;if(!A(this,$b))return A(this,LZ).set(e,t),null;t&&this.removePointerInTextLayer(e);const n=A(this,wm);if(!n||n.length===0)return null;const o=Zv(n,d=>{var c;return _(c=sJ,rB,iJ).call(c,e,d)<0}),r=Math.max(0,o-1),l=n[r];_(this,nJ,Wne).call(this,i,l),A(this,eU).set(i,r);const a=l.parentNode;return a!=null&&a.classList.contains("markedContent")?a.id:null}moveElementInDOM(e,t,i,n){const o=this.addPointerInTextLayer(i,n);if(!e.hasChildNodes())return e.append(t),o;const r=Array.from(e.childNodes).filter(d=>d!==t);if(r.length===0)return o;const l=i||t,a=Zv(r,d=>{var c;return _(c=sJ,rB,iJ).call(c,l,d)<0});return a===0?r[0].before(t):r[a-1].after(t),o}};$b=new WeakMap,wm=new WeakMap,eU=new WeakMap,LZ=new WeakMap,rB=new WeakSet,iJ=function(s,e){const t=s.getBoundingClientRect(),i=e.getBoundingClientRect();if(t.width===0&&t.height===0)return 1;if(i.width===0&&i.height===0)return-1;const n=t.y,o=t.y+t.height,r=t.y+t.height/2,l=i.y,a=i.y+i.height,d=i.y+i.height/2;if(r<=l&&d>=o)return-1;if(d<=n&&r>=a)return 1;const c=t.x+t.width/2,h=i.x+i.width/2;return c-h},nJ=new WeakSet,Wne=function(s,e){const t=e.getAttribute("aria-owns");t!=null&&t.includes(s)||e.setAttribute("aria-owns",t?`${t} ${s}`:s),e.removeAttribute("role")},O(Owe,rB);let MQt=Owe;var vZ;class wQt{constructor({findController:e,eventBus:t,pageIndex:i}){O(this,vZ,null),this.findController=e,this.matches=[],this.eventBus=t,this.pageIdx=i,this.textDivs=null,this.textContentItemsStr=null,this.enabled=!1}setTextMapping(e,t){this.textDivs=e,this.textContentItemsStr=t}enable(){if(!this.textDivs||!this.textContentItemsStr)throw new Error("Text divs and strings have not been set.");if(this.enabled)throw new Error("TextHighlighter is already enabled.");this.enabled=!0,A(this,vZ)||(I(this,vZ,new AbortController),this.eventBus._on("updatetextlayermatches",e=>{(e.pageIndex===this.pageIdx||e.pageIndex===-1)&&this._updateMatches()},{signal:A(this,vZ).signal})),this._updateMatches()}disable(){var e;this.enabled&&(this.enabled=!1,(e=A(this,vZ))==null||e.abort(),I(this,vZ,null),this._updateMatches(!0))}_convertMatches(e,t){if(!e)return[];const{textContentItemsStr:i}=this;let n=0,o=0;const r=i.length-1,l=[];for(let a=0,d=e.length;a<d;a++){let c=e[a];for(;n!==r&&c>=o+i[n].length;)o+=i[n].length,n++;n===i.length&&console.error("Could not find a matching mapping");const h={begin:{divIdx:n,offset:c-o}};for(c+=t[a];n!==r&&c>o+i[n].length;)o+=i[n].length,n++;h.end={divIdx:n,offset:c-o},l.push(h)}return l}_renderMatches(e){if(e.length===0)return;const{findController:t,pageIdx:i}=this,{textContentItemsStr:n,textDivs:o}=this,r=i===t.selected.pageIdx,l=t.selected.matchIdx,a=t.state.highlightAll;let d=null;const c={divIdx:-1,offset:void 0};function h(b,U){const S=b.divIdx;return o[S].textContent="",u(S,0,b.offset,U)}function u(b,U,S,Z){let R=o[b];if(R.nodeType===Node.TEXT_NODE){const w=document.createElement("span");R.before(w),w.append(R),o[b]=w,R=w}const y=n[b].substring(U,S),N=document.createTextNode(y);if(Z){const w=document.createElement("span");if(w.className=`${Z} appended`,w.append(N),R.append(w),Z.includes("selected")){const{left:Q}=w.getClientRects()[0],C=R.getBoundingClientRect().left;return Q-C}return 0}return R.append(N),0}let m=l,p=m+1;if(a)m=0,p=e.length;else if(!r)return;let g=-1,f=-1;for(let b=m;b<p;b++){const U=e[b],S=U.begin;if(S.divIdx===g&&S.offset===f)continue;g=S.divIdx,f=S.offset;const Z=U.end,R=r&&b===l,y=R?" selected":"";let N=0;if(!d||S.divIdx!==d.divIdx?(d!==null&&u(d.divIdx,d.offset,c.offset),h(S)):u(d.divIdx,d.offset,S.offset),S.divIdx===Z.divIdx)N=u(S.divIdx,S.offset,Z.offset,"highlight"+y);else{N=u(S.divIdx,S.offset,c.offset,"highlight begin"+y);for(let w=S.divIdx+1,Q=Z.divIdx;w<Q;w++)o[w].className="highlight middle"+y;h(Z,"highlight end"+y)}d=Z,R&&t.scrollMatchIntoView({element:o[S.divIdx],selectedLeft:N,pageIndex:i,matchIndex:l})}d&&u(d.divIdx,d.offset,c.offset)}_updateMatches(e=!1){if(!this.enabled&&!e)return;const{findController:t,matches:i,pageIdx:n}=this,{textContentItemsStr:o,textDivs:r}=this;let l=-1;for(const c of i){const h=Math.max(l,c.begin.divIdx);for(let u=h,m=c.end.divIdx;u<=m;u++){const p=r[u];p.textContent=o[u],p.className=""}l=c.end.divIdx+1}if(!(t!=null&&t.highlightMatches)||e)return;const a=t.pageMatches[n]||null,d=t.pageMatchesLength[n]||null;this.matches=this._convertMatches(a,d),this._renderMatches(this.matches)}}vZ=new WeakMap;var U_,oJ,lW,I0,Sh,tZ,yne,jwe,rJ,Pwe,Kbe;const aW=class Hwe{constructor({pdfPage:e,highlighter:t=null,accessibilityManager:i=null,enablePermissions:n=!1,onAppend:o=null}){O(this,yne),O(this,U_,!1),O(this,oJ,null),O(this,lW,!1),O(this,I0,null),this.pdfPage=e,this.highlighter=t,this.accessibilityManager=i,I(this,U_,n===!0),I(this,oJ,o),this.div=document.createElement("div"),this.div.tabIndex=0,this.div.className="textLayer"}async render(e,t=null){var i,n,o,r,l;if(A(this,lW)&&A(this,I0)){A(this,I0).update({viewport:e,onBefore:this.hide.bind(this)}),this.show();return}this.cancel(),I(this,I0,new Nyt({textContentSource:this.pdfPage.streamTextContent(t||{includeMarkedContent:!0,disableNormalization:!0}),container:this.div,viewport:e}));const{textDivs:a,textContentItemsStr:d}=A(this,I0);(i=this.highlighter)==null||i.setTextMapping(a,d),(n=this.accessibilityManager)==null||n.setTextMapping(a),await A(this,I0).render(),I(this,lW,!0);const c=document.createElement("div");c.className="endOfContent",this.div.append(c),_(this,yne,jwe).call(this,c),(o=A(this,oJ))==null||o.call(this,this.div),(r=this.highlighter)==null||r.enable(),(l=this.accessibilityManager)==null||l.enable()}hide(){var e;!this.div.hidden&&A(this,lW)&&((e=this.highlighter)==null||e.disable(),this.div.hidden=!0)}show(){var e;this.div.hidden&&A(this,lW)&&(this.div.hidden=!1,(e=this.highlighter)==null||e.enable())}cancel(){var e,t,i,n;(e=A(this,I0))==null||e.cancel(),I(this,I0,null),(t=this.highlighter)==null||t.disable(),(i=this.accessibilityManager)==null||i.disable(),_(n=Hwe,rJ,Pwe).call(n,this.div)}};U_=new WeakMap,oJ=new WeakMap,lW=new WeakMap,I0=new WeakMap,Sh=new WeakMap,tZ=new WeakMap,yne=new WeakSet,jwe=function(s){var e;const{div:t}=this;t.addEventListener("mousedown",()=>{t.classList.add("selecting")}),t.addEventListener("copy",i=>{if(!A(this,U_)){const n=document.getSelection();i.clipboardData.setData("text/plain",eB(Ayt(n.toString())))}gne(i)}),A(aW,Sh).set(t,s),_(e=aW,rJ,Kbe).call(e)},rJ=new WeakSet,Pwe=function(s){var e;A(this,Sh).delete(s),A(this,Sh).size===0&&((e=A(this,tZ))==null||e.abort(),I(this,tZ,null))},Kbe=function(){if(A(this,tZ))return;I(this,tZ,new AbortController);const{signal:s}=A(this,tZ),e=(o,r)=>{r.append(o),o.style.width="",o.style.height="",r.classList.remove("selecting")};let t=!1;document.addEventListener("pointerdown",()=>{t=!0},{signal:s}),document.addEventListener("pointerup",()=>{t=!1,A(this,Sh).forEach(e)},{signal:s}),window.addEventListener("blur",()=>{t=!1,A(this,Sh).forEach(e)},{signal:s}),document.addEventListener("keyup",()=>{t||A(this,Sh).forEach(e)},{signal:s});var i,n;document.addEventListener("selectionchange",()=>{var o;const r=document.getSelection();if(r.rangeCount===0){A(this,Sh).forEach(e);return}const l=new Set;for(let m=0;m<r.rangeCount;m++){const p=r.getRangeAt(m);for(const g of A(this,Sh).keys())!l.has(g)&&p.intersectsNode(g)&&l.add(g)}for(const[m,p]of A(this,Sh))l.has(m)?m.classList.add("selecting"):e(p,m);if(i??(i=getComputedStyle(A(this,Sh).values().next().value).getPropertyValue("-moz-user-select")==="none"),i)return;const a=r.getRangeAt(0),d=n&&(a.compareBoundaryPoints(Range.END_TO_END,n)===0||a.compareBoundaryPoints(Range.START_TO_END,n)===0);let c=d?a.startContainer:a.endContainer;c.nodeType===Node.TEXT_NODE&&(c=c.parentNode);const h=(o=c.parentElement)==null?void 0:o.closest(".textLayer"),u=A(this,Sh).get(h);u&&(u.style.width=h.style.width,u.style.height=h.style.height,c.parentElement.insertBefore(u,d?c:c.nextSibling)),n=a.cloneRange()},{signal:s})},O(aW,rJ),O(aW,Sh,new Map),O(aW,tZ,null);let Kwe=aW;class qwe{constructor({pdfPage:e,annotationStorage:t=null,linkService:i,xfaHtml:n=null}){this.pdfPage=e,this.annotationStorage=t,this.linkService=i,this.xfaHtml=n,this.div=null,this._cancelled=!1}async render(e,t="display"){if(t==="print"){const o={viewport:e.clone({dontFlip:!0}),div:this.div,xfaHtml:this.xfaHtml,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:t};return this.div=document.createElement("div"),o.div=this.div,C4.render(o)}const i=await this.pdfPage.getXfa();if(this._cancelled||!i)return{textDivs:[]};const n={viewport:e.clone({dontFlip:!0}),div:this.div,xfaHtml:i,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:t};return this.div?C4.update(n):(this.div=document.createElement("div"),n.div=this.div,C4.render(n))}cancel(){this._cancelled=!0}hide(){this.div&&(this.div.hidden=!0)}}const TQt={annotationEditorUIManager:null,annotationStorage:null,downloadManager:null,enableScripting:!1,fieldObjectsPromise:null,findController:null,hasJSActionsPromise:null,get linkService(){return new aae}},CQt=new Map([["canvasWrapper",0],["textLayer",1],["annotationLayer",2],["annotationEditorLayer",3],["xfaLayer",3]]);var dW,kZ,lJ,cW,aJ,xZ,IZ,lB,dJ,cJ,hJ,i1,LC,vC,uU,TS,So,n1,uJ,gT,Qne,Mne,wne,Tne,Cne,qbe,$be,Bne,Lne;class $we{constructor(e){O(this,So),O(this,dW,Cf.ENABLE_FORMS),O(this,kZ,null),O(this,lJ,!1),O(this,cW,!1),O(this,aJ,!1),O(this,xZ,null),O(this,IZ,null),O(this,lB,null),O(this,dJ,null),O(this,cJ,1),O(this,hJ,1),O(this,i1,null),O(this,LC,Dr.INITIAL),O(this,vC,Cg.ENABLE),O(this,uU,{directDrawing:!0,initialOptionalContent:!0,regularAnnotations:!0}),O(this,TS,[null,null,null,null]);var t,i;const n=e.container,o=e.defaultViewport;this.id=e.id,this.renderingId="page"+this.id,I(this,xZ,e.layerProperties||TQt),this.pdfPage=null,this.pageLabel=null,this.rotation=0,this.scale=e.scale||Fwe,this.viewport=o,this.pdfPageRotate=o.rotation,this._optionalContentConfigPromise=e.optionalContentConfigPromise||null,I(this,vC,e.textLayerMode??Cg.ENABLE),I(this,dW,e.annotationMode??Cf.ENABLE_FORMS),this.imageResourcesPath=e.imageResourcesPath||"",this.maxCanvasPixels=e.maxCanvasPixels??WQt.get("maxCanvasPixels"),this.pageColors=e.pageColors||null,I(this,lJ,e.enableHWA||!1),this.eventBus=e.eventBus,this.renderingQueue=e.renderingQueue,this.l10n=e.l10n,this.l10n||(this.l10n=new fO),this.renderTask=null,this.resume=null,this._isStandalone=!((t=this.renderingQueue)!=null&&t.hasViewer()),this._container=n,this._annotationCanvasMap=null,this.annotationLayer=null,this.annotationEditorLayer=null,this.textLayer=null,this.xfaLayer=null,this.structTreeLayer=null,this.drawLayer=null;const r=document.createElement("div");if(r.className="page",r.setAttribute("data-page-number",this.id),r.setAttribute("role","region"),r.setAttribute("data-l10n-id","pdfjs-page-landmark"),r.setAttribute("data-l10n-args",JSON.stringify({page:this.id})),this.div=r,_(this,So,uJ).call(this),n==null||n.append(r),this._isStandalone){n==null||n.style.setProperty("--scale-factor",this.scale*bf.PDF_TO_CSS_UNITS),(i=this.pageColors)!=null&&i.background&&(n==null||n.style.setProperty("--page-bg-color",this.pageColors.background));const{optionalContentConfigPromise:l}=e;l&&l.then(a=>{l===this._optionalContentConfigPromise&&(A(this,uU).initialOptionalContent=a.hasInitialVisibility)}),e.l10n||this.l10n.translate(this.div)}}get renderingState(){return A(this,LC)}set renderingState(e){if(e!==A(this,LC))switch(I(this,LC,e),A(this,IZ)&&(clearTimeout(A(this,IZ)),I(this,IZ,null)),e){case Dr.PAUSED:this.div.classList.remove("loading");break;case Dr.RUNNING:this.div.classList.add("loadingIcon"),I(this,IZ,setTimeout(()=>{this.div.classList.add("loading"),I(this,IZ,null)},0));break;case Dr.INITIAL:case Dr.FINISHED:this.div.classList.remove("loadingIcon","loading");break}}setPdfPage(e){var t,i,n,o;this._isStandalone&&(((t=this.pageColors)==null?void 0:t.foreground)==="CanvasText"||((i=this.pageColors)==null?void 0:i.background)==="Canvas")&&((n=this._container)==null||n.style.setProperty("--hcm-highlight-filter",e.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),(o=this._container)==null||o.style.setProperty("--hcm-highlight-selected-filter",e.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","Highlight"))),this.pdfPage=e,this.pdfPageRotate=e.rotate;const r=(this.rotation+this.pdfPageRotate)%360;this.viewport=e.getViewport({scale:this.scale*bf.PDF_TO_CSS_UNITS,rotation:r}),_(this,So,uJ).call(this),this.reset()}destroy(){var e;this.reset(),(e=this.pdfPage)==null||e.cleanup()}hasEditableAnnotations(){var e;return!!((e=this.annotationLayer)!=null&&e.hasEditableAnnotations())}get _textHighlighter(){return p_(this,"_textHighlighter",new wQt({pageIndex:this.id-1,eventBus:this.eventBus,findController:A(this,xZ).findController}))}reset({keepAnnotationLayer:e=!1,keepAnnotationEditorLayer:t=!1,keepXfaLayer:i=!1,keepTextLayer:n=!1,keepCanvasWrapper:o=!1}={}){var r,l,a,d,c;this.cancelRendering({keepAnnotationLayer:e,keepAnnotationEditorLayer:t,keepXfaLayer:i,keepTextLayer:n}),this.renderingState=Dr.INITIAL;const h=this.div,u=h.childNodes,m=e&&((r=this.annotationLayer)==null?void 0:r.div)||null,p=t&&((l=this.annotationEditorLayer)==null?void 0:l.div)||null,g=i&&((a=this.xfaLayer)==null?void 0:a.div)||null,f=n&&((d=this.textLayer)==null?void 0:d.div)||null,b=o&&A(this,kZ)||null;for(let U=u.length-1;U>=0;U--){const S=u[U];switch(S){case m:case p:case g:case f:case b:continue}S.remove();const Z=A(this,TS).indexOf(S);Z>=0&&(A(this,TS)[Z]=null)}h.removeAttribute("data-loaded"),m&&this.annotationLayer.hide(),p&&this.annotationEditorLayer.hide(),g&&this.xfaLayer.hide(),f&&this.textLayer.hide(),(c=this.structTreeLayer)==null||c.hide(),!o&&A(this,kZ)&&(I(this,kZ,null),_(this,So,Bne).call(this))}toggleEditingMode(e){this.hasEditableAnnotations()&&(I(this,aJ,e),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0}))}update({scale:e=0,rotation:t=null,optionalContentConfigPromise:i=null,drawingDelay:n=-1}){var o;this.scale=e||this.scale,typeof t=="number"&&(this.rotation=t),i instanceof Promise&&(this._optionalContentConfigPromise=i,i.then(l=>{i===this._optionalContentConfigPromise&&(A(this,uU).initialOptionalContent=l.hasInitialVisibility)})),A(this,uU).directDrawing=!0;const r=(this.rotation+this.pdfPageRotate)%360;if(this.viewport=this.viewport.clone({scale:this.scale*bf.PDF_TO_CSS_UNITS,rotation:r}),_(this,So,uJ).call(this),this._isStandalone&&((o=this._container)==null||o.style.setProperty("--scale-factor",this.viewport.scale)),this.canvas){let l=!1;if(A(this,cW)){if(this.maxCanvasPixels===0)l=!0;else if(this.maxCanvasPixels>0){const{width:d,height:c}=this.viewport,{sx:h,sy:u}=this.outputScale;l=(Math.floor(d)*h|0)*(Math.floor(c)*u|0)>this.maxCanvasPixels}}const a=n>=0&&n<1e3;if(a||l){if(a&&!l&&this.renderingState!==Dr.FINISHED&&(this.cancelRendering({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,cancelExtraDelay:n}),this.renderingState=Dr.FINISHED,A(this,uU).directDrawing=!1),this.cssTransform({redrawAnnotationLayer:!0,redrawAnnotationEditorLayer:!0,redrawXfaLayer:!0,redrawTextLayer:!a,hideTextLayer:a}),a)return;this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!0,timestamp:performance.now(),error:A(this,i1)});return}}this.cssTransform({}),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0})}cancelRendering({keepAnnotationLayer:e=!1,keepAnnotationEditorLayer:t=!1,keepXfaLayer:i=!1,keepTextLayer:n=!1,cancelExtraDelay:o=0}={}){var r;this.renderTask&&(this.renderTask.cancel(o),this.renderTask=null),this.resume=null,this.textLayer&&(!n||!this.textLayer.div)&&(this.textLayer.cancel(),this.textLayer=null),this.annotationLayer&&(!e||!this.annotationLayer.div)&&(this.annotationLayer.cancel(),this.annotationLayer=null,this._annotationCanvasMap=null),this.structTreeLayer&&!this.textLayer&&(this.structTreeLayer=null),this.annotationEditorLayer&&(!t||!this.annotationEditorLayer.div)&&(this.drawLayer&&(this.drawLayer.cancel(),this.drawLayer=null),this.annotationEditorLayer.cancel(),this.annotationEditorLayer=null),this.xfaLayer&&(!i||!this.xfaLayer.div)&&(this.xfaLayer.cancel(),this.xfaLayer=null,(r=this._textHighlighter)==null||r.disable())}cssTransform({redrawAnnotationLayer:e=!1,redrawAnnotationEditorLayer:t=!1,redrawXfaLayer:i=!1,redrawTextLayer:n=!1,hideTextLayer:o=!1}){var r;const{canvas:l}=this;if(!l)return;const a=A(this,lB);if(this.viewport!==a){const d=(360+this.viewport.rotation-a.rotation)%360;if(d===90||d===270){const{width:c,height:h}=this.viewport,u=h/c,m=c/h;l.style.transform=`rotate(${d}deg) scale(${u},${m})`}else l.style.transform=d===0?"":`rotate(${d}deg)`}e&&this.annotationLayer&&_(this,So,Qne).call(this),t&&this.annotationEditorLayer&&(this.drawLayer&&_(this,So,wne).call(this),_(this,So,Mne).call(this)),i&&this.xfaLayer&&_(this,So,Tne).call(this),this.textLayer&&(o?(this.textLayer.hide(),(r=this.structTreeLayer)==null||r.hide()):n&&_(this,So,Cne).call(this))}get width(){return this.viewport.width}get height(){return this.viewport.height}getPagePoint(e,t){return this.viewport.convertToPdfPoint(e,t)}async draw(){this.renderingState!==Dr.INITIAL&&(console.error("Must be in new state before drawing"),this.reset());const{div:e,l10n:t,pageColors:i,pdfPage:n,viewport:o}=this;if(!n)throw this.renderingState=Dr.FINISHED,new Error("pdfPage is not loaded");this.renderingState=Dr.RUNNING;let r=A(this,kZ);if(r||(r=I(this,kZ,document.createElement("div")),r.classList.add("canvasWrapper"),_(this,So,n1).call(this,r,"canvasWrapper")),!this.textLayer&&A(this,vC)!==Cg.DISABLE&&!n.isPureXfa&&(this._accessibilityManager||(this._accessibilityManager=new MQt),this.textLayer=new Kwe({pdfPage:n,highlighter:this._textHighlighter,accessibilityManager:this._accessibilityManager,enablePermissions:A(this,vC)===Cg.ENABLE_PERMISSIONS,onAppend:v=>{this.l10n.pause(),_(this,So,n1).call(this,v,"textLayer"),this.l10n.resume()}})),!this.annotationLayer&&A(this,dW)!==Cf.DISABLE){const{annotationStorage:v,annotationEditorUIManager:Y,downloadManager:J,enableScripting:k,fieldObjectsPromise:E,hasJSActionsPromise:K,linkService:de}=A(this,xZ);this._annotationCanvasMap||(this._annotationCanvasMap=new Map),this.annotationLayer=new Cwe({pdfPage:n,annotationStorage:v,imageResourcesPath:this.imageResourcesPath,renderForms:A(this,dW)===Cf.ENABLE_FORMS,linkService:de,downloadManager:J,enableScripting:k,hasJSActionsPromise:K,fieldObjectsPromise:E,annotationCanvasMap:this._annotationCanvasMap,accessibilityManager:this._accessibilityManager,annotationEditorUIManager:Y,onAppend:ee=>{_(this,So,n1).call(this,ee,"annotationLayer")}})}const l=v=>{if(p==null||p(!1),this.renderingQueue&&!this.renderingQueue.isHighestPriority(this)){this.renderingState=Dr.PAUSED,this.resume=()=>{this.renderingState=Dr.RUNNING,v()};return}v()},{width:a,height:d}=o,c=document.createElement("canvas");c.setAttribute("role","presentation");const h=!!(i!=null&&i.background&&i!=null&&i.foreground),u=this.canvas,m=!u&&!h;this.canvas=c,I(this,lB,o);let p=v=>{if(m){r.prepend(c),p=null;return}v&&(u?(u.replaceWith(c),u.width=u.height=0):r.prepend(c),p=null)};const g=c.getContext("2d",{alpha:!1,willReadFrequently:!A(this,lJ)}),f=this.outputScale=new Zyt;if(this.maxCanvasPixels===0){const v=1/this.scale;f.sx*=v,f.sy*=v,I(this,cW,!0)}else if(this.maxCanvasPixels>0){const v=a*d,Y=Math.sqrt(this.maxCanvasPixels/v);f.sx>Y||f.sy>Y?(f.sx=Y,f.sy=Y,I(this,cW,!0)):I(this,cW,!1)}const b=Ube(f.sx),U=Ube(f.sy),S=c.width=JE(XE(a*f.sx),b[0]),Z=c.height=JE(XE(d*f.sy),U[0]),R=JE(XE(a),b[1]),y=JE(XE(d),U[1]);f.sx=S/R,f.sy=Z/y,A(this,cJ)!==b[1]&&(e.style.setProperty("--scale-round-x",`${b[1]}px`),I(this,cJ,b[1])),A(this,hJ)!==U[1]&&(e.style.setProperty("--scale-round-y",`${U[1]}px`),I(this,hJ,U[1]));const N=f.scaled?[f.sx,0,0,f.sy,0,0]:null,w={canvasContext:g,transform:N,viewport:o,annotationMode:A(this,dW),optionalContentConfigPromise:this._optionalContentConfigPromise,annotationCanvasMap:this._annotationCanvasMap,pageColors:i,isEditing:A(this,aJ)},Q=this.renderTask=n.render(w);Q.onContinue=l;const C=Q.promise.then(async()=>{var v;p==null||p(!0),await _(this,So,Lne).call(this,Q),this.structTreeLayer||(this.structTreeLayer=new zwe(n,o.rawDims)),_(this,So,Cne).call(this),this.annotationLayer&&await _(this,So,Qne).call(this);const{annotationEditorUIManager:Y}=A(this,xZ);Y&&(this.drawLayer||(this.drawLayer=new yQt({pageIndex:this.id})),await _(this,So,wne).call(this),this.drawLayer.setParent(r),this.annotationEditorLayer||(this.annotationEditorLayer=new VQt({uiManager:Y,pdfPage:n,l10n:t,structTreeLayer:this.structTreeLayer,accessibilityManager:this._accessibilityManager,annotationLayer:(v=this.annotationLayer)==null?void 0:v.annotationLayer,textLayer:this.textLayer,drawLayer:this.drawLayer.getDrawLayer(),onAppend:J=>{_(this,So,n1).call(this,J,"annotationEditorLayer")}})),_(this,So,Mne).call(this))},v=>(v instanceof dae?(u==null||u.remove(),_(this,So,Bne).call(this)):p==null||p(!0),_(this,So,Lne).call(this,Q,v)));if(n.isPureXfa){if(!this.xfaLayer){const{annotationStorage:v,linkService:Y}=A(this,xZ);this.xfaLayer=new qwe({pdfPage:n,annotationStorage:v,linkService:Y})}_(this,So,Tne).call(this)}return e.setAttribute("data-loaded",!0),this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id}),C}setPageLabel(e){this.pageLabel=typeof e=="string"?e:null,this.div.setAttribute("data-l10n-args",JSON.stringify({page:this.pageLabel??this.id})),this.pageLabel!==null?this.div.setAttribute("data-page-label",this.pageLabel):this.div.removeAttribute("data-page-label")}get thumbnailCanvas(){const{directDrawing:e,initialOptionalContent:t,regularAnnotations:i}=A(this,uU);return e&&t&&i?this.canvas:null}}dW=new WeakMap,kZ=new WeakMap,lJ=new WeakMap,cW=new WeakMap,aJ=new WeakMap,xZ=new WeakMap,IZ=new WeakMap,lB=new WeakMap,dJ=new WeakMap,cJ=new WeakMap,hJ=new WeakMap,i1=new WeakMap,LC=new WeakMap,vC=new WeakMap,uU=new WeakMap,TS=new WeakMap,So=new WeakSet,n1=function(s,e){const t=CQt.get(e),i=A(this,TS)[t];if(A(this,TS)[t]=s,i){i.replaceWith(s);return}for(let n=t-1;n>=0;n--){const o=A(this,TS)[n];if(o){o.after(s);return}}this.div.prepend(s)},uJ=function(){const{viewport:s}=this;if(this.pdfPage){if(A(this,dJ)===s.rotation)return;I(this,dJ,s.rotation)}Syt(this.div,s,!0,!1)},gT=function(s,e){this.eventBus.dispatch(s,{source:this,pageNumber:this.id,error:e})},Qne=async function(){let s=null;try{await this.annotationLayer.render(this.viewport,{structTreeLayer:this.structTreeLayer},"display")}catch(e){console.error("#renderAnnotationLayer:",e),s=e}finally{_(this,So,gT).call(this,"annotationlayerrendered",s)}},Mne=async function(){let s=null;try{await this.annotationEditorLayer.render(this.viewport,"display")}catch(e){console.error("#renderAnnotationEditorLayer:",e),s=e}finally{_(this,So,gT).call(this,"annotationeditorlayerrendered",s)}},wne=async function(){try{await this.drawLayer.render("display")}catch(s){console.error("#renderDrawLayer:",s)}},Tne=async function(){var s;let e=null;try{const t=await this.xfaLayer.render(this.viewport,"display");t!=null&&t.textDivs&&this._textHighlighter&&_(this,So,$be).call(this,t.textDivs)}catch(t){console.error("#renderXfaLayer:",t),e=t}finally{(s=this.xfaLayer)!=null&&s.div&&(this.l10n.pause(),_(this,So,n1).call(this,this.xfaLayer.div,"xfaLayer"),this.l10n.resume()),_(this,So,gT).call(this,"xfalayerrendered",e)}},Cne=async function(){if(!this.textLayer)return;let s=null;try{await this.textLayer.render(this.viewport)}catch(e){if(e instanceof uyt)return;console.error("#renderTextLayer:",e),s=e}_(this,So,gT).call(this,"textlayerrendered",s),_(this,So,qbe).call(this)},qbe=async function(){var s,e,t;if(!this.textLayer)return;const i=await((s=this.structTreeLayer)==null?void 0:s.render());i&&(this.l10n.pause(),(e=this.structTreeLayer)==null||e.addElementsToTextLayer(),this.canvas&&i.parentNode!==this.canvas&&this.canvas.append(i),this.l10n.resume()),(t=this.structTreeLayer)==null||t.show()},$be=async function(s){const e=await this.pdfPage.getTextContent(),t=[];for(const i of e.items)t.push(i.str);this._textHighlighter.setTextMapping(s,t),this._textHighlighter.enable()},Bne=function(){const{canvas:s}=this;s&&(s.remove(),s.width=s.height=0,this.canvas=null,I(this,lB,null))},Lne=async function(s,e=null){if(s===this.renderTask&&(this.renderTask=null),e instanceof dae){I(this,i1,null);return}if(I(this,i1,e),this.renderingState=Dr.FINISHED,A(this,uU).regularAnnotations=!s.separateAnnots,this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!1,timestamp:performance.now(),error:A(this,i1)}),e)throw e};async function BQt(s){const e="",t=e.split("#",1)[0];let{info:i,metadata:n,contentDispositionFilename:o,contentLength:r}=await s.getMetadata();if(!r){const{length:l}=await s.getDownloadInfo();r=l}return{...i,baseURL:t,filesize:r,filename:o||Uyt(e),metadata:n==null?void 0:n.getRaw(),authors:n==null?void 0:n.get("dc:creator"),numPages:s.numPages,URL:e}}class LQt{constructor(e){this._ready=new Promise((t,i)=>{ii(()=>import(e),[],import.meta.url).then(n=>{t(n.QuickJSSandbox())}).catch(i)})}async createSandbox(e){(await this._ready).create(e)}async dispatchEventInSandbox(e){const t=await this._ready;setTimeout(()=>t.dispatchEvent(e),0)}async destroySandbox(){(await this._ready).nukeSandbox()}}var z0,s1,mJ,ry,ly,F_,Ic,xU,aB,ca,_m,Vh,eTe,pJ,vne,tTe,kC;class vQt{constructor({eventBus:e,externalServices:t=null,docProperties:i=null}){O(this,Vh),O(this,z0,null),O(this,s1,null),O(this,mJ,null),O(this,ry,null),O(this,ly,null),O(this,F_,null),O(this,Ic,null),O(this,xU,null),O(this,aB,!1),O(this,ca,null),O(this,_m,null),I(this,ly,e),I(this,F_,t),I(this,mJ,i)}setViewer(e){I(this,xU,e)}async setDocument(e){var t;if(A(this,Ic)&&await _(this,Vh,kC).call(this),I(this,Ic,e),!e)return;const[i,n,o]=await Promise.all([e.getFieldObjects(),e.getCalculationOrderIds(),e.getJSActions()]);if(!i&&!o){await _(this,Vh,kC).call(this);return}if(e!==A(this,Ic))return;try{I(this,ca,_(this,Vh,tTe).call(this))}catch(a){console.error("setDocument:",a),await _(this,Vh,kC).call(this);return}const r=A(this,ly);I(this,ry,new AbortController);const{signal:l}=A(this,ry);r._on("updatefromsandbox",a=>{(a==null?void 0:a.source)===window&&_(this,Vh,eTe).call(this,a.detail)},{signal:l}),r._on("dispatcheventinsandbox",a=>{var d;(d=A(this,ca))==null||d.dispatchEventInSandbox(a.detail)},{signal:l}),r._on("pagechanging",({pageNumber:a,previous:d})=>{a!==d&&(_(this,Vh,vne).call(this,d),_(this,Vh,pJ).call(this,a))},{signal:l}),r._on("pagerendered",({pageNumber:a})=>{this._pageOpenPending.has(a)&&a===A(this,xU).currentPageNumber&&_(this,Vh,pJ).call(this,a)},{signal:l}),r._on("pagesdestroy",async()=>{var a,d;await _(this,Vh,vne).call(this,A(this,xU).currentPageNumber),await((a=A(this,ca))==null?void 0:a.dispatchEventInSandbox({id:"doc",name:"WillClose"})),(d=A(this,z0))==null||d.resolve()},{signal:l});try{const a=await A(this,mJ).call(this,e);if(e!==A(this,Ic))return;await A(this,ca).createSandbox({objects:i,calculationOrder:n,appInfo:{platform:navigator.platform,language:navigator.language},docInfo:{...a,actions:o}}),r.dispatch("sandboxcreated",{source:this})}catch(a){console.error("setDocument:",a),await _(this,Vh,kC).call(this);return}await((t=A(this,ca))==null?void 0:t.dispatchEventInSandbox({id:"doc",name:"Open"})),await _(this,Vh,pJ).call(this,A(this,xU).currentPageNumber,!0),Promise.resolve().then(()=>{e===A(this,Ic)&&I(this,aB,!0)})}async dispatchWillSave(){var e;return(e=A(this,ca))==null?void 0:e.dispatchEventInSandbox({id:"doc",name:"WillSave"})}async dispatchDidSave(){var e;return(e=A(this,ca))==null?void 0:e.dispatchEventInSandbox({id:"doc",name:"DidSave"})}async dispatchWillPrint(){var e;if(A(this,ca)){await((e=A(this,_m))==null?void 0:e.promise),I(this,_m,Promise.withResolvers());try{await A(this,ca).dispatchEventInSandbox({id:"doc",name:"WillPrint"})}catch(t){throw A(this,_m).resolve(),I(this,_m,null),t}await A(this,_m).promise}}async dispatchDidPrint(){var e;return(e=A(this,ca))==null?void 0:e.dispatchEventInSandbox({id:"doc",name:"DidPrint"})}get destroyPromise(){var e;return((e=A(this,s1))==null?void 0:e.promise)||null}get ready(){return A(this,aB)}get _pageOpenPending(){return p_(this,"_pageOpenPending",new Set)}get _visitedPages(){return p_(this,"_visitedPages",new Map)}}z0=new WeakMap,s1=new WeakMap,mJ=new WeakMap,ry=new WeakMap,ly=new WeakMap,F_=new WeakMap,Ic=new WeakMap,xU=new WeakMap,aB=new WeakMap,ca=new WeakMap,_m=new WeakMap,Vh=new WeakSet,eTe=async function(s){var e,t;const i=A(this,xU),n=i.isInPresentationMode||i.isChangingPresentationMode,{id:o,siblings:r,command:l,value:a}=s;if(!o){switch(l){case"clear":console.clear();break;case"error":console.error(a);break;case"layout":if(!n){const c=J1t(a);i.spreadMode=c.spreadMode}break;case"page-num":i.currentPageNumber=a+1;break;case"print":await i.pagesPromise,A(this,ly).dispatch("print",{source:this});break;case"println":console.log(a);break;case"zoom":n||(i.currentScaleValue=a);break;case"SaveAs":A(this,ly).dispatch("download",{source:this});break;case"FirstPage":i.currentPageNumber=1;break;case"LastPage":i.currentPageNumber=i.pagesCount;break;case"NextPage":i.nextPage();break;case"PrevPage":i.previousPage();break;case"ZoomViewIn":n||i.increaseScale();break;case"ZoomViewOut":n||i.decreaseScale();break;case"WillPrintFinished":(e=A(this,_m))==null||e.resolve(),I(this,_m,null);break}return}if(n&&s.focus)return;delete s.id,delete s.siblings;const d=r?[o,...r]:[o];for(const c of d){const h=document.querySelector(`[data-element-id="${c}"]`);h?h.dispatchEvent(new CustomEvent("updatefromsandbox",{detail:s})):(t=A(this,Ic))==null||t.annotationStorage.setValue(c,s)}},pJ=async function(s,e=!1){const t=A(this,Ic),i=this._visitedPages;if(e&&I(this,z0,Promise.withResolvers()),!A(this,z0))return;const n=A(this,xU).getPageView(s-1);if((n==null?void 0:n.renderingState)!==Dr.FINISHED){this._pageOpenPending.add(s);return}this._pageOpenPending.delete(s);const o=(async()=>{var r,l;const a=await(i.has(s)?null:(r=n.pdfPage)==null?void 0:r.getJSActions());t===A(this,Ic)&&await((l=A(this,ca))==null?void 0:l.dispatchEventInSandbox({id:"page",name:"PageOpen",pageNumber:s,actions:a}))})();i.set(s,o)},vne=async function(s){var e;const t=A(this,Ic),i=this._visitedPages;if(!A(this,z0)||this._pageOpenPending.has(s))return;const n=i.get(s);n&&(i.set(s,null),await n,t===A(this,Ic)&&await((e=A(this,ca))==null?void 0:e.dispatchEventInSandbox({id:"page",name:"PageClose",pageNumber:s})))},tTe=function(){if(I(this,s1,Promise.withResolvers()),A(this,ca))throw new Error("#initScripting: Scripting already exists.");return A(this,F_).createScripting()},kC=async function(){var s,e,t,i;if(!A(this,ca)){I(this,Ic,null),(s=A(this,s1))==null||s.resolve();return}A(this,z0)&&(await Promise.race([A(this,z0).promise,new Promise(n=>{setTimeout(n,1e3)})]).catch(()=>{}),I(this,z0,null)),I(this,Ic,null);try{await A(this,ca).destroySandbox()}catch{}(e=A(this,_m))==null||e.reject(new Error("Scripting destroyed.")),I(this,_m,null),(t=A(this,ry))==null||t.abort(),I(this,ry,null),this._pageOpenPending.clear(),this._visitedPages.clear(),I(this,ca,null),I(this,aB,!1),(i=A(this,s1))==null||i.resolve()};class kQt extends vQt{constructor(e){e.externalServices||window.addEventListener("updatefromsandbox",t=>{e.eventBus.dispatch("updatefromsandbox",{source:window,detail:t.detail})}),e.externalServices||(e.externalServices={createScripting:()=>new LQt(e.sandboxBundleSrc)}),e.docProperties||(e.docProperties=t=>BQt(t)),super(e)}}const xQt=3e4;class IQt{constructor(){this.pdfViewer=null,this.pdfThumbnailViewer=null,this.onIdle=null,this.highestPriorityPage=null,this.idleTimeout=null,this.printing=!1,this.isThumbnailViewEnabled=!1,Object.defineProperty(this,"hasViewer",{value:()=>!!this.pdfViewer})}setViewer(e){this.pdfViewer=e}setThumbnailViewer(e){this.pdfThumbnailViewer=e}isHighestPriority(e){return this.highestPriorityPage===e.renderingId}renderHighestPriority(e){var t;this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),!this.pdfViewer.forceRendering(e)&&(this.isThumbnailViewEnabled&&(t=this.pdfThumbnailViewer)!=null&&t.forceRendering()||this.printing||this.onIdle&&(this.idleTimeout=setTimeout(this.onIdle.bind(this),xQt)))}getHighestPriority(e,t,i,n=!1){const o=e.views,r=o.length;if(r===0)return null;for(let h=0;h<r;h++){const u=o[h].view;if(!this.isViewFinished(u))return u}const l=e.first.id,a=e.last.id;if(a-l+1>r){const h=e.ids;for(let u=1,m=a-l;u<m;u++){const p=i?l+u:a-u;if(h.has(p))continue;const g=t[p-1];if(!this.isViewFinished(g))return g}}let d=i?a:l-2,c=t[d];return c&&!this.isViewFinished(c)||n&&(d+=i?1:-1,c=t[d],c&&!this.isViewFinished(c))?c:null}isViewFinished(e){return e.renderingState===Dr.FINISHED}renderView(e){switch(e.renderingState){case Dr.FINISHED:return!1;case Dr.PAUSED:this.highestPriorityPage=e.renderingId,e.resume();break;case Dr.RUNNING:this.highestPriorityPage=e.renderingId;break;case Dr.INITIAL:this.highestPriorityPage=e.renderingId,e.draw().finally(()=>{this.renderHighestPriority()}).catch(t=>{t instanceof dae||console.error("renderView:",t)});break}return!0}}const eUe=10,PE={FORCE_SCROLL_MODE_PAGE:1e4,FORCE_LAZY_PAGE_INIT:5e3,PAUSE_EAGER_PAGE_INIT:250};function tUe(s){return Object.values(wh).includes(s)&&s!==wh.DISABLE}var IU,hW,gJ,kne;class EQt{constructor(e){O(this,gJ),O(this,IU,new Set),O(this,hW,0),I(this,hW,e)}push(e){const t=A(this,IU);t.has(e)&&t.delete(e),t.add(e),t.size>A(this,hW)&&_(this,gJ,kne).call(this)}resize(e,t=null){I(this,hW,e);const i=A(this,IU);if(t){const n=i.size;let o=1;for(const r of i)if(t.has(r.id)&&(i.delete(r),i.add(r)),++o>n)break}for(;i.size>A(this,hW);)_(this,gJ,kne).call(this)}has(e){return A(this,IU).has(e)}[Symbol.iterator](){return A(this,IU).keys()}}IU=new WeakMap,hW=new WeakMap,gJ=new WeakSet,kne=function(){const s=A(this,IU).keys().next().value;s==null||s.destroy(),A(this,IU).delete(s)};var EZ,fJ,bJ,O0,Uu,ay,dB,UJ,FJ,AJ,ZJ,SJ,NJ,DZ,uW,dy,o1,xC,lS,cB,RJ,IC,cy,CS,VJ,hB,Ps,iTe,nTe,sTe,uB,A_,iUe,x4,nUe,mU,xne,oTe,rTe,lTe,Ine,aTe,WJ;class dTe{constructor(e){O(this,Ps),O(this,EZ,null),O(this,fJ,null),O(this,bJ,null),O(this,O0,wh.NONE),O(this,Uu,null),O(this,ay,Cf.ENABLE_FORMS),O(this,dB,null),O(this,UJ,null),O(this,FJ,!1),O(this,AJ,!1),O(this,ZJ,!1),O(this,SJ,!1),O(this,NJ,!1),O(this,DZ,null),O(this,uW,null),O(this,dy,null),O(this,o1,null),O(this,xC,!1),O(this,lS,null),O(this,cB,!1),O(this,RJ,0),O(this,IC,new ResizeObserver(_(this,Ps,aTe).bind(this))),O(this,cy,null),O(this,CS,null),O(this,VJ,!0),O(this,hB,Cg.ENABLE);var t,i;const n="4.10.38";if(Qbe!==n)throw new Error(`The API version "${Qbe}" does not match the Viewer version "${n}".`);if(this.container=e.container,this.viewer=e.viewer||e.container.firstElementChild,((t=this.container)==null?void 0:t.tagName)!=="DIV"||((i=this.viewer)==null?void 0:i.tagName)!=="DIV")throw new Error("Invalid `container` and/or `viewer` option.");if(this.container.offsetParent&&getComputedStyle(this.container).position!=="absolute")throw new Error("The `container` must be absolutely positioned.");A(this,IC).observe(this.container),this.eventBus=e.eventBus,this.linkService=e.linkService||new aae,this.downloadManager=e.downloadManager||null,this.findController=e.findController||null,I(this,fJ,e.altTextManager||null),I(this,UJ,e.editorUndoBar||null),this.findController&&(this.findController.onIsPageVisible=r=>this._getVisiblePages().ids.has(r)),this._scriptingManager=e.scriptingManager||null,I(this,hB,e.textLayerMode??Cg.ENABLE),I(this,ay,e.annotationMode??Cf.ENABLE_FORMS),I(this,O0,e.annotationEditorMode??wh.NONE),I(this,bJ,e.annotationEditorHighlightColors||null),I(this,AJ,e.enableHighlightFloatingButton===!0),I(this,SJ,e.enableUpdatedAddImage===!0),I(this,NJ,e.enableNewAltTextWhenAddingImage===!0),this.imageResourcesPath=e.imageResourcesPath||"",this.enablePrintAutoRotate=e.enablePrintAutoRotate||!1,this.removePageBorders=e.removePageBorders||!1,this.maxCanvasPixels=e.maxCanvasPixels,this.l10n=e.l10n,this.l10n||(this.l10n=new fO),I(this,ZJ,e.enablePermissions||!1),this.pageColors=e.pageColors||null,I(this,uW,e.mlManager||null),I(this,FJ,e.enableHWA||!1),I(this,VJ,e.supportsPinchToZoom!==!1),this.defaultRenderingQueue=!e.renderingQueue,this.defaultRenderingQueue?(this.renderingQueue=new IQt,this.renderingQueue.setViewer(this)):this.renderingQueue=e.renderingQueue;const{abortSignal:o}=e;o==null||o.addEventListener("abort",()=>{A(this,IC).disconnect(),I(this,IC,null)},{once:!0}),this.scroll=L1t(this.container,this._scrollUpdate.bind(this),o),this.presentationModeState=oy.UNKNOWN,this._resetView(),this.removePageBorders&&this.viewer.classList.add("removePageBorders"),_(this,Ps,Ine).call(this),this.eventBus._on("thumbnailrendered",({pageNumber:r,pdfPage:l})=>{const a=this._pages[r-1];A(this,EZ).has(a)||l==null||l.cleanup()}),e.l10n||this.l10n.translate(this.container)}get pagesCount(){return this._pages.length}getPageView(e){return this._pages[e]}getCachedPageViews(){return new Set(A(this,EZ))}get pageViewsReady(){return this._pages.every(e=>e==null?void 0:e.pdfPage)}get renderForms(){return A(this,ay)===Cf.ENABLE_FORMS}get enableScripting(){return!!this._scriptingManager}get currentPageNumber(){return this._currentPageNumber}set currentPageNumber(e){if(!Number.isInteger(e))throw new Error("Invalid page number.");this.pdfDocument&&(this._setCurrentPageNumber(e,!0)||console.error(`currentPageNumber: "${e}" is not a valid page.`))}_setCurrentPageNumber(e,t=!1){var i;if(this._currentPageNumber===e)return t&&_(this,Ps,xne).call(this),!0;if(!(0<e&&e<=this.pagesCount))return!1;const n=this._currentPageNumber;return this._currentPageNumber=e,this.eventBus.dispatch("pagechanging",{source:this,pageNumber:e,pageLabel:((i=this._pageLabels)==null?void 0:i[e-1])??null,previous:n}),t&&_(this,Ps,xne).call(this),!0}get currentPageLabel(){var e;return((e=this._pageLabels)==null?void 0:e[this._currentPageNumber-1])??null}set currentPageLabel(e){if(!this.pdfDocument)return;let t=e|0;if(this._pageLabels){const i=this._pageLabels.indexOf(e);i>=0&&(t=i+1)}this._setCurrentPageNumber(t,!0)||console.error(`currentPageLabel: "${e}" is not a valid page.`)}get currentScale(){return this._currentScale!==Z4?this._currentScale:Fwe}set currentScale(e){if(isNaN(e))throw new Error("Invalid numeric scale.");this.pdfDocument&&_(this,Ps,mU).call(this,e,{noScroll:!1})}get currentScaleValue(){return this._currentScaleValue}set currentScaleValue(e){this.pdfDocument&&_(this,Ps,mU).call(this,e,{noScroll:!1})}get pagesRotation(){return this._pagesRotation}set pagesRotation(e){if(!Nwe(e))throw new Error("Invalid pages rotation angle.");if(!this.pdfDocument||(e%=360,e<0&&(e+=360),this._pagesRotation===e))return;this._pagesRotation=e;const t=this._currentPageNumber;this.refresh(!0,{rotation:e}),this._currentScaleValue&&_(this,Ps,mU).call(this,this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:e,pageNumber:t}),this.defaultRenderingQueue&&this.update()}get firstPagePromise(){return this.pdfDocument?this._firstPageCapability.promise:null}get onePageRendered(){return this.pdfDocument?this._onePageRenderedCapability.promise:null}get pagesPromise(){return this.pdfDocument?this._pagesCapability.promise:null}get _layerProperties(){const e=this;return p_(this,"_layerProperties",{get annotationEditorUIManager(){return A(e,Uu)},get annotationStorage(){var t;return(t=e.pdfDocument)==null?void 0:t.annotationStorage},get downloadManager(){return e.downloadManager},get enableScripting(){return!!e._scriptingManager},get fieldObjectsPromise(){var t;return(t=e.pdfDocument)==null?void 0:t.getFieldObjects()},get findController(){return e.findController},get hasJSActionsPromise(){var t;return(t=e.pdfDocument)==null?void 0:t.hasJSActions()},get linkService(){return e.linkService}})}async getAllText(){const e=[],t=[];for(let i=1,n=this.pdfDocument.numPages;i<=n;++i){if(A(this,cB))return null;t.length=0;const o=await this.pdfDocument.getPage(i),{items:r}=await o.getTextContent();for(const l of r)l.str&&t.push(l.str),l.hasEOL&&t.push(`
- `);e.push(eB(t.join("")))}return e.join(`
- `)}setDocument(e){var t,i,n;if(this.pdfDocument&&(this.eventBus.dispatch("pagesdestroy",{source:this}),this._cancelRendering(),this._resetView(),(t=this.findController)==null||t.setDocument(null),(i=this._scriptingManager)==null||i.setDocument(null),(n=A(this,Uu))==null||n.destroy(),I(this,Uu,null)),this.pdfDocument=e,!e)return;const o=e.numPages,r=e.getPage(1),l=e.getOptionalContentConfig({intent:"display"}),a=A(this,ZJ)?e.getPermissions():Promise.resolve(),{eventBus:d,pageColors:c,viewer:h}=this;I(this,DZ,new AbortController);const{signal:u}=A(this,DZ);if(o>PE.FORCE_SCROLL_MODE_PAGE){console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");const g=this._scrollMode=Ks.PAGE;d.dispatch("scrollmodechanged",{source:this,mode:g})}this._pagesCapability.promise.then(()=>{d.dispatch("pagesloaded",{source:this,pagesCount:o})},()=>{});const m=g=>{const f=this._pages[g.pageNumber-1];f&&A(this,EZ).push(f)};d._on("pagerender",m,{signal:u});const p=g=>{g.cssTransform||(this._onePageRenderedCapability.resolve({timestamp:g.timestamp}),d._off("pagerendered",p))};d._on("pagerendered",p,{signal:u}),Promise.all([r,a]).then(([g,f])=>{var b,U;if(e!==this.pdfDocument)return;this._firstPageCapability.resolve(g),this._optionalContentConfigPromise=l;const{annotationEditorMode:S,annotationMode:Z,textLayerMode:R}=_(this,Ps,iTe).call(this,f);if(R!==Cg.DISABLE){const Q=I(this,lS,document.createElement("div"));Q.id="hiddenCopyElement",h.before(Q)}if(typeof AbortSignal.any=="function"&&S!==wh.DISABLE){const Q=S;e.isPureXfa?console.warn("Warning: XFA-editing is not implemented."):tUe(Q)?(I(this,Uu,new pyt(this.container,h,A(this,fJ),d,e,c,A(this,bJ),A(this,AJ),A(this,SJ),A(this,NJ),A(this,uW),A(this,UJ),A(this,VJ))),d.dispatch("annotationeditoruimanager",{source:this,uiManager:A(this,Uu)}),Q!==wh.NONE&&(Q===wh.STAMP&&((b=A(this,uW))==null||b.loadModel("altText")),A(this,Uu).updateMode(Q))):console.error(`Invalid AnnotationEditor mode: ${Q}`)}const y=this._scrollMode===Ks.PAGE?null:h,N=this.currentScale,w=g.getViewport({scale:N*bf.PDF_TO_CSS_UNITS});h.style.setProperty("--scale-factor",w.scale),c!=null&&c.background&&h.style.setProperty("--page-bg-color",c.background),((c==null?void 0:c.foreground)==="CanvasText"||(c==null?void 0:c.background)==="Canvas")&&(h.style.setProperty("--hcm-highlight-filter",e.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),h.style.setProperty("--hcm-highlight-selected-filter",e.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","ButtonText")));for(let Q=1;Q<=o;++Q){const C=new $we({container:y,eventBus:d,id:Q,scale:N,defaultViewport:w.clone(),optionalContentConfigPromise:l,renderingQueue:this.renderingQueue,textLayerMode:R,annotationMode:Z,imageResourcesPath:this.imageResourcesPath,maxCanvasPixels:this.maxCanvasPixels,pageColors:c,l10n:this.l10n,layerProperties:this._layerProperties,enableHWA:A(this,FJ)});this._pages.push(C)}(U=this._pages[0])==null||U.setPdfPage(g),this._scrollMode===Ks.PAGE?_(this,Ps,uB).call(this):this._spreadMode!==Zd.NONE&&this._updateSpreadMode(),_(this,Ps,nTe).call(this,u).then(async()=>{var Q,C;if(e!==this.pdfDocument)return;if((Q=this.findController)==null||Q.setDocument(e),(C=this._scriptingManager)==null||C.setDocument(e),A(this,lS)&&document.addEventListener("copy",_(this,Ps,sTe).bind(this,R),{signal:u}),A(this,Uu)&&d.dispatch("annotationeditormodechanged",{source:this,mode:A(this,O0)}),e.loadingParams.disableAutoFetch||o>PE.FORCE_LAZY_PAGE_INIT){this._pagesCapability.resolve();return}let v=o-1;if(v<=0){this._pagesCapability.resolve();return}for(let Y=2;Y<=o;++Y){const J=e.getPage(Y).then(k=>{const E=this._pages[Y-1];E.pdfPage||E.setPdfPage(k),--v===0&&this._pagesCapability.resolve()},k=>{console.error(`Unable to get page ${Y} to initialize viewer`,k),--v===0&&this._pagesCapability.resolve()});Y%PE.PAUSE_EAGER_PAGE_INIT===0&&await J}}),d.dispatch("pagesinit",{source:this}),e.getMetadata().then(({info:Q})=>{e===this.pdfDocument&&Q.Language&&(h.lang=Q.Language)}),this.defaultRenderingQueue&&this.update()}).catch(g=>{console.error("Unable to initialize viewer",g),this._pagesCapability.reject(g)})}setPageLabels(e){var t;if(this.pdfDocument){e?Array.isArray(e)&&this.pdfDocument.numPages===e.length?this._pageLabels=e:(this._pageLabels=null,console.error("setPageLabels: Invalid page labels.")):this._pageLabels=null;for(let i=0,n=this._pages.length;i<n;i++)this._pages[i].setPageLabel(((t=this._pageLabels)==null?void 0:t[i])??null)}}_resetView(){var e,t;this._pages=[],this._currentPageNumber=1,this._currentScale=Z4,this._currentScaleValue=null,this._pageLabels=null,I(this,EZ,new EQt(eUe)),this._location=null,this._pagesRotation=0,this._optionalContentConfigPromise=null,this._firstPageCapability=Promise.withResolvers(),this._onePageRenderedCapability=Promise.withResolvers(),this._pagesCapability=Promise.withResolvers(),this._scrollMode=Ks.VERTICAL,this._previousScrollMode=Ks.UNKNOWN,this._spreadMode=Zd.NONE,I(this,cy,{previousPageNumber:1,scrollDown:!0,pages:[]}),(e=A(this,DZ))==null||e.abort(),I(this,DZ,null),this.viewer.textContent="",this._updateScrollMode(),this.viewer.removeAttribute("lang"),(t=A(this,lS))==null||t.remove(),I(this,lS,null),_(this,Ps,WJ).call(this)}_scrollUpdate(){this.pagesCount!==0&&this.update()}pageLabelToPageNumber(e){if(!this._pageLabels)return null;const t=this._pageLabels.indexOf(e);return t<0?null:t+1}scrollPageIntoView({pageNumber:e,destArray:t=null,allowNegativeOffset:i=!1,ignoreDestinationZoom:n=!1}){if(!this.pdfDocument)return;const o=Number.isInteger(e)&&this._pages[e-1];if(!o){console.error(`scrollPageIntoView: "${e}" is not a valid pageNumber parameter.`);return}if(this.isInPresentationMode||!t){this._setCurrentPageNumber(e,!0);return}let r=0,l=0,a=0,d=0,c,h;const u=o.rotation%180!==0,m=(u?o.height:o.width)/o.scale/bf.PDF_TO_CSS_UNITS,p=(u?o.width:o.height)/o.scale/bf.PDF_TO_CSS_UNITS;let g=0;switch(t[1].name){case"XYZ":r=t[2],l=t[3],g=t[4],r=r!==null?r:0,l=l!==null?l:p;break;case"Fit":case"FitB":g="page-fit";break;case"FitH":case"FitBH":l=t[2],g="page-width",l===null&&this._location?(r=this._location.left,l=this._location.top):(typeof l!="number"||l<0)&&(l=p);break;case"FitV":case"FitBV":r=t[2],a=m,d=p,g="page-height";break;case"FitR":r=t[2],l=t[3],a=t[4]-r,d=t[5]-l;let S=Awe,Z=Zwe;this.removePageBorders&&(S=Z=0),c=(this.container.clientWidth-S)/a/bf.PDF_TO_CSS_UNITS,h=(this.container.clientHeight-Z)/d/bf.PDF_TO_CSS_UNITS,g=Math.min(Math.abs(c),Math.abs(h));break;default:console.error(`scrollPageIntoView: "${t[1].name}" is not a valid destination type.`);return}if(n||(g&&g!==this._currentScale?this.currentScaleValue=g:this._currentScale===Z4&&(this.currentScaleValue=w1t)),g==="page-fit"&&!t[4]){_(this,Ps,A_).call(this,o);return}const f=[o.viewport.convertToViewportPoint(r,l),o.viewport.convertToViewportPoint(r+a,l+d)];let b=Math.min(f[0][0],f[1][0]),U=Math.min(f[0][1],f[1][1]);i||(b=Math.max(b,0),U=Math.max(U,0)),_(this,Ps,A_).call(this,o,{left:b,top:U})}_updateLocation(e){const t=this._currentScale,i=this._currentScaleValue,n=parseFloat(i)===t?Math.round(t*1e4)/100:i,o=e.id,r=this._pages[o-1],l=this.container,a=r.getPagePoint(l.scrollLeft-e.x,l.scrollTop-e.y),d=Math.round(a[0]),c=Math.round(a[1]);let h=`#page=${o}`;this.isInPresentationMode||(h+=`&zoom=${n},${d},${c}`),this._location={pageNumber:o,scale:n,top:c,left:d,rotation:this._pagesRotation,pdfOpenParams:h}}update(){const e=this._getVisiblePages(),t=e.views,i=t.length;if(i===0)return;const n=Math.max(eUe,2*i+1);A(this,EZ).resize(n,e.ids),this.renderingQueue.renderHighestPriority(e);const o=this._spreadMode===Zd.NONE&&(this._scrollMode===Ks.PAGE||this._scrollMode===Ks.VERTICAL),r=this._currentPageNumber;let l=!1;for(const a of t){if(a.percent<100)break;if(a.id===r&&o){l=!0;break}}this._setCurrentPageNumber(l?r:t[0].id),this._updateLocation(e.first),this.eventBus.dispatch("updateviewarea",{source:this,location:this._location})}containsElement(e){return this.container.contains(e)}focus(){this.container.focus()}get _isContainerRtl(){return getComputedStyle(this.container).direction==="rtl"}get isInPresentationMode(){return this.presentationModeState===oy.FULLSCREEN}get isChangingPresentationMode(){return this.presentationModeState===oy.CHANGING}get isHorizontalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollWidth>this.container.clientWidth}get isVerticalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollHeight>this.container.clientHeight}_getVisiblePages(){const e=this._scrollMode===Ks.PAGE?A(this,cy).pages:this._pages,t=this._scrollMode===Ks.HORIZONTAL,i=t&&this._isContainerRtl;return k1t({scrollEl:this.container,views:e,sortByVisibility:!0,horizontal:t,rtl:i})}cleanup(){for(const e of this._pages)e.renderingState!==Dr.FINISHED&&e.reset()}_cancelRendering(){for(const e of this._pages)e.cancelRendering()}forceRendering(e){const t=e||this._getVisiblePages(),i=_(this,Ps,lTe).call(this,t),n=this._spreadMode!==Zd.NONE&&this._scrollMode!==Ks.HORIZONTAL,o=this.renderingQueue.getHighestPriority(t,this._pages,i,n);return o?(_(this,Ps,rTe).call(this,o).then(()=>{this.renderingQueue.renderView(o)}),!0):!1}get hasEqualPageSizes(){const e=this._pages[0];for(let t=1,i=this._pages.length;t<i;++t){const n=this._pages[t];if(n.width!==e.width||n.height!==e.height)return!1}return!0}getPagesOverview(){let e;return this._pages.map(t=>{const i=t.pdfPage.getViewport({scale:1}),n=Rwe(i);if(e===void 0)e=n;else if(this.enablePrintAutoRotate&&n!==e)return{width:i.height,height:i.width,rotation:(i.rotation-90)%360};return{width:i.width,height:i.height,rotation:i.rotation}})}get optionalContentConfigPromise(){return this.pdfDocument?this._optionalContentConfigPromise?this._optionalContentConfigPromise:(console.error("optionalContentConfigPromise: Not initialized yet."),this.pdfDocument.getOptionalContentConfig({intent:"display"})):Promise.resolve(null)}set optionalContentConfigPromise(e){if(!(e instanceof Promise))throw new Error(`Invalid optionalContentConfigPromise: ${e}`);this.pdfDocument&&this._optionalContentConfigPromise&&(this._optionalContentConfigPromise=e,this.refresh(!1,{optionalContentConfigPromise:e}),this.eventBus.dispatch("optionalcontentconfigchanged",{source:this,promise:e}))}get scrollMode(){return this._scrollMode}set scrollMode(e){if(this._scrollMode!==e){if(!x1t(e))throw new Error(`Invalid scroll mode: ${e}`);this.pagesCount>PE.FORCE_SCROLL_MODE_PAGE||(this._previousScrollMode=this._scrollMode,this._scrollMode=e,this.eventBus.dispatch("scrollmodechanged",{source:this,mode:e}),this._updateScrollMode(this._currentPageNumber))}}_updateScrollMode(e=null){const t=this._scrollMode,i=this.viewer;i.classList.toggle("scrollHorizontal",t===Ks.HORIZONTAL),i.classList.toggle("scrollWrapped",t===Ks.WRAPPED),!(!this.pdfDocument||!e)&&(t===Ks.PAGE?_(this,Ps,uB).call(this):this._previousScrollMode===Ks.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&_(this,Ps,mU).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(e,!0),this.update())}get spreadMode(){return this._spreadMode}set spreadMode(e){if(this._spreadMode!==e){if(!I1t(e))throw new Error(`Invalid spread mode: ${e}`);this._spreadMode=e,this.eventBus.dispatch("spreadmodechanged",{source:this,mode:e}),this._updateSpreadMode(this._currentPageNumber)}}_updateSpreadMode(e=null){if(!this.pdfDocument)return;const t=this.viewer,i=this._pages;if(this._scrollMode===Ks.PAGE)_(this,Ps,uB).call(this);else if(t.textContent="",this._spreadMode===Zd.NONE)for(const n of this._pages)t.append(n.div);else{const n=this._spreadMode-1;let o=null;for(let r=0,l=i.length;r<l;++r)o===null?(o=document.createElement("div"),o.className="spread",t.append(o)):r%2===n&&(o=o.cloneNode(!1),t.append(o)),o.append(i[r].div)}e&&(this._currentScaleValue&&isNaN(this._currentScaleValue)&&_(this,Ps,mU).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(e,!0),this.update())}_getPageAdvance(e,t=!1){switch(this._scrollMode){case Ks.WRAPPED:{const{views:i}=this._getVisiblePages(),n=new Map;for(const{id:o,y:r,percent:l,widthPercent:a}of i){if(l===0||a<100)continue;let d=n.get(r);d||n.set(r,d||(d=[])),d.push(o)}for(const o of n.values()){const r=o.indexOf(e);if(r===-1)continue;const l=o.length;if(l===1)break;if(t)for(let a=r-1,d=0;a>=d;a--){const c=o[a],h=o[a+1]-1;if(c<h)return e-h}else for(let a=r+1,d=l;a<d;a++){const c=o[a],h=o[a-1]+1;if(c>h)return h-e}if(t){const a=o[0];if(a<e)return e-a+1}else{const a=o[l-1];if(a>e)return a-e+1}break}break}case Ks.HORIZONTAL:break;case Ks.PAGE:case Ks.VERTICAL:{if(this._spreadMode===Zd.NONE)break;const i=this._spreadMode-1;if(t&&e%2!==i||!t&&e%2===i)break;const{views:n}=this._getVisiblePages(),o=t?e-1:e+1;for(const{id:r,percent:l,widthPercent:a}of n)if(r===o){if(l>0&&a===100)return 2;break}break}}return 1}nextPage(){const e=this._currentPageNumber,t=this.pagesCount;if(e>=t)return!1;const i=this._getPageAdvance(e,!1)||1;return this.currentPageNumber=Math.min(e+i,t),!0}previousPage(){const e=this._currentPageNumber;if(e<=1)return!1;const t=this._getPageAdvance(e,!0)||1;return this.currentPageNumber=Math.max(e-t,1),!0}updateScale({drawingDelay:e,scaleFactor:t=null,steps:i=null,origin:n}){if(i===null&&t===null)throw new Error("Invalid updateScale options: either `steps` or `scaleFactor` must be provided.");if(!this.pdfDocument)return;let o=this._currentScale;if(t>0&&t!==1)o=Math.round(o*t*100)/100;else if(i){const r=i>0?fbe:1/fbe,l=i>0?Math.ceil:Math.floor;i=Math.abs(i);do o=l((o*r).toFixed(2)*10)/10;while(--i>0)}o=Math.max(T1t,Math.min(C1t,o)),_(this,Ps,mU).call(this,o,{noScroll:!1,drawingDelay:e,origin:n})}increaseScale(e={}){this.updateScale({...e,steps:e.steps??1})}decreaseScale(e={}){this.updateScale({...e,steps:-(e.steps??1)})}get containerTopLeft(){return A(this,dB)||I(this,dB,[this.container.offsetTop,this.container.offsetLeft])}get annotationEditorMode(){return A(this,Uu)?A(this,O0):wh.DISABLE}set annotationEditorMode({mode:e,editId:t=null,isFromKeyboard:i=!1}){var n;if(!A(this,Uu))throw new Error("The AnnotationEditor is not enabled.");if(A(this,O0)===e)return;if(!tUe(e))throw new Error(`Invalid AnnotationEditor mode: ${e}`);if(!this.pdfDocument)return;e===wh.STAMP&&((n=A(this,uW))==null||n.loadModel("altText"));const{eventBus:o}=this,r=()=>{_(this,Ps,WJ).call(this),I(this,O0,e),A(this,Uu).updateMode(e,t,i),o.dispatch("annotationeditormodechanged",{source:this,mode:e})};if(e===wh.NONE||A(this,O0)===wh.NONE){const l=e!==wh.NONE;l||this.pdfDocument.annotationStorage.resetModifiedIds();for(const d of this._pages)d.toggleEditingMode(l);const a=_(this,Ps,oTe).call(this);if(l&&a){_(this,Ps,WJ).call(this),I(this,dy,new AbortController);const d=AbortSignal.any([A(this,DZ).signal,A(this,dy).signal]);o._on("pagerendered",({pageNumber:c})=>{a.delete(c),a.size===0&&I(this,o1,setTimeout(r,0))},{signal:d});return}}r()}refresh(e=!1,t=Object.create(null)){if(this.pdfDocument){for(const i of this._pages)i.update(t);A(this,CS)!==null&&(clearTimeout(A(this,CS)),I(this,CS,null)),e||this.update()}}}EZ=new WeakMap,fJ=new WeakMap,bJ=new WeakMap,O0=new WeakMap,Uu=new WeakMap,ay=new WeakMap,dB=new WeakMap,UJ=new WeakMap,FJ=new WeakMap,AJ=new WeakMap,ZJ=new WeakMap,SJ=new WeakMap,NJ=new WeakMap,DZ=new WeakMap,uW=new WeakMap,dy=new WeakMap,o1=new WeakMap,xC=new WeakMap,lS=new WeakMap,cB=new WeakMap,RJ=new WeakMap,IC=new WeakMap,cy=new WeakMap,CS=new WeakMap,VJ=new WeakMap,hB=new WeakMap,Ps=new WeakSet,iTe=function(s){const e={annotationEditorMode:A(this,O0),annotationMode:A(this,ay),textLayerMode:A(this,hB)};return s&&(!s.includes(OE.COPY)&&A(this,hB)===Cg.ENABLE&&(e.textLayerMode=Cg.ENABLE_PERMISSIONS),s.includes(OE.MODIFY_CONTENTS)||(e.annotationEditorMode=wh.DISABLE),!s.includes(OE.MODIFY_ANNOTATIONS)&&!s.includes(OE.FILL_INTERACTIVE_FORMS)&&A(this,ay)===Cf.ENABLE_FORMS&&(e.annotationMode=Cf.ENABLE)),e},nTe=async function(s){if(document.visibilityState==="hidden"||!this.container.offsetParent||this._getVisiblePages().views.length===0)return;const e=Promise.withResolvers(),t=new AbortController;document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&e.resolve()},{signal:typeof AbortSignal.any=="function"?AbortSignal.any([s,t.signal]):s}),await Promise.race([this._onePageRenderedCapability.promise,e.promise]),t.abort()},sTe=function(s,e){const t=document.getSelection(),{focusNode:i,anchorNode:n}=t;if(n&&i&&t.containsNode(A(this,lS))){if(A(this,xC)||s===Cg.ENABLE_PERMISSIONS){gne(e);return}I(this,xC,!0);const{classList:o}=this.viewer;o.add("copyAll");const r=new AbortController;window.addEventListener("keydown",l=>I(this,cB,l.key==="Escape"),{signal:r.signal}),this.getAllText().then(async l=>{l!==null&&await navigator.clipboard.writeText(l)}).catch(l=>{console.warn(`Something goes wrong when extracting the text: ${l.message}`)}).finally(()=>{I(this,xC,!1),I(this,cB,!1),r.abort(),o.remove("copyAll")}),gne(e)}},uB=function(){if(this._scrollMode!==Ks.PAGE)throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");const s=this._currentPageNumber,e=A(this,cy),t=this.viewer;if(t.textContent="",e.pages.length=0,this._spreadMode===Zd.NONE&&!this.isInPresentationMode){const i=this._pages[s-1];t.append(i.div),e.pages.push(i)}else{const i=new Set,n=this._spreadMode-1;n===-1?i.add(s-1):s%2!==n?(i.add(s-1),i.add(s)):(i.add(s-2),i.add(s-1));const o=document.createElement("div");if(o.className="spread",this.isInPresentationMode){const r=document.createElement("div");r.className="dummyPage",o.append(r)}for(const r of i){const l=this._pages[r];l&&(o.append(l.div),e.pages.push(l))}t.append(o)}e.scrollDown=s>=e.previousPageNumber,e.previousPageNumber=s},A_=function(s,e=null){const{div:t,id:i}=s;if(this._currentPageNumber!==i&&this._setCurrentPageNumber(i),this._scrollMode===Ks.PAGE&&(_(this,Ps,uB).call(this),this.update()),!e&&!this.isInPresentationMode){const n=t.offsetLeft+t.clientLeft,o=n+t.clientWidth,{scrollLeft:r,clientWidth:l}=this.container;(this._scrollMode===Ks.HORIZONTAL||n<r||o>r+l)&&(e={left:0,top:0})}Swe(t,e),!this._currentScaleValue&&this._location&&(this._location=null)},iUe=function(s){return s===this._currentScale||Math.abs(s-this._currentScale)<1e-15},x4=function(s,e,{noScroll:t=!1,preset:i=!1,drawingDelay:n=-1,origin:o=null}){if(this._currentScaleValue=e.toString(),_(this,Ps,iUe).call(this,s)){i&&this.eventBus.dispatch("scalechanging",{source:this,scale:s,presetValue:e});return}this.viewer.style.setProperty("--scale-factor",s*bf.PDF_TO_CSS_UNITS);const r=n>=0&&n<1e3;this.refresh(!0,{scale:s,drawingDelay:r?n:-1}),r&&I(this,CS,setTimeout(()=>{I(this,CS,null),this.refresh()},n));const l=this._currentScale;if(this._currentScale=s,!t){let a=this._currentPageNumber,d;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(a=this._location.pageNumber,d=[null,{name:"XYZ"},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:a,destArray:d,allowNegativeOffset:!0}),Array.isArray(o)){const c=s/l-1,[h,u]=this.containerTopLeft;this.container.scrollLeft+=(o[0]-u)*c,this.container.scrollTop+=(o[1]-h)*c}}this.eventBus.dispatch("scalechanging",{source:this,scale:s,presetValue:i?e:void 0}),this.defaultRenderingQueue&&this.update()},nUe=function(){return this._spreadMode!==Zd.NONE&&this._scrollMode!==Ks.HORIZONTAL?2:1},mU=function(s,e){let t=parseFloat(s);if(t>0)e.preset=!1,_(this,Ps,x4).call(this,t,s,e);else{const i=this._pages[this._currentPageNumber-1];if(!i)return;let n=Awe,o=Zwe;this.isInPresentationMode?(n=o=4,this._spreadMode!==Zd.NONE&&(n*=2)):this.removePageBorders?n=o=0:this._scrollMode===Ks.HORIZONTAL&&([n,o]=[o,n]);const r=(this.container.clientWidth-n)/i.width*i.scale/A(this,Ps,nUe),l=(this.container.clientHeight-o)/i.height*i.scale;switch(s){case"page-actual":t=1;break;case"page-width":t=r;break;case"page-height":t=l;break;case"page-fit":t=Math.min(r,l);break;case"auto":const a=Rwe(i)?r:Math.min(l,r);t=Math.min(B1t,a);break;default:console.error(`#setScale: "${s}" is an unknown zoom value.`);return}e.preset=!0,_(this,Ps,x4).call(this,t,s,e)}},xne=function(){const s=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&_(this,Ps,mU).call(this,this._currentScaleValue,{noScroll:!0}),_(this,Ps,A_).call(this,s)},oTe=function(){const s=this._getVisiblePages(),e=[],{ids:t,views:i}=s;for(const n of i){const{view:o}=n;if(!o.hasEditableAnnotations()){t.delete(o.id);continue}e.push(n)}return e.length===0?null:(this.renderingQueue.renderHighestPriority({first:e[0],last:e.at(-1),views:e,ids:t}),t)},rTe=async function(s){if(s.pdfPage)return s.pdfPage;try{const e=await this.pdfDocument.getPage(s.id);return s.pdfPage||s.setPdfPage(e),e}catch(e){return console.error("Unable to get page for page view",e),null}},lTe=function(s){var e,t;if(((e=s.first)==null?void 0:e.id)===1)return!0;if(((t=s.last)==null?void 0:t.id)===this.pagesCount)return!1;switch(this._scrollMode){case Ks.PAGE:return A(this,cy).scrollDown;case Ks.HORIZONTAL:return this.scroll.right}return this.scroll.down},Ine=function(s=this.container.clientHeight){s!==A(this,RJ)&&(I(this,RJ,s),E1t.setProperty("--viewer-container-height",`${s}px`))},aTe=function(s){for(const e of s)if(e.target===this.container){_(this,Ps,Ine).call(this,Math.floor(e.borderBoxSize[0].blockSize)),I(this,dB,null);break}},WJ=function(){var s;(s=A(this,dy))==null||s.abort(),I(this,dy,null),A(this,o1)!==null&&(clearTimeout(A(this,o1)),I(this,o1,null))};class DQt extends dTe{_resetView(){super._resetView(),this._scrollMode=Ks.PAGE,this._spreadMode=Zd.NONE}set scrollMode(e){}_updateScrollMode(){}set spreadMode(e){}_updateSpreadMode(){}}vr.AnnotationLayerBuilder;vr.DownloadManager;vr.EventBus;vr.FindState;vr.GenericL10n;vr.LinkTarget;vr.PDFFindController;vr.PDFHistory;var GQt=vr.PDFLinkService;vr.PDFPageView;vr.PDFScriptingManager;vr.PDFSinglePageViewer;vr.PDFViewer;vr.ProgressBar;vr.RenderingStates;vr.ScrollMode;vr.SimpleLinkService;vr.SpreadMode;vr.StructTreeLayerBuilder;vr.TextLayerBuilder;vr.XfaLayerBuilder;vr.parseQueryString;const JQt=["id"],XQt=["id"],YQt=re("canvas",null,null,-1),_Qt={key:0,class:"textLayer"},zQt={key:1,class:"annotationLayer"},cTe=aUe({__name:"VuePdfEmbed",props:{annotationLayer:{type:Boolean},height:{},id:{},imageResourcesPath:{},linkService:{},page:{},rotation:{default:0},scale:{default:1},source:{},textLayer:{type:Boolean},width:{}},emits:["internal-link-clicked","loaded","loading-failed","password-requested","progress","rendered","rendering-failed"],setup(s,{expose:e,emit:t}){const i=s,n=uy([]),o=X([]),r=uy(null);let l=null;const{doc:a}=Uwe({onError:b=>{n.value=[],t("loading-failed",b)},onPasswordRequest({callback:b,isWrongPassword:U}){t("password-requested",{callback:b,isWrongPassword:U})},onProgress:b=>{t("progress",b)},source:HE(i,"source")}),d=i3(()=>{if(!a.value||!i.annotationLayer)return null;if(i.linkService)return i.linkService;const b=new GQt;return b.setDocument(a.value),b.setViewer({scrollPageIntoView:({pageNumber:U})=>{t("internal-link-clicked",U)}}),b}),c=async b=>{if(!a.value)return;const U=await a.value.getData(),S=await a.value.getMetadata(),Z=b??S.contentDispositionFilename??"";M1t(U,Z)},h=b=>{let U,S;return i.height&&!i.width?(S=i.height,U=S/b):(U=i.width??r.value.clientWidth,S=U*b),[U,S]},u=async(b=300,U="",S=!1)=>{var Z,R,y;if(!a.value)return;const N=b/72,w=96/72;let Q,C,v;try{Q=window.document.createElement("div"),Q.style.display="none",window.document.body.appendChild(Q),C=await Q1t(Q);const Y=i.page&&!S?[i.page]:[...Array(a.value.numPages+1).keys()].slice(1);await Promise.all(Y.map(async(J,k)=>{const E=await a.value.getPage(J),K=E.getViewport({scale:1,rotation:0});if(k===0){const le=K.width*N/w,Fe=K.height*N/w;y1t(C,le,Fe)}const de=window.document.createElement("canvas");de.width=K.width*N,de.height=K.height*N,Q.appendChild(de);const ee=de.cloneNode();C.contentWindow.document.body.appendChild(ee),await E.render({canvasContext:de.getContext("2d"),intent:"print",transform:[N,0,0,N,0,0],viewport:K}).promise,ee.getContext("2d").drawImage(de,0,0)})),U&&(v=window.document.title,window.document.title=U),(Z=C.contentWindow)==null||Z.focus(),(R=C.contentWindow)==null||R.print()}finally{v&&(window.document.title=v),A4(Q),(y=Q.parentNode)==null||y.removeChild(Q)}},m=async()=>{if(!(!a.value||l!=null&&l.isAborted))try{n.value=i.page?[i.page]:[...Array(a.value.numPages+1).keys()].slice(1),o.value=Array(n.value.length).fill(1),await Promise.all(n.value.map(async(b,U)=>{const S=await a.value.getPage(b);if(l!=null&&l.isAborted)return;const Z=((i.rotation%90===0?i.rotation:0)+S.rotate)%360,[R,y,N]=Array.from(r.value.getElementsByClassName("vue-pdf-embed__page")[U].children),w=!!(Z/90%2),Q=S.view[2]-S.view[0],C=S.view[3]-S.view[1],[v,Y]=h(w?Q/C:C/Q),J=`${Math.floor(v)}px`,k=`${Math.floor(Y)}px`,E=v/(w?C:Q),K=S.getViewport({scale:E,rotation:Z});o.value[U]=E,R.style.display="block",R.style.width=J,R.style.height=k;const de=[p(S,K.clone({scale:K.scale*window.devicePixelRatio*i.scale}),R)];return i.textLayer&&de.push(f(S,K.clone({dontFlip:!0}),y)),i.annotationLayer&&de.push(g(S,K.clone({dontFlip:!0}),N||y)),Promise.all(de)})),l!=null&&l.isAborted||t("rendered")}catch(b){n.value=[],o.value=[],l!=null&&l.isAborted||t("rendering-failed",b)}},p=async(b,U,S)=>{S.width=U.width,S.height=U.height,await b.render({canvasContext:S.getContext("2d"),viewport:U}).promise},g=async(b,U,S)=>{pbe(S),new S1t({accessibilityManager:null,annotationCanvasMap:null,annotationEditorUIManager:null,div:S,page:b,structTreeLayer:null,viewport:U}).render({annotations:await b.getAnnotations(),div:S,imageResourcesPath:i.imageResourcesPath,linkService:d.value,page:b,renderForms:!1,viewport:U})},f=async(b,U,S)=>{pbe(S),new R1t({container:S,textContentSource:await b.getTextContent(),viewport:U}).render()};return Rd(a,b=>{b&&t("loaded",b)},{immediate:!0}),Rd(()=>[a.value,i.annotationLayer,i.height,i.imageResourcesPath,i.page,i.rotation,i.scale,i.textLayer,i.width],async([b])=>{b&&(l&&(l.isAborted=!0,await l.promise),A4(r.value),l={isAborted:!1,promise:m()},await l.promise,l=null)},{immediate:!0}),Ene(()=>{A4(r.value)}),e({doc:a,download:c,print:u}),(b,U)=>(he(),$e("div",{id:b.id,ref_key:"root",ref:r,class:"vue-pdf-embed"},[(he(!0),$e(zt,null,Kt(n.value,(S,Z)=>(he(),$e("div",{key:S},[wc(b.$slots,"before-page",{page:S}),re("div",{id:b.id&&`${b.id}-${S}`,class:"vue-pdf-embed__page",style:yJ({"--scale-factor":o.value[Z],position:"relative"})},[YQt,b.textLayer?(he(),$e("div",_Qt)):An("",!0),b.annotationLayer?(he(),$e("div",zQt)):An("",!0)],12,XQt),wc(b.$slots,"after-page",{page:S})]))),128))],8,JQt))}});window!=null&&window.Vue&&(window.VuePdfEmbed=cTe,window.useVuePdfEmbed=Uwe);F4!=null&&F4.workerSrc||(F4.workerSrc=W1t);const OQt={class:"pdf-container"},jQt={__name:"index",setup(s){const e=X(new URL(""+new URL("sample-630e7c77.pdf",import.meta.url).href,self.location).href),t=X(1.5);return(i,n)=>(he(),$e("div",OQt,[M(W(cTe),{source:e.value,scale:t.value},null,8,["source","scale"])]))}},PQt=gp(jQt,[["__scopeId","data-v-f434d1b4"]]);const xM=s=>(n3("data-v-187da040"),s=s(),s3(),s),HQt={class:"common-layout"},KQt={class:"main_container padding_gg"},qQt={class:"heder_tabs"},$Qt={class:"imgzong Role"},eMt={class:"listitem lbg_color3 bkcolor3 threelist"},tMt={style:{display:"flex","align-items":"center"}},iMt=["src"],nMt={style:{display:"flex","align-items":"center"}},sMt=["src"],oMt={style:{display:"flex","align-items":"center"}},rMt=["src"],lMt={class:"listitem lbg_color3 bkcolor3"},aMt={class:"threelist"},dMt=["onClick"],cMt=["onClick"],hMt={class:"listitem lbg_color3 bkcolor3"},uMt={class:"threelist"},mMt=["onClick"],pMt=["onClick"],gMt={class:"listitem lbg_color3 bkcolor3"},fMt={class:"threelist"},bMt=["onClick"],UMt={class:"imgzong"},FMt={class:"listitem lbg_color3 bkcolor3 threelist"},AMt=["onClick"],ZMt={class:"listitem lbg_color3 bkcolor3"},SMt={class:"threelist"},NMt=["onClick"],RMt={class:"imgzong"},VMt=["onClick"],WMt={class:"item2"},yMt={class:"imgzong"},QMt=["onClick"],MMt={class:"item2"},wMt={class:"imgzong"},TMt=["onClick"],CMt={class:"item2"},BMt={class:"my-header"},LMt=["id"],vMt={class:"dialog-footer"},kMt={class:"my-header"},xMt=["id"],IMt={class:"numberinput"},EMt={class:"dialog-footer"},DMt={class:"my-header"},GMt=["id"],JMt={class:"numberinput"},XMt={class:"dialog-footer"},YMt={class:"my-header"},_Mt=["id"],zMt={class:"numberinput"},OMt={class:"dialog-footer"},jMt={class:"my-header"},PMt=["id"],HMt={class:"numberinput"},KMt={class:"dialog-footer"},qMt={class:"my-header"},$Mt=["id"],ewt={class:"numberinput"},twt={class:"dialog-footer"},iwt={class:"my-header"},nwt=["id"],swt={class:"sev_ruwu sev"},owt={class:"disflex"},rwt={class:"dialog-footer"},lwt={class:"my-header"},awt=["id"],dwt={class:"sev_ruwu"},cwt={class:"disflex"},hwt={class:"dialog-footer"},uwt={class:"my-header"},mwt=["id"],pwt={class:"numberinput lefttext"},gwt=xM(()=>re("span",null,"代理模型",-1)),fwt=xM(()=>re("span",null,"加点准则",-1)),bwt=xM(()=>re("span",null,"优化算法",-1)),Uwt={class:"dialog-footer"},Fwt={class:"my-header"},Awt=["id"],Zwt={class:"dialog-footer"},Swt={class:"my-header"},Nwt=["id"],Rwt={class:"dialog-footer"},Vwt={class:"my-header"},Wwt=["id"],ywt={class:"dialog-footer"},Qwt={class:"my-header"},Mwt=["id"],wwt={class:"dialog-footer"},Twt={class:"my-header"},Cwt=["id"],Bwt={class:"dialog-footer"},Lwt={class:"my-header"},vwt=["id"],kwt={class:"cloudbox"},xwt={style:{height:"400px",overflow:"auto"}},Iwt={class:"my-header"},Ewt=["id"],Dwt={class:"dialog-footer"},Gwt={class:"my-header"},Jwt=["id"],Xwt={class:"dialog-footer"},Ywt={class:"my-header"},_wt=["id"],zwt={class:"dialog-footer"},Owt={class:"my-header"},jwt=["id"],Pwt={class:"numberinput lefttext"},Hwt={class:"dialog-footer"},Kwt={class:"my-header"},qwt=["id"],$wt={class:"dialog-footer"},eTt={class:"my-header"},tTt=["id"],iTt={class:"dialog-footer"},nTt={class:"my-header"},sTt=["id"],oTt={class:"numberinput lefttext"},rTt={class:"dialog-footer"},lTt={class:"my-header"},aTt=["id"],dTt={class:"dialog-footer"},cTt={class:"my-header"},hTt=["id"],uTt={class:"numberinput lefttext"},mTt={class:"dialog-footer"},pTt={class:"my-header"},gTt=["id"],fTt={class:"dialog-footer"},bTt={class:"my-header"},UTt=["id"],FTt={class:"dialog-footer"},ATt={class:"my-header"},ZTt=["id"],STt={class:"dialog-footer"},NTt={class:"my-header"},RTt=["id"],VTt={class:"dialog-footer"},WTt={class:"my-header"},yTt=["id"],QTt={class:"footerp",style:{height:"525px",padding:"15px"}},MTt={class:"pythfoter"},wTt={class:"span active"},TTt=xM(()=>re("span",null,"信息栏 ",-1)),CTt={class:"dialog-footer"},BTt={class:"my-header"},LTt=["id"],vTt={style:{display:"flex","justify-content":"space-between"}},kTt={class:"dialog-footer"},xTt={class:"my-header"},ITt=["id"],ETt={class:"dialog-footer"},DTt={class:"my-header"},GTt=["id"],JTt={class:"dialog-footer"},XTt={class:"main mianflex"},YTt={class:"right_container"},_Tt={class:"main_model"},zTt={class:"jindutiao"},OTt=xM(()=>re("span",{style:{width:"150px"}},"运行进度",-1)),jTt={class:"demo-progress"},PTt={class:"main_model"},HTt={class:"maxh221"},KTt={class:"conter_mian classtable",style:{width:"100%",height:"100%"}},qTt={key:0,class:"conter_mian classtable",style:{width:"100%",height:"100%"}},$Tt={key:1,class:"conter_mian classtable conter_flex",style:{width:"100%",height:"100%"}},eCt={class:"echart_left ech"},tCt={class:"echart_right ech"},iCt={class:"conter_mian classtable echartcont"},nCt={class:"gooterpading"},sCt={class:"footerTitle el-tag--primary"},oCt=["onClick"],rCt={key:0},lCt={key:0,class:"footerTextBox"},aCt={key:1,class:"youhualog"},dCt=["onClick"],cCt={class:"footer-content"},hCt={key:0,class:"eldesign classtable"},uCt={key:1,class:"elconstraint classtable"},mCt={key:2,class:"eloptimize classtable"},pCt={class:"dibu"},gCt={class:"footer-add"},fCt={class:"sev_ruwu"},bCt={class:"disflex flexend"},UCt=xM(()=>re("div",{class:"pading_foter"},null,-1)),FCt={__name:"home",setup(s){let e=X();X(0),X("");let t=X(),i=X(`import os
- import numpy as np
- from surromdao.solver import BaseSolver
- class Branin(BaseSolver):
- def __init__(self, filename=os.path):
- super().__init__(filename)
-
- def compute(self, xdict):
- x = np.zeros(2)
- # x[0] = xdict['x1']
- # x[1] = xdict['x2']`),n=X(),o=X(),r=X(),l=X(),a=X(),d=X(),c=X(),h=X(),u=X(),m=X(),p=X(),g=X("优化问题组件"),f=X("学科分析组件"),b=X("优化器组件"),U=X([{label:"优化问题",value:"优化问题",img:"wen.png"}]),S=X([{label:"进化优化器",value:"进化优化器",icon:lFe},{label:"代理优化器",value:"代理优化器",icon:aFe},{label:"梯度优化器",value:"梯度优化器",icon:dFe}]);X(100),X(200),X([]);let Z=X({}),R=X({}),y=X({}),N=X(70),w=X(!1),Q=X(!0),C=X(!1),v=X(!1),Y=X(!1),J=X(!1),k=X(!1),E=X(!1),K=X(!1),de=X(!1),ee=X(!1),le=X(!1),Fe=X(!1),Ue=X(!1),ze=X(),Oe=X(),Ie=X(),at=X(),je=X(),Se=X(),dt=X(),Yt=X(!1);const Ye=tBe(),mt=dUe();let Wt=X(),Jt=X(null),Ae=X(),Yi=X(),ci=X(),we=X(),si=X([{label:"参数1",prop:"value1"},{label:"参数2",prop:"value2"},{label:"参数3",prop:"value3"},{label:"参数4",prop:"value4"},{label:"参数5",prop:"value5"}]);X({}),X({});let yn=X([]),bi=X([]),pe=X([{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"}]),ie=X(""),it=X(null),Ft=X({lockReconnect:!1,timeout:28*1e3,timeoutObj:null,serverTimeoutObj:null,timeoutnum:null});X(),X("");let Pe=X(""),Re=X(""),vt=X(),Ke=X(),ot=X(),Et=X();X(""),X("");let St=X(),Ht=X();X(!1);let Fi=X(!0);X("Rosenbrock"),X("one");const Dt=[{name:"信息栏",img:Zae},{name:"优化问题",img:aBe}],Ot=[{name:"设计变量",noimg:uBe,isimg:dBe},{name:"约束条件",noimg:hBe,isimg:pBe},{name:"优化目标",noimg:cBe,isimg:mBe}];X([]),X(0),X([{date:"2016-05-04",name:"Aleyna Kutzner"},{date:"2016-05-03",name:"Helen Jacobi"}]),X([{date:"2016-05-04",name:"Aleyna Kutzner",con:-1},{date:"2016-05-03",name:"Helen Jacobi",con:1}]),X([]),X(0);let nn=X([{label:"GA",value:"GA"},{label:"PSO",value:"PSO"},{label:"NSGA2",value:"NSGA2"}]);X([{data:1,name:"结构质量",con:-1},{data:23,name:"KS失效",con:1},{data:0,name:"最大变形",con:-1}]),X([{label:"设计变量",value:"设计变量"},{label:"约束条件",value:"约束条件"},{label:"目标函数",value:"目标函数"}]);let xi=X("");const Zi=X(0),Me=X(0);X(0);const ri=X(""),st=X("rgba(16, 185, 129, 0.5)");let Ve=X(!1),Nt=X("Xfoil");X([{id:1,label:"工程",children:[{id:"1-1",label:"优化问题",img:sFe},{id:"1-2",label:"分析流程",img:oFe},{id:"1-3",label:"优化器",img:rFe}]}]);let Ui=X([{label:"最大化",value:"-1"},{label:"最小化",value:"1"}]);X([{label:"升力系数",value:"升力系数"},{label:"翼型面积",value:"翼型面积"}]),X([{label:"大于",value:-1},{label:"小于",value:1}]),X([{label:"约束条件",value:-1},{label:"优化目标",value:1}]),X([]);let Ci=X(""),Mn=X(""),Si=X("");X("");const oe=X("Role");X("message");let ae=X("Role10"),ce=X(""),Ne=X(!1),Be=X(100),Le=X(170),pt=X(130),jt=X(),mi=X([{url:"kk1.png",titlie:"列表"},{url:"kk2.png",titlie:"散点图"},{url:"kk4.png",titlie:"折线图"},{url:"kk8.png",titlie:"帕雷托图"},{url:"kk3.png",titlie:"面积图"},{url:"kk5.png",titlie:"柱状图"},{url:"k3.png",titlie:"饼状图"},{url:"kk6.png",titlie:"横条图"},{url:"kk7.png",titlie:"雷达图"},{url:"kk9.png",titlie:"云图/等值线"},{url:"kk10.png",titlie:"查看报告"},{url:"kk11.png",titlie:"导出报告"}]);X([{url:"f41.png",titlie:"测试函数模板"},{url:"r1.png",titlie:"工程优化模板"},{url:"r2.png",titlie:"自定义"}]),X([{url:"t0.png",titlie:"外形参数化"}]),X([{url:"tow1.png",titlie:"优化问题组件"},{url:"tow2.png",titlie:"学科分析组件"},{url:"tow3.png",titlie:"优化器组件"}]);let Ji=X([{url:"l1.png",titlie:"逻辑流连线"},{url:"l2.png",titlie:"数据流连线"}]),xn=X([{url:"w6.png",titlie:"选择连线颜色"}]),Gn=X([{url:"cai1.png",titlie:"模块组合"},{url:"cai2.png",titlie:"模块拆分"}]),Fs=X([{url:"w9.png",titlie:"选择图框颜色"}]),As=X([{url:"w10.png",titlie:"添加注释"}]),Vr=X([{url:"you1.png",titlie:"开始"},{url:"you2.png",titlie:"暂停"},{url:"you3.png",titlie:"续算"},{url:"tts.png",titlie:"结束"}]),ir=X([{url:"yh1.png",titlie:"列表监控"},{url:"yh2.png",titlie:"曲线监控"},{url:"yh3.png",titlie:"过程监控"}]),He=X([{url:"rr2.png",titlie:"任务检索"},{url:"rr1.png",titlie:"任务管理"},{url:"rr3.png",titlie:"备份"}]),xe=X([{url:"e1.png",titlie:"用户手册"},{url:"e2.png",titlie:"帮助文档"},{url:"e3.png",titlie:"关于软件"}]),me=X([{label:"CST参数化",value:"CST参数化"},{label:"FFD参数化",value:"FFD参数化"}]),Zt=X([{label:"任务编号",value:"任务编号"},{label:"任务名称",value:"任务名称"},{label:"任务类型",value:"任务类型"},{label:"创建时间",value:"创建时间"}]),q=X("任务名称"),We=X([{label:"Kriging模型",value:"Kriging模型"},{label:"相关函数类型",value:"相关函数类型"},{label:"超参数优化方法",value:"超参数优化方法"},{label:"Hooke Jeeves方法循环次数",value:"Hooke Jeeves方法循环次数"}]),Qe=X("Kriging模型"),ke=X("固定设计空间"),ve=X("拉丁超立方"),Lt=X([{label:"固定设计空间",value:"固定设计空间"}]),li=X([{label:"拉丁超立方",value:"拉丁超立方"}]),tt=X("EI + MSP"),Ct=X([{label:"EI + MSP",value:"EI + MSP"}]),tn=X("概率相乘法"),In=X([{label:"概率相乘法",value:"概率相乘法"}]),Ki=X("SBX交叉"),Zs=X([{label:"SBX交叉",value:"SBX交叉"}]),ms=X("最佳保留策略"),ko=X("GA"),ps=X([{label:"最佳保留策略",value:"最佳保留策略"}]),$n=X("倒位变异"),sn=X([{label:"倒位变异",value:"倒位变异"}]),mr=X("1e-7"),js=X([{label:"1e-7",value:"1e-7"}]),ml=X("NO"),am=X([{label:"YES",value:"YES"},{label:"NO",value:"NO"}]),Ho=X([]),dm=X([{label:"-cl",value:"-cl"},{label:"cd",value:"cd"}]),xo=X([{url:"meshFile.png",btnname:"文件选择"},{url:"yu.png",btnname:"域"},{url:"kk9.png",btnname:"云图"},{url:"seka.png",btnname:"色卡"},{url:"dengzx.png",btnname:"等值线"}]),Ee=X({newdialog:!1,setdialog:!1,targetdialog:!1,design:!1,constraint:!1,parameter:!1,agency:!1,optimizer:!1,jboptimizer:!1,dboptimizer:!1,tboptimizer:!1,isADflow:!1,lookover:!1,exportreport:!1,Xfiol:!1,tidu:!1,CSTt:!1,ffdt:!1,XfAD:!1,cstffd:!1,Taxs:!1,enddialog:!1,addfun:!1,sufun:!1,task:!1,guanli:!1,optgroup:!1,Pythonshow:!1,MathFuncdialog:!1,listdialog:!1,scatterdialog:!1,echartLinedialog:!1,paretodialog:!1,clouddialog:!1,fsidialog:!1,flightdialog:!1});X([{label:"升阻比",value:"升阻比"},{label:"RCS",value:"RCS"}]),X([{label:"气动",value:"气动"},{label:"结构",value:"结构"},{label:"隐身",value:"隐身"},{label:"噪声",value:"噪声"}]);const nr=X([{label:"CST",value:"CST",img:"xuek0.png"},{label:"FFD",value:"FFD",img:"ffd.png"},{label:"Xfoil",value:"Xfoil",img:"xuek9.png"},{label:"ADflow",value:"ADflow",img:"ADflow.png"},{label:"TACS",value:"TACS",img:"TACS.png"},{label:"CATIA",value:"CATIA",img:"xuek1.png"},{label:"Python",value:"Python",img:"xuek8.png"},{label:"Excel",value:"Excel",img:"xuek2.png"},{label:"Feko",value:"Feko",img:"xuek3.png"},{label:"Fluent",value:"Fluent",img:"xuek4.png"},{label:"HCFD",value:"HCFD",img:"xuek5.png"},{label:"Matlab",value:"Matlab",img:"xuek6.png"},{label:"Nastran",value:"Nastran",img:"xuek7.png"},{label:"FUM to FEM",value:"FSI",img:"fsi.png"},{label:"Flight",value:"Flight",img:"flight.png"}]),pr=X([]),sr=X([]),cm=X([]),nu=X([]),o0=X("#2267B1");let Nn=X("1"),qi=X(1);const Qo=rt=>new URL(Object.assign({"../assets/img/ADflow.png":pTe,"../assets/img/Framem.png":gTe,"../assets/img/aero.png":fTe,"../assets/img/analysisParams.png":bTe,"../assets/img/baog.png":UTe,"../assets/img/cai1.png":FTe,"../assets/img/cai2.png":ATe,"../assets/img/configParams.png":ZTe,"../assets/img/csh.png":STe,"../assets/img/dengzx.png":NTe,"../assets/img/e1.png":RTe,"../assets/img/e2.png":VTe,"../assets/img/e3.png":WTe,"../assets/img/f11.png":yTe,"../assets/img/f12.png":QTe,"../assets/img/f13.png":MTe,"../assets/img/f21.png":wTe,"../assets/img/f22.png":TTe,"../assets/img/f31.png":CTe,"../assets/img/f32.png":BTe,"../assets/img/f33.png":LTe,"../assets/img/f41.png":vTe,"../assets/img/ffd.png":kTe,"../assets/img/flight1.png":xTe,"../assets/img/flight2.png":ITe,"../assets/img/flight3.png":ETe,"../assets/img/flight4.png":DTe,"../assets/img/gc.png":GTe,"../assets/img/gc1.png":JTe,"../assets/img/gc2.png":XTe,"../assets/img/gc3.png":YTe,"../assets/img/inputParams.png":_Te,"../assets/img/jia.png":zTe,"../assets/img/jian.png":OTe,"../assets/img/k1.png":jTe,"../assets/img/k2.png":PTe,"../assets/img/k3.png":HTe,"../assets/img/k4.png":KTe,"../assets/img/k5.png":qTe,"../assets/img/k6.png":$Te,"../assets/img/k7.png":eCe,"../assets/img/k8.png":tCe,"../assets/img/k9.png":iCe,"../assets/img/kk1.png":nCe,"../assets/img/kk10.png":sCe,"../assets/img/kk11.png":oCe,"../assets/img/kk2.png":rCe,"../assets/img/kk3.png":lCe,"../assets/img/kk4.png":aCe,"../assets/img/kk5.png":dCe,"../assets/img/kk6.png":cCe,"../assets/img/kk7.png":hCe,"../assets/img/kk8.png":uCe,"../assets/img/kk9.png":mCe,"../assets/img/l1.png":pCe,"../assets/img/l2.png":gCe,"../assets/img/mathfuncFx.png":fCe,"../assets/img/mathfuncX.png":bCe,"../assets/img/mathfuncY.png":UCe,"../assets/img/meshFile.png":FCe,"../assets/img/mob.png":ACe,"../assets/img/nos.png":ZCe,"../assets/img/noz.png":SCe,"../assets/img/open.png":NCe,"../assets/img/open2.png":RCe,"../assets/img/open3.png":VCe,"../assets/img/q0.png":WCe,"../assets/img/q1.png":yCe,"../assets/img/q2.png":QCe,"../assets/img/q3.png":MCe,"../assets/img/r1.png":wCe,"../assets/img/r2.png":TCe,"../assets/img/rr1.png":CCe,"../assets/img/rr2.png":BCe,"../assets/img/rr3.png":LCe,"../assets/img/s.png":vCe,"../assets/img/s0.png":kCe,"../assets/img/s1.png":xCe,"../assets/img/s2.png":ICe,"../assets/img/s3.png":ECe,"../assets/img/seka.png":DCe,"../assets/img/ss.png":GCe,"../assets/img/ss1.png":JCe,"../assets/img/ss2.png":XCe,"../assets/img/t0.png":YCe,"../assets/img/t1.png":_Ce,"../assets/img/t2.png":zCe,"../assets/img/t3.png":OCe,"../assets/img/t4.png":jCe,"../assets/img/tow1.png":PCe,"../assets/img/tow2.png":HCe,"../assets/img/tow3.png":KCe,"../assets/img/tt.png":qCe,"../assets/img/tt1.png":$Ce,"../assets/img/tt2.png":e2e,"../assets/img/tt3.png":t2e,"../assets/img/tts.png":i2e,"../assets/img/w.png":n2e,"../assets/img/w1.png":s2e,"../assets/img/w10.png":o2e,"../assets/img/w2.png":r2e,"../assets/img/w3.png":l2e,"../assets/img/w4.png":a2e,"../assets/img/w5.png":d2e,"../assets/img/w6.png":c2e,"../assets/img/w7.png":h2e,"../assets/img/w8.png":u2e,"../assets/img/w9.png":m2e,"../assets/img/wen.png":p2e,"../assets/img/xin.png":g2e,"../assets/img/xin2.png":f2e,"../assets/img/xuek0.png":b2e,"../assets/img/xuek1.png":U2e,"../assets/img/xuek10.png":F2e,"../assets/img/xuek11.png":A2e,"../assets/img/xuek12.png":Z2e,"../assets/img/xuek2.png":S2e,"../assets/img/xuek3.png":N2e,"../assets/img/xuek4.png":R2e,"../assets/img/xuek5.png":V2e,"../assets/img/xuek6.png":W2e,"../assets/img/xuek7.png":y2e,"../assets/img/xuek8.png":Q2e,"../assets/img/xuek9.png":M2e,"../assets/img/y.png":w2e,"../assets/img/y2.png":T2e,"../assets/img/yh1.png":C2e,"../assets/img/yh2.png":B2e,"../assets/img/yh3.png":L2e,"../assets/img/you1.png":v2e,"../assets/img/you2.png":k2e,"../assets/img/you3.png":x2e,"../assets/img/youh1.png":I2e,"../assets/img/youh2.png":E2e,"../assets/img/youh3.png":D2e,"../assets/img/yu.png":G2e,"../assets/img/zy.png":J2e,"../assets/img/zy2.png":X2e})[`../assets/img/${rt}`],self.location).href,mb=rt=>new URL(Object.assign({"../assets/flowimg/111.png":hUe,"../assets/flowimg/ADflow.png":uUe,"../assets/flowimg/MathFunc.png":mUe,"../assets/flowimg/TACS.png":pUe,"../assets/flowimg/aero.png":gUe,"../assets/flowimg/catia.png":fUe,"../assets/flowimg/csh.png":bUe,"../assets/flowimg/ffd.png":UUe,"../assets/flowimg/ffdFileSave.png":FUe,"../assets/flowimg/flight.png":AUe,"../assets/flowimg/fsi.png":ZUe,"../assets/flowimg/fsibackg.png":SUe,"../assets/flowimg/gc1.png":NUe,"../assets/flowimg/gc2.png":RUe,"../assets/flowimg/gc3.png":VUe,"../assets/flowimg/mob.png":WUe,"../assets/flowimg/r2.png":yUe,"../assets/flowimg/surromdao.png":QUe,"../assets/flowimg/wen.png":MUe,"../assets/flowimg/wens.png":wUe,"../assets/flowimg/x@2x.png":TUe,"../assets/flowimg/xkfx.png":CUe,"../assets/flowimg/xuek0.png":BUe,"../assets/flowimg/xuek01.png":LUe,"../assets/flowimg/xuek1.png":vUe,"../assets/flowimg/xuek10.png":kUe,"../assets/flowimg/xuek11.png":xUe,"../assets/flowimg/xuek12.png":IUe,"../assets/flowimg/xuek2.png":EUe,"../assets/flowimg/xuek3.png":DUe,"../assets/flowimg/xuek4.png":GUe,"../assets/flowimg/xuek5.png":JUe,"../assets/flowimg/xuek6.png":XUe,"../assets/flowimg/xuek7.png":YUe,"../assets/flowimg/xuek8.png":_Ue,"../assets/flowimg/xuek9.png":zUe,"../assets/flowimg/xueks1.png":OUe,"../assets/flowimg/xueks2.png":jUe,"../assets/flowimg/xueks3.png":PUe,"../assets/flowimg/xueks4.png":HUe,"../assets/flowimg/xueks5.png":KUe,"../assets/flowimg/xueks6.png":qUe,"../assets/flowimg/xueks7.png":$Ue,"../assets/flowimg/xueks8.png":eFe,"../assets/flowimg/xueks9.png":tFe,"../assets/flowimg/youhq.png":iFe,"../assets/flowimg/youhwt.png":nFe})[`../assets/flowimg/${rt}`],self.location).href;ul(()=>{setTimeout(function(){Bk(),ph(),Hr()},1500)});const Bk=()=>{Re.value=mt.query.pid,console.log(mt.query.pid)},IM=(rt,j)=>{console.log("标签页:",rt.props.name),ce.value=rt.props.name,ce.value=="User"&&Ht.value.logToObject1().then(()=>{Ye.replace({path:"/"})}),ce.value=="Role"?(Q.value=!0,console.log(11111)):(Q.value=!1,console.log(Q.value)),hA(),Lk(),ce.value=="Config"?(Yt.value=!0,RO()):Yt.value=!1},vd=rt=>{},Lk=()=>{Ee.value.newdialog=!1,Ee.value.setdialog=!1,Ee.value.targetdialog=!1,Ee.value.design=!1,Ee.value.constraint=!1,Ee.value.parameter=!1,Ee.value.agency=!1,Ee.value.addfun=!1,Ee.value.sufun=!1,Ee.value.enddialog=!1,Ee.value.task=!1,Ee.value.guanli=!1},bO=rt=>{console.log("双击",rt);const j=rt.name,oi=rt.wid;j=="优化器"?(Nt.value="代理优化器",vk(oi),Ee.value.optgroup=!0):j=="参数化"?(Nt.value="CST",UO(oi),Ee.value.cstffd=!0):j=="气动分析"?(Nt.value="Xfoil",FO(oi),Ee.value.XfAD=!0):j=="进化优化器"?(Nt.value="进化优化器",Ee.value.jboptimizer=!0,Es(()=>{a.value&&a.value.getoptimize(Re.value,oi)})):j=="代理优化器"?(Nt.value="代理优化器",Ee.value.dboptimizer=!0,Es(()=>{d.value&&d.value.getDoptimize(Re.value,oi)})):j=="梯度优化器"?(Nt.value="梯度优化器",Ee.value.tboptimizer=!0,Es(()=>{c.value&&c.value.getToptimize(Re.value,oi)})):j=="CST"?(Nt.value="CST",Ee.value.CSTt=!0,Es(()=>{n.value&&n.value.getcst(Re.value,oi)})):j=="FFD"?(Nt.value="FFD",Ee.value.ffdt=!0,Es(()=>{o.value&&o.value.getffds(Re.value,oi)})):j=="ADflow"?(Nt.value="ADflow",Ee.value.isADflow=!0,Es(()=>{l.value&&l.value.getadflow(Re.value,oi)})):j=="Xfoil"?(Ee.value.Xfiol=!0,Es(()=>{r.value&&r.value.getxfoil(Re.value,oi)})):j=="TACS"?(Ee.value.Taxs=!0,Es(()=>{p.value&&p.value.gettacs(Re.value,oi)})):j=="模版"?(Ee.value.optgroup=!0,Nt.value="代理优化器"):j=="Python"?(Ee.value.Pythonshow=!0,EM(oi)):j=="FSI"?(Ee.value.fsidialog=!0,Es(()=>{h.value&&h.value.getfsi(Re.value,oi)})):j=="Flight"?Ee.value.flightdialog=!0:j=="MathFunc"?(Ee.value.MathFuncdialog=!0,Es(()=>{m.value&&m.value.getmathfunc(Re.value,oi)})):(Ee.value.optimizer=!1,Ee.value.jboptimizer=!1,Ee.value.Xfiol=!1,Ee.value.lookover=!1,Ee.value.tidu=!1,Ee.value.CSTt=!1,Ee.value.XfAD=!1,Ee.value.cstffd=!1,Ee.value.Pythonshow=!1,Ee.value.MathFuncdialog=!1,Ee.value.fsidialog=!1,Ee.value.flightdialog=!1)},vk=rt=>{Ke.value=rt;const j={transCode:"MDO0018",pid:Re.value,wid:Ke.value},oi={transCode:"MDO0031",pid:Re.value,wid:Ke.value},Bi={transCode:"MDO0033",pid:Re.value,wid:Ke.value};Promise.all([Dn(j),Dn(oi),Dn(Bi)]).then(([pi,_i,gi])=>{console.log("1:",pi.checked),console.log("2:",_i.checked),console.log("3:",gi.checked),pi.hasOwnProperty("eid")&&(a.value.getoptimizeAssign(pi),console.log("fuz1:")),gi.hasOwnProperty("grid")&&(c.value.getToptimizeAssign(gi),console.log("fuz2:")),_i.hasOwnProperty("suid")&&(d.value.getDoptimizeAssign(_i),console.log("fuz3:")),pi.checked===1?Nt.value="进化优化器":_i.checked===1?Nt.value="代理优化器":gi.checked===1&&(Nt.value="梯度优化器"),console.log("Updated activeadf:",Nt.value)}).catch(pi=>{console.error("请求失败:",pi)})},UO=rt=>{ot.value=rt;const j={transCode:"MDO0040",pid:Re.value,wid:ot.value},oi={transCode:"MDO0043",pid:Re.value,wid:ot.value};Promise.all([Dn(j),Dn(oi)]).then(([Bi,pi])=>{console.log("1:",Bi.checked),console.log("2:",pi.checked),Bi.hasOwnProperty("cstid")?n.value.getcstAssign(Bi):pi.hasOwnProperty("ffdid")&&o.value.getffdsAssign(pi),Bi.checked===1?Nt.value="CST":pi.checked===1&&(Nt.value="FFD"),console.log("Updated activeadf:",Nt.value)}).catch(Bi=>{console.error("请求失败:",Bi)})},FO=rt=>{Et.value=rt;const j={transCode:"MDO0046",pid:Re.value,wid:Et.value},oi={transCode:"MDO0049",pid:Re.value,wid:Et.value};Promise.all([Dn(j),Dn(oi)]).then(([Bi,pi])=>{console.log("1:",Bi.checked),console.log("2:",pi.checked),Bi.hasOwnProperty("xfid")?r.value.getxfoilAssign(Bi):pi.hasOwnProperty("adid")&&l.value.getadflowAssign(pi),Bi.checked===1?Nt.value="Xfoil":pi.checked===1&&(Nt.value="ADflow"),console.log("Updated activeadf:",Nt.value)}).catch(Bi=>{console.error("请求失败:",Bi)})},EM=rt=>{console.log("Pythonchushihua"),vt.value=rt;const j={transCode:"MDO0036",pid:Re.value,wid:vt.value};Dn(j).then(oi=>{console.log("Python:",oi),oi.ptython&&(i.value=oi.ptython)}).catch(oi=>{console.error("Python内容初始化失败")})},AO=()=>{console.log("Python确认按钮提交");const rt={transCode:"MDO0037",pid:Re.value,wid:vt.value,python:i.value};Dn(rt).then(j=>{vi({message:"保存成功",type:"success"})}).catch(j=>{vi.error("保存失败")})},ZO=rt=>{console.log("Editor content changed in parent component:",rt)};let DM=X("ture");const SO=rt=>{rt=="1"?DM.value=!1:DM.value=!0},kd=(rt,j,oi,Bi)=>{ce.value=Bi,(oi==="Role10"||oi==="Role11")&&(ae.value=oi),NO()},NO=()=>{switch(ce.value){case"新建任务":Ee.value.newdialog=!0;break;case"问题设定":Ee.value.setdialog=!0;break;case"优化目标":Ee.value.targetdialog=!0;break;case"设计变量":Ee.value.design=!0;break;case"约束条件":Ee.value.constraint=!0;break;case"外形参数化":Ee.value.parameter=!0;break;case"代理模型":Ee.value.agency=!0;break;case"加点方法":Ee.value.addfun=!0;break;case"优化算法":Ee.value.sufun=!0;break;case"终止条件":Ee.value.enddialog=!0;break;case"任务管理":Ee.value.task=!0;break;case"任务检索":Ee.value.guanli=!0;break;case"选择连线颜色":Ve.value=!0;break;case"逻辑流连线":Ht.value.linestrokeWidth("process");break;case"数据流连线":Ht.value.linestrokeWidth("data");break;case"模块组合":Ht.value.bgcolorfunc(st.value),Ht.value.onSelection();break;case"开始":GM();break;case"列表监控":hA(),XM();break;case"曲线监控":hA(),kk();break;case"过程监控":hA(),xk(),YM();break;case"列表":su(),Ee.value.listdialog=!0,Es(()=>{_M()});break;case"面积图":su();break;case"饼状图":su();break;case"柱状图":su();break;case"折线图":Ee.value.echartLinedialog=!0,su(),Es(()=>{_M()});break;case"散点图":Ee.value.scatterdialog=!0,su(),Es(()=>{_M()});break;case"横条图":su();break;case"雷达图":su();break;case"帕雷托图":Ee.value.paretodialog=!0,su();break;case"云图/等值线":Ee.value.clouddialog=!0;break;case"查看报告":su(),Ee.value.lookover=!0;break;case"导出报告":Ee.value.exportreport=!0;break}},su=()=>{switch(ce.value){case"列表":J.value=!0,k.value=!1,de.value=!1,E.value=!1,K.value=!1,le.value=!1,ee.value=!1,Fe=!1,Ue=!1;break;case"面积图":J.value=!1,k.value=!0,de.value=!1,E.value=!1,K.value=!1,le.value=!1,ee.value=!1,Fe=!1,Ue=!1;break;case"柱状图":J.value=!1,k.value=!1,de.value=!0,E.value=!1,K.value=!1,le.value=!1,ee.value=!1,Fe=!1,Ue=!1;break;case"饼状图":J.value=!1,k.value=!1,de.value=!1,E.value=!1,K.value=!1,le.value=!1,ee.value=!1,Fe=!0,Ue=!1;break;case"折线图":J.value=!1,k.value=!1,de.value=!1,E.value=!0,K.value=!1,le.value=!1,ee.value=!1,Fe=!1,Ue=!1;break;case"散点图":J.value=!1,k.value=!1,de.value=!1,E.value=!1,K.value=!1,le.value=!1,ee.value=!0,Fe=!1,Ue=!1;break;case"横条图":J.value=!1,k.value=!1,de.value=!1,E.value=!1,K.value=!0,le.value=!1,ee.value=!1,Fe=!1,Ue=!1;break;case"雷达图":J.value=!1,k.value=!1,de.value=!1,E.value=!1,K.value=!1,le.value=!0,ee.value=!1,Fe=!1,Ue=!1;break;case"帕雷托图":J.value=!1,k.value=!1,de.value=!1,E.value=!1,K.value=!1,le.value=!1,ee.value=!1,Fe=!1,Ue=!0;break;default:J.value=!1,k.value=!1,de.value=!1,E.value=!1,K.value=!1,le.value=!1,ee.value=!1,Fe=!1,Ue=!1;break}},hA=()=>{oe.value=="Three"&&ce.value=="列表监控"||oe.value=="Three"&&ce.value=="开始"?C.value=!0:C.value=!1,oe.value=="Three"&&ce.value=="曲线监控"?v.value=!0:v.value=!1,oe.value=="Three"&&ce.value=="过程监控"?Y.value=!0:Y.value=!1},GM=()=>{v.value?Ae.value.echatinit():Y.value&&(Yi.value.echatinit(),ci.value.echatinit());const rt={transCode:"MDO0039",pid:Re.value};Dn(rt).then(j=>{Pe.value="",bi.value=[],yn.value=[],pe.value=[],si.value=[],vi({message:"开始运行",type:"success"})}).catch(j=>{vi.error("运行失败")})},JM=X(0),XM=()=>{const rt={transCode:"MDO0021",pid:Re.value,type:1};Dn(rt).then(j=>{pe.value=[],JM.value++,j.rows&&j.rows.length>0&&j.rows.forEach(oi=>{const{vars:Bi,vals:pi}=oi;pl(Bi,pi)})}).catch(j=>{vi.error(j.returnMsg)})},kk=()=>{const rt={transCode:"MDO0021",pid:Re.value,type:1};Dn(rt).then(j=>{ie.value=JSON.stringify(j.rows),Ae.value.getshuju(ie.value)}).catch(j=>{vi.error(j.returnMsg)})},xk=()=>{const rt={transCode:"MDO0021",pid:Re.value,type:2};Dn(rt).then(j=>{j.rows&&j.rows.length>0&&(ie.value=JSON.stringify(j.rows),Yi.value.getshuju(ie.value))}).catch(j=>{vi.error(j.returnMsg)})},YM=()=>{const rt={transCode:"MDO0021",pid:Re.value,type:3};Dn(rt).then(j=>{j.rows&&j.rows.length>0&&(ie.value=JSON.stringify(j.rows),ci.value.getshuju(ie.value))}).catch(j=>{vi.error(j.returnMsg)})},RO=()=>{const rt={transCode:"MDO0021",pid:Re.value,type:1};Dn(rt).then(j=>{j.rows&&j.rows.length>0&&(mh.value=[],ed.value=[],j.rows.forEach(oi=>{const{vars:Bi,vals:pi}=oi;Ik(Bi,pi)})),console.log("表格数据:",mh.value),console.log("表头数据:",ed.value)}).catch(j=>{vi.error(j.returnMsg)})},_M=()=>{Gr.emit("update:datatotableheader",ed.value),Gr.emit("update:datatotabledata",mh.value)};let ed=X([]),mh=X([]);const Ik=(rt,j)=>{console.log("表格更新");let oi=rt.split(" "),Bi=j.split(" "),pi={},_i=[];oi.forEach((gi,Io)=>{let Xn=Bi[Io];if(Xn.startsWith("[")&&Xn.endsWith("]"))try{JSON.parse(Xn).forEach((ue,Ce)=>{let Xe=`${gi}_${Ce+1}`;pi[Xe]=ue,(ed.value.length===0||!ed.value.some(ft=>ft.prop===Xe))&&_i.push({label:Xe,prop:Xe})})}catch{pi[gi]=Xn}else pi[gi]=Xn!==void 0?Xn:"",(ed.value.length===0||!ed.value.some(on=>on.prop===gi))&&_i.push({label:gi,prop:gi})}),ed.value.length===0?ed.value=_i:_i.forEach(gi=>{ed.value.some(Io=>Io.prop===gi.prop)||ed.value.push(gi)}),mh.value.push(pi)};let pb=X([]),uA=X([]);const zM=(rt,j)=>{rt==="listcbval"?(pb.value=j,console.log("listcbval:",pb.value)):rt==="listcbval2"&&(uA.value=j,console.log("listcbval2:",uA.value))},OM=()=>{console.log("确认:",ce.value),ce.value==="散点图"?dt.value.selectshuju(pb.value,uA.value,ed.value,mh.value):ce.value==="折线图"?Oe.value.selectshuju(pb.value,uA.value,ed.value,mh.value):ce.value==="列表"&&Wt.value.selectshuju(uA.value)},V=rt=>{console.log("color change:",Ht.value),Ht.value.changeAllEdgesColor(ri.value)},T=rt=>{Ht.value.bgcolorfunc(st.value)},L=rt=>{console.log(111),Ee.value.newdialog=!1,rt()},G=()=>{let rt=Number(St.value)>1?Number(St.value):1;if(Me.value==0)for(let j=0;j<rt;j++)cm.value.push({name:`x${j+1}`,upper:null,lower:null,reference:null,remark:""});else if(Me.value==1)for(let j=0;j<rt;j++)sr.value.push({name:`g${j+1}`,con:-1,reference:null,upper:0,lower:0});else if(Me.value==2)for(let j=0;j<rt;j++)pr.value.push({name:`c${j+1}`,optdir:"1",weight:0,scaling:0,factor:0,reference:null,remark:""})},P=rt=>{Zi.value=rt,Zi.value==0||Zi.value==1&&se()},H=rt=>{Me.value=rt,Me.value==0?se():Me.value==1?ye():Me.value==2&&Ze()},se=()=>{const rt={transCode:"MDO0022",pid:Re.value};Dn(rt).then(j=>{if(j.rows.length!==0){let oi={id:"1-1-1",label:"设计变量",img:lBe,children:[]},pi=e.value.datatree[0].children[0].children.find(gi=>gi.id===oi.id);console.log(pi),pi||e.value.datatree[0].children[0].children.push(oi);let _i=e.value.datatree[0].children[0].children;e.value.datatree[0].children[0].children.forEach((gi,Io)=>{gi.label=="设计变量"&&(e.value.datatree[0].children[0].children[Io].children=[])}),j.rows=j.rows.map((gi,Io)=>(gi.lower=gi.lower??"none",gi.upper=gi.upper??"none",gi.reference=gi.reference??"none",gi.name=gi.name??"none",gi.remark=gi.remark??"none",Z.value={id:"1-1-1-"+Io,label:gi.name,img:MO},_i.forEach((Xn,on)=>{Xn.label=="设计变量"&&e.value.datatree[0].children[0].children[on].children.push(Z.value)}),gi)),cm.value=j.rows}}).catch(j=>{vi.error(j.returnMsg)})},ye=()=>{const rt={transCode:"MDO0023",pid:Re.value};Dn(rt).then(j=>{if(j.rows.length!==0){let oi={id:"1-2-2",label:"约束条件",img:nBe,children:[]};e.value.datatree[0].children[0].children.find(gi=>gi.id===oi.id)||e.value.datatree[0].children[0].children.push(oi),e.value.datatree[0].children[0].children.forEach((gi,Io)=>{gi.label=="约束条件"&&(e.value.datatree[0].children[0].children[Io].children=[])});let _i=e.value.datatree[0].children[0].children;j.rows=j.rows.map((gi,Io)=>(gi.con=gi.con??"none",gi.reference=gi.reference??"none",gi.upper=gi.upper??"none",gi.lower=gi.lower??"none",console.log("item:",gi),R.value={id:"1-2-2-"+Io,label:gi.name,img:MO},_i.forEach((Xn,on)=>{Xn.label=="约束条件"&&e.value.datatree[0].children[0].children[on].children.push(R.value)}),gi)),sr.value=j.rows}}).catch(j=>{vi.error(j.returnMsg)})},Ze=()=>{const rt={transCode:"MDO0024",pid:Re.value};Dn(rt).then(j=>{if(j.rows.length!==0){let oi={id:"1-3-3",label:"目标函数",img:Y2e,children:[]};e.value.datatree[0].children[0].children.find(gi=>gi.id===oi.id)||e.value.datatree[0].children[0].children.push(oi),e.value.datatree[0].children[0].children.forEach((gi,Io)=>{gi.label=="目标函数"&&(e.value.datatree[0].children[0].children[Io].children=[])});let _i=e.value.datatree[0].children[0].children;j.rows=j.rows.map((gi,Io)=>(gi.optdir=gi.optdir??"none",gi.weight=gi.weight??"none",gi.scaling=gi.scaling??"none",gi.factor=gi.factor??"none",gi.reference=gi.reference??"none",gi.remark=gi.remark??"none",gi.name=gi.name??"none",y.value={id:"1-3-3-"+Io,label:gi.name,img:MO},_i.forEach((Xn,on)=>{Xn.label=="目标函数"&&e.value.datatree[0].children[0].children[on].children.push(y.value)}),gi)),pr.value=j.rows}}).catch(j=>{vi.error(j.returnMsg)})},_e=(rt,j)=>(console.log("Data:",j),rt=j.map(oi=>{const Bi=oi.vid||" ",pi=oi.name||" ",_i=oi.upper??" ",gi=oi.lower??" ",Io=oi.reference??" ",Xn=oi.remark||" ";return`${Bi},${pi},${_i},${gi},${Io},${Xn}`}).join(";"),rt),Rt=(rt,j)=>(console.log("Data:",j),rt=j.map(oi=>{const Bi=oi.conid||" ",pi=oi.name||" ",_i=oi.upper??" ",gi=oi.lower??" ",Io=oi.reference??" ";return`${Bi},${pi},${Io},${_i},${gi}`}).join(";"),rt),Bt=(rt,j)=>(console.log("Data:",j),rt=j.map(oi=>{const Bi=oi.fid||" ",pi=oi.name||" ",_i=oi.optdir??" ",gi=oi.weight??" ",Io=oi.reference??" ",Xn=oi.remark||" ";return`${Bi},${pi},${_i},${gi},${Io},${Xn}`}).join(";"),rt),ht=()=>{console.log(Me.value),Me.value==0?(Ci.value="",console.log("designtable:",cm.value),Ci.value=_e(Ci.value,cm.value),qt()):Me.value==1?(Mn.value="",console.log("tabledata:",sr.value),Mn.value=Rt(Mn.value,sr.value),Jn()):Me.value==2&&(Si.value="",console.log("eloptimize:",pr.value),Si.value=Bt(Si.value,pr.value),Bs())},qt=()=>{const rt={transCode:"MDO0054",pid:Re.value,vartr:Ci.value};Dn(rt).then(j=>{vi({message:"设计变量保存成功",type:"success"}),se()}).catch(j=>{vi.error("设计变量保存失败")})},Jn=()=>{const rt={transCode:"MDO0055",pid:Re.value,vartr:Mn.value};Dn(rt).then(j=>{vi({message:"约束条件保存成功",type:"success"}),ye()}).catch(j=>{vi.error("约束条件保存失败")})},Bs=()=>{const rt={transCode:"MDO0056",pid:Re.value,vartr:Si.value};Dn(rt).then(j=>{vi({message:"优化目标保存成功",type:"success"}),Ze()}).catch(j=>{vi.error("优化目标保存失败")})};function ss(rt,j){console.log("表格更新");let oi=rt.split(" ");si.value=oi.map(pi=>({label:pi,prop:pi}));let Bi={};oi.forEach((pi,_i)=>{Bi[pi]=j[_i]!==void 0?j[_i]:""}),pe.value.push(Bi)}const pl=(rt,j)=>{console.log("表格更新");let oi=rt.split(" ");si.value=oi.map(_i=>({label:_i,prop:_i}));let Bi=j.split(" "),pi={};oi.forEach((_i,gi)=>{pi[_i]=Bi[gi]!==void 0?Bi[gi]:""}),pe.value.push(pi)},Hr=()=>{const rt={transCode:"MDO0025",pid:Re.value};Dn(rt).then(j=>{console.log("日志接口赋值"),Pe.value=j.logs.split(`
- `).filter(Bi=>Bi.trim()!=="").join(`
- `);const oi=ou(Pe.value);for(let Bi=0;Bi<oi.length;Bi++){bi.value.push(oi[Bi]);let pi=oi[Bi].vals.split(" ");ss(pi);let _i=[];_i.push(oi[Bi]),Ae.value.getsockechart(_i),Yi.value.getsockechart(_i),ci.value.getsockechart(_i)}}).catch(j=>{vi.error(j.returnMsg)})};function ou(rt){const j=/\{[^}]+\}/g,oi=rt.match(j);return oi?oi.map(Bi=>{try{return JSON.parse(Bi)}catch{return console.error("Failed to parse object:",Bi),null}}).filter(Boolean):[]}function ph(){const rt="wss://www.adicn.com/airoptwebsocket?projectId="+Re.value;it=new WebSocket(rt),it.onopen=Ss,it.onmessage=r0,it.onerror=xs,it.onclose=gr}const Ss=rt=>{console.log("WebSocket连接成功",rt),console.log(),gh()},r0=rt=>{if(bi.value=[],rt.data.indexOf("{")!==-1){w.value=!0,console.log("websocket接受消息:",rt.data);let j=JSON.parse(rt.data),oi=Number(j.step);j.type===1&&(N.value=Math.round(oi/30*100)),console.log("进度:",N.value),Jt.value=rt.data,bi.value.push(j),console.log("tabactive:",ce.value),C.value&&j.type===1?(console.log("列表监控"),pl(j.vars,j.vals)):v.value&&j.type===1?Ae.value.getsockechart(bi.value):Y.value&&j.type===2?Yi.value.getsockechart(bi.value):Y.value&&j.type===3&&ci.value.getsockechart(bi.value)}else if(rt.data.indexOf("——成功")!==-1&&setTimeout(function(){w.value=!1,console.log("关闭定时器")},1e4),rt.data.indexOf("msg=heartChec")==-1){const j=rt.data.split(`
- `).filter(Bi=>Bi.trim()!=="").join(`
- `);Pe.value=Pe.value+`
- `+j;let oi=document.getElementById("textarea_id");oi.scrollTop=oi.scrollHeight}jM()},xs=rt=>{console.log("连接错误",rt),it.close(),gb()},gr=rt=>{console.log("断开连接",rt)},gb=()=>{Ft.value.lockReconnect||(Ft.value.lockReconnect=!0,Ft.value.timeoutnum&&clearTimeout(Ft.value.timeoutnum),Ft.value.timeoutnum=setTimeout(function(){ph(),Ft.value.lockReconnect=!1},1e4))},jM=()=>{clearTimeout(Ft.value.timeoutObj),clearTimeout(Ft.value.serverTimeoutObj),gh()},gh=()=>{Ft.value.timeoutObj&&clearTimeout(Ft.value.timeoutObj),Ft.value.serverTimeoutObj&&clearTimeout(Ft.value.serverTimeoutObj),Ft.value.timeoutObj=setTimeout(function(){it.readyState==1?it.send("heartCheck"):gb(),Ft.value.serverTimeoutObj=setTimeout(function(){it.close()},Ft.value.timeout)},Ft.value.timeout)},mA=rt=>{rt=="claer"?Pe.value="":Fi.value=!Fi.value},ru=(rt,j)=>{console.log("表单切换",rt.props.label),Nt.value=rt.props.label,rt.props.name==="进化优化器"?Es(()=>{a.value&&a.value.getoptimize(Re.value,Ke.value)}):rt.props.name==="代理优化器"?Es(()=>{d.value&&d.value.getDoptimize(Re.value,Ke.value)}):rt.props.name==="梯度优化器"&&Es(()=>{c.value&&c.value.getToptimize(Re.value,Ke.value)})},hm=rt=>{a.value&&typeof a.value.getaddsave=="function"&&(rt?a.value.getaddsave(Re.value,rt):a.value.getaddsave(Re.value))},um=rt=>{d.value&&typeof d.value.getaddDsave=="function"&&(rt?d.value.getaddDsave(Re.value,rt):d.value.getaddDsave(Re.value))},xd=rt=>{c.value&&typeof c.value.getaddTsave=="function"&&(rt?c.value.getaddTsave(Re.value,rt):c.value.getaddTsave(Re.value))},PM=rt=>{rt=="进化优化器"?hm(Ke.value):rt=="代理优化器"?um(Ke.value):rt=="梯度优化器"&&xd(Ke.value)},mm=(rt,j)=>{console.log("表单切换",rt.props.label),Nt.value=rt.props.label,rt.props.name==="CST"?Es(()=>{n.value&&n.value.getcst(Re.value,ot.value)}):rt.props.name==="FFD"&&Es(()=>{o.value&&o.value.getffds(Re.value,ot.value)})},lu=rt=>{n.value&&(rt?n.value.getcstsave(Re.value,rt):n.value.getcstsave(Re.value)),Ee.value.CSTt=!1},Ek=rt=>{o.value&&(rt?o.value.getffdsave(Re.value,rt):o.value.getffdsave(Re.value)),Ee.value.ffdt=!1},VO=rt=>{rt=="CST"?lu(ot.value):rt=="FFD"&&Ek(ot.value)},WO=(rt,j)=>{console.log("表单切换",rt.props.label),Nt.value=rt.props.label,rt.props.name==="Xfoil"?Es(()=>{r.value&&r.value.getxfoil(Re.value,Et.value)}):rt.props.name==="ADflow"&&Es(()=>{l.value&&l.value.getadflow(Re.value,Et.value)})},co=rt=>{r.value&&(rt?r.value.getxfoilsave(Re.value,rt):r.value.getxfoilsave(Re.value))},pA=rt=>{l.value&&(rt?l.value.getadflowsave(Re.value,rt):l.value.getadflowsave(Re.value))},fh=rt=>{rt=="Xfoil"?co(Et.value):rt=="ADflow"&&pA(Et.value)},fb=()=>{h.value&&h.value.getfsisave(Re.value)},yO=()=>{m.value&&m.value.mathfuncnew()},QO=()=>{m.value&&m.value.getmathfuncsave(Re.value)},Dk=()=>{p.value&&p.value.gettacssave(Re.value)};let Ll=X(!1),Id=X({fileselect:!1,domain:!1,cloud:!1,colorchart:!1,isoline:!1}),Ed=X("");const Gk=rt=>{switch(Id.value.fileselect=!1,Id.value.domain=!1,Id.value.cloud=!1,Id.value.colorchart=!1,Id.value.isoline=!1,rt){case"文件选择":Id.value.fileselect=!0,Ed.value="文件选择";break;case"域":Id.value.domain=!0,Ed.value="域";break;case"云图":Id.value.cloud=!0,Ed.value="云图";break;case"色卡":Id.value.colorchart=!0,Ed.value="色卡";break;case"等值线":Id.value.isoline=!0,Ed.value="等值线";break}Ll.value=!0},gA=({columnIndex:rt})=>{if(rt===0)return"";let j=rt-1,oi=si.value.length,Bi=Math.ceil(oi/3);return j<Bi?"header-first":j<Bi*2?"header-second":"header-third"};return(rt,j)=>{const oi=At("el-header"),Bi=At("el-tab-pane"),pi=At("el-image"),_i=At("el-option"),gi=At("el-color-picker"),Io=At("el-tabs"),Xn=At("el-input"),on=At("el-form-item"),ue=At("el-form"),Ce=At("el-input-number"),Xe=At("el-table-column"),ft=At("el-table"),wt=At("el-checkbox"),hi=At("el-checkbox-group"),Wi=At("el-card"),Xi=At("el-col"),Qi=At("el-row"),gs=At("el-progress"),wn=At("el-divider"),Yn=At("el-footer"),fs=At("el-main"),bn=At("el-container");return he(),$e("div",HQt,[M(bn,null,{default:B(()=>[M(oi,null,{default:B(()=>[M(iBe)]),_:1}),M(fs,null,{default:B(()=>[re("div",KQt,[re("div",qQt,[M(Io,{modelValue:oe.value,"onUpdate:modelValue":j[10]||(j[10]=x=>oe.value=x),type:"card",class:"demo-tabs",onTabClick:IM},{default:B(()=>[M(Bi,{label:"首页",name:"User"}),M(Bi,{label:"问题设定",name:"Role"},{default:B(()=>[re("div",$Qt,[re("div",eMt,[re("div",{class:"item2 margr",onClick:j[1]||(j[1]=x=>kd(x,rt.index,"Role-2",W(b)))},[M(pi,{src:Qo("tow1.png"),fit:"cover"},null,8,["src"]),re("span",null,bs(W(g)),1),M(W(ln),{modelValue:W(g),"onUpdate:modelValue":j[0]||(j[0]=x=>Xt(g)?g.value=x:g=x),class:"no-border headersele","suffix-icon":W(Ln)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(U),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},{default:B(()=>[re("div",tMt,[re("img",{src:mb(x.img),style:{width:"20px",height:"20px","margin-right":"10px"}},null,8,iMt),re("span",null,bs(x.label),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),re("div",{class:"item2 margr",onClick:j[3]||(j[3]=x=>kd(x,rt.index,"Role-1",W(f)))},[M(pi,{src:Qo("tow2.png"),fit:"cover"},null,8,["src"]),re("span",null,bs(W(f)),1),M(W(ln),{modelValue:W(f),"onUpdate:modelValue":j[2]||(j[2]=x=>Xt(f)?f.value=x:f=x),class:"no-border headersele","suffix-icon":W(Ln)},{default:B(()=>[(he(!0),$e(zt,null,Kt(nr.value,x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},{default:B(()=>[re("div",nMt,[re("img",{src:mb(x.img),style:{width:"20px",height:"20px","margin-right":"10px"}},null,8,sMt),re("span",null,bs(x.label),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),re("div",{class:"item2 margr",onClick:j[5]||(j[5]=x=>kd(x,rt.index,"Role-2",W(b)))},[M(pi,{src:Qo("tow3.png"),fit:"cover"},null,8,["src"]),re("span",null,bs(W(b)),1),M(W(ln),{modelValue:W(b),"onUpdate:modelValue":j[4]||(j[4]=x=>Xt(b)?b.value=x:b=x),class:"no-border headersele","suffix-icon":W(Ln)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(S),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},{default:B(()=>[re("div",oMt,[re("img",{src:x.icon,style:{width:"20px",height:"20px","margin-right":"10px"}},null,8,rMt),re("span",null,bs(x.label),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])])]),re("div",lMt,[re("div",aMt,[(he(!0),$e(zt,null,Kt(W(Ji),(x,qe)=>(he(),$e("div",{class:gn(["item2 floatitem wentsd",{activeOrange:W(ae)=="Role1"+qe}]),key:"Role1"+qe,onClick:jn=>kd(jn,qe,"Role1"+qe,x.titlie)},[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)],10,dMt))),128)),(he(!0),$e(zt,null,Kt(W(xn),(x,qe)=>(he(),$e("div",{class:gn(["item2 floatitem wentsd",{activeOrange:W(ae)=="Role11"+qe}]),key:"Role11"+qe,onClick:jn=>kd(jn,qe,"Role11"+qe,x.titlie)},[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),M(gi,{modelValue:ri.value,"onUpdate:modelValue":j[6]||(j[6]=jn=>ri.value=jn),onChange:j[7]||(j[7]=jn=>V()),class:gn({"is-show-panel":W(Ve)})},null,8,["modelValue","class"]),re("span",null,bs(x.titlie),1)],10,cMt))),128))])]),re("div",hMt,[re("div",uMt,[(he(!0),$e(zt,null,Kt(W(Gn),(x,qe)=>(he(),$e("div",{class:gn(["item2 floatitem wentsd",{activeOrange:W(ae)=="Role2"+qe}]),key:"Role2"+qe,onClick:jn=>kd(jn,qe,"Role2"+qe,x.titlie)},[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)],10,mMt))),128)),(he(!0),$e(zt,null,Kt(W(Fs),(x,qe)=>(he(),$e("div",{class:gn(["item2 floatitem wentsd",{activeOrange:W(ae)=="Role22"+qe}]),key:"Role22"+qe,onClick:jn=>kd(jn,qe,"Role22"+qe,x.titlie)},[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),M(gi,{modelValue:st.value,"onUpdate:modelValue":j[8]||(j[8]=jn=>st.value=jn),"color-format":"rgba","show-alpha":"",onChange:j[9]||(j[9]=jn=>T()),class:gn({"is-show-panel":W(Ve)})},null,8,["modelValue","class"]),re("span",null,bs(x.titlie),1)],10,pMt))),128))])]),re("div",gMt,[re("div",fMt,[(he(!0),$e(zt,null,Kt(W(As),(x,qe)=>(he(),$e("div",{class:gn(["item2 floatitem wentsd",{activeOrange:W(ae)=="Role3"+qe}]),key:"Role3"+qe,onClick:jn=>kd(jn,qe,"Role3"+qe,x.titlie)},[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)],10,bMt))),128))])])])]),_:1}),M(Bi,{label:"优化运行",name:"Three"},{default:B(()=>[re("div",UMt,[re("div",FMt,[(he(!0),$e(zt,null,Kt(W(Vr),(x,qe)=>(he(),$e("div",{class:gn(["item2 floatitem",{activeOrange:W(ae)=="Three-"+qe}]),key:"Three-"+qe,onClick:jn=>kd(jn,qe,"Three-"+qe,x.titlie)},[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)],10,AMt))),128))]),re("div",ZMt,[re("div",SMt,[(he(!0),$e(zt,null,Kt(W(ir),(x,qe)=>(he(),$e("div",{class:gn(["item2 floatitem wentsd1",{activeOrange:W(ae)=="Three1"+qe}]),key:"Three1"+qe,onClick:jn=>kd(jn,qe,"Three1"+qe,x.titlie)},[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)],10,NMt))),128))])])])]),_:1}),M(Bi,{label:"可视化",name:"Config"},{default:B(()=>[re("div",RMt,[(he(!0),$e(zt,null,Kt(W(mi),(x,qe)=>(he(),$e("div",{class:gn(["listitem lbg_color3 bkcolor3 threelist",{activeOrange:W(ae)=="Config-"+qe}]),key:"Config-"+qe,onClick:jn=>kd(jn,qe,"Config-"+qe,x.titlie)},[re("div",WMt,[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)])],10,VMt))),128))])]),_:1}),M(Bi,{label:"数据库管理",name:"Seven"},{default:B(()=>[re("div",yMt,[(he(!0),$e(zt,null,Kt(W(He),(x,qe)=>(he(),$e("div",{class:gn(["listitem lbg_color3 bkcolor3 threelist",{activeOrange:W(ae)=="Seven"+qe}]),key:"Seven"+qe,onClick:jn=>kd(jn,qe,"Seven"+qe,x.titlie)},[re("div",MMt,[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)])],10,QMt))),128))])]),_:1}),M(Bi,{label:"帮助",name:"eight"},{default:B(()=>[re("div",wMt,[(he(!0),$e(zt,null,Kt(W(xe),(x,qe)=>(he(),$e("div",{class:gn(["listitem lbg_color3 bkcolor3 threelist",{activeOrange:W(ae)=="eight"+qe}]),key:"eight"+qe,onClick:jn=>kd(jn,qe,"eight"+qe,x.titlie)},[re("div",CMt,[M(pi,{src:Qo(x.url),fit:"cover"},null,8,["src"]),re("span",null,bs(x.titlie),1)])],10,TMt))),128))])]),_:1})]),_:1},8,["modelValue"])]),W(ce)=="新建任务"?(he(),It(W(Is),{key:0,modelValue:W(Ee).newdialog,"onUpdate:modelValue":j[17]||(j[17]=x=>W(Ee).newdialog=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"480",class:"dialog_class bgcolor tianjia"},{header:B(({titleId:x,titleClass:qe})=>[re("div",BMt,[M(pi,{src:Qo("s0.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"新建任务",10,LMt)])]),footer:B(()=>[re("div",vMt,[M(W(Ai),{onClick:j[15]||(j[15]=x=>W(Ee).newdialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[16]||(j[16]=x=>W(Ee).newdialog=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",null,[M(ue,null,{default:B(()=>[M(on,{label:"任务编号:","label-width":W(Be)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[11]||(j[11]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"任务名称:","label-width":W(Be)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[12]||(j[12]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"任务类型:","label-width":W(Be)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[13]||(j[13]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"备注:","label-width":W(Be)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[14]||(j[14]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",type:"textarea",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):An("",!0),W(ce)=="问题设定"?(he(),It(W(Is),{key:1,modelValue:W(Ee).setdialog,"onUpdate:modelValue":j[23]||(j[23]=x=>W(Ee).setdialog=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"480",class:"dialog_class bgcolor tianjia"},{header:B(({titleId:x,titleClass:qe})=>[re("div",kMt,[M(pi,{src:Qo("q0.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"问题设定",10,xMt)])]),footer:B(()=>[re("div",EMt,[M(W(Ai),{onClick:j[21]||(j[21]=x=>W(Ee).setdialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[22]||(j[22]=x=>W(Ee).setdialog=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",IMt,[M(ue,null,{default:B(()=>[M(on,{label:"目标函数个数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[18]||(j[18]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"建立代理模型约束个数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[19]||(j[19]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"不建立代理模型约束个数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[20]||(j[20]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):An("",!0),W(ce)=="Task-11"?(he(),It(W(Is),{key:2,modelValue:W(Ee).parameter,"onUpdate:modelValue":j[27]||(j[27]=x=>W(Ee).parameter=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"480",class:"dialog_class bgcolor tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",DMt,[M(pi,{src:Qo("t0.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"外形参数化",10,GMt)])]),footer:B(()=>[re("div",XMt,[M(W(Ai),{onClick:j[25]||(j[25]=x=>W(Ee).parameter=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[26]||(j[26]=x=>W(Ee).parameter=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",JMt,[M(ue,null,{default:B(()=>[M(on,{label:"参数化方法:","label-width":W(Be)},{default:B(()=>[M(W(ln),{modelValue:W(jt),"onUpdate:modelValue":j[24]||(j[24]=x=>Xt(jt)?jt.value=x:jt=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(me),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):An("",!0),W(ce)=="代理模型"?(he(),It(W(Is),{key:3,modelValue:W(Ee).agency,"onUpdate:modelValue":j[34]||(j[34]=x=>W(Ee).agency=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"480",class:"dialog_class bgcolor tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",YMt,[M(pi,{src:Qo("t2.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"代理模型",10,_Mt)])]),footer:B(()=>[re("div",OMt,[M(W(Ai),{onClick:j[32]||(j[32]=x=>W(Ee).agency=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[33]||(j[33]=x=>W(Ee).agency=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",zMt,[M(ue,null,{default:B(()=>[M(on,{label:"代理模型类型:","label-width":W(pt)},{default:B(()=>[M(W(ln),{modelValue:W(Qe),"onUpdate:modelValue":j[28]||(j[28]=x=>Xt(Qe)?Qe.value=x:Qe=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(We),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"设计空间类型:","label-width":W(pt)},{default:B(()=>[M(W(ln),{modelValue:W(ke),"onUpdate:modelValue":j[29]||(j[29]=x=>Xt(ke)?ke.value=x:ke=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Lt),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"试验设计方法:","label-width":W(pt)},{default:B(()=>[M(W(ln),{modelValue:W(ve),"onUpdate:modelValue":j[30]||(j[30]=x=>Xt(ve)?ve.value=x:ve=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(li),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"初始样本点数:","label-width":W(pt)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[31]||(j[31]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):An("",!0),W(ce)=="终止条件 "?(he(),It(W(Is),{key:4,modelValue:W(Ee).enddialog,"onUpdate:modelValue":j[42]||(j[42]=x=>W(Ee).enddialog=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"480",class:"dialog_class bgcolor tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",jMt,[M(pi,{src:Qo("t4.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"终止条件",10,PMt)])]),footer:B(()=>[re("div",KMt,[M(W(Ai),{onClick:j[40]||(j[40]=x=>W(Ee).enddialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[41]||(j[41]=x=>W(Ee).enddialog=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",HMt,[M(ue,null,{default:B(()=>[M(on,{label:"EI最小值:","label-width":W(Le)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[35]||(j[35]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"目标函数收敛误差:","label-width":W(Le)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[36]||(j[36]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"优化解收敛精度:","label-width":W(Le)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[37]||(j[37]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"真实函数约束精度:","label-width":W(Le)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[38]||(j[38]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"代理模型约束精度:","label-width":W(Le)},{default:B(()=>[M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[39]||(j[39]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):An("",!0),W(ce)=="加点方法"?(he(),It(W(Is),{key:5,modelValue:W(Ee).addfun,"onUpdate:modelValue":j[49]||(j[49]=x=>W(Ee).addfun=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"480",class:"dialog_class sel bgcolor tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",qMt,[M(pi,{src:Qo("t3.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"加点方法",10,$Mt)])]),footer:B(()=>[re("div",twt,[M(W(Ai),{onClick:j[47]||(j[47]=x=>W(Ee).addfun=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[48]||(j[48]=x=>W(Ee).addfun=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",ewt,[M(ue,null,{default:B(()=>[M(on,{label:"最大样本点数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[43]||(j[43]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"加点准则:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(tt),"onUpdate:modelValue":j[44]||(j[44]=x=>Xt(tt)?tt.value=x:tt=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Ct),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"单次迭代新增样本点数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[45]||(j[45]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"约束处理方法:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(tn),"onUpdate:modelValue":j[46]||(j[46]=x=>Xt(tn)?tn.value=x:tn=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(In),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):An("",!0),W(ce)=="任务管理"?(he(),It(W(Is),{key:6,modelValue:W(Ee).task,"onUpdate:modelValue":j[54]||(j[54]=x=>W(Ee).task=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"800px",class:"dialog_class bgcolor tianjia"},{header:B(({titleId:x,titleClass:qe})=>[re("div",iwt,[M(pi,{src:Qo("s11.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"任务管理",10,nwt)])]),footer:B(()=>[re("div",rwt,[M(W(Ai),{onClick:j[52]||(j[52]=x=>W(Ee).task=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[53]||(j[53]=x=>W(Ee).task=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",null,[M(ft,{data:nu.value,stripe:"",style:{width:"100%"}},{default:B(()=>[M(Xe,{prop:"id",label:"任务编号"}),M(Xe,{prop:"name",label:"任务名称"}),M(Xe,{prop:"state",label:"任务类型"}),M(Xe,{prop:"time",label:"备注"})]),_:1},8,["data"]),re("div",swt,[re("div",owt,[M(on,{label:"关键字:"},{default:B(()=>[M(W(ln),{modelValue:W(q),"onUpdate:modelValue":j[50]||(j[50]=x=>Xt(q)?q.value=x:q=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Zt),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1}),M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[51]||(j[51]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"]),M(W(Ai),{class:"btncolor"},{default:B(()=>[Qt("查询")]),_:1}),M(W(Ai),{class:"btncolor"},{default:B(()=>[Qt("添加")]),_:1}),M(W(Ai),{class:"btncolor"},{default:B(()=>[Qt("删除")]),_:1}),M(W(Ai),{class:"btncolor"},{default:B(()=>[Qt("提交")]),_:1})])])])]),_:1},8,["modelValue"])):An("",!0),W(ce)=="任务检索"?(he(),It(W(Is),{key:7,modelValue:W(Ee).guanli,"onUpdate:modelValue":j[60]||(j[60]=x=>W(Ee).guanli=x),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"800px",class:"dialog_class bgcolor tianjia"},{header:B(({titleId:x,titleClass:qe})=>[re("div",lwt,[M(pi,{src:Qo("s11.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"任务检索",10,awt)])]),footer:B(()=>[re("div",hwt,[M(W(Ai),{onClick:j[58]||(j[58]=x=>W(Ee).guanli=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[59]||(j[59]=x=>W(Ee).guanli=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",null,[re("div",dwt,[re("div",cwt,[M(on,{label:"关键字:"},{default:B(()=>[M(W(ln),{modelValue:W(q),"onUpdate:modelValue":j[55]||(j[55]=x=>Xt(q)?q.value=x:q=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Zt),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1}),M(Xn,{modelValue:W(Nn),"onUpdate:modelValue":j[56]||(j[56]=x=>Xt(Nn)?Nn.value=x:Nn=x),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入关键字"},null,8,["modelValue"]),M(wt,{class:"magright",label:"范围",modelValue:W(Ne),"onUpdate:modelValue":j[57]||(j[57]=x=>Xt(Ne)?Ne.value=x:Ne=x)},null,8,["modelValue"]),M(W(Ai),{class:"btncolor"},{default:B(()=>[Qt("查询")]),_:1})])]),M(ft,{data:nu.value,stripe:"",style:{width:"100%"}},{default:B(()=>[M(Xe,{prop:"id",label:"任务编号"}),M(Xe,{prop:"name",label:"任务名称"}),M(Xe,{prop:"state",label:"任务类型"}),M(Xe,{prop:"time",label:"备注"})]),_:1},8,["data"])])]),_:1},8,["modelValue"])):An("",!0),M(W(Is),{modelValue:W(Ee).optimizer,"onUpdate:modelValue":j[82]||(j[82]=x=>W(Ee).optimizer=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"430",class:"dialog_class bgcolor tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",uwt,[M(pi,{src:Qo("t2.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"优化器",10,mwt)])]),footer:B(()=>[re("div",Uwt,[M(W(Ai),{onClick:j[80]||(j[80]=x=>W(Ee).optimizer=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[81]||(j[81]=x=>W(Ee).optimizer=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",pwt,[M(ue,null,{default:B(()=>[gwt,M(on,{label:"代理模型类型:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(Qe),"onUpdate:modelValue":j[61]||(j[61]=x=>Xt(Qe)?Qe.value=x:Qe=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(We),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"设计空间类型:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(ke),"onUpdate:modelValue":j[62]||(j[62]=x=>Xt(ke)?ke.value=x:ke=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Lt),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"试验设计方法:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(ve),"onUpdate:modelValue":j[63]||(j[63]=x=>Xt(ve)?ve.value=x:ve=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(li),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"初始样本点数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[64]||(j[64]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),fwt,M(on,{label:"最大样本点数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[65]||(j[65]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"加点准则:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(tt),"onUpdate:modelValue":j[66]||(j[66]=x=>Xt(tt)?tt.value=x:tt=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Ct),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"单次迭代新增样本点数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[67]||(j[67]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"约束处理方法:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(tn),"onUpdate:modelValue":j[68]||(j[68]=x=>Xt(tn)?tn.value=x:tn=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(In),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),bwt,M(on,{label:"优化算法:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(ko),"onUpdate:modelValue":j[69]||(j[69]=x=>Xt(ko)?ko.value=x:ko=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(nn),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"种群规模:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[70]||(j[70]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"最大迭代次数:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[71]||(j[71]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"交叉概率:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[72]||(j[72]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"变异概率:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[73]||(j[73]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"交叉算子:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(Ki),"onUpdate:modelValue":j[74]||(j[74]=x=>Xt(Ki)?Ki.value=x:Ki=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Zs),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"竞赛规模:","label-width":W(Le)},{default:B(()=>[M(Ce,{modelValue:W(qi),"onUpdate:modelValue":j[75]||(j[75]=x=>Xt(qi)?qi.value=x:qi=x),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),M(on,{label:"保留优选策略:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(ms),"onUpdate:modelValue":j[76]||(j[76]=x=>Xt(ms)?ms.value=x:ms=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(ps),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"变异算子选择:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W($n),"onUpdate:modelValue":j[77]||(j[77]=x=>Xt($n)?$n.value=x:$n=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(sn),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"precision:","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(mr),"onUpdate:modelValue":j[78]||(j[78]=x=>Xt(mr)?mr.value=x:mr=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(js),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),M(on,{label:"GPU","label-width":W(Le)},{default:B(()=>[M(W(ln),{modelValue:W(ml),"onUpdate:modelValue":j[79]||(j[79]=x=>Xt(ml)?ml.value=x:ml=x),"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(am),x=>(he(),It(_i,{key:x.value,label:x.label,value:x.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).Xfiol,"onUpdate:modelValue":j[85]||(j[85]=x=>W(Ee).Xfiol=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg2 summary-dlg","before-close":L,width:"540",class:"dialog_class bgcolor tianjia colortext sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",Fwt,[M(pi,{src:Qo("xuek9.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"Xfoil",10,Awt)])]),footer:B(()=>[re("div",Zwt,[M(W(Ai),{type:"info",onClick:j[83]||(j[83]=x=>W(Ee).Xfiol=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[84]||(j[84]=x=>{co(),W(Ee).Xfiol=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(kce,{ref_key:"Xfoilref",ref:r},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).listdialog,"onUpdate:modelValue":j[88]||(j[88]=x=>W(Ee).listdialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"537",class:"dialog_style sel",style:{"max-height":"70%"}},{header:B(({titleId:x,titleClass:qe})=>[re("div",Swt,[re("h4",{id:x,class:gn(qe)},"列表",10,Nwt)])]),footer:B(()=>[re("div",Rwt,[M(W(Ai),{onClick:j[86]||(j[86]=x=>W(Ee).listdialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[87]||(j[87]=x=>{OM(),W(Ee).listdialog=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",null,[M(xH,{isList:!0,onUpdate:zM})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).scatterdialog,"onUpdate:modelValue":j[91]||(j[91]=x=>W(Ee).scatterdialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"500",class:"dialog_style bgcolor tianjia sel",style:{"max-height":"70%"}},{header:B(({titleId:x,titleClass:qe})=>[re("div",Vwt,[re("h4",{id:x,class:gn(qe)},"散点图",10,Wwt)])]),footer:B(()=>[re("div",ywt,[M(W(Ai),{onClick:j[89]||(j[89]=x=>W(Ee).scatterdialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[90]||(j[90]=x=>{OM(),W(Ee).scatterdialog=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",null,[M(xH,{isList:!1,onUpdate:zM})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).echartLinedialog,"onUpdate:modelValue":j[94]||(j[94]=x=>W(Ee).echartLinedialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"500",class:"dialog_style bgcolor tianjia sel",style:{"max-height":"70%"}},{header:B(({titleId:x,titleClass:qe})=>[re("div",Qwt,[re("h4",{id:x,class:gn(qe)},"折线图",10,Mwt)])]),footer:B(()=>[re("div",wwt,[M(W(Ai),{onClick:j[92]||(j[92]=x=>W(Ee).echartLinedialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[93]||(j[93]=x=>{OM(),W(Ee).echartLinedialog=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",null,[M(xH,{isList:!1,onUpdate:zM})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).paretodialog,"onUpdate:modelValue":j[99]||(j[99]=x=>W(Ee).paretodialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"500",class:"dialog_style bgcolor tianjia sel",style:{"max-height":"70%"}},{header:B(({titleId:x,titleClass:qe})=>[re("div",Twt,[re("h4",{id:x,class:gn(qe)},"帕雷托图",10,Cwt)])]),footer:B(()=>[re("div",Bwt,[M(W(Ai),{onClick:j[97]||(j[97]=x=>W(Ee).paretodialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[98]||(j[98]=x=>W(Ee).paretodialog=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",null,[M(ue,null,{default:B(()=>[M(on,{label:"选择在X轴显示的一个变量和响应"}),M(Wi,null,{default:B(()=>[M(hi,{modelValue:W(Ho),"onUpdate:modelValue":j[95]||(j[95]=x=>Xt(Ho)?Ho.value=x:Ho=x)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(dm),x=>(he(),It(wt,{key:x.value,label:x.value,style:{display:"block"}},{default:B(()=>[Qt(bs(x.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),M(on,{label:"选择在Y轴显示的一个变量和响应"}),M(Wi,{shadow:"hover",style:{width:"100%"}},{default:B(()=>[M(hi,{modelValue:W(Ho),"onUpdate:modelValue":j[96]||(j[96]=x=>Xt(Ho)?Ho.value=x:Ho=x)},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(dm),x=>(he(),It(wt,{key:x.value,label:x.value,style:{display:"block"}},{default:B(()=>[Qt(bs(x.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).clouddialog,"onUpdate:modelValue":j[100]||(j[100]=x=>W(Ee).clouddialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"700",class:"dialog_style bgcolor tianjia sel cloudChart",style:{height:"500px",overflow:"auto"}},{header:B(({titleId:x,titleClass:qe})=>[re("div",Lwt,[re("h4",{id:x,class:gn(qe)},"云图/等值线显示",10,vwt)])]),default:B(()=>[re("div",null,[re("div",kwt,[M(Qi,{gutter:"20"},{default:B(()=>[M(Xi,{span:2}),(he(!0),$e(zt,null,Kt(W(xo),(x,qe)=>(he(),It(Xi,{key:qe,span:4},{default:B(()=>[M(W(Ai),{style:{width:"100%"},onClick:jn=>Gk(x.btnname)},{default:B(()=>[M(pi,{src:Qo(x.url),alt:"img",fit:"cover",style:{width:"20px","margin-right":"4px"}},null,8,["src"]),Qt(" "+bs(x.btnname),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})]),re("div",xwt,[M(A3)])])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ll),"onUpdate:modelValue":j[103]||(j[103]=x=>Xt(Ll)?Ll.value=x:Ll=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"500",class:"dialog_class bgcolor tianjia"},{header:B(({titleId:x,titleClass:qe})=>[re("div",Iwt,[re("h4",{id:x,class:gn(qe)},bs(W(Ed)),11,Ewt)])]),footer:B(()=>[re("div",Dwt,[M(W(Ai),{onClick:j[101]||(j[101]=x=>Xt(Ll)?Ll.value=!1:Ll=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[102]||(j[102]=x=>Xt(Ll)?Ll.value=!1:Ll=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(z9e,{activesd:W(Id)},null,8,["activesd"])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).lookover,"onUpdate:modelValue":j[106]||(j[106]=x=>W(Ee).lookover=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlgPdf","before-close":L,width:"580px",height:"800px"},{header:B(({titleId:x,titleClass:qe})=>[re("div",Gwt,[M(pi,{src:Qo("k8.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"查看报告:",10,Jwt)])]),footer:B(()=>[re("div",Xwt,[M(W(Ai),{onClick:j[104]||(j[104]=x=>W(Ee).lookover=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[105]||(j[105]=x=>W(Ee).lookover=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(PQt)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).exportreport,"onUpdate:modelValue":j[109]||(j[109]=x=>W(Ee).exportreport=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"600",class:"dialog_class bgcolor tianjia sel",style:{"max-height":"70%"}},{header:B(({titleId:x,titleClass:qe})=>[re("div",Ywt,[re("h4",{id:x,class:gn(qe)},"导出报告:",10,_wt)])]),footer:B(()=>[re("div",zwt,[M(W(Ai),{onClick:j[107]||(j[107]=x=>W(Ee).exportreport=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[108]||(j[108]=x=>W(Ee).exportreport=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(iVt)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).XfAD,"onUpdate:modelValue":j[113]||(j[113]=x=>W(Ee).XfAD=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"700",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",Owt,[re("h4",{id:x,class:gn(qe)},"气动分析",10,jwt)])]),footer:B(()=>[re("div",Hwt,[M(W(Ai),{onClick:j[111]||(j[111]=x=>W(Ee).XfAD=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[112]||(j[112]=x=>{fh(W(Nt)),W(Ee).XfAD=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",Pwt,[M(ue,null,{default:B(()=>[M(Io,{"tab-position":"left",class:"demo-tabs",modelValue:W(Nt),"onUpdate:modelValue":j[110]||(j[110]=x=>Xt(Nt)?Nt.value=x:Nt=x),onTabClick:WO},{default:B(()=>[M(Bi,{label:"Xfoil",name:"Xfoil"},{default:B(()=>[M(kce,{ref_key:"Xfoilref",ref:r},null,512)]),_:1}),M(Bi,{label:"ADflow",name:"ADflow"},{default:B(()=>[M(vce,{ref_key:"ADflowref",ref:l},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).CSTt,"onUpdate:modelValue":j[116]||(j[116]=x=>W(Ee).CSTt=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"730",class:"dialog_class bgcolor colortext tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",Kwt,[M(pi,{src:Qo("xuek0.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"CST",10,qwt)])]),footer:B(()=>[re("div",$wt,[M(W(Ai),{onClick:j[114]||(j[114]=x=>W(Ee).CSTt=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[115]||(j[115]=x=>lu())},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(xce,{ref_key:"Cstref",ref:n},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).ffdt,"onUpdate:modelValue":j[119]||(j[119]=x=>W(Ee).ffdt=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"730",class:"dialog_class bgcolor colortext tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",eTt,[M(pi,{src:Qo("ffd.png"),fit:"contain"},null,8,["src"]),re("h4",{id:x,class:gn(qe)},"FFD",10,tTt)])]),footer:B(()=>[re("div",iTt,[M(W(Ai),{onClick:j[117]||(j[117]=x=>W(Ee).ffdt=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[118]||(j[118]=x=>Ek())},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(Ice,{ref_key:"Ffdref",ref:o},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).cstffd,"onUpdate:modelValue":j[123]||(j[123]=x=>W(Ee).cstffd=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"900",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",nTt,[re("h4",{id:x,class:gn(qe)},"参数化",10,sTt)])]),footer:B(()=>[re("div",rTt,[M(W(Ai),{onClick:j[121]||(j[121]=x=>W(Ee).cstffd=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[122]||(j[122]=x=>{VO(W(Nt)),W(Ee).cstffd=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",oTt,[M(ue,null,{default:B(()=>[M(Io,{"tab-position":"left",class:"demo-tabs",modelValue:W(Nt),"onUpdate:modelValue":j[120]||(j[120]=x=>Xt(Nt)?Nt.value=x:Nt=x),onTabClick:mm},{default:B(()=>[M(Bi,{label:"CST",name:"CST"},{default:B(()=>[M(xce,{ref_key:"Cstref",ref:n},null,512)]),_:1}),M(Bi,{label:"FFD",name:"FFD"},{default:B(()=>[M(Ice,{ref_key:"Ffdref",ref:o},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).Taxs,"onUpdate:modelValue":j[126]||(j[126]=x=>W(Ee).Taxs=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"700",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",lTt,[re("h4",{id:x,class:gn(qe)},"TACS",10,aTt)])]),footer:B(()=>[re("div",dTt,[M(W(Ai),{onClick:j[124]||(j[124]=x=>W(Ee).Taxs=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[125]||(j[125]=x=>{Dk(),W(Ee).Taxs=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(tVt,{ref_key:"Tacsref",ref:p},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).optgroup,"onUpdate:modelValue":j[130]||(j[130]=x=>W(Ee).optgroup=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"700",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",cTt,[re("h4",{id:x,class:gn(qe)},"优化器",10,hTt)])]),footer:B(()=>[re("div",mTt,[M(W(Ai),{onClick:j[128]||(j[128]=x=>W(Ee).optgroup=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[129]||(j[129]=x=>{PM(W(Nt)),W(Ee).optgroup=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[re("div",uTt,[M(ue,null,{default:B(()=>[M(Io,{"tab-position":"left",class:"demo-tabs",modelValue:W(Nt),"onUpdate:modelValue":j[127]||(j[127]=x=>Xt(Nt)?Nt.value=x:Nt=x),onTabClick:ru},{default:B(()=>[M(Bi,{label:"代理优化器",name:"代理优化器"},{default:B(()=>[M(Sde,{ref_key:"Doptimizeref",ref:d},null,512)]),_:1}),M(Bi,{label:"进化优化器",name:"进化优化器"},{default:B(()=>[M(Nde,{ref_key:"Joptimizeref",ref:a},null,512)]),_:1}),M(Bi,{label:"梯度优化器",name:"梯度优化器"},{default:B(()=>[M(Rde,{ref_key:"Toptimizeref",ref:c},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1})])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).jboptimizer,"onUpdate:modelValue":j[133]||(j[133]=x=>W(Ee).jboptimizer=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"430",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",pTt,[re("h4",{id:x,class:gn(qe)},"优化算法:",10,gTt)])]),footer:B(()=>[re("div",fTt,[M(W(Ai),{onClick:j[131]||(j[131]=x=>W(Ee).jboptimizer=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[132]||(j[132]=x=>{hm(),W(Ee).jboptimizer=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(Nde,{ref_key:"Joptimizeref",ref:a},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).dboptimizer,"onUpdate:modelValue":j[136]||(j[136]=x=>W(Ee).dboptimizer=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"530",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",bTt,[re("h4",{id:x,class:gn(qe)},"代理优化器",10,UTt)])]),footer:B(()=>[re("div",FTt,[M(W(Ai),{onClick:j[134]||(j[134]=x=>W(Ee).dboptimizer=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[135]||(j[135]=x=>{um(),W(Ee).dboptimizer=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(Sde,{ref_key:"Doptimizeref",ref:d},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).tboptimizer,"onUpdate:modelValue":j[139]||(j[139]=x=>W(Ee).tboptimizer=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"430",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",ATt,[re("h4",{id:x,class:gn(qe)},"梯度优化器:",10,ZTt)])]),footer:B(()=>[re("div",STt,[M(W(Ai),{onClick:j[137]||(j[137]=x=>W(Ee).tboptimizer=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[138]||(j[138]=x=>{xd(),W(Ee).tboptimizer=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(Rde,{ref_key:"Toptimizeref",ref:c},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).isADflow,"onUpdate:modelValue":j[142]||(j[142]=x=>W(Ee).isADflow=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"540",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",NTt,[re("h4",{id:x,class:gn(qe)},"ADflow",10,RTt)])]),footer:B(()=>[re("div",VTt,[M(W(Ai),{onClick:j[140]||(j[140]=x=>W(Ee).isADflow=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[141]||(j[141]=x=>{pA(),W(Ee).isADflow=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(vce,{ref_key:"ADflowref",ref:l},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).Pythonshow,"onUpdate:modelValue":j[146]||(j[146]=x=>W(Ee).Pythonshow=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"700",class:"dialog_class bgcolor colortext tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",WTt,[re("h4",{id:x,class:gn(qe)},"Python",10,yTt)])]),footer:B(()=>[re("div",CTt,[M(W(Ai),{onClick:j[144]||(j[144]=x=>W(Ee).Pythonshow=!1)},{default:B(()=>[Qt("检查")]),_:1}),M(W(Ai),{type:"primary",onClick:j[145]||(j[145]=x=>{AO(),W(Ee).Pythonshow=!1})},{default:B(()=>[Qt(" 保存 ")]),_:1})])]),default:B(()=>[re("div",QTt,[re("div",null,[M(wQe,{value:W(i),language:"python",onChange:ZO},null,8,["value"])]),re("div",MTt,[re("div",wTt,[M(pi,{src:W(Zae),style:{width:"25px",height:"25px","margin-right":"5px"}},null,8,["src"]),TTt]),M(Xn,{modelValue:W(t),"onUpdate:modelValue":j[143]||(j[143]=x=>Xt(t)?t.value=x:t=x),style:{width:"100%"},autosize:{minRows:2,maxRows:4},type:"textarea",placeholder:""},null,8,["modelValue"])])])]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).MathFuncdialog,"onUpdate:modelValue":j[150]||(j[150]=x=>W(Ee).MathFuncdialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"500",class:"dialog_class bgcolor colortext tianjia sel"},{header:B(({titleId:x,titleClass:qe})=>[re("div",BTt,[re("h4",{id:x,class:gn(qe)},"MathFunc",10,LTt)])]),footer:B(()=>[re("div",vTt,[re("div",null,[es(M(W(Ai),{onClick:j[147]||(j[147]=x=>yO())},{default:B(()=>[Qt("新建")]),_:1},512),[[us,W(DM)]])]),re("div",kTt,[M(W(Ai),{onClick:j[148]||(j[148]=x=>W(Ee).MathFuncdialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[149]||(j[149]=x=>{QO(),W(Ee).MathFuncdialog=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])])]),default:B(()=>[M(XRt,{ref_key:"MathFuncref",ref:m,onSelectTab:SO},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).fsidialog,"onUpdate:modelValue":j[153]||(j[153]=x=>W(Ee).fsidialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"570",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",xTt,[re("h4",{id:x,class:gn(qe)},"FUM to FEM",10,ITt)])]),footer:B(()=>[re("div",ETt,[M(W(Ai),{onClick:j[151]||(j[151]=x=>W(Ee).fsidialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[152]||(j[152]=x=>{fb(),W(Ee).fsidialog=!1})},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(K9e,{ref_key:"Fsiref",ref:h},null,512)]),_:1},8,["modelValue"]),M(W(Is),{modelValue:W(Ee).flightdialog,"onUpdate:modelValue":j[156]||(j[156]=x=>W(Ee).flightdialog=x),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":L,width:"630",class:"dialog_class bgcolor tianjia sel colortext"},{header:B(({titleId:x,titleClass:qe})=>[re("div",DTt,[re("h4",{id:x,class:gn(qe)},"Flight",10,GTt)])]),footer:B(()=>[re("div",JTt,[M(W(Ai),{onClick:j[154]||(j[154]=x=>W(Ee).flightdialog=!1)},{default:B(()=>[Qt("取消")]),_:1}),M(W(Ai),{type:"primary",onClick:j[155]||(j[155]=x=>W(Ee).flightdialog=!1)},{default:B(()=>[Qt(" 确定 ")]),_:1})])]),default:B(()=>[M(gOe,{ref_key:"Flightref",ref:u},null,512)]),_:1},8,["modelValue"]),re("div",XTt,[M(oGe,{ref_key:"Sidebarref",ref:e},null,512),re("div",YTt,[re("div",_Tt,[es(re("div",zTt,[OTt,re("div",jTt,[M(gs,{percentage:W(N),color:o0.value},null,8,["percentage","color"])])],512),[[us,W(w)]]),es(re("div",PTt,[M(PDe,{ref_key:"vuefval",ref:Ht,onOptimizerfalse:j[157]||(j[157]=x=>bO(x))},null,512)],512),[[us,W(Q)]]),re("div",HTt,[es(re("div",KTt,[(he(),It(ft,{data:W(pe),border:"",style:{overflow:"auto",height:"100%"},"header-cell-class-name":gA,key:JM.value},{default:B(()=>[M(Xe,{type:"index",label:"编号",width:"100"}),(he(!0),$e(zt,null,Kt(W(si),(x,qe)=>(he(),It(Xe,{key:qe,prop:x.prop,"show-overflow-tooltip":"",label:x.label},null,8,["prop","label"]))),128))]),_:1},8,["data"]))],512),[[us,W(C)]]),W(v)?(he(),$e("div",qTt,[M(mTe,{ref_key:"optmonitor1",ref:Ae,echartdata:W(Jt),selval:W(xi),curvedata:W(ie)},null,8,["echartdata","selval","curvedata"])])):An("",!0),W(Y)?(he(),$e("div",$Tt,[re("div",eCt,[M(UBe,{ref_key:"processMonitor1ref",ref:Yi,echartdata:W(Jt),selval:W(xi),curvedata:W(ie)},null,8,["echartdata","selval","curvedata"])]),re("div",tCt,[M(SBe,{ref_key:"processMonitor2ref",ref:ci,echartdata:W(Jt),selval:W(xi),curvedata:W(ie)},null,8,["echartdata","selval","curvedata"])])])):An("",!0),es(re("div",iCt,[es(M(lGe,{ref_key:"tablelistref",ref:Wt,tablelistshow:W(J),tabledataliebiao:W(mh),tableHeaders:W(ed)},null,8,["tablelistshow","tabledataliebiao","tableHeaders"]),[[us,W(J)]]),es(M(cGe,{ref_key:"arearef",ref:we,areashow:W(k)},null,8,["areashow"]),[[us,W(k)]]),es(M(mGe,{ref_key:"bargraphref",ref:ze,bargraphshow:W(de)},null,8,["bargraphshow"]),[[us,W(de)]]),es(M(bGe,{ref_key:"echartLineref",ref:Oe,echartLineshow:W(E)},null,8,["echartLineshow"]),[[us,W(E)]]),es(M(AGe,{ref_key:"BarChartref",ref:Ie,BarChartshow:W(K)},null,8,["BarChartshow"]),[[us,W(K)]]),es(M(NGe,{ref_key:"scatterref",ref:dt,scattershow:W(ee)},null,8,["scattershow"]),[[us,W(ee)]]),es(M(WGe,{ref_key:"radarref",ref:at,radarshow:W(le)},null,8,["radarshow"]),[[us,W(le)]]),es(M(MGe,{ref_key:"pieref",ref:je,pieshow:W(Fe)},null,8,["pieshow"]),[[us,W(Fe)]]),es(M(CGe,{ref_key:"paretoref",ref:Se,paretoshow:W(Ue)},null,8,["paretoshow"]),[[us,W(Ue)]])],512),[[us,W(Yt)]])]),M(Yn,{class:"femFooter"},{default:B(()=>[re("div",nCt,[re("div",sCt,[re("div",null,[(he(),$e(zt,null,Kt(Dt,(x,qe)=>re("div",{class:gn(["span",{active:Zi.value===qe}]),key:qe,onClick:jn=>P(qe)},[M(pi,{src:x.img,fit:"contain"},null,8,["src"]),re("span",null,bs(x.name),1)],10,oCt)),64))]),re("div",null,[re("li",null,[re("span",{onClick:j[158]||(j[158]=x=>mA("foot"))},"▲▼")])])]),W(Fi)?(he(),$e("div",rCt,[Zi.value==0?(he(),$e("div",lCt,[M(Xn,{class:"footerText",type:"textarea",id:"textarea_id",modelValue:W(Pe),"onUpdate:modelValue":j[159]||(j[159]=x=>Xt(Pe)?Pe.value=x:Pe=x)},null,8,["modelValue"])])):An("",!0),Zi.value==1?(he(),$e("div",aCt,[re("ul",null,[(he(),$e(zt,null,Kt(Ot,(x,qe)=>(he(),$e(zt,{key:qe},[qe!==0?(he(),It(wn,{key:0,direction:"vertical",class:"custom-divider"})):An("",!0),re("li",{onClick:jn=>H(qe),class:gn({active2:Me.value===qe})},[Me.value===qe?(he(),It(pi,{key:0,src:x.isimg,fit:"contain"},null,8,["src"])):(he(),It(pi,{key:1,src:x.noimg,fit:"contain"},null,8,["src"])),re("span",null,bs(x.name),1)],10,dCt)],64))),64))]),re("div",cCt,[Me.value==0?(he(),$e("div",hCt,[M(ft,{data:cm.value,border:"",style:{width:"100%"},height:"100"},{default:B(()=>[M(Xe,{type:"index",label:"编号",width:"70"}),M(Xe,{prop:"name",label:"变量名称"},{default:B(({row:x})=>[M(Xn,{modelValue:x.name,"onUpdate:modelValue":qe=>x.name=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"upper",label:"上限值"},{default:B(({row:x})=>[M(Xn,{type:"text",modelValue:x.upper,"onUpdate:modelValue":qe=>x.upper=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"lower",label:"下限值"},{default:B(({row:x})=>[M(Xn,{modelValue:x.lower,"onUpdate:modelValue":qe=>x.lower=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"reference",label:"基准值"},{default:B(({row:x})=>[M(Xn,{modelValue:x.reference,"onUpdate:modelValue":qe=>x.reference=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"remark",label:"说明"},{default:B(({row:x})=>[M(Xn,{modelValue:x.remark,"onUpdate:modelValue":qe=>x.remark=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1})]),_:1},8,["data"])])):An("",!0),Me.value==1?(he(),$e("div",uCt,[M(ft,{data:sr.value,border:"",style:{width:"100%"},height:"100"},{default:B(()=>[M(Xe,{type:"index",label:"编号",width:"100"}),M(Xe,{prop:"name",label:"约束名称"},{default:B(({row:x})=>[M(Xn,{modelValue:x.name,"onUpdate:modelValue":qe=>x.name=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"reference",label:"约束基准值"},{default:B(({row:x})=>[M(Xn,{modelValue:x.reference,"onUpdate:modelValue":qe=>x.reference=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"upper",label:"上限值"},{default:B(({row:x})=>[M(Xn,{modelValue:x.upper,"onUpdate:modelValue":qe=>x.upper=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"lower",label:"下限值"},{default:B(({row:x})=>[M(Xn,{modelValue:x.lower,"onUpdate:modelValue":qe=>x.lower=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1})]),_:1},8,["data"])])):An("",!0),Me.value==2?(he(),$e("div",mCt,[M(ft,{data:pr.value,border:"",style:{width:"100%"},height:"100"},{default:B(()=>[M(Xe,{type:"index",label:"编号",width:"70"}),M(Xe,{prop:"name",label:"目标名称"},{default:B(({row:x})=>[M(Xn,{modelValue:x.name,"onUpdate:modelValue":qe=>x.name=qe},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),M(Xe,{prop:"optdir",label:"优化方向"},{default:B(x=>[M(W(ln),{class:"no-border",modelValue:x.row.optdir,"onUpdate:modelValue":qe=>x.row.optdir=qe,"suffix-icon":W(Ln),placeholder:"请选择"},{default:B(()=>[(he(!0),$e(zt,null,Kt(W(Ui),qe=>(he(),It(_i,{key:qe.value,label:qe.label,value:qe.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","suffix-icon"])]),_:1}),M(Xe,{prop:"weight",label:"权重系数"},{default:B(({row:x})=>[M(Xn,{modelValue:x.weight,"onUpdate:modelValue":qe=>x.weight=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"reference",label:"约束基准值"},{default:B(({row:x})=>[M(Xn,{modelValue:x.reference,"onUpdate:modelValue":qe=>x.reference=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),M(Xe,{prop:"remark",label:"说明"},{default:B(({row:x})=>[M(Xn,{modelValue:x.remark,"onUpdate:modelValue":qe=>x.remark=qe,onChange:qe=>vd(x)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1})]),_:1},8,["data"])])):An("",!0)]),re("div",pCt,[re("div",gCt,[re("div",fCt,[re("div",bCt,[Me.value===0?(he(),It(on,{key:0,label:"新增变量数:"},{default:B(()=>[M(Xn,{modelValue:W(St),"onUpdate:modelValue":j[160]||(j[160]=x=>Xt(St)?St.value=x:St=x),maxlength:"6",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2"},null,8,["modelValue"])]),_:1})):An("",!0),Me.value===0?(he(),It(W(Ai),{key:1,class:"btncolor"},{default:B(()=>[Qt("导入")]),_:1})):An("",!0),M(W(Ai),{class:"btncolor",onClick:G},{default:B(()=>[Qt("新建")]),_:1}),M(W(Ai),{class:"btncolor",onClick:ht},{default:B(()=>[Qt("确定")]),_:1})])])])])])):An("",!0)])):An("",!0),UCt])]),_:1})])])])])]),_:1})]),_:1})])}}},ACt=gp(FCt,[["__scopeId","data-v-187da040"]]),Lvt=Object.freeze(Object.defineProperty({__proto__:null,default:ACt},Symbol.toStringTag,{value:"Module"}));export{Lvt as h,Uk as m,$We as t};
|